tree-wide: port everything over to fflush_and_check()

Some places invoked fflush() directly with their own manual error
checking, let's unify all that by using fflush_and_check().

This also unifies the general error paths of fflush()+rename() file
writers.
This commit is contained in:
Lennart Poettering
2015-07-29 20:31:07 +02:00
parent 8388607b58
commit dacd6cee76
25 changed files with 248 additions and 215 deletions
+4 -4
View File
@@ -253,6 +253,7 @@ int calendar_spec_to_string(const CalendarSpec *c, char **p) {
char *buf = NULL;
size_t sz = 0;
FILE *f;
int r;
assert(c);
assert(p);
@@ -278,12 +279,11 @@ int calendar_spec_to_string(const CalendarSpec *c, char **p) {
fputc(':', f);
format_chain(f, 2, c->second);
fflush(f);
if (ferror(f)) {
r = fflush_and_check(f);
if (r < 0) {
free(buf);
fclose(f);
return -ENOMEM;
return r;
}
fclose(f);
+2 -8
View File
@@ -28,21 +28,15 @@
#include "fileio.h"
int write_string_stream(FILE *f, const char *line, bool enforce_newline) {
assert(f);
assert(line);
errno = 0;
fputs(line, f);
if (enforce_newline && !endswith(line, "\n"))
fputc('\n', f);
fflush(f);
if (ferror(f))
return errno ? -errno : -EIO;
return 0;
return fflush_and_check(f);
}
static int write_string_file_atomic(const char *fn, const char *line, bool enforce_newline) {