forked from KolibriOS/kolibrios
kolibri-libc:
- Fixed fwrite. - Added strcat to the export table. - Fixed two functions in ksys.h. - Added binaries for autobuild git-svn-id: svn://kolibrios.org@8705 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
3b21d367d3
commit
da310946f0
@ -349,7 +349,7 @@ unsigned _ksys_get_skin_height()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void _ksys_get_colors(ksys_colors_table_t *color_table)
|
void _ksys_get_system_colors(ksys_colors_table_t *color_table)
|
||||||
{
|
{
|
||||||
asm_inline(
|
asm_inline(
|
||||||
"int $0x40"
|
"int $0x40"
|
||||||
@ -1015,6 +1015,7 @@ ksys_drv_hand_t _ksys_load_driver(char *driver_name)
|
|||||||
return driver_h;
|
return driver_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
ksys_drv_hand_t _ksys_load_pe_driver(char *driver_path, char *cmd_line)
|
ksys_drv_hand_t _ksys_load_pe_driver(char *driver_path, char *cmd_line)
|
||||||
{
|
{
|
||||||
ksys_drv_hand_t driver_h;
|
ksys_drv_hand_t driver_h;
|
||||||
|
BIN
programs/develop/libraries/kolibri-libc/lib/crt0.o
Normal file
BIN
programs/develop/libraries/kolibri-libc/lib/crt0.o
Normal file
Binary file not shown.
BIN
programs/develop/libraries/kolibri-libc/lib/libc.obj.a
Normal file
BIN
programs/develop/libraries/kolibri-libc/lib/libc.obj.a
Normal file
Binary file not shown.
@ -11,7 +11,8 @@ math_test.kex \
|
|||||||
string_test.kex \
|
string_test.kex \
|
||||||
whois.kex \
|
whois.kex \
|
||||||
file_io.kex \
|
file_io.kex \
|
||||||
tmpdisk_work.kex
|
tmpdisk_work.kex \
|
||||||
|
exp_drv_work.kex
|
||||||
|
|
||||||
|
|
||||||
all: $(BIN)
|
all: $(BIN)
|
||||||
|
@ -1,38 +1,11 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/ksys.h>
|
|
||||||
|
|
||||||
int fgetc(FILE* stream)
|
int fgetc(FILE* stream)
|
||||||
{
|
{
|
||||||
unsigned bytes_read;
|
int c=EOF;
|
||||||
char c;
|
if(fwrite(&c, sizeof(int), 1, stream)==1){
|
||||||
|
return c;
|
||||||
unsigned status = _ksys_file_read_file(stream->name, stream->position, 1, &c, &bytes_read);
|
}else{
|
||||||
|
|
||||||
if (status != KSYS_FS_ERR_SUCCESS) {
|
|
||||||
switch (status) {
|
|
||||||
case KSYS_FS_ERR_EOF:
|
|
||||||
stream->eof = 1;
|
|
||||||
break;
|
|
||||||
case KSYS_FS_ERR_1:
|
|
||||||
case KSYS_FS_ERR_2:
|
|
||||||
case KSYS_FS_ERR_3:
|
|
||||||
case KSYS_FS_ERR_4:
|
|
||||||
case KSYS_FS_ERR_5:
|
|
||||||
case KSYS_FS_ERR_7:
|
|
||||||
case KSYS_FS_ERR_8:
|
|
||||||
case KSYS_FS_ERR_9:
|
|
||||||
case KSYS_FS_ERR_10:
|
|
||||||
case KSYS_FS_ERR_11:
|
|
||||||
default:
|
|
||||||
// Just some IO error, who knows what exactly happened
|
|
||||||
errno = EIO;
|
|
||||||
stream->error = errno;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
stream->position++;
|
|
||||||
return c;
|
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,34 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include "conio.h"
|
||||||
|
#include "sys/ksys.h"
|
||||||
|
|
||||||
size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) {
|
size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) {
|
||||||
unsigned bytes_read = 0;
|
unsigned bytes_read = 0;
|
||||||
unsigned bytes_count = size * nmemb;
|
unsigned bytes_count = size * nmemb;
|
||||||
|
|
||||||
for (size_t i = 0; i < bytes_count; i++) {
|
if(!stream){
|
||||||
char c = fgetc(stream);
|
errno = EINVAL;
|
||||||
|
return 0;
|
||||||
if (c == EOF) {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*(char*)(ptr+i) = c;
|
if(stream==stdin){
|
||||||
|
__con_init();
|
||||||
bytes_read++;
|
__con_gets((char*)ptr, bytes_count);
|
||||||
|
return nmemb;
|
||||||
}
|
}
|
||||||
|
|
||||||
return bytes_read / size;
|
else{
|
||||||
|
if(stream->mode != _STDIO_F_W){
|
||||||
|
unsigned status = _ksys_file_read_file(stream->name, stream->position, bytes_count, ptr , &bytes_read);
|
||||||
|
if (status != KSYS_FS_ERR_SUCCESS) {
|
||||||
|
errno = EIO;
|
||||||
|
stream->error = errno;
|
||||||
|
return 0;
|
||||||
|
}else {
|
||||||
|
stream->position+=bytes_read;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bytes_read;
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,7 @@ memmove
|
|||||||
memset
|
memset
|
||||||
strncat
|
strncat
|
||||||
strchr
|
strchr
|
||||||
|
strcat
|
||||||
strcmp
|
strcmp
|
||||||
strcoll
|
strcoll
|
||||||
strcpy
|
strcpy
|
||||||
|
Loading…
Reference in New Issue
Block a user