Skip to content

Commit c697ad1

Browse files
heikkiorsilagitster
authored andcommitted
Cleanup xread() loops to use read_in_full()
Signed-off-by: Heikki Orsila <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 471793f commit c697ad1

File tree

4 files changed

+19
-35
lines changed

4 files changed

+19
-35
lines changed

combine-diff.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
701701
else if (0 <= (fd = open(elem->path, O_RDONLY)) &&
702702
!fstat(fd, &st)) {
703703
size_t len = xsize_t(st.st_size);
704-
size_t sz = 0;
704+
ssize_t done;
705705
int is_file, i;
706706

707707
elem->mode = canon_mode(st.st_mode);
@@ -716,14 +716,13 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent,
716716

717717
result_size = len;
718718
result = xmalloc(len + 1);
719-
while (sz < len) {
720-
ssize_t done = xread(fd, result+sz, len-sz);
721-
if (done == 0 && sz != len)
722-
die("early EOF '%s'", elem->path);
723-
else if (done < 0)
724-
die("read error '%s'", elem->path);
725-
sz += done;
726-
}
719+
720+
done = read_in_full(fd, result, len);
721+
if (done < 0)
722+
die("read error '%s'", elem->path);
723+
else if (done < len)
724+
die("early EOF '%s'", elem->path);
725+
727726
result[len] = 0;
728727
}
729728
else {

pack-write.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@ void fixup_pack_header_footer(int pack_fd,
183183

184184
char *index_pack_lockfile(int ip_out)
185185
{
186-
int len, s;
187186
char packname[46];
188187

189188
/*
@@ -193,11 +192,8 @@ char *index_pack_lockfile(int ip_out)
193192
* case, we need it to remove the corresponding .keep file
194193
* later on. If we don't get that then tough luck with it.
195194
*/
196-
for (len = 0;
197-
len < 46 && (s = xread(ip_out, packname+len, 46-len)) > 0;
198-
len += s);
199-
if (len == 46 && packname[45] == '\n' &&
200-
memcmp(packname, "keep\t", 5) == 0) {
195+
if (read_in_full(ip_out, packname, 46) == 46 && packname[45] == '\n' &&
196+
memcmp(packname, "keep\t", 5) == 0) {
201197
char path[PATH_MAX];
202198
packname[45] = 0;
203199
snprintf(path, sizeof(path), "%s/pack/pack-%s.keep",

pkt-line.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,11 @@ void packet_write(int fd, const char *fmt, ...)
6565

6666
static void safe_read(int fd, void *buffer, unsigned size)
6767
{
68-
size_t n = 0;
69-
70-
while (n < size) {
71-
ssize_t ret = xread(fd, (char *) buffer + n, size - n);
72-
if (ret < 0)
73-
die("read error (%s)", strerror(errno));
74-
if (!ret)
75-
die("The remote end hung up unexpectedly");
76-
n += ret;
77-
}
68+
ssize_t ret = read_in_full(fd, buffer, size);
69+
if (ret < 0)
70+
die("read error (%s)", strerror(errno));
71+
else if (ret < size)
72+
die("The remote end hung up unexpectedly");
7873
}
7974

8075
int packet_read_line(int fd, char *buffer, unsigned size)

sha1_file.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,16 +2466,10 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, int write
24662466

24672467
int read_pack_header(int fd, struct pack_header *header)
24682468
{
2469-
char *c = (char*)header;
2470-
ssize_t remaining = sizeof(struct pack_header);
2471-
do {
2472-
ssize_t r = xread(fd, c, remaining);
2473-
if (r <= 0)
2474-
/* "eof before pack header was fully read" */
2475-
return PH_ERROR_EOF;
2476-
remaining -= r;
2477-
c += r;
2478-
} while (remaining > 0);
2469+
if (read_in_full(fd, header, sizeof(*header)) < sizeof(*header))
2470+
/* "eof before pack header was fully read" */
2471+
return PH_ERROR_EOF;
2472+
24792473
if (header->hdr_signature != htonl(PACK_SIGNATURE))
24802474
/* "protocol error (pack signature mismatch detected)" */
24812475
return PH_ERROR_PACK_SIGNATURE;

0 commit comments

Comments
 (0)