libbb: Converted safe_read to safe_write format
No binary (build failed)
—
(log yok)
| @@ -12,9 +12,17 @@ ssize_t FAST_FUNC safe_read(int fd, void *buf, size_t count) | |
| { | |
| ssize_t n; | |
| - | do { |
| + | for (;;) { |
| n = read(fd, buf, count); | |
| - | } while (n < 0 && errno == EINTR); |
| + | if (n >= 0 || errno != EINTR) |
| + | break; |
| + | /* Some callers set errno=0, are upset when they see EINTR. |
| + | * Returning EINTR is wrong since we retry read(), |
| + | * the "error" was transient. |
| + | */ |
| + | errno = 0; |
| + | /* repeat the read() */ |
| + | } |
| return n; | |
| } | |