|
|
1.1 ! root 1: #include <sys/types.h> ! 2: #include <sys/stat.h> ! 3: #include "mail.h" ! 4: ! 5: /* configuration */ ! 6: #define LOGFILE "/usr/spool/mail/mail.log" ! 7: #define LOGTEMP "/usr/spool/mail/mail.tmp" ! 8: ! 9: /* imports */ ! 10: void lock(); ! 11: void unlock(); ! 12: ! 13: /* log a mail transmission */ ! 14: logsend (to, from, at, tag) ! 15: char *to; /* receiver */ ! 16: char *from; /* the sender */ ! 17: char *at; /* time sent */ ! 18: char *tag; /* type of mail */ ! 19: { ! 20: # include <grp.h> ! 21: char buf[FROMLINESIZE]; ! 22: int out, in; ! 23: long len; ! 24: long lseek(); ! 25: ! 26: lock(LOGFILE); ! 27: ! 28: /* append to log */ ! 29: out = open(LOGFILE, 2); ! 30: len = lseek(out, 0L, 2); ! 31: if (len > 32000) { ! 32: in = out; ! 33: out = creat(LOGTEMP, 0660); ! 34: if (out >= 0 && in >= 0 && lseek(in, -4000L, 2) >= 0) { ! 35: while ((len = read(in, buf, FROMLINESIZE)) > 0) ! 36: (void)write(out, buf, (unsigned int)len); ! 37: close(in); ! 38: close(out); ! 39: unlink(LOGFILE); ! 40: link(LOGTEMP, LOGFILE); ! 41: unlink(LOGTEMP); ! 42: } else { ! 43: close(in); ! 44: close(out); ! 45: } ! 46: out = open(LOGFILE, 2); ! 47: } ! 48: sprintf (buf, "%s %s From %s %s\n", tag, to, from, at); ! 49: (void)write(out, buf, strlen(buf)); ! 50: close(out); ! 51: chmod(LOGFILE, 0666); ! 52: ! 53: unlock (); ! 54: ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.