Use free Windows DDK and compile with latest MinGW releases.
[reactos.git] / reactos / lib / msvcrt / stdio / getc.c
1 #include <msvcrti.h>
2
3
4 //getc can be a macro
5 #undef getc
6
7 int getc(FILE *fp)
8 {
9 int c = -1;
10 // check for invalid stream
11
12 if ( !__validfp (fp) ) {
13 __set_errno(EINVAL);
14 return EOF;
15 }
16 // check for read access on stream
17
18 if ( !OPEN4READING(fp) ) {
19 __set_errno(EINVAL);
20 return -1;
21 }
22
23 if(fp->_cnt > 0) {
24 fp->_cnt--;
25 c = (int)*fp->_ptr++;
26 }
27 else {
28 c = _filbuf(fp);
29 }
30 return c;
31 }
32
33 wint_t getwc(FILE *fp)
34 {
35 int c = -1;
36
37 // check for invalid stream
38 if (!__validfp(fp))
39 {
40 __set_errno(EINVAL);
41 return EOF;
42 }
43
44 // check for read access on stream
45 if (!OPEN4READING(fp))
46 {
47 __set_errno(EINVAL);
48 return -1;
49 }
50
51 // might check on multi bytes if text mode
52
53 if (fp->_cnt > 0)
54 {
55 fp->_cnt -= sizeof(wchar_t);
56 c = (wint_t )*((wchar_t *)(fp->_ptr))++;
57 }
58 else
59 {
60 c = _filwbuf(fp);
61 }
62 return c;
63 }
64
65
66
67