diff options
author | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2018-08-17 10:45:47 +0100 |
---|---|---|
committer | Antonio Nino Diaz <antonio.ninodiaz@arm.com> | 2018-08-22 10:26:05 +0100 |
commit | 27989a8e34a44ff8e6a2e5b011123a09fd8a82c7 (patch) | |
tree | ac823ae747872ad9e3868f94cc0e6f6602dfeb42 /include/lib/libc/stdio.h | |
parent | 2c5aca6eaab998271ab17792486cf67dd2e67711 (diff) | |
download | platform_external_arm-trusted-firmware-27989a8e34a44ff8e6a2e5b011123a09fd8a82c7.tar.gz platform_external_arm-trusted-firmware-27989a8e34a44ff8e6a2e5b011123a09fd8a82c7.tar.bz2 platform_external_arm-trusted-firmware-27989a8e34a44ff8e6a2e5b011123a09fd8a82c7.zip |
libc: Introduce files from SCC
Taken from http://git.simple-cc.org/scc/ from the following commit:
67508ad14af314cea2229783d3c084f28c41daf0
Permission has been granted from the author to use them under the
license BSD-3-Clause instead of ISC.
Change-Id: I65c0ce3ab60c49d34a57533af12a74bd7bde88e5
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Diffstat (limited to 'include/lib/libc/stdio.h')
-rw-r--r-- | include/lib/libc/stdio.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/include/lib/libc/stdio.h b/include/lib/libc/stdio.h new file mode 100644 index 000000000..a876f6c53 --- /dev/null +++ b/include/lib/libc/stdio.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2012-2017 Roberto E. Vargas Caballero + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _STDIO_H +#define _STDIO_H + +#include <arch/stdio.h> + +#ifndef FOPEN_MAX +#define FOPEN_MAX 12 +#endif + +#ifndef NULL +#define NULL ((void *) 0) +#endif + +#define EOF -1 +#define SEEK_CUR 0 +#define SEEK_END 1 +#define SEEK_SET 2 + + +#define _IOWRITE (1 << 0) +#define _IOREAD (1 << 1) +#define _IORW (1 << 2) +#define _IOEOF (1 << 3) +#define _IOERR (1 << 4) +#define _IOSTRG (1 << 5) +#define _IOTXT (1 << 6) +#define _IOFBF (1 << 7) +#define _IOLBF (1 << 8) +#define _IONBF (1 << 9) +#define _IOALLOC (1 <<10) + +typedef struct { + int fd; /* file descriptor */ + unsigned char *buf; /* pointer to i/o buffer */ + unsigned char *rp; /* read pointer */ + unsigned char *wp; /* write pointer */ + unsigned char *lp; /* write pointer used when line-buffering */ + size_t len; /* actual length of buffer */ + unsigned short flags; + unsigned char unbuf[1]; /* tiny buffer for unbuffered io */ +} FILE; + +extern FILE __iob[FOPEN_MAX]; + +#define stdin (&__iob[0]) +#define stdout (&__iob[1]) +#define stderr (&__iob[2]) + +extern int remove(const char *filename); +extern int rename(const char *old, const char *new); +extern FILE *tmpfile(void); +extern char *tmpnam(char *s); +extern int fclose(FILE *fp); +extern int fflush(FILE *fp); +extern FILE *fopen(const char * restrict fname, const char * restrict mode); +extern FILE *freopen(const char * restrict fname, const char * restrict mode, + FILE * restrict fp); +extern void setbuf(FILE * restrict fp, char * restrict buf); +extern int setvbuf(FILE * restrict fp, + char * restrict buf, int mode, size_t size); +extern int fprintf(FILE * restrict fp, const char * restrict fmt, ...); +extern int fscanf(FILE * restrict fp, const char * restrict fmt, ...); +extern int printf(const char * restrict fmt, ...); +extern int scanf(const char * restrict fmt, ...); +extern int snprintf(char * restrict s, + size_t n, const char * restrict fmt, ...); +extern int sprintf(char * restrict s, const char * restrict fmt, ...); +extern int sscanf(const char * restrict s, const char * restrict fmt, ...); + +#ifdef _STDARG_H +extern int vfprintf(FILE * restrict fp, + const char * restrict fmt, va_list arg); +extern int vfscanf(FILE * restrict fp, + const char * restrict fmt, va_list arg); +extern int vprintf(const char * restrict fmt, va_list arg); +extern int vscanf(const char * restrict fmt, va_list arg); +extern int vsnprintf(char * restrict s, size_t n, const char * restrict fmt, + va_list arg); +extern int vsprintf(char * restrict s, + const char * restrict fmt, va_list arg); +extern int vsscanf(const char * restrict s, + const char * restrict fmt, va_list arg); +#endif + +extern int fgetc(FILE *fp); +extern char *fgets(char * restrict s, int n, FILE * restrict fp); +extern int fputc(int c, FILE *fp); +extern int fputs(const char * restrict s, FILE * restrict fp); +extern int getc(FILE *fp); +extern int getchar(void); +extern char *gets(char *s); +extern int putc(int c, FILE *fp); +extern int putchar(int c); +extern int puts(const char *s); +extern int ungetc(int c, FILE *fp); +extern size_t fread(void * restrict ptr, size_t size, size_t nmemb, + FILE * restrict fp); +extern size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, + FILE * restrict fp); +extern int fgetpos(FILE * restrict fp, fpos_t * restrict pos); +extern int fseek(FILE *fp, long int offset, int whence); +extern int fsetpos(FILE *fp, const fpos_t *pos); +extern long int ftell(FILE *fp); +extern void rewind(FILE *fp); +extern void clearerr(FILE *fp); +extern int feof(FILE *fp); +extern int ferror(FILE *fp); +extern void perror(const char *s); + +extern int __getc(FILE *fp); +extern int __putc(int, FILE *fp); + +#ifdef __USE_MACROS +#ifdef __UNIX_FILES +#define getc(fp) ((fp)->rp >= (fp)->wp ? __getc(fp) : *(fp)->rp++) +#define putc(c, fp) ((fp)->wp >= (fp)->rp ? __putc(c,fp) : (*(fp)->wp++ = c)) +#endif + +#define ferror(fp) ((fp)->flags & _IOERR) +#define feof(fp) ((fp)->flags & _IOEOF) +#define clearerr(fp) (void) ((fp)->flags &= ~(_IOERR|_IOEOF)) +#define getchar() getc(stdin) +#define putchar(c) putc((c), stdout) +#define setbuf(fp, b) (void) setvbuf(fp, b, b ? _IOFBF:_IONBF, BUFSIZ) +#endif + +#endif |