Minor fixes here and there

This commit is contained in:
nick
2013-08-09 17:02:33 +01:00
parent c2df38c9d3
commit 64702d992d
3 changed files with 20 additions and 4 deletions

View File

@@ -121,7 +121,12 @@ int writeloop(int filedes, const void *buffer, size_t size)
size_t written=0;
while (written < size) {
ssize_t result = write(filedes, buffer+written, size-written);
if (result == -1) { return -1; }
if (result == -1) {
if ( errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK ) {
continue; // busy-wait
}
return -1; // failure
}
written += result;
}
return 0;
@@ -132,9 +137,18 @@ int readloop(int filedes, void *buffer, size_t size)
size_t readden=0;
while (readden < size) {
ssize_t result = read(filedes, buffer+readden, size-readden);
if (result == 0 /* EOF */ || result == -1 /* error */) {
if ( result == 0 /* EOF */ ) {
warn( "end-of-file detected while reading" );
return -1;
}
if ( result == -1 ) {
if ( errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK ) {
continue; // busy-wait
}
return -1; // failure
}
readden += result;
}
return 0;