]> pd.if.org Git - pdclib/blob - functions/stdio/puts.c
Comment cleanups.
[pdclib] / functions / stdio / puts.c
1 /* puts( const char * )
2
3    This file is part of the Public Domain C Library (PDCLib).
4    Permission is granted to use, modify, and / or redistribute at will.
5 */
6
7 #include <stdio.h>
8
9 #ifndef REGTEST
10 #include <_PDCLIB_glue.h>
11
12 extern char * _PDCLIB_eol;
13
14 int puts( const char * s )
15 {
16     if ( _PDCLIB_prepwrite( stdout ) == EOF )
17     {
18         return EOF;
19     }
20     while ( *s != '\0' )
21     {
22         stdout->buffer[ stdout->bufidx++ ] = *s++;
23         if ( stdout->bufidx == stdout->bufsize )
24         {
25             if ( _PDCLIB_flushbuffer( stdout ) == EOF )
26             {
27                 return EOF;
28             }
29         }
30     }
31     stdout->buffer[ stdout->bufidx++ ] = '\n';
32     if ( ( stdout->bufidx == stdout->bufsize ) ||
33          ( stdout->status & ( _IOLBF | _IONBF ) ) )
34     {
35         return _PDCLIB_flushbuffer( stdout );
36     }
37     else
38     {
39         return 0;
40     }
41 }
42
43 #endif
44
45 #ifdef TEST
46 #include <_PDCLIB_test.h>
47
48 int main( void )
49 {
50     FILE * fh;
51     char const * message = "SUCCESS testing puts()";
52     char buffer[23];
53     buffer[22] = 'x';
54     TESTCASE( ( fh = freopen( testfile, "wb+", stdout ) ) != NULL );
55     TESTCASE( puts( message ) >= 0 );
56     rewind( fh );
57     TESTCASE( fread( buffer, 1, 22, fh ) == 22 );
58     TESTCASE( memcmp( buffer, message, 22 ) == 0 );
59     TESTCASE( buffer[22] == 'x' );
60     TESTCASE( fclose( fh ) == 0 );
61     TESTCASE( remove( testfile ) == 0 );
62     return TEST_RESULTS;
63 }
64
65 #endif
66