Blame


1 941e1713 2006-02-15 devnull #include "a.h"
2 941e1713 2006-02-15 devnull
3 941e1713 2006-02-15 devnull Mailbox *hash[123];
4 941e1713 2006-02-15 devnull Mailbox **box;
5 941e1713 2006-02-15 devnull uint nbox;
6 941e1713 2006-02-15 devnull
7 941e1713 2006-02-15 devnull static void
8 941e1713 2006-02-15 devnull markboxes(int mark)
9 941e1713 2006-02-15 devnull {
10 941e1713 2006-02-15 devnull Mailbox *b;
11 fa325e9b 2020-01-10 cross
12 941e1713 2006-02-15 devnull for(i=0; i<nbox; i++)
13 941e1713 2006-02-15 devnull if(box[i])
14 941e1713 2006-02-15 devnull box[i]->mark = mark;
15 941e1713 2006-02-15 devnull }
16 941e1713 2006-02-15 devnull
17 941e1713 2006-02-15 devnull static void
18 941e1713 2006-02-15 devnull sweepboxes(void)
19 941e1713 2006-02-15 devnull {
20 941e1713 2006-02-15 devnull Mailbox *b;
21 fa325e9b 2020-01-10 cross
22 941e1713 2006-02-15 devnull for(i=0; i<nbox; i++)
23 941e1713 2006-02-15 devnull if(box[i] && box[i]->mark){
24 941e1713 2006-02-15 devnull freembox(box[i]);
25 941e1713 2006-02-15 devnull box[i] = nil;
26 941e1713 2006-02-15 devnull }
27 941e1713 2006-02-15 devnull }
28 941e1713 2006-02-15 devnull
29 941e1713 2006-02-15 devnull static Mailbox*
30 941e1713 2006-02-15 devnull mboxbyname(char *name)
31 941e1713 2006-02-15 devnull {
32 941e1713 2006-02-15 devnull int i;
33 fa325e9b 2020-01-10 cross
34 941e1713 2006-02-15 devnull for(i=0; i<nbox; i++)
35 941e1713 2006-02-15 devnull if(box[i] && strcmp(box[i]->name, name) == 0)
36 941e1713 2006-02-15 devnull return box[i];
37 941e1713 2006-02-15 devnull return nil;
38 941e1713 2006-02-15 devnull }
39 941e1713 2006-02-15 devnull
40 941e1713 2006-02-15 devnull static Mailbox*
41 941e1713 2006-02-15 devnull mboxbyid(int id)
42 941e1713 2006-02-15 devnull {
43 941e1713 2006-02-15 devnull if(id < 0 || id >= nbox)
44 941e1713 2006-02-15 devnull return nil;
45 941e1713 2006-02-15 devnull return box[id];
46 941e1713 2006-02-15 devnull }
47 941e1713 2006-02-15 devnull
48 941e1713 2006-02-15 devnull static Mailbox*
49 941e1713 2006-02-15 devnull mboxcreate(char *name)
50 941e1713 2006-02-15 devnull {
51 941e1713 2006-02-15 devnull Mailbox *b;
52 fa325e9b 2020-01-10 cross
53 941e1713 2006-02-15 devnull b = emalloc(sizeof *b);
54 941e1713 2006-02-15 devnull b->name = estrdup(name);
55 941e1713 2006-02-15 devnull if(nbox%64 == 0)
56 941e1713 2006-02-15 devnull box = erealloc(box, (nbox+64)*sizeof box[0]);
57 941e1713 2006-02-15 devnull box[nbox++] = b;
58 941e1713 2006-02-15 devnull return b;
59 941e1713 2006-02-15 devnull }
60 941e1713 2006-02-15 devnull
61 941e1713 2006-02-15 devnull void
62 941e1713 2006-02-15 devnull mboxupdate(void)
63 941e1713 2006-02-15 devnull {
64 941e1713 2006-02-15 devnull markboxes();
65 941e1713 2006-02-15 devnull if(imapcmd("LIST \"\" *") < 0)
66 941e1713 2006-02-15 devnull return;
67 941e1713 2006-02-15 devnull sweepboxes();
68 941e1713 2006-02-15 devnull }