static sparkey_returncode _write_full()

in src/endiantools.c [35:54]


static sparkey_returncode _write_full(int fd, uint8_t *buf, size_t count) {
  while (count > 0) {
    ssize_t actual = write(fd, buf, count);
    if (actual < 0) {
      switch (errno) {
      case EINTR:
      case EAGAIN: continue;
      case ENOSPC: return SPARKEY_OUT_OF_DISK;
      case EFBIG: return SPARKEY_FILE_SIZE_EXCEEDED;
      case EBADF: return SPARKEY_FILE_CLOSED;
      default:
        fprintf(stderr, "_write_full():%d bug: actual_written = %"PRIu64", wanted = %"PRIu64", errno = %d\n", __LINE__, (uint64_t)actual, (uint64_t)count, errno);
        return SPARKEY_INTERNAL_ERROR;
      }
    }
    count -= actual;
    buf += actual;
  }
  return SPARKEY_SUCCESS;
}