xref: /illumos-gate/usr/src/cmd/tip/log.c (revision 2ca5b6595b95478e6568b0e77c6c83c8a870867a)
1  /*
2   * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
3   * Use is subject to license terms.
4   */
5  
6  /*
7   * Copyright (c) 1983 Regents of the University of California.
8   * All rights reserved. The Berkeley software License Agreement
9   * specifies the terms and conditions for redistribution.
10   */
11  
12  #pragma ident	"%Z%%M%	%I%	%E% SMI"
13  
14  #include "tip.h"
15  
16  static	FILE *flog = NULL;
17  
18  /*
19   * Log file maintenance routines
20   */
21  void
22  logent(char *group, char *num, char *acu, char *message)
23  {
24  	char *user, *timestamp;
25  	struct passwd *pwd;
26  	time_t t;
27  
28  	if (flog == NULL)
29  		return;
30  #ifndef USG
31  	if (flock(fileno(flog), LOCK_EX) < 0) {
32  		perror("tip: flock");
33  		return;
34  	}
35  #endif
36  	if ((user = getlogin()) == NOSTR)
37  		if ((pwd = getpwuid(uid)) == NOPWD)
38  			user = "???";
39  		else
40  			user = pwd->pw_name;
41  	t = time(0);
42  	timestamp = ctime(&t);
43  	timestamp[24] = '\0';
44  	(void) fprintf(flog, "%s (%s) <%s, %s, %s> %s\n",
45  	    user, timestamp, group,
46  #ifdef PRISTINE
47  	    "",
48  #else
49  	    num,
50  #endif
51  	    acu, message);
52  	(void) fflush(flog);
53  #ifndef USG
54  	(void) flock(fileno(flog), LOCK_UN);
55  #endif
56  }
57  
58  void
59  loginit(void)
60  {
61  
62  #ifdef ACULOG
63  	flog = fopen(value(LOG), "a");
64  	if (flog == NULL)
65  		(void) fprintf(stderr, "tip: can't open log file %s\r\n",
66  		    value(LOG));
67  #endif
68  }
69