URI:
       tdeliver.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
       ---
       tdeliver.c (1104B)
       ---
            1 #include "dat.h"
            2 #include <thread.h>
            3 #include "common.h"
            4 
            5 void
            6 usage(void)
            7 {
            8         fprint(2, "usage: %s recipient fromaddr-file mbox\n", argv0);
            9         threadexitsall("usage");
           10 }
           11 
           12 void
           13 main(int argc, char **argv)
           14 {
           15         int fd;
           16         char now[30];
           17         Addr *a;
           18         char *deliveredto;
           19         Mlock *l;
           20         int bytes;
           21 
           22         ARGBEGIN{
           23         }ARGEND;
           24 
           25         if(argc != 3)
           26                 usage();
           27 
           28         deliveredto = strrchr(argv[0], '!');
           29         if(deliveredto == nil)
           30                 deliveredto = argv[0];
           31         else
           32                 deliveredto++;
           33         a = readaddrs(argv[1], nil);
           34         if(a == nil)
           35                 sysfatal("missing from address");
           36 
           37         l = syslock(argv[2]);
           38 
           39         /* append to mbox */
           40         fd = open(argv[2], OWRITE);
           41         if(fd < 0)
           42                 sysfatal("opening mailbox: %r");
           43         seek(fd, 0, 2);
           44         strncpy(now, ctime(time(0)), sizeof(now));
           45         now[28] = 0;
           46         if(fprint(fd, "From %s %s\n", a->val, now) < 0)
           47                 sysfatal("writing mailbox: %r");
           48 
           49         /* copy message handles escapes and any needed new lines */
           50         bytes = appendfiletombox(0, fd);
           51         if(bytes < 0)
           52                 sysfatal("writing mailbox: %r");
           53 
           54         close(fd);
           55         sysunlock(l);
           56 
           57         /* log it */
           58         syslog(0, "mail", "delivered %s From %s %s (%s) %d", deliveredto,
           59                 a->val, now, argv[0], bytes);
           60         exits(0);
           61 }