dovecot-2.2: lib-fs: fs_file_path() is now a virtual function.
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jan 21 14:19:32 EET 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/df8fd01f355c
changeset: 15653:df8fd01f355c
user: Timo Sirainen <tss at iki.fi>
date: Mon Jan 21 14:19:21 2013 +0200
description:
lib-fs: fs_file_path() is now a virtual function.
This fixes it returning the correct filename when file was created using
FS_OPEN_MODE_CREATE_UNIQUE_128 and a wrapper fs.
diffstat:
src/lib-fs/fs-api-private.h | 1 +
src/lib-fs/fs-api.c | 3 ++-
src/lib-fs/fs-posix.c | 1 +
src/lib-fs/fs-sis-queue.c | 8 ++++++++
src/lib-fs/fs-sis.c | 8 ++++++++
5 files changed, 20 insertions(+), 1 deletions(-)
diffs (85 lines):
diff -r 6e5adbf30e35 -r df8fd01f355c src/lib-fs/fs-api-private.h
--- a/src/lib-fs/fs-api-private.h Mon Jan 21 11:40:38 2013 +0200
+++ b/src/lib-fs/fs-api-private.h Mon Jan 21 14:19:21 2013 +0200
@@ -15,6 +15,7 @@
enum fs_open_mode mode,
enum fs_open_flags flags);
void (*file_deinit)(struct fs_file *file);
+ const char *(*get_path)(struct fs_file *file);
void (*set_async_callback)(struct fs_file *file,
fs_file_async_callback_t *callback,
diff -r 6e5adbf30e35 -r df8fd01f355c src/lib-fs/fs-api.c
--- a/src/lib-fs/fs-api.c Mon Jan 21 11:40:38 2013 +0200
+++ b/src/lib-fs/fs-api.c Mon Jan 21 14:19:21 2013 +0200
@@ -178,7 +178,8 @@
const char *fs_file_path(struct fs_file *file)
{
- return file->path;
+ return file->fs->v.get_path == NULL ? file->path :
+ file->fs->v.get_path(file);
}
const char *fs_last_error(struct fs *fs)
diff -r 6e5adbf30e35 -r df8fd01f355c src/lib-fs/fs-posix.c
--- a/src/lib-fs/fs-posix.c Mon Jan 21 11:40:38 2013 +0200
+++ b/src/lib-fs/fs-posix.c Mon Jan 21 14:19:21 2013 +0200
@@ -745,6 +745,7 @@
fs_posix_get_properties,
fs_posix_file_init,
fs_posix_file_deinit,
+ NULL,
NULL, NULL,
NULL, NULL,
fs_posix_prefetch,
diff -r 6e5adbf30e35 -r df8fd01f355c src/lib-fs/fs-sis-queue.c
--- a/src/lib-fs/fs-sis-queue.c Mon Jan 21 11:40:38 2013 +0200
+++ b/src/lib-fs/fs-sis-queue.c Mon Jan 21 14:19:21 2013 +0200
@@ -117,6 +117,13 @@
i_free(file);
}
+static const char *fs_sis_queue_file_get_path(struct fs_file *_file)
+{
+ struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file;
+
+ return fs_file_path(file->super);
+}
+
static void
fs_sis_queue_set_async_callback(struct fs_file *_file,
fs_file_async_callback_t *callback,
@@ -345,6 +352,7 @@
fs_sis_queue_get_properties,
fs_sis_queue_file_init,
fs_sis_queue_file_deinit,
+ fs_sis_queue_file_get_path,
fs_sis_queue_set_async_callback,
fs_sis_queue_wait_async,
fs_sis_queue_set_metadata,
diff -r 6e5adbf30e35 -r df8fd01f355c src/lib-fs/fs-sis.c
--- a/src/lib-fs/fs-sis.c Mon Jan 21 11:40:38 2013 +0200
+++ b/src/lib-fs/fs-sis.c Mon Jan 21 14:19:21 2013 +0200
@@ -155,6 +155,13 @@
i_free(file);
}
+static const char *fs_sis_file_get_path(struct fs_file *_file)
+{
+ struct sis_fs_file *file = (struct sis_fs_file *)_file;
+
+ return fs_file_path(file->super);
+}
+
static void
fs_sis_set_async_callback(struct fs_file *_file,
fs_file_async_callback_t *callback, void *context)
@@ -479,6 +486,7 @@
fs_sis_get_properties,
fs_sis_file_init,
fs_sis_file_deinit,
+ fs_sis_file_get_path,
fs_sis_set_async_callback,
fs_sis_wait_async,
fs_sis_set_metadata,
More information about the dovecot-cvs
mailing list