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) {
|
for (flags = 0, cpat = mvars->chan->patterns; cpat; cpat = cpat->next) {
|
||||||
const char *pat = cpat->string;
|
const char *pat = cpat->string;
|
||||||
if (*pat != '!') {
|
if (*pat != '!') {
|
||||||
int i;
|
/* Partial matches like "INB*" or even "*" are not considered,
|
||||||
char c;
|
* except implicity when the INBOX lives under Path. */
|
||||||
static const char strinbox[] = "INBOX";
|
if (!memcmp( pat, "INBOX", 5 )) {
|
||||||
for (i = 0; ; i++) {
|
char c = pat[5];
|
||||||
c = pat[i];
|
|
||||||
if (i == sizeof(strinbox) - 1)
|
|
||||||
break;
|
|
||||||
if (c != strinbox[i])
|
|
||||||
goto nextpat;
|
|
||||||
}
|
|
||||||
if (!c) {
|
if (!c) {
|
||||||
|
/* User really wants the INBOX. */
|
||||||
flags |= LIST_INBOX;
|
flags |= LIST_INBOX;
|
||||||
} else if (c == '/') {
|
} else if (c == '/') {
|
||||||
|
/* Flattened sub-folders of INBOX actually end up in Path. */
|
||||||
if (ctx->conf->flat_delim)
|
if (ctx->conf->flat_delim)
|
||||||
flags |= LIST_PATH;
|
flags |= LIST_PATH;
|
||||||
else
|
else
|
||||||
flags |= LIST_INBOX;
|
flags |= LIST_INBOX;
|
||||||
} else {
|
} else {
|
||||||
nextpat:
|
/* User may not want the INBOX after all ... */
|
||||||
flags |= LIST_PATH;
|
flags |= LIST_PATH;
|
||||||
|
/* ... but maybe he does.
|
||||||
|
* The flattened sub-folder case is implicitly covered by the previous line. */
|
||||||
if (c == '*' || c == '%')
|
if (c == '*' || c == '%')
|
||||||
flags |= LIST_INBOX;
|
flags |= LIST_INBOX;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
flags |= LIST_PATH;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set_bad_callback( ctx, store_bad, AUX );
|
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
|
\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
|
(either by supplying multiple arguments or by using \fBPattern\fR multiple
|
||||||
times); later matches take precedence.
|
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"
|
Example: "\fBPatterns\fR\ \fI%\ !Trash\fR"
|
||||||
..
|
..
|
||||||
.TP
|
.TP
|
||||||
|
|
Loading…
Reference in New Issue
Block a user