summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2007-11-10 11:34:01 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2007-11-10 11:34:01 +0000
commit55e0fbee9e680aa2572284e0ed265d28b3400558 (patch)
tree6db72e84d40b5645d752754488edb95279c29e54
parent60ae1cd26803105cd9993711450e1b5877e827af (diff)
downloadmailutils-55e0fbee9e680aa2572284e0ed265d28b3400558.tar.gz
mailutils-55e0fbee9e680aa2572284e0ed265d28b3400558.tar.bz2
* Makefile.am, configure.ac: Add maidag.
* frm/common.c, imap4d/sync.c, libsieve/runtime.c, mh/scan.c: Update declaration of observable actions . * imap4d/select.c, imap4d/status.c, mh/anno.c, mh/forw.c, mh/repl.c: Use mu_mailbox_sync instead of mu_mailbox_save_attributes. * include/mailutils/mailbox.h (mu_mailbox_sync): New function. (mu_mailbox_save_attributes): Deprecated. * include/mailutils/message.h (mu_message_get_qid) (mu_message_set_qid): New functions. * include/mailutils/observer.h (MU_EVT_MESSAGE_APPEND): New event. (mu_observer_set_action_data): New function. Registers action-specific data. (mu_observable_notify): Get call-specific data as the third argument. * include/mailutils/types.hin (mu_message_qid_t): New data type. * libproto/imap/folder.c, libproto/imap/mbox.c, libproto/include/amd.h, libproto/maildir/mbox.c, libproto/mailer/sendmail.c, libproto/mailer/smtp.c, libproto/mbox/mboxscan.c, libproto/mh/mbox.c, libproto/nntp/mbox.c, libproto/pop/mbox.c, mailbox/folder.c, mailbox/mailer.c : Update calls to mu_observable_notify. * libproto/include/mailbox0.h (struct _mu_mailbox): Rename _save_attributes to _sync. * mailbox/amd.c: Likewise (_quick_get_message): New member. (MAILBOX_NOTIFY): Remove. * libproto/include/message0.h (struct _mu_message): New member _get_qid. * libproto/include/observer0.h (struct _mu_observer): New member _action_data. * libproto/mbox/mbox.c: Implement mbox_message_qid. Update calls to mu_observable_notify. (mbox_append_message): Report MU_EVT_MESSAGE_APPEND * mailbox/observer.c (mu_observer_destroy): Call _destroy with _action_data as its third argument. (mu_observer_action, mu_observable_notify): Takes third argument (call data) (mu_observer_set_action, mu_observer_set_destroy): Update signature. (mu_observer_set_action_data): New function. * libproto/mbox/mbox0.h, mail.local/main.c: Minor change. * mail.local/Makefile.am (mail_local_LDADD): Add MU_LIB_MAILER * mailbox/file_stream.c (_file_open): Fix handling of MU_STREAM_APPEND. Remove assertion. * mailbox/mailbox.c (mu_mailbox_quick_get_message): New function (mu_mailbox_sync): New function (mu_mailbox_get_size): Implement brute-force approach in case the mailbox does not provide a method. * mailbox/message.c (mu_message_get_qid, mu_message_set_qid): New function. * maildag/: New directory. A general-purpose mail delivery agent. * maildag/deliver.c: New file. * maildag/lmtp.c: New file. * maildag/maidag.c: New file. * maildag/maidag.h: New file. * maildag/mailtmp.c: New file. * maildag/mailquota.c: New file. * maildag/script.c: New file. * maildag/util.c: New file. * maildag/Makefile.am: New file. * maildag/.cvsignore: New file.
-rw-r--r--ChangeLog70
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac1
-rw-r--r--frm/common.c2
-rw-r--r--imap4d/select.c2
-rw-r--r--imap4d/status.c2
-rw-r--r--imap4d/sync.c2
-rw-r--r--include/mailutils/mailbox.h9
-rw-r--r--include/mailutils/message.h137
-rw-r--r--include/mailutils/observer.h42
-rw-r--r--include/mailutils/types.hin3
-rw-r--r--libproto/imap/folder.c3
-rw-r--r--libproto/imap/mbox.c11
-rw-r--r--libproto/include/amd.h8
-rw-r--r--libproto/include/mailbox0.h8
-rw-r--r--libproto/include/message0.h1
-rw-r--r--libproto/include/observer0.h5
-rw-r--r--libproto/maildir/mbox.c2
-rw-r--r--libproto/mailer/sendmail.c3
-rw-r--r--libproto/mailer/smtp.c3
-rw-r--r--libproto/mbox/mbox.c89
-rw-r--r--libproto/mbox/mbox0.h3
-rw-r--r--libproto/mbox/mboxscan.c16
-rw-r--r--libproto/mh/mbox.c2
-rw-r--r--libproto/nntp/mbox.c10
-rw-r--r--libproto/pop/mbox.c13
-rw-r--r--libsieve/runtime.c2
-rw-r--r--maidag/.cvsignore6
-rw-r--r--maidag/Makefile.am52
-rw-r--r--maidag/deliver.c319
-rw-r--r--maidag/lmtp.c896
-rw-r--r--maidag/maidag.c556
-rw-r--r--maidag/maidag.h157
-rw-r--r--maidag/mailquota.c298
-rw-r--r--maidag/mailtmp.c191
-rw-r--r--maidag/script.c147
-rw-r--r--maidag/util.c180
-rw-r--r--mail.local/Makefile.am1
-rw-r--r--mail.local/main.c5
-rw-r--r--mailbox/amd.c6
-rw-r--r--mailbox/file_stream.c24
-rw-r--r--mailbox/folder.c5
-rw-r--r--mailbox/mailbox.c68
-rw-r--r--mailbox/mailer.c5
-rw-r--r--mailbox/message.c28
-rw-r--r--mailbox/observer.c29
-rw-r--r--mh/anno.c2
-rw-r--r--mh/forw.c2
-rw-r--r--mh/repl.c2
-rw-r--r--mh/scan.c4
-rw-r--r--po/ca.po2934
-rw-r--r--po/es.po2930
-rw-r--r--po/fr.po4178
-rw-r--r--po/pl.po2513
-rw-r--r--po/ro.po4082
-rw-r--r--po/ru.po2532
-rw-r--r--po/rw.po4259
-rw-r--r--po/sv.po2810
-rw-r--r--po/uk.po2516
59 files changed, 19425 insertions, 12762 deletions
diff --git a/ChangeLog b/ChangeLog
index c2dcfde48..328fd0d82 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,73 @@
+2007-11-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * Makefile.am, configure.ac: Add maidag.
+ * frm/common.c, imap4d/sync.c, libsieve/runtime.c,
+ mh/scan.c: Update declaration of observable actions.
+ * imap4d/select.c, imap4d/status.c, mh/anno.c, mh/forw.c,
+ mh/repl.c: Use mu_mailbox_sync instead of
+ mu_mailbox_save_attributes.
+ * include/mailutils/mailbox.h (mu_mailbox_sync): New function
+ (mu_mailbox_save_attributes): Deprecated.
+ * include/mailutils/message.h (mu_message_get_qid)
+ (mu_message_set_qid): New functions.
+ * include/mailutils/observer.h (MU_EVT_MESSAGE_APPEND): New event.
+ (mu_observer_set_action_data): New function. Registers
+ action-specific data.
+ (mu_observable_notify): Get call-specific data as the third
+ argument.
+ * include/mailutils/types.hin (mu_message_qid_t): New data type.
+ * libproto/imap/folder.c, libproto/imap/mbox.c,
+ libproto/include/amd.h, libproto/maildir/mbox.c,
+ libproto/mailer/sendmail.c, libproto/mailer/smtp.c,
+ libproto/mbox/mboxscan.c, libproto/mh/mbox.c,
+ libproto/nntp/mbox.c, libproto/pop/mbox.c, mailbox/folder.c,
+ mailbox/mailer.c : Update calls to mu_observable_notify.
+ * libproto/include/mailbox0.h (struct _mu_mailbox): Rename
+ _save_attributes to _sync.
+ * mailbox/amd.c: Likewise.
+ (_quick_get_message): New member.
+ (MAILBOX_NOTIFY): Remove.
+ * libproto/include/message0.h (struct _mu_message): New member
+ _get_qid.
+ * libproto/include/observer0.h (struct _mu_observer): New member
+ _action_data.
+ * libproto/mbox/mbox.c: Implement mbox_message_qid. Update calls
+ to mu_observable_notify.
+ (mbox_append_message): Report MU_EVT_MESSAGE_APPEND.
+ * mailbox/observer.c (mu_observer_destroy): Call _destroy with
+ _action_data as its third argument.
+ (mu_observer_action, mu_observable_notify): Takes third argument
+ (call data)
+ (mu_observer_set_action, mu_observer_set_destroy): Update signature.
+ (mu_observer_set_action_data): New function.
+
+ * libproto/mbox/mbox0.h, mail.local/main.c: Minor change
+
+ * mail.local/Makefile.am (mail_local_LDADD): Add MU_LIB_MAILER
+
+ * mailbox/file_stream.c (_file_open): Fix handling of
+ MU_STREAM_APPEND. Remove assertion.
+
+ * mailbox/mailbox.c (mu_mailbox_quick_get_message): New function
+ (mu_mailbox_sync): New function.
+ (mu_mailbox_get_size): Implement brute-force approach in case the
+ mailbox does not provide a method.
+
+ * mailbox/message.c (mu_message_get_qid, mu_message_set_qid): New
+ function.
+
+ * maildag/: New directory. A general-purpose mail delivery agent.
+ * maildag/deliver.c: New file.
+ * maildag/lmtp.c: New file.
+ * maildag/maidag.c: New file.
+ * maildag/maidag.h: New file.
+ * maildag/mailtmp.c: New file.
+ * maildag/mailquota.c: New file.
+ * maildag/script.c: New file.
+ * maildag/util.c: New file.
+ * maildag/Makefile.am: New file.
+ * maildag/.cvsignore: New file.
+
2007-11-08 Sergey Poznyakoff <gray@gnu.org.ua>
* mailbox/cfg_lexer.c: Do not use obstack.
diff --git a/Makefile.am b/Makefile.am
index 6ed251593..f1b70f00b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -39,6 +39,7 @@ SUBDIRS = \
frm\
pop3d\
imap4d\
+ maidag\
mail\
sieve\
scripts\
diff --git a/configure.ac b/configure.ac
index 56c87c073..739734621 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1169,6 +1169,7 @@ AC_CONFIG_FILES([Makefile
libproto/include/Makefile
libsieve/Makefile
libsieve/extensions/Makefile
+ maidag/Makefile
mail/Makefile
mail/testsuite/Makefile
mail.local/Makefile
diff --git a/frm/common.c b/frm/common.c
index 4ec73c577..9ce88791d 100644
--- a/frm/common.c
+++ b/frm/common.c
@@ -421,7 +421,7 @@ static size_t msg_index; /* Index (1-based) of the current
/* Observable action is being called on discovery of each message. */
/* FIXME: The format of the display is poorly done, please correct. */
static int
-action (mu_observer_t o, size_t type)
+action (mu_observer_t o, size_t type, void *data, void *action_data)
{
int status;
diff --git a/imap4d/select.c b/imap4d/select.c
index c160d458c..236cdbfae 100644
--- a/imap4d/select.c
+++ b/imap4d/select.c
@@ -49,7 +49,7 @@ imap4d_select0 (struct imap4d_command *command, char *arg, int flags)
currently selected mailbox without doing an expunge. */
if (mbox)
{
- mu_mailbox_save_attributes (mbox);
+ mu_mailbox_sync (mbox);
mu_mailbox_close (mbox);
mu_mailbox_destroy (&mbox);
/* Destroy the old uid table. */
diff --git a/imap4d/status.c b/imap4d/status.c
index 5e8f03408..d38418ca9 100644
--- a/imap4d/status.c
+++ b/imap4d/status.c
@@ -77,7 +77,7 @@ imap4d_status (struct imap4d_command *command, char *arg)
/* We may be opening the current mailbox, so make sure the attributes are
preserved */
- mu_mailbox_save_attributes (mbox);
+ mu_mailbox_sync (mbox);
status = mu_mailbox_create_default (&smbox, mailbox_name);
if (status == 0)
diff --git a/imap4d/sync.c b/imap4d/sync.c
index 8fdd257b2..51d2aa808 100644
--- a/imap4d/sync.c
+++ b/imap4d/sync.c
@@ -276,7 +276,7 @@ imap4d_sync_flags (size_t msgno)
static int mailbox_corrupt;
static int
-action (mu_observer_t observer, size_t type)
+action (mu_observer_t observer, size_t type, void *data, void *action_data)
{
switch (type)
{
diff --git a/include/mailutils/mailbox.h b/include/mailutils/mailbox.h
index 64ad7f8e1..773b0d966 100644
--- a/include/mailutils/mailbox.h
+++ b/include/mailutils/mailbox.h
@@ -52,13 +52,18 @@ extern int mu_mailbox_uidvalidity (mu_mailbox_t, unsigned long *);
extern int mu_mailbox_uidnext (mu_mailbox_t, size_t *);
/* Messages. */
-extern int mu_mailbox_get_message (mu_mailbox_t, size_t msgno, mu_message_t *);
+extern int mu_mailbox_get_message (mu_mailbox_t, size_t msgno,
+ mu_message_t *);
+extern int mu_mailbox_quick_get_message(mu_mailbox_t, mu_message_qid_t,
+ mu_message_t *);
extern int mu_mailbox_append_message (mu_mailbox_t, mu_message_t);
extern int mu_mailbox_messages_count (mu_mailbox_t, size_t *);
extern int mu_mailbox_messages_recent (mu_mailbox_t, size_t *);
extern int mu_mailbox_message_unseen (mu_mailbox_t, size_t *);
extern int mu_mailbox_expunge (mu_mailbox_t);
-extern int mu_mailbox_save_attributes (mu_mailbox_t);
+extern int mu_mailbox_sync (mu_mailbox_t);
+extern int mu_mailbox_save_attributes (mu_mailbox_t)
+ __attribute__ ((deprecated));
/* Update and scanning. */
extern int mu_mailbox_get_size (mu_mailbox_t, mu_off_t *size);
diff --git a/include/mailutils/message.h b/include/mailutils/message.h
index 37ef9cc94..a8482f340 100644
--- a/include/mailutils/message.h
+++ b/include/mailutils/message.h
@@ -29,89 +29,102 @@ extern "C" {
/* A message is considered to be a container for:
mu_header_t, mu_body_t, and its mu_attribute_t. */
-extern int mu_message_create (mu_message_t *, void *owner);
-extern void mu_message_destroy (mu_message_t *, void *owner);
+extern int mu_message_create (mu_message_t *, void *owner);
+extern void mu_message_destroy (mu_message_t *, void *owner);
-extern int mu_message_create_copy (mu_message_t *to, mu_message_t from);
+extern int mu_message_create_copy (mu_message_t *to, mu_message_t from);
-extern void * mu_message_get_owner (mu_message_t);
-extern int mu_message_is_modified (mu_message_t);
-extern int mu_message_clear_modified (mu_message_t);
-extern int mu_message_get_mailbox (mu_message_t, mu_mailbox_t *);
-extern int mu_message_set_mailbox (mu_message_t, mu_mailbox_t, void *);
+extern void * mu_message_get_owner (mu_message_t);
+extern int mu_message_is_modified (mu_message_t);
+extern int mu_message_clear_modified (mu_message_t);
+extern int mu_message_get_mailbox (mu_message_t, mu_mailbox_t *);
+extern int mu_message_set_mailbox (mu_message_t, mu_mailbox_t, void *);
-extern int mu_message_ref (mu_message_t);
-#define mu_message_unref(msg) mu_message_destroy (&msg, NULL)
+extern int mu_message_ref (mu_message_t);
+#define mu_message_unref(msg) mu_message_destroy (&msg, NULL)
-extern int mu_message_get_envelope (mu_message_t, mu_envelope_t *);
-extern int mu_message_set_envelope (mu_message_t, mu_envelope_t, void *);
+extern int mu_message_get_envelope (mu_message_t, mu_envelope_t *);
+extern int mu_message_set_envelope (mu_message_t, mu_envelope_t, void *);
-extern int mu_message_get_header (mu_message_t, mu_header_t *);
-extern int mu_message_set_header (mu_message_t, mu_header_t, void *);
+extern int mu_message_get_header (mu_message_t, mu_header_t *);
+extern int mu_message_set_header (mu_message_t, mu_header_t, void *);
-extern int mu_message_get_body (mu_message_t, mu_body_t *);
-extern int mu_message_set_body (mu_message_t, mu_body_t, void *);
+extern int mu_message_get_body (mu_message_t, mu_body_t *);
+extern int mu_message_set_body (mu_message_t, mu_body_t, void *);
-extern int mu_message_get_stream (mu_message_t, mu_stream_t *);
-extern int mu_message_set_stream (mu_message_t, mu_stream_t, void *);
+extern int mu_message_get_stream (mu_message_t, mu_stream_t *);
+extern int mu_message_set_stream (mu_message_t, mu_stream_t, void *);
-extern int mu_message_get_attribute (mu_message_t, mu_attribute_t *);
-extern int mu_message_set_attribute (mu_message_t, mu_attribute_t, void *);
+extern int mu_message_get_attribute (mu_message_t, mu_attribute_t *);
+extern int mu_message_set_attribute (mu_message_t, mu_attribute_t, void *);
-extern int mu_message_get_observable (mu_message_t, mu_observable_t *);
+extern int mu_message_get_observable (mu_message_t, mu_observable_t *);
-extern int mu_message_is_multipart (mu_message_t, int *);
+extern int mu_message_is_multipart (mu_message_t, int *);
extern int mu_message_set_is_multipart (mu_message_t,
- int (*_is_multipart) (mu_message_t, int *),
- void *);
+ int (*_is_multipart) (mu_message_t,
+ int *),
+ void *);
-extern int mu_message_size (mu_message_t, size_t *);
-extern int mu_message_set_size (mu_message_t,
- int (*_size) (mu_message_t, size_t *),
- void *owner);
+extern int mu_message_size (mu_message_t, size_t *);
+extern int mu_message_set_size (mu_message_t,
+ int (*_size) (mu_message_t, size_t *),
+ void *owner);
-extern int mu_message_lines (mu_message_t, size_t *);
-extern int mu_message_set_lines (mu_message_t,
- int (*_lines) (mu_message_t, size_t *),
- void *owner);
+extern int mu_message_lines (mu_message_t, size_t *);
+extern int mu_message_set_lines (mu_message_t,
+ int (*_lines) (mu_message_t, size_t *),
+ void *owner);
-extern int mu_message_get_num_parts (mu_message_t, size_t *nparts);
+extern int mu_message_get_num_parts (mu_message_t, size_t *nparts);
extern int mu_message_set_get_num_parts (mu_message_t,
- int (*_get_num_parts) (mu_message_t,
- size_t *),
- void *owner);
-
-extern int mu_message_get_part (mu_message_t, size_t, mu_message_t *);
-extern int mu_message_set_get_part (mu_message_t,
- int (*_get_part) (mu_message_t, size_t,
- mu_message_t *),
- void *owner);
-
-extern int mu_message_get_uidl (mu_message_t, char *, size_t, size_t *);
-extern int mu_message_set_uidl (mu_message_t,
- int (*_get_uidl) (mu_message_t, char *,
- size_t, size_t *),
- void *owner);
-extern int mu_message_get_uid (mu_message_t, size_t *);
-extern int mu_message_set_uid (mu_message_t,
- int (*_get_uid) (mu_message_t, size_t *),
- void *owner);
-
+ int (*_get_num_parts) (mu_message_t,
+ size_t *),
+ void *owner);
+
+extern int mu_message_get_part (mu_message_t, size_t, mu_message_t *);
+extern int mu_message_set_get_part (mu_message_t,
+ int (*_get_part) (mu_message_t, size_t,
+ mu_message_t *),
+ void *owner);
+
+extern int mu_message_get_uidl (mu_message_t, char *, size_t, size_t *);
+extern int mu_message_set_uidl (mu_message_t,
+ int (*_get_uidl) (mu_message_t,
+ char *,
+ size_t, size_t *),
+ void *owner);
+
+extern int mu_message_get_uid (mu_message_t, size_t *);
+extern int mu_message_set_uid (mu_message_t,
+ int (*_get_uid) (mu_message_t,
+ size_t *),
+ void *owner);
+
+extern int mu_message_get_qid (mu_message_t, mu_message_qid_t *);
+extern int mu_message_set_qid (mu_message_t,
+ int (*_get_qid) (mu_message_t,
+ mu_message_qid_t *),
+ void *owner);
+
/* misc functions */
extern int mu_message_create_attachment (const char *content_type,
- const char *encoding,
- const char *filename,
- mu_message_t *newmsg);
+ const char *encoding,
+ const char *filename,
+ mu_message_t *newmsg);
extern int mu_message_save_attachment (mu_message_t msg,
- const char *filename, void **data);
-extern int mu_message_encapsulate (mu_message_t msg, mu_message_t *newmsg, void **data);
-extern int mu_message_unencapsulate (mu_message_t msg, mu_message_t *newmsg, void **data);
-
-extern int mu_message_get_attachment_name (mu_message_t, char *name, size_t bufsz, size_t* sz);
+ const char *filename, void **data);
+extern int mu_message_encapsulate (mu_message_t msg, mu_message_t *newmsg,
+ void **data);
+extern int mu_message_unencapsulate (mu_message_t msg, mu_message_t *newmsg,
+ void **data);
+
+extern int mu_message_get_attachment_name (mu_message_t, char *name,
+ size_t bufsz, size_t* sz);
extern int mu_message_aget_attachment_name (mu_message_t, char **name);
extern int mu_message_save_to_mailbox (mu_message_t msg, mu_ticket_t ticket,
- mu_debug_t debug, const char *toname);
+ mu_debug_t debug, const char *toname);
extern int mu_stream_to_message (mu_stream_t instream, mu_message_t *pmsg);
diff --git a/include/mailutils/observer.h b/include/mailutils/observer.h
index f4f8f3f22..8e6c537fe 100644
--- a/include/mailutils/observer.h
+++ b/include/mailutils/observer.h
@@ -24,36 +24,42 @@
#ifdef __cplusplus
extern "C" {
#endif
-
-#define MU_EVT_MAILBOX_DESTROY 0x001
-#define MU_EVT_FOLDER_DESTROY 0x002
-#define MU_EVT_MAILER_DESTROY 0x004
-#define MU_EVT_MESSAGE_DESTROY 0x008
-#define MU_EVT_MESSAGE_ADD 0x010
-#define MU_EVT_MAILBOX_PROGRESS 0x020
-#define MU_EVT_AUTHORITY_FAILED 0x030
-#define MU_EVT_MAILBOX_CORRUPT 0x040
-#define MU_EVT_MAILER_MESSAGE_SENT 0x080
-
+ /* Call data type: */
+#define MU_EVT_MAILBOX_DESTROY 0x001 /* mu_mailbox_t */
+#define MU_EVT_FOLDER_DESTROY 0x002 /* mu_folder_t */
+#define MU_EVT_MAILER_DESTROY 0x004 /* mu_mailer_t */
+#define MU_EVT_MESSAGE_DESTROY 0x008 /* mu_message_t */
+#define MU_EVT_MESSAGE_ADD 0x010 /* size_t *: FIXME */
+#define MU_EVT_MAILBOX_PROGRESS 0x020 /* NULL: FIXME? */
+#define MU_EVT_AUTHORITY_FAILED 0x030 /* NULL */
+#define MU_EVT_MAILBOX_CORRUPT 0x040 /* mu_mailbox_t */
+#define MU_EVT_MAILER_MESSAGE_SENT 0x080 /* mu_message_t */
+#define MU_EVT_MESSAGE_APPEND 0x100 /* mu_message_qid_t: FIXME */
+
#define MU_OBSERVER_NO_CHECK 1
extern int mu_observer_create (mu_observer_t *, void *owner);
extern void mu_observer_destroy (mu_observer_t *, void *owner);
-extern void * mu_observer_get_owner (mu_observer_t);
-extern int mu_observer_action (mu_observer_t, size_t type);
+extern void * mu_observer_get_owner(mu_observer_t);
+extern int mu_observer_action (mu_observer_t, size_t type, void *data);
extern int mu_observer_set_action (mu_observer_t,
- int (*_action) (mu_observer_t, size_t),
- void *owner);
+ int (*_action) (mu_observer_t,
+ size_t, void *, void *),
+ void *owner);
+extern int mu_observer_set_action_data (mu_observer_t, void *data,
+ void *owner);
extern int mu_observer_set_destroy (mu_observer_t,
- int (*_destroy) (mu_observer_t), void *owner);
+ int (*_destroy) (mu_observer_t, void *),
+ void *owner);
extern int mu_observer_set_flags (mu_observer_t, int flags);
extern int mu_observable_create (mu_observable_t *, void *owner);
extern void mu_observable_destroy (mu_observable_t *, void *owner);
extern void * mu_observable_get_owner (mu_observable_t);
-extern int mu_observable_attach (mu_observable_t, size_t type, mu_observer_t observer);
+extern int mu_observable_attach (mu_observable_t, size_t type,
+ mu_observer_t observer);
extern int mu_observable_detach (mu_observable_t, mu_observer_t observer);
-extern int mu_observable_notify (mu_observable_t, int type);
+extern int mu_observable_notify (mu_observable_t, int type, void *data);
#ifdef __cplusplus
}
diff --git a/include/mailutils/types.hin b/include/mailutils/types.hin
index fc4762fa4..e734b739d 100644
--- a/include/mailutils/types.hin
+++ b/include/mailutils/types.hin
@@ -1,4 +1,4 @@
-/* GNU Mailutils -- a suite of utilities for electronic mail
+/* GNU Mailutils -- a suite of utilities for electronic mail -*- c -*-
Copyright (C) 1999, 2000, 2001, 2005, 2007 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
@@ -99,6 +99,7 @@ typedef struct _mu_url *mu_url_t;
typedef struct _mu_wicket *mu_wicket_t;
typedef void *mu_transport_t;
typedef struct _mu_assoc *mu_assoc_t;
+typedef char *mu_message_qid_t;
#define MU_FOLDER_ATTRIBUTE_DIRECTORY 0x001
#define MU_FOLDER_ATTRIBUTE_FILE 0x002
diff --git a/libproto/imap/folder.c b/libproto/imap/folder.c
index 7d2bcd294..534003046 100644
--- a/libproto/imap/folder.c
+++ b/libproto/imap/folder.c