tester.c 1.4 KB

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