changeset 22613:bb127acc6c9b

fs-compress: Allow compress level 0 to skip compression This can be useful when combined with the "maybe-" prefix, so Dovecot will support reading compressed files without creating new ones.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 13 Oct 2017 12:34:01 +0300
parents 9cc4ce6f3920
children cf66220d281e
files src/plugins/fs-compress/fs-compress.c
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fs-compress/fs-compress.c	Mon Oct 09 16:37:08 2017 +0300
+++ b/src/plugins/fs-compress/fs-compress.c	Fri Oct 13 12:34:01 2017 +0300
@@ -70,7 +70,7 @@
 
 	level_str = t_strdup_until(args, p++);
 	if (str_to_uint(level_str, &fs->compress_level) < 0 ||
-	    fs->compress_level < 1 || fs->compress_level > 9) {
+	    fs->compress_level > 9) {
 		fs_set_error(_fs, "Invalid compression level parameter '%s'", level_str);
 		return -1;
 	}
@@ -205,6 +205,11 @@
 {
 	struct compress_fs_file *file = (struct compress_fs_file *)_file;
 
+	if (file->fs->compress_level == 0) {
+		fs_wrapper_write_stream(_file);
+		return;
+	}
+
 	i_assert(_file->output == NULL);
 
 	file->temp_output =
@@ -221,6 +226,9 @@
 	struct istream *input;
 	int ret;
 
+	if (file->fs->compress_level == 0)
+		return fs_wrapper_write_stream_finish(_file, success);
+
 	if (_file->output != NULL) {
 		if (_file->output->closed)
 			success = FALSE;