Rev 8730 | Rev 8793 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8687 | turbocat | 1 | #include |
8705 | turbocat | 2 | #include |
3 | #include "conio.h" |
||
4 | #include "sys/ksys.h" |
||
8687 | turbocat | 5 | |
6 | size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) { |
||
7 | unsigned bytes_read = 0; |
||
8 | unsigned bytes_count = size * nmemb; |
||
8705 | turbocat | 9 | |
10 | if(!stream){ |
||
8730 | turbocat | 11 | errno = EBADF; |
8705 | turbocat | 12 | return 0; |
13 | } |
||
14 | |||
15 | if(stream==stdin){ |
||
8744 | turbocat | 16 | con_init(); |
17 | con_gets((char*)ptr, bytes_count+1); |
||
8705 | turbocat | 18 | return nmemb; |
19 | } |
||
8687 | turbocat | 20 | |
8705 | turbocat | 21 | else{ |
8730 | turbocat | 22 | if(stream->mode & _FILEMODE_R){ |
23 | if(!stream->__ungetc_emu_buff){ |
||
24 | ((char*) ptr)[0]=(char)stream->__ungetc_emu_buff; |
||
25 | //debug_printf("Ungetc: %x\n", ((char*) ptr)[0]); |
||
26 | } |
||
8705 | turbocat | 27 | unsigned status = _ksys_file_read_file(stream->name, stream->position, bytes_count, ptr , &bytes_read); |
8730 | turbocat | 28 | if (status) { |
8705 | turbocat | 29 | errno = EIO; |
30 | stream->error = errno; |
||
31 | return 0; |
||
32 | }else { |
||
33 | stream->position+=bytes_read; |
||
34 | } |
||
8687 | turbocat | 35 | } |
36 | } |
||
8705 | turbocat | 37 | return bytes_read; |
8687 | turbocat | 38 | } |