diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-09-22 20:55:34 +0200 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-09-22 20:55:34 +0200 |
commit | f1bc0ab56b810492193914b409012386d4119348 (patch) | |
tree | a27e018e476c31830b1c878126c79e37b5df2a56 /src/basic/fileio.c | |
parent | ef9da4e091f35b29ea953b05b29f131524fff764 (diff) |
fileio: make write_string_stream() accept flags parameter
Let's make write_string_stream() and write_string_file() more alike, and
pass the same flag set so that we can remove a number of boolean
parameters.
Diffstat (limited to 'src/basic/fileio.c')
-rw-r--r-- | src/basic/fileio.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 42503013e..65d63a0ff 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -52,13 +52,17 @@ #define READ_FULL_BYTES_MAX (4U*1024U*1024U) -int write_string_stream_ts(FILE *f, const char *line, bool enforce_newline, struct timespec *ts) { +int write_string_stream_ts( + FILE *f, + const char *line, + WriteStringFileFlags flags, + struct timespec *ts) { assert(f); assert(line); fputs(line, f); - if (enforce_newline && !endswith(line, "\n")) + if (!(flags & WRITE_STRING_FILE_AVOID_NEWLINE) && !endswith(line, "\n")) fputc('\n', f); if (ts) { @@ -74,8 +78,7 @@ int write_string_stream_ts(FILE *f, const char *line, bool enforce_newline, stru static int write_string_file_atomic( const char *fn, const char *line, - bool enforce_newline, - bool do_fsync, + WriteStringFileFlags flags, struct timespec *ts) { _cleanup_fclose_ FILE *f = NULL; @@ -91,8 +94,8 @@ static int write_string_file_atomic( (void) fchmod_umask(fileno(f), 0644); - r = write_string_stream_ts(f, line, enforce_newline, ts); - if (r >= 0 && do_fsync) + r = write_string_stream_ts(f, line, flags, ts); + if (r >= 0 && (flags & WRITE_STRING_FILE_SYNC)) r = fflush_sync_and_check(f); if (r >= 0) { if (rename(p, fn) < 0) @@ -105,7 +108,12 @@ static int write_string_file_atomic( return r; } -int write_string_file_ts(const char *fn, const char *line, WriteStringFileFlags flags, struct timespec *ts) { +int write_string_file_ts( + const char *fn, + const char *line, + WriteStringFileFlags flags, + struct timespec *ts) { + _cleanup_fclose_ FILE *f = NULL; int q, r; @@ -118,10 +126,7 @@ int write_string_file_ts(const char *fn, const char *line, WriteStringFileFlags if (flags & WRITE_STRING_FILE_ATOMIC) { assert(flags & WRITE_STRING_FILE_CREATE); - r = write_string_file_atomic(fn, - line, - !(flags & WRITE_STRING_FILE_AVOID_NEWLINE), - flags & WRITE_STRING_FILE_SYNC, ts); + r = write_string_file_atomic(fn, line, flags, ts); if (r < 0) goto fail; @@ -154,7 +159,7 @@ int write_string_file_ts(const char *fn, const char *line, WriteStringFileFlags } } - r = write_string_stream_ts(f, line, !(flags & WRITE_STRING_FILE_AVOID_NEWLINE), ts); + r = write_string_stream_ts(f, line, flags, ts); if (r < 0) goto fail; |