dovecot: Added mailbox_list_get_global_temp_prefix()

dovecot at dovecot.org dovecot at dovecot.org
Sat Dec 8 17:11:20 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/a1e271317eb2
changeset: 6959:a1e271317eb2
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Dec 08 17:10:42 2007 +0200
description:
Added mailbox_list_get_global_temp_prefix()

diffstat:

6 files changed, 30 insertions(+), 16 deletions(-)
src/lib-storage/list/mailbox-list-fs.c      |   15 ++++++++-------
src/lib-storage/list/mailbox-list-maildir.c |   17 +++++++++++------
src/lib-storage/list/mailbox-list-maildir.h |    2 +-
src/lib-storage/mailbox-list-private.h      |    2 +-
src/lib-storage/mailbox-list.c              |    7 ++++++-
src/lib-storage/mailbox-list.h              |    3 +++

diffs (145 lines):

diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/list/mailbox-list-fs.c
--- a/src/lib-storage/list/mailbox-list-fs.c	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/list/mailbox-list-fs.c	Sat Dec 08 17:10:42 2007 +0200
@@ -12,6 +12,7 @@
 #include <sys/stat.h>
 
 #define CREATE_MODE 0770 /* umask() should limit it more */
+#define GLOBAL_TEMP_PREFIX ".temp."
 
 extern struct mailbox_list fs_mailbox_list;
 
@@ -26,8 +27,8 @@ static struct mailbox_list *fs_list_allo
 	list->list = fs_mailbox_list;
 	list->list.pool = pool;
 
-	list->temp_prefix = p_strconcat(pool, ".temp.", my_hostname, ".",
-					my_pid, ".", NULL);
+	list->temp_prefix = p_strconcat(pool, GLOBAL_TEMP_PREFIX,
+					my_hostname, ".", my_pid, ".", NULL);
 	return &list->list;
 }
 
@@ -238,11 +239,11 @@ fs_list_get_mailbox_name_status(struct m
 }
 
 static const char *
-fs_list_get_temp_prefix(struct mailbox_list *_list)
-{
-	struct fs_mailbox_list *list = (struct fs_mailbox_list *)_list;
-
-	return list->temp_prefix;
+fs_list_get_temp_prefix(struct mailbox_list *_list, bool global)
+{
+	struct fs_mailbox_list *list = (struct fs_mailbox_list *)_list;
+
+	return global ? GLOBAL_TEMP_PREFIX : list->temp_prefix;
 }
 
 static const char *
diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/list/mailbox-list-maildir.c
--- a/src/lib-storage/list/mailbox-list-maildir.c	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/list/mailbox-list-maildir.c	Sat Dec 08 17:10:42 2007 +0200
@@ -10,6 +10,9 @@
 #include <stdio.h>
 #include <sys/stat.h>
 
+#define MAILDIR_GLOBAL_TEMP_PREFIX "temp."
+#define IMAPDIR_GLOBAL_TEMP_PREFIX ".temp."
+
 extern struct mailbox_list maildir_mailbox_list;
 extern struct mailbox_list imapdir_mailbox_list;
 
@@ -23,8 +26,9 @@ static struct mailbox_list *maildir_list
 	list->list = maildir_mailbox_list;
 	list->list.pool = pool;
 
-	list->temp_prefix =
-		p_strconcat(pool, "temp.", my_hostname, ".", my_pid, ".", NULL);
+	list->global_temp_prefix = MAILDIR_GLOBAL_TEMP_PREFIX;
+	list->temp_prefix = p_strconcat(pool, list->global_temp_prefix,
+					my_hostname, ".", my_pid, ".", NULL);
 	return &list->list;
 }
 
@@ -38,8 +42,9 @@ static struct mailbox_list *imapdir_list
 	list->list = imapdir_mailbox_list;
 	list->list.pool = pool;
 
-	list->temp_prefix = p_strconcat(pool, ".temp.", my_hostname, ".",
-					my_pid, ".", NULL);
+	list->global_temp_prefix = IMAPDIR_GLOBAL_TEMP_PREFIX;
+	list->temp_prefix = p_strconcat(pool, list->global_temp_prefix,
+					my_hostname, ".", my_pid, ".", NULL);
 	return &list->list;
 }
 
@@ -246,12 +251,12 @@ maildir_list_get_mailbox_name_status(str
 }
 
 static const char *
-maildir_list_get_temp_prefix(struct mailbox_list *_list)
+maildir_list_get_temp_prefix(struct mailbox_list *_list, bool global)
 {
 	struct maildir_mailbox_list *list =
 		(struct maildir_mailbox_list *)_list;
 
-	return list->temp_prefix;
+	return global ? list->global_temp_prefix : list->temp_prefix;
 }
 
 static int maildir_list_set_subscribed(struct mailbox_list *_list,
diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/list/mailbox-list-maildir.h
--- a/src/lib-storage/list/mailbox-list-maildir.h	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/list/mailbox-list-maildir.h	Sat Dec 08 17:10:42 2007 +0200
@@ -13,7 +13,7 @@ struct maildir_mailbox_list {
 struct maildir_mailbox_list {
 	struct mailbox_list list;
 
-	const char *temp_prefix;
+	const char *global_temp_prefix, *temp_prefix;
 };
 
 struct mailbox_list_iterate_context *
diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/mailbox-list-private.h
--- a/src/lib-storage/mailbox-list-private.h	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/mailbox-list-private.h	Sat Dec 08 17:10:42 2007 +0200
@@ -25,7 +25,7 @@ struct mailbox_list_vfuncs {
 				       const char *name,
 				       enum mailbox_name_status *status);
 
-	const char *(*get_temp_prefix)(struct mailbox_list *list);
+	const char *(*get_temp_prefix)(struct mailbox_list *list, bool global);
 	const char *(*join_refpattern)(struct mailbox_list *list,
 				       const char *ref, const char *pattern);
 
diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/mailbox-list.c	Sat Dec 08 17:10:42 2007 +0200
@@ -304,7 +304,12 @@ const char *mailbox_list_get_path(struct
 
 const char *mailbox_list_get_temp_prefix(struct mailbox_list *list)
 {
-	return list->v.get_temp_prefix(list);
+	return list->v.get_temp_prefix(list, FALSE);
+}
+
+const char *mailbox_list_get_global_temp_prefix(struct mailbox_list *list)
+{
+	return list->v.get_temp_prefix(list, TRUE);
 }
 
 const char *mailbox_list_join_refpattern(struct mailbox_list *list,
diff -r 7ae8505870c1 -r a1e271317eb2 src/lib-storage/mailbox-list.h
--- a/src/lib-storage/mailbox-list.h	Sat Dec 08 17:10:18 2007 +0200
+++ b/src/lib-storage/mailbox-list.h	Sat Dec 08 17:10:42 2007 +0200
@@ -161,6 +161,9 @@ int mailbox_list_get_mailbox_name_status
 /* Returns a prefix that temporary files should use without conflicting
    with the namespace. */
 const char *mailbox_list_get_temp_prefix(struct mailbox_list *list);
+/* Returns prefix that's common to all get_temp_prefix() calls.
+   Typically this returns either "temp." or ".temp.". */
+const char *mailbox_list_get_global_temp_prefix(struct mailbox_list *list);
 
 /* Returns a single pattern from given reference and pattern. */
 const char *mailbox_list_join_refpattern(struct mailbox_list *list,


More information about the dovecot-cvs mailing list