[dovecot-cvs] dovecot/src/lib-storage/subscription-file Makefile.am, 1.1.1.1, 1.2 subscription-file.c, 1.22, 1.23 subscription-file.h, 1.6, 1.7

cras at procontrol.fi cras at procontrol.fi
Tue Apr 27 23:25:57 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/subscription-file
In directory talvi:/tmp/cvs-serv29236/src/lib-storage/subscription-file

Modified Files:
	Makefile.am subscription-file.c subscription-file.h 
Log Message:
importing new index code. mbox still broken.



Index: Makefile.am
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/subscription-file/Makefile.am,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- Makefile.am	9 Aug 2002 09:16:03 -0000	1.1.1.1
+++ Makefile.am	27 Apr 2004 20:25:55 -0000	1.2
@@ -3,7 +3,7 @@
 INCLUDES = \
 	-I$(top_srcdir)/src/lib \
 	-I$(top_srcdir)/src/lib-storage \
-	-I$(top_srcdir)/src/lib-imap
+	-I$(top_srcdir)/src/lib-mail
 
 libstorage_subscription_file_a_SOURCES = \
 	subscription-file.c

Index: subscription-file.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/subscription-file/subscription-file.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- subscription-file.c	20 Nov 2003 16:20:55 -0000	1.22
+++ subscription-file.c	27 Apr 2004 20:25:55 -0000	1.23
@@ -4,13 +4,12 @@
 #include "istream.h"
 #include "ostream.h"
 #include "file-dotlock.h"
-#include "mail-storage.h"
+#include "mail-storage-private.h"
 #include "subscription-file.h"
 
 #include <unistd.h>
 #include <fcntl.h>
 
-#define SUBSCRIPTION_FILE_NAME ".subscriptions"
 #define MAX_MAILBOX_LENGTH PATH_MAX
 
 #define SUBSCRIPTION_FILE_LOCK_TIMEOUT 120
@@ -27,19 +26,18 @@
 	int failed;
 };
 
-static int subsfile_set_syscall_error(struct mail_storage *storage,
-				      const char *function, const char *path)
+static void subsfile_set_syscall_error(struct mail_storage *storage,
+				       const char *function, const char *path)
 {
 	i_assert(function != NULL);
 
-	if (errno == EACCES) {
+	if (errno == EACCES)
 		mail_storage_set_error(storage, "Permission denied");
-		return FALSE;
+	else {
+		mail_storage_set_critical(storage,
+			"%s failed with subscription file %s: %m",
+			function, path);
 	}
-
-	mail_storage_set_critical(storage,
-		"%s failed with subscription file %s: %m", function, path);
-	return FALSE;
 }
 
 static const char *next_line(struct mail_storage *storage, const char *path,
@@ -69,10 +67,10 @@
 	return line;
 }
 
-int subsfile_set_subscribed(struct mail_storage *storage,
+int subsfile_set_subscribed(struct mail_storage *storage, const char *path,
 			    const char *name, int set)
 {
-	const char *path, *line;
+	const char *line;
 	struct istream *input;
 	struct ostream *output;
 	int fd_in, fd_out, found, failed = FALSE;
@@ -80,9 +78,6 @@
 	if (strcasecmp(name, "INBOX") == 0)
 		name = "INBOX";
 
-	path = t_strconcat(storage->control_dir != NULL ?
-			   storage->control_dir : storage->dir,
-			   "/" SUBSCRIPTION_FILE_NAME, NULL);
 	/* FIXME: set lock notification callback */
 	fd_out = file_dotlock_open(path, NULL, SUBSCRIPTION_FILE_LOCK_TIMEOUT,
 				   SUBSCRIPTION_FILE_CHANGE_TIMEOUT,
@@ -96,14 +91,14 @@
 			subsfile_set_syscall_error(storage,
 						   "file_dotlock_open()", path);
 		}
-		return FALSE;
+		return -1;
 	}
 
 	fd_in = open(path, O_RDONLY);
 	if (fd_in == -1 && errno != ENOENT) {
 		subsfile_set_syscall_error(storage, "open()", path);
 		file_dotlock_delete(path, fd_out);
-		return FALSE;
+		return -1;
 	}
 
 	input = fd_in == -1 ? NULL :
@@ -154,20 +149,16 @@
 			failed = TRUE;
 		}
 	}
-	return !failed;
+	return failed ? -1 : 0;
 }
 
 struct subsfile_list_context *
-subsfile_list_init(struct mail_storage *storage)
+subsfile_list_init(struct mail_storage *storage, const char *path)
 {
 	struct subsfile_list_context *ctx;
 	pool_t pool;
-	const char *path;
 	int fd;
 
-	path = t_strconcat(storage->control_dir != NULL ?
-			   storage->control_dir : storage->dir,
-			   "/" SUBSCRIPTION_FILE_NAME, NULL);
 	fd = open(path, O_RDONLY);
 	if (fd == -1 && errno != ENOENT) {
 		subsfile_set_syscall_error(storage, "open()", path);
@@ -194,7 +185,7 @@
 		i_stream_unref(ctx->input);
 	pool_unref(ctx->pool);
 
-	return !failed;
+	return failed ? -1 : 0;
 }
 
 const char *subsfile_list_next(struct subsfile_list_context *ctx)

Index: subscription-file.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/subscription-file/subscription-file.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- subscription-file.h	19 Feb 2003 19:55:27 -0000	1.6
+++ subscription-file.h	27 Apr 2004 20:25:55 -0000	1.7
@@ -5,7 +5,7 @@
 
 /* Initialize new subscription file listing. Returns NULL if failed. */
 struct subsfile_list_context *
-subsfile_list_init(struct mail_storage *storage);
+subsfile_list_init(struct mail_storage *storage, const char *path);
 
 /* Deinitialize subscription file listing. Returns FALSE if some error occured
    while listing. */
@@ -13,7 +13,7 @@
 /* Returns the next subscribed mailbox, or NULL. */
 const char *subsfile_list_next(struct subsfile_list_context *ctx);
 
-int subsfile_set_subscribed(struct mail_storage *storage,
+int subsfile_set_subscribed(struct mail_storage *storage, const char *path,
 			    const char *name, int set);
 
 #endif



More information about the dovecot-cvs mailing list