BSD 3 development
[unix-history] / usr / src / cmd / uucp / logent.c
CommitLineData
4efd3c0c
BJ
1 /* @(#)logent 2.1 5/18/79 13:27:52 */
2#include "uucp.h"
3#include <sys/types.h>
4#include <time.h>
5
6char Slogent[] = "@(#)logent 2.1";
7
8
9char Tmplog[MAXFULLNAME] = "";
10FILE *Lp = NULL;
11
12/*******
13 * logent(text, status) make log entry
14 * char *text, *status;
15 *
16 * return code - none
17 */
18
19logent(text, status)
20char *text, *status;
21{
22 int n;
23 FILE *fp;
24 if (Lp != NULL) {
25 /* make entry in existing temp log file */
26 mlogent(Lp, status, text);
27 return;
28 }
29
30 if (ulockf(LOGLOCK, 10l) == 0) {
31 if ((fp = fopen(LOGFILE, "a")) == NULL) {
32 rmlock(LOGLOCK);
33 }
34 else {
35 mlogent(fp, status, text);
36 fclose(fp);
37 rmlock(LOGLOCK);
38 return;
39 }
40 }
41
42 /* make a temp log file */
43 for (n = 0; n < 10; n++) {
44 sprintf(Tmplog, "%s/LOG.%05d.%1d", LOGDIR, getpid(), n);
45 if (access(Tmplog, 0) == -1)
46 break;
47 }
48 if ((Lp = fopen(Tmplog, "w")) == NULL)
49 return;
50 chmod(Tmplog, 0222);
51 setbuf(Lp, NULL);
52 mlogent(Lp, status, text);
53 return;
54}
55
56/***
57 * mlogent(fp, status, text) - make a log entry
58 */
59
60mlogent(fp, status, text)
61char *text, *status;
62FILE *fp;
63{
64 static pid = 0;
65 struct tm *tp;
66 extern struct tm *localtime();
67 time_t clock;
68
69 if (!pid)
70 pid = getpid();
71 time(&clock);
72 tp = localtime(&clock);
73 fprintf(fp, "%s %s ", User, Rmtname);
74 fprintf(fp, "(%d/%d-%d:%d-%d) ", tp->tm_mon + 1,
75 tp->tm_mday, tp->tm_hour, tp->tm_min, pid);
76 fprintf(fp, "%s (%s)\n", status, text);
77 return;
78}
79
80/***
81 * logcls() close log file
82 *
83 * return codes: none
84 */
85
86logcls()
87{
88 if (Lp != NULL) {
89 fclose(Lp);
90 chmod(Tmplog, 0666);
91 }
92 return;
93}
94
95
96/***
97 * syslog(text) make system log entry
98 * char *text;
99 *
100 * return codes - none
101 */
102
103syslog(text)
104char *text;
105{
106 struct tm *tp;
107 extern struct tm *localtime();
108 time_t clock;
109 FILE *fp;
110
111 time(&clock);
112 tp = localtime(&clock);
113 fp = fopen(SYSLOG, "a");
114 if (fp == NULL)
115 return;
116 fprintf(fp, "%s %s ", User, Rmtname);
117 fprintf(fp, "(%d/%d-%d:%d) ", tp->tm_mon + 1,
118 tp->tm_mday, tp->tm_hour, tp->tm_min);
119 fprintf(fp, "%s\n", text);
120 fclose(fp);
121 return;
122}