diff --git a/csum-file.c b/csum-file.c
index 907efbf860152347bffe0cc999fdacad2a5f0724..5f9249aeedfa7d4156cf412da6a7e7d77f33ff86 100644 (file)
--- a/csum-file.c
+++ b/csum-file.c
void *buf = f->buffer;
for (;;) {
- int ret = write(f->fd, buf, count);
+ int ret = xwrite(f->fd, buf, count);
if (ret > 0) {
buf += ret;
count -= ret;
}
if (!ret)
die("sha1 file '%s' write error. Out of diskspace", f->name);
- if (errno == EAGAIN || errno == EINTR)
- continue;
die("sha1 file '%s' write error (%s)", f->name, strerror(errno));
}
}
sha1flush(f, 20);
if (close(f->fd))
die("%s: sha1 file error on close (%s)", f->name, strerror(errno));
+ free(f);
return 0;
}