]> pd.if.org Git - pdclib/blob - functions/stdio/clearerr.c
922f6ab9d239e18cbf5eea9d959d0102c10d9f54
[pdclib] / functions / stdio / clearerr.c
1 /* $Id$ */
2
3 /* clearerr( 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 void clearerr( struct _PDCLIB_file_t * stream )
14 {
15     stream->status &= ~( _PDCLIB_ERRORFLAG | _PDCLIB_EOFFLAG );
16 }
17
18 #endif
19
20 #ifdef TEST
21 #include <_PDCLIB_test.h>
22
23 int main( void )
24 {
25     FILE * fh;
26     remove( "testfile" );
27     TESTCASE( ( fh = fopen( "testfile", "w+" ) ) != NULL );
28     /* Flags should be clear */
29     TESTCASE( ! ferror( fh ) );
30     TESTCASE( ! feof( fh ) );
31     /* Reading from input stream - should provoke error */
32     TESTCASE( fgetc( fh ) == EOF );
33     TESTCASE( ferror( fh ) );
34     TESTCASE( ! feof( fh ) );
35     /* clearerr() should clear flags */
36     clearerr( fh );
37     TESTCASE( ! ferror( fh ) );
38     TESTCASE( ! feof( fh ) );
39     /* Reading from empty stream - should provoke EOF */
40     rewind( fh );
41     TESTCASE( fgetc( fh ) == EOF );
42     TESTCASE( ! ferror( fh ) );
43     TESTCASE( feof( fh ) );
44     /* clearerr() should clear flags */
45     clearerr( fh );
46     TESTCASE( ! ferror( fh ) );
47     TESTCASE( ! feof( fh ) );
48     TESTCASE( fclose( fh ) == 0 );
49     remove( "testfile" );
50     return TEST_RESULTS;
51 }
52
53 #endif
54