From 15b0441eb1146305d0f618f1e34ef38d357d68d6 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 31 Jul 2019 10:17:07 -0400 Subject: [PATCH 046/124] FIXME: WIP on reducing gzio-3.c --- gcc/testsuite/gcc.dg/analyzer/gzio-3.c | 2504 ++++++++++++++++++++++++++++++++ 1 file changed, 2504 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/analyzer/gzio-3.c diff --git a/gcc/testsuite/gcc.dg/analyzer/gzio-3.c b/gcc/testsuite/gcc.dg/analyzer/gzio-3.c new file mode 100644 index 0000000..33a016d --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/gzio-3.c @@ -0,0 +1,2504 @@ +/* { dg-additional-options "-O3 --param analyzer-bb-explosion-factor=20" } */ + +typedef long unsigned int size_t; + +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 long int __quad_t; +typedef unsigned long int __u_quad_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 __quad_t *__qaddr_t; +typedef char *__caddr_t; + +typedef long int __intptr_t; + +typedef unsigned int __socklen_t; +struct _IO_FILE; + +typedef struct _IO_FILE FILE; + +typedef struct _IO_FILE __FILE; + +typedef struct { + int __count; + union { + + unsigned int __wch; + + char __wchb[4]; + } __value; +} __mbstate_t; +typedef struct { + __off_t __pos; + __mbstate_t __state; +} _G_fpos_t; +typedef struct { + __off64_t __pos; + __mbstate_t __state; +} _G_fpos64_t; +typedef __builtin_va_list __gnuc_va_list; +struct _IO_jump_t; +struct _IO_FILE; +typedef void _IO_lock_t; + +struct _IO_marker { + struct _IO_marker *_next; + struct _IO_FILE *_sbuf; + + int _pos; +}; + +enum __codecvt_result { + __codecvt_ok, + __codecvt_partial, + __codecvt_error, + __codecvt_noconv +}; +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; + void *__pad1; + void *__pad2; + void *__pad3; + void *__pad4; + size_t __pad5; + + int _mode; + + char _unused2[15 * sizeof(int) - 4 * sizeof(void *) - sizeof(size_t)]; +}; + +typedef struct _IO_FILE _IO_FILE; + +struct _IO_FILE_plus; + +extern struct _IO_FILE_plus _IO_2_1_stdin_; +extern struct _IO_FILE_plus _IO_2_1_stdout_; +extern struct _IO_FILE_plus _IO_2_1_stderr_; +typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __nbytes); + +typedef __ssize_t __io_write_fn(void *__cookie, const char *__buf, size_t __n); + +typedef int __io_seek_fn(void *__cookie, __off64_t *__pos, int __w); + +typedef int __io_close_fn(void *__cookie); +extern int __underflow(_IO_FILE *); +extern int __uflow(_IO_FILE *); +extern int __overflow(_IO_FILE *, int); +extern int _IO_getc(_IO_FILE *__fp); +extern int _IO_putc(int __c, _IO_FILE *__fp); +extern int _IO_feof(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__)); +extern int _IO_ferror(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__)); + +extern int _IO_peekc_locked(_IO_FILE *__fp); + +extern void _IO_flockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); +extern void _IO_funlockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); +extern int _IO_ftrylockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__)); +extern int _IO_vfscanf(_IO_FILE *__restrict, const char *__restrict, + __gnuc_va_list, int *__restrict); +extern int _IO_vfprintf(_IO_FILE *__restrict, const char *__restrict, + __gnuc_va_list); +extern __ssize_t _IO_padn(_IO_FILE *, int, __ssize_t); +extern size_t _IO_sgetn(_IO_FILE *, void *, size_t); + +extern __off64_t _IO_seekoff(_IO_FILE *, __off64_t, int, int); +extern __off64_t _IO_seekpos(_IO_FILE *, __off64_t, int); + +extern void _IO_free_backup_area(_IO_FILE *) + __attribute__((__nothrow__, __leaf__)); + +typedef __gnuc_va_list va_list; +typedef __off_t off_t; +typedef __ssize_t ssize_t; + +typedef _G_fpos_t fpos_t; + +extern struct _IO_FILE *stdin; +extern struct _IO_FILE *stdout; +extern struct _IO_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 FILE *tmpfile(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 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 *fdopen(int __fd, const char *__modes) + __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 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 __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 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 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 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 void flockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern int ftrylockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); + +extern void funlockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)); +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 _IO_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 _IO_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__)) int + __attribute__((__nothrow__, __leaf__)) feof_unlocked(FILE *__stream) { + return (((__stream)->_flags & 0x10) != 0); +} + +extern __inline __attribute__((__gnu_inline__)) int + __attribute__((__nothrow__, __leaf__)) ferror_unlocked(FILE *__stream) { + return (((__stream)->_flags & 0x20) != 0); +} + +typedef unsigned char Byte; + +typedef unsigned int uInt; +typedef unsigned long uLong; + +typedef Byte Bytef; + +typedef char charf; +typedef int intf; +typedef uInt uIntf; +typedef uLong uLongf; + +typedef void *voidpf; +typedef void *voidp; + +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 __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 __time_t time_t; + +typedef __clockid_t clockid_t; +typedef __timer_t timer_t; + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; +typedef int int8_t __attribute__((__mode__(__QI__))); +typedef int int16_t __attribute__((__mode__(__HI__))); +typedef int int32_t __attribute__((__mode__(__SI__))); +typedef int int64_t __attribute__((__mode__(__DI__))); + +typedef unsigned int u_int8_t __attribute__((__mode__(__QI__))); +typedef unsigned int u_int16_t __attribute__((__mode__(__HI__))); +typedef unsigned int u_int32_t __attribute__((__mode__(__SI__))); +typedef unsigned int u_int64_t __attribute__((__mode__(__DI__))); + +typedef int register_t __attribute__((__mode__(__word__))); + +static __inline unsigned int __bswap_32(unsigned int __bsx) { + return __builtin_bswap32(__bsx); +} +static __inline __uint64_t __bswap_64(__uint64_t __bsx) { + return __builtin_bswap64(__bsx); +} + +typedef int __sig_atomic_t; + +typedef struct { + unsigned long int __val[(1024 / (8 * sizeof(unsigned long int)))]; +} __sigset_t; + +typedef __sigset_t sigset_t; + +struct timespec { + __time_t tv_sec; + __syscall_slong_t tv_nsec; +}; + +struct timeval { + __time_t tv_sec; + __suseconds_t tv_usec; +}; + +typedef __suseconds_t suseconds_t; + +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); + +__extension__ extern unsigned int gnu_dev_major(unsigned long long int __dev) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +__extension__ extern unsigned int gnu_dev_minor(unsigned long long int __dev) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); +__extension__ extern unsigned long long int +gnu_dev_makedev(unsigned int __major, unsigned int __minor) + __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)); + +__extension__ extern __inline __attribute__((__gnu_inline__)) + __attribute__((__const__)) unsigned int + __attribute__((__nothrow__, __leaf__)) + gnu_dev_major(unsigned long long int __dev) { + return ((__dev >> 8) & 0xfff) | ((unsigned int)(__dev >> 32) & ~0xfff); +} + +__extension__ extern __inline __attribute__((__gnu_inline__)) + __attribute__((__const__)) unsigned int + __attribute__((__nothrow__, __leaf__)) + gnu_dev_minor(unsigned long long int __dev) { + return (__dev & 0xff) | ((unsigned int)(__dev >> 12) & ~0xff); +} + +__extension__ extern __inline __attribute__((__gnu_inline__)) + __attribute__((__const__)) unsigned long long int + __attribute__((__nothrow__, __leaf__)) + gnu_dev_makedev(unsigned int __major, unsigned int __minor) { + return ((__minor & 0xff) | ((__major & 0xfff) << 8) | + (((unsigned long long int)(__minor & ~0xff)) << 12) | + (((unsigned long long int)(__major & ~0xfff)) << 32)); +} + +typedef __blksize_t blksize_t; + +typedef __blkcnt_t blkcnt_t; + +typedef __fsblkcnt_t fsblkcnt_t; + +typedef __fsfilcnt_t fsfilcnt_t; +typedef unsigned long int pthread_t; + +union pthread_attr_t { + char __size[56]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + +typedef struct __pthread_internal_list { + struct __pthread_internal_list *__prev; + struct __pthread_internal_list *__next; +} __pthread_list_t; +typedef union { + struct __pthread_mutex_s { + int __lock; + unsigned int __count; + int __owner; + + unsigned int __nusers; + + int __kind; + + short __spins; + short __elision; + __pthread_list_t __list; + } __data; + char __size[40]; + long int __align; +} pthread_mutex_t; + +typedef union { + char __size[4]; + int __align; +} pthread_mutexattr_t; + +typedef union { + struct { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union { + char __size[4]; + int __align; +} pthread_condattr_t; + +typedef unsigned int pthread_key_t; + +typedef int pthread_once_t; + +typedef union { + + struct { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + int __writer; + int __shared; + unsigned long int __pad1; + unsigned long int __pad2; + + unsigned int __flags; + + } __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 __useconds_t useconds_t; +typedef __intptr_t intptr_t; + +typedef __socklen_t socklen_t; +extern int access(const char *__name, int __type) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern int faccessat(int __fd, const char *__file, int __type, int __flag) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); +extern __off_t lseek(int __fd, __off_t __offset, int __whence) + __attribute__((__nothrow__, __leaf__)); +extern int close(int __fd); + +extern ssize_t read(int __fd, void *__buf, size_t __nbytes); + +extern ssize_t write(int __fd, const void *__buf, size_t __n); +extern ssize_t pread(int __fd, void *__buf, size_t __nbytes, __off_t __offset); + +extern ssize_t pwrite(int __fd, const void *__buf, size_t __n, + __off_t __offset); +extern int pipe(int __pipedes[2]) __attribute__((__nothrow__, __leaf__)); +extern unsigned int alarm(unsigned int __seconds) + __attribute__((__nothrow__, __leaf__)); +extern unsigned int sleep(unsigned int __seconds); + +extern __useconds_t ualarm(__useconds_t __value, __useconds_t __interval) + __attribute__((__nothrow__, __leaf__)); + +extern int usleep(__useconds_t __useconds); +extern int pause(void); + +extern int chown(const char *__file, __uid_t __owner, __gid_t __group) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int fchown(int __fd, __uid_t __owner, __gid_t __group) + __attribute__((__nothrow__, __leaf__)); + +extern int lchown(const char *__file, __uid_t __owner, __gid_t __group) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int fchownat(int __fd, const char *__file, __uid_t __owner, + __gid_t __group, int __flag) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int chdir(const char *__path) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern int fchdir(int __fd) __attribute__((__nothrow__, __leaf__)); +extern char *getcwd(char *__buf, size_t __size) + __attribute__((__nothrow__, __leaf__)); +extern char *getwd(char *__buf) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))) __attribute__((__deprecated__)); + +extern int dup(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int dup2(int __fd, int __fd2) __attribute__((__nothrow__, __leaf__)); +extern char **__environ; + +extern int execve(const char *__path, char *const __argv[], + char *const __envp[]) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1, 2))); + +extern int fexecve(int __fd, char *const __argv[], char *const __envp[]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int execv(const char *__path, char *const __argv[]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int execle(const char *__path, const char *__arg, ...) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int execl(const char *__path, const char *__arg, ...) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int execvp(const char *__file, char *const __argv[]) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int execlp(const char *__file, const char *__arg, ...) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); +extern int nice(int __inc) __attribute__((__nothrow__, __leaf__)); + +extern void _exit(int __status) __attribute__((__noreturn__)); + +enum { + _PC_LINK_MAX, + _PC_MAX_CANON, + _PC_MAX_INPUT, + _PC_NAME_MAX, + _PC_PATH_MAX, + _PC_PIPE_BUF, + _PC_CHOWN_RESTRICTED, + _PC_NO_TRUNC, + _PC_VDISABLE, + _PC_SYNC_IO, + _PC_ASYNC_IO, + _PC_PRIO_IO, + _PC_SOCK_MAXBUF, + _PC_FILESIZEBITS, + _PC_REC_INCR_XFER_SIZE, + _PC_REC_MAX_XFER_SIZE, + _PC_REC_MIN_XFER_SIZE, + _PC_REC_XFER_ALIGN, + _PC_ALLOC_SIZE_MIN, + _PC_SYMLINK_MAX, + _PC_2_SYMLINKS +}; + +enum { + _SC_ARG_MAX, + _SC_CHILD_MAX, + _SC_CLK_TCK, + _SC_NGROUPS_MAX, + _SC_OPEN_MAX, + _SC_STREAM_MAX, + _SC_TZNAME_MAX, + _SC_JOB_CONTROL, + _SC_SAVED_IDS, + _SC_REALTIME_SIGNALS, + _SC_PRIORITY_SCHEDULING, + _SC_TIMERS, + _SC_ASYNCHRONOUS_IO, + _SC_PRIORITIZED_IO, + _SC_SYNCHRONIZED_IO, + _SC_FSYNC, + _SC_MAPPED_FILES, + _SC_MEMLOCK, + _SC_MEMLOCK_RANGE, + _SC_MEMORY_PROTECTION, + _SC_MESSAGE_PASSING, + _SC_SEMAPHORES, + _SC_SHARED_MEMORY_OBJECTS, + _SC_AIO_LISTIO_MAX, + _SC_AIO_MAX, + _SC_AIO_PRIO_DELTA_MAX, + _SC_DELAYTIMER_MAX, + _SC_MQ_OPEN_MAX, + _SC_MQ_PRIO_MAX, + _SC_VERSION, + _SC_PAGESIZE, + _SC_RTSIG_MAX, + _SC_SEM_NSEMS_MAX, + _SC_SEM_VALUE_MAX, + _SC_SIGQUEUE_MAX, + _SC_TIMER_MAX, + _SC_BC_BASE_MAX, + _SC_BC_DIM_MAX, + _SC_BC_SCALE_MAX, + _SC_BC_STRING_MAX, + _SC_COLL_WEIGHTS_MAX, + _SC_EQUIV_CLASS_MAX, + _SC_EXPR_NEST_MAX, + _SC_LINE_MAX, + _SC_RE_DUP_MAX, + _SC_CHARCLASS_NAME_MAX, + _SC_2_VERSION, + _SC_2_C_BIND, + _SC_2_C_DEV, + _SC_2_FORT_DEV, + _SC_2_FORT_RUN, + _SC_2_SW_DEV, + _SC_2_LOCALEDEF, + _SC_PII, + _SC_PII_XTI, + _SC_PII_SOCKET, + _SC_PII_INTERNET, + _SC_PII_OSI, + _SC_POLL, + _SC_SELECT, + _SC_UIO_MAXIOV, + _SC_IOV_MAX = _SC_UIO_MAXIOV, + _SC_PII_INTERNET_STREAM, + _SC_PII_INTERNET_DGRAM, + _SC_PII_OSI_COTS, + _SC_PII_OSI_CLTS, + _SC_PII_OSI_M, + _SC_T_IOV_MAX, + _SC_THREADS, + _SC_THREAD_SAFE_FUNCTIONS, + _SC_GETGR_R_SIZE_MAX, + _SC_GETPW_R_SIZE_MAX, + _SC_LOGIN_NAME_MAX, + _SC_TTY_NAME_MAX, + _SC_THREAD_DESTRUCTOR_ITERATIONS, + _SC_THREAD_KEYS_MAX, + _SC_THREAD_STACK_MIN, + _SC_THREAD_THREADS_MAX, + _SC_THREAD_ATTR_STACKADDR, + _SC_THREAD_ATTR_STACKSIZE, + _SC_THREAD_PRIORITY_SCHEDULING, + _SC_THREAD_PRIO_INHERIT, + _SC_THREAD_PRIO_PROTECT, + _SC_THREAD_PROCESS_SHARED, + _SC_NPROCESSORS_CONF, + _SC_NPROCESSORS_ONLN, + _SC_PHYS_PAGES, + _SC_AVPHYS_PAGES, + _SC_ATEXIT_MAX, + _SC_PASS_MAX, + _SC_XOPEN_VERSION, + _SC_XOPEN_XCU_VERSION, + _SC_XOPEN_UNIX, + _SC_XOPEN_CRYPT, + _SC_XOPEN_ENH_I18N, + _SC_XOPEN_SHM, + _SC_2_CHAR_TERM, + _SC_2_C_VERSION, + _SC_2_UPE, + _SC_XOPEN_XPG2, + _SC_XOPEN_XPG3, + _SC_XOPEN_XPG4, + _SC_CHAR_BIT, + _SC_CHAR_MAX, + _SC_CHAR_MIN, + _SC_INT_MAX, + _SC_INT_MIN, + _SC_LONG_BIT, + _SC_WORD_BIT, + _SC_MB_LEN_MAX, + _SC_NZERO, + _SC_SSIZE_MAX, + _SC_SCHAR_MAX, + _SC_SCHAR_MIN, + _SC_SHRT_MAX, + _SC_SHRT_MIN, + _SC_UCHAR_MAX, + _SC_UINT_MAX, + _SC_ULONG_MAX, + _SC_USHRT_MAX, + _SC_NL_ARGMAX, + _SC_NL_LANGMAX, + _SC_NL_MSGMAX, + _SC_NL_NMAX, + _SC_NL_SETMAX, + _SC_NL_TEXTMAX, + _SC_XBS5_ILP32_OFF32, + _SC_XBS5_ILP32_OFFBIG, + _SC_XBS5_LP64_OFF64, + _SC_XBS5_LPBIG_OFFBIG, + _SC_XOPEN_LEGACY, + _SC_XOPEN_REALTIME, + _SC_XOPEN_REALTIME_THREADS, + _SC_ADVISORY_INFO, + _SC_BARRIERS, + _SC_BASE, + _SC_C_LANG_SUPPORT, + _SC_C_LANG_SUPPORT_R, + _SC_CLOCK_SELECTION, + _SC_CPUTIME, + _SC_THREAD_CPUTIME, + _SC_DEVICE_IO, + _SC_DEVICE_SPECIFIC, + _SC_DEVICE_SPECIFIC_R, + _SC_FD_MGMT, + _SC_FIFO, + _SC_PIPE, + _SC_FILE_ATTRIBUTES, + _SC_FILE_LOCKING, + _SC_FILE_SYSTEM, + _SC_MONOTONIC_CLOCK, + _SC_MULTI_PROCESS, + _SC_SINGLE_PROCESS, + _SC_NETWORKING, + _SC_READER_WRITER_LOCKS, + _SC_SPIN_LOCKS, + _SC_REGEXP, + _SC_REGEX_VERSION, + _SC_SHELL, + _SC_SIGNALS, + _SC_SPAWN, + _SC_SPORADIC_SERVER, + _SC_THREAD_SPORADIC_SERVER, + _SC_SYSTEM_DATABASE, + _SC_SYSTEM_DATABASE_R, + _SC_TIMEOUTS, + _SC_TYPED_MEMORY_OBJECTS, + _SC_USER_GROUPS, + _SC_USER_GROUPS_R, + _SC_2_PBS, + _SC_2_PBS_ACCOUNTING, + _SC_2_PBS_LOCATE, + _SC_2_PBS_MESSAGE, + _SC_2_PBS_TRACK, + _SC_SYMLOOP_MAX, + _SC_STREAMS, + _SC_2_PBS_CHECKPOINT, + _SC_V6_ILP32_OFF32, + _SC_V6_ILP32_OFFBIG, + _SC_V6_LP64_OFF64, + _SC_V6_LPBIG_OFFBIG, + _SC_HOST_NAME_MAX, + _SC_TRACE, + _SC_TRACE_EVENT_FILTER, + _SC_TRACE_INHERIT, + _SC_TRACE_LOG, + _SC_LEVEL1_ICACHE_SIZE, + _SC_LEVEL1_ICACHE_ASSOC, + _SC_LEVEL1_ICACHE_LINESIZE, + _SC_LEVEL1_DCACHE_SIZE, + _SC_LEVEL1_DCACHE_ASSOC, + _SC_LEVEL1_DCACHE_LINESIZE, + _SC_LEVEL2_CACHE_SIZE, + _SC_LEVEL2_CACHE_ASSOC, + _SC_LEVEL2_CACHE_LINESIZE, + _SC_LEVEL3_CACHE_SIZE, + _SC_LEVEL3_CACHE_ASSOC, + _SC_LEVEL3_CACHE_LINESIZE, + _SC_LEVEL4_CACHE_SIZE, + _SC_LEVEL4_CACHE_ASSOC, + _SC_LEVEL4_CACHE_LINESIZE, + _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, + _SC_RAW_SOCKETS, + _SC_V7_ILP32_OFF32, + _SC_V7_ILP32_OFFBIG, + _SC_V7_LP64_OFF64, + _SC_V7_LPBIG_OFFBIG, + _SC_SS_REPL_MAX, + _SC_TRACE_EVENT_NAME_MAX, + _SC_TRACE_NAME_MAX, + _SC_TRACE_SYS_MAX, + _SC_TRACE_USER_EVENT_MAX, + _SC_XOPEN_STREAMS, + _SC_THREAD_ROBUST_PRIO_INHERIT, + _SC_THREAD_ROBUST_PRIO_PROTECT +}; + +enum { + _CS_PATH, + _CS_V6_WIDTH_RESTRICTED_ENVS, + _CS_GNU_LIBC_VERSION, + _CS_GNU_LIBPTHREAD_VERSION, + _CS_V5_WIDTH_RESTRICTED_ENVS, + _CS_V7_WIDTH_RESTRICTED_ENVS, + _CS_LFS_CFLAGS = 1000, + _CS_LFS_LDFLAGS, + _CS_LFS_LIBS, + _CS_LFS_LINTFLAGS, + _CS_LFS64_CFLAGS, + _CS_LFS64_LDFLAGS, + _CS_LFS64_LIBS, + _CS_LFS64_LINTFLAGS, + _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, + _CS_XBS5_ILP32_OFF32_LDFLAGS, + _CS_XBS5_ILP32_OFF32_LIBS, + _CS_XBS5_ILP32_OFF32_LINTFLAGS, + _CS_XBS5_ILP32_OFFBIG_CFLAGS, + _CS_XBS5_ILP32_OFFBIG_LDFLAGS, + _CS_XBS5_ILP32_OFFBIG_LIBS, + _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, + _CS_XBS5_LP64_OFF64_CFLAGS, + _CS_XBS5_LP64_OFF64_LDFLAGS, + _CS_XBS5_LP64_OFF64_LIBS, + _CS_XBS5_LP64_OFF64_LINTFLAGS, + _CS_XBS5_LPBIG_OFFBIG_CFLAGS, + _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, + _CS_XBS5_LPBIG_OFFBIG_LIBS, + _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, + _CS_POSIX_V6_ILP32_OFF32_CFLAGS, + _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, + _CS_POSIX_V6_ILP32_OFF32_LIBS, + _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, + _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, + _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, + _CS_POSIX_V6_ILP32_OFFBIG_LIBS, + _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, + _CS_POSIX_V6_LP64_OFF64_CFLAGS, + _CS_POSIX_V6_LP64_OFF64_LDFLAGS, + _CS_POSIX_V6_LP64_OFF64_LIBS, + _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, + _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, + _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, + _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, + _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, + _CS_POSIX_V7_ILP32_OFF32_CFLAGS, + _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, + _CS_POSIX_V7_ILP32_OFF32_LIBS, + _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, + _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, + _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, + _CS_POSIX_V7_ILP32_OFFBIG_LIBS, + _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, + _CS_POSIX_V7_LP64_OFF64_CFLAGS, + _CS_POSIX_V7_LP64_OFF64_LDFLAGS, + _CS_POSIX_V7_LP64_OFF64_LIBS, + _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, + _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, + _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, + _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, + _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, + _CS_V6_ENV, + _CS_V7_ENV +}; + +extern long int pathconf(const char *__path, int __name) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern long int fpathconf(int __fd, int __name) + __attribute__((__nothrow__, __leaf__)); + +extern long int sysconf(int __name) __attribute__((__nothrow__, __leaf__)); + +extern size_t confstr(int __name, char *__buf, size_t __len) + __attribute__((__nothrow__, __leaf__)); + +extern __pid_t getpid(void) __attribute__((__nothrow__, __leaf__)); + +extern __pid_t getppid(void) __attribute__((__nothrow__, __leaf__)); + +extern __pid_t getpgrp(void) __attribute__((__nothrow__, __leaf__)); +extern __pid_t __getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); + +extern __pid_t getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); + +extern int setpgid(__pid_t __pid, __pid_t __pgid) + __attribute__((__nothrow__, __leaf__)); +extern int setpgrp(void) __attribute__((__nothrow__, __leaf__)); +extern __pid_t setsid(void) __attribute__((__nothrow__, __leaf__)); + +extern __pid_t getsid(__pid_t __pid) __attribute__((__nothrow__, __leaf__)); + +extern __uid_t getuid(void) __attribute__((__nothrow__, __leaf__)); + +extern __uid_t geteuid(void) __attribute__((__nothrow__, __leaf__)); + +extern __gid_t getgid(void) __attribute__((__nothrow__, __leaf__)); + +extern __gid_t getegid(void) __attribute__((__nothrow__, __leaf__)); + +extern int getgroups(int __size, __gid_t __list[]) + __attribute__((__nothrow__, __leaf__)); +extern int setuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__)); + +extern int setreuid(__uid_t __ruid, __uid_t __euid) + __attribute__((__nothrow__, __leaf__)); + +extern int seteuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__)); + +extern int setgid(__gid_t __gid) __attribute__((__nothrow__, __leaf__)); + +extern int setregid(__gid_t __rgid, __gid_t __egid) + __attribute__((__nothrow__, __leaf__)); + +extern int setegid(__gid_t __gid) __attribute__((__nothrow__, __leaf__)); +extern __pid_t fork(void) __attribute__((__nothrow__)); + +extern __pid_t vfork(void) __attribute__((__nothrow__, __leaf__)); + +extern char *ttyname(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int ttyname_r(int __fd, char *__buf, size_t __buflen) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int isatty(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int ttyslot(void) __attribute__((__nothrow__, __leaf__)); + +extern int link(const char *__from, const char *__to) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern int linkat(int __fromfd, const char *__from, int __tofd, + const char *__to, int __flags) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))); + +extern int symlink(const char *__from, const char *__to) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))); + +extern ssize_t readlink(const char *__restrict __path, char *__restrict __buf, + size_t __len) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1, 2))); + +extern int symlinkat(const char *__from, int __tofd, const char *__to) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))); + +extern ssize_t readlinkat(int __fd, const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))); + +extern int unlink(const char *__name) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern int unlinkat(int __fd, const char *__name, int __flag) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); + +extern int rmdir(const char *__path) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern __pid_t tcgetpgrp(int __fd) __attribute__((__nothrow__, __leaf__)); + +extern int tcsetpgrp(int __fd, __pid_t __pgrp_id) + __attribute__((__nothrow__, __leaf__)); + +extern char *getlogin(void); + +extern int getlogin_r(char *__name, size_t __name_len) + __attribute__((__nonnull__(1))); + +extern int setlogin(const char *__name) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); +extern char *optarg; +extern int optind; + +extern int opterr; + +extern int optopt; +extern int getopt(int ___argc, char *const *___argv, const char *__shortopts) + __attribute__((__nothrow__, __leaf__)); + +extern int gethostname(char *__name, size_t __len) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int sethostname(const char *__name, size_t __len) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int sethostid(long int __id) __attribute__((__nothrow__, __leaf__)); + +extern int getdomainname(char *__name, size_t __len) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern int setdomainname(const char *__name, size_t __len) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int vhangup(void) __attribute__((__nothrow__, __leaf__)); + +extern int revoke(const char *__file) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern int profil(unsigned short int *__sample_buffer, size_t __size, + size_t __offset, unsigned int __scale) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +extern int acct(const char *__name) __attribute__((__nothrow__, __leaf__)); + +extern char *getusershell(void) __attribute__((__nothrow__, __leaf__)); +extern void endusershell(void) __attribute__((__nothrow__, __leaf__)); +extern void setusershell(void) __attribute__((__nothrow__, __leaf__)); + +extern int daemon(int __nochdir, int __noclose) + __attribute__((__nothrow__, __leaf__)); + +extern int chroot(const char *__path) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern char *getpass(const char *__prompt) __attribute__((__nonnull__(1))); + +extern int fsync(int __fd); +extern long int gethostid(void); + +extern void sync(void) __attribute__((__nothrow__, __leaf__)); + +extern int getpagesize(void) __attribute__((__nothrow__, __leaf__)) + __attribute__((__const__)); + +extern int getdtablesize(void) __attribute__((__nothrow__, __leaf__)); +extern int truncate(const char *__file, __off_t __length) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); +extern int ftruncate(int __fd, __off_t __length) + __attribute__((__nothrow__, __leaf__)); +extern int brk(void *__addr) __attribute__((__nothrow__, __leaf__)); + +extern void *sbrk(intptr_t __delta) __attribute__((__nothrow__, __leaf__)); +extern long int syscall(long int __sysno, ...) + __attribute__((__nothrow__, __leaf__)); +extern int lockf(int __fd, int __cmd, __off_t __len); +extern int fdatasync(int __fildes); + +typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +typedef void (*free_func)(voidpf opaque, voidpf address); + +struct internal_state; + +typedef struct z_stream_s { + Bytef *next_in; + uInt avail_in; + uLong total_in; + + Bytef *next_out; + uInt avail_out; + uLong total_out; + + char *msg; + struct internal_state *state; + + alloc_func zalloc; + free_func zfree; + voidpf opaque; + + int data_type; + uLong adler; + uLong reserved; +} z_stream; + +typedef z_stream *z_streamp; +extern const char *zlibVersion(void); +extern int deflate(z_streamp strm, int flush); +extern int deflateEnd(z_streamp strm); +extern int inflate(z_streamp strm, int flush); +extern int inflateEnd(z_streamp strm); +extern int deflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength); +extern int deflateCopy(z_streamp dest, z_streamp source); +extern int deflateReset(z_streamp strm); +extern int deflateParams(z_streamp strm, int level, int strategy); +extern int inflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength); +extern int inflateSync(z_streamp strm); +extern int inflateReset(z_streamp strm); +extern int compress(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen); +extern int compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level); +extern int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen); +typedef voidp gzFile; + +extern gzFile gzopen(const char *path, const char *mode); +extern gzFile gzdopen(int fd, const char *mode); +extern int gzsetparams(gzFile file, int level, int strategy); + +extern int gzread(gzFile file, voidp buf, unsigned len); + +extern int gzwrite(gzFile file, const voidp buf, unsigned len); + +extern int gzprintf(gzFile file, const char *format, ...); + +extern int gzputs(gzFile file, const char *s); + +extern char *gzgets(gzFile file, char *buf, int len); +extern int gzputc(gzFile file, int c); + +extern int gzgetc(gzFile file); + +extern int gzflush(gzFile file, int flush); +extern off_t gzseek(gzFile file, off_t offset, int whence); +extern int gzrewind(gzFile file); + +extern off_t gztell(gzFile file); +extern int gzeof(gzFile file); + +extern int gzclose(gzFile file); + +extern const char *gzerror(gzFile file, int *errnum); +extern uLong adler32(uLong adler, const Bytef *buf, uInt len); +extern uLong crc32(uLong crc, const Bytef *buf, uInt len); +extern int deflateInit_(z_streamp strm, int level, const char *version, + int stream_size); +extern int inflateInit_(z_streamp strm, const char *version, int stream_size); +extern int deflateInit2_(z_streamp strm, int level, int method, int windowBits, + int memLevel, int strategy, const char *version, + int stream_size); +extern int inflateInit2_(z_streamp strm, int windowBits, const char *version, + int stream_size); +extern const char *zError(int err); +extern int inflateSyncPoint(z_streamp z); +extern const uLongf *get_crc_table(void); + +typedef long int ptrdiff_t; +typedef int wchar_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; + +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 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))); + +typedef 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]; +} *__locale_t; + +typedef __locale_t locale_t; + +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 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 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 int strerror_r(int __errnum, char *__buf, + size_t __buflen) __asm__("" + "__xpg_strerror_r") + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))); +extern char *strerror_l(int __errnum, __locale_t __l) + __attribute__((__nothrow__, __leaf__)); + +extern void __bzero(void *__s, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))); + +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 int bcmp(const void *__s1, const void *__s2, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) + __attribute__((__nonnull__(1, 2))); +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 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 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 void *__rawmemchr(const void *__s, int __c); +extern __inline + __attribute__((__gnu_inline__)) size_t __strcspn_c1(const char *__s, + int __reject); +extern __inline + __attribute__((__gnu_inline__)) size_t __strcspn_c1(const char *__s, + int __reject) { + size_t __result = 0; + while (__s[__result] != '\0' && __s[__result] != __reject) + ++__result; + return __result; +} + +extern __inline + __attribute__((__gnu_inline__)) size_t __strcspn_c2(const char *__s, + int __reject1, + int __reject2); +extern __inline + __attribute__((__gnu_inline__)) size_t __strcspn_c2(const char *__s, + int __reject1, + int __reject2) { + size_t __result = 0; + while (__s[__result] != '\0' && __s[__result] != __reject1 && + __s[__result] != __reject2) + ++__result; + return __result; +} + +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3( + const char *__s, int __reject1, int __reject2, int __reject3); +extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3( + const char *__s, int __reject1, int __reject2, int __reject3) { + size_t __result = 0; + while (__s[__result] != '\0' && __s[__result] != __reject1 && + __s[__result] != __reject2 && __s[__result] != __reject3) + ++__result; + return __result; +} +extern __inline + __attribute__((__gnu_inline__)) size_t __strspn_c1(const char *__s, + int __accept); +extern __inline + __attribute__((__gnu_inline__)) size_t __strspn_c1(const char *__s, + int __accept) { + size_t __result = 0; + + while (__s[__result] == __accept) + ++__result; + return __result; +} + +extern __inline + __attribute__((__gnu_inline__)) size_t __strspn_c2(const char *__s, + int __accept1, + int __accept2); +extern __inline + __attribute__((__gnu_inline__)) size_t __strspn_c2(const char *__s, + int __accept1, + int __accept2) { + size_t __result = 0; + + while (__s[__result] == __accept1 || __s[__result] == __accept2) + ++__result; + return __result; +} + +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3( + const char *__s, int __accept1, int __accept2, int __accept3); +extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3( + const char *__s, int __accept1, int __accept2, int __accept3) { + size_t __result = 0; + + while (__s[__result] == __accept1 || __s[__result] == __accept2 || + __s[__result] == __accept3) + ++__result; + return __result; +} +extern __inline + __attribute__((__gnu_inline__)) char *__strpbrk_c2(const char *__s, + int __accept1, + int __accept2); +extern __inline + __attribute__((__gnu_inline__)) char *__strpbrk_c2(const char *__s, + int __accept1, + int __accept2) { + + while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) + ++__s; + return *__s == '\0' ? ((void *)0) : (char *)(size_t)__s; +} + +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3( + const char *__s, int __accept1, int __accept2, int __accept3); +extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3( + const char *__s, int __accept1, int __accept2, int __accept3) { + + while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 && + *__s != __accept3) + ++__s; + return *__s == '\0' ? ((void *)0) : (char *)(size_t)__s; +} +extern __inline + __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, + char **__nextp); +extern __inline + __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, + char **__nextp) { + char *__result; + if (__s == ((void *)0)) + __s = *__nextp; + while (*__s == __sep) + ++__s; + __result = ((void *)0); + if (*__s != '\0') { + __result = __s++; + while (*__s != '\0') + if (*__s++ == __sep) { + __s[-1] = '\0'; + break; + } + } + *__nextp = __s; + return __result; +} +extern char *__strsep_g(char **__stringp, const char *__delim); +extern __inline + __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, + char __reject); +extern __inline + __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, + char __reject) { + char *__retval = *__s; + if (__retval != ((void *)0) && + (*__s = (__extension__( + __builtin_constant_p(__reject) && !__builtin_constant_p(__retval) && + (__reject) == '\0' + ? (char *)__rawmemchr(__retval, __reject) + : __builtin_strchr(__retval, __reject)))) != ((void *)0)) + *(*__s)++ = '\0'; + return __retval; +} + +extern __inline + __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, + char __reject1, + char __reject2); +extern __inline + __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, + char __reject1, + char __reject2) { + char *__retval = *__s; + if (__retval != ((void *)0)) { + char *__cp = __retval; + while (1) { + if (*__cp == '\0') { + __cp = ((void *)0); + break; + } + if (*__cp == __reject1 || *__cp == __reject2) { + *__cp++ = '\0'; + break; + } + ++__cp; + } + *__s = __cp; + } + return __retval; +} + +extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c( + char **__s, char __reject1, char __reject2, char __reject3); +extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c( + char **__s, char __reject1, char __reject2, char __reject3) { + char *__retval = *__s; + if (__retval != ((void *)0)) { + char *__cp = __retval; + while (1) { + if (*__cp == '\0') { + __cp = ((void *)0); + break; + } + if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3) { + *__cp++ = '\0'; + break; + } + ++__cp; + } + *__s = __cp; + } + return __retval; +} + +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 char *__strdup(const char *__string) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); +extern char *__strndup(const char *__string, size_t __n) + __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)); + +union wait { + int w_status; + struct { + + unsigned int __w_termsig : 7; + unsigned int __w_coredump : 1; + unsigned int __w_retcode : 8; + unsigned int : 16; + + } __wait_terminated; + struct { + + unsigned int __w_stopval : 8; + unsigned int __w_stopsig : 8; + unsigned int : 16; + + } __wait_stopped; +}; +typedef union { + union wait *__uptr; + int *__iptr; +} __WAIT_STATUS __attribute__((__transparent_union__)); + +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 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 __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 *realloc(void *__ptr, size_t __size) + __attribute__((__nothrow__, __leaf__)) + __attribute__((__warn_unused_result__)); + +extern void free(void *__ptr) __attribute__((__nothrow__, __leaf__)); + +extern void cfree(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 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 mkstemps(char *__template, int __suffixlen) + __attribute__((__nonnull__(1))); +extern char *mkdtemp(char *__template) __attribute__((__nothrow__, __leaf__)) + __attribute__((__nonnull__(1))); + +extern int system(const char *__command); + +extern char *realpath(const char *__restrict __name, + char *__restrict __resolved) + __attribute__((__nothrow__, __leaf__)); + +typedef int (*__compar_fn_t)(const void *, const 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 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 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 int *__errno_location(void) __attribute__((__nothrow__, __leaf__)) + __attribute__((__const__)); + +typedef unsigned char uch; +typedef uch uchf; +typedef unsigned short ush; +typedef ush ushf; +typedef unsigned long ulg; + +extern const char *z_errmsg[10]; +typedef uLong (*check_func)(uLong check, const Bytef *buf, uInt len); +voidpf zcalloc(voidpf opaque, unsigned items, unsigned size); +void zcfree(voidpf opaque, voidpf ptr); + +struct internal_state { + int dummy; +}; +static int gz_magic[2] = { 0x1f, 0x8b }; +typedef struct gz_stream { + z_stream stream; + int z_err; + int z_eof; + FILE *file; + Byte *inbuf; + Byte *outbuf; + uLong crc; + char *msg; + char *path; + int transparent; + char mode; + long startpos; +} gz_stream; + +static gzFile gz_open(const char *path, const char *mode, int fd); +static int do_flush(gzFile file, int flush); +static int get_byte(gz_stream *s); +static void check_header(gz_stream *s); +static int destroy(gz_stream *s); +static void putLong(FILE *file, uLong x); +static uLong getLong(gz_stream *s); +static gzFile gz_open(path, mode, fd) const char *path; +const char *mode; +int fd; +{ + int err; + int level = (-1); + int strategy = 0; + char *p = (char *)mode; + gz_stream *s; + char fmode[80]; + char *m = fmode; + + if (!path || !mode) + return 0; + + s = (gz_stream *)malloc(sizeof(gz_stream)); + if (!s) + return 0; + + s->stream.zalloc = (alloc_func)0; + s->stream.zfree = (free_func)0; + s->stream.opaque = (voidpf)0; + s->stream.next_in = s->inbuf = 0; + s->stream.next_out = s->outbuf = 0; + s->stream.avail_in = s->stream.avail_out = 0; + s->file = ((void *)0); + s->z_err = 0; + s->z_eof = 0; + s->crc = crc32(0L, 0, 0); + s->msg = ((void *)0); + s->transparent = 0; + + s->path = (char *)malloc(strlen(path) + 1); + if (s->path == ((void *)0)) { + return destroy(s), (gzFile)0; + } + strcpy(s->path, path); + + s->mode = '\0'; + do { + if (*p == 'r') + s->mode = 'r'; + if (*p == 'w' || *p == 'a') + s->mode = 'w'; + if (*p >= '0' && *p <= '9') { + level = *p - '0'; + } else if (*p == 'f') { + strategy = 1; + } else if (*p == 'h') { + strategy = 2; + } else { + *m++ = *p; + } + } while (*p++ && m != fmode + sizeof(fmode)); + if (s->mode == '\0') + return destroy(s), (gzFile)0; + + if (s->mode == 'w') { + + err = deflateInit2_((&(s->stream)), (level), (8), (-15), (8), (strategy), + "1.1.3", sizeof(z_stream)); + + s->stream.next_out = s->outbuf = (Byte *)malloc(16384); + + if (err != 0 || s->outbuf == 0) { + return destroy(s), (gzFile)0; + } + } else { + s->stream.next_in = s->inbuf = (Byte *)malloc(16384); + + err = inflateInit2_((&(s->stream)), (-15), "1.1.3", sizeof(z_stream)); + + if (err != 0 || s->inbuf == 0) { + return destroy(s), (gzFile)0; + } + } + s->stream.avail_out = 16384; + + (*__errno_location()) = 0; + s->file = fd < 0 ? fopen((path), (fmode)) : (FILE *)fdopen(fd, fmode); + + if (s->file == ((void *)0)) { + return destroy(s), (gzFile)0; + } + if (s->mode == 'w') { + + fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1], 8, 0, 0, + 0, 0, 0, 0, 0x03); + s->startpos = 10L; + + } else { + check_header(s); + s->startpos = (ftell(s->file) - s->stream.avail_in); + } + + return (gzFile)s; +} + +gzFile gzopen(path, mode) const char *path; +const char *mode; +{ return gz_open(path, mode, -1); } + +gzFile gzdopen(fd, mode) int fd; +const char *mode; +{ + char name[20]; + + if (fd < 0) + return (gzFile)0; + sprintf(name, "", fd); + + return gz_open(name, mode, fd); +} + +int gzsetparams(file, level, strategy) gzFile file; +int level; +int strategy; +{ + gz_stream *s = (gz_stream *)file; + + if (s == ((void *)0) || s->mode != 'w') + return (-2); + + if (s->stream.avail_out == 0) { + + s->stream.next_out = s->outbuf; + if (fwrite(s->outbuf, 1, 16384, s->file) != 16384) { + s->z_err = (-1); + } + s->stream.avail_out = 16384; + } + + return deflateParams(&(s->stream), level, strategy); +} + +static int get_byte(s) gz_stream *s; +{ + if (s->z_eof) + return (-1); + if (s->stream.avail_in == 0) { + + (*__errno_location()) = 0; + s->stream.avail_in = fread(s->inbuf, 1, 16384, s->file); + if (s->stream.avail_in == 0) { + s->z_eof = 1; + if (ferror(s->file)) + s->z_err = (-1); + return (-1); + } + s->stream.next_in = s->inbuf; + } + s->stream.avail_in--; + return *(s->stream.next_in)++; +} + +static int destroy(s) gz_stream *s; +{ + int err = 0; + + if (!s) + return (-2); + + { + if (s->msg) + free(s->msg); + }; + + if (s->stream.state != ((void *)0)) { + if (s->mode == 'w') { + + err = deflateEnd(&(s->stream)); + + } else if (s->mode == 'r') { + err = inflateEnd(&(s->stream)); + } + } + if (s->file != ((void *)0) && fclose(s->file)) { + + if ((*__errno_location()) != 29) + + err = (-1); + } + if (s->z_err < 0) + err = s->z_err; + + { + if (s->inbuf) + free(s->inbuf); + }; + { + if (s->outbuf) + free(s->outbuf); + }; + { + if (s->path) + free(s->path); + }; + { + if (s) + free(s); + }; + return err; +} + +int gzread(file, buf, len) gzFile file; +voidp buf; +unsigned len; +{ + gz_stream *s = (gz_stream *)file; + Bytef *start = (Bytef *)buf; + Byte *next_out; + + if (s == ((void *)0) || s->mode != 'r') + return (-2); + + if (s->z_err == (-3) || s->z_err == (-1)) + return -1; + if (s->z_err == 1) + return 0; + + next_out = (Byte *)buf; + s->stream.next_out = (Bytef *)buf; + s->stream.avail_out = len; + + while (s->stream.avail_out != 0) { + + if (s->transparent) { + + uInt n = s->stream.avail_in; + if (n > s->stream.avail_out) + n = s->stream.avail_out; + if (n > 0) { + memcpy(s->stream.next_out, s->stream.next_in, n); + next_out += n; + s->stream.next_out = next_out; + s->stream.next_in += n; + s->stream.avail_out -= n; + s->stream.avail_in -= n; + } + if (s->stream.avail_out > 0) { + s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out, s->file); + } + len -= s->stream.avail_out; + s->stream.total_in += (uLong)len; + s->stream.total_out += (uLong)len; + if (len == 0) + s->z_eof = 1; + return (int)len; + } + if (s->stream.avail_in == 0 && !s->z_eof) { + + (*__errno_location()) = 0; + s->stream.avail_in = fread(s->inbuf, 1, 16384, s->file); + if (s->stream.avail_in == 0) { + s->z_eof = 1; + if (ferror(s->file)) { + s->z_err = (-1); + break; + } + } + s->stream.next_in = s->inbuf; + } + s->z_err = inflate(&(s->stream), 0); + + if (s->z_err == 1) { + + s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); + start = s->stream.next_out; + + if (getLong(s) != s->crc) { + s->z_err = (-3); + } else { + (void)getLong(s); + + if (s->z_err == 0) { + uLong total_in = s->stream.total_in; + uLong total_out = s->stream.total_out; + + inflateReset(&(s->stream)); + s->stream.total_in = total_in; + s->stream.total_out = total_out; + s->crc = crc32(0L, 0, 0); + } + } + } + if (s->z_err != 0 || s->z_eof) + break; + } + s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); + + return (int)(len - s->stream.avail_out); +} + +int gzgetc(file) gzFile file; +{ + unsigned char c; + + return gzread(file, &c, 1) == 1 ? c : -1; +} -- 1.8.5.3