From 62313f891048d91707cf5a5bd068d02c2824d518 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Tue, 17 Jun 2014 22:13:52 +0200
Subject: [PATCH] Use the new [io]_stream_create_fd_*autoclose() functions
 wherever possible. Parallel to identical Dovecot change.

---
 src/lib-sieve-tool/sieve-tool.c      | 2 +-
 src/lib-sieve/sieve-script-file.c    | 4 ++--
 src/lib-sieve/sieve-script-private.h | 2 --
 src/testsuite/testsuite-smtp.c       | 2 +-
 4 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 464aeb5f5..acb6edbc4 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -515,7 +515,7 @@ struct ostream *sieve_tool_open_output_stream(const char *filename)
 			i_fatal("failed to open file for writing: %m");
 		}
 
-		outstream = o_stream_create_fd(fd, 0, TRUE);
+		outstream = o_stream_create_fd_autoclose(&fd, 0);
 	}
 
 	return outstream;
diff --git a/src/lib-sieve/sieve-script-file.c b/src/lib-sieve/sieve-script-file.c
index 8708878c6..13f6819ad 100644
--- a/src/lib-sieve/sieve-script-file.c
+++ b/src/lib-sieve/sieve-script-file.c
@@ -286,14 +286,14 @@ static int sieve_file_script_get_stream
 			*error_r = SIEVE_ERROR_TEMP_FAILURE;
 			result = NULL;
 		} else {
-			result = i_stream_create_fd(fd, SIEVE_FILE_READ_BLOCK_SIZE, TRUE);
+			result = i_stream_create_fd_autoclose(&fd, SIEVE_FILE_READ_BLOCK_SIZE);
 			script->st = script->lnk_st = st;
 		}
 	}
 
 	if ( result == NULL ) {
 		/* Something went wrong, close the fd */
-		if ( close(fd) != 0 ) {
+		if ( fd >= 0 && close(fd) != 0 ) {
 			sieve_sys_error(svinst,
 				"failed to close sieve script: close(fd=%s) failed: %m", script->path);
 		}
diff --git a/src/lib-sieve/sieve-script-private.h b/src/lib-sieve/sieve-script-private.h
index 174cff3cd..3d80424e0 100644
--- a/src/lib-sieve/sieve-script-private.h
+++ b/src/lib-sieve/sieve-script-private.h
@@ -89,8 +89,6 @@ struct sieve_file_script {
 	const char *filename;
 	const char *binpath;
 	const char *binprefix;
-
-	int fd;
 };
 
 extern const struct sieve_script sieve_file_script;
diff --git a/src/testsuite/testsuite-smtp.c b/src/testsuite/testsuite-smtp.c
index d2944fa95..27e2d462d 100644
--- a/src/testsuite/testsuite-smtp.c
+++ b/src/testsuite/testsuite-smtp.c
@@ -95,7 +95,7 @@ void *testsuite_smtp_start
 			smtp->msg_file);
 	}
 
-	smtp->output = o_stream_create_fd(fd, (size_t)-1, TRUE);
+	smtp->output = o_stream_create_fd_autoclose(&fd, (size_t)-1);
 
 	return (void *) smtp;
 }
-- 
GitLab