xref: /original-bsd/usr.bin/tip/log.c (revision c3e32dec)
1 /*
2  * Copyright (c) 1983, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)log.c	8.1 (Berkeley) 06/06/93";
10 #endif /* not lint */
11 
12 #include "tip.h"
13 
14 #ifdef ACULOG
15 static	FILE *flog = NULL;
16 
17 /*
18  * Log file maintenance routines
19  */
20 
21 logent(group, num, acu, message)
22 	char *group, *num, *acu, *message;
23 {
24 	char *user, *timestamp;
25 	struct passwd *pwd;
26 	long t;
27 
28 	if (flog == NULL)
29 		return;
30 	if (flock(fileno(flog), LOCK_EX) < 0) {
31 		perror("tip: flock");
32 		return;
33 	}
34 	if ((user = getlogin()) == NOSTR)
35 		if ((pwd = getpwuid(getuid())) == NOPWD)
36 			user = "???";
37 		else
38 			user = pwd->pw_name;
39 	t = time(0);
40 	timestamp = ctime(&t);
41 	timestamp[24] = '\0';
42 	fprintf(flog, "%s (%s) <%s, %s, %s> %s\n",
43 		user, timestamp, group,
44 #ifdef PRISTINE
45 		"",
46 #else
47 		num,
48 #endif
49 		acu, message);
50 	(void) fflush(flog);
51 	(void) flock(fileno(flog), LOCK_UN);
52 }
53 
54 loginit()
55 {
56 	flog = fopen(value(LOG), "a");
57 	if (flog == NULL)
58 		fprintf(stderr, "can't open log file %s.\r\n", value(LOG));
59 }
60 #endif
61