#include <wchar.h>

#include "locale_impl.h"
#include "stdio_impl.h"

int fputws(const wchar_t* restrict ws, FILE* restrict f) {
  unsigned char buf[BUFSIZ];
  size_t l = 0;
  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;

  FLOCK(f);

  fwide(f, 1);
  *ploc = f->locale;

  while (ws && (l = wcsrtombs((void*)buf, (void*)&ws, sizeof buf, 0)) + 1 > 1)
    if (__fwritex(buf, l, f) < l) {
      FUNLOCK(f);
      *ploc = loc;
      return -1;
    }

  FUNLOCK(f);

  *ploc = loc;
  return l; /* 0 or -1 */
}

weak_alias(fputws, fputws_unlocked);
