simplify flag parsing.
we've only got a few flags, a linear search is good enough, and is obviously correct; the old search wasn't.
This commit is contained in:
parent
b62fda7bd1
commit
b2526c7d90
1 changed files with 13 additions and 21 deletions
|
@ -252,25 +252,15 @@ static int
|
||||||
parseflags(char *s)
|
parseflags(char *s)
|
||||||
{
|
{
|
||||||
char *f[10];
|
char *f[10];
|
||||||
int i, j, j0, n, flg;
|
int i, j, n, r;
|
||||||
|
|
||||||
|
r = 0;
|
||||||
n = tokenize(s, f, nelem(f));
|
n = tokenize(s, f, nelem(f));
|
||||||
qsort(f, n, sizeof *f, (int (*)(void*,void*))strcmp);
|
for(i = 0; i < n; i++)
|
||||||
j = 0;
|
for(j = 0; j < nelem(ftab); j++)
|
||||||
flg = 0;
|
if(cistrcmp(f[i], ftab[j].flag) == 0)
|
||||||
for(i = 0; i < n; i++){
|
r |= ftab[j].e;
|
||||||
for(j0 = j;; j++){
|
return r;
|
||||||
if(j == nelem(ftab)){
|
|
||||||
j = j0; /* restart search */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(cistrcmp(f[i], ftab[j].flag) == 0){
|
|
||||||
flg |= ftab[j].e;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return flg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "17-Jul-1996 02:44:25 -0700" */
|
/* "17-Jul-1996 02:44:25 -0700" */
|
||||||
|
@ -1016,8 +1006,10 @@ again:
|
||||||
m->deleted = Disappear;
|
m->deleted = Disappear;
|
||||||
ll = &m->next;
|
ll = &m->next;
|
||||||
}else{
|
}else{
|
||||||
/* TODO: flag this as changed, plumb. */
|
if(m->flags != (f[i].flags & ~Frecent)){
|
||||||
|
print("%U(/mail/fs/mbox/%s): %ux->%ulx | %s\n", f[i].uid, m->name, m->flags, f[i].flags, m->subject);
|
||||||
m->flags = f[i].flags;
|
m->flags = f[i].flags;
|
||||||
|
}
|
||||||
ll = &m->next;
|
ll = &m->next;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue