1/*
2** Copyright 2003, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef _STDIO_H_
6#define _STDIO_H_
7	// must match the one of the real stdio.h
8
9#include <stdarg.h>
10
11typedef off_t fpos_t;
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17typedef struct FILE FILE;
18	// dummy definition of FILE
19	// In the boot loader, it really is a ConsoleNode
20
21extern FILE *stdin;
22extern FILE *stdout;
23extern FILE *stderr;
24
25#ifndef SEEK_SET
26#	define SEEK_SET 0
27#endif
28#ifndef SEEK_CUR
29#	define SEEK_CUR 1
30#endif
31#ifndef SEEK_END
32#	define SEEK_END 2
33#endif
34
35#ifndef EOF
36#	define EOF (-1)
37#endif
38
39#define __PRINTFLIKE(a, b)
40
41extern int printf(char const *format, ...) __PRINTFLIKE(1,2);
42extern int fprintf(FILE *stream, char const *format, ...) __PRINTFLIKE(2,3);
43extern int sprintf(char *str, char const *format, ...) __PRINTFLIKE(2,3);
44extern int snprintf(char *str, size_t size, char const *format, ...) __PRINTFLIKE(3,4);
45extern int asprintf(char **ret, char const *format, ...) __PRINTFLIKE(2,3);
46extern int vprintf(char const *format, va_list ap);
47extern int vfprintf(FILE *stream, char const *format, va_list ap);
48extern int vsprintf(char *str, char const *format, va_list ap);
49extern int vsnprintf(char *str, size_t size, char const *format, va_list ap);
50extern int vasprintf(char **ret, char const *format, va_list ap);
51
52// ToDo: not everything is or should be implemented here
53extern void		clearerr(FILE *stream);
54extern int		fclose(FILE *stream);
55extern int		feof(FILE *stream);
56extern int		ferror(FILE *stream);
57extern int		fflush(FILE *stream);
58extern int		fgetpos(FILE *stream, fpos_t *position);
59extern FILE		*fopen(const char *name, const char *mode);
60extern size_t	fread(void *buffer, size_t size, size_t numItems, FILE *stream);
61extern FILE		*freopen(const char *name, const char *mode, FILE *stream);
62extern int		fscanf(FILE *stream, char const *format, ...);
63extern int		fseek(FILE *stream, long offset, int seekType);
64extern int		fsetpos(FILE *stream, const fpos_t *position);
65extern long		ftell(FILE *stream);
66extern size_t	fwrite(const void *buffer, size_t size, size_t numItems, FILE *stream);
67extern void		perror(const char *errorPrefix);
68extern int		rename(const char *from, const char *to);
69extern void		rewind(FILE *stream);
70extern int		scanf(char const *format, ...);
71extern void		setbuf (FILE *file, char *buff);
72extern int		setvbuf(FILE *file, char *buff, int mode, size_t size);
73extern int		sscanf(char const *str, char const *format, ...);
74extern FILE		*tmpfile(void);
75extern char 	*tmpnam(char *nameBuffer);
76extern int		ungetc(int c, FILE *stream);
77extern int		vscanf(char const *format, va_list ap);
78extern int		vsscanf(char const *str, char const *format, va_list ap);
79extern int		vfscanf(FILE *stream, char const *format, va_list ap);
80
81extern int    fgetc(FILE *);
82extern char  *fgets(char *, int, FILE *);
83extern int    fputc(int, FILE *);
84extern int    fputs(const char *, FILE*);
85extern int    getc(FILE *);
86extern char  *gets(char *);
87extern int    getw(FILE *);
88extern int    getchar(void);
89extern int    putc(int, FILE *);
90extern int    putchar(int);
91extern int    puts(const char *);
92extern int    putw(int, FILE *);
93
94#ifdef __cplusplus
95}
96#endif
97
98#endif /* _STDIO_H_ */
99