From: Timo Sirainen Date: Mon, 13 Apr 2009 16:35:50 +0000 (-0400) Subject: Added master_service_set(). X-Git-Tag: 2.0.alpha1~970 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2eb2cf8eeb763bd5ca9b6848dce32f0303e88ec1;p=thirdparty%2Fdovecot%2Fcore.git Added master_service_set(). --HG-- branch : HEAD --- diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 58332eb06f..3ef84a65ac 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -142,3 +142,8 @@ void **master_service_settings_get_others(struct master_service *service) { return settings_parser_get_list(service->set_parser) + 1; } + +int master_service_set(struct master_service *service, const char *line) +{ + return settings_parse_line(service->set_parser, line); +} diff --git a/src/lib-master/master-service-settings.h b/src/lib-master/master-service-settings.h index 439a6b82bc..cd8c98e094 100644 --- a/src/lib-master/master-service-settings.h +++ b/src/lib-master/master-service-settings.h @@ -20,4 +20,6 @@ const struct master_service_settings * master_service_settings_get(struct master_service *service); void **master_service_settings_get_others(struct master_service *service); +int master_service_set(struct master_service *service, const char *line); + #endif diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 88933e30a5..b659ee650b 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -31,14 +31,13 @@ struct mail_storage_service_multi_ctx { static struct module *modules = NULL; -static void -master_service_set(struct master_service *service, - const char *key, const char *value) +static void set_keyval(struct master_service *service, + const char *key, const char *value) { const char *str; str = t_strconcat(key, "=", value, NULL); - if (settings_parse_line(service->set_parser, str) < 0) { + if (master_service_set(service, str) < 0) { i_fatal("Invalid userdb input '%s': %s", str, settings_parser_get_error(service->set_parser)); } @@ -82,13 +81,13 @@ user_reply_handle(struct master_service *service, *error_r = "userdb returned 0 as uid"; return -1; } - master_service_set(service, "mail_uid", dec2str(reply->uid)); + set_keyval(service, "mail_uid", dec2str(reply->uid)); } if (reply->gid != (uid_t)-1) - master_service_set(service, "mail_gid", dec2str(reply->gid)); + set_keyval(service, "mail_gid", dec2str(reply->gid)); if (reply->home != NULL) - master_service_set(service, "mail_home", reply->home); + set_keyval(service, "mail_home", reply->home); if (reply->chroot != NULL) { if (!validate_chroot(user_set, reply->chroot)) { @@ -98,7 +97,7 @@ user_reply_handle(struct master_service *service, reply->chroot); return -1; } - master_service_set(service, "mail_chroot", reply->chroot); + set_keyval(service, "mail_chroot", reply->chroot); } str = array_get(&reply->extra_fields, &count); @@ -413,7 +412,7 @@ mail_storage_service_init_user(struct master_service *service, const char *user, mail_storage_service_init_settings(service, set_root, !userdb_lookup); if ((flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0) - master_service_set(service, "mail_debug", "yes"); + set_keyval(service, "mail_debug", "yes"); /* now that we've read settings, we can set up logging */ master_service_init_log(service, @@ -443,7 +442,7 @@ mail_storage_service_init_user(struct master_service *service, const char *user, system_groups_user = NULL; if (*home == '\0' && getenv("HOME") != NULL) { home = getenv("HOME"); - master_service_set(service, "mail_home", home); + set_keyval(service, "mail_home", home); } } @@ -452,7 +451,7 @@ mail_storage_service_init_user(struct master_service *service, const char *user, strncmp(home, user_set->mail_chroot, len - 2) == 0) { /* If chroot ends with "/.", strip chroot dir from home dir */ home += len - 2; - master_service_set(service, "mail_home", home); + set_keyval(service, "mail_home", home); } modules = *user_set->mail_plugins == '\0' ? NULL : @@ -573,7 +572,7 @@ int mail_storage_service_multi_next(struct mail_storage_service_multi_ctx *ctx, strncmp(home, user_set->mail_chroot, len - 2) == 0) { /* home dir already contains the chroot dir */ } else if (len > 0) { - master_service_set(ctx->service, "mail_home", + set_keyval(ctx->service, "mail_home", t_strconcat(user_set->mail_chroot, "/", home, NULL)); } if (mail_storage_service_init_post(ctx->service, user, home, user_set,