Blame


1 5cdb1798 2005-10-29 devnull #include <u.h>
2 5cdb1798 2005-10-29 devnull #include <libc.h>
3 5cdb1798 2005-10-29 devnull #include <ctype.h>
4 5cdb1798 2005-10-29 devnull #include <String.h>
5 5cdb1798 2005-10-29 devnull #include "message.h"
6 5cdb1798 2005-10-29 devnull
7 5cdb1798 2005-10-29 devnull Message *root;
8 5cdb1798 2005-10-29 devnull
9 5cdb1798 2005-10-29 devnull void
10 5cdb1798 2005-10-29 devnull prindent(int i)
11 5cdb1798 2005-10-29 devnull {
12 5cdb1798 2005-10-29 devnull for(; i > 0; i--)
13 5cdb1798 2005-10-29 devnull print(" ");
14 5cdb1798 2005-10-29 devnull }
15 5cdb1798 2005-10-29 devnull
16 5cdb1798 2005-10-29 devnull void
17 5cdb1798 2005-10-29 devnull prstring(int indent, char *tag, String *s)
18 5cdb1798 2005-10-29 devnull {
19 5cdb1798 2005-10-29 devnull if(s == nil)
20 5cdb1798 2005-10-29 devnull return;
21 5cdb1798 2005-10-29 devnull prindent(indent+1);
22 5cdb1798 2005-10-29 devnull print("%s %s\n", tag, s_to_c(s));
23 5cdb1798 2005-10-29 devnull }
24 5cdb1798 2005-10-29 devnull
25 5cdb1798 2005-10-29 devnull void
26 5cdb1798 2005-10-29 devnull info(int indent, int mno, Message *m)
27 5cdb1798 2005-10-29 devnull {
28 5cdb1798 2005-10-29 devnull int i;
29 5cdb1798 2005-10-29 devnull Message *nm;
30 5cdb1798 2005-10-29 devnull
31 5cdb1798 2005-10-29 devnull prindent(indent);
32 5cdb1798 2005-10-29 devnull print("%d%c %d ", mno, m->allocated?'*':' ', m->end - m->start);
33 5cdb1798 2005-10-29 devnull if(m->unixfrom != nil)
34 5cdb1798 2005-10-29 devnull print("uf %s ", s_to_c(m->unixfrom));
35 5cdb1798 2005-10-29 devnull if(m->unixdate != nil)
36 5cdb1798 2005-10-29 devnull print("ud %s ", s_to_c(m->unixdate));
37 5cdb1798 2005-10-29 devnull print("\n");
38 5cdb1798 2005-10-29 devnull prstring(indent, "from:", m->from822);
39 5cdb1798 2005-10-29 devnull prstring(indent, "sender:", m->sender822);
40 5cdb1798 2005-10-29 devnull prstring(indent, "to:", m->to822);
41 5cdb1798 2005-10-29 devnull prstring(indent, "cc:", m->cc822);
42 5cdb1798 2005-10-29 devnull prstring(indent, "reply-to:", m->replyto822);
43 5cdb1798 2005-10-29 devnull prstring(indent, "subject:", m->subject822);
44 5cdb1798 2005-10-29 devnull prstring(indent, "date:", m->date822);
45 5cdb1798 2005-10-29 devnull prstring(indent, "filename:", m->filename);
46 5cdb1798 2005-10-29 devnull prstring(indent, "type:", m->type);
47 5cdb1798 2005-10-29 devnull prstring(indent, "charset:", m->charset);
48 5cdb1798 2005-10-29 devnull
49 5cdb1798 2005-10-29 devnull i = 1;
50 5cdb1798 2005-10-29 devnull for(nm = m->part; nm != nil; nm = nm->next){
51 5cdb1798 2005-10-29 devnull info(indent+1, i++, nm);
52 5cdb1798 2005-10-29 devnull }
53 5cdb1798 2005-10-29 devnull }
54 5cdb1798 2005-10-29 devnull
55 5cdb1798 2005-10-29 devnull
56 5cdb1798 2005-10-29 devnull void
57 5cdb1798 2005-10-29 devnull main(int argc, char **argv)
58 5cdb1798 2005-10-29 devnull {
59 5cdb1798 2005-10-29 devnull char *err;
60 5cdb1798 2005-10-29 devnull char *mboxfile;
61 5cdb1798 2005-10-29 devnull
62 5cdb1798 2005-10-29 devnull ARGBEGIN{
63 5cdb1798 2005-10-29 devnull }ARGEND;
64 5cdb1798 2005-10-29 devnull
65 5cdb1798 2005-10-29 devnull if(argc > 0)
66 5cdb1798 2005-10-29 devnull mboxfile = argv[0];
67 5cdb1798 2005-10-29 devnull else
68 5cdb1798 2005-10-29 devnull mboxfile = "./mbox";
69 5cdb1798 2005-10-29 devnull
70 5cdb1798 2005-10-29 devnull root = newmessage(nil);
71 5cdb1798 2005-10-29 devnull
72 5cdb1798 2005-10-29 devnull err = readmbox(mboxfile, &root->part);
73 5cdb1798 2005-10-29 devnull if(err != nil){
74 5cdb1798 2005-10-29 devnull fprint(2, "boom: %s\n", err);
75 5cdb1798 2005-10-29 devnull exits(0);
76 5cdb1798 2005-10-29 devnull }
77 5cdb1798 2005-10-29 devnull
78 5cdb1798 2005-10-29 devnull info(0, 1, root);
79 5cdb1798 2005-10-29 devnull
80 5cdb1798 2005-10-29 devnull exits(0);
81 5cdb1798 2005-10-29 devnull }