123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /* 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"
- /*
- * Write all of the supplied buffer out to a file.
- * This does multiple writes as necessary.
- * Returns the amount written, or -1 if error was seen
- * on the very first write.
- */
- ssize_t FAST_FUNC full_write(int fd, const void *buf, size_t len)
- {
- ssize_t cc;
- ssize_t total;
- total = 0;
- while (len) {
- cc = safe_write(fd, buf, len);
- if (cc < 0) {
- if (total) {
- /* we already wrote some! */
- /* user can do another write to know the error code */
- return total;
- }
- return cc; /* write() returns -1 on failure. */
- }
- total += cc;
- buf = ((const char *)buf) + cc;
- len -= cc;
- }
- return total;
- }
|