/* vi: set sw=4 ts=4: */ /* * Utility routines. * * Copyright (C) 1999-2004 by Erik Andersen * * 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; }