summaryrefslogtreecommitdiff
path: root/src/utilities/s6-dns-hosts-compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utilities/s6-dns-hosts-compile.c')
-rw-r--r--src/utilities/s6-dns-hosts-compile.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/utilities/s6-dns-hosts-compile.c b/src/utilities/s6-dns-hosts-compile.c
index 554a569..1f9e85d 100644
--- a/src/utilities/s6-dns-hosts-compile.c
+++ b/src/utilities/s6-dns-hosts-compile.c
@@ -47,10 +47,25 @@ int main (int argc, char const *const *argv)
fdw = mkstemp(tmp) ;
if (fdw == -1) strerr_diefu2sys(111, "create ", tmp) ;
if (!s6dns_hosts_compile(fdr, fdw))
- strerr_diefu4sys(111, "compile ", ifile, " to ", tmp) ;
- if (fsync(fdw) == -1) strerr_diefu2sys(111, "fsync ", tmp) ;
- if (fchmod(fdw, 0644) == -1) strerr_diefu2sys(111, "fchmod ", tmp) ;
- if (rename(tmp, ofile) == -1) strerr_diefu4sys(111, "rename ", tmp, " to ", ofile) ;
+ {
+ unlink_void(tmp) ;
+ strerr_diefu2sys(111, "compile ", ifile) ;
+ }
+ if (fsync(fdw) == -1)
+ {
+ unlink_void(tmp) ;
+ strerr_diefu2sys(111, "fsync ", tmp) ;
+ }
+ if (fchmod(fdw, 0644) == -1)
+ {
+ unlink_void(tmp) ;
+ strerr_diefu2sys(111, "fchmod ", tmp) ;
+ }
+ if (rename(tmp, ofile) == -1)
+ {
+ unlink_void(tmp) ;
+ strerr_diefu4sys(111, "rename ", tmp, " to ", ofile) ;
+ }
}
return 0 ;
}