URI:
       tlog.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tlog.c (2090B)
       ---
            1 #include "common.h"
            2 #include "send.h"
            3 
            4 /* configuration */
            5 #define LOGBiobuf "log/status"
            6 
            7 /* log mail delivery */
            8 extern void
            9 logdelivery(dest *list, char *rcvr, message *mp)
           10 {
           11         dest *parent;
           12         String *srcvr, *sender;
           13 
           14         srcvr = unescapespecial(s_copy(rcvr));
           15         sender = unescapespecial(s_clone(mp->sender));
           16 
           17         for(parent=list; parent->parent!=0; parent=parent->parent)
           18                 ;
           19         if(parent!=list && strcmp(s_to_c(parent->addr), s_to_c(srcvr))!=0)
           20                 syslog(0, "mail", "delivered %s From %.256s %.256s (%.256s) %d",
           21                         rcvr,
           22                         s_to_c(sender), s_to_c(mp->date),
           23                         s_to_c(parent->addr), mp->size);
           24         else
           25                 syslog(0, "mail", "delivered %s From %.256s %.256s %d", s_to_c(srcvr),
           26                         s_to_c(sender), s_to_c(mp->date), mp->size);
           27         s_free(srcvr);
           28         s_free(sender);
           29 }
           30 
           31 /* log mail forwarding */
           32 extern void
           33 loglist(dest *list, message *mp, char *tag)
           34 {
           35         dest *next;
           36         dest *parent;
           37         String *srcvr, *sender;
           38 
           39         sender = unescapespecial(s_clone(mp->sender));
           40 
           41         for(next=d_rm(&list); next != 0; next = d_rm(&list)) {
           42                 for(parent=next; parent->parent!=0; parent=parent->parent)
           43                         ;
           44                 srcvr = unescapespecial(s_clone(next->addr));
           45                 if(parent!=next)
           46                         syslog(0, "mail", "%s %.256s From %.256s %.256s (%.256s) %d",
           47                                 tag,
           48                                 s_to_c(srcvr), s_to_c(sender),
           49                                 s_to_c(mp->date), s_to_c(parent->addr), mp->size);
           50                 else
           51                         syslog(0, "mail", "%s %.256s From %.256s %.256s %d", tag,
           52                                 s_to_c(srcvr), s_to_c(sender),
           53                                 s_to_c(mp->date), mp->size);
           54                 s_free(srcvr);
           55         }
           56         s_free(sender);
           57 }
           58 
           59 /* log a mail refusal */
           60 extern void
           61 logrefusal(dest *dp, message *mp, char *msg)
           62 {
           63         char buf[2048];
           64         char *cp, *ep;
           65         String *sender, *srcvr;
           66 
           67         srcvr = unescapespecial(s_clone(dp->addr));
           68         sender = unescapespecial(s_clone(mp->sender));
           69 
           70         sprint(buf, "error %.256s From %.256s %.256s\nerror+ ", s_to_c(srcvr),
           71                 s_to_c(sender), s_to_c(mp->date));
           72         s_free(srcvr);
           73         s_free(sender);
           74         cp = buf + strlen(buf);
           75         ep = buf + sizeof(buf) - sizeof("error + ");
           76         while(*msg && cp<ep) {
           77                 *cp++ = *msg;
           78                 if (*msg++ == '\n') {
           79                         strcpy(cp, "error+ ");
           80                         cp += sizeof("error+ ") - 1;
           81                 }
           82         }
           83         *cp = 0;
           84         syslog(0, "mail", "%s", buf);
           85 }