xread/xwrite: do not worry about EINTR at calling sites.

We had errno==EINTR check after read(2)/write(2) sprinkled all
over the places, always doing continue.  Consolidate them into
xread()/xwrite() wrapper routines.

Credits for suggestion goes to HPA -- bugs are mine.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-12-19 16:18:28 -08:00
parent 1fdfd05db2
commit 1c15afb934
9 changed files with 46 additions and 63 deletions

View File

@ -116,14 +116,9 @@ int main(int argc, char **argv)
// Read the signature
size = 0;
for (;;) {
int ret = read(0, buffer + size, MAXSIZE - size);
if (!ret)
int ret = xread(0, buffer + size, MAXSIZE - size);
if (ret <= 0)
break;
if (ret < 0) {
if (errno == EAGAIN)
continue;
break;
}
size += ret;
}