source: trunk/libs/newlib/src/newlib/libc/stdio/getwchar.c @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 3.4 KB
Line 
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27/*
28FUNCTION
29<<getwchar>>, <<getwchar_unlocked>>---read a wide character from standard input
30
31INDEX
32        getwchar
33INDEX
34        getwchar_unlocked
35INDEX
36        _getwchar_r
37INDEX
38        _getwchar_unlocked_r
39
40SYNOPSIS
41        #include <wchar.h>
42        wint_t getwchar(void);
43
44        #define _GNU_SOURCE
45        #include <wchar.h>
46        wint_t getwchar_unlocked(void);
47
48        #include <wchar.h>
49        wint_t _getwchar_r(struct _reent *<[reent]>);
50
51        #include <wchar.h>
52        wint_t _getwchar_unlocked_r(struct _reent *<[reent]>);
53
54DESCRIPTION
55<<getwchar>> function or macro is the wide character equivalent of
56the <<getchar>> function.  You can use <<getwchar>> to get the next
57wide character from the standard input stream.  As a side effect,
58<<getwchar>> advances the standard input's current position indicator.
59
60<<getwchar_unlocked>> is a non-thread-safe version of <<getwchar>>.
61<<getwchar_unlocked>> may only safely be used within a scope
62protected by flockfile() (or ftrylockfile()) and funlockfile().  This
63function may safely be used in a multi-threaded program if and only
64if they are called while the invoking thread owns the (FILE *)
65object, as is the case after a successful call to the flockfile() or
66ftrylockfile() functions.  If threads are disabled, then
67<<getwchar_unlocked>> is equivalent to <<getwchar>>.
68
69The alternate functions <<_getwchar_r>> and <<_getwchar_unlocked_r>> are
70reentrant versions of the above.  The extra argument <[reent]> is a pointer to
71a reentrancy structure.
72
73RETURNS
74The next wide character cast to <<wint_t>>, unless there is no more
75data, or the host system reports a read error; in either of these
76situations, <<getwchar>> returns <<WEOF>>.
77
78You can distinguish the two situations that cause an <<WEOF>> result by
79using `<<ferror(stdin)>>' and `<<feof(stdin)>>'.
80
81PORTABILITY
82<<getwchar>> is required by C99.
83
84<<getwchar_unlocked>> is a GNU extension.
85*/
86
87#include <_ansi.h>
88#include <reent.h>
89#include <stdio.h>
90#include <wchar.h>
91#include "local.h"
92
93#undef getwchar
94
95wint_t
96_getwchar_r (struct _reent *ptr)
97{
98  return _fgetwc_r (ptr, stdin);
99}
100
101/*
102 * Synonym for fgetwc(stdin).
103 */
104wint_t
105getwchar (void)
106{
107  _REENT_SMALL_CHECK_INIT (_REENT);
108  return fgetwc (stdin);
109}
Note: See TracBrowser for help on using the repository browser.