Subversion Repositories Kolibri OS

Rev

Rev 6443 | 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
 
7172 siemargl 31
#define stderr ((FILE*)3) /* works only for fprintf!!! */
6424 siemargl 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
 
6443 siemargl 93
 
94
int tiny_sprintf (char * s, const char * format, ... );
95
int tiny_snprintf (char * s, size_t n, const char * format, ... );
96
int tiny_vsnprintf (char * s, size_t n, const char * format, va_list args );
97
// support %c, %s, %d, %x, %u, %% for 32-bit values only. no width specs, left align
98
// always zero-ended
99
 
6433 siemargl 100
extern int errno;
101
/* errors codes from KOS, but minus */
6441 siemargl 102
#ifndef E_SUCCESS
103
 
104
# define E_SUCCESS (0)
105
# define E_UNSUPPORTED (-2)
106
# define E_UNKNOWNFS  (-3)
107
# define E_NOTFOUND (-5)
108
# define E_EOF  (-6)
109
# define E_INVALIDPTR (-7)
110
# define E_DISKFULL  (-8)
111
# define E_FSYSERROR  (-9)
112
# define E_ACCESS  (-10)
113
# define E_HARDWARE  (-11)
114
# define E_NOMEM  (-12)
6433 siemargl 115
/* conversion errors */
6441 siemargl 116
# define ERANGE (-20)
117
# define EINVAL (-21)
118
/* program run and pipe errors */
119
# define E_NOMEM2 (-30)
120
# define E_FILEFMT (-31)
121
# define E_TOOMANY (-32)
122
# define E_PARAM (-33)
123
#endif
6432 siemargl 124
 
145 halyavin 125
#endif