about summary refs log tree commit diff
path: root/show.c
blob: 2433fdc79939e2c5a265f68635982f66f6cafe1d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#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
printhdr(char *hdr)
{
	int uc = 1;

	while (*hdr) {
		putc(uc ? toupper(*hdr) : *hdr, stdout);
		uc = (*hdr == '-');
		hdr++;
	}
	putc(' ', stdout);
}

void
show(char *file)
{
	struct message *msg;

	msg = blaze822_file(file);
	if (!msg)
		return;

	char fields[] = "\0from:\0subject:\0to:\0cc:\0date:\0\0";

	// XXX custom field formatting

	char *f, *v;
	for (f = fields; f[1]; f += strlen(f+1)+1) {
		v = blaze822_hdr_(msg, f, strlen(f+1)+1);
		if (v) {
			printhdr(f+1);
			printf("%s\n", v);
		}
	}

	printf("\n");

	fwrite(blaze822_body(msg), blaze822_bodylen(msg), 1, stdout);
	blaze822_free(msg);
}

int
main(int argc, char *argv[])
{
	int i = blaze822_loop(argc-1, argv+1, show);

	return 0;
}