From 62eb93713fcd5a933a8a1e9c0d6873cc8b3ec313 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Thu, 19 Dec 2019 16:15:09 -0500 Subject: [PATCH 062/113] FIXME: pr47170.c --- gcc/testsuite/gcc.dg/analyzer/pr47170.c | 2113 +++++++++++++++++++++++ 1 file changed, 2113 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/pr47170.c diff --git a/gcc/testsuite/gcc.dg/analyzer/pr47170.c b/gcc/testsuite/gcc.dg/analyzer/pr47170.c new file mode 100644 index 00000000000..de7cd44344c --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr47170.c @@ -0,0 +1,2113 @@ + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; + +typedef __int8_t __int_least8_t; +typedef __uint8_t __uint_least8_t; +typedef __int16_t __int_least16_t; +typedef __uint16_t __uint_least16_t; +typedef __int32_t __int_least32_t; +typedef __uint32_t __uint_least32_t; +typedef __int64_t __int_least64_t; +typedef __uint64_t __uint_least64_t; + +typedef long int __quad_t; +typedef unsigned long int __u_quad_t; + +typedef long int __intmax_t; +typedef unsigned long int __uintmax_t; + +typedef unsigned long int __dev_t; +typedef unsigned int __uid_t; +typedef unsigned int __gid_t; +typedef unsigned long int __ino_t; +typedef unsigned long int __ino64_t; +typedef unsigned int __mode_t; +typedef unsigned long int __nlink_t; +typedef long int __off_t; +typedef long int __off64_t; +typedef int __pid_t; +typedef struct { + int __val[2]; +} __fsid_t; +typedef long int __clock_t; +typedef unsigned long int __rlim_t; +typedef unsigned long int __rlim64_t; +typedef unsigned int __id_t; +typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t; + +typedef int __daddr_t; +typedef int __key_t; + +typedef int __clockid_t; + +typedef void *__timer_t; + +typedef long int __blksize_t; + +typedef long int __blkcnt_t; +typedef long int __blkcnt64_t; + +typedef unsigned long int __fsblkcnt_t; +typedef unsigned long int __fsblkcnt64_t; + +typedef unsigned long int __fsfilcnt_t; +typedef unsigned long int __fsfilcnt64_t; + +typedef long int __fsword_t; + +typedef long int __ssize_t; + +typedef long int __syscall_slong_t; + +typedef unsigned long int __syscall_ulong_t; + +typedef __off64_t __loff_t; +typedef char *__caddr_t; + +typedef long int __intptr_t; + +typedef unsigned int __socklen_t; + +typedef int __sig_atomic_t; + +static __inline __uint16_t __bswap_16(__uint16_t __bsx) { + + return __builtin_bswap16(__bsx); +} + +static __inline __uint32_t __bswap_32(__uint32_t __bsx) { + + return __builtin_bswap32(__bsx); +} +__extension__ static __inline __uint64_t __bswap_64(__uint64_t __bsx) { + + return __builtin_bswap64(__bsx); +} +static __inline __uint16_t __uint16_identity(__uint16_t __x) { return __x; } + +static __inline __uint32_t __uint32_identity(__uint32_t __x) { return __x; } + +static __inline __uint64_t __uint64_identity(__uint64_t __x) { return __x; } + +enum { + _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), + _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), + _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), + _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), + _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), + _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), + _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), + _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), + _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), + _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), + _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), + _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) +}; +extern const unsigned short int **__ctype_b_loc(void) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +extern const __int32_t **__ctype_tolower_loc(void) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +extern const __int32_t **__ctype_toupper_loc(void) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +extern int isalnum(int) __attribute__((__nothrow__, __leaf__)); +extern int isalpha(int) __attribute__((__nothrow__, __leaf__)); +extern int iscntrl(int) __attribute__((__nothrow__, __leaf__)); +extern int isdigit(int) __attribute__((__nothrow__, __leaf__)); +extern int islower(int) __attribute__((__nothrow__, __leaf__)); +extern int isgraph(int) __attribute__((__nothrow__, __leaf__)); +extern int isprint(int) __attribute__((__nothrow__, __leaf__)); +extern int ispunct(int) __attribute__((__nothrow__, __leaf__)); +extern int isspace(int) __attribute__((__nothrow__, __leaf__)); +extern int isupper(int) __attribute__((__nothrow__, __leaf__)); +extern int isxdigit(int) __attribute__((__nothrow__, __leaf__)); + +extern int tolower(int __c) __attribute__((__nothrow__, __leaf__)); + +extern int toupper(int __c) __attribute__((__nothrow__, __leaf__)); + +extern int isblank(int) __attribute__((__nothrow__, __leaf__)); + +extern int isctype(int __c, int __mask) __attribute__((__nothrow__, __leaf__)); + +extern int isascii(int __c) __attribute__((__nothrow__, __leaf__)); + +extern int toascii(int __c) __attribute__((__nothrow__, __leaf__)); + +extern int _toupper(int) __attribute__((__nothrow__, __leaf__)); +extern int _tolower(int) __attribute__((__nothrow__, __leaf__)); +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) tolower(int __c) { + return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc())[__c] : __c; +} + +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) toupper(int __c) { + return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc())[__c] : __c; +} +struct __locale_struct { + + struct __locale_data *__locales[13]; + + const unsigned short int *__ctype_b; + const int *__ctype_tolower; + const int *__ctype_toupper; + + const char *__names[13]; +}; + +typedef struct __locale_struct *__locale_t; + +typedef __locale_t locale_t; +extern int isalnum_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isalpha_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int iscntrl_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isdigit_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int islower_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isgraph_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isprint_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int ispunct_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isspace_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isupper_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); +extern int isxdigit_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); + +extern int isblank_l(int, locale_t) __attribute__((__nothrow__, __leaf__)); + +extern int __tolower_l(int __c, locale_t __l) + __attribute__((__nothrow__, __leaf__)); +extern int tolower_l(int __c, locale_t __l) + __attribute__((__nothrow__, __leaf__)); + +extern int __toupper_l(int __c, locale_t __l) + __attribute__((__nothrow__, __leaf__)); +extern int toupper_l(int __c, locale_t __l) + __attribute__((__nothrow__, __leaf__)); + +typedef long unsigned int size_t; + +typedef __builtin_va_list __gnuc_va_list; + +typedef struct { + int __count; + union { + unsigned int __wch; + char __wchb[4]; + } __value; +} __mbstate_t; + +typedef struct _G_fpos_t { + __off_t __pos; + __mbstate_t __state; +} __fpos_t; +typedef struct _G_fpos64_t { + __off64_t __pos; + __mbstate_t __state; +} __fpos64_t; + +struct _IO_FILE; +typedef struct _IO_FILE __FILE; + +struct _IO_FILE; + +typedef struct _IO_FILE FILE; +struct _IO_FILE; +struct _IO_marker; +struct _IO_codecvt; +struct _IO_wide_data; + +typedef void _IO_lock_t; + +struct _IO_FILE { + int _flags; + + char *_IO_read_ptr; + char *_IO_read_end; + char *_IO_read_base; + char *_IO_write_base; + char *_IO_write_ptr; + char *_IO_write_end; + char *_IO_buf_base; + char *_IO_buf_end; + + char *_IO_save_base; + char *_IO_backup_base; + char *_IO_save_end; + + struct _IO_marker *_markers; + + struct _IO_FILE *_chain; + + int _fileno; + int _flags2; + __off_t _old_offset; + + unsigned short _cur_column; + signed char _vtable_offset; + char _shortbuf[1]; + + _IO_lock_t *_lock; + + __off64_t _offset; + + struct _IO_codecvt *_codecvt; + struct _IO_wide_data *_wide_data; + struct _IO_FILE *_freeres_list; + void *_freeres_buf; + size_t __pad5; + int _mode; + + char _unused2[15 * sizeof(int) - 4 * sizeof(void *) - sizeof(size_t)]; +}; + +typedef __ssize_t cookie_read_function_t(void *__cookie, char *__buf, + size_t __nbytes); + +typedef __ssize_t cookie_write_function_t(void *__cookie, const char *__buf, + size_t __nbytes); + +typedef int cookie_seek_function_t(void *__cookie, __off64_t *__pos, int __w); + +typedef int cookie_close_function_t(void *__cookie); + +typedef struct _IO_cookie_io_functions_t { + cookie_read_function_t *read; + cookie_write_function_t *write; + cookie_seek_function_t *seek; + cookie_close_function_t *close; +} cookie_io_functions_t; + +typedef __gnuc_va_list va_list; +typedef __off_t off_t; + +typedef __off64_t off64_t; + +typedef __ssize_t ssize_t; + +typedef __fpos_t fpos_t; + +typedef __fpos64_t fpos64_t; + +extern FILE *stdin; +extern FILE *stdout; +extern FILE *stderr; + +extern int remove(const char *__filename) + __attribute__((__nothrow__, __leaf__)); + +extern int rename(const char *__old, const char *__new) + __attribute__((__nothrow__, __leaf__)); + +extern int renameat(int __oldfd, const char *__old, int __newfd, + const char *__new) __attribute__((__nothrow__, __leaf__)); +extern int renameat2(int __oldfd, const char *__old, int __newfd, + const char *__new, unsigned int __flags) + __attribute__((__nothrow__, __leaf__)); + +extern FILE *tmpfile(void); +extern FILE *tmpfile64(void); + +extern char *tmpnam(char *__s) __attribute__((__nothrow__, __leaf__)); + +extern char *tmpnam_r(char *__s) __attribute__((__nothrow__, __leaf__)); +extern char *tempnam(const char *__dir, const char *__pfx) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); + +extern int fclose(FILE *__stream); + +extern int fflush(FILE *__stream); +extern int fflush_unlocked(FILE *__stream); +extern int fcloseall(void); +extern FILE *fopen(const char *__restrict __filename, + const char *__restrict __modes); + +extern FILE *freopen(const char *__restrict __filename, + const char *__restrict __modes, FILE *__restrict __stream); +extern FILE *fopen64(const char *__restrict __filename, + const char *__restrict __modes); +extern FILE *freopen64(const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream); + +extern FILE *fdopen(int __fd, const char *__modes) + __attribute__((__nothrow__, __leaf__)); + +extern FILE *fopencookie(void *__restrict __magic_cookie, + const char *__restrict __modes, + cookie_io_functions_t __io_funcs) + __attribute__((__nothrow__, __leaf__)); + +extern FILE *fmemopen(void *__s, size_t __len, const char *__modes) + __attribute__((__nothrow__, __leaf__)); + +extern FILE *open_memstream(char **__bufloc, size_t *__sizeloc) + __attribute__((__nothrow__, __leaf__)); + +extern void setbuf(FILE *__restrict __stream, char *__restrict __buf) + __attribute__((__nothrow__, __leaf__)); + +extern int setvbuf(FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) + __attribute__((__nothrow__, __leaf__)); + +extern void setbuffer(FILE *__restrict __stream, char *__restrict __buf, + size_t __size) __attribute__((__nothrow__, __leaf__)); + +extern void setlinebuf(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int fprintf(FILE *__restrict __stream, const char *__restrict __format, + ...); + +extern int printf(const char *__restrict __format, ...); + +extern int sprintf(char *__restrict __s, const char *__restrict __format, ...) + __attribute__((__nothrow__)); + +extern int vfprintf(FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg); + +extern int vprintf(const char *__restrict __format, __gnuc_va_list __arg); + +extern int vsprintf(char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) __attribute__((__nothrow__)); + +extern int snprintf(char *__restrict __s, size_t __maxlen, + const char *__restrict __format, ...) + __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 4))); + +extern int vsnprintf(char *__restrict __s, size_t __maxlen, + const char *__restrict __format, __gnuc_va_list __arg) + __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 0))); + +extern int vasprintf(char **__restrict __ptr, const char *__restrict __f, + __gnuc_va_list __arg) __attribute__((__nothrow__)) +__attribute__((__format__(__printf__, 2, 0))); +extern int __asprintf(char **__restrict __ptr, const char *__restrict __fmt, + ...) __attribute__((__nothrow__)) +__attribute__((__format__(__printf__, 2, 3))); +extern int asprintf(char **__restrict __ptr, const char *__restrict __fmt, ...) + __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 2, 3))); + +extern int vdprintf(int __fd, const char *__restrict __fmt, + __gnuc_va_list __arg) + __attribute__((__format__(__printf__, 2, 0))); +extern int dprintf(int __fd, const char *__restrict __fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); + +extern int fscanf(FILE *__restrict __stream, const char *__restrict __format, + ...); + +extern int scanf(const char *__restrict __format, ...); + +extern int sscanf(const char *__restrict __s, const char *__restrict __format, + ...) __attribute__((__nothrow__, __leaf__)); + +extern int fscanf(FILE *__restrict __stream, const char *__restrict __format, + ...) __asm__("" + "__isoc99_fscanf") + + ; +extern int scanf(const char *__restrict __format, + ...) __asm__("" + "__isoc99_scanf"); +extern int sscanf(const char *__restrict __s, const char *__restrict __format, + ...) __asm__("" + "__isoc99_sscanf") + __attribute__((__nothrow__, __leaf__)) + + ; +extern int vfscanf(FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) + __attribute__((__format__(__scanf__, 2, 0))); + +extern int vscanf(const char *__restrict __format, __gnuc_va_list __arg) + __attribute__((__format__(__scanf__, 1, 0))); + +extern int vsscanf(const char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) __attribute__((__nothrow__, __leaf__)) +__attribute__((__format__(__scanf__, 2, 0))); + +extern int vfscanf(FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) __asm__("" + "__isoc99_vfscanf") + + __attribute__((__format__(__scanf__, 2, 0))); +extern int vscanf(const char *__restrict __format, + __gnuc_va_list __arg) __asm__("" + "__isoc99_vscanf") + + __attribute__((__format__(__scanf__, 1, 0))); +extern int vsscanf(const char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) __asm__("" + "__isoc99_vsscanf") + __attribute__((__nothrow__, __leaf__)) + + __attribute__((__format__(__scanf__, 2, 0))); +extern int fgetc(FILE *__stream); +extern int getc(FILE *__stream); + +extern int getchar(void); + +extern int getc_unlocked(FILE *__stream); +extern int getchar_unlocked(void); +extern int fgetc_unlocked(FILE *__stream); +extern int fputc(int __c, FILE *__stream); +extern int putc(int __c, FILE *__stream); + +extern int putchar(int __c); +extern int fputc_unlocked(int __c, FILE *__stream); + +extern int putc_unlocked(int __c, FILE *__stream); +extern int putchar_unlocked(int __c); + +extern int getw(FILE *__stream); + +extern int putw(int __w, FILE *__stream); + +extern char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream); +extern char *fgets_unlocked(char *__restrict __s, int __n, + FILE *__restrict __stream); +extern __ssize_t __getdelim(char **__restrict __lineptr, size_t *__restrict __n, + int __delimiter, FILE *__restrict __stream); +extern __ssize_t getdelim(char **__restrict __lineptr, size_t *__restrict __n, + int __delimiter, FILE *__restrict __stream); + +extern __ssize_t getline(char **__restrict __lineptr, size_t *__restrict __n, + FILE *__restrict __stream); + +extern int fputs(const char *__restrict __s, FILE *__restrict __stream); + +extern int puts(const char *__s); + +extern int ungetc(int __c, FILE *__stream); + +extern size_t fread(void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __stream); + +extern size_t fwrite(const void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __s); +extern int fputs_unlocked(const char *__restrict __s, + FILE *__restrict __stream); +extern size_t fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __stream); +extern size_t fwrite_unlocked(const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); + +extern int fseek(FILE *__stream, long int __off, int __whence); + +extern long int ftell(FILE *__stream); + +extern void rewind(FILE *__stream); +extern int fseeko(FILE *__stream, __off_t __off, int __whence); + +extern __off_t ftello(FILE *__stream); +extern int fgetpos(FILE *__restrict __stream, fpos_t *__restrict __pos); + +extern int fsetpos(FILE *__stream, const fpos_t *__pos); +extern int fseeko64(FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64(FILE *__stream); +extern int fgetpos64(FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64(FILE *__stream, const fpos64_t *__pos); + +extern void clearerr(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int feof(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int ferror(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern void clearerr_unlocked(FILE *__stream) + __attribute__((__nothrow__, __leaf__)); +extern int feof_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)); +extern int ferror_unlocked(FILE *__stream) + __attribute__((__nothrow__, __leaf__)); + +extern void perror(const char *__s); + +extern int sys_nerr; +extern const char *const sys_errlist[]; + +extern int _sys_nerr; +extern const char *const _sys_errlist[]; + +extern int fileno(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int fileno_unlocked(FILE *__stream) + __attribute__((__nothrow__, __leaf__)); +extern FILE *popen(const char *__command, const char *__modes); + +extern int pclose(FILE *__stream); + +extern char *ctermid(char *__s) __attribute__((__nothrow__, __leaf__)); + +extern char *cuserid(char *__s); + +struct obstack; + +extern int obstack_printf(struct obstack *__restrict __obstack, + const char *__restrict __format, ...) + __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 2, 3))); +extern int obstack_vprintf(struct obstack *__restrict __obstack, + const char *__restrict __format, + __gnuc_va_list __args) __attribute__((__nothrow__)) +__attribute__((__format__(__printf__, 2, 0))); + +extern void flockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int ftrylockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern void funlockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); +extern int __uflow(FILE *); +extern int __overflow(FILE *, int); + +extern __inline __attribute__((__gnu_inline__)) int +vprintf(const char *__restrict __fmt, __gnuc_va_list __arg) { + return vfprintf(stdout, __fmt, __arg); +} + +extern __inline __attribute__((__gnu_inline__)) int getchar(void) { + return getc(stdin); +} + +extern __inline __attribute__((__gnu_inline__)) int fgetc_unlocked(FILE *__fp) { + return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) + ? __uflow(__fp) + : *(unsigned char *)(__fp)->_IO_read_ptr++); +} + +extern __inline __attribute__((__gnu_inline__)) int getc_unlocked(FILE *__fp) { + return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) + ? __uflow(__fp) + : *(unsigned char *)(__fp)->_IO_read_ptr++); +} + +extern __inline __attribute__((__gnu_inline__)) int getchar_unlocked(void) { + return (__builtin_expect(((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) + ? __uflow(stdin) + : *(unsigned char *)(stdin)->_IO_read_ptr++); +} + +extern __inline __attribute__((__gnu_inline__)) int putchar(int __c) { + return putc(__c, stdout); +} + +extern __inline __attribute__((__gnu_inline__)) int +fputc_unlocked(int __c, FILE *__stream) { + return (__builtin_expect( + ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) + ? __overflow(__stream, (unsigned char)(__c)) + : (unsigned char)(*(__stream)->_IO_write_ptr++ = (__c))); +} + +extern __inline __attribute__((__gnu_inline__)) int +putc_unlocked(int __c, FILE *__stream) { + return (__builtin_expect( + ((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) + ? __overflow(__stream, (unsigned char)(__c)) + : (unsigned char)(*(__stream)->_IO_write_ptr++ = (__c))); +} + +extern __inline __attribute__((__gnu_inline__)) int putchar_unlocked(int __c) { + return ( + __builtin_expect(((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) + ? __overflow(stdout, (unsigned char)(__c)) + : (unsigned char)(*(stdout)->_IO_write_ptr++ = (__c))); +} + +extern __inline __attribute__((__gnu_inline__)) __ssize_t +getline(char **__lineptr, size_t *__n, FILE *__stream) { + return __getdelim(__lineptr, __n, '\n', __stream); +} + +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) feof_unlocked(FILE *__stream) { + return (((__stream)->_flags & 0x0010) != 0); +} + +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) ferror_unlocked(FILE *__stream) { + return (((__stream)->_flags & 0x0020) != 0); +} + +enum { + + FSETLOCKING_QUERY = 0, + + FSETLOCKING_INTERNAL, + + FSETLOCKING_BYCALLER + +}; + +extern size_t __fbufsize(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int __freading(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int __fwriting(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int __freadable(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int __fwritable(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int __flbf(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern void __fpurge(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern size_t __fpending(FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern void _flushlbf(void); + +extern int __fsetlocking(FILE *__fp, int __type) + __attribute__((__nothrow__, __leaf__)); + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; + +typedef __loff_t loff_t; + +typedef __ino_t ino_t; + +typedef __ino64_t ino64_t; + +typedef __dev_t dev_t; + +typedef __gid_t gid_t; + +typedef __mode_t mode_t; + +typedef __nlink_t nlink_t; + +typedef __uid_t uid_t; +typedef __pid_t pid_t; + +typedef __id_t id_t; +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + +typedef __key_t key_t; + +typedef __clock_t clock_t; + +typedef __clockid_t clockid_t; + +typedef __time_t time_t; + +typedef __timer_t timer_t; + +typedef __useconds_t useconds_t; + +typedef __suseconds_t suseconds_t; + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; + +typedef __int8_t int8_t; +typedef __int16_t int16_t; +typedef __int32_t int32_t; +typedef __int64_t int64_t; + +typedef __uint8_t u_int8_t; +typedef __uint16_t u_int16_t; +typedef __uint32_t u_int32_t; +typedef __uint64_t u_int64_t; + +typedef int register_t __attribute__((__mode__(__word__))); + +typedef struct { + unsigned long int __val[(1024 / (8 * sizeof(unsigned long int)))]; +} __sigset_t; + +typedef __sigset_t sigset_t; + +struct timeval { + __time_t tv_sec; + __suseconds_t tv_usec; +}; + +struct timespec { + __time_t tv_sec; + __syscall_slong_t tv_nsec; +}; +typedef long int __fd_mask; +typedef struct { + + __fd_mask fds_bits[1024 / (8 * (int)sizeof(__fd_mask))]; + +} fd_set; + +typedef __fd_mask fd_mask; + +extern int select(int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +extern int pselect(int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); + +typedef __blksize_t blksize_t; + +typedef __blkcnt_t blkcnt_t; + +typedef __fsblkcnt_t fsblkcnt_t; + +typedef __fsfilcnt_t fsfilcnt_t; +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + +struct __pthread_rwlock_arch_t { + unsigned int __readers; + unsigned int __writers; + unsigned int __wrphase_futex; + unsigned int __writers_futex; + unsigned int __pad3; + unsigned int __pad4; + + int __cur_writer; + int __shared; + signed char __rwelision; + + unsigned char __pad1[7]; + + unsigned long int __pad2; + + unsigned int __flags; +}; + +typedef struct __pthread_internal_list { + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; +struct __pthread_mutex_s { + int __lock; + unsigned int __count; + int __owner; + + unsigned int __nusers; + int __kind; + + short __spins; + short __elision; + __pthread_list_t __list; +}; + +struct __pthread_cond_s { + __extension__ union { + __extension__ unsigned long long int __wseq; + struct { + unsigned int __low; + unsigned int __high; + } __wseq32; + }; + __extension__ union { + __extension__ unsigned long long int __g1_start; + struct { + unsigned int __low; + unsigned int __high; + } __g1_start32; + }; + unsigned int __g_refs[2]; + unsigned int __g_size[2]; + unsigned int __g1_orig_size; + unsigned int __wrefs; + unsigned int __g_signals[2]; +}; + +typedef unsigned long int pthread_t; + +typedef union { + char __size[4]; + int __align; +} pthread_mutexattr_t; + +typedef union { + char __size[4]; + int __align; +} pthread_condattr_t; + +typedef unsigned int pthread_key_t; + +typedef int pthread_once_t; + +union pthread_attr_t { + char __size[56]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + +typedef union { + struct __pthread_mutex_s __data; + char __size[40]; + long int __align; +} pthread_mutex_t; + +typedef union { + struct __pthread_cond_s __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union { + struct __pthread_rwlock_arch_t __data; + char __size[56]; + long int __align; +} pthread_rwlock_t; + +typedef union { + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + +typedef volatile int pthread_spinlock_t; + +typedef union { + char __size[32]; + long int __align; +} pthread_barrier_t; + +typedef union { + char __size[4]; + int __align; +} pthread_barrierattr_t; + +typedef int wchar_t; + +typedef struct { + int quot; + int rem; +} div_t; + +typedef struct { + long int quot; + long int rem; +} ldiv_t; + +__extension__ typedef struct { + long long int quot; + long long int rem; +} lldiv_t; +extern size_t __ctype_get_mb_cur_max(void) + __attribute__((__nothrow__, __leaf__)); + +extern double atof(const char *__nptr) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1))); + +extern int atoi(const char *__nptr) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1))); + +extern long int atol(const char *__nptr) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1))); + +__extension__ extern long long int atoll(const char *__nptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); + +extern double strtod(const char *__restrict __nptr, char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern float strtof(const char *__restrict __nptr, char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern long double strtold(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern _Float32 strtof32(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern _Float64 strtof64(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern _Float128 strtof128(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern _Float32x strtof32x(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern _Float64x strtof64x(const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern long int strtol(const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern unsigned long int strtoul(const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +__extension__ extern long long int +strtoq(const char *__restrict __nptr, char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +__extension__ extern unsigned long long int +strtouq(const char *__restrict __nptr, char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +__extension__ extern long long int +strtoll(const char *__restrict __nptr, char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +__extension__ extern unsigned long long int +strtoull(const char *__restrict __nptr, char **__restrict __endptr, int __base) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int strfromd(char *__dest, size_t __size, const char *__format, + double __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfromf(char *__dest, size_t __size, const char *__format, + float __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfroml(char *__dest, size_t __size, const char *__format, + long double __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); +extern int strfromf32(char *__dest, size_t __size, const char *__format, + _Float32 __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfromf64(char *__dest, size_t __size, const char *__format, + _Float64 __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfromf128(char *__dest, size_t __size, const char *__format, + _Float128 __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfromf32x(char *__dest, size_t __size, const char *__format, + _Float32x __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); + +extern int strfromf64x(char *__dest, size_t __size, const char *__format, + _Float64x __f) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3))); +extern long int strtol_l(const char *__restrict __nptr, + char **__restrict __endptr, int __base, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 4))); + +extern unsigned long int strtoul_l(const char *__restrict __nptr, + char **__restrict __endptr, int __base, + locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 4))); + +__extension__ extern long long int strtoll_l(const char *__restrict __nptr, + char **__restrict __endptr, + int __base, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 4))); + +__extension__ extern unsigned long long int +strtoull_l(const char *__restrict __nptr, char **__restrict __endptr, + int __base, locale_t __loc) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 4))); + +extern double strtod_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern float strtof_l(const char *__restrict __nptr, char **__restrict __endptr, + locale_t __loc) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 3))); + +extern long double strtold_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); +extern _Float32 strtof32_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern _Float64 strtof64_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern _Float128 strtof128_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern _Float32x strtof32x_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern _Float64x strtof64x_l(const char *__restrict __nptr, + char **__restrict __endptr, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) atoi(const char *__nptr) { + return (int)strtol(__nptr, (char **)((void *)0), 10); +} +extern __inline __attribute__((__gnu_inline__)) long int + __attribute__((__nothrow__, __leaf__)) atol(const char *__nptr) { + return strtol(__nptr, (char **)((void *)0), 10); +} + +__extension__ extern __inline __attribute__((__gnu_inline__)) long long int + __attribute__((__nothrow__, __leaf__)) atoll(const char *__nptr) { + return strtoll(__nptr, (char **)((void *)0), 10); +} +extern char *l64a(long int __n) __attribute__((__nothrow__, __leaf__)); + +extern long int a64l(const char *__s) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1))); +extern long int random(void) __attribute__((__nothrow__, __leaf__)); + +extern void srandom(unsigned int __seed) __attribute__((__nothrow__, __leaf__)); + +extern char *initstate(unsigned int __seed, char *__statebuf, size_t __statelen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern char *setstate(char *__statebuf) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +struct random_data { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; +}; + +extern int random_r(struct random_data *__restrict __buf, + int32_t *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int srandom_r(unsigned int __seed, struct random_data *__buf) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int initstate_r(unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, struct random_data *__restrict __buf) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))); + +extern int setstate_r(char *__restrict __statebuf, + struct random_data *__restrict __buf) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int rand(void) __attribute__((__nothrow__, __leaf__)); + +extern void srand(unsigned int __seed) __attribute__((__nothrow__, __leaf__)); + +extern int rand_r(unsigned int *__seed) __attribute__((__nothrow__, __leaf__)); + +extern double drand48(void) __attribute__((__nothrow__, __leaf__)); +extern double erand48(unsigned short int __xsubi[3]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern long int lrand48(void) __attribute__((__nothrow__, __leaf__)); +extern long int nrand48(unsigned short int __xsubi[3]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern long int mrand48(void) __attribute__((__nothrow__, __leaf__)); +extern long int jrand48(unsigned short int __xsubi[3]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern void srand48(long int __seedval) __attribute__((__nothrow__, __leaf__)); +extern unsigned short int *seed48(unsigned short int __seed16v[3]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern void lcong48(unsigned short int __param[7]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +struct drand48_data { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + __extension__ unsigned long long int __a; +}; + +extern int drand48_r(struct drand48_data *__restrict __buffer, + double *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); +extern int erand48_r(unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int lrand48_r(struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); +extern int nrand48_r(unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int mrand48_r(struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); +extern int jrand48_r(unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int srand48_r(long int __seedval, struct drand48_data *__buffer) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int seed48_r(unsigned short int __seed16v[3], + struct drand48_data *__buffer) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int lcong48_r(unsigned short int __param[7], + struct drand48_data *__buffer) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern void *malloc(size_t __size) __attribute__((__nothrow__, __leaf__)) +__attribute__((__malloc__)); + +extern void *calloc(size_t __nmemb, size_t __size) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); + +extern void *realloc(void *__ptr, size_t __size) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__warn_unused_result__)); + +extern void *reallocarray(void *__ptr, size_t __nmemb, size_t __size) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__warn_unused_result__)); + +extern void free(void *__ptr) __attribute__((__nothrow__, __leaf__)); + +extern void *alloca(size_t __size) __attribute__((__nothrow__, __leaf__)); + +extern void *valloc(size_t __size) __attribute__((__nothrow__, __leaf__)) +__attribute__((__malloc__)); + +extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern void *aligned_alloc(size_t __alignment, size_t __size) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) + __attribute__((__alloc_size__(2))); + +extern void abort(void) __attribute__((__nothrow__, __leaf__)) +__attribute__((__noreturn__)); + +extern int atexit(void (*__func)(void)) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +extern int at_quick_exit(void (*__func)(void)) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int on_exit(void (*__func)(int __status, void *__arg), void *__arg) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern void exit(int __status) __attribute__((__nothrow__, __leaf__)) +__attribute__((__noreturn__)); + +extern void quick_exit(int __status) __attribute__((__nothrow__, __leaf__)) +__attribute__((__noreturn__)); + +extern void _Exit(int __status) __attribute__((__nothrow__, __leaf__)) +__attribute__((__noreturn__)); + +extern char *getenv(const char *__name) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +extern char *secure_getenv(const char *__name) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int putenv(char *__string) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +extern int setenv(const char *__name, const char *__value, int __replace) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int unsetenv(const char *__name) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +extern int clearenv(void) __attribute__((__nothrow__, __leaf__)); +extern char *mktemp(char *__template) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); +extern int mkstemp(char *__template) __attribute__((__nonnull__(1))); +extern int mkstemp64(char *__template) __attribute__((__nonnull__(1))); +extern int mkstemps(char *__template, int __suffixlen) + __attribute__((__nonnull__(1))); +extern int mkstemps64(char *__template, int __suffixlen) + __attribute__((__nonnull__(1))); +extern char *mkdtemp(char *__template) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); +extern int mkostemp(char *__template, int __flags) + __attribute__((__nonnull__(1))); +extern int mkostemp64(char *__template, int __flags) + __attribute__((__nonnull__(1))); +extern int mkostemps(char *__template, int __suffixlen, int __flags) + __attribute__((__nonnull__(1))); +extern int mkostemps64(char *__template, int __suffixlen, int __flags) + __attribute__((__nonnull__(1))); +extern int system(const char *__command); + +extern char *canonicalize_file_name(const char *__name) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern char *realpath(const char *__restrict __name, + char *__restrict __resolved) + __attribute__((__nothrow__, __leaf__)); + +typedef int (*__compar_fn_t)(const void *, const void *); + +typedef __compar_fn_t comparison_fn_t; + +typedef int (*__compar_d_fn_t)(const void *, const void *, void *); + +extern void *bsearch(const void *__key, const void *__base, size_t __nmemb, + size_t __size, __compar_fn_t __compar) + __attribute__((__nonnull__(1, 2, 5))); + +extern __inline __attribute__((__gnu_inline__)) void * +bsearch(const void *__key, const void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) { + size_t __l, __u, __idx; + const void *__p; + int __comparison; + + __l = 0; + __u = __nmemb; + while (__l < __u) { + __idx = (__l + __u) / 2; + __p = (void *)(((const char *)__base) + (__idx * __size)); + __comparison = (*__compar)(__key, __p); + if (__comparison < 0) + __u = __idx; + else if (__comparison > 0) + __l = __idx + 1; + else + return (void *)__p; + } + + return ((void *)0); +} + +extern void qsort(void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__((__nonnull__(1, 4))); + +extern void qsort_r(void *__base, size_t __nmemb, size_t __size, + __compar_d_fn_t __compar, void *__arg) + __attribute__((__nonnull__(1, 4))); + +extern int abs(int __x) __attribute__((__nothrow__, __leaf__)) +__attribute__((__const__)); +extern long int labs(long int __x) __attribute__((__nothrow__, __leaf__)) +__attribute__((__const__)); + +__extension__ extern long long int llabs(long long int __x) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); + +extern div_t div(int __numer, int __denom) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +extern ldiv_t ldiv(long int __numer, long int __denom) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); + +__extension__ extern lldiv_t lldiv(long long int __numer, long long int __denom) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +extern char *ecvt(double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3, 4))); + +extern char *fcvt(double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(3, 4))); + +extern char *gcvt(double __value, int __ndigit, char *__buf) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))); + +extern char *qecvt(long double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))); +extern char *qfcvt(long double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))); +extern char *qgcvt(long double __value, int __ndigit, char *__buf) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))); + +extern int ecvt_r(double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, size_t __len) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(3, 4, 5))); +extern int fcvt_r(double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, size_t __len) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(3, 4, 5))); + +extern int qecvt_r(long double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, size_t __len) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(3, 4, 5))); +extern int qfcvt_r(long double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, size_t __len) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(3, 4, 5))); + +extern int mblen(const char *__s, size_t __n) + __attribute__((__nothrow__, __leaf__)); + +extern int mbtowc(wchar_t *__restrict __pwc, const char *__restrict __s, + size_t __n) __attribute__((__nothrow__, __leaf__)); + +extern int wctomb(char *__s, wchar_t __wchar) + __attribute__((__nothrow__, __leaf__)); + +extern size_t mbstowcs(wchar_t *__restrict __pwcs, const char *__restrict __s, + size_t __n) __attribute__((__nothrow__, __leaf__)); + +extern size_t wcstombs(char *__restrict __s, const wchar_t *__restrict __pwcs, + size_t __n) __attribute__((__nothrow__, __leaf__)); + +extern int rpmatch(const char *__response) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern int getsubopt(char **__restrict __optionp, + char *const *__restrict __tokens, + char **__restrict __valuep) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1, 2, 3))); + +extern int posix_openpt(int __oflag); + +extern int grantpt(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int unlockpt(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern char *ptsname(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int ptsname_r(int __fd, char *__buf, size_t __buflen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int getpt(void); + +extern int getloadavg(double __loadavg[], int __nelem) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern __inline __attribute__((__gnu_inline__)) double + __attribute__((__nothrow__, __leaf__)) atof(const char *__nptr) { + return strtod(__nptr, (char **)((void *)0)); +} + +extern void *memcpy(void *__restrict __dest, const void *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern void *memmove(void *__dest, const void *__src, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern void *memccpy(void *__restrict __dest, const void *__restrict __src, + int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern void *memset(void *__s, int __c, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int memcmp(const void *__s1, const void *__s2, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); +extern void *memchr(const void *__s, int __c, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); +extern void *rawmemchr(const void *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); +extern void *memrchr(const void *__s, int __c, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); + +extern char *strcpy(char *__restrict __dest, const char *__restrict __src) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern char *strncpy(char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern char *strcat(char *__restrict __dest, const char *__restrict __src) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern char *strncat(char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern int strcmp(const char *__s1, const char *__s2) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern int strncmp(const char *__s1, const char *__s2, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern int strcoll(const char *__s1, const char *__s2) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern size_t strxfrm(char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(2))); + +extern int strcoll_l(const char *__s1, const char *__s2, locale_t __l) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2, 3))); + +extern size_t strxfrm_l(char *__dest, const char *__src, size_t __n, + locale_t __l) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(2, 4))); + +extern char *strdup(const char *__s) __attribute__((__nothrow__, __leaf__)) +__attribute__((__malloc__)) __attribute__((__nonnull__(1))); + +extern char *strndup(const char *__string, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) + __attribute__((__nonnull__(1))); +extern char *strchr(const char *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); +extern char *strrchr(const char *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); +extern char *strchrnul(const char *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); + +extern size_t strcspn(const char *__s, const char *__reject) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern size_t strspn(const char *__s, const char *__accept) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); +extern char *strpbrk(const char *__s, const char *__accept) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); +extern char *strstr(const char *__haystack, const char *__needle) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern char *strtok(char *__restrict __s, const char *__restrict __delim) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern char *__strtok_r(char *__restrict __s, const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); + +extern char *strtok_r(char *__restrict __s, const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); +extern char *strcasestr(const char *__haystack, const char *__needle) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern void *memmem(const void *__haystack, size_t __haystacklen, + const void *__needle, size_t __needlelen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 3))); + +extern void *__mempcpy(void *__restrict __dest, const void *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); +extern void *mempcpy(void *__restrict __dest, const void *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern size_t strlen(const char *__s) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1))); + +extern size_t strnlen(const char *__string, size_t __maxlen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); + +extern char *strerror(int __errnum) __attribute__((__nothrow__, __leaf__)); +extern char *strerror_r(int __errnum, char *__buf, size_t __buflen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern char *strerror_l(int __errnum, locale_t __l) + __attribute__((__nothrow__, __leaf__)); + +extern int bcmp(const void *__s1, const void *__s2, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern void bcopy(const void *__src, void *__dest, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern void bzero(void *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); +extern char *index(const char *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); +extern char *rindex(const char *__s, int __c) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1))); + +extern int ffs(int __i) __attribute__((__nothrow__, __leaf__)) +__attribute__((__const__)); + +extern int ffsl(long int __l) __attribute__((__nothrow__, __leaf__)) +__attribute__((__const__)); +__extension__ extern int ffsll(long long int __ll) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); + +extern int strcasecmp(const char *__s1, const char *__s2) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern int strncasecmp(const char *__s1, const char *__s2, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern int strcasecmp_l(const char *__s1, const char *__s2, locale_t __loc) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2, 3))); + +extern int strncasecmp_l(const char *__s1, const char *__s2, size_t __n, + locale_t __loc) __attribute__((__nothrow__, __leaf__)) +__attribute__((__pure__)) __attribute__((__nonnull__(1, 2, 4))); + +extern void explicit_bzero(void *__s, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern char *strsep(char **__restrict __stringp, const char *__restrict __delim) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern char *strsignal(int __sig) __attribute__((__nothrow__, __leaf__)); + +extern char *__stpcpy(char *__restrict __dest, const char *__restrict __src) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); +extern char *stpcpy(char *__restrict __dest, const char *__restrict __src) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern char *__stpncpy(char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); +extern char *stpncpy(char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1, 2))); + +extern int strverscmp(const char *__s1, const char *__s2) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); + +extern char *strfry(char *__string) __attribute__((__nothrow__, __leaf__)) +__attribute__((__nonnull__(1))); + +extern void *memfrob(void *__s, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern char *basename(const char *__filename) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +typedef long int ptrdiff_t; +typedef struct { + long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); + long double __max_align_ld + __attribute__((__aligned__(__alignof__(long double)))); +} max_align_t; + +typedef void *iconv_t; + +extern iconv_t iconv_open(const char *__tocode, const char *__fromcode); + +extern size_t iconv(iconv_t __cd, char **__restrict __inbuf, + size_t *__restrict __inbytesleft, + char **__restrict __outbuf, + size_t *__restrict __outbytesleft); + +extern int iconv_close(iconv_t __cd); + +struct loaded_l10nfile { + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + +extern const char *_nl_normalize_codeset(const char *codeset, size_t name_len); +extern struct loaded_l10nfile * +_nl_make_l10nflist(struct loaded_l10nfile **l10nfile_list, const char *dirlist, + size_t dirlist_len, int mask, const char *language, + const char *territory, const char *codeset, + const char *normalized_codeset, const char *modifier, + const char *special, const char *sponsor, + const char *revision, const char *filename, int do_allocate) + + ; + +extern const char *_nl_expand_alias(const char *name); +extern int +_nl_explode_name(char *name, const char **language, const char **modifier, + const char **territory, const char **codeset, + const char **normalized_codeset, const char **special, + const char **sponsor, const char **revision) + + ; + +extern char *_nl_find_language(const char *name); + +typedef unsigned nls_uint32; +struct mo_file_header { + + nls_uint32 magic; + + nls_uint32 revision; + + nls_uint32 nstrings; + + nls_uint32 orig_tab_offset; + + nls_uint32 trans_tab_offset; + + nls_uint32 hash_tab_size; + + nls_uint32 hash_tab_offset; + + nls_uint32 n_sysdep_segments; + + nls_uint32 sysdep_segments_offset; + + nls_uint32 n_sysdep_strings; + + nls_uint32 orig_sysdep_tab_offset; + + nls_uint32 trans_sysdep_tab_offset; +}; + +struct string_desc { + + nls_uint32 length; + + nls_uint32 offset; +}; + +struct sysdep_segment { + + nls_uint32 length; + + nls_uint32 offset; +}; + +struct sysdep_string { + + nls_uint32 offset; + + struct segment_pair { + + nls_uint32 segsize; + + nls_uint32 sysdepref; + } segments[1]; +}; +static inline nls_uint32 SWAP(i) nls_uint32 i; +{ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); } + +struct sysdep_string_desc { + + size_t length; + + const char *pointer; +}; + +struct loaded_domain { + + const char *data; + + int use_mmap; + + size_t mmap_size; + + int must_swap; + + void *malloced; + + nls_uint32 nstrings; + + const struct string_desc *orig_tab; + + const struct string_desc *trans_tab; + + nls_uint32 n_sysdep_strings; + + const struct sysdep_string_desc *orig_sysdep_tab; + + const struct sysdep_string_desc *trans_sysdep_tab; + + nls_uint32 hash_size; + + const nls_uint32 *hash_tab; + + int must_swap_hash_tab; + + int codeset_cntr; + + iconv_t conv; + + char **conv_tab; + + struct expression *plural; + unsigned long int nplurals; +}; +struct binding { + struct binding *next; + char *dirname; + int codeset_cntr; + char *codeset; + char domainname[0]; +}; + +extern int _nl_msg_cat_cntr; + +const char *_nl_locale_name(int category, const char *categoryname); + +struct loaded_l10nfile *_nl_find_domain(const char *__dirname, char *__locale, + const char *__domainname, + struct binding *__domainbinding) + + ; +void _nl_load_domain(struct loaded_l10nfile *__domain, + struct binding *__domainbinding) + + ; +void _nl_unload_domain(struct loaded_domain *__domain); +const char *_nl_init_domain_conv(struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding) + + ; +void _nl_free_domain_conv(struct loaded_domain *__domain); + +char *_nl_find_msg(struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + size_t *lengthp) + + ; + +struct lconv { + + char *decimal_point; + char *thousands_sep; + + char *grouping; + + char *int_curr_symbol; + char *currency_symbol; + char *mon_decimal_point; + char *mon_thousands_sep; + char *mon_grouping; + char *positive_sign; + char *negative_sign; + char int_frac_digits; + char frac_digits; + + char p_cs_precedes; + + char p_sep_by_space; + + char n_cs_precedes; + + char n_sep_by_space; + + char p_sign_posn; + char n_sign_posn; + + char int_p_cs_precedes; + + char int_p_sep_by_space; + + char int_n_cs_precedes; + + char int_n_sep_by_space; + + char int_p_sign_posn; + char int_n_sign_posn; +}; + +extern char *setlocale(int __category, const char *__locale) + __attribute__((__nothrow__, __leaf__)); + +extern struct lconv *localeconv(void) __attribute__((__nothrow__, __leaf__)); +extern locale_t newlocale(int __category_mask, const char *__locale, + locale_t __base) + __attribute__((__nothrow__, __leaf__)); +extern locale_t duplocale(locale_t __dataset) + __attribute__((__nothrow__, __leaf__)); + +extern void freelocale(locale_t __dataset) + __attribute__((__nothrow__, __leaf__)); + +extern locale_t uselocale(locale_t __dataset) + __attribute__((__nothrow__, __leaf__)); + +extern char *libintl_gettext(const char *__msgid) + + __attribute__((__format_arg__(1))); +extern char *libintl_dgettext(const char *__domainname, const char *__msgid) + + __attribute__((__format_arg__(2))); +extern char *libintl_dcgettext(const char *__domainname, const char *__msgid, + int __category) + + __attribute__((__format_arg__(2))); +extern char *libintl_ngettext(const char *__msgid1, const char *__msgid2, + unsigned long int __n) + + __attribute__((__format_arg__(1))) __attribute__((__format_arg__(2))); +extern char *libintl_dngettext(const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) + + __attribute__((__format_arg__(2))) __attribute__((__format_arg__(3))); +extern char *libintl_dcngettext(const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n, + int __category) + + __attribute__((__format_arg__(2))) __attribute__((__format_arg__(3))); +extern char *libintl_textdomain(const char *__domainname); +extern char *libintl_bindtextdomain(const char *__domainname, + const char *__dirname) + + ; +extern char *libintl_bind_textdomain_codeset(const char *__domainname, + const char *__codeset) + + ; +extern void libintl_set_relocation_prefix(const char *orig_prefix, + const char *curr_prefix); +extern char *libintl_dcigettext(const char *__domainname, const char *__msgid1, + const char *__msgid2, int __plural, + unsigned long int __n, int __category) + + ; + +extern void libintl_set_relocation_prefix(const char *orig_prefix, + const char *curr_prefix); + +extern const char *libintl_relocate(const char *pathname); +extern const char *compute_curr_prefix(const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); +struct alias_map { + const char *alias; + const char *value; +}; + +static char *string_space; +static size_t string_space_act; +static size_t string_space_max; +static struct alias_map *map; +static size_t nmap; +static size_t maxmap; + +static size_t read_alias_file(const char *fname, int fname_len); +static int extend_alias_table(void); +static int alias_compare(const struct alias_map *map1, + const struct alias_map *map2); + +const char *_nl_expand_alias(name) const char *name; +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = ((void *)0); + size_t added; + + if (locale_alias_path == ((void *)0)) + locale_alias_path = + "/home/david/more-coding/gcc-git-analysis-output/install/share/locale"; + + do { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *)bsearch(&item, map, nmap, + sizeof(struct alias_map), + (int (*)(const void *, const void *) + + )alias_compare); + else + retval = ((void *)0); + + if (retval != ((void *)0)) { + result = retval->value; + break; + } + + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') { + const char *start; + + while (locale_alias_path[0] == ':') + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file(start, locale_alias_path - start); + } + } while (added != 0); + + return result; +} + +static size_t + + read_alias_file(fname, fname_len) const char *fname; +int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *)__builtin_alloca(fname_len + sizeof aliasfile); + + mempcpy(mempcpy(full_fname, fname, fname_len), aliasfile, sizeof aliasfile); + + fp = fopen(libintl_relocate(full_fname), "r"); + ; + if (fp == ((void *)0)) + return 0; + + __fsetlocking(fp, FSETLOCKING_BYCALLER); + + added = 0; + while (!feof_unlocked(fp)) { + + char buf[400]; + char *alias; + char *value; + char *cp; + + if (fgets_unlocked(buf, sizeof buf, fp) == ((void *)0)) + + break; + + cp = buf; + + while (((*__ctype_b_loc())[(int)(((unsigned char)cp[0]))] & + (unsigned short int)_ISspace)) + ++cp; + + if (cp[0] != '\0' && cp[0] != '#') { + alias = cp++; + while (cp[0] != '\0' && + !((*__ctype_b_loc())[(int)(((unsigned char)cp[0]))] & + (unsigned short int)_ISspace)) + ++cp; + + if (cp[0] != '\0') + *cp++ = '\0'; + + while (((*__ctype_b_loc())[(int)(((unsigned char)cp[0]))] & + (unsigned short int)_ISspace)) + ++cp; + + if (cp[0] != '\0') { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && + !((*__ctype_b_loc())[(int)(((unsigned char)cp[0]))] & + (unsigned short int)_ISspace)) + ++cp; + + if (cp[0] == '\n') { + + *cp++ = '\0'; + *cp = '\n'; + } else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + if ((extend_alias_table())) + return added; + + alias_len = strlen(alias) + 1; + value_len = strlen(value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) { + + size_t new_size = + (string_space_max + + (alias_len + value_len > 1024 ? alias_len + value_len : 1024)); + char *new_pool = (char *)realloc(string_space, new_size); + if (new_pool == ((void *)0)) + return added; + + if ((string_space != new_pool)) { + size_t i; + + for (i = 0; i < nmap; i++) { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = + memcpy(&string_space[string_space_act], alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = + memcpy(&string_space[string_space_act], value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + + while (strchr(buf, '\n') == ((void *)0)) + if (fgets_unlocked(buf, sizeof buf, fp) == ((void *)0)) + + break; + } + + fclose(fp); + + if (added > 0) + qsort(map, nmap, sizeof(struct alias_map), + (int (*)(const void *, const void *))alias_compare); + + return added; +} + +static int extend_alias_table() { + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = + (struct alias_map *)realloc(map, (new_size * sizeof(struct alias_map))); + if (new_map == ((void *)0)) + + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + +static int alias_compare(map1, map2) const struct alias_map *map1; +const struct alias_map *map2; +{ return strcasecmp(map1->alias, map2->alias); } -- 2.21.0