52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
#ifndef MINI_STDIO_H
|
|
#define MINI_STDIO_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef unsigned long size_t;
|
|
typedef long off_t;
|
|
|
|
#define O_RDONLY 0
|
|
#define O_WRONLY 1
|
|
#define O_RDWR 2
|
|
#define O_CREAT 64
|
|
#define O_TRUNC 512
|
|
#define O_APPEND 1024
|
|
#define O_CLOEXEC 02000000
|
|
|
|
typedef __builtin_va_list va_list;
|
|
#define va_start(ap,last) __builtin_va_start(ap,last)
|
|
#define va_arg(ap,type) __builtin_va_arg(ap,type)
|
|
#define va_end(ap) __builtin_va_end(ap)
|
|
|
|
#define SYS_READ 0
|
|
#define SYS_WRITE 1
|
|
#define SYS_OPEN 2
|
|
#define SYS_CLOSE 3
|
|
#define SYS_LSEEK 8
|
|
|
|
static inline long _syscall3(long nr,long a1,long a2,long a3){long ret;asm volatile("syscall":"=a"(ret):"a"(nr),"D"(a1),"S"(a2),"d"(a3):"rcx","r11","memory");return ret;}
|
|
|
|
#ifndef MY_BUFSIZ
|
|
#define MY_BUFSIZ 4096
|
|
#endif
|
|
|
|
typedef struct{int fd;char buf[MY_BUFSIZ];size_t pos;size_t len;int mode;}MY_FILE;
|
|
|
|
MY_FILE* my_fopen(const char* path,int flags,int mode);
|
|
int my_fclose(MY_FILE* f);
|
|
size_t my_fread(void* ptr,size_t size,size_t nmemb,MY_FILE* f);
|
|
size_t my_fwrite(const void* ptr,size_t size,size_t nmemb,MY_FILE* f);
|
|
int my_putc(int c,MY_FILE* f);
|
|
int my_puts(const char* s,MY_FILE* f);
|
|
off_t my_seek(MY_FILE* f,off_t offset,int whence);
|
|
int my_printf(MY_FILE* f,const char* fmt,...);
|
|
int my_vprintf(MY_FILE* f,const char* fmt,va_list ap);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|