summaryrefslogtreecommitdiff
path: root/index-pack.c
diff options
context:
space:
mode:
authorAndy Whitcroft <apw@shadowen.org>2007-01-08 15:58:08 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-01-08 23:44:47 (GMT)
commit93d26e4cb9cec2eb8abb4f37e6dda2c86fcceeac (patch)
tree8d3cda91ddd8242531995cb304f37578bfaa7cf0 /index-pack.c
parente08140568a131bcd26e64a0bc8188040847be998 (diff)
downloadgit-93d26e4cb9cec2eb8abb4f37e6dda2c86fcceeac.zip
git-93d26e4cb9cec2eb8abb4f37e6dda2c86fcceeac.tar.gz
git-93d26e4cb9cec2eb8abb4f37e6dda2c86fcceeac.tar.bz2
short i/o: fix calls to read to use xread or read_in_full
We have a number of badly checked read() calls. Often we are expecting read() to read exactly the size we requested or fail, this fails to handle interrupts or short reads. Add a read_in_full() providing those semantics. Otherwise we at a minimum need to check for EINTR and EAGAIN, where this is appropriate use xread(). Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'index-pack.c')
-rw-r--r--index-pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/index-pack.c b/index-pack.c
index 5f6d128..e9a5303 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -638,7 +638,7 @@ static void readjust_pack_header_and_sha1(unsigned char *sha1)
/* Rewrite pack header with updated object number */
if (lseek(output_fd, 0, SEEK_SET) != 0)
die("cannot seek back: %s", strerror(errno));
- if (xread(output_fd, &hdr, sizeof(hdr)) != sizeof(hdr))
+ if (read_in_full(output_fd, &hdr, sizeof(hdr)) != sizeof(hdr))
die("cannot read pack header back: %s", strerror(errno));
hdr.hdr_entries = htonl(nr_objects);
if (lseek(output_fd, 0, SEEK_SET) != 0)