static int maildirsize_write(struct maildir_quota_root *root, const char *path)
{
- const struct quota_rule *rule = &root->root.set->default_rule;
+ struct quota_root *_root = &root->root;
struct mail_storage *const *storages;
unsigned int i, count;
struct dotlock *dotlock;
}
str = t_str_new(128);
- if (rule->bytes_limit != 0) {
+ if (_root->bytes_limit != 0) {
str_printfa(str, "%lluS",
- (unsigned long long)rule->bytes_limit);
+ (unsigned long long)_root->bytes_limit);
}
- if (rule->count_limit != 0) {
+ if (_root->count_limit != 0) {
if (str_len(str) > 0)
str_append_c(str, ',');
str_printfa(str, "%lluC",
- (unsigned long long)rule->count_limit);
+ (unsigned long long)_root->count_limit);
}
str_printfa(str, "\n%llu %llu\n",
(unsigned long long)root->total_bytes,
static int maildirsize_parse(struct maildir_quota_root *root,
int fd, const char *const *lines)
{
- struct quota_rule *rule = &root->root.set->default_rule;
+ struct quota_root *_root = &root->root;
uint64_t message_bytes_limit, message_count_limit;
long long bytes_diff, total_bytes;
int count_diff, total_count;
if (message_count_limit >= (1ULL << 63))
message_count_limit = (1ULL << 63) - 1;
- if (rule->bytes_limit == (int64_t)message_bytes_limit &&
- rule->count_limit == (int64_t)message_count_limit) {
+ if (root->root.bytes_limit == (int64_t)message_bytes_limit &&
+ root->root.count_limit == (int64_t)message_count_limit) {
/* limits haven't changed */
} else if (root->root.set->force_default_rule) {
/* we know the limits and they've changed.
return 0;
} else {
/* we're using limits from the file. */
- rule->bytes_limit = message_bytes_limit;
- rule->count_limit = message_count_limit;
+ root->root.bytes_limit = message_bytes_limit;
+ root->root.count_limit = message_count_limit;
quota_root_recalculate_relative_rules(root->root.set);
}
return -1;
}
- if ((total_bytes > rule->bytes_limit && rule->bytes_limit != 0) ||
- (total_count > rule->count_limit && rule->count_limit != 0)) {
+ if ((total_bytes > _root->bytes_limit && _root->bytes_limit != 0) ||
+ (total_count > _root->count_limit && _root->count_limit != 0)) {
/* we're over quota. don't trust these values if the file
contains more than the initial summary line, or if the file
is older than 15 minutes. */
root->set = root_set;
root->quota = quota;
root->backend = *root_set->backend;
+ root->bytes_limit = root_set->default_rule.bytes_limit;
+ root->count_limit = root_set->default_rule.count_limit;
array_create(&root->quota_module_contexts, root->pool,
sizeof(void *), 10);
return ret;
}
-static bool quota_root_get_rule_limits(struct quota_root_settings *root_set,
+static bool quota_root_get_rule_limits(struct quota_root *root,
const char *mailbox_name,
uint64_t *bytes_limit_r,
uint64_t *count_limit_r)
int64_t bytes_limit, count_limit;
bool found;
- bytes_limit = root_set->default_rule.bytes_limit;
- count_limit = root_set->default_rule.count_limit;
+ bytes_limit = root->bytes_limit;
+ count_limit = root->count_limit;
/* if default rule limits are 0, this rule applies only to specific
mailboxes */
found = bytes_limit != 0 || count_limit != 0;
- rule = quota_root_rule_find(root_set, mailbox_name);
+ rule = quota_root_rule_find(root->set, mailbox_name);
if (rule != NULL) {
if (!rule->ignore) {
bytes_limit += rule->bytes_limit;
if (ret <= 0)
return ret;
- (void)quota_root_get_rule_limits(root->set, mailbox_name,
+ (void)quota_root_get_rule_limits(root, mailbox_name,
&bytes_limit, &count_limit);
if (strcmp(name, QUOTA_NAME_STORAGE_BYTES) == 0)
*limit_r = bytes_limit;
if (!quota_root_is_visible(roots[i], ctx->box, TRUE))
continue;
- if (!quota_root_get_rule_limits(roots[i]->set,
+ if (!quota_root_get_rule_limits(roots[i],
mailbox_get_name(ctx->box),
&bytes_limit, &count_limit))
continue;