]> pd.if.org Git - pdclib/blob - functions/stdio/fputc.c
Added some functions.
[pdclib] / functions / stdio / fputc.c
1 /* $Id$ */
2
3 /* fputc( int, FILE * )
4
5    This file is part of the Public Domain C Library (PDCLib).
6    Permission is granted to use, modify, and / or redistribute at will.
7 */
8
9 #include <stdio.h>
10
11 #ifndef REGTEST
12
13 /* Write the value c (cast to unsigned char) to the given stream.
14    Returns c if successful, EOF otherwise.
15    If a write error occurs, sets the error indicator of the stream is set.
16 */
17 int fputc( int c, struct _PDCLIB_file_t * stream )
18 {
19     /* FIXME: This is devoid of any error checking (file writeable? r/w
20     constraints honored?) (Text format translations?)
21     */
22     stream->buffer[stream->bufidx++] = (char)c;
23     if ( ( stream->bufidx == stream->bufsize )                   /* _IOFBF */
24            || ( ( stream->status & _IOLBF ) && (char)c == '\n' ) /* _IOLBF */
25            || ( stream->status & _IONBF )                        /* _IONBF */
26     )
27     {
28         /* buffer filled, unbuffered stream, or end-of-line. */
29         fflush( stream );
30     }
31     return c;
32 }
33
34 #endif
35
36 #ifdef TEST
37 #include <_PDCLIB_test.h>
38
39 int main( void )
40 {
41     TESTCASE( NO_TESTDRIVER );
42     return TEST_RESULTS;
43 }
44
45 #endif