blob: 5f90f0a21a51743e9a2a0e7023531b4719ccd284 (
plain)
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
64
65
66
67
68
|
#include "a.h"
Mailbox *hash[123];
Mailbox **box;
uint nbox;
static void
markboxes(int mark)
{
Mailbox *b;
for(i=0; i<nbox; i++)
if(box[i])
box[i]->mark = mark;
}
static void
sweepboxes(void)
{
Mailbox *b;
for(i=0; i<nbox; i++)
if(box[i] && box[i]->mark){
freembox(box[i]);
box[i] = nil;
}
}
static Mailbox*
mboxbyname(char *name)
{
int i;
for(i=0; i<nbox; i++)
if(box[i] && strcmp(box[i]->name, name) == 0)
return box[i];
return nil;
}
static Mailbox*
mboxbyid(int id)
{
if(id < 0 || id >= nbox)
return nil;
return box[id];
}
static Mailbox*
mboxcreate(char *name)
{
Mailbox *b;
b = emalloc(sizeof *b);
b->name = estrdup(name);
if(nbox%64 == 0)
box = erealloc(box, (nbox+64)*sizeof box[0]);
box[nbox++] = b;
return b;
}
void
mboxupdate(void)
{
markboxes();
if(imapcmd("LIST \"\" *") < 0)
return;
sweepboxes();
}
|