123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include <u.h>
- #include <libc.h>
- #include <ctype.h>
- #include <String.h>
- #include "message.h"
- Message *root;
- void
- prindent(int i)
- {
- for(; i > 0; i--)
- print(" ");
- }
- void
- prstring(int indent, char *tag, String *s)
- {
- if(s == nil)
- return;
- prindent(indent+1);
- print("%s %s\n", tag, s_to_c(s));
- }
- void
- info(int indent, int mno, Message *m)
- {
- int i;
- Message *nm;
- prindent(indent);
- print("%d%c %d ", mno, m->allocated?'*':' ', m->end - m->start);
- if(m->unixfrom != nil)
- print("uf %s ", s_to_c(m->unixfrom));
- if(m->unixdate != nil)
- print("ud %s ", s_to_c(m->unixdate));
- print("\n");
- prstring(indent, "from:", m->from822);
- prstring(indent, "sender:", m->sender822);
- prstring(indent, "to:", m->to822);
- prstring(indent, "cc:", m->cc822);
- prstring(indent, "reply-to:", m->replyto822);
- prstring(indent, "subject:", m->subject822);
- prstring(indent, "date:", m->date822);
- prstring(indent, "filename:", m->filename);
- prstring(indent, "type:", m->type);
- prstring(indent, "charset:", m->charset);
- i = 1;
- for(nm = m->part; nm != nil; nm = nm->next){
- info(indent+1, i++, nm);
- }
- }
-
- void
- main(int argc, char **argv)
- {
- char *err;
- char *mboxfile;
- ARGBEGIN{
- }ARGEND;
- if(argc > 0)
- mboxfile = argv[0];
- else
- mboxfile = "./mbox";
- root = newmessage(nil);
- err = readmbox(mboxfile, &root->part);
- if(err != nil){
- fprint(2, "boom: %s\n", err);
- exits(0);
- }
- info(0, 1, root);
- exits(0);
- }
|