-/**
- * Wrapper for the write system call.
- *
- * \param fd The file descriptor to write to.
- * \param buf The buffer to write.
- * \param size The length of \a buf in bytes.
- *
- * This function writes out the given buffer and retries if an interrupt
- * occurred during the write.
- *
- * \return On success, the number of bytes written is returned, otherwise, the
- * function returns \p -E_OSL_WRITE.
- *
- * \sa write(2).
- */
-static ssize_t __write(int fd, const void *buf, size_t size)
-{
- ssize_t ret;
-
- for (;;) {
- ret = write(fd, buf, size);
- if ((ret < 0) && (errno == EAGAIN || errno == EINTR))
- continue;
- return ret >= 0? ret : -E_OSL_WRITE;
- }
-}
-
-/**
- * Write the whole buffer to a file descriptor.
- *
- * \param fd The file descriptor to write to.
- * \param buf The buffer to write.
- * \param size The length of \a buf in bytes.
- *
- * This function writes the given buffer and continues on short writes and
- * when interrupted by a signal.
- *
- * \return Positive on success, negative on errors. Possible errors: any
- * errors returned by para_write().
- *
- * \sa para_write().
- */
-static ssize_t write_all(int fd, const void *buf, size_t size)
-{
-// DEBUG_LOG("writing %zu bytes\n", size);
- const char *b = buf;
- while (size) {
- ssize_t ret = __write(fd, b, size);
-// DEBUG_LOG("ret: %zd\n", ret);
- if (ret < 0)
- return ret;
- b += ret;
- size -= ret;
- }
- return 1;
-}
-/**
- * Open a file, write the given buffer and close the file.
- *
- * \param filename Full path to the file to open.
- * \param buf The buffer to write to the file.
- * \param size The size of \a buf.
- *
- * \return Standard.
- */
-static int write_file(const char *filename, const void *buf, size_t size)
-{
- int ret, fd;
-
- ret = osl_open(filename, O_WRONLY | O_CREAT | O_EXCL, 0644);
- if (ret < 0)
- return ret;
- fd = ret;
- ret = write_all(fd, buf, size);
- if (ret < 0)
- goto out;
- ret = 1;
-out:
- close(fd);
- return ret;
-}
-