summaryrefslogtreecommitdiff
path: root/sys/src/cmd/upas/filterkit/mbappend.c
blob: a4f5d36165c96824364d4779d7dd2a804aa41b65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * deliver to one's own folder with locking & logging
 */
#include "dat.h"
#include "common.h"

void
append(int fd, char *mb, char *from, long t)
{
	char *folder;
	Tm tm;
	int r;

	folder = foldername(from, getuser(), mb);
	r = fappendfolder(0, t, folder, fd);
	if(r == 0)
		werrstr("");
	syslog(0, "mail", "mbappend %s %τ (%s) %r", mb, thedate(&tm), folder);
	if(r)
		exits("fail");
}

void
usage(void)
{
	fprint(2, "usage: mbappend [-t time] [-f from] mbox [file ...]\n");
	exits("usage");
}

void
main(int argc, char **argv)
{
	char *mb, *from;
	int fd;
	long t;

	from = nil;
	t = time(0);
	tmfmtinstall();
	ARGBEGIN{
	case 't':
		t = strtoul(EARGF(usage()), 0, 0);
		break;
	case 'f':
		from = EARGF(usage());
		break;
	default:
		usage();
	}ARGEND;
	if(*argv == 0)
		usage();
	werrstr("");
	mb = *argv++;
	if(*argv == 0)
		append(0, mb, from, t);
	else for(; *argv; argv++){
		fd = open(*argv, OREAD);
		if(fd < 0)
			sysfatal("open: %r");
		append(fd, mb, from, t);
		close(fd);
	}
	exits("");
}