summaryrefslogtreecommitdiff
path: root/dviware/quicspool/src/cleanup.c
blob: 571d902e27b3c4c29969bf4f8e9f4232cb3e3c7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#ifndef lint
static char	*rcs = "$Header: cleanup.c,v 1.1 88/01/15 13:03:17 simpson Rel $";
#endif
/*
$Log:	cleanup.c,v $
 * Revision 1.1  88/01/15  13:03:17  simpson
 * initial release
 * 
 * Revision 0.1  87/12/11  18:30:43  simpson
 * beta test
 * 
*/

/* Cleanup and error routines */

#include <stdio.h>
#include <local/profile.h>
#include <local/qms.h>
#include "constants.h"
#include "fontnode.h"


Boolean Accounting = FALSE;
FILE    *Accting;
int     NumPages = 0;
char    *User;
char    *Host;

/* This routine is called on exit.  It does some housekeeping before
 * exiting.
 */
void cleanup(head, exitstatus)
struct FontNode	*head;
int		exitstatus;
{
    struct FontNode	*p;
    void		sanestate();
    int			portfont = 1204;
    PROFILE_VALUE	*v, *getbindingvalue();

    for (p = head; p; p = p->next)	    /* Delete user fonts */
	if (p->qmsnumber > 30000 && (p->flags & LOADED))
	    printf("%s%d%c%s", DOWNLOAD, p->qmsnumber, p->flags & PORT ?
	    'P' : 'L', ENDCMD);
    if ((v = getbindingvalue("portraitfont")) && v->class == PROFILE_INTEGER)
	portfont = v->value.i;
    sanestate(portfont);
    fputs(QUICOFF, stdout);
    if (Accounting) {
#ifdef TRW
	FILE	*f;
	char	badge[51], costcenter[51], chargenumber[51], sessionid[51];
	char	s[51], *strcpy();

	if (!(f = fopen(ACCTFILE, "r")))
	    goto getout;
	while (fgets(s, 51, f))
	    if (strlen(s) > 0) {
		if (s[strlen(s) - 1] == '\n')
		    s[strlen(s) - 1] = '\0';
		switch (s[0]) {
		case 'b':
		    (void)strcpy(badge, &s[1]);
		    break;
		case 'e':
		    (void)strcpy(costcenter, &s[1]);
		    break;
		case 'u':
		    (void)strcpy(chargenumber, &s[1]);
		    break;
		case 's':
		    (void)strcpy(sessionid, &s[1]);
		    break;
		}
	    }
	fprintf(Accting, "%s %s %s %s %d %s@%s\n", badge, costcenter,
	chargenumber, sessionid, NumPages, User, Host);
	(void)fclose(f);
#else
	fprintf(Accting, "%d %s@%s\n", NumPages, User, Host);
#endif
	(void)fclose(Accting);
    }
getout:
    exit(exitstatus);
}