networkd: update manager_save() to use fflush_and_check() to simplify things a bit

This commit is contained in:
Lennart Poettering
2014-08-12 11:55:06 +02:00
parent bf1594f54e
commit c2d6bd61ee
2 changed files with 23 additions and 17 deletions

View File

@@ -2332,7 +2332,7 @@ int link_save(Link *link) {
r = fopen_temporary(link->state_file, &f, &temp_path);
if (r < 0)
goto finish;
return r;
fchmod(fileno(f), 0644);
@@ -2393,7 +2393,7 @@ int link_save(Link *link) {
r = dhcp_lease_save(link->dhcp_lease, link->lease_file);
if (r < 0)
goto finish;
goto fail;
fprintf(f,
"DHCP_LEASE=%s\n",
@@ -2401,18 +2401,21 @@ int link_save(Link *link) {
} else
unlink(link->lease_file);
fflush(f);
r = fflush_and_check(f);
if (r < 0)
goto fail;
if (ferror(f) || rename(temp_path, link->state_file) < 0) {
if (rename(temp_path, link->state_file) < 0) {
r = -errno;
unlink(link->state_file);
unlink(temp_path);
goto fail;
}
finish:
if (r < 0)
log_error_link(link, "Failed to save link data to %s: %s", link->state_file, strerror(-r));
return 0;
fail:
log_error_link(link, "Failed to save link data to %s: %s", link->state_file, strerror(-r));
unlink(link->state_file);
unlink(temp_path);
return r;
}

View File

@@ -440,7 +440,7 @@ int manager_save(Manager *m) {
r = fopen_temporary(m->state_file, &f, &temp_path);
if (r < 0)
goto finish;
return r;
fchmod(fileno(f), 0644);
@@ -448,18 +448,21 @@ int manager_save(Manager *m) {
"# This is private data. Do not parse.\n"
"OPER_STATE=%s\n", operstate_str);
fflush(f);
r = fflush_and_check(f);
if (r < 0)
goto fail;
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 fail;
}
finish:
if (r < 0)
log_error("Failed to save network state to %s: %s", m->state_file, strerror(-r));
return 0;
fail:
log_error("Failed to save network state to %s: %s", m->state_file, strerror(-r));
unlink(m->state_file);
unlink(temp_path);
return r;
}