|
|
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.