i_free(root);
}
-static bool
-maildir_quota_parse_rule(struct quota_root_settings *root_set ATTR_UNUSED,
- struct quota_rule *rule,
- const char *str, const char **error_r)
-{
- uint64_t bytes, count;
-
- if (strcmp(str, "NOQUOTA") == 0) {
- bytes = 0;
- count = 0;
- } else if (!maildir_parse_limit(str, &bytes, &count)) {
- *error_r = t_strdup_printf(
- "quota-maildir: Invalid Maildir++ quota rule \"%s\"",
- str);
- return FALSE;
- }
-
- rule->bytes_limit = bytes;
- rule->count_limit = count;
- return TRUE;
-}
-
static void
maildir_quota_root_namespace_added(struct quota_root *_root,
struct mail_namespace *ns)
.alloc = maildir_quota_alloc,
.init = maildir_quota_init,
.deinit = maildir_quota_deinit,
- .parse_rule = maildir_quota_parse_rule,
.namespace_added = maildir_quota_namespace_added,
.get_resources = maildir_quota_root_get_resources,
.get_resource = maildir_quota_get_resource,
const char **error_r);
void (*deinit)(struct quota_root *root);
- bool (*parse_rule)(struct quota_root_settings *root_set,
- struct quota_rule *rule,
- const char *str, const char **error_r);
-
/* called once for each namespace */
void (*namespace_added)(struct quota *quota,
struct mail_namespace *ns);
const char *rule_def, const char **error_r)
{
struct quota_rule *rule;
- const char *p, *mailbox_mask, *value;
+ const char *p, *mailbox_mask;
int ret = 0;
p = strchr(rule_def, ':');
return 0;
}
- if (str_begins(p, "backend=", &value)) {
- if (root_set->backend->v.parse_rule == NULL) {
- *error_r = "backend rule not supported";
- ret = -1;
- } else if (!root_set->backend->v.parse_rule(root_set, rule,
- value, error_r))
- ret = -1;
- } else {
- bool relative_rule = rule != &root_set->default_rule;
-
- if (quota_rule_parse_limits(event, root_set, rule, p, rule_def,
- relative_rule, error_r) < 0)
- ret = -1;
- }
+ bool relative_rule = rule != &root_set->default_rule;
+ if (quota_rule_parse_limits(event, root_set, rule, p, rule_def,
+ relative_rule, error_r) < 0)
+ ret = -1;
quota_root_recalculate_relative_rules(event, root_set,
root_set->default_rule.bytes_limit,