mirror of
https://github.com/systemd/systemd.git
synced 2025-01-10 05:18:17 +03:00
fileio: move fsync() logic into write_string_stream_ts()
That way, write_string_stream_ts() becomes more powerful, and we can remove duplicate code from write_string_file_atomic() and write_string_file_ts().
This commit is contained in:
parent
b183713383
commit
9dd1b1e869
@ -72,7 +72,10 @@ int write_string_stream_ts(
|
||||
return -errno;
|
||||
}
|
||||
|
||||
return fflush_and_check(f);
|
||||
if (flags & WRITE_STRING_FILE_SYNC)
|
||||
return fflush_sync_and_check(f);
|
||||
else
|
||||
return fflush_and_check(f);
|
||||
}
|
||||
|
||||
static int write_string_file_atomic(
|
||||
@ -95,16 +98,18 @@ static int write_string_file_atomic(
|
||||
(void) fchmod_umask(fileno(f), 0644);
|
||||
|
||||
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)
|
||||
r = -errno;
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
if (rename(p, fn) < 0) {
|
||||
r = -errno;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (r < 0)
|
||||
(void) unlink(p);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
(void) unlink(p);
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -163,12 +168,6 @@ int write_string_file_ts(
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
if (flags & WRITE_STRING_FILE_SYNC) {
|
||||
r = fflush_sync_and_check(f);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
|
Loading…
Reference in New Issue
Block a user