Index: libc/stdio/getwchar.c =================================================================== RCS file: /cvs/src/src/newlib/libc/stdio/getwchar.c,v retrieving revision 1.2 diff -u -p -r1.2 getwchar.c --- libc/stdio/getwchar.c 12 Dec 2008 17:21:08 -0000 1.2 +++ libc/stdio/getwchar.c 17 Dec 2014 18:28:02 -0000 @@ -26,34 +26,65 @@ /* FUNCTION -<>---read a wide character from standard input +<>, <>---read a wide character from standard input INDEX getwchar INDEX + getwchar_unlocked +INDEX _getwchar_r +INDEX + _getwchar_unlocked_r ANSI_SYNOPSIS #include wint_t getwchar(void); + #define _GNU_SOURCE + #include + wint_t getwchar_unlocked(void); + + #include wint_t _getwchar_r(struct _reent *<[reent]>); + #include + wint_t _getwchar_unlocked_r(struct _reent *<[reent]>); + TRAD_SYNOPSIS #include wint_t getwchar(); + #define _GNU_SOURCE + #include + wint_t getwchar_unlocked(); + + #include wint_t _getwchar_r(<[reent]>) char * <[reent]>; + #include + wint_t _getwchar_unlocked_r(<[reent]>) + char * <[reent]>; + DESCRIPTION <> function or macro is the wide character equivalent of the <> function. You can use <> to get the next wide character from the standard input stream. As a side effect, <> advances the standard input's current position indicator. -The alternate function <<_getwchar_r>> is a reentrant version. The -extra argument <[reent]> is a pointer to a reentrancy structure. +<> is a non-thread-safe version of <>. +<> may only safely be used within a scope +protected by flockfile() (or ftrylockfile()) and funlockfile(). This +function may safely be used in a multi-threaded program if and only +if they are called while the invoking thread owns the (FILE *) +object, as is the case after a successful call to the flockfile() or +ftrylockfile() functions. If threads are disabled, then +<> is equivalent to <>. + +The alternate functions <<_getwchar_r>> and <<_getwchar_unlocked_r> are +reentrant versions of the above. The extra argument <[reent]> is a pointer to +a reentrancy structure. RETURNS The next wide character cast to <>, unless there is no more @@ -64,7 +95,9 @@ You can distinguish the two situations t using `<>' and `<>'. PORTABILITY -C99 +<> is required by C99. + +<> is a GNU extension. */ #include <_ansi.h> Index: libc/stdio/getwchar_u.c =================================================================== RCS file: libc/stdio/getwchar_u.c diff -N libc/stdio/getwchar_u.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ libc/stdio/getwchar_u.c 17 Dec 2014 18:28:02 -0000 @@ -0,0 +1,50 @@ +/* + * 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. + */ + +#include <_ansi.h> +#include +#include +#include +#include "local.h" + +#undef getwchar_unlocked + +wint_t +_DEFUN (_getwchar_unlocked_r, (ptr), + struct _reent *ptr) +{ + return _fgetwc_unlocked_r (ptr, stdin); +} + +/* + * Synonym for fgetwc_unlocked(stdin). + */ +wint_t +_DEFUN_VOID (getwchar_unlocked) +{ + _REENT_SMALL_CHECK_INIT (_REENT); + return fgetwc_unlocked (stdin); +}