127989a8eSAntonio Nino Diaz /* 227989a8eSAntonio Nino Diaz * Copyright (c) 2012-2017 Roberto E. Vargas Caballero 327989a8eSAntonio Nino Diaz * 427989a8eSAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause 527989a8eSAntonio Nino Diaz */ 6*7c0ff9c4SAntonio Nino Diaz /* 7*7c0ff9c4SAntonio Nino Diaz * Portions copyright (c) 2018, ARM Limited and Contributors. 8*7c0ff9c4SAntonio Nino Diaz * All rights reserved. 9*7c0ff9c4SAntonio Nino Diaz */ 1027989a8eSAntonio Nino Diaz 1127989a8eSAntonio Nino Diaz #ifndef _STDIO_H 1227989a8eSAntonio Nino Diaz #define _STDIO_H 1327989a8eSAntonio Nino Diaz 14*7c0ff9c4SAntonio Nino Diaz #include <stdio_.h> 1527989a8eSAntonio Nino Diaz 1627989a8eSAntonio Nino Diaz #ifndef FOPEN_MAX 1727989a8eSAntonio Nino Diaz #define FOPEN_MAX 12 1827989a8eSAntonio Nino Diaz #endif 1927989a8eSAntonio Nino Diaz 2027989a8eSAntonio Nino Diaz #ifndef NULL 2127989a8eSAntonio Nino Diaz #define NULL ((void *) 0) 2227989a8eSAntonio Nino Diaz #endif 2327989a8eSAntonio Nino Diaz 2427989a8eSAntonio Nino Diaz #define EOF -1 2527989a8eSAntonio Nino Diaz #define SEEK_CUR 0 2627989a8eSAntonio Nino Diaz #define SEEK_END 1 2727989a8eSAntonio Nino Diaz #define SEEK_SET 2 2827989a8eSAntonio Nino Diaz 2927989a8eSAntonio Nino Diaz 3027989a8eSAntonio Nino Diaz #define _IOWRITE (1 << 0) 3127989a8eSAntonio Nino Diaz #define _IOREAD (1 << 1) 3227989a8eSAntonio Nino Diaz #define _IORW (1 << 2) 3327989a8eSAntonio Nino Diaz #define _IOEOF (1 << 3) 3427989a8eSAntonio Nino Diaz #define _IOERR (1 << 4) 3527989a8eSAntonio Nino Diaz #define _IOSTRG (1 << 5) 3627989a8eSAntonio Nino Diaz #define _IOTXT (1 << 6) 3727989a8eSAntonio Nino Diaz #define _IOFBF (1 << 7) 3827989a8eSAntonio Nino Diaz #define _IOLBF (1 << 8) 3927989a8eSAntonio Nino Diaz #define _IONBF (1 << 9) 4027989a8eSAntonio Nino Diaz #define _IOALLOC (1 <<10) 4127989a8eSAntonio Nino Diaz 4227989a8eSAntonio Nino Diaz typedef struct { 4327989a8eSAntonio Nino Diaz int fd; /* file descriptor */ 4427989a8eSAntonio Nino Diaz unsigned char *buf; /* pointer to i/o buffer */ 4527989a8eSAntonio Nino Diaz unsigned char *rp; /* read pointer */ 4627989a8eSAntonio Nino Diaz unsigned char *wp; /* write pointer */ 4727989a8eSAntonio Nino Diaz unsigned char *lp; /* write pointer used when line-buffering */ 4827989a8eSAntonio Nino Diaz size_t len; /* actual length of buffer */ 4927989a8eSAntonio Nino Diaz unsigned short flags; 5027989a8eSAntonio Nino Diaz unsigned char unbuf[1]; /* tiny buffer for unbuffered io */ 5127989a8eSAntonio Nino Diaz } FILE; 5227989a8eSAntonio Nino Diaz 5327989a8eSAntonio Nino Diaz extern FILE __iob[FOPEN_MAX]; 5427989a8eSAntonio Nino Diaz 5527989a8eSAntonio Nino Diaz #define stdin (&__iob[0]) 5627989a8eSAntonio Nino Diaz #define stdout (&__iob[1]) 5727989a8eSAntonio Nino Diaz #define stderr (&__iob[2]) 5827989a8eSAntonio Nino Diaz 5927989a8eSAntonio Nino Diaz extern int remove(const char *filename); 6027989a8eSAntonio Nino Diaz extern int rename(const char *old, const char *new); 6127989a8eSAntonio Nino Diaz extern FILE *tmpfile(void); 6227989a8eSAntonio Nino Diaz extern char *tmpnam(char *s); 6327989a8eSAntonio Nino Diaz extern int fclose(FILE *fp); 6427989a8eSAntonio Nino Diaz extern int fflush(FILE *fp); 6527989a8eSAntonio Nino Diaz extern FILE *fopen(const char * restrict fname, const char * restrict mode); 6627989a8eSAntonio Nino Diaz extern FILE *freopen(const char * restrict fname, const char * restrict mode, 6727989a8eSAntonio Nino Diaz FILE * restrict fp); 6827989a8eSAntonio Nino Diaz extern void setbuf(FILE * restrict fp, char * restrict buf); 6927989a8eSAntonio Nino Diaz extern int setvbuf(FILE * restrict fp, 7027989a8eSAntonio Nino Diaz char * restrict buf, int mode, size_t size); 7127989a8eSAntonio Nino Diaz extern int fprintf(FILE * restrict fp, const char * restrict fmt, ...); 7227989a8eSAntonio Nino Diaz extern int fscanf(FILE * restrict fp, const char * restrict fmt, ...); 7327989a8eSAntonio Nino Diaz extern int printf(const char * restrict fmt, ...); 7427989a8eSAntonio Nino Diaz extern int scanf(const char * restrict fmt, ...); 7527989a8eSAntonio Nino Diaz extern int snprintf(char * restrict s, 7627989a8eSAntonio Nino Diaz size_t n, const char * restrict fmt, ...); 7727989a8eSAntonio Nino Diaz extern int sprintf(char * restrict s, const char * restrict fmt, ...); 7827989a8eSAntonio Nino Diaz extern int sscanf(const char * restrict s, const char * restrict fmt, ...); 7927989a8eSAntonio Nino Diaz 8027989a8eSAntonio Nino Diaz #ifdef _STDARG_H 8127989a8eSAntonio Nino Diaz extern int vfprintf(FILE * restrict fp, 8227989a8eSAntonio Nino Diaz const char * restrict fmt, va_list arg); 8327989a8eSAntonio Nino Diaz extern int vfscanf(FILE * restrict fp, 8427989a8eSAntonio Nino Diaz const char * restrict fmt, va_list arg); 8527989a8eSAntonio Nino Diaz extern int vprintf(const char * restrict fmt, va_list arg); 8627989a8eSAntonio Nino Diaz extern int vscanf(const char * restrict fmt, va_list arg); 8727989a8eSAntonio Nino Diaz extern int vsnprintf(char * restrict s, size_t n, const char * restrict fmt, 8827989a8eSAntonio Nino Diaz va_list arg); 8927989a8eSAntonio Nino Diaz extern int vsprintf(char * restrict s, 9027989a8eSAntonio Nino Diaz const char * restrict fmt, va_list arg); 9127989a8eSAntonio Nino Diaz extern int vsscanf(const char * restrict s, 9227989a8eSAntonio Nino Diaz const char * restrict fmt, va_list arg); 9327989a8eSAntonio Nino Diaz #endif 9427989a8eSAntonio Nino Diaz 9527989a8eSAntonio Nino Diaz extern int fgetc(FILE *fp); 9627989a8eSAntonio Nino Diaz extern char *fgets(char * restrict s, int n, FILE * restrict fp); 9727989a8eSAntonio Nino Diaz extern int fputc(int c, FILE *fp); 9827989a8eSAntonio Nino Diaz extern int fputs(const char * restrict s, FILE * restrict fp); 9927989a8eSAntonio Nino Diaz extern int getc(FILE *fp); 10027989a8eSAntonio Nino Diaz extern int getchar(void); 10127989a8eSAntonio Nino Diaz extern char *gets(char *s); 10227989a8eSAntonio Nino Diaz extern int putc(int c, FILE *fp); 10327989a8eSAntonio Nino Diaz extern int putchar(int c); 10427989a8eSAntonio Nino Diaz extern int puts(const char *s); 10527989a8eSAntonio Nino Diaz extern int ungetc(int c, FILE *fp); 10627989a8eSAntonio Nino Diaz extern size_t fread(void * restrict ptr, size_t size, size_t nmemb, 10727989a8eSAntonio Nino Diaz FILE * restrict fp); 10827989a8eSAntonio Nino Diaz extern size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, 10927989a8eSAntonio Nino Diaz FILE * restrict fp); 11027989a8eSAntonio Nino Diaz extern int fgetpos(FILE * restrict fp, fpos_t * restrict pos); 11127989a8eSAntonio Nino Diaz extern int fseek(FILE *fp, long int offset, int whence); 11227989a8eSAntonio Nino Diaz extern int fsetpos(FILE *fp, const fpos_t *pos); 11327989a8eSAntonio Nino Diaz extern long int ftell(FILE *fp); 11427989a8eSAntonio Nino Diaz extern void rewind(FILE *fp); 11527989a8eSAntonio Nino Diaz extern void clearerr(FILE *fp); 11627989a8eSAntonio Nino Diaz extern int feof(FILE *fp); 11727989a8eSAntonio Nino Diaz extern int ferror(FILE *fp); 11827989a8eSAntonio Nino Diaz extern void perror(const char *s); 11927989a8eSAntonio Nino Diaz 12027989a8eSAntonio Nino Diaz extern int __getc(FILE *fp); 12127989a8eSAntonio Nino Diaz extern int __putc(int, FILE *fp); 12227989a8eSAntonio Nino Diaz 12327989a8eSAntonio Nino Diaz #ifdef __USE_MACROS 12427989a8eSAntonio Nino Diaz #ifdef __UNIX_FILES 12527989a8eSAntonio Nino Diaz #define getc(fp) ((fp)->rp >= (fp)->wp ? __getc(fp) : *(fp)->rp++) 12627989a8eSAntonio Nino Diaz #define putc(c, fp) ((fp)->wp >= (fp)->rp ? __putc(c,fp) : (*(fp)->wp++ = c)) 12727989a8eSAntonio Nino Diaz #endif 12827989a8eSAntonio Nino Diaz 12927989a8eSAntonio Nino Diaz #define ferror(fp) ((fp)->flags & _IOERR) 13027989a8eSAntonio Nino Diaz #define feof(fp) ((fp)->flags & _IOEOF) 13127989a8eSAntonio Nino Diaz #define clearerr(fp) (void) ((fp)->flags &= ~(_IOERR|_IOEOF)) 13227989a8eSAntonio Nino Diaz #define getchar() getc(stdin) 13327989a8eSAntonio Nino Diaz #define putchar(c) putc((c), stdout) 13427989a8eSAntonio Nino Diaz #define setbuf(fp, b) (void) setvbuf(fp, b, b ? _IOFBF:_IONBF, BUFSIZ) 13527989a8eSAntonio Nino Diaz #endif 13627989a8eSAntonio Nino Diaz 13727989a8eSAntonio Nino Diaz #endif 138