LibC: Write mostly functioning stdio

This commit is contained in:
Bananymous
2023-04-23 14:32:37 +03:00
parent 9b2a577fc3
commit cd74b2167d
13 changed files with 619 additions and 60 deletions

View File

@@ -16,6 +16,9 @@
#define ENOBUFS 12
#define ENOTTY 13
#define ENOTBLK 14
#define EMFILE 15
#define errno errno
__BEGIN_DECLS

View File

@@ -1,8 +1,18 @@
#pragma once
#include <sys/cdefs.h>
#define O_RDONLY (1 << 0)
#define O_WRONLY (1 << 1)
#define O_RDWR (O_RDONLY | O_WRONLY)
#define O_ACCMODE (O_RDONLY | O_WRONLY)
#define O_EXCL (1 << 2)
#define O_CREAT (1 << 3)
#define O_TRUNC (1 << 4)
#define O_APPEND (1 << 5)
__BEGIN_DECLS
int open(const char*, int, ...);
__END_DECLS

View File

@@ -18,28 +18,83 @@
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
#define L_ctermid 50
#define BUFSIZ 128
#define FOPEN_MAX 16
__BEGIN_DECLS
struct FILE;
typedef struct FILE FILE;
typedef uint64_t fpos_t;
extern FILE* stdin;
extern FILE* stdout;
extern FILE* stderr;
FILE* fopen(const char* __restrict__, const char* __restrict__);
int fclose(FILE*);
int fflush(FILE*);
int fprintf(FILE* __restrict__, const char* __restrict__, ...);
int fseek(FILE*, long, int);
int printf(const char* __restrict__, ...);
int putchar(int);
int puts(const char*);
int vfprintf(FILE* __restrict__, const char* __restrict__, va_list);
long ftell(FILE*);
size_t fread(void* __restrict__, size_t, size_t, FILE*);
size_t fwrite(void const* __restrict__, size_t, size_t, FILE*);
void setbuf(FILE* __restrict__, char* __restrict__);
int sprintf(char* __restrict__, const char* __restrict__, ...);
void clearerr(FILE*);
char* ctermid(char*);
int fclose(FILE*);
FILE* fdopen(int, const char*);
int feof(FILE*);
int ferror(FILE*);
int fflush(FILE*);
int fgetc(FILE*);
int fgetpos(FILE*, fpos_t*);
char* fgets(char*, int, FILE*);
int fileno(FILE*);
void flockfile(FILE*);
FILE* fopen(const char*, const char*);
int fprintf(FILE*, const char*, ...);
int fputc(int, FILE*);
int fputs(const char*, FILE*);
size_t fread(void*, size_t, size_t, FILE*);
FILE* freopen(const char*, const char*, FILE*);
int fscanf(FILE*, const char*, ...);
int fseek(FILE*, long, int);
int fseeko(FILE*, off_t, int);
int fsetpos(FILE*, const fpos_t*);
long ftell(FILE*);
off_t ftello(FILE*);
int ftrylockfile(FILE*);
void funlockfile(FILE*);
size_t fwrite(const void*, size_t, size_t, FILE*);
int getc(FILE*);
int getchar(void);
int getc_unlocked(FILE*);
int getchar_unlocked(void);
char* gets(char*);
int pclose(FILE*);
void perror(const char*);
FILE* popen(const char*, const char*);
int printf(const char*, ...);
int putc(int, FILE*);
int putchar(int);
int putc_unlocked(int, FILE*);
int putchar_unlocked(int);
int puts(const char*);
int remove(const char*);
int rename(const char*, const char*);
void rewind(FILE*);
int scanf(const char*, ...);
void setbuf(FILE*, char*);
int setvbuf(FILE*, char*, int, size_t);
int snprintf(char*, size_t, const char*, ...);
int sprintf(char*, const char*, ...);
int sscanf(const char*, const char*, ...);
char* tempnam(const char*, const char*);
FILE* tmpfile(void);
char* tmpnam(char*);
int ungetc(int, FILE*);
int vfprintf(FILE*, const char*, va_list);
int vfscanf(FILE*, const char*, va_list);
int vprintf(const char*, va_list);
int vscanf(const char*, va_list);
int vsnprintf(char*, size_t, const char*, va_list);
int vsprintf(char*, const char*, va_list);
int vsscanf(const char*, const char*, va_list);
__END_DECLS