remove own_store() function from driver model
the drivers which support it can abstract it inside open_store() just fine.
This commit is contained in:
parent
2cb483fb2e
commit
0b32734693
|
@ -1351,7 +1351,7 @@ imap_invoke_bad_callback( imap_store_t *ctx )
|
|||
ctx->gen.bad_callback( ctx->gen.bad_callback_aux );
|
||||
}
|
||||
|
||||
/******************* imap_disown_store & imap_own_store *******************/
|
||||
/******************* imap_disown_store *******************/
|
||||
|
||||
static store_t *unowned;
|
||||
|
||||
|
@ -1378,19 +1378,6 @@ imap_disown_store( store_t *gctx )
|
|||
unowned = gctx;
|
||||
}
|
||||
|
||||
static store_t *
|
||||
imap_own_store( store_conf_t *conf )
|
||||
{
|
||||
store_t *store, **storep;
|
||||
|
||||
for (storep = &unowned; (store = *storep); storep = &store->next)
|
||||
if (store->conf == conf) {
|
||||
*storep = store->next;
|
||||
return store;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************* imap_cleanup *******************/
|
||||
|
||||
static void imap_cleanup_p2( imap_store_t *, struct imap_cmd *, int );
|
||||
|
@ -1470,6 +1457,12 @@ imap_open_store( store_conf_t *conf,
|
|||
imap_store_t *ctx;
|
||||
store_t **ctxp;
|
||||
|
||||
for (ctxp = &unowned; (ctx = (imap_store_t *)*ctxp); ctxp = &ctx->gen.next)
|
||||
if (ctx->gen.conf == conf) {
|
||||
*ctxp = ctx->gen.next;
|
||||
cb( &ctx->gen, aux );
|
||||
return;
|
||||
}
|
||||
for (ctxp = &unowned; (ctx = (imap_store_t *)*ctxp); ctxp = &ctx->gen.next)
|
||||
if (((imap_store_conf_t *)ctx->gen.conf)->server == srvc) {
|
||||
*ctxp = ctx->gen.next;
|
||||
|
@ -2359,7 +2352,6 @@ struct driver imap_driver = {
|
|||
imap_cleanup,
|
||||
imap_open_store,
|
||||
imap_disown_store,
|
||||
imap_own_store,
|
||||
imap_cancel_store,
|
||||
imap_list,
|
||||
imap_prepare_opts,
|
||||
|
|
|
@ -178,12 +178,6 @@ maildir_disown_store( store_t *gctx )
|
|||
free( gctx );
|
||||
}
|
||||
|
||||
static store_t *
|
||||
maildir_own_store( store_conf_t *conf ATTR_UNUSED )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
maildir_cleanup_drv( void )
|
||||
{
|
||||
|
@ -1478,7 +1472,6 @@ struct driver maildir_driver = {
|
|||
maildir_cleanup_drv,
|
||||
maildir_open_store,
|
||||
maildir_disown_store,
|
||||
maildir_own_store,
|
||||
maildir_disown_store, /* _cancel_, but it's the same */
|
||||
maildir_list,
|
||||
maildir_prepare_opts,
|
||||
|
|
|
@ -289,9 +289,6 @@ struct driver {
|
|||
/* Mark the store as available for recycling. Server connection may be kept alive. */
|
||||
void (*disown_store)( store_t *ctx );
|
||||
|
||||
/* Try to recycle a store with the given configuration. */
|
||||
store_t *(*own_store)( store_conf_t *conf );
|
||||
|
||||
/* Discard the store after a bad_callback. The server connections will be closed.
|
||||
* Pending commands will have their callbacks synchronously invoked with DRV_CANCELED. */
|
||||
void (*cancel_store)( store_t *ctx );
|
||||
|
|
10
src/main.c
10
src/main.c
|
@ -517,7 +517,6 @@ sync_chans( main_vars_t *mvars, int ent )
|
|||
{
|
||||
group_conf_t *group;
|
||||
channel_conf_t *chan;
|
||||
store_t *store;
|
||||
string_list_t *mbox, *sbox, **mboxp, **sboxp;
|
||||
char *channame, *boxp, *nboxp;
|
||||
int t;
|
||||
|
@ -587,14 +586,11 @@ sync_chans( main_vars_t *mvars, int ent )
|
|||
info( "Channel %s\n", mvars->chan->name );
|
||||
mvars->skip = mvars->cben = 0;
|
||||
for (t = 0; t < 2; t++) {
|
||||
mvars->drv[t] = mvars->chan->stores[t]->driver;
|
||||
if ((store = mvars->drv[t]->own_store( mvars->chan->stores[t] )))
|
||||
store_opened( store, AUX );
|
||||
}
|
||||
for (t = 0; t < 2 && !mvars->skip; t++)
|
||||
if (mvars->state[t] == ST_FRESH) {
|
||||
info( "Opening %s %s...\n", str_ms[t], mvars->chan->stores[t]->name );
|
||||
mvars->drv[t] = mvars->chan->stores[t]->driver;
|
||||
mvars->drv[t]->open_store( mvars->chan->stores[t], store_opened, AUX );
|
||||
if (mvars->skip)
|
||||
break;
|
||||
}
|
||||
mvars->cben = 1;
|
||||
opened:
|
||||
|
|
Loading…
Reference in New Issue
Block a user