diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-11 16:11:52 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-07-11 16:11:52 +0200 |
commit | 3d70bd5927759d4d09dfeddd05a94e369d5d54fc (patch) | |
tree | 0bff9c6c1ab1d1d525fefc77cb00e79a7c915385 | |
parent | cec286dad2496deebd409887a006dc3c5664235a (diff) | |
download | mblaze-3d70bd5927759d4d09dfeddd05a94e369d5d54fc.tar.gz mblaze-3d70bd5927759d4d09dfeddd05a94e369d5d54fc.tar.xz mblaze-3d70bd5927759d4d09dfeddd05a94e369d5d54fc.zip |
add hdr
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | hdr.c | 64 |
2 files changed, 66 insertions, 2 deletions
diff --git a/Makefile b/Makefile index 925bf78..2d66f29 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ CFLAGS=-g -O1 -Wall -Wno-switch -Wextra -Wwrite-strings -fstack-protector-strong -D_FORTIFY_SOURCE=2 -ALL = scan thread +ALL = scan thread hdr all: $(ALL) scan: blaze822.o scan.o fmt_rfc2047.o - thread: blaze822.o thread.o +hdr: blaze822.o hdr.o clean: FRC -rm -f $(ALL) *.o diff --git a/hdr.c b/hdr.c new file mode 100644 index 0000000..63485b4 --- /dev/null +++ b/hdr.c @@ -0,0 +1,64 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <ctype.h> +#include <string.h> +#include <errno.h> +#include <time.h> +#include <wchar.h> + +#include "blaze822.h" + +void +header(char *hdr, size_t l, char *file) +{ + struct message *msg; + + msg = blaze822(file); + if (!msg) + return; + + char *v = blaze822_hdr_(msg, hdr, l); + if (v) + printf("%s\n", v); +} + +int +main(int argc, char *argv[]) +{ + char *line = 0; + size_t linelen = 0; + int read; + + int i = 0; + + size_t l = strlen(argv[1])+2; + char *hdr = malloc(l); + hdr[0] = 0; + char *s = hdr+1; + char *t = argv[1]; + while (*t) + *s++ = tolower(*t++); + *s = ':'; + + if (argc == 2 || (argc == 3 && strcmp(argv[1], "-") == 0)) { + while ((read = getdelim(&line, &linelen, '\n', stdin)) != -1) { + if (line[read-1] == '\n') line[read-1] = 0; + header(hdr, l, line); + i++; + } + } else { + for (i = 2; i < argc; i++) { + header(hdr, l, argv[i]); + } + i--; + } + + printf("%d mails scanned\n", i); + + return 0; +} |