barebone.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
---
barebone.c (1451B)
---
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
10 #include "ind.h"
11 #include "arg.h"
12 #include "cfg.h"
13 #include "llist.h"
14 #include "folder.h"
15 #include "imap.h"
16 #include "flag.h"
17
18 char *argv0;
19
20 void
21 flagusage(void)
22 {
23 fprintf(stderr, "usage: %s [-h] [-c cfg] [[-s|-d] flag] [msgs]\n",
24 argv0);
25 exit(1);
26 }
27
28 int
29 flagmain(int argc, char *argv[])
30 {
31 config_t *cfg;
32 imap_t *imap;
33 int status;
34 char *user, *pass, *netspec, *selected, *cfgn;
35 llist_t *folders, *ffolders, *statusl, *ids;
36 llistelem_t *folder, *elem;
37
38 enum {
39 BEQUIET = 0x01,
40 DOSET = 0x02,
41 DODELETE = 0x04,
42
43 NOARGS = 0x08
44 };
45
46 status = 0;
47 cfgn = NULL;
48
49 ARGBEGIN {
50 case 'c':
51 cfgn = EARGF(flagusage());
52 break;
53 case 'q':
54 status |= BEQUIET;
55 break;
56 case 's':
57 status |= PRINTSYNTAX;
58 break;
59 case 'd':
60 status |= DRYRUN;
61 break;
62 case 'e':
63 addseq = EARGF(flagusage());
64 break;
65 default:
66 incusage();
67 } ARGEND;
68
69 cfg = config_init(cfgn);
70 user = config_checkgetstr(cfg, "imapuser");
71 pass = config_checkgetstr(cfg, "imappass");
72 netspec = config_checkgetstr(cfg, "netspec");
73 selected = config_checkgetstr(cfg, "selected");
74 config_free(cfg);
75 imap = imap_new(netspec, user, pass);
76 free(user);
77 free(pass);
78 free(netspec);
79
80 if (imap_init(imap))
81 imap_die(imap, "imap_init");
82 if (imap_select(imap, selected))
83 imap_die(imap, "imap_select");
84
85 free(selected);
86 imap_close(imap);
87 imap_free(imap);
88 return 0;
89 }
90