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