permit IMAP Stores with explicitly empty Path

this is useful if the server sends an unhelpful NAMESPACE like
"INBOX." (which precludes clean use of Patterns with the real INBOX).
This commit is contained in:
Oswald Buddenhagen 2014-10-04 13:12:50 +02:00
parent f385355bdb
commit 003ddb2199
2 changed files with 5 additions and 5 deletions

View File

@ -1742,7 +1742,7 @@ imap_open_store_namespace( imap_store_t *ctx )
ctx->prefix = cfg->gen.path; ctx->prefix = cfg->gen.path;
ctx->delimiter = cfg->delimiter ? nfstrdup( cfg->delimiter ) : 0; ctx->delimiter = cfg->delimiter ? nfstrdup( cfg->delimiter ) : 0;
if (((!*ctx->prefix && cfg->use_namespace) || !cfg->delimiter) && CAP(NAMESPACE)) { if (((!ctx->prefix && cfg->use_namespace) || !cfg->delimiter) && CAP(NAMESPACE)) {
/* get NAMESPACE info */ /* get NAMESPACE info */
if (!ctx->got_namespace) if (!ctx->got_namespace)
imap_exec( ctx, 0, imap_open_store_namespace_p2, "NAMESPACE" ); imap_exec( ctx, 0, imap_open_store_namespace_p2, "NAMESPACE" );
@ -1776,7 +1776,7 @@ imap_open_store_namespace2( imap_store_t *ctx )
is_atom( (nsp_1st_ns = nsp_1st->child) ) && is_atom( (nsp_1st_ns = nsp_1st->child) ) &&
is_atom( (nsp_1st_dl = nsp_1st_ns->next) )) is_atom( (nsp_1st_dl = nsp_1st_ns->next) ))
{ {
if (!*ctx->prefix && cfg->use_namespace) if (!ctx->prefix && cfg->use_namespace)
ctx->prefix = nsp_1st_ns->val; ctx->prefix = nsp_1st_ns->val;
if (!ctx->delimiter) if (!ctx->delimiter)
ctx->delimiter = nfstrdup( nsp_1st_dl->val ); ctx->delimiter = nfstrdup( nsp_1st_dl->val );
@ -1790,6 +1790,8 @@ static void
imap_open_store_finalize( imap_store_t *ctx ) imap_open_store_finalize( imap_store_t *ctx )
{ {
set_bad_callback( &ctx->gen, 0, 0 ); set_bad_callback( &ctx->gen, 0, 0 );
if (!ctx->prefix)
ctx->prefix = "";
ctx->trashnc = TrashUnknown; ctx->trashnc = TrashUnknown;
ctx->callbacks.imap_open( &ctx->gen, ctx->callback_aux ); ctx->callbacks.imap_open( &ctx->gen, ctx->callback_aux );
} }
@ -2381,8 +2383,6 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
error( "%s '%s' has both Account and account-specific options\n", type, name ); error( "%s '%s' has both Account and account-specific options\n", type, name );
cfg->err = 1; cfg->err = 1;
} }
if (!store->gen.path)
store->gen.path = "";
} }
return 1; return 1;
} }

View File

@ -133,7 +133,7 @@ but is not considered part of them; this is important for \fBPatterns\fR
in the Channels section. in the Channels section.
Note that you \fBmust\fR append a slash if you want to specify an entire Note that you \fBmust\fR append a slash if you want to specify an entire
directory. directory.
(Default: \fI""\fR) (Default: none)
.. ..
.TP .TP
\fBMaxSize\fR \fIsize\fR[\fBk\fR|\fBm\fR][\fBb\fR] \fBMaxSize\fR \fIsize\fR[\fBk\fR|\fBm\fR][\fBb\fR]