Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7540 leency 1
#ifndef stdio_h
2
#define stdio_h
3
 
4
#include "kolibrisys.h"
5
#include 
6
/* use stdarg.h
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)
12
*/
13
#ifndef NULL
14
# define NULL ((void*)0)
15
#endif
16
 
17
typedef unsigned int fpos_t;  // 32bit is not enough! 4Gb limit
18
typedef unsigned int size_t;
19
 
20
int format_print(char *dest, size_t maxlen,const char *fmt0, va_list argp);
21
 
22
typedef struct {
23
  char*   buffer;
24
  dword   buffersize;
25
  dword   filesize;     // too small
26
  int     filepos;      // too small, may be -1
27
  char*   filename;
28
  int     mode;
29
  int	  ungetc_buf;
30
  dword   buffer_start;  // 1st byte position
31
  dword   buffer_end;    // points after last buffered data
32
} FILE;
33
 
34
#define stderr ((FILE*)3) /* works only for fprintf!!! */
35
 
36
 
37
#define FILE_OPEN_READ 0
38
#define FILE_OPEN_WRITE 1
39
#define FILE_OPEN_APPEND 2
40
#define FILE_OPEN_TEXT 4
41
#define FILE_OPEN_PLUS 8
42
#define EOF (-1)
43
#define BUFSIZ (4096)
44
#define FILENAME_MAX (0x400)
45
 
46
extern FILE* fopen(const char* filename, const char *mode);
47
extern int fclose(FILE* file);
48
extern int feof(FILE* file);
49
extern int fflush(FILE* file);
50
extern int fgetc(FILE* file);
51
extern int fgetpos(FILE* file,fpos_t* pos);
52
extern int fsetpos(FILE* file,const fpos_t* pos);
53
extern int fputc(int c,FILE* file);
54
extern int fread(void* buffer,int size,int count,FILE* file);
55
extern int fwrite(void *buffer,int size,int count,FILE* file);
56
extern long ftell(FILE* file);
57
#define SEEK_CUR 0
58
#define SEEK_END 1
59
#define SEEK_SET 2
60
extern int fseek(FILE* file,long offset,int origin);
61
extern void rewind(FILE* file);
62
extern int cdecl fprintf(FILE* file, const char* format,...);
63
extern int fscanf(FILE* file,const char* format,...);
64
extern int ungetc(int c,FILE* file);
65
 
66
extern int cdecl printf(const char *format,...);
67
 
68
extern int vsnprintf(char *dest, size_t size,const char *format,va_list ap);
69
extern int cdecl snprintf(char *dest, size_t size, const char *format,...);
70
extern int cdecl sprintf(char *dest,const char *format,...);
71
 
72
#define getc(a) fgetc(a)
73
#define putc(a, b) fputc(a, b)
74
char * fgets (char * str, int num, FILE * stream);
75
int putchar (int ch);
76
int getchar (void);
77
int puts (const char * str);
78
char * gets (char * str);
79
 
80
typedef int (*virtual_getc)(void *sp, const void *obj);
81
typedef void (*virtual_ungetc)(void *sp, int c, const void *obj);
82
int format_scan(const void *src, const char *fmt, va_list argp, virtual_getc vgetc, virtual_ungetc vungetc);
83
int vscanf ( const char * format, va_list arg );
84
int scanf ( const char * format, ...);
85
int vsscanf ( const char * s, const char * format, va_list arg );
86
int sscanf ( const char * s, const char * format, ...);
87
int vfscanf ( FILE * stream, const char * format, va_list arg );
88
int fputs ( const char * str, FILE * file );
89
void clearerr ( FILE * stream );
90
int ferror ( FILE * stream );
91
void perror ( const char * str );
92
int vprintf ( const char * format, va_list arg );
93
int vsprintf (char * s, const char * format, va_list arg );
94
int vfprintf ( FILE * stream, const char * format, va_list arg );
95
 
96
 
97
int tiny_sprintf (char * s, const char * format, ... );
98
int tiny_snprintf (char * s, size_t n, const char * format, ... );
99
int tiny_vsnprintf (char * s, size_t n, const char * format, va_list args );
100
// support %c, %s, %d, %x, %u, %% for 32-bit values only. no width specs, left align
101
// always zero-ended
102
 
103
extern int errno;
104
/* errors codes from KOS, but minus */
105
#ifndef E_SUCCESS
106
 
107
# define E_SUCCESS (0)
108
# define E_UNSUPPORTED (-2)
109
# define E_UNKNOWNFS  (-3)
110
# define E_NOTFOUND (-5)
111
# define E_EOF  (-6)
112
# define E_INVALIDPTR (-7)
113
# define E_DISKFULL  (-8)
114
# define E_FSYSERROR  (-9)
115
# define E_ACCESS  (-10)
116
# define E_HARDWARE  (-11)
117
# define E_NOMEM  (-12)
118
/* conversion errors */
119
# define ERANGE (-20)
120
# define EINVAL (-21)
121
/* program run and pipe errors */
122
# define E_NOMEM2 (-30)
123
# define E_FILEFMT (-31)
124
# define E_TOOMANY (-32)
125
# define E_PARAM (-33)
126
#endif
127
 
128
#endif