Mercurial > flash_v2
annotate packages/language/c/libc/current/include/stdio.h @ 64:c38311975d4f ecos-sw-2000-01-28
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
| author | jlarmour |
|---|---|
| date | Fri, 28 Jan 2000 04:59:39 +0000 |
| parents | 4741a3c3496a |
| children | bf00f99aec69 |
| rev | line source |
|---|---|
| 0 | 1 #ifndef CYGONCE_LIBC_STDIO_H |
| 2 #define CYGONCE_LIBC_STDIO_H | |
| 3 //======================================================================== | |
| 4 // | |
| 5 // stdio.h | |
| 6 // | |
| 7 // ISO C standard I/O routines - with some POSIX 1003.1 extensions | |
| 8 // | |
| 9 //======================================================================== | |
| 10 //####COPYRIGHTBEGIN#### | |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
11 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
12 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
13 // The contents of this file are subject to the Red Hat eCos Public License |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
14 // Version 1.0 (the "License"); you may not use this file except in |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
15 // compliance with the License. You may obtain a copy of the License at |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
16 // http://sourceware.cygnus.com/ecos |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
17 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
18 // Software distributed under the License is distributed on an |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
19 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
20 // License for the specific language governing rights and limitations under |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
21 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
22 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
23 // The Original Code is eCos - Embedded Configurable Operating System, |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
24 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
25 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
26 // The Initial Developer of the Original Code is Red Hat. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
27 // Portions created by Red Hat are |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
28 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
29 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
30 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
26
diff
changeset
|
31 // |
| 0 | 32 //####COPYRIGHTEND#### |
| 33 //======================================================================== | |
| 34 //#####DESCRIPTIONBEGIN#### | |
| 35 // | |
| 36 // Author(s): jlarmour | |
| 2 | 37 // Contributors: jlarmour |
| 38 // Date: 1999-01-19 | |
| 39 // Purpose: ISO C standard I/O routines | |
| 0 | 40 // Description: |
| 41 // Usage: #include <stdio.h> | |
| 42 // | |
| 43 //####DESCRIPTIONEND#### | |
| 44 // | |
| 45 //======================================================================== | |
| 46 | |
| 47 // CONFIGURATION | |
| 48 | |
| 49 #include <pkgconf/libc.h> // Configuration header | |
| 50 | |
| 51 // Include the C library? | |
| 52 #ifdef CYGPKG_LIBC | |
| 53 | |
| 54 // INCLUDES | |
| 55 | |
| 56 #include <cyg/infra/cyg_type.h> // common type definitions and support | |
| 57 #include <stddef.h> // NULL and size_t from compiler | |
| 58 #include <stdarg.h> // va_list from compiler | |
| 59 | |
| 60 // CONSTANTS | |
| 61 | |
| 62 // Some of these values are odd to ensure that asserts have better effect | |
| 63 // should spurious values be passed to functions expecting these constants. | |
| 64 | |
| 65 // _IOFBF, _IOLBF, and _IONBF specify full, line or no buffering when used | |
| 66 // with setvbuf() - ISO C standard chap 7.9.1 | |
| 67 | |
| 68 #define _IOFBF (-2) | |
| 69 #define _IOLBF (-4) | |
| 70 #define _IONBF (-8) | |
| 71 | |
| 72 // EOF is a macro defined to any negative integer constant - ISO C standard | |
| 73 // chap. 7.9.1 | |
| 74 #define EOF (-1) | |
| 75 | |
| 76 // SEEK_CUR, SEEK_END and SEEK_SET are used with fseek() as position | |
| 77 // anchors - ISO C standard chap. 7.9.1 | |
| 2 | 78 #define SEEK_SET 0 |
| 79 #define SEEK_CUR 1 | |
| 80 #define SEEK_END 2 | |
| 0 | 81 |
| 82 | |
| 83 // TYPE DEFINITIONS | |
| 84 | |
| 85 // A type capable of specifying uniquely every file position - ISO C | |
| 86 // standard chap 7.9.1 | |
| 87 typedef cyg_ucount32 fpos_t; | |
| 88 | |
| 89 | |
|
16
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
90 // FILE is just cast to an address here. It is uncast internally to the |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
91 // C library in stream.hxx as the C++ Cyg_StdioStream class. |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
92 // Optional run-time checking can be enabled to ensure that the cast is |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
93 // valid, using the standard assertion functionality. |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
94 // |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
95 // The array size is irrelevant other than being more than 8, and is present |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
96 // to stop references to FILEs being marked as able to be put in the small |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
97 // data section. We can't just mark it as in the ".data" section as on some |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
98 // targets it may actually be ".common". Maybe this doesn't matter? |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
99 // FIXME: This doesn't work if things are larger than 16 are put in sdata, |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
100 // e.g. on mips by specifying -G 32 |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
101 typedef CYG_ADDRESS FILE[16]; |
| 2 | 102 |
| 0 | 103 // EXTERNAL VARIABLES |
| 104 | |
| 105 // Default file streams for input/output. These only need to be | |
| 106 // expressions, not l-values - ISO C standard chap. 7.9.1 | |
| 2 | 107 // |
| 108 // cyg_libc_stdio_stdin/out/err aren't really files of course, | |
| 109 // but they are only named here so that we can take the address of | |
| 110 // them, in which case it doesn't matter what type they point to really | |
| 111 // | |
| 112 // CYGPRI_LIBC_STDIO_NO_DEFAULT_STREAMS is used when initializing | |
| 113 // cyg_libc_stdio_stdin/out/err privately inside the C library | |
| 0 | 114 |
| 2 | 115 #ifndef CYGPRI_LIBC_STDIO_NO_DEFAULT_STREAMS |
| 116 extern FILE cyg_libc_stdio_stdin, cyg_libc_stdio_stdout, | |
|
16
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
117 cyg_libc_stdio_stderr; |
| 2 | 118 |
| 119 #define stdin (&cyg_libc_stdio_stdin) | |
| 120 #define stdout (&cyg_libc_stdio_stdout) | |
| 121 #define stderr (&cyg_libc_stdio_stderr) | |
| 122 #endif | |
| 0 | 123 |
| 124 // FUNCTION PROTOTYPES | |
| 125 | |
| 126 //======================================================================== | |
| 127 | |
| 128 // ISO C 7.9.5 File access functions | |
| 129 | |
| 130 externC int | |
| 131 fclose( FILE * /* stream */ ); | |
| 132 | |
| 133 externC int | |
| 134 fflush( FILE * /* stream */ ); | |
| 135 | |
| 136 externC FILE * | |
| 137 fopen( const char * /* filename */, const char * /* mode */ ); | |
| 138 | |
| 139 externC FILE * | |
| 140 freopen( const char * /* filename */, const char * /* mode */, | |
| 141 FILE * /* stream */ ); | |
| 142 | |
| 143 externC void | |
| 144 setbuf( FILE * /* stream */, char * /* buffer */ ); | |
| 145 | |
| 146 externC int | |
| 147 setvbuf( FILE * /* stream */, char * /* buffer */, int /* mode */, | |
| 148 size_t /* size */ ); | |
| 149 | |
| 150 //======================================================================== | |
| 151 | |
| 152 // ISO C 7.9.6 Formatted input/output functions | |
| 153 | |
| 154 externC int | |
| 155 fprintf( FILE * /* stream */, const char * /* format */, ... ); | |
| 156 | |
| 157 externC int | |
| 158 fscanf( FILE * /* stream */, const char * /* format */, ... ); | |
| 159 | |
| 160 externC int | |
| 161 printf( const char * /* format */, ... ); | |
| 162 | |
| 163 externC int | |
| 164 scanf( const char * /* format */, ... ); | |
| 165 | |
| 166 externC int | |
| 167 sprintf( char * /* str */, const char * /* format */, ... ); | |
| 168 | |
| 169 externC int | |
| 170 sscanf( const char * /* str */, const char * /* format */, ... ); | |
| 171 | |
| 172 externC int | |
| 173 vfprintf( FILE * /* stream */, const char * /* format */, | |
| 174 va_list /* args */ ); | |
| 175 | |
| 176 externC int | |
| 177 vprintf( const char * /* format */, va_list /* args */ ); | |
| 178 | |
| 179 externC int | |
| 180 vsprintf( char * /* str */, const char * /* format */, | |
| 181 va_list /* args */ ); | |
| 182 | |
| 183 //======================================================================== | |
| 184 | |
| 185 // ISO C 7.9.7 Character input/output functions | |
| 186 | |
| 187 externC int | |
| 188 fgetc( FILE * /* stream */ ); | |
| 189 | |
| 190 externC char * | |
| 191 fgets( char * /* str */, int /* length */, FILE * /* stream */ ); | |
| 192 | |
| 193 externC int | |
| 194 fputc( int /* c */, FILE * /* stream */ ); | |
| 195 | |
| 196 externC int | |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
197 putc( int /* c */, FILE * /* stream */ ); |
| 0 | 198 |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
199 externC int |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
200 putchar( int /* c */ ); |
| 0 | 201 |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
202 externC int |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
203 fputs( const char * /* str */, FILE * /* stream */ ); |
| 0 | 204 |
| 205 externC char * | |
| 206 gets( char * ); | |
| 207 | |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
208 externC int |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
209 getc( FILE * /* stream */ ); |
| 0 | 210 |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
211 externC int |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
212 getchar( void ); |
| 0 | 213 |
| 214 externC int | |
| 215 puts( const char * /* str */ ); | |
| 216 | |
| 217 externC int | |
| 218 ungetc( int /* c */, FILE * /* stream */ ); | |
| 219 | |
|
26
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
220 // no function equivalent is required for getchar() or putchar(), so we can |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
221 // just #define them |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
222 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
223 #define getchar() fgetc( stdin ) |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
224 |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
225 #define putchar(__c) fputc(__c, stdout) |
|
4741a3c3496a
Merge from eCos master repository on 1999-07-23-05:47:06-BST
jlarmour
parents:
16
diff
changeset
|
226 |
| 0 | 227 //======================================================================== |
| 228 | |
| 229 // ISO C 7.9.8 Direct input/output functions | |
| 230 | |
| 231 externC size_t | |
| 232 fread( void * /* ptr */, size_t /* object_size */, | |
| 233 size_t /* num_objects */, FILE * /* stream */ ); | |
| 234 | |
| 235 externC size_t | |
| 236 fwrite( const void * /* ptr */, size_t /* object_size */, | |
| 237 size_t /* num_objects */, FILE * /* stream */ ); | |
| 238 | |
| 239 | |
| 240 //======================================================================== | |
| 241 | |
| 242 // ISO C 7.9.10 Error-handling functions | |
| 243 | |
| 244 externC void | |
| 245 clearerr( FILE * /* stream */ ); | |
| 246 | |
| 247 externC int | |
| 248 feof( FILE * /* stream */ ); | |
| 249 | |
| 250 externC int | |
| 251 ferror( FILE * /* stream */ ); | |
| 252 | |
| 253 externC void | |
| 254 perror( const char * /* prefix_str */ ); | |
| 255 | |
| 256 //======================================================================== | |
| 257 | |
| 258 // Other non-ISO C functions | |
| 259 | |
| 260 externC int | |
| 261 fnprintf( FILE * /* stream */, size_t /* length */, | |
| 262 const char * /* format */, ... ); | |
| 263 | |
| 264 externC int | |
| 265 snprintf( char * /* str */, size_t /* length */, const char * /* format */, | |
| 266 ... ); | |
| 267 | |
| 268 externC int | |
| 269 vfnprintf( FILE * /* stream */, size_t /* length */, | |
| 270 const char * /* format */, va_list /* args */ ); | |
| 271 | |
| 272 externC int | |
| 273 vsnprintf( char * /* str */, size_t /* length */, | |
| 274 const char * /* format */, va_list /* args */ ); | |
| 275 | |
| 276 externC int | |
| 277 vscanf( const char * /* format */, va_list /* args */ ); | |
| 278 | |
| 279 externC int | |
| 280 vsscanf( const char * /* str */, const char * /* format */, | |
| 281 va_list /* args */ ); | |
| 282 | |
| 283 externC int | |
| 284 vfscanf( FILE * /* stream */, const char * /* format */, | |
| 285 va_list /* args */ ); | |
| 286 | |
| 287 | |
| 288 // INLINE FUNCTIONS | |
| 289 | |
| 290 #ifdef CYGIMP_LIBC_STDIO_INLINES | |
| 291 #include <stdio.inl> | |
| 292 #endif | |
| 293 | |
| 294 #endif // ifdef CYGPKG_LIBC | |
| 295 | |
| 296 #endif // CYGONCE_LIBC_STDIO_H multiple inclusion protection | |
| 297 | |
| 298 // EOF stdio.h |
