dovecot-2.2: lib-fs: Improved fs_write_*() error messages.
dovecot at dovecot.org
dovecot at dovecot.org
Sun Sep 22 04:42:07 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/1cd94c4cd456
changeset: 16815:1cd94c4cd456
user: Timo Sirainen <tss at iki.fi>
date: Sun Sep 22 04:41:50 2013 +0300
description:
lib-fs: Improved fs_write_*() error messages.
diffstat:
src/lib-fs/fs-posix.c | 14 ++++++++++----
src/lib-fs/fs-sis-queue.c | 8 +++++---
src/lib-fs/fs-sis.c | 7 ++++---
3 files changed, 19 insertions(+), 10 deletions(-)
diffs (74 lines):
diff -r 38382fa18285 -r 1cd94c4cd456 src/lib-fs/fs-posix.c
--- a/src/lib-fs/fs-posix.c Sun Sep 22 04:40:02 2013 +0300
+++ b/src/lib-fs/fs-posix.c Sun Sep 22 04:41:50 2013 +0300
@@ -47,6 +47,7 @@
bool seek_to_beginning;
bool success;
+ bool open_failed;
};
struct posix_fs_lock {
@@ -462,7 +463,9 @@
file->write_buf = buffer_create_dynamic(default_pool, 1024*32);
_file->output = o_stream_create_buffer(file->write_buf);
} else if (file->fd == -1 && fs_posix_open(file) < 0) {
- _file->output = o_stream_create_error(errno);
+ _file->output = o_stream_create_error_str(errno, "%s",
+ fs_file_last_error(_file));
+ file->open_failed = TRUE;
} else {
_file->output = o_stream_create_fd_file(file->fd,
(uoff_t)-1, FALSE);
@@ -475,9 +478,12 @@
struct posix_fs_file *file = (struct posix_fs_file *)_file;
int ret = success ? 0 : -1;
- if (o_stream_nfinish(_file->output) < 0) {
- fs_set_error(_file->fs, "write(%s) failed: %m",
- o_stream_get_name(_file->output));
+ if (file->open_failed)
+ ret = -1;
+ else if (o_stream_nfinish(_file->output) < 0) {
+ fs_set_error(_file->fs, "write(%s) failed: %s",
+ o_stream_get_name(_file->output),
+ o_stream_get_error(_file->output));
ret = -1;
}
o_stream_destroy(&_file->output);
diff -r 38382fa18285 -r 1cd94c4cd456 src/lib-fs/fs-sis-queue.c
--- a/src/lib-fs/fs-sis-queue.c Sun Sep 22 04:40:02 2013 +0300
+++ b/src/lib-fs/fs-sis-queue.c Sun Sep 22 04:41:50 2013 +0300
@@ -234,10 +234,12 @@
i_assert(_file->output == NULL);
- if (file->super == NULL)
- _file->output = o_stream_create_error(EINVAL);
- else
+ if (file->super == NULL) {
+ _file->output = o_stream_create_error_str(EINVAL, "%s",
+ fs_file_last_error(_file));
+ } else {
_file->output = fs_write_stream(file->super);
+ }
o_stream_set_name(_file->output, _file->path);
}
diff -r 38382fa18285 -r 1cd94c4cd456 src/lib-fs/fs-sis.c
--- a/src/lib-fs/fs-sis.c Sun Sep 22 04:40:02 2013 +0300
+++ b/src/lib-fs/fs-sis.c Sun Sep 22 04:41:50 2013 +0300
@@ -354,9 +354,10 @@
i_assert(_file->output == NULL);
- if (file->super == NULL)
- _file->output = o_stream_create_error(EINVAL);
- else {
+ if (file->super == NULL) {
+ _file->output = o_stream_create_error_str(EINVAL, "%s",
+ fs_file_last_error(_file));
+ } else {
file->fs_output = fs_write_stream(file->super);
if (file->hash_input == NULL)
_file->output = file->fs_output;
More information about the dovecot-cvs
mailing list