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. <<putwchar>>, <<putwchar_unlocked>>---write a wide character to standard output
  30.  
  31. INDEX
  32.         putwchar
  33. INDEX
  34.         putwchar_unlocked
  35. INDEX
  36.         _putwchar_r
  37. INDEX
  38.         _putwchar_unlocked_r
  39.  
  40. ANSI_SYNOPSIS
  41.         #include <wchar.h>
  42.         wint_t putwchar(wchar_t <[wc]>);
  43.  
  44.         #include <wchar.h>
  45.         wint_t putwchar_unlocked(wchar_t <[wc]>);
  46.  
  47.         #include <wchar.h>
  48.         wint_t _putwchar_r(struct _reent *<[reent]>, wchar_t <[wc]>);
  49.  
  50.         #include <wchar.h>
  51.         wint_t _putwchar_unlocked_r(struct _reent *<[reent]>, wchar_t <[wc]>);
  52.  
  53. TRAD_SYNOPSIS
  54.         #include <wchar.h>
  55.         wint_t putwchar(<[wc]>)
  56.         wchar_t <[wc]>;
  57.  
  58.         #include <wchar.h>
  59.         wint_t putwchar_unlocked(<[wc]>)
  60.         wchar_t <[wc]>;
  61.  
  62.         #include <wchar.h>
  63.         wint_t _putwchar_r(<[reent]>, <[wc]>)
  64.         struct _reent *<[reent]>;
  65.         wchar_t <[wc]>;
  66.  
  67.         #include <wchar.h>
  68.         wint_t _putwchar_unlocked_r(<[reent]>, <[wc]>)
  69.         struct _reent *<[reent]>;
  70.         wchar_t <[wc]>;
  71.  
  72. DESCRIPTION
  73. The <<putwchar>> function or macro is the wide-character equivalent of
  74. the <<putchar>> function. It writes the wide character wc to stdout.
  75.  
  76. <<putwchar_unlocked>> is a non-thread-safe version of <<putwchar>>.
  77. <<putwchar_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. <<putwchar_unlocked>> is equivalent to <<putwchar>>.
  84.  
  85. The alternate functions <<_putwchar_r>> and <<_putwchar_unlocked_r>> are
  86. reentrant versions of the above.  The extra argument <[reent]> is a pointer
  87. to a reentrancy structure.
  88.  
  89. RETURNS
  90. If successful, <<putwchar>> returns its argument <[wc]>.  If an error
  91. intervenes, the result is <<EOF>>.  You can use `<<ferror(stdin)>>' to
  92. query for errors.
  93.  
  94. PORTABILITY
  95. <<putwchar>> is required by C99.
  96.  
  97. <<putwchar_unlocked>> is a GNU extension.
  98. */
  99.  
  100. #include <_ansi.h>
  101. #include <reent.h>
  102. #include <stdio.h>
  103. #include <wchar.h>
  104. #include "local.h"
  105.  
  106. #undef putwchar
  107.  
  108. wint_t
  109. _DEFUN(_putwchar_r, (ptr, wc),
  110.         struct _reent *ptr _AND
  111.         wchar_t wc)
  112. {
  113.   return _fputwc_r (ptr, wc, stdout);
  114. }
  115.  
  116. /*
  117.  * Synonym for fputwc(wc, stdout).
  118.  */
  119. wint_t
  120. _DEFUN(putwchar, (wc),
  121.         wchar_t wc)
  122. {
  123.   _REENT_SMALL_CHECK_INIT (_REENT);
  124.   return fputwc (wc, stdout);
  125. }
  126.