quota.c revision cb951d3282610a9a0960230865bc5f3e3347b203
/* Copyright (C) 2005 Timo Sirainen */
#include "lib.h"
#include "array.h"
#include "hash.h"
#include "quota-private.h"
#include "quota-fs.h"
unsigned int quota_module_id = 0;
extern struct quota_backend quota_backend_dict;
extern struct quota_backend quota_backend_dirsize;
extern struct quota_backend quota_backend_fs;
extern struct quota_backend quota_backend_maildir;
static struct quota_backend *quota_backends[] = {
#ifdef HAVE_FS_QUOTA
#endif
};
struct quota *quota_init(void)
{
return quota;
}
{
struct quota_setup *const *setup;
}
}
struct quota_setup *
{
struct quota_setup *setup;
const char *backend_name, *p;
unsigned int i;
t_push();
if (p == NULL) {
data = "";
} else {
data = p+1;
}
for (i = 0; i < QUOTA_CLASS_COUNT; i++) {
break;
}
}
t_pop();
return setup;
}
{
struct quota_setup *const *setups;
unsigned int i, count;
for (i = 0; i < count; i++) {
break;
}
}
struct quota_root *const *root;
}
}
struct quota_root *
{
struct quota_root *root;
default_pool, sizeof(void *), 5);
if (hook_quota_root_created != NULL)
return root;
}
{
/* make a copy, since root is freed */
struct mail_storage *const *storage_p;
struct quota_root *const *roots;
unsigned int i, count;
/* remove from all storages */
}
/* remove from setup */
for (i = 0; i < count; i++) {
break;
}
}
}
{
struct quota_setup *const *setups;
struct quota_root *const *roots;
unsigned int i, j, setup_count, root_count;
for (i = 0; i < setup_count; i++) {
for (j = 0; j < root_count; j++) {
continue;
}
}
if (!found && setup_count > 0) {
/* create a new quota root for the storage */
struct quota_root *root;
}
}
{
struct quota_setup *const *setups;
struct quota_root *const *roots;
unsigned int i, j, setup_count, root_count;
for (i = 0; i < setup_count; i++) {
for (j = 0; j < root_count; j++) {
return roots[j];
}
}
return NULL;
}
{
}
{
}
{
}
{
}
{
struct quota_transaction_context *ctx;
struct quota_root_transaction_context *root_ctx;
struct quota_root_iter *iter;
struct quota_root *root;
struct quota_root_transaction_context *, 4);
}
return ctx;
}
{
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
int ret = 0;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
if (t->root->v.transaction_commit(t) < 0)
ret = -1;
}
return ret;
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
t->root->v.transaction_rollback(t);
}
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
int ret = 1;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
if (ret <= 0)
break;
}
return ret;
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
int ret = 1;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
if (ret <= 0)
break;
}
return ret;
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
}
}
{
struct quota_root_transaction_context *const *root_transactions;
unsigned int i, count;
for (i = 0; i < count; i++) {
struct quota_root_transaction_context *t =
}
}
{
return quota->last_error;
}
{
}