|
|
1.1 root 1: /*
2: * A first-shot at a syslog implementation on v10. Quite crude.
3: */
4:
5: #include <stdio.h>
6: #include <libc.h>
7: #include <errno.h>
8: #include "mail.h"
9:
10: static char logname[128];
11: static int fd = -1;
12: static char id[67];
13: static int pid;
14: static char machine[64] = "<hostname>";
15: static logmask = -1;
16:
17: openlog(name, flags, logord)
18: char *name;
19: int flags, logord;
20: {
21: char *cp;
22: int hnfd;
23:
24: /* set up log file */
25: if ((cp=strrchr(name, '/'))!=NULL)
26: name = cp+1;
27: sprintf(logname, "%s%s.log", SMTPQROOT, name);
28: fd = open(logname, 1);
29: if (fd<0 && errno==ENOENT)
30: fd = creat(logname, 0666);
31: if (fd<0) {
32: fprintf(stderr, "cannot open log file, %s\n", logname);
33: close(2);
34: logmask = -1;
35: return;
36: }
37: strcpy(id, name);
38: pid = getpid();
39: #ifdef NOTDEF
40: /* real syslog has machine name here */
41: hnfd = open("/etc/whoami", 0);
42: if (hnfd > 0) {
43: char *cp;
44: read(hnfd, machine, sizeof(machine));
45: if ((cp = strchr(machine, '\n')) != NULL)
46: *cp = '\0';
47: close(hnfd);
48: }
49: #endif
50: logmask = LOG_UPTO(DEFAULT_LOG_LEVEL);
51: }
52:
53: syslog(level, format, a1, a2, a3, a4, a5, a6, a7, a8 ,a9, a10)
54: char *format;
55: {
56: long now=time((long *)0);
57: char msg[20000], buf[20000];
58:
59: if(((1<<level) & logmask) == 0)
60: return;
61:
62: sprintf(msg, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
63: #ifdef NOTDEF
64: sprintf(buf, "%.15s %s %s[%d]: %s", ctime(&now)+4,
65: machine, id, pid, msg);
66: #endif
67: sprintf(buf, "%.15s %s[%d]: %s", ctime(&now)+4,
68: id, pid, msg);
69: if (buf[strlen(buf) - 1] != '\n')
70: strcat(buf, "\n");
71: lseek(fd, 0L, 2);
72: write(fd, buf, strlen(buf));
73: }
74:
75: setlogmask(mask)
76: int mask;
77: {
78: int old = logmask;
79:
80: if (logmask == -1)
81: return old;
82: logmask = mask;
83: return old;
84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.