Line | |
---|
1 | #include "dietstdio.h" |
---|
2 | |
---|
3 | char *fgets_unlocked(char *s, int size, FILE *stream) { |
---|
4 | int l; |
---|
5 | for (l=0; l<size; ) { |
---|
6 | register int c; |
---|
7 | if (l && stream->bm<stream->bs) { |
---|
8 | /* try common case first */ |
---|
9 | c=(unsigned char)stream->buf[stream->bm++]; |
---|
10 | } else { |
---|
11 | c=fgetc_unlocked(stream); |
---|
12 | if (c==EOF) { |
---|
13 | if (!l) return 0; |
---|
14 | goto fini; |
---|
15 | } |
---|
16 | } |
---|
17 | s[l]=c; |
---|
18 | ++l; |
---|
19 | if (c=='\n') { |
---|
20 | fini: |
---|
21 | s[l]=0; |
---|
22 | return s; |
---|
23 | } |
---|
24 | } |
---|
25 | return 0; |
---|
26 | } |
---|
27 | |
---|
28 | char*fgets(char*s,int size,FILE*stream) __attribute__((weak,alias("fgets_unlocked"))); |
---|
Note: See
TracBrowser
for help on using the repository browser.