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