summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-06-12 23:06:56 +0200
committerLennart Poettering <lennart@poettering.net>2014-06-12 23:07:33 +0200
commit034753ac13a9d4b308eee1e8d7c3285f6646c0d8 (patch)
treea4988fc72b7e8f905da0071386ff7f59c520b812
parent1b99214789101976d6bbf75c351279584b071998 (diff)
machine: minor modernizations
-rw-r--r--src/machine/machine.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/machine/machine.c b/src/machine/machine.c
index a49cf8190..0b0d45bb2 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -176,12 +176,13 @@ int machine_save(Machine *m) {
m->timestamp.realtime,
m->timestamp.monotonic);
- fflush(f);
+ r = fflush_and_check(f);
+ if (r < 0)
+ goto finish;
- if (ferror(f) || rename(temp_path, m->state_file) < 0) {
+ if (rename(temp_path, m->state_file) < 0) {
r = -errno;
- unlink(m->state_file);
- unlink(temp_path);
+ goto finish;
}
if (m->unit) {
@@ -195,8 +196,12 @@ int machine_save(Machine *m) {
}
finish:
- if (r < 0)
+ if (r < 0) {
+ if (temp_path)
+ unlink(temp_path);
+
log_error("Failed to save machine data %s: %s", m->state_file, strerror(-r));
+ }
return r;
}