diff options
Diffstat (limited to 'client/file.c')
-rw-r--r-- | client/file.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/client/file.c b/client/file.c index ce25ab5..17f0f23 100644 --- a/client/file.c +++ b/client/file.c @@ -26,7 +26,10 @@ overwrite_file(const char *name, const void *data, size_t length) int fd; ssize_t status; - fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0600); + if (access(name, F_OK) == 0) + if (unlink(name) < 0) + sysdie("unable to delete existing file %s", name); + fd = open(name, O_WRONLY | O_CREAT | O_EXCL, 0600); if (fd < 0) sysdie("open of %s failed", name); status = write(fd, data, length); |