commit da9adcc4bd204e51772218e5786997c042b59046
Author: Oswald Buddenhagen <o...@users.sf.net>
Date:   Fri May 1 13:19:23 2015 +0200

    pass a maildir_store_conf_t to maildir_validate_path()
    
    casting early on makes the code clearer.

 src/drv_maildir.c |   30 ++++++++++++++++--------------
 1 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/drv_maildir.c b/src/drv_maildir.c
index b9ed463..6d3b483 100644
--- a/src/drv_maildir.c
+++ b/src/drv_maildir.c
@@ -136,18 +136,18 @@ maildir_join_path( const char *prefix, const char *box )
 }
 
 static int
-maildir_validate_path( store_conf_t *conf )
+maildir_validate_path( maildir_store_conf_t *conf )
 {
        struct stat st;
 
-       if (!conf->path) {
-               error( "Maildir error: store '%s' has no Path\n", conf->name );
-               ((maildir_store_conf_t *)conf)->failed = FAIL_FINAL;
+       if (!conf->gen.path) {
+               error( "Maildir error: store '%s' has no Path\n", 
conf->gen.name );
+               conf->failed = FAIL_FINAL;
                return -1;
        }
-       if (stat( conf->path, &st ) || !S_ISDIR(st.st_mode)) {
-               error( "Maildir error: cannot open store '%s'\n", conf->path );
-               ((maildir_store_conf_t *)conf)->failed = FAIL_FINAL;
+       if (stat( conf->gen.path, &st ) || !S_ISDIR(st.st_mode)) {
+               error( "Maildir error: cannot open store '%s'\n", 
conf->gen.path );
+               conf->failed = FAIL_FINAL;
                return -1;
        }
        return 0;
@@ -156,22 +156,23 @@ maildir_validate_path( store_conf_t *conf )
 static void lcktmr_timeout( void *aux );
 
 static void
-maildir_open_store( store_conf_t *conf, const char *label ATTR_UNUSED,
+maildir_open_store( store_conf_t *gconf, const char *label ATTR_UNUSED,
                     void (*cb)( store_t *ctx, void *aux ), void *aux )
 {
+       maildir_store_conf_t *conf = (maildir_store_conf_t *)gconf;
        maildir_store_t *ctx;
 
        ctx = nfcalloc( sizeof(*ctx) );
-       ctx->gen.conf = conf;
+       ctx->gen.conf = gconf;
        ctx->uvfd = -1;
        init_wakeup( &ctx->lcktmr, lcktmr_timeout, ctx );
-       if (conf->trash) {
+       if (gconf->trash) {
                if (maildir_validate_path( conf ) < 0) {
                        free( ctx );
                        cb( 0, aux );
                        return;
                }
-               ctx->trash = maildir_join_path( conf->path, conf->trash );
+               ctx->trash = maildir_join_path( gconf->path, gconf->trash );
        }
        cb( &ctx->gen, aux );
 }
@@ -315,7 +316,7 @@ maildir_list_path( store_t *gctx, int flags, const char 
*inbox )
 {
        char path[_POSIX_PATH_MAX], name[_POSIX_PATH_MAX];
 
-       if (maildir_validate_path( gctx->conf ) < 0)
+       if (maildir_validate_path( (maildir_store_conf_t *)gctx->conf ) < 0)
                return -1;
        return maildir_list_recurse(
                gctx, 0, flags, inbox, inbox ? strlen( inbox ) : 0, 0, 0,
@@ -1043,6 +1044,7 @@ maildir_app_msg( maildir_store_t *ctx, message_t 
***msgapp, msg_t *entry )
 static int
 maildir_select_box( store_t *gctx, const char *name )
 {
+       maildir_store_conf_t *conf = (maildir_store_conf_t *)gctx->conf;
        maildir_store_t *ctx = (maildir_store_t *)gctx;
 
        maildir_cleanup( gctx );
@@ -1055,10 +1057,10 @@ maildir_select_box( store_t *gctx, const char *name )
 #endif /* USE_DB */
        ctx->fresh[0] = ctx->fresh[1] = 0;
        if (starts_with( name, -1, "INBOX", 5 ) && (!name[5] || name[5] == 
'/')) {
-               gctx->path = maildir_join_path( ((maildir_store_conf_t 
*)gctx->conf)->inbox, name + 5 );
+               gctx->path = maildir_join_path( conf->inbox, name + 5 );
                ctx->is_inbox = !name[5];
        } else {
-               if (maildir_validate_path( gctx->conf ) < 0) {
+               if (maildir_validate_path( conf ) < 0) {
                        gctx->path = 0;
                        return DRV_CANCELED;
                }

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to