libbb: Converted safe_read to safe_write format

Changed safe_read to be symmetrical to safe_write, it shall
never return EINTR because it calls read multiple times,
the error is considered transient.

function                                             old     new   delta
safe_read                                             44      57     +13

Signed-off-by: Martin Lewis <martin.lewis.x84@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Martin Lewis 2019-09-15 18:13:28 +02:00 committed by Denys Vlasenko
parent ad27d44ebe
commit dd46861282

View File

@ -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;
}