Blob


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