123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include "dat.h"
- #include "common.h"
- void
- usage(void)
- {
- fprint(2, "usage: %s recipient fromaddr-file mbox\n", argv0);
- exits("usage");
- }
- void
- main(int argc, char **argv)
- {
- int fd;
- char now[30];
- Addr *a;
- char *deliveredto;
- Mlock *l;
- int bytes;
- ARGBEGIN{
- }ARGEND;
- if(argc != 3)
- usage();
- deliveredto = strrchr(argv[0], '!');
- if(deliveredto == nil)
- deliveredto = argv[0];
- else
- deliveredto++;
- a = readaddrs(argv[1], nil);
- if(a == nil)
- sysfatal("missing from address");
- l = syslock(argv[2]);
- /* append to mbox */
- fd = open(argv[2], OWRITE);
- if(fd < 0)
- sysfatal("opening mailbox: %r");
- seek(fd, 0, 2);
- strncpy(now, ctime(time(0)), sizeof(now));
- now[28] = 0;
- if(fprint(fd, "From %s %s\n", a->val, now) < 0)
- sysfatal("writing mailbox: %r");
- /* copy message handles escapes and any needed new lines */
- bytes = appendfiletombox(0, fd);
- if(bytes < 0)
- sysfatal("writing mailbox: %r");
- close(fd);
- sysunlock(l);
- /* log it */
- syslog(0, "mail", "delivered %s From %s %s (%s) %d", deliveredto,
- a->val, now, argv[0], bytes);
- exits(0);
- }
|