#include "stdio_impl.h"
#include <string.h>

#ifdef STARBOARD
#include "starboard/common/log.h"
#endif  // STARBOARD

#ifndef STARBOARD
size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict f)
{
	size_t i=0;

	if (!f->wend && __towrite(f)) return 0;

	if (l > f->wend - f->wpos) return f->write(f, s, l);

	if (f->lbf >= 0) {
		/* Match /^(.*\n|)/ */
		for (i=l; i && s[i-1] != '\n'; i--);
		if (i) {
			size_t n = f->write(f, s, i);
			if (n < i) return n;
			s += i;
			l -= i;
		}
	}

	memcpy(f->wpos, s, l);
	f->wpos += l;
	return l+i;
}
#endif

size_t fwrite(const void *restrict src, size_t size, size_t nmemb, FILE *restrict f)
{
#ifdef STARBOARD
  SB_DCHECK((f == stdout) || (f == stderr));
  SbLogRawFormatF("%.*s", size * nmemb, src);
  return size * nmemb;
#else   // !STARBOARD
	size_t k, l = size*nmemb;
	if (!size) nmemb = 0;
	FLOCK(f);
	k = __fwritex(src, l, f);
	FUNLOCK(f);
	return k==l ? nmemb : k/size;
#endif  // STARBOARD
}

weak_alias(fwrite, fwrite_unlocked);
