|
|
1.1 root 1: #include <sys/types.h>
2: #include <stdio.h>
3: #include <ipc.h>
4: #include <libc.h>
5: #include "defs.h"
6:
7: static char buf[1024];
8: static char logname[128];
9:
10: openlog(mtpt)
11: char *mtpt;
12: {
13: int fd;
14: char *cp;
15:
16: /* set up log file */
17: if ((cp=strrchr(mtpt, '/'))!=NULL)
18: mtpt = cp+1;
19: sprintf(logname, "/usr/ipc/log/%s", mtpt);
20: fd = open(logname, 1);
21: if (fd<0 && errno==ENOENT)
22: fd = creat(logname, 0666);
23: if (fd<0) {
24: fprintf(stderr, "cannot open log file, %s\n", logname);
25: exit(1);
26: }
27: dup2(fd, 2);
28: close(fd);
29: }
30:
31: /* logging events */
32: logevent(format, a1, a2, a3, a4, a5, a6)
33: char *format;
34: {
35: long now=time((long *)0);
36: char msg[1024];
37: int fd;
38:
39: sprintf(msg, format, a1, a2, a3, a4, a5, a6);
40: sprintf(buf, "%.15s %s", ctime(&now)+4, msg);
41: lseek(2, 0L, 2);
42: write(2, buf, strlen(buf));
43: }
44:
45: /* logging events on both log and console */
46: logconsole(format, a1, a2, a3, a4, a5, a6)
47: char *format;
48: {
49: long now=time((long *)0);
50: char msg[1024];
51: int len;
52:
53: sprintf(msg, format, a1, a2, a3, a4, a5, a6);
54: sprintf(buf, "%.15s %s", ctime(&now)+4, msg);
55: len = strlen(buf);
56: lseek(2, 0L, 2);
57: write(2, buf, len);
58: write(3, buf, len);
59: }
60:
61: /* logging calls */
62: logcall(msg, ip)
63: char *msg;
64: ipcinfo *ip;
65: {
66: logevent("%s %s(%s!%s) from %s!%s\n", msg,
67: (ip->flags&IPC_CREAT)?"creat":"open", ip->myname, ip->name,
68: ip->machine, ip->user);
69: }
70:
71: /* log call status */
72: logstatus(ip)
73: ipcinfo *ip;
74: {
75: long now=time((long *)0);
76:
77: sprintf(buf, "%.15s (%d)%s %s(%s) from %s!%s\n", ctime(&now)+4, errno,
78: errstr, (ip->flags&IPC_CREAT)?"creat":"open", ip->name,
79: ip->machine, ip->user);
80: lseek(2, 0L, 2);
81: write(2, buf, strlen(buf));
82: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.