i_set_failure_prefix("%s", ctx->default_log_prefix);
}
-static const char *
-mail_storage_service_input_var_userdb(const char *data, void *context)
+const char *mail_storage_service_fields_var_expand(const char *data,
+ const char *const *fields)
{
- struct mail_storage_service_user *user = context;
const char *field_name = data;
unsigned int i, field_name_len;
- if (user == NULL || user->input.userdb_fields == NULL)
+ if (fields == NULL)
return NULL;
field_name_len = strlen(field_name);
- for (i = 0; user->input.userdb_fields[i] != NULL; i++) {
- if (strncmp(user->input.userdb_fields[i], field_name,
- field_name_len) == 0 &&
- user->input.userdb_fields[i][field_name_len] == '=')
- return user->input.userdb_fields[i] + field_name_len+1;
+ for (i = 0; fields[i] != NULL; i++) {
+ if (strncmp(fields[i], field_name, field_name_len) == 0 &&
+ fields[i][field_name_len] == '=')
+ return fields[i] + field_name_len+1;
}
return NULL;
}
+static const char *
+mail_storage_service_input_var_userdb(const char *data, void *context)
+{
+ struct mail_storage_service_user *user = context;
+
+ return mail_storage_service_fields_var_expand(data,
+ user == NULL ? NULL : user->input.userdb_fields);
+}
+
static void
mail_storage_service_var_expand(struct mail_storage_service_ctx *ctx,
string_t *str, const char *format,
const struct var_expand_table *
mail_storage_service_get_var_expand_table(struct mail_storage_service_ctx *ctx,
struct mail_storage_service_input *input);
+const char *mail_storage_service_fields_var_expand(const char *data,
+ const char *const *fields);
/* Return the settings pointed to by set_root parameter in _init() */
void *mail_storage_service_get_settings(struct master_service *service);
mail_user_var_expand_func_userdb(const char *data, void *context)
{
struct mail_user *user = context;
- const char *field_name = data;
- unsigned int i, field_name_len;
- if (user->userdb_fields == NULL)
- return NULL;
-
- field_name_len = strlen(field_name);
- for (i = 0; user->userdb_fields[i] != NULL; i++) {
- if (strncmp(user->userdb_fields[i], field_name,
- field_name_len) == 0 &&
- user->userdb_fields[i][field_name_len] == '=')
- return user->userdb_fields[i] + field_name_len+1;
- }
- return NULL;
+ return mail_storage_service_fields_var_expand(data, user->userdb_fields);
}
void mail_user_set_home(struct mail_user *user, const char *home)