1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/* Standard I/O Library for Lume OS */
#ifndef _STDIO_H
#define _STDIO_H
#include <stdarg.h>
/*Type Definition (Adjusted According to Architecture)*/
#ifndef NULL
#define NULL ((void *)0)
#endif
/*Macro definition*/
#define EOF (-1)
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
/* Basic integer types */
typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned char uchar;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned long long uint64;
typedef char int8;
typedef short int16;
typedef int int32;
typedef long long int64;
typedef long long intptr_t;
/* FILE structure */
typedef struct
{
int fd; // File descriptor
int flags; // Status flag
int error; // Error flag
int eof; // EOF flag
int used; // Static pool occupancy flag
} FILE;
/* standard stream object */
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
/* Function Declaration */
/* File Operations */
FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);
int fflush(FILE *stream); // Not implement
/* Formatted input and output */
int printf(const char *format, ...);
int scanf(const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, uint64 size, const char *format, ...);
int vsnprintf(char *str, uint64 size, const char *format, va_list ap);
int sscanf(const char *str, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
/* Character/String Read and Write */
int fputc(int c, FILE *stream);
int fputs(const char *s, FILE *stream);
int fgetc(FILE *stream);
char *fgets(char *str, int n, FILE *stream);
/* Common Macros/Wrapper Functions */
#define getchar() fgetc(stdin)
#define putchar(c) fputc((c), stdout)
/* Binary read and write */
uint64 fread(void *ptr, uint64 size, uint64 nmemb, FILE *stream);
uint64 fwrite(const void *ptr, uint64 size, uint64 nmemb, FILE *stream);
/* File location */
int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);
/* Status Inquiry */
int feof(FILE *stream);
int ferror(FILE *stream);
void clearerr(FILE *stream);
/* Low-level system call */
int64 open(const char *path, int flags, int mode);
int64 close(int64 fd);
int64 read(int64 fd, char *buf, uint64 count);
int64 write(int64 fd, const char *buf, uint64 count);
int64 lseek(int64 fd, int64 offset, int whence);
#endif /* _STDIO_H */
|