]> pd.if.org Git - pdclib/blob - functions/stdio/puts.c
Merged branch stdio_rewrite back into trunk.
[pdclib] / functions / stdio / puts.c
1 /* $Id$ */
2
3 /* puts( const char * )
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 #include <_PDCLIB_glue.h>
13
14 extern char * _PDCLIB_eol;
15
16 int puts( const char * s )
17 {
18     if ( _PDCLIB_prepwrite( stdout ) == EOF )
19     {
20         return EOF;
21     }
22     while ( *s != '\0' )
23     {
24         stdout->buffer[ stdout->bufidx++ ] = *s++;
25         if ( stdout->bufidx == stdout->bufsize )
26         {
27             if ( _PDCLIB_flushbuffer( stdout ) == EOF )
28             {
29                 return EOF;
30             }
31         }
32     }
33     s = _PDCLIB_eol;
34     while ( *s != '\0' )
35     {
36         stdout->buffer[ stdout->bufidx++ ] = *s++;
37         if ( stdout->bufidx == stdout->bufsize )
38         {
39             if ( _PDCLIB_flushbuffer( stdout ) == EOF )
40             {
41                 return EOF;
42             }
43         }
44     }
45     if ( stdout->status & ( _IOLBF | _IONBF ) )
46     {
47         return _PDCLIB_flushbuffer( stdout );
48     }
49     return 0;
50 }
51
52 #endif
53
54 #ifdef TEST
55 #include <_PDCLIB_test.h>
56
57 int main( void )
58 {
59     TESTCASE( puts( "SUCCESS testing puts()" ) >= 0 );
60     return TEST_RESULTS;
61 }
62
63 #endif
64