From 968738f9b133c8bda7d5ced178fd92f4445d791c Mon Sep 17 00:00:00 2001
From: Yaakov Selkowitz <yselkowi@redhat.com>
Date: Thu, 18 Dec 2014 14:55:21 +0000
Subject: Implement BSD/GNU unlocked stdio extensions. * libc/include/stdio.h
 (clearerr_unlocked, feof_unlocked, ferror_unlocked, fflush_unlocked,
 fgetc_unlocked, fgets_unlocked, fileno_unlocked, fputc_unlocked,
 fputs_unlocked, fread_unlocked, fwrite_unlocked): Declare. *
 libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked, fputwc_unlocked,
 fputws_unlocked, getwc_unlocked, getwchar_unlocked, putwc_unlocked,
 putwchar_unlocked): Declare. * libc/stdio/Makefile.am (ELIX_4_SOURCES): Add
 clearerr_u.c, feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c,
 fgetwc_u.c, fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c,
 fputws_u.c, fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c,
 putwchar_u.c. Add necessary dependencies. * libc/stdio/Makefile.in:
 Regenerate. * libc/stdio/clearerr.c: Document unlocked variant. *
 libc/stdio/clearerr_u.c: New file. * libc/stdio/feof.c: Document unlocked
 variant. * libc/stdio/feof_u.c: New file. * libc/stdio/ferror.c: Document
 unlocked variant. * libc/stdio/ferror_u.c: New file. * libc/stdio/fflush.c:
 Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. *
 libc/stdio/fflush_u.c: New file. * libc/stdio/fgetc.c: Document unlocked
 variants. * libc/stdio/fgetc_u.c: New file. * libc/stdio/fgets.c: Add
 __IMPL_UNLOCKED__ overrides. Document unlocked variants. *
 libc/stdio/fgets_u.c: New file. * libc/stdio/fgetwc.c: Document unlocked
 variants. (__fgetwc): Make non-static. * libc/stdio/fgetwc_u.c: New file. *
 libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked
 variants. * libc/stdio/fgetws_u.c: New file. * libc/stdio/fileno.c: Document
 unlocked variant. * libc/stdio/fileno_u.c: New file. * libc/stdio/fputc.c:
 Document unlocked variants. * libc/stdio/fputc_u.c: New file. *
 libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides. Document unlocked
 variants. * libc/stdio/fputs_u.c: New file. * libc/stdio/fputwc.c: Document
 unlocked variants. (__fputwc): Make non-static. * libc/stdio/fputwc_u.c: New
 file. * libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides. Document
 unlocked variants. * libc/stdio/fputws_u.c: New file. * libc/stdio/fread.c:
 Add __IMPL_UNLOCKED__ overrides. Document unlocked variants. *
 libc/stdio/fread_u.c: New file. * libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__
 overrides. Document unlocked variants. * libc/stdio/fwrite_u.c: New file. *
 libc/stdio/getwc_u.c: New file. * libc/stdio/getwchar.c: Document unlocked
 variants. * libc/stdio/getwchar_u.c: New file. * libc/stdio/local.h: Define
 locking macros as empty ifdef __IMPL_UNLOCKED__. (__fgetwc, __fputwc):
 Declare. * libc/stdio/putwc_u.c: New file. * libc/stdio/putwchar.c: Document
 unlocked variants. * libc/stdio/putwchar_u.c: New file.

---
 newlib/libc/stdio/putwchar_u.c | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 newlib/libc/stdio/putwchar_u.c

(limited to 'newlib/libc/stdio/putwchar_u.c')

diff --git a/newlib/libc/stdio/putwchar_u.c b/newlib/libc/stdio/putwchar_u.c
new file mode 100644
index 0000000..3235472
--- /dev/null
+++ b/newlib/libc/stdio/putwchar_u.c
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2014 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#define _GNU_SOURCE
+#include <_ansi.h>
+#include <reent.h>
+#include <stdio.h>
+#include <wchar.h>
+#include "local.h"
+
+#undef putwchar_unlocked
+
+wint_t
+_DEFUN(_putwchar_unlocked_r, (ptr, wc),
+	struct _reent *ptr _AND
+	wchar_t wc)
+{
+  return _fputwc_unlocked_r (ptr, wc, stdout);
+}
+
+/*
+ * Synonym for fputwc_unlocked(wc, stdout).
+ */
+wint_t
+_DEFUN(putwchar_unlocked, (wc),
+	wchar_t wc)
+{
+  _REENT_SMALL_CHECK_INIT (_REENT);
+  return fputwc_unlocked (wc, stdout);
+}
-- 
cgit v1.1