diff --git a/hdr.c b/hdr.c index 03ac985..6caeb38 100644 --- a/hdr.c +++ b/hdr.c @@ -30,21 +30,51 @@ header(char *file) printf("%s\n", v); } +static void +printhdr(char *hdr) +{ + int uc = 1; + + while (*hdr && *hdr != ':') { + putc(uc ? toupper(*hdr) : *hdr, stdout); + uc = (*hdr == '-'); + hdr++; + } + fputs(hdr, stdout); + fputc('\n', stdout); +} + +void +headerall(char *file) +{ + struct message *msg; + + msg = blaze822(file); + if (!msg) + return; + + char *h = 0; + while (h = blaze822_next_header(msg, h)) + printhdr(h); +} + int main(int argc, char *argv[]) { - l = strlen(argv[1])+2; - hdr = malloc(l); - hdr[0] = 0; - char *s = hdr+1; - char *t = argv[1]; - while (*t) - *s++ = tolower(*t++); - *s = ':'; - - int i = blaze822_loop(argc-2, argv+2, header); - - printf("%d mails scanned\n", i); + if (argv[1] && argv[1][0] == '-') { + l = strlen(argv[1])+1; + hdr = malloc(l); + hdr[0] = 0; + char *s = hdr+1; + char *t = argv[1]+1; + while (*t) + *s++ = tolower(*t++); + *s = ':'; + + blaze822_loop(argc-2, argv+2, header); + } else { + blaze822_loop(argc-1, argv+1, headerall); + } return 0; }