[dovecot-cvs] dovecot/src/lib-storage proxy-mail-storage.c,NONE,1.1
proxy-mail-storage.h,NONE,1.1 proxy-mail.c,NONE,1.1
proxy-mail.h,NONE,1.1 proxy-mailbox.c,NONE,1.1
proxy-mailbox.h,NONE,1.1 Makefile.am,1.7,1.8
cras at procontrol.fi
cras at procontrol.fi
Sat Jul 26 22:23:12 EEST 2003
- Previous message: [dovecot-cvs]
dovecot/src/imap client.c,1.32,1.33 common.h,1.10,1.11
main.c,1.39,1.40
- Next message: [dovecot-cvs]
dovecot/src/imap imap-expunge.c,NONE,1.1 imap-expunge.h,NONE,1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-storage
In directory danu:/tmp/cvs-serv29912
Modified Files:
Makefile.am
Added Files:
proxy-mail-storage.c proxy-mail-storage.h proxy-mail.c
proxy-mail.h proxy-mailbox.c proxy-mailbox.h
Log Message:
Added proxy classes for use with modules.
--- NEW FILE: proxy-mail-storage.c ---
/* Copyright (C) 2003 Timo Sirainen */
#include "lib.h"
#include "proxy-mail-storage.h"
static void _free(struct mail_storage *storage)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->free(s->storage);
}
static void _set_callbacks(struct mail_storage *storage,
struct mail_storage_callbacks *callbacks,
void *context)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
s->storage->set_callbacks(s->storage, callbacks, context);
}
static struct mailbox *_open_mailbox(struct mail_storage *storage,
const char *name,
enum mailbox_open_flags flags)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->open_mailbox(s->storage, name, flags);
}
static int _create_mailbox(struct mail_storage *storage, const char *name,
int only_hierarchy)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->create_mailbox(s->storage, name, only_hierarchy);
}
static int _delete_mailbox(struct mail_storage *storage, const char *name)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->delete_mailbox(s->storage, name);
}
static int _rename_mailbox(struct mail_storage *storage, const char *oldname,
const char *newname)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->rename_mailbox(s->storage, oldname, newname);
}
static struct mailbox_list_context *
_list_mailbox_init(struct mail_storage *storage, const char *mask,
enum mailbox_list_flags flags, int *sorted)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->list_mailbox_init(s->storage, mask, flags, sorted);
}
static int _set_subscribed(struct mail_storage *storage,
const char *name, int set)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->set_subscribed(s->storage, name, set);
}
static int _get_mailbox_name_status(struct mail_storage *storage,
const char *name,
enum mailbox_name_status *status)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->get_mailbox_name_status(s->storage, name, status);
}
static const char *_get_last_error(struct mail_storage *storage,
int *syntax_error)
{
struct proxy_mail_storage *s = (struct proxy_mail_storage *) storage;
return s->storage->get_last_error(s->storage, syntax_error);
}
void proxy_mail_storage_init(struct proxy_mail_storage *proxy,
struct mail_storage *storage)
{
struct mail_storage *ps = &proxy->proxy_storage;
proxy->storage = storage;
ps->name = storage->name;
ps->hierarchy_sep = storage->hierarchy_sep;
ps->create = storage->create;
ps->autodetect = storage->autodetect;
ps->list_mailbox_deinit = storage->list_mailbox_deinit;
ps->list_mailbox_next = storage->list_mailbox_next;
ps->free = _free;
ps->set_callbacks = _set_callbacks;
ps->open_mailbox = _open_mailbox;
ps->create_mailbox = _create_mailbox;
ps->delete_mailbox = _delete_mailbox;
ps->rename_mailbox = _rename_mailbox;
ps->list_mailbox_init = _list_mailbox_init;
ps->set_subscribed = _set_subscribed;
ps->get_mailbox_name_status = _get_mailbox_name_status;
ps->get_last_error = _get_last_error;
}
--- NEW FILE: proxy-mail-storage.h ---
#ifndef __PROXY_MAIL_STORAGE_H
#define __PROXY_MAIL_STORAGE_H
#include "mail-storage.h"
struct proxy_mail_storage {
struct mail_storage proxy_storage;
struct mail_storage *storage;
};
void proxy_mail_storage_init(struct proxy_mail_storage *proxy,
struct mail_storage *storage);
#endif
--- NEW FILE: proxy-mail.c ---
/* Copyright (C) 2003 Timo Sirainen */
#include "lib.h"
#include "proxy-mail.h"
static const struct mail_full_flags *_get_flags(struct mail *mail)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_flags(p->mail);
}
static const struct message_part *_get_parts(struct mail *mail)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_parts(p->mail);
}
static time_t _get_received_date(struct mail *mail)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_received_date(p->mail);
}
static time_t _get_date(struct mail *mail, int *timezone)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_date(p->mail, timezone);
}
static uoff_t _get_size(struct mail *mail)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_size(p->mail);
}
static const char *_get_header(struct mail *mail, const char *field)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_header(p->mail, field);
}
static const struct message_address *
_get_address(struct mail *mail, const char *field)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_address(p->mail, field);
}
static const char *_get_first_mailbox(struct mail *mail, const char *field)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_first_mailbox(p->mail, field);
}
static struct istream *_get_stream(struct mail *mail,
struct message_size *hdr_size,
struct message_size *body_size)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_stream(p->mail, hdr_size, body_size);
}
static const char *_get_special(struct mail *mail, enum mail_fetch_field field)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->get_special(p->mail, field);
}
static int _update_flags(struct mail *mail, const struct mail_full_flags *flags,
enum modify_type modify_type)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->update_flags(p->mail, flags, modify_type);
}
static int _copy(struct mail *mail, struct mail_copy_context *ctx)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->copy(p->mail, ctx);
}
static int _expunge(struct mail *mail, struct mail_expunge_context *ctx,
unsigned int *seq_r, int notify)
{
struct proxy_mail *p = (struct proxy_mail *) mail;
return p->mail->expunge(p->mail, ctx, seq_r, notify);
}
void proxy_mail_init(struct proxy_mail *proxy, struct mail *mail)
{
struct mail *pm = &proxy->proxy_mail;
proxy->mail = mail;
pm->box = mail->box;
pm->get_flags = _get_flags;
pm->get_parts = _get_parts;
pm->get_received_date = _get_received_date;
pm->get_date = _get_date;
pm->get_size = _get_size;
pm->get_header = _get_header;
pm->get_address = _get_address;
pm->get_first_mailbox = _get_first_mailbox;
pm->get_stream = _get_stream;
pm->get_special = _get_special;
pm->update_flags = _update_flags;
pm->copy = _copy;
pm->expunge = _expunge;
}
void proxy_mail_next(struct proxy_mail *proxy)
{
proxy->proxy_mail.seq = proxy->mail->seq;
proxy->proxy_mail.uid = proxy->mail->uid;
proxy->proxy_mail.has_nuls = proxy->mail->has_nuls;
proxy->proxy_mail.has_no_nuls = proxy->mail->has_no_nuls;
}
--- NEW FILE: proxy-mail.h ---
#ifndef __PROXY_MAIL_H
#define __PROXY_MAIL_H
#include "mail-storage.h"
struct proxy_mail {
struct mail proxy_mail;
struct mail *mail;
};
void proxy_mail_init(struct proxy_mail *proxy, struct mail *mail);
void proxy_mail_next(struct proxy_mail *proxy);
#endif
--- NEW FILE: proxy-mailbox.c ---
/* Copyright (C) 2003 Timo Sirainen */
#include "lib.h"
#include "proxy-mailbox.h"
static int _is_readonly(struct mailbox *box)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->is_readonly(p->box);
}
static int _allow_new_custom_flags(struct mailbox *box)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->allow_new_custom_flags(p->box);
}
static int _close(struct mailbox *box)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->close(p->box);
}
static int _lock(struct mailbox *box, enum mailbox_lock_type lock_type)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->lock(p->box, lock_type);
}
static int _get_status(struct mailbox *box, enum mailbox_status_items items,
struct mailbox_status *status)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->get_status(p->box, items, status);
}
static int _sync(struct mailbox *box, enum mail_sync_flags flags)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->sync(p->box, flags);
}
static void _auto_sync(struct mailbox *box, enum mailbox_sync_type sync_type,
unsigned int min_newmail_notify_interval)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
p->box->auto_sync(p->box, sync_type, min_newmail_notify_interval);
}
static struct mail_fetch_context *
_fetch_init(struct mailbox *box, enum mail_fetch_field wanted_fields,
const char *messageset, int uidset)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->fetch_init(p->box, wanted_fields, messageset, uidset);
}
static struct mail *_fetch_uid(struct mailbox *box, unsigned int uid,
enum mail_fetch_field wanted_fields)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->fetch_uid(p->box, uid, wanted_fields);
}
static struct mail *_fetch_seq(struct mailbox *box, unsigned int seq,
enum mail_fetch_field wanted_fields)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->fetch_uid(p->box, seq, wanted_fields);
}
static int _search_get_sorting(struct mailbox *box,
enum mail_sort_type *sort_program)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->search_get_sorting(p->box, sort_program);
}
static struct mail_search_context *
_search_init(struct mailbox *box, const char *charset,
struct mail_search_arg *args,
const enum mail_sort_type *sort_program,
enum mail_fetch_field wanted_fields,
const char *const wanted_headers[])
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->search_init(p->box, charset, args, sort_program,
wanted_fields, wanted_headers);
}
static struct mail_save_context *
_save_init(struct mailbox *box, int transaction)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->save_init(p->box, transaction);
}
static struct mail_copy_context *_copy_init(struct mailbox *box)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->copy_init(p->box);
}
static struct mail_expunge_context *
_expunge_init(struct mailbox *box, enum mail_fetch_field wanted_fields,
int expunge_all)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->expunge_init(p->box, wanted_fields, expunge_all);
}
static int _is_inconsistency_error(struct mailbox *box)
{
struct proxy_mailbox *p = (struct proxy_mailbox *) box;
return p->box->is_inconsistency_error(p->box);
}
void proxy_mailbox_init(struct proxy_mailbox *proxy, struct mailbox *box)
{
struct mailbox *pb = &proxy->proxy_box;
proxy->box = box;
pb->name = box->name;
pb->storage = box->storage;
pb->fetch_deinit = box->fetch_deinit;
pb->fetch_next = box->fetch_next;
pb->search_deinit = box->search_deinit;
pb->search_next = box->search_next;
pb->save_deinit = box->save_deinit;
pb->save_next = box->save_next;
pb->copy_deinit = box->copy_deinit;
pb->expunge_deinit = box->expunge_deinit;
pb->expunge_fetch_next = box->expunge_fetch_next;
pb->is_readonly = _is_readonly;
pb->allow_new_custom_flags = _allow_new_custom_flags;
pb->close = _close;
pb->lock = _lock;
pb->get_status = _get_status;
pb->sync = _sync;
pb->auto_sync = _auto_sync;
pb->fetch_init = _fetch_init;
pb->fetch_uid = _fetch_uid;
pb->fetch_seq = _fetch_seq;
pb->search_get_sorting = _search_get_sorting;
pb->search_init = _search_init;
pb->save_init = _save_init;
pb->copy_init = _copy_init;
pb->expunge_init = _expunge_init;
pb->is_inconsistency_error = _is_inconsistency_error;
}
--- NEW FILE: proxy-mailbox.h ---
#ifndef __PROXY_MAILBOX_H
#define __PROXY_MAILBOX_H
#include "mail-storage.h"
struct proxy_mailbox {
struct mailbox proxy_box;
struct mailbox *box;
};
void proxy_mailbox_init(struct proxy_mailbox *proxy, struct mailbox *box);
#endif
Index: Makefile.am
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- Makefile.am 7 May 2003 12:06:47 -0000 1.7
+++ Makefile.am 26 Jul 2003 18:23:10 -0000 1.8
@@ -10,9 +10,15 @@
libstorage_a_SOURCES = \
mail-save.c \
mail-search.c \
- mail-storage.c
+ mail-storage.c \
+ proxy-mail.c \
+ proxy-mail-storage.c \
+ proxy-mailbox.c
noinst_HEADERS = \
mail-save.h \
mail-search.h \
- mail-storage.h
+ mail-storage.h \
+ proxy-mail.h \
+ proxy-mail-storage.h \
+ proxy-mailbox.h
- Previous message: [dovecot-cvs]
dovecot/src/imap client.c,1.32,1.33 common.h,1.10,1.11
main.c,1.39,1.40
- Next message: [dovecot-cvs]
dovecot/src/imap imap-expunge.c,NONE,1.1 imap-expunge.h,NONE,1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list