network: fix return value of hostsFileWrite

The lone caller to hostsFileWrite (and the callers for at least 3
levels up the return stack) assume that the return value will be < 0
on failure. However, hostsFileWrite returns 0 on success, and a
positive errno on failure. This patch changes hostsFileWrite to return
-errno on failure.
This commit is contained in:
Laine Stump 2011-04-27 14:11:14 -04:00
parent a372c405b4
commit f7bd72fa26

View File

@ -159,19 +159,19 @@ hostsfileWrite(const char *path,
return rc;
if (virAsprintf(&tmp, "%s.new", path) < 0)
return ENOMEM;
return -ENOMEM;
if (!(f = fopen(tmp, "w"))) {
istmp = false;
if (!(f = fopen(path, "w"))) {
rc = errno;
rc = -errno;
goto cleanup;
}
}
for (i = 0; i < nhosts; i++) {
if (fputs(hosts[i].host, f) == EOF || fputc('\n', f) == EOF) {
rc = errno;
rc = -errno;
VIR_FORCE_FCLOSE(f);
if (istmp)
@ -182,19 +182,19 @@ hostsfileWrite(const char *path,
}
if (VIR_FCLOSE(f) == EOF) {
rc = errno;
rc = -errno;
goto cleanup;
}
if (istmp) {
if (rename(tmp, path) < 0) {
rc = errno;
rc = -errno;
unlink(tmp);
goto cleanup;
}
if (unlink(tmp) < 0) {
rc = errno;
rc = -errno;
goto cleanup;
}
}