xref: /rk3399_ARM-atf/include/lib/libc/stdio.h (revision 27989a8e34a44ff8e6a2e5b011123a09fd8a82c7)
1*27989a8eSAntonio Nino Diaz /*
2*27989a8eSAntonio Nino Diaz  * Copyright (c) 2012-2017 Roberto E. Vargas Caballero
3*27989a8eSAntonio Nino Diaz  *
4*27989a8eSAntonio Nino Diaz  * SPDX-License-Identifier: BSD-3-Clause
5*27989a8eSAntonio Nino Diaz  */
6*27989a8eSAntonio Nino Diaz 
7*27989a8eSAntonio Nino Diaz #ifndef _STDIO_H
8*27989a8eSAntonio Nino Diaz #define _STDIO_H
9*27989a8eSAntonio Nino Diaz 
10*27989a8eSAntonio Nino Diaz #include <arch/stdio.h>
11*27989a8eSAntonio Nino Diaz 
12*27989a8eSAntonio Nino Diaz #ifndef FOPEN_MAX
13*27989a8eSAntonio Nino Diaz #define FOPEN_MAX 12
14*27989a8eSAntonio Nino Diaz #endif
15*27989a8eSAntonio Nino Diaz 
16*27989a8eSAntonio Nino Diaz #ifndef NULL
17*27989a8eSAntonio Nino Diaz #define NULL ((void *) 0)
18*27989a8eSAntonio Nino Diaz #endif
19*27989a8eSAntonio Nino Diaz 
20*27989a8eSAntonio Nino Diaz #define EOF            -1
21*27989a8eSAntonio Nino Diaz #define SEEK_CUR        0
22*27989a8eSAntonio Nino Diaz #define SEEK_END        1
23*27989a8eSAntonio Nino Diaz #define SEEK_SET        2
24*27989a8eSAntonio Nino Diaz 
25*27989a8eSAntonio Nino Diaz 
26*27989a8eSAntonio Nino Diaz #define _IOWRITE        (1 << 0)
27*27989a8eSAntonio Nino Diaz #define _IOREAD         (1 << 1)
28*27989a8eSAntonio Nino Diaz #define _IORW           (1 << 2)
29*27989a8eSAntonio Nino Diaz #define _IOEOF          (1 << 3)
30*27989a8eSAntonio Nino Diaz #define _IOERR          (1 << 4)
31*27989a8eSAntonio Nino Diaz #define _IOSTRG         (1 << 5)
32*27989a8eSAntonio Nino Diaz #define _IOTXT          (1 << 6)
33*27989a8eSAntonio Nino Diaz #define _IOFBF          (1 << 7)
34*27989a8eSAntonio Nino Diaz #define _IOLBF          (1 << 8)
35*27989a8eSAntonio Nino Diaz #define _IONBF          (1 << 9)
36*27989a8eSAntonio Nino Diaz #define _IOALLOC        (1 <<10)
37*27989a8eSAntonio Nino Diaz 
38*27989a8eSAntonio Nino Diaz typedef struct {
39*27989a8eSAntonio Nino Diaz 	int fd;        	        /* file descriptor */
40*27989a8eSAntonio Nino Diaz 	unsigned char *buf;     /* pointer to i/o buffer */
41*27989a8eSAntonio Nino Diaz 	unsigned char *rp;      /* read pointer */
42*27989a8eSAntonio Nino Diaz 	unsigned char *wp;      /* write pointer */
43*27989a8eSAntonio Nino Diaz 	unsigned char *lp;      /* write pointer used when line-buffering */
44*27989a8eSAntonio Nino Diaz 	size_t len;             /* actual length of buffer */
45*27989a8eSAntonio Nino Diaz 	unsigned short flags;
46*27989a8eSAntonio Nino Diaz 	unsigned char unbuf[1];  /* tiny buffer for unbuffered io */
47*27989a8eSAntonio Nino Diaz } FILE;
48*27989a8eSAntonio Nino Diaz 
49*27989a8eSAntonio Nino Diaz extern FILE __iob[FOPEN_MAX];
50*27989a8eSAntonio Nino Diaz 
51*27989a8eSAntonio Nino Diaz #define	stdin	(&__iob[0])
52*27989a8eSAntonio Nino Diaz #define	stdout	(&__iob[1])
53*27989a8eSAntonio Nino Diaz #define	stderr	(&__iob[2])
54*27989a8eSAntonio Nino Diaz 
55*27989a8eSAntonio Nino Diaz extern int remove(const char *filename);
56*27989a8eSAntonio Nino Diaz extern int rename(const char *old, const char *new);
57*27989a8eSAntonio Nino Diaz extern FILE *tmpfile(void);
58*27989a8eSAntonio Nino Diaz extern char *tmpnam(char *s);
59*27989a8eSAntonio Nino Diaz extern int fclose(FILE *fp);
60*27989a8eSAntonio Nino Diaz extern int fflush(FILE *fp);
61*27989a8eSAntonio Nino Diaz extern FILE *fopen(const char * restrict fname, const char * restrict mode);
62*27989a8eSAntonio Nino Diaz extern FILE *freopen(const char * restrict fname, const char * restrict mode,
63*27989a8eSAntonio Nino Diaz                      FILE * restrict fp);
64*27989a8eSAntonio Nino Diaz extern void setbuf(FILE * restrict fp, char * restrict buf);
65*27989a8eSAntonio Nino Diaz extern int setvbuf(FILE * restrict fp,
66*27989a8eSAntonio Nino Diaz                    char * restrict buf, int mode, size_t size);
67*27989a8eSAntonio Nino Diaz extern int fprintf(FILE * restrict fp, const char * restrict fmt, ...);
68*27989a8eSAntonio Nino Diaz extern int fscanf(FILE * restrict fp, const char * restrict fmt, ...);
69*27989a8eSAntonio Nino Diaz extern int printf(const char * restrict fmt, ...);
70*27989a8eSAntonio Nino Diaz extern int scanf(const char * restrict fmt, ...);
71*27989a8eSAntonio Nino Diaz extern int snprintf(char * restrict s,
72*27989a8eSAntonio Nino Diaz                     size_t n, const char * restrict fmt, ...);
73*27989a8eSAntonio Nino Diaz extern int sprintf(char * restrict s, const char * restrict fmt, ...);
74*27989a8eSAntonio Nino Diaz extern int sscanf(const char * restrict s, const char * restrict fmt, ...);
75*27989a8eSAntonio Nino Diaz 
76*27989a8eSAntonio Nino Diaz #ifdef _STDARG_H
77*27989a8eSAntonio Nino Diaz extern int vfprintf(FILE * restrict fp,
78*27989a8eSAntonio Nino Diaz                     const char * restrict fmt, va_list arg);
79*27989a8eSAntonio Nino Diaz extern int vfscanf(FILE * restrict fp,
80*27989a8eSAntonio Nino Diaz                    const char * restrict fmt, va_list arg);
81*27989a8eSAntonio Nino Diaz extern int vprintf(const char * restrict fmt, va_list arg);
82*27989a8eSAntonio Nino Diaz extern int vscanf(const char * restrict fmt, va_list arg);
83*27989a8eSAntonio Nino Diaz extern int vsnprintf(char * restrict s, size_t n, const char * restrict fmt,
84*27989a8eSAntonio Nino Diaz                      va_list arg);
85*27989a8eSAntonio Nino Diaz extern int vsprintf(char * restrict s,
86*27989a8eSAntonio Nino Diaz                     const char * restrict fmt, va_list arg);
87*27989a8eSAntonio Nino Diaz extern int vsscanf(const char * restrict s,
88*27989a8eSAntonio Nino Diaz                    const char * restrict fmt, va_list arg);
89*27989a8eSAntonio Nino Diaz #endif
90*27989a8eSAntonio Nino Diaz 
91*27989a8eSAntonio Nino Diaz extern int fgetc(FILE *fp);
92*27989a8eSAntonio Nino Diaz extern char *fgets(char * restrict s, int n, FILE * restrict fp);
93*27989a8eSAntonio Nino Diaz extern int fputc(int c, FILE *fp);
94*27989a8eSAntonio Nino Diaz extern int fputs(const char * restrict s, FILE * restrict fp);
95*27989a8eSAntonio Nino Diaz extern int getc(FILE *fp);
96*27989a8eSAntonio Nino Diaz extern int getchar(void);
97*27989a8eSAntonio Nino Diaz extern char *gets(char *s);
98*27989a8eSAntonio Nino Diaz extern int putc(int c, FILE *fp);
99*27989a8eSAntonio Nino Diaz extern int putchar(int c);
100*27989a8eSAntonio Nino Diaz extern int puts(const char *s);
101*27989a8eSAntonio Nino Diaz extern int ungetc(int c, FILE *fp);
102*27989a8eSAntonio Nino Diaz extern size_t fread(void * restrict ptr, size_t size, size_t nmemb,
103*27989a8eSAntonio Nino Diaz              FILE * restrict fp);
104*27989a8eSAntonio Nino Diaz extern size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb,
105*27989a8eSAntonio Nino Diaz               FILE * restrict fp);
106*27989a8eSAntonio Nino Diaz extern int fgetpos(FILE * restrict fp, fpos_t * restrict pos);
107*27989a8eSAntonio Nino Diaz extern int fseek(FILE *fp, long int offset, int whence);
108*27989a8eSAntonio Nino Diaz extern int fsetpos(FILE *fp, const fpos_t *pos);
109*27989a8eSAntonio Nino Diaz extern long int ftell(FILE *fp);
110*27989a8eSAntonio Nino Diaz extern void rewind(FILE *fp);
111*27989a8eSAntonio Nino Diaz extern void clearerr(FILE *fp);
112*27989a8eSAntonio Nino Diaz extern int feof(FILE *fp);
113*27989a8eSAntonio Nino Diaz extern int ferror(FILE *fp);
114*27989a8eSAntonio Nino Diaz extern void perror(const char *s);
115*27989a8eSAntonio Nino Diaz 
116*27989a8eSAntonio Nino Diaz extern int __getc(FILE *fp);
117*27989a8eSAntonio Nino Diaz extern int __putc(int, FILE *fp);
118*27989a8eSAntonio Nino Diaz 
119*27989a8eSAntonio Nino Diaz #ifdef __USE_MACROS
120*27989a8eSAntonio Nino Diaz #ifdef __UNIX_FILES
121*27989a8eSAntonio Nino Diaz #define getc(fp)     ((fp)->rp >= (fp)->wp ?  __getc(fp) : *(fp)->rp++)
122*27989a8eSAntonio Nino Diaz #define putc(c, fp)  ((fp)->wp >= (fp)->rp ? __putc(c,fp) : (*(fp)->wp++ = c))
123*27989a8eSAntonio Nino Diaz #endif
124*27989a8eSAntonio Nino Diaz 
125*27989a8eSAntonio Nino Diaz #define ferror(fp)          ((fp)->flags & _IOERR)
126*27989a8eSAntonio Nino Diaz #define feof(fp)            ((fp)->flags & _IOEOF)
127*27989a8eSAntonio Nino Diaz #define clearerr(fp)        (void) ((fp)->flags &= ~(_IOERR|_IOEOF))
128*27989a8eSAntonio Nino Diaz #define getchar()           getc(stdin)
129*27989a8eSAntonio Nino Diaz #define putchar(c)          putc((c), stdout)
130*27989a8eSAntonio Nino Diaz #define setbuf(fp, b)       (void) setvbuf(fp, b, b ? _IOFBF:_IONBF, BUFSIZ)
131*27989a8eSAntonio Nino Diaz #endif
132*27989a8eSAntonio Nino Diaz 
133*27989a8eSAntonio Nino Diaz #endif
134