some vm to accomodate needing to have a region search spot be
[newos.git] / include / stdio.h
blob6a3e53946d98fa066e409640d2715a3d47dc5354
1 /*
2 ** Copyright 2002, Travis Geiselbrecht. All rights reserved.
3 ** Copyright 2002, Manuel J. Petit. All rights reserved.
4 ** Distributed under the terms of the NewOS License.
5 ** Modified by Justin Smith 2003/06/17. Changed FILE struct.
6 */
8 #ifndef __newos__libc_stdio__hh__
9 #define __newos__libc_stdio__hh__
11 #include <stddef.h>
12 #include <sys/types.h>
13 #include <sys/cdefs.h>
15 #include <stdarg.h>
17 #ifdef __cplusplus
18 namespace std
19 {extern "C" {
20 #endif
22 #define _STDIO_READ 0x0001
23 #define _STDIO_WRITE 0x0002
24 #define _STDIO_EOF 0x0004
25 #define _STDIO_ERROR 0x0008
26 #define _STDIO_UNGET 0x0010
28 #define SEEK_SET 0
29 #define SEEK_CUR 1
30 #define SEEK_END 2
32 typedef off_t fpos_t;
34 struct __FILE {
35 int fd; /* system file descriptor */
36 ptrdiff_t rpos; /* The first unread buffer position */
37 ptrdiff_t buf_pos; /* first unwritten buffer position */
38 unsigned char* buf; /* buffer */
39 ptrdiff_t buf_size; /* buffer size */
40 unsigned char unget; /* for ungetc */
41 int flags; /* for feof and ferror */
42 struct __FILE* next; /* for fflush */
43 sem_id sid; /* semaphore */
45 typedef struct __FILE FILE;
47 extern FILE *stdin;
48 extern FILE *stdout;
49 extern FILE *stderr;
51 /* arguments to setvbuf */
52 #define _IOFBF 0 /* setvbuf should set fully buffered */
53 #define _IOLBF 1 /* setvbuf should set line buffered */
54 #define _IONBF 2 /* setvbuf should set unbuffered */
56 #define BUFSIZ 1024
58 #define EOF -1
60 int printf(char const *format, ...) __PRINTFLIKE(1,2);
61 int fprintf(FILE *stream, char const *format, ...) __PRINTFLIKE(2,3);
62 int sprintf(char *str, char const *format, ...) __PRINTFLIKE(2,3);
63 //int snprintf(char *str, size_t size, char const *format, ...) __PRINTFLIKE(3,4);
64 //int asprintf(char **ret, char const *format, ...) __PRINTFLIKE(2,3);
65 int vprintf(char const *format, va_list ap);
66 int vfprintf(FILE *stream, char const *format, va_list ap);
67 int vsprintf(char *str, char const *format, va_list ap);
68 //int vsnprintf(char *str, size_t size, char const *format, va_list ap);
69 //int vasprintf(char **ret, char const *format, va_list ap);
71 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
72 int putc(int ch, FILE *stream);
73 int fputc(int ch, FILE *stream);
74 int putchar(int c);
76 int remove(const char *path);
77 int rename(const char *from, const char *to);
78 void rewind(FILE *stream);
80 FILE *tmpfile(void);
81 char *tmpnam(char *str);
82 char *tempnam(const char *tmpdir, const char *prefix);
84 FILE *fopen(char const *, char const *);
85 int fflush(FILE *);
86 int fclose(FILE *);
87 FILE *fdopen(int fildes, const char *mode);
88 FILE *freopen(const char *path, const char *mode, FILE *stream);
90 long int ftell(FILE *stream);
91 int fgetpos(FILE *stream, fpos_t *pos);
92 int fsetpos(FILE *stream, const fpos_t *pos);
93 int feof(FILE *);
94 int fseek(FILE *stream, long int offset, int whence);
95 int fileno(FILE *stream);
97 int ferror(FILE *);
98 void clearerr(FILE *);
99 void perror(const char *string);
101 int fputs(const char *str, FILE *stream);
102 int puts(const char *str);
104 FILE *freopen(const char *filename, const char *mode, FILE *stream);
105 char* fgets(char *, int, FILE *);
106 char *gets(char *str);
107 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
108 int getchar(void);
109 int getc(FILE*);
110 int fgetc(FILE *);
111 int ungetc(int c, FILE *stream);
113 void setbuf(FILE *stream, char *buf);
114 int setvbuf(FILE *stream, char *buf, int mode, size_t size);
115 void setbuffer(FILE *stream, char *buf, int size);
116 int setlinebuf(FILE *stream);
118 int scanf(char const *format, ...);
119 int fscanf(FILE *stream, char const *format, ...);
120 int sscanf(char const *str, char const *format, ...);
121 //int vscanf(char const *format, va_list ap);
122 int vsscanf(char const *str, char const *format, va_list ap);
123 int vfscanf(FILE *stream, char const *format, va_list ap);
125 int _v_printf(int (*_write)(void*, const void *, ssize_t ), void* arg, const char *fmt, va_list args);
127 #ifdef __cplusplus
129 #endif
131 // getchar goes off in it's own little non-standard world
132 // This function will be removed soon
133 # ifdef __cplusplus
134 extern "C"
135 # endif
136 int getchar(void);
140 #endif
142 #if defined(__cplusplus) && !defined(_NEWOS_NO_LIBC_COMPAT)
143 using ::std::FILE;
144 using ::std::fpos_t;
146 using ::std::stdin;
147 using ::std::stdout;
148 using ::std::stderr;
150 using ::std::clearerr;
151 using ::std::fclose;
152 using ::std::feof;
153 using ::std::ferror;
154 using ::std::fflush;
155 using ::std::fgetc;
156 using ::std::fgetpos;
157 using ::std::fgets;
158 using ::std::fopen;
159 using ::std::fdopen;
160 using ::std::freopen;
161 using ::std::fprintf;
162 using ::std::fputc;
163 using ::std::fputs;
164 using ::std::fread;
165 using ::std::freopen;
166 using ::std::fscanf;
167 using ::std::fseek;
168 using ::std::fileno;
169 using ::std::fsetpos;
170 using ::std::ftell;
171 using ::std::fwrite;
172 using ::std::getc;
173 using ::std::getchar;
174 using ::std::gets;
175 using ::std::perror;
176 using ::std::printf;
177 using ::std::putc;
178 using ::std::putchar;
179 using ::std::puts;
180 using ::std::remove;
181 using ::std::rename;
182 using ::std::rewind;
183 using ::std::scanf;
184 using ::std::setbuf;
185 using ::std::setvbuf;
186 using ::std::sprintf;
187 using ::std::sscanf;
188 using ::std::tmpfile;
189 using ::std::tmpnam;
190 using ::std::tempnam;
191 using ::std::ungetc;
192 using ::std::vfprintf;
193 using ::std::vprintf;
194 using ::std::vsprintf;
195 #endif