Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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. /*
  28. FUNCTION
  29. <<getwchar>>, <<getwchar_unlocked>>---read a wide character from standard input
  30.  
  31. INDEX
  32.         getwchar
  33. INDEX
  34.         getwchar_unlocked
  35. INDEX
  36.         _getwchar_r
  37. INDEX
  38.         _getwchar_unlocked_r
  39.  
  40. ANSI_SYNOPSIS
  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.  
  54. TRAD_SYNOPSIS
  55.         #include <wchar.h>
  56.         wint_t getwchar();
  57.  
  58.         #define _GNU_SOURCE
  59.         #include <wchar.h>
  60.         wint_t getwchar_unlocked();
  61.  
  62.         #include <wchar.h>
  63.         wint_t _getwchar_r(<[reent]>)
  64.         char * <[reent]>;
  65.  
  66.         #include <wchar.h>
  67.         wint_t _getwchar_unlocked_r(<[reent]>)
  68.         char * <[reent]>;
  69.  
  70. DESCRIPTION
  71. <<getwchar>> function or macro is the wide character equivalent of
  72. the <<getchar>> function.  You can use <<getwchar>> to get the next
  73. wide character from the standard input stream.  As a side effect,
  74. <<getwchar>> advances the standard input's current position indicator.
  75.  
  76. <<getwchar_unlocked>> is a non-thread-safe version of <<getwchar>>.
  77. <<getwchar_unlocked>> may only safely be used within a scope
  78. protected by flockfile() (or ftrylockfile()) and funlockfile().  This
  79. function may safely be used in a multi-threaded program if and only
  80. if they are called while the invoking thread owns the (FILE *)
  81. object, as is the case after a successful call to the flockfile() or
  82. ftrylockfile() functions.  If threads are disabled, then
  83. <<getwchar_unlocked>> is equivalent to <<getwchar>>.
  84.  
  85. The alternate functions <<_getwchar_r>> and <<_getwchar_unlocked_r>> are
  86. reentrant versions of the above.  The extra argument <[reent]> is a pointer to
  87. a reentrancy structure.
  88.  
  89. RETURNS
  90. The next wide character cast to <<wint_t>>, unless there is no more
  91. data, or the host system reports a read error; in either of these
  92. situations, <<getwchar>> returns <<WEOF>>.
  93.  
  94. You can distinguish the two situations that cause an <<WEOF>> result by
  95. using `<<ferror(stdin)>>' and `<<feof(stdin)>>'.
  96.  
  97. PORTABILITY
  98. <<getwchar>> is required by C99.
  99.  
  100. <<getwchar_unlocked>> is a GNU extension.
  101. */
  102.  
  103. #include <_ansi.h>
  104. #include <reent.h>
  105. #include <stdio.h>
  106. #include <wchar.h>
  107. #include "local.h"
  108.  
  109. #undef getwchar
  110.  
  111. wint_t
  112. _DEFUN (_getwchar_r, (ptr),
  113.         struct _reent *ptr)
  114. {
  115.   return _fgetwc_r (ptr, stdin);
  116. }
  117.  
  118. /*
  119.  * Synonym for fgetwc(stdin).
  120.  */
  121. wint_t
  122. _DEFUN_VOID (getwchar)
  123. {
  124.   _REENT_SMALL_CHECK_INIT (_REENT);
  125.   return fgetwc (stdin);
  126. }
  127.