xref: /plan9/sys/src/cmd/upas/fs/tester.c (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <ctype.h>
4*80ee5cbfSDavid du Colombier #include <String.h>
57dd7cddfSDavid du Colombier #include "message.h"
67dd7cddfSDavid du Colombier 
77dd7cddfSDavid du Colombier Message *root;
87dd7cddfSDavid du Colombier 
97dd7cddfSDavid du Colombier void
prindent(int i)107dd7cddfSDavid du Colombier prindent(int i)
117dd7cddfSDavid du Colombier {
127dd7cddfSDavid du Colombier 	for(; i > 0; i--)
137dd7cddfSDavid du Colombier 		print(" ");
147dd7cddfSDavid du Colombier }
157dd7cddfSDavid du Colombier 
167dd7cddfSDavid du Colombier void
prstring(int indent,char * tag,String * s)177dd7cddfSDavid du Colombier prstring(int indent, char *tag, String *s)
187dd7cddfSDavid du Colombier {
197dd7cddfSDavid du Colombier 	if(s == nil)
207dd7cddfSDavid du Colombier 		return;
217dd7cddfSDavid du Colombier 	prindent(indent+1);
227dd7cddfSDavid du Colombier 	print("%s %s\n", tag, s_to_c(s));
237dd7cddfSDavid du Colombier }
247dd7cddfSDavid du Colombier 
257dd7cddfSDavid du Colombier void
info(int indent,int mno,Message * m)267dd7cddfSDavid du Colombier info(int indent, int mno, Message *m)
277dd7cddfSDavid du Colombier {
287dd7cddfSDavid du Colombier 	int i;
297dd7cddfSDavid du Colombier 	Message *nm;
307dd7cddfSDavid du Colombier 
317dd7cddfSDavid du Colombier 	prindent(indent);
327dd7cddfSDavid du Colombier 	print("%d%c %d ", mno, m->allocated?'*':' ', m->end - m->start);
337dd7cddfSDavid du Colombier 	if(m->unixfrom != nil)
347dd7cddfSDavid du Colombier 		print("uf %s ", s_to_c(m->unixfrom));
357dd7cddfSDavid du Colombier 	if(m->unixdate != nil)
367dd7cddfSDavid du Colombier 		print("ud %s ", s_to_c(m->unixdate));
377dd7cddfSDavid du Colombier 	print("\n");
387dd7cddfSDavid du Colombier 	prstring(indent, "from:", m->from822);
397dd7cddfSDavid du Colombier 	prstring(indent, "sender:", m->sender822);
407dd7cddfSDavid du Colombier 	prstring(indent, "to:", m->to822);
417dd7cddfSDavid du Colombier 	prstring(indent, "cc:", m->cc822);
427dd7cddfSDavid du Colombier 	prstring(indent, "reply-to:", m->replyto822);
437dd7cddfSDavid du Colombier 	prstring(indent, "subject:", m->subject822);
447dd7cddfSDavid du Colombier 	prstring(indent, "date:", m->date822);
457dd7cddfSDavid du Colombier 	prstring(indent, "filename:", m->filename);
467dd7cddfSDavid du Colombier 	prstring(indent, "type:", m->type);
477dd7cddfSDavid du Colombier 	prstring(indent, "charset:", m->charset);
487dd7cddfSDavid du Colombier 
497dd7cddfSDavid du Colombier 	i = 1;
507dd7cddfSDavid du Colombier 	for(nm = m->part; nm != nil; nm = nm->next){
517dd7cddfSDavid du Colombier 		info(indent+1, i++, nm);
527dd7cddfSDavid du Colombier 	}
537dd7cddfSDavid du Colombier }
547dd7cddfSDavid du Colombier 
557dd7cddfSDavid du Colombier 
567dd7cddfSDavid du Colombier void
main(int argc,char ** argv)577dd7cddfSDavid du Colombier main(int argc, char **argv)
587dd7cddfSDavid du Colombier {
597dd7cddfSDavid du Colombier 	char *err;
607dd7cddfSDavid du Colombier 	char *mboxfile;
617dd7cddfSDavid du Colombier 
627dd7cddfSDavid du Colombier 	ARGBEGIN{
637dd7cddfSDavid du Colombier 	}ARGEND;
647dd7cddfSDavid du Colombier 
657dd7cddfSDavid du Colombier 	if(argc > 0)
667dd7cddfSDavid du Colombier 		mboxfile = argv[0];
677dd7cddfSDavid du Colombier 	else
687dd7cddfSDavid du Colombier 		mboxfile = "./mbox";
697dd7cddfSDavid du Colombier 
707dd7cddfSDavid du Colombier 	root = newmessage(nil);
717dd7cddfSDavid du Colombier 
727dd7cddfSDavid du Colombier 	err = readmbox(mboxfile, &root->part);
737dd7cddfSDavid du Colombier 	if(err != nil){
747dd7cddfSDavid du Colombier 		fprint(2, "boom: %s\n", err);
757dd7cddfSDavid du Colombier 		exits(0);
767dd7cddfSDavid du Colombier 	}
777dd7cddfSDavid du Colombier 
787dd7cddfSDavid du Colombier 	info(0, 1, root);
797dd7cddfSDavid du Colombier 
807dd7cddfSDavid du Colombier 	exits(0);
817dd7cddfSDavid du Colombier }
82