Files
armorpaint/base/sources/miniclib/stdio.c
T
2026-03-18 11:54:57 +01:00

106 lines
2.6 KiB
C

#include "stdio.h"
#define STB_SPRINTF_IMPLEMENTATION
#include "stb_sprintf.h"
#ifdef IRON_WASM
__attribute__((import_module("imports"), import_name("js_printf"))) void js_printf(const char *format);
__attribute__((import_module("imports"), import_name("js_fopen"))) FILE *js_fopen(const char *filename);
__attribute__((import_module("imports"), import_name("js_ftell"))) long int js_ftell(FILE *stream);
__attribute__((import_module("imports"), import_name("js_fseek"))) int js_fseek(FILE *stream, long int offset, int origin);
__attribute__((import_module("imports"), import_name("js_fread"))) size_t js_fread(void *ptr, size_t size, size_t count, FILE *stream);
__attribute__((import_module("imports"), import_name("js_fwrite"))) size_t js_fwrite(void *ptr, size_t size, size_t count, FILE *stream);
#endif
FILE *stdout = NULL, *stderr = NULL;
int printf(const char *format, ...) {
char buf[1024];
va_list args;
va_start(args, format);
int ret = stbsp_vsnprintf(buf, sizeof(buf), format, args);
va_end(args);
#ifdef IRON_WASM
js_printf(buf);
#endif
return ret;
}
int fprintf(FILE *stream, const char *format, ...) {
char buf[1024];
va_list args;
va_start(args, format);
int ret = stbsp_vsnprintf(buf, sizeof(buf), format, args);
va_end(args);
#ifdef IRON_WASM
js_printf(buf);
#endif
return ret;
}
int sprintf(char *s, const char *format, ...) {
va_list args;
va_start(args, format);
int ret = stbsp_vsprintf(s, format, args);
va_end(args);
return ret;
}
int snprintf(char *s, size_t n, const char *format, ...) {
va_list args;
va_start(args, format);
int ret = stbsp_vsnprintf(s, (int)n, format, args);
va_end(args);
return ret;
}
int vsnprintf(char *s, size_t n, const char *format, va_list arg) {
return stbsp_vsnprintf(s, (int)n, format, arg);
}
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream) {
#ifdef IRON_WASM
js_fwrite(ptr, size, count, stream);
#endif
return 0;
}
FILE *fopen(const char *filename, const char *mode) {
#ifdef IRON_WASM
return js_fopen(filename);
#endif
return NULL;
}
int fclose(FILE *stream) {
return 0;
}
long int ftell(FILE *stream) {
#ifdef IRON_WASM
return js_ftell(stream);
#endif
return 0;
}
int fseek(FILE *stream, long int offset, int origin) {
#ifdef IRON_WASM
return js_fseek(stream, offset, origin);
#endif
return 0;
}
size_t fread(void *ptr, size_t size, size_t count, FILE *stream) {
#ifdef IRON_WASM
return js_fread(ptr, size, count, stream);
#endif
return 0;
}
int fputs(const char *str, FILE *stream) {
return 0;
}
int puts(char *str) {
return 0;
}