[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