scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

commit c21e72f40c77a68f7b23a03141a5c5431790fb37
parent 28f27fbca32a4e2b6576f514ee960e3638bb2184
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 27 Aug 2021 11:44:57 +0200

libc: Update include to last version

This code is being updated out of the tree of scc and
it is time to synchroniza both copies now.

Diffstat:
Minclude/assert.h | 4++--
Minclude/ctype.h | 47++++++++++++++++++++++-------------------------
Minclude/float.h | 2++
Minclude/locale.h | 8+++++++-
Minclude/math.h | 2++
Minclude/setjmp.h | 4++--
Minclude/signal.h | 4++--
Minclude/stddef.h | 3+--
Minclude/stdio.h | 166+++++++++++++++++++++++++++++++++++++++----------------------------------------
Minclude/stdlib.h | 77++++++++++++++++++++++++++++++++++++++---------------------------------------
Minclude/string.h | 44++++++++++++++++++++++----------------------
Minclude/time.h | 19+++++++++----------
12 files changed, 191 insertions(+), 189 deletions(-)

diff --git a/include/assert.h b/include/assert.h @@ -1,8 +1,8 @@ -extern void __assert(char *exp, char *file, long line); +extern void __assert(char *, char *, long); #undef assert #ifndef NDEBUG # define assert(exp) ((exp) ? (void) 0 : __assert(#exp, __FILE__, __LINE__)) #else -# define assert(exp) ((void)0) +# define assert(exp) ((void) 0) #endif diff --git a/include/ctype.h b/include/ctype.h @@ -1,30 +1,30 @@ #ifndef _CTYPE_H #define _CTYPE_H -extern int isalnum(int c); -extern int isalpha(int c); -extern int islower(int c); -extern int isupper(int c); -extern int isdigit(int c); -extern int isxdigit(int c); -extern int iscntrl(int c); -extern int isgraph(int c); -extern int isspace(int c); -extern int isblank(int c); -extern int isprint(int c); -extern int ispunct(int c); -extern int tolower(int c); -extern int toupper(int c); +extern int isalnum(int); +extern int isalpha(int); +extern int islower(int); +extern int isupper(int); +extern int isdigit(int); +extern int isxdigit(int); +extern int iscntrl(int); +extern int isgraph(int); +extern int isspace(int); +extern int isblank(int); +extern int isprint(int); +extern int ispunct(int); +extern int tolower(int); +extern int toupper(int); -#define _U 0x01 /* upper */ -#define _L 0x02 /* lower */ -#define _D 0x04 /* digit */ -#define _C 0x08 /* cntrl */ -#define _P 0x10 /* punct */ -#define _S 0x20 /* white space (space/lf/tab) */ -#define _X 0x40 /* hex char */ -#define _SP 0x80 /* hard space (0x20) */ +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex char */ +#define _SP 0x80 /* hard space (0x20) */ extern const unsigned char __ctype[]; @@ -40,7 +40,4 @@ extern const unsigned char __ctype[]; #define isupper(c) ((__ctype+1)[c] & (_U)) #define isxdigit(c) ((__ctype+1)[c] & (_D|_X)) -#define isascii(c) ((unsigned)(c)<=0x7f) -#define toascii(c) ((unsigned)(c)&0x7f) - #endif diff --git a/include/float.h b/include/float.h @@ -1,4 +1,6 @@ #ifndef _FLOAT_H #define _FLOAT_H + #error float.h is not supported yet + #endif diff --git a/include/locale.h b/include/locale.h @@ -31,9 +31,15 @@ struct lconv { char p_sign_posn; char n_sign_posn; char int_frac_digits; + char int_p_cs_precedes; + char int_n_cs_precedes; + char int_p_sep_by_space; + char int_n_sep_by_space; + char int_p_sign_posn; + char int_n_sign_posn; }; -extern char *setlocale(int category, const char *locale); +extern char *setlocale(int, const char *); extern struct lconv *localeconv(void); #endif diff --git a/include/math.h b/include/math.h @@ -1,4 +1,6 @@ #ifndef _MATH_H #define _MATH_H + #error math.h is not supported yet + #endif diff --git a/include/setjmp.h b/include/setjmp.h @@ -3,8 +3,8 @@ #include <arch/setjmp.h> -extern int setjmp(jmp_buf env); -extern void longjmp(jmp_buf env, int val); +extern int setjmp(jmp_buf); +extern void longjmp(jmp_buf, int); #define setjmp setjmp diff --git a/include/signal.h b/include/signal.h @@ -3,7 +3,7 @@ #include <sys/signal.h> -void ( *signal(int signum, void (*handler)(int)) ) (int); -int raise(int sig); +void (*signal(int, void (*handler)(int)))(int); +int raise(int); #endif diff --git a/include/stddef.h b/include/stddef.h @@ -2,12 +2,11 @@ #define _STDDEF_H #define _NEED_SIZET -#define _NEED_WCHAR_T #define _NEED_PTRDIFFT #define _NEED_NULL #include <sys/cdefs.h> #include <arch/cdefs.h> -#define offsetof(st, m) ((size_t)&(((st *)0)->m)) +#define offsetof(st, m) ((size_t) &(((st *) 0)->m)) #endif diff --git a/include/stdio.h b/include/stdio.h @@ -3,115 +3,113 @@ #define _NEED_NULL #define _NEED_SIZET +#include <sys/stdio.h> #include <arch/cdefs.h> -#include <arch/stdio.h> #ifndef FOPEN_MAX #define FOPEN_MAX 12 #endif -#define EOF -1 -#define SEEK_SET 0 -#define SEEK_CUR 1 -#define SEEK_END 2 +#define EOF -1 +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 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) -#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) - +/** + * struct FILE - opaque structure containing information about a file + * @fd: file descriptor + * @buf: pointer to i/o buffer + * @rp: read pointer + * @wp: write pointer + * @lp: write pointer used when line-buffering + * @len: actual length of buffer + * @flags: file open mode + * @unbuf: tiny buffer for unbuffered i/o + */ 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 */ + int fd; + unsigned char *buf; + unsigned char *rp; + unsigned char *wp; + unsigned char *lp; + size_t len; unsigned short flags; - unsigned char unbuf[1]; /* tiny buffer for unbuffered io */ + unsigned char unbuf[1]; } FILE; extern FILE __iob[FOPEN_MAX]; -#define stdin (&__iob[0]) -#define stdout (&__iob[1]) -#define stderr (&__iob[2]) +#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 int remove(const char *); +extern int rename(const char *, const char *); 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, ...); +extern char *tmpnam(char *); +extern int fclose(FILE *); +extern int fflush(FILE *); +extern FILE *fopen(const char *restrict, const char *restrict); +extern FILE *freopen(const char *restrict, const char *restrict, + FILE *restrict); +extern void setbuf(FILE *restrict, char *restrict); +extern int setvbuf(FILE *restrict, char *restrict, int, size_t); +extern int fprintf(FILE *restrict, const char *restrict, ...); +extern int fscanf(FILE *restrict, const char *restrict, ...); +extern int printf(const char *restrict, ...); +extern int scanf(const char *restrict, ...); +extern int snprintf(char *restrict, size_t, const char *restrict, ...); +extern int sprintf(char *restrict, const char *restrict, ...); +extern int sscanf(const char *restrict, const char *restrict, ...); #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); +extern int vfprintf(FILE *restrict, const char *restrict, va_list); +extern int vfscanf(FILE *restrict, const char *restrict, va_list); +extern int vprintf(const char *restrict, va_list); +extern int vscanf(const char *restrict, va_list); +extern int vsnprintf(char *restrict, size_t, const char *restrict, va_list); +extern int vsprintf(char *restrict, const char *restrict, va_list); +extern int vsscanf(const char *restrict, const char *restrict, va_list); #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 fgetc(FILE *); +extern char *fgets(char *restrict, int, FILE *restrict); +extern int fputc(int, FILE *); +extern int fputs(const char *restrict, FILE *restrict); +extern int getc(FILE *); 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 char *gets(char *); +extern int putc(int, FILE *); +extern int putchar(int); +extern int puts(const char *); +extern int ungetc(int, FILE *); +extern size_t fread(void *restrict, size_t, size_t, FILE *restrict); +extern size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict); +extern int fseek(FILE *, long int, int); +extern long int ftell(FILE *); +extern void rewind(FILE *); +extern void clearerr(FILE *); +extern int feof(FILE *); +extern int ferror(FILE *); +extern void perror(const char *); -extern int __getc(FILE *fp); -extern int __putc(int, FILE *fp); +extern int __getc(FILE *); +extern int __putc(int, FILE *); #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)) - #define ferror(fp) ((fp)->flags & _IOERR) #define feof(fp) ((fp)->flags & _IOEOF) #define clearerr(fp) (void) ((fp)->flags &= ~(_IOERR|_IOEOF)) diff --git a/include/stdlib.h b/include/stdlib.h @@ -5,6 +5,7 @@ #define _NEED_SIZET #define _NEED_WCHART #include <sys/cdefs.h> +#include <sys/stdlib.h> #include <arch/cdefs.h> #include <arch/stdlib.h> @@ -25,46 +26,44 @@ typedef struct { long long quot, rem; } lldiv_t; -extern double atof(const char *nptr); -extern int atoi(const char *nptr); -extern long int atol(const char *nptr); -extern long long int atoll(const char *nptr); -extern double strtod(const char * restrict nptr, char ** restrict endptr); -extern float strtof(const char * restrict nptr, char ** restrict endptr); -extern long double strtold(const char * restrict nptr, char ** restrict endptr); -extern long int strtol(const char * restrict nptr, char ** restrict endptr, int base); -extern long long int strtoll(const char * restrict nptr, char ** restrict endptr, - int base); -extern unsigned long int strtoul(const char * restrict nptr, char ** restrict endptr, - int base); -extern unsigned long long int strtoull(const char * restrict nptr, - char ** restrict endptr, int base); +extern double atof(const char *); +extern int atoi(const char *); +extern long int atol(const char *); +extern long long int atoll(const char *); +extern double strtod(const char *restrict, char **restrict); +extern float strtof(const char *restrict, char **restrict); +extern long double strtold(const char *restrict, char **restrict); +extern long int strtol(const char *restrict, char **restrict, int); +extern long long int strtoll(const char *restrict, char **restrict, int); +extern unsigned long int strtoul(const char *restrict, char **restrict, int); +extern unsigned long long int strtoull(const char *restrict, char **restrict, + int); extern int rand(void); -extern void srand(unsigned int seed); -extern void *calloc(size_t nmemb, size_t size); -extern void free(void *ptr); -extern void *malloc(size_t size); -extern void *realloc(void *ptr, size_t size); +extern void srand(unsigned int); +extern void *calloc(size_t, size_t); +extern void free(void *); +extern void *malloc(size_t); +extern void *realloc(void *, size_t); extern void abort(void); -extern int atexit(void (*func)(void)); -extern void exit(int status); -extern void _Exit(int status); -extern char *getenv(const char *name); -extern int system(const char *string); -extern void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); -extern void qsort(void *base, size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); -extern int abs(int j); -extern long int labs(long int j); -extern long long int llabs(long long int j); -extern div_t div(int numer, int denom); -extern ldiv_t ldiv(long int numer, long int denom); -extern lldiv_t lldiv(long long int numer, long long int denom); -extern int mblen(const char *s, size_t n); -extern int mbtowc(wchar_t * restrict pwc, const char * restrict s, size_t n); -extern int wctomb(char *s, wchar_t wchar); -extern size_t mbstowcs(wchar_t * restrict pwcs, const char * restrict s, size_t n); -extern size_t wcstombs(char * restrict s, const wchar_t * restrict pwcs, size_t n); +extern int atexit(void (*)(void)); +extern void exit(int); +extern void _Exit(int); +extern char *getenv(const char *); +extern int system(const char *); +extern void *bsearch(const void *, const void *, size_t, size_t, + int (*)(const void *, const void *)); +extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); +extern int abs(int); +extern long int labs(long int); +extern long long int llabs(long long int); +extern div_t div(int, int); +extern ldiv_t ldiv(long int, long int); +extern lldiv_t lldiv(long long int, long long int); + +extern int mblen(const char *, size_t); +extern int mbtowc(wchar_t *restrict, const char *restrict, size_t); +extern int wctomb(char *, wchar_t); +extern size_t mbstowcs(wchar_t *restrict, const char *restrict, size_t); +extern size_t wcstombs(char *restrict, const wchar_t *restrict, size_t); #endif diff --git a/include/string.h b/include/string.h @@ -7,27 +7,27 @@ #include <arch/cdefs.h> #include <arch/string.h> -extern void *memcpy(void * restrict s1, const void * restrict s2, size_t n); -extern void *memmove(void *s1, const void *s2, size_t n); -extern char *strcpy(char * restrict s1, const char * restrict s2); -extern char *strncpy(char * restrict s1, const char * restrict s2, size_t n); -extern char *strcat(char * restrict s1, const char * restrict s2); -extern char *strncat(char * restrict s1, const char * restrict s2, size_t n); -extern int memcmp(const void *s1, const void *s2, size_t n); -extern int strcmp(const char *s1, const char *s2); -extern int strcoll(const char *s1, const char *s2); -extern int strncmp(const char *s1, const char *s2, size_t n); -extern size_t strxfrm(char * restrict s1, const char * restrict s2, size_t n); -extern void *memchr(const void *s, int c, size_t n); -extern char *strchr(const char *s, int c); -extern size_t strcspn(const char *s1, const char *s2); -extern char *strpbrk(const char *s1, const char *s2); -extern char *strrchr(const char *s, int c); -extern size_t strspn(const char *s1, const char *s2); -extern char *strstr(const char *s1, const char *s2); -extern char *strtok(char * restrict s1, const char * restrict s2); -extern void *memset(void *s, int c, size_t n); -extern char *strerror(int errnum); -extern size_t strlen(const char *s); +extern void *memcpy(void *restrict, const void *restrict, size_t); +extern void *memmove(void *, const void *, size_t); +extern char *strcpy(char *restrict, const char *restrict); +extern char *strncpy(char *restrict, const char *restrict, size_t); +extern char *strcat(char *restrict, const char *restrict); +extern char *strncat(char *restrict, const char *restrict, size_t); +extern int memcmp(const void *, const void *, size_t); +extern int strcmp(const char *, const char *); +extern int strcoll(const char *, const char *); +extern int strncmp(const char *, const char *, size_t); +extern size_t strxfrm(char *restrict, const char *restrict, size_t); +extern void *memchr(const void *, int, size_t); +extern char *strchr(const char *, int); +extern size_t strcspn(const char *, const char *); +extern char *strpbrk(const char *, const char *); +extern char *strrchr(const char *, int); +extern size_t strspn(const char *, const char *); +extern char *strstr(const char *, const char *); +extern char *strtok(char *restrict, const char *restrict); +extern void *memset(void *, int, size_t); +extern char *strerror(int); +extern size_t strlen(const char *); #endif diff --git a/include/time.h b/include/time.h @@ -27,15 +27,14 @@ struct tm { }; extern clock_t clock(void); -extern double difftime(time_t time1, time_t time0); -extern time_t mktime(struct tm *timeptr); -extern time_t time(time_t *timer); -extern char *asctime(const struct tm *timeptr); -extern char *ctime(const time_t *timer); -extern struct tm *gmtime(const time_t *timer); -extern struct tm *localtime(const time_t *timer); -extern size_t strftime(char * restrict s, size_t maxsize, - const char * restrict format, - const struct tm * restrict timeptr); +extern double difftime(time_t, time_t); +extern time_t mktime(struct tm *); +extern time_t time(time_t *); +extern char *asctime(const struct tm *); +extern char *ctime(const time_t *); +extern struct tm *gmtime(const time_t *); +extern struct tm *localtime(const time_t *); +extern size_t strftime(char *restrict, size_t, const char *restrict, + const struct tm *restrict); #endif