tested it (lack of time).
goto FROM_BUF;
}
- TRY_READ:
- len = read(fp->fd, p, (unsigned) bytes);
- if (len < 0) {
- if (errno == EINTR) { /* We were interrupted, so try again. */
- goto TRY_READ;
- }
- fp->mode |= __MODE_ERR;
- } else {
- p += len;
- if (len == 0) {
- fp->mode |= __MODE_EOF;
+ while (bytes) {
+ if ((len = read(fp->fd, p, (unsigned) bytes)) < 0) {
+ if (errno != EINTR) { /* We weren't interrupted, so error. */
+ fp->mode |= __MODE_ERR;
+ break;
+ }
+ } else {
+ if (len == 0) {
+ fp->mode |= __MODE_EOF;
+ break;
+ }
+ bytes -= len;
+ p += len;
}
}
}