isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 861dd7468ecf2b504442b2979cbe48ad682043b2
parent 492ca8d332284e8e76f75c73b0aaa233beea4e28
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Mon, 20 Mar 2006 18:36:49 +0000

aggregate all (two ...) drivers in an array instead of naming them in
each (one ...) location explicitly.

Diffstat:
Msrc/config.c | 26++++++++++++++------------
Msrc/isync.h | 3+++
2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/config.c b/src/config.c @@ -32,6 +32,8 @@ #include <stdlib.h> #include <stdio.h> +driver_t *drivers[N_DRIVERS] = { &maildir_driver, &imap_driver }; + store_conf_t *stores; channel_conf_t *channels; group_conf_t *groups; @@ -256,7 +258,7 @@ load_config( const char *where, int pseudo ) group_conf_t *group, **groupapp = &groups; string_list_t *chanlist, **chanlistapp; char *arg, *p; - int err, len, cops, gcops, max_size, ms; + int err, len, cops, gcops, max_size, ms, i; char path[_POSIX_PATH_MAX]; char buf[1024]; @@ -283,18 +285,18 @@ load_config( const char *where, int pseudo ) while (getcline( &cfile )) { if (!cfile.cmd) continue; - if (imap_driver.parse_store( &cfile, &store, &err ) || - maildir_driver.parse_store( &cfile, &store, &err )) - { - if (store) { - if (!store->path) - store->path = ""; - *storeapp = store; - storeapp = &store->next; - *storeapp = 0; + for (i = 0; i < N_DRIVERS; i++) + if (drivers[i]->parse_store( &cfile, &store, &err )) { + if (store) { + if (!store->path) + store->path = ""; + *storeapp = store; + storeapp = &store->next; + *storeapp = 0; + } + goto reloop; } - } - else if (!strcasecmp( "Channel", cfile.cmd )) + if (!strcasecmp( "Channel", cfile.cmd )) { channel = nfcalloc( sizeof(*channel) ); channel->name = nfstrdup( cfile.val ); diff --git a/src/isync.h b/src/isync.h @@ -249,6 +249,9 @@ int sync_boxes( store_t *ctx[], const char *names[], channel_conf_t * ); /* config.c */ +#define N_DRIVERS 2 +extern driver_t *drivers[N_DRIVERS]; + extern channel_conf_t *channels; extern group_conf_t *groups; extern int global_ops[2];