Rev 6432 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
145 | halyavin | 1 | #ifndef stdio_h |
2 | #define stdio_h |
||
647 | andrew_pro | 3 | |
4 | #include "kolibrisys.h" |
||
6424 | siemargl | 5 | #include |
6 | /* use stdarg.h |
||
647 | andrew_pro | 7 | typedef char *va_list; |
8 | #define _roundsize(n) ( (sizeof(n) + 3) & ~3 ) |
||
9 | #define va_start(ap,v) (ap = (va_list)&v+_roundsize(v)) |
||
10 | #define va_arg(ap,t) ( *(t *)((ap += _roundsize(t)) - _roundsize(t)) ) |
||
11 | #define va_end(ap) (ap = (va_list)0) |
||
6424 | siemargl | 12 | */ |
13 | #ifndef NULL |
||
14 | # define NULL ((void*)0) |
||
15 | #endif |
||
647 | andrew_pro | 16 | |
6433 | siemargl | 17 | typedef unsigned int fpos_t; // 32bit is not enough! 4Gb limit |
18 | typedef unsigned int size_t; |
||
19 | |||
6412 | siemargl | 20 | int format_print(char *dest, size_t maxlen,const char *fmt0, va_list argp); |
647 | andrew_pro | 21 | |
145 | halyavin | 22 | typedef struct { |
611 | andrew_pro | 23 | char* buffer; |
24 | dword buffersize; |
||
6433 | siemargl | 25 | dword filesize; // too small |
26 | dword filepos; // too small |
||
611 | andrew_pro | 27 | char* filename; |
28 | int mode; |
||
145 | halyavin | 29 | } FILE; |
647 | andrew_pro | 30 | |
6424 | siemargl | 31 | #define stderr ((FILE*)3) /* works inly for fprintf!!! */ |
32 | |||
33 | |||
145 | halyavin | 34 | #define FILE_OPEN_READ 0 |
35 | #define FILE_OPEN_WRITE 1 |
||
36 | #define FILE_OPEN_APPEND 2 |
||
37 | #define FILE_OPEN_TEXT 4 |
||
38 | #define FILE_OPEN_PLUS 8 |
||
6433 | siemargl | 39 | #define EOF (-1) |
40 | #define BUFSIZ (256) |
||
41 | #define FILENAME_MAX (0x400) |
||
647 | andrew_pro | 42 | |
145 | halyavin | 43 | extern FILE* fopen(const char* filename, const char *mode); |
6433 | siemargl | 44 | extern int fclose(FILE* file); |
145 | halyavin | 45 | extern int feof(FILE* file); |
46 | extern int fflush(FILE* file); |
||
47 | extern int fgetc(FILE* file); |
||
48 | extern int fgetpos(FILE* file,fpos_t* pos); |
||
49 | extern int fsetpos(FILE* file,const fpos_t* pos); |
||
50 | extern int fputc(int c,FILE* file); |
||
51 | extern int fread(void* buffer,int size,int count,FILE* file); |
||
611 | andrew_pro | 52 | extern int fwrite(void *buffer,int size,int count,FILE* file); |
145 | halyavin | 53 | extern long ftell(FILE* file); |
54 | #define SEEK_CUR 0 |
||
55 | #define SEEK_END 1 |
||
56 | #define SEEK_SET 2 |
||
57 | extern int fseek(FILE* file,long offset,int origin); |
||
58 | extern void rewind(FILE* file); |
||
647 | andrew_pro | 59 | extern int cdecl fprintf(FILE* file, const char* format,...); |
60 | extern int fscanf(FILE* file,const char* format,...); |
||
145 | halyavin | 61 | extern int ungetc(int c,FILE* file); |
647 | andrew_pro | 62 | |
63 | extern int cdecl printf(const char *format,...); |
||
64 | |||
65 | extern int vsnprintf(char *dest, size_t size,const char *format,va_list ap); |
||
66 | extern int cdecl snprintf(char *dest, size_t size, const char *format,...); |
||
67 | extern int cdecl sprintf(char *dest,const char *format,...); |
||
68 | |||
6412 | siemargl | 69 | #define getc(a) fgetc(a) |
6433 | siemargl | 70 | #define putc(a, b) fputc(a, b) |
6429 | siemargl | 71 | char * fgets (char * str, int num, FILE * stream); |
72 | int putchar (int ch); |
||
73 | int getchar (void); |
||
74 | int puts (const char * str); |
||
75 | char * gets (char * str); |
||
6412 | siemargl | 76 | |
6431 | siemargl | 77 | typedef int (*virtual_getc)(void *sp, const void *obj); |
78 | typedef void (*virtual_ungetc)(void *sp, int c, const void *obj); |
||
79 | int format_scan(const void *src, const char *fmt, va_list argp, virtual_getc vgetc, virtual_ungetc vungetc); |
||
6432 | siemargl | 80 | int vscanf ( const char * format, va_list arg ); |
81 | int scanf ( const char * format, ...); |
||
82 | int vsscanf ( const char * s, const char * format, va_list arg ); |
||
83 | int sscanf ( const char * s, const char * format, ...); |
||
84 | int vfscanf ( FILE * stream, const char * format, va_list arg ); |
||
6433 | siemargl | 85 | int fputs ( const char * str, FILE * file ); |
86 | void clearerr ( FILE * stream ); |
||
87 | int ferror ( FILE * stream ); |
||
88 | void perror ( const char * str ); |
||
89 | int vprintf ( const char * format, va_list arg ); |
||
90 | int vsprintf (char * s, const char * format, va_list arg ); |
||
91 | int vfprintf ( FILE * stream, const char * format, va_list arg ); |
||
6431 | siemargl | 92 | |
6433 | siemargl | 93 | extern int errno; |
94 | /* errors codes from KOS, but minus */ |
||
95 | #define E_SUCCESS (0) |
||
96 | #define E_UNSUPPORTED (-2) |
||
97 | #define E_UNKNOWNFS (-3) |
||
98 | #define E_NOTFOUND (-5) |
||
99 | #define E_EOF (-6) |
||
100 | #define E_INVALIDPTR (-7) |
||
101 | #define E_DISKFULL (-8) |
||
102 | #define E_FSYSERROR (-9) |
||
103 | #define E_ACCESS (-10) |
||
104 | #define E_HARDWARE (-11) |
||
105 | #define E_NOMEM (-12) |
||
106 | /* conversion errors */ |
||
107 | #define ERANGE (-20) |
||
108 | #define EINVAL (-21) |
||
6432 | siemargl | 109 | |
145 | halyavin | 110 | #endif |