chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: update manager_save() to use fflush_and_check() to simplify things a bit
[elogind.git]
/
src
/
network
/
networkd-manager.c
diff --git
a/src/network/networkd-manager.c
b/src/network/networkd-manager.c
index e363fb0c1b727a942b8c8ba39b93c9cc9ddb474c..8a0ed5ea2b4f38966cd07562eaa8c6bf4636a40a 100644
(file)
--- a/
src/network/networkd-manager.c
+++ b/
src/network/networkd-manager.c
@@
-114,10
+114,6
@@
int manager_new(Manager **ret) {
return -ENOMEM;
}
return -ENOMEM;
}
- m->links = hashmap_new(uint64_hash_func, uint64_compare_func);
- if (!m->links)
- return -ENOMEM;
-
m->netdevs = hashmap_new(string_hash_func, string_compare_func);
if (!m->netdevs)
return -ENOMEM;
m->netdevs = hashmap_new(string_hash_func, string_compare_func);
if (!m->netdevs)
return -ENOMEM;
@@
-444,7
+440,7
@@
int manager_save(Manager *m) {
r = fopen_temporary(m->state_file, &f, &temp_path);
if (r < 0)
r = fopen_temporary(m->state_file, &f, &temp_path);
if (r < 0)
-
goto finish
;
+
return r
;
fchmod(fileno(f), 0644);
fchmod(fileno(f), 0644);
@@
-452,22
+448,25
@@
int manager_save(Manager *m) {
"# This is private data. Do not parse.\n"
"OPER_STATE=%s\n", operstate_str);
"# 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;
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;
}
return r;
}
-int manager_address_pool_acquire(Manager *m,
unsigned
family, unsigned prefixlen, union in_addr_union *found) {
+int manager_address_pool_acquire(Manager *m,
int
family, unsigned prefixlen, union in_addr_union *found) {
AddressPool *p;
int r;
AddressPool *p;
int r;