From ce5792dac67c5ae5656f1f9665b777d44af4cb35 Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Mon, 6 Jul 2015 17:31:44 -0400 Subject: [PATCH] fileio: add 'enforce_newline' argument to write_string_stream() Add a flag to control whether write_string_stream() should always enforce a trailing newline character in the file. --- src/shared/fileio.c | 10 +++++----- src/shared/fileio.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 00fb6f8b5..82b40aa7d 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -27,14 +27,14 @@ #include "ctype.h" #include "fileio.h" -int write_string_stream(FILE *f, const char *line) { +int write_string_stream(FILE *f, const char *line, bool enforce_newline) { assert(f); assert(line); errno = 0; fputs(line, f); - if (!endswith(line, "\n")) + if (enforce_newline && !endswith(line, "\n")) fputc('\n', f); fflush(f); @@ -55,7 +55,7 @@ int write_string_file(const char *fn, const char *line) { if (!f) return -errno; - return write_string_stream(f, line); + return write_string_stream(f, line, true); } int write_string_file_no_create(const char *fn, const char *line) { @@ -77,7 +77,7 @@ int write_string_file_no_create(const char *fn, const char *line) { return -errno; } - return write_string_stream(f, line); + return write_string_stream(f, line, true); } int write_string_file_atomic(const char *fn, const char *line) { @@ -94,7 +94,7 @@ int write_string_file_atomic(const char *fn, const char *line) { fchmod_umask(fileno(f), 0644); - r = write_string_stream(f, line); + r = write_string_stream(f, line, true); if (r >= 0) { if (rename(p, fn) < 0) r = -errno; diff --git a/src/shared/fileio.h b/src/shared/fileio.h index 91d4a0d2d..989b904c2 100644 --- a/src/shared/fileio.h +++ b/src/shared/fileio.h @@ -25,7 +25,7 @@ #include "macro.h" -int write_string_stream(FILE *f, const char *line); +int write_string_stream(FILE *f, const char *line, bool enforce_newline); int write_string_file(const char *fn, const char *line); int write_string_file_no_create(const char *fn, const char *line); int write_string_file_atomic(const char *fn, const char *line); -- 2.30.2