Subversion Repositories Kolibri OS

Rev

Rev 8705 | 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){
16
		__con_init();
8730 turbocat 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
}