Subversion Repositories Kolibri OS

Rev

Rev 4874 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 1990 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  */
  17.  
  18. /*
  19. FUNCTION
  20. <<putchar>>---write a character (macro)
  21.  
  22. INDEX
  23.         putchar
  24. INDEX
  25.         _putchar_r
  26.  
  27. ANSI_SYNOPSIS
  28.         #include <stdio.h>
  29.         int putchar(int <[ch]>);
  30.  
  31.         int _putchar_r(struct _reent *<[reent]>, int <[ch]>);
  32.  
  33. TRAD_SYNOPSIS
  34.         #include <stdio.h>
  35.         int putchar(<[ch]>)
  36.         int <[ch]>;
  37.  
  38.         int _putchar_r(<[reent]>, <[ch]>)
  39.         struct _reent *<[reent]>;
  40.         int <[ch]>;
  41.  
  42. DESCRIPTION
  43. <<putchar>> is a macro, defined in <<stdio.h>>.  <<putchar>>
  44. writes its argument to the standard output stream,
  45. after converting it from an <<int>> to an <<unsigned char>>.
  46.  
  47. The alternate function <<_putchar_r>> is a reentrant version.  The
  48. extra argument <[reent]> is a pointer to a reentrancy structure.
  49.  
  50. RETURNS
  51. If successful, <<putchar>> returns its argument <[ch]>.  If an error
  52. intervenes, the result is <<EOF>>.  You can use `<<ferror(stdin)>>' to
  53. query for errors.
  54.  
  55. PORTABILITY
  56. ANSI C requires <<putchar>>; it suggests, but does not require, that
  57. <<putchar>> be implemented as a macro.
  58.  
  59. Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
  60. <<lseek>>, <<read>>, <<sbrk>>, <<write>>.
  61. */
  62.  
  63. #if defined(LIBC_SCCS) && !defined(lint)
  64. static char sccsid[] = "%W% (Berkeley) %G%";
  65. #endif /* LIBC_SCCS and not lint */
  66.  
  67. /*
  68.  * A subroutine version of the macro putchar.
  69.  */
  70.  
  71. #include <_ansi.h>
  72. #include <reent.h>
  73. #include <stdio.h>
  74. #include "local.h"
  75.  
  76. #undef putchar
  77.  
  78. int
  79. _DEFUN(_putchar_r, (ptr, c),
  80.        struct _reent *ptr _AND
  81.        int c)
  82. {
  83.   _REENT_SMALL_CHECK_INIT (ptr);
  84.   return _putc_r (ptr, c, _stdout_r (ptr));
  85. }
  86.  
  87. #ifndef _REENT_ONLY
  88.  
  89. int
  90. _DEFUN(putchar, (c),
  91.        int c)
  92. {
  93.   struct _reent *reent = _REENT;
  94.  
  95.   _REENT_SMALL_CHECK_INIT (reent);
  96.   return _putc_r (reent, c, _stdout_r (reent));
  97. }
  98.  
  99. #endif
  100.