comparison packages/language/c/libc/stdio/current/src/output/fputc.cxx @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents
children e0c0827131d1
comparison
equal deleted inserted replaced
114:5ad2b71d525e 115:6ed91473a1cd
1 //===========================================================================
2 //
3 // fputc.cxx
4 //
5 // ISO Standard I/O character output functions
6 //
7 //===========================================================================
8 //####COPYRIGHTBEGIN####
9 //
10 // -------------------------------------------
11 // The contents of this file are subject to the Red Hat eCos Public License
12 // Version 1.1 (the "License"); you may not use this file except in
13 // compliance with the License. You may obtain a copy of the License at
14 // http://www.redhat.com/
15 //
16 // Software distributed under the License is distributed on an "AS IS"
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
18 // License for the specific language governing rights and limitations under
19 // the License.
20 //
21 // The Original Code is eCos - Embedded Configurable Operating System,
22 // released September 30, 1998.
23 //
24 // The Initial Developer of the Original Code is Red Hat.
25 // Portions created by Red Hat are
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
27 // All Rights Reserved.
28 // -------------------------------------------
29 //
30 //####COPYRIGHTEND####
31 //===========================================================================
32 //#####DESCRIPTIONBEGIN####
33 //
34 // Author(s): jlarmour
35 // Contributors:
36 // Date: 2000-04-20
37 // Purpose: Provide the fputc() function. Also provides the function
38 // versions of putc() and putchar()
39 // Description:
40 // Usage:
41 //
42 //####DESCRIPTIONEND####
43 //
44 //===========================================================================
45
46 // CONFIGURATION
47
48 #include <pkgconf/libc_stdio.h> // Configuration header
49
50 // INCLUDES
51
52 #include <cyg/infra/cyg_type.h> // Common project-wide type definitions
53 #include <cyg/infra/cyg_ass.h> // Standard eCos assertion support
54 #include <cyg/infra/cyg_trac.h> // Standard eCos tracing support
55 #include <stddef.h> // NULL and size_t from compiler
56 #include <stdio.h> // header for this file
57 #include <errno.h> // error codes
58 #include <cyg/libc/stdio/stream.hxx>// Cyg_StdioStream
59
60 // FUNCTIONS
61
62 externC int
63 fputc( int c, FILE *stream )
64 {
65 Cyg_StdioStream *real_stream = (Cyg_StdioStream *)stream;
66 Cyg_ErrNo err;
67 cyg_uint8 real_c = (cyg_uint8) c;
68
69 CYG_REPORT_FUNCNAMETYPE("fputc", "wrote char %d");
70 CYG_REPORT_FUNCARG2( "c = %d, stream=%08x", c, stream );
71
72 CYG_CHECK_DATA_PTR( stream, "stream is not a valid pointer" );
73
74 err = real_stream->write_byte( real_c );
75
76 if (err)
77 {
78 real_stream->set_error( err );
79 errno = err;
80 CYG_REPORT_RETVAL(EOF);
81 return EOF;
82 } // if
83
84 CYG_REPORT_RETVAL((int)real_c);
85 return (int)real_c;
86
87 } // fputc()
88
89
90 // Also define putchar() even though it can be a macro.
91 // Undefine the macro first though
92 #undef putchar
93
94 externC int
95 putchar( int c )
96 {
97 return fputc( c, stdout );
98 } // putchar()
99
100 // Also define putc() even though it can be a macro.
101 // Undefine the macro first though
102 #undef putc
103
104 externC int
105 putc( int, FILE * ) CYGBLD_ATTRIB_WEAK_ALIAS(fputc);
106
107 // EOF fputc.cxx