summaryrefslogtreecommitdiff
path: root/src/common/safe_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/safe_io.c')
-rw-r--r--src/common/safe_io.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/common/safe_io.c b/src/common/safe_io.c
index 5880bc1bc75..e3e40ff989e 100644
--- a/src/common/safe_io.c
+++ b/src/common/safe_io.c
@@ -145,26 +145,29 @@ int safe_write_file(const char *base, const char *file,
}
ret = fsync(fd);
+ if (ret < 0) ret = -errno;
TEMP_FAILURE_RETRY(close(fd));
- if (ret) {
+ if (ret < 0) {
unlink(tmp);
return ret;
}
ret = rename(tmp, fn);
- if (ret) {
+ if (ret < 0) {
+ ret = -errno;
unlink(tmp);
return ret;
}
fd = open(base, O_RDONLY);
if (fd < 0) {
- ret = errno;
- return -ret;
+ ret = -errno;
+ return ret;
}
- fsync(fd);
+ ret = fsync(fd);
+ if (ret < 0) ret = -errno;
TEMP_FAILURE_RETRY(close(fd));
- return 0;
+ return ret;
}
int safe_read_file(const char *base, const char *file,