On Tue, Oct 31, 2017 at 10:54:21AM +0100, René Scharfe wrote:
> Reduce code duplication by extracting a function for rewriting an
> existing file.
These patches look like an improvement on their own, but I wonder if we
shouldn't just be using the existing write_file_buf() for this?
Compared to your new function:
> +static int rewrite_file(const char *path, const char *buf, size_t len)
> +{
> + int rc = 0;
> + int fd = open(path, O_WRONLY);
> + if (fd < 0)
> + return error_errno(_("could not open '%s' for writing"), path);
> + if (write_in_full(fd, buf, len) < 0)
> + rc = error_errno(_("could not write to '%s'"), path);
> + if (!rc && ftruncate(fd, len) < 0)
> + rc = error_errno(_("could not truncate '%s'"), path);
> + close(fd);
> + return rc;
> +}
- write_file_buf() uses O_TRUNC instead of ftruncate (but you end up
there in your second patch)
- it uses O_CREAT, which I think would be OK (we do not expect to
create the file, but it would work fine when the file does exist).
- it calls die() rather than returning an error. Looking at the
callsites, I'm inclined to say that would be fine. Failing to write
to the todo file is essentially a fatal error for sequencer code.
-Peff