CeDOS - Commit 6b537b01

Adding more cstdlib functions
Celina Sophie Kalus
Fri, 24 Nov 2023 16:13:59 +0100
2 files changed, 34 insertions(+), 12 deletions(-)
M src/libcedos/include/stdio.hsrc/libcedos/include/stdio.h

@@ -26,6 +26,10 @@

size_t fread(void*, size_t, size_t, FILE*); size_t fwrite(const void*, size_t, size_t, FILE*); +int vsprintf ( char * str, const char * format, va_list args); +int vfprintf(FILE*, const char*, va_list args); +int vprintf(const char *fmt, va_list args); + int sprintf ( char * str, const char * format, ... ); int fprintf(FILE*, const char*, ...); int printf(const char *fmt, ...);
M src/libcedos/stdio.csrc/libcedos/stdio.c

@@ -65,7 +65,7 @@

return i + 1; } -int sprintf ( char * str, const char * format, ... ); +int sprintf( char * str, const char * format, ... ); int fprintf(FILE*, const char*, ...); int printf(const char *fmt, ...);

@@ -224,33 +224,51 @@ str[offset] = 0;

return offset; } -int printf(const char *fmt, ...) { +int vfprintf(FILE *file, const char *fmt, va_list args) { uint8_t buffer[512]; + int res = vsprintf(buffer, fmt, args); + res = fwrite(buffer, sizeof(uint8_t), res, file); + return res; +} + +int sprintf(char *str, const char *fmt, ...) { va_list args; va_start(args, fmt); - int res = vsprintf(buffer, fmt, args); + int res = vsprintf(str, fmt, args); va_end(args); - res = fwrite(buffer, sizeof(uint8_t), res, stdout); return res; } -int sprintf(char *str, const char *fmt, ...) { +int fprintf(FILE *file, const char *fmt, ...) { va_list args; va_start(args, fmt); - int res = vsprintf(str, fmt, args); + int res = vfprintf(file, fmt, args); va_end(args); return res; } -int fprintf(FILE*, const char*, ...); -FILE* fopen(const char*, const char*); +int vprintf(const char *fmt, va_list args) { + return vfprintf(stdout, fmt, args); +} -int fseek(FILE*, long, int); -long ftell(FILE*); +int printf(const char *fmt, ...) { + va_list args; -size_t fread(void*, size_t, size_t, FILE*); -size_t fwrite(const void*, size_t, size_t, FILE*);+ va_start(args, fmt); + int res = vfprintf(stdout, fmt, args); + va_end(args); + + return res; +} + +int fseek(FILE* file, long offset, int whence) { + return sc_file_lseek(file, offset, whence); +} + +long ftell(FILE* file) { + return sc_file_tell(file); +}