util.c - rohrpost - A commandline mail client to change the world as we see it.
(HTM) git clone git://r-36.net/rohrpost
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
util.c (1213B)
---
1 /*
2 * Copy me if you can.
3 * by 20h
4 */
5
6 #include <unistd.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <strings.h>
11
12 #include "ind.h"
13 #include "arg.h"
14 #include "mime.h"
15 #include "llist.h"
16
17 void
18 utilusage(char *argv0)
19 {
20 die("usage: %s [-h] [-e|-d] string\n", argv0);
21 }
22
23 int
24 utilmain(int argc, char *argv[])
25 {
26 int status, worklen;
27 llist_t *workl;
28 char *works, *ress, *argv0;
29
30 enum {
31 ENCODE = 0x04,
32 DECODE = 0x08,
33 ISBODY = 0x10,
34
35 NOARGS = 0x40
36 };
37
38 status = 0;
39
40 ARGBEGIN(argv0) {
41 case 'd':
42 status |= DECODE;
43 break;
44 case 'e':
45 status |= ENCODE;
46 break;
47 case 'o':
48 status |= ISBODY;
49 break;
50 case 'h':
51 default:
52 utilusage(argv0);
53 } ARGEND;
54
55 worklen = 0;
56 if (argc < 1) {
57 works = readtoeoffd(0, &worklen);
58 if (works == NULL)
59 edie("readtoeoffd");
60 } else {
61 workl = llist_splitargv(argc, argv);
62 if (workl == NULL)
63 utilusage(argv0);
64 works = llist_joinstr(workl, " ");
65 llist_free(workl);
66 }
67
68 if (status & ENCODE) {
69 ress = mime_encodestring(works);
70 printf("%s", ress);
71 } else if (status & DECODE) {
72 ress = mime_guessheader(works);
73 printf("%s", ress);
74 } else {
75 free(works);
76 utilusage(argv0);
77 }
78 free(ress);
79 free(works);
80
81 return 0;
82 }
83