ndk-busybox/libbb/safe_write.c
Denys Vlasenko a03ac60677 libbb: safe_write should not return EINTR
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-07-14 14:22:09 +02:00

30 lines
597 B
C

/* vi: set sw=4 ts=4: */
/*
* Utility routines.
*
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
#include "libbb.h"
ssize_t FAST_FUNC safe_write(int fd, const void *buf, size_t count)
{
ssize_t n;
for (;;) {
n = write(fd, buf, count);
if (n >= 0 || errno != EINTR)
break;
/* Some callers set errno=0, are upset when they see EINTR.
* Returning EINTR is wrong since we retry write(),
* the "error" was transient.
*/
errno = 0;
/* repeat the write() */
}
return n;
}