From 560e6fc1a4af072262a903a1b2db05125c3bbc76 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Wed, 31 Jul 2019 11:16:48 -0400 Subject: [PATCH 049/124] FIXME: more WIP on gzio-3.c --- gcc/testsuite/gcc.dg/analyzer/gzio-3.c | 2495 +------------------------------ gcc/testsuite/gcc.dg/analyzer/gzio-3a.c | 27 + 2 files changed, 38 insertions(+), 2484 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/analyzer/gzio-3a.c diff --git a/gcc/testsuite/gcc.dg/analyzer/gzio-3.c b/gcc/testsuite/gcc.dg/analyzer/gzio-3.c index 33a016d..0a11f65 100644 --- a/gcc/testsuite/gcc.dg/analyzer/gzio-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/gzio-3.c @@ -1,2504 +1,31 @@ -/* { 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 unsigned char Byte; +typedef unsigned int uInt; +typedef unsigned long uLong; 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; +void test_1_callee(gz_stream *s, Byte *buf) { + Byte *next_out = buf; + uInt n = s->stream.avail_in; + if (n > 0) { + next_out += n; } - s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); - - return (int)(len - s->stream.avail_out); + s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out, s->file); } -int gzgetc(file) gzFile file; -{ +void test_1_caller(gz_stream *s) { unsigned char c; - - return gzread(file, &c, 1) == 1 ? c : -1; + test_1_callee(s, &c); } diff --git a/gcc/testsuite/gcc.dg/analyzer/gzio-3a.c b/gcc/testsuite/gcc.dg/analyzer/gzio-3a.c new file mode 100644 index 0000000..15ed010 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/gzio-3a.c @@ -0,0 +1,27 @@ +typedef long unsigned int size_t; +typedef struct _IO_FILE FILE; +extern size_t fread(void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __stream); +typedef unsigned char Byte; +typedef unsigned int uInt; +typedef unsigned long uLong; + +typedef struct gz_stream { + FILE *file; + uInt avail_in; + uInt avail_out; +} gz_stream; + +void test_1_callee(gz_stream *s, Byte *buf) { + Byte *next_out = buf; + uInt n = s->avail_in; + if (n > 0) { + next_out += n; + } + s->avail_out -= fread(next_out, 1, s->avail_out, s->file); +} + +void test_1_caller(gz_stream *s) { + unsigned char c; + test_1_callee(s, &c); +} -- 1.8.5.3