don't let wildcards match INBOX, unless it lives under Path
it's counter-intuitive to have '*' match the (always present) INBOX when the rest of the mailboxes lives in a different namespace.
This commit is contained in:
parent
e7c96f8891
commit
406e967430
23
src/main.c
23
src/main.c
|
@ -706,29 +706,30 @@ store_opened( store_t *ctx, void *aux )
|
|||
for (flags = 0, cpat = mvars->chan->patterns; cpat; cpat = cpat->next) {
|
||||
const char *pat = cpat->string;
|
||||
if (*pat != '!') {
|
||||
int i;
|
||||
char c;
|
||||
static const char strinbox[] = "INBOX";
|
||||
for (i = 0; ; i++) {
|
||||
c = pat[i];
|
||||
if (i == sizeof(strinbox) - 1)
|
||||
break;
|
||||
if (c != strinbox[i])
|
||||
goto nextpat;
|
||||
}
|
||||
/* Partial matches like "INB*" or even "*" are not considered,
|
||||
* except implicity when the INBOX lives under Path. */
|
||||
if (!memcmp( pat, "INBOX", 5 )) {
|
||||
char c = pat[5];
|
||||
if (!c) {
|
||||
/* User really wants the INBOX. */
|
||||
flags |= LIST_INBOX;
|
||||
} else if (c == '/') {
|
||||
/* Flattened sub-folders of INBOX actually end up in Path. */
|
||||
if (ctx->conf->flat_delim)
|
||||
flags |= LIST_PATH;
|
||||
else
|
||||
flags |= LIST_INBOX;
|
||||
} else {
|
||||
nextpat:
|
||||
/* User may not want the INBOX after all ... */
|
||||
flags |= LIST_PATH;
|
||||
/* ... but maybe he does.
|
||||
* The flattened sub-folder case is implicitly covered by the previous line. */
|
||||
if (c == '*' || c == '%')
|
||||
flags |= LIST_INBOX;
|
||||
}
|
||||
} else {
|
||||
flags |= LIST_PATH;
|
||||
}
|
||||
}
|
||||
}
|
||||
set_bad_callback( ctx, store_bad, AUX );
|
||||
|
|
|
@ -370,6 +370,10 @@ and \fB%\fR matches anything up to the next hierarchy delimiter. Prepending
|
|||
\fB!\fR to a pattern makes it an exclusion. Multiple patterns can be specified
|
||||
(either by supplying multiple arguments or by using \fBPattern\fR multiple
|
||||
times); later matches take precedence.
|
||||
.br
|
||||
Note that \fBINBOX\fR is not matched by wildcards, unless it lives under
|
||||
\fBPath\fR.
|
||||
.br
|
||||
Example: "\fBPatterns\fR\ \fI%\ !Trash\fR"
|
||||
..
|
||||
.TP
|
||||
|
|
Loading…
Reference in New Issue
Block a user