summaryrefslogtreecommitdiff
path: root/userland/libc/stdio/fwrite.c
blob: d2086cbc48392514eefd784c6c4b3093ac30d68b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <sys/types.h>

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) {
  if (!stream->has_control_over_the_fd) {
    if (stream->append) {
      fseek(stream, 0, SEEK_END);
    }
  }
  // FIXME: Check for overflow
  size_t bytes_to_write = nmemb * size;
  size_t rc = stream->write(stream, ptr, bytes_to_write);
  // On  success, fwrite() return the number of items
  // written.
  rc /= size;
  fflush(stream);
  return rc;
}