provide a proper getter callback for driver capabilities
that way driver_t contains only callbacks.
This commit is contained in:
parent
d54809e268
commit
f46cf8c887
|
@ -147,7 +147,8 @@ typedef struct {
|
||||||
#define LIST_PATH_MAYBE 4
|
#define LIST_PATH_MAYBE 4
|
||||||
|
|
||||||
struct driver {
|
struct driver {
|
||||||
int flags;
|
/* Return driver capabilities. */
|
||||||
|
int (*get_caps)( store_t *ctx );
|
||||||
|
|
||||||
/* Parse configuration. */
|
/* Parse configuration. */
|
||||||
int (*parse_store)( conffile_t *cfg, store_conf_t **storep );
|
int (*parse_store)( conffile_t *cfg, store_conf_t **storep );
|
||||||
|
|
|
@ -3183,8 +3183,14 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
imap_get_caps( store_t *gctx ATTR_UNUSED )
|
||||||
|
{
|
||||||
|
return DRV_CRLF | DRV_VERBOSE;
|
||||||
|
}
|
||||||
|
|
||||||
struct driver imap_driver = {
|
struct driver imap_driver = {
|
||||||
DRV_CRLF | DRV_VERBOSE,
|
imap_get_caps,
|
||||||
imap_parse_store,
|
imap_parse_store,
|
||||||
imap_cleanup,
|
imap_cleanup,
|
||||||
imap_alloc_store,
|
imap_alloc_store,
|
||||||
|
|
|
@ -1865,8 +1865,14 @@ maildir_parse_store( conffile_t *cfg, store_conf_t **storep )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
maildir_get_caps( store_t *gctx ATTR_UNUSED )
|
||||||
|
{
|
||||||
|
return 0; /* XXX DRV_CRLF? */
|
||||||
|
}
|
||||||
|
|
||||||
struct driver maildir_driver = {
|
struct driver maildir_driver = {
|
||||||
0, /* XXX DRV_CRLF? */
|
maildir_get_caps,
|
||||||
maildir_parse_store,
|
maildir_parse_store,
|
||||||
maildir_cleanup_drv,
|
maildir_cleanup_drv,
|
||||||
maildir_alloc_store,
|
maildir_alloc_store,
|
||||||
|
|
0
src/drv_proxy.c
Normal file
0
src/drv_proxy.c
Normal file
|
@ -810,7 +810,7 @@ sync_chans( main_vars_t *mvars, int ent )
|
||||||
if (mvars->skip)
|
if (mvars->skip)
|
||||||
goto next2;
|
goto next2;
|
||||||
mvars->state[M] = mvars->state[S] = ST_FRESH;
|
mvars->state[M] = mvars->state[S] = ST_FRESH;
|
||||||
if (mvars->chan->stores[M]->driver->flags & mvars->chan->stores[S]->driver->flags & DRV_VERBOSE)
|
if (mvars->chan->stores[M]->driver->get_caps( 0 ) & mvars->chan->stores[S]->driver->get_caps( 0 ) & DRV_VERBOSE)
|
||||||
labels[M] = "M: ", labels[S] = "S: ";
|
labels[M] = "M: ", labels[S] = "S: ";
|
||||||
else
|
else
|
||||||
labels[M] = labels[S] = "";
|
labels[M] = labels[S] = "";
|
||||||
|
|
|
@ -407,8 +407,8 @@ msg_fetched( int sts, void *aux )
|
||||||
|
|
||||||
vars->msg->flags = vars->data.flags;
|
vars->msg->flags = vars->data.flags;
|
||||||
|
|
||||||
scr = (svars->drv[1-t]->flags / DRV_CRLF) & 1;
|
scr = (svars->drv[1-t]->get_caps( svars->ctx[1-t] ) / DRV_CRLF) & 1;
|
||||||
tcr = (svars->drv[t]->flags / DRV_CRLF) & 1;
|
tcr = (svars->drv[t]->get_caps( svars->ctx[t] ) / DRV_CRLF) & 1;
|
||||||
if (vars->srec || scr != tcr) {
|
if (vars->srec || scr != tcr) {
|
||||||
if (!copy_msg_convert( scr, tcr, vars )) {
|
if (!copy_msg_convert( scr, tcr, vars )) {
|
||||||
warn( "Warning: message %d from %s has incomplete header.\n",
|
warn( "Warning: message %d from %s has incomplete header.\n",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user