X-Git-Url: https://git.wh0rd.org/?p=ICEs.git;a=blobdiff_plain;f=529496%2Fipaddress.i;fp=529496%2Fipaddress.i;h=af271e169f1bc975412764bd2efd43ecd4f784af;hp=0000000000000000000000000000000000000000;hb=bd3239d2bbe0de3a200b266503e3330b1e391489;hpb=dbff64cb4b7530861c2309c794efdd4e0cf47a23 diff --git a/529496/ipaddress.i b/529496/ipaddress.i new file mode 100644 index 0000000..af271e1 --- /dev/null +++ b/529496/ipaddress.i @@ -0,0 +1,13959 @@ +# 1 "networking/libiproute/ipaddress.c" +# 1 "" +# 1 "" +# 1 "/usr/include/stdc-predef.h" 1 3 4 +# 1 "" 2 +# 1 "./include/autoconf.h" 1 +# 1 "" 2 +# 1 "networking/libiproute/ipaddress.c" +# 11 "networking/libiproute/ipaddress.c" +# 1 "/usr/include/fnmatch.h" 1 3 4 +# 56 "/usr/include/fnmatch.h" 3 4 +extern int fnmatch (const char *__pattern, const char *__name, int __flags); +# 12 "networking/libiproute/ipaddress.c" 2 +# 1 "/usr/include/net/if.h" 1 3 4 +# 22 "/usr/include/net/if.h" 3 4 +# 1 "/usr/include/features.h" 1 3 4 +# 379 "/usr/include/features.h" 3 4 +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 385 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 386 "/usr/include/sys/cdefs.h" 2 3 4 +# 380 "/usr/include/features.h" 2 3 4 +# 403 "/usr/include/features.h" 3 4 +# 1 "/usr/include/gnu/stubs.h" 1 3 4 +# 10 "/usr/include/gnu/stubs.h" 3 4 +# 1 "/usr/include/gnu/stubs-hard.h" 1 3 4 +# 11 "/usr/include/gnu/stubs.h" 2 3 4 +# 404 "/usr/include/features.h" 2 3 4 +# 23 "/usr/include/net/if.h" 2 3 4 + + +# 1 "/usr/include/sys/types.h" 1 3 4 +# 27 "/usr/include/sys/types.h" 3 4 + + +# 1 "/usr/include/bits/types.h" 1 3 4 +# 27 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/bits/types.h" 2 3 4 + + +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; + + + + +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; + + + + + + + +__extension__ typedef long long int __quad_t; +__extension__ typedef unsigned long long int __u_quad_t; +# 121 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/typesizes.h" 1 3 4 +# 122 "/usr/include/bits/types.h" 2 3 4 + + +__extension__ typedef __u_quad_t __dev_t; +__extension__ typedef unsigned int __uid_t; +__extension__ typedef unsigned int __gid_t; +__extension__ typedef unsigned long int __ino_t; +__extension__ typedef __u_quad_t __ino64_t; +__extension__ typedef unsigned int __mode_t; +__extension__ typedef unsigned int __nlink_t; +__extension__ typedef long int __off_t; +__extension__ typedef __quad_t __off64_t; +__extension__ typedef int __pid_t; +__extension__ typedef struct { int __val[2]; } __fsid_t; +__extension__ typedef long int __clock_t; +__extension__ typedef unsigned long int __rlim_t; +__extension__ typedef __u_quad_t __rlim64_t; +__extension__ typedef unsigned int __id_t; +__extension__ typedef long int __time_t; +__extension__ typedef unsigned int __useconds_t; +__extension__ typedef long int __suseconds_t; + +__extension__ typedef int __daddr_t; +__extension__ typedef int __key_t; + + +__extension__ typedef int __clockid_t; + + +__extension__ typedef void * __timer_t; + + +__extension__ typedef long int __blksize_t; + + + + +__extension__ typedef long int __blkcnt_t; +__extension__ typedef __quad_t __blkcnt64_t; + + +__extension__ typedef unsigned long int __fsblkcnt_t; +__extension__ typedef __u_quad_t __fsblkcnt64_t; + + +__extension__ typedef unsigned long int __fsfilcnt_t; +__extension__ typedef __u_quad_t __fsfilcnt64_t; + + +__extension__ typedef int __fsword_t; + +__extension__ typedef int __ssize_t; + + +__extension__ typedef long int __syscall_slong_t; + +__extension__ typedef unsigned long int __syscall_ulong_t; + + + +typedef __off64_t __loff_t; +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + + +__extension__ typedef int __intptr_t; + + +__extension__ typedef unsigned int __socklen_t; +# 30 "/usr/include/sys/types.h" 2 3 4 + + + +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 __ino64_t ino_t; + + + + +typedef __ino64_t ino64_t; + + + + +typedef __dev_t dev_t; + + + + +typedef __gid_t gid_t; + + + + +typedef __mode_t mode_t; + + + + +typedef __nlink_t nlink_t; + + + + +typedef __uid_t uid_t; + + + + + + + +typedef __off64_t off_t; + + + + +typedef __off64_t off64_t; + + + + +typedef __pid_t pid_t; + + + + + +typedef __id_t id_t; + + + + +typedef __ssize_t ssize_t; + + + + + +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + + + + + +typedef __key_t key_t; +# 132 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 57 "/usr/include/time.h" 3 4 + + +typedef __clock_t clock_t; + + + +# 73 "/usr/include/time.h" 3 4 + + +typedef __time_t time_t; + + + +# 91 "/usr/include/time.h" 3 4 +typedef __clockid_t clockid_t; +# 103 "/usr/include/time.h" 3 4 +typedef __timer_t timer_t; +# 133 "/usr/include/sys/types.h" 2 3 4 + + + +typedef __useconds_t useconds_t; + + + +typedef __suseconds_t suseconds_t; + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 212 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 3 4 +typedef unsigned int size_t; +# 147 "/usr/include/sys/types.h" 2 3 4 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; +# 194 "/usr/include/sys/types.h" 3 4 +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__))); +# 216 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/endian.h" 1 3 4 +# 36 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/endian.h" 1 3 4 +# 37 "/usr/include/endian.h" 2 3 4 +# 60 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/byteswap.h" 1 3 4 +# 34 "/usr/include/bits/byteswap.h" 3 4 +# 1 "/usr/include/bits/byteswap-16.h" 1 3 4 +# 35 "/usr/include/bits/byteswap.h" 2 3 4 +# 43 "/usr/include/bits/byteswap.h" 3 4 +static __inline unsigned int +__bswap_32 (unsigned int __bsx) +{ + return __builtin_bswap32 (__bsx); +} +# 74 "/usr/include/bits/byteswap.h" 3 4 +static __inline __uint64_t +__bswap_64 (__uint64_t __bsx) +{ + return __builtin_bswap64 (__bsx); +} +# 61 "/usr/include/endian.h" 2 3 4 +# 217 "/usr/include/sys/types.h" 2 3 4 + + +# 1 "/usr/include/sys/select.h" 1 3 4 +# 30 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/select.h" 1 3 4 +# 31 "/usr/include/sys/select.h" 2 3 4 + + +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 22 "/usr/include/bits/sigset.h" 3 4 +typedef int __sig_atomic_t; + + + + +typedef struct + { + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; + } __sigset_t; +# 34 "/usr/include/sys/select.h" 2 3 4 + + + +typedef __sigset_t sigset_t; + + + + + +# 1 "/usr/include/time.h" 1 3 4 +# 120 "/usr/include/time.h" 3 4 +struct timespec + { + __time_t tv_sec; + __syscall_slong_t tv_nsec; + }; +# 44 "/usr/include/sys/select.h" 2 3 4 + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 30 "/usr/include/bits/time.h" 3 4 +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +# 46 "/usr/include/sys/select.h" 2 3 4 +# 54 "/usr/include/sys/select.h" 3 4 +typedef long int __fd_mask; +# 64 "/usr/include/sys/select.h" 3 4 +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; + + + + + + } fd_set; + + + + + + +typedef __fd_mask fd_mask; +# 96 "/usr/include/sys/select.h" 3 4 + +# 106 "/usr/include/sys/select.h" 3 4 +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 118 "/usr/include/sys/select.h" 3 4 +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); + + + + + +# 1 "/usr/include/bits/select2.h" 1 3 4 +# 24 "/usr/include/bits/select2.h" 3 4 +extern long int __fdelt_chk (long int __d); +extern long int __fdelt_warn (long int __d) + __attribute__((__warning__ ("bit outside of fd_set selected"))); +# 129 "/usr/include/sys/select.h" 2 3 4 + + + +# 220 "/usr/include/sys/types.h" 2 3 4 + + +# 1 "/usr/include/sys/sysmacros.h" 1 3 4 +# 24 "/usr/include/sys/sysmacros.h" 3 4 + + +__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)); +} + + +# 223 "/usr/include/sys/types.h" 2 3 4 + + + + + +typedef __blksize_t blksize_t; +# 248 "/usr/include/sys/types.h" 3 4 +typedef __blkcnt64_t blkcnt_t; + + + +typedef __fsblkcnt64_t fsblkcnt_t; + + + +typedef __fsfilcnt64_t fsfilcnt_t; + + + + + +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + + + + + +# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 +# 37 "/usr/include/bits/pthreadtypes.h" 3 4 +typedef unsigned long int pthread_t; + + +union pthread_attr_t +{ + char __size[36]; + long int __align; +}; + +typedef union pthread_attr_t pthread_attr_t; + + + + +typedef struct __pthread_internal_slist +{ + struct __pthread_internal_slist *__next; +} __pthread_slist_t; + + + + +typedef union +{ + struct __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; + + + int __kind; + unsigned int __nusers; + __extension__ union + { + int __spins; + __pthread_slist_t __list; + }; + } __data; + char __size[24]; + long int __align; +} pthread_mutex_t; + +typedef union +{ + char __size[4]; + long 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]; + long 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; +# 144 "/usr/include/bits/pthreadtypes.h" 3 4 + unsigned char __flags; + unsigned char __shared; + unsigned char __pad1; + unsigned char __pad2; + + int __writer; + } __data; + char __size[32]; + 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[20]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 271 "/usr/include/sys/types.h" 2 3 4 + + + +# 26 "/usr/include/net/if.h" 2 3 4 +# 1 "/usr/include/sys/socket.h" 1 3 4 +# 24 "/usr/include/sys/socket.h" 3 4 + + +# 1 "/usr/include/sys/uio.h" 1 3 4 +# 25 "/usr/include/sys/uio.h" 3 4 + + + +# 1 "/usr/include/bits/uio.h" 1 3 4 +# 43 "/usr/include/bits/uio.h" 3 4 +struct iovec + { + void *iov_base; + size_t iov_len; + }; +# 56 "/usr/include/bits/uio.h" 3 4 + + + +extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, + unsigned long int __liovcnt, + const struct iovec *__rvec, + unsigned long int __riovcnt, + unsigned long int __flags) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, + unsigned long int __liovcnt, + const struct iovec *__rvec, + unsigned long int __riovcnt, + unsigned long int __flags) + __attribute__ ((__nothrow__ , __leaf__)); + + +# 29 "/usr/include/sys/uio.h" 2 3 4 +# 39 "/usr/include/sys/uio.h" 3 4 +extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count) + __attribute__ ((__warn_unused_result__)); +# 50 "/usr/include/sys/uio.h" 3 4 +extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count) + __attribute__ ((__warn_unused_result__)); +# 81 "/usr/include/sys/uio.h" 3 4 +extern ssize_t preadv (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "preadv64") + + __attribute__ ((__warn_unused_result__)); +extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "pwritev64") + + __attribute__ ((__warn_unused_result__)); +# 103 "/usr/include/sys/uio.h" 3 4 +extern ssize_t preadv64 (int __fd, const struct iovec *__iovec, int __count, + __off64_t __offset) __attribute__ ((__warn_unused_result__)); +# 115 "/usr/include/sys/uio.h" 3 4 +extern ssize_t pwritev64 (int __fd, const struct iovec *__iovec, int __count, + __off64_t __offset) __attribute__ ((__warn_unused_result__)); + + + + +# 27 "/usr/include/sys/socket.h" 2 3 4 + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 29 "/usr/include/sys/socket.h" 2 3 4 + + +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 32 "/usr/include/sys/socket.h" 2 3 4 + + + + + + +# 1 "/usr/include/bits/socket.h" 1 3 4 +# 27 "/usr/include/bits/socket.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 28 "/usr/include/bits/socket.h" 2 3 4 + + + + + +typedef __socklen_t socklen_t; + + + + +# 1 "/usr/include/bits/socket_type.h" 1 3 4 +# 24 "/usr/include/bits/socket_type.h" 3 4 +enum __socket_type +{ + SOCK_STREAM = 1, + + + SOCK_DGRAM = 2, + + + SOCK_RAW = 3, + + SOCK_RDM = 4, + + SOCK_SEQPACKET = 5, + + + SOCK_DCCP = 6, + + SOCK_PACKET = 10, + + + + + + + + SOCK_CLOEXEC = 02000000, + + + SOCK_NONBLOCK = 00004000 + + +}; +# 39 "/usr/include/bits/socket.h" 2 3 4 +# 146 "/usr/include/bits/socket.h" 3 4 +# 1 "/usr/include/bits/sockaddr.h" 1 3 4 +# 28 "/usr/include/bits/sockaddr.h" 3 4 +typedef unsigned short int sa_family_t; +# 147 "/usr/include/bits/socket.h" 2 3 4 + + +struct sockaddr + { + sa_family_t sa_family; + char sa_data[14]; + }; +# 162 "/usr/include/bits/socket.h" 3 4 +struct sockaddr_storage + { + sa_family_t ss_family; + unsigned long int __ss_align; + char __ss_padding[(128 - (2 * sizeof (unsigned long int)))]; + }; + + + +enum + { + MSG_OOB = 0x01, + + MSG_PEEK = 0x02, + + MSG_DONTROUTE = 0x04, + + + + MSG_TRYHARD = MSG_DONTROUTE, + + + MSG_CTRUNC = 0x08, + + MSG_PROXY = 0x10, + + MSG_TRUNC = 0x20, + + MSG_DONTWAIT = 0x40, + + MSG_EOR = 0x80, + + MSG_WAITALL = 0x100, + + MSG_FIN = 0x200, + + MSG_SYN = 0x400, + + MSG_CONFIRM = 0x800, + + MSG_RST = 0x1000, + + MSG_ERRQUEUE = 0x2000, + + MSG_NOSIGNAL = 0x4000, + + MSG_MORE = 0x8000, + + MSG_WAITFORONE = 0x10000, + + MSG_FASTOPEN = 0x20000000, + + + MSG_CMSG_CLOEXEC = 0x40000000 + + + + }; + + + + +struct msghdr + { + void *msg_name; + socklen_t msg_namelen; + + struct iovec *msg_iov; + size_t msg_iovlen; + + void *msg_control; + size_t msg_controllen; + + + + + int msg_flags; + }; + + +struct cmsghdr + { + size_t cmsg_len; + + + + + int cmsg_level; + int cmsg_type; + + __extension__ unsigned char __cmsg_data []; + + }; +# 272 "/usr/include/bits/socket.h" 3 4 +extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, + struct cmsghdr *__cmsg) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern __inline __attribute__ ((__gnu_inline__)) struct cmsghdr * +__attribute__ ((__nothrow__ , __leaf__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) +{ + if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) + + return (struct cmsghdr *) 0; + + __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg + + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))); + if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control + + __mhdr->msg_controllen) + || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) + > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) + + return (struct cmsghdr *) 0; + return __cmsg; +} + + + + +enum + { + SCM_RIGHTS = 0x01 + + + , SCM_CREDENTIALS = 0x02 + + + }; + + + +struct ucred +{ + pid_t pid; + uid_t uid; + gid_t gid; +}; +# 345 "/usr/include/bits/socket.h" 3 4 +# 1 "/usr/include/asm/socket.h" 1 3 4 +# 1 "/usr/include/asm-generic/socket.h" 1 3 4 + + + +# 1 "/usr/include/asm/sockios.h" 1 3 4 +# 1 "/usr/include/asm-generic/sockios.h" 1 3 4 +# 1 "/usr/include/asm/sockios.h" 2 3 4 +# 5 "/usr/include/asm-generic/socket.h" 2 3 4 +# 1 "/usr/include/asm/socket.h" 2 3 4 +# 346 "/usr/include/bits/socket.h" 2 3 4 +# 379 "/usr/include/bits/socket.h" 3 4 +struct linger + { + int l_onoff; + int l_linger; + }; +# 39 "/usr/include/sys/socket.h" 2 3 4 + + + + +struct osockaddr + { + unsigned short int sa_family; + unsigned char sa_data[14]; + }; + + + + +enum +{ + SHUT_RD = 0, + + SHUT_WR, + + SHUT_RDWR + +}; +# 90 "/usr/include/sys/socket.h" 3 4 +typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__; + } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); + + +typedef union { const struct sockaddr *__restrict __sockaddr__; const struct sockaddr_at *__restrict __sockaddr_at__; const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; const struct sockaddr_dl *__restrict __sockaddr_dl__; const struct sockaddr_eon *__restrict __sockaddr_eon__; const struct sockaddr_in *__restrict __sockaddr_in__; const struct sockaddr_in6 *__restrict __sockaddr_in6__; const struct sockaddr_inarp *__restrict __sockaddr_inarp__; const struct sockaddr_ipx *__restrict __sockaddr_ipx__; const struct sockaddr_iso *__restrict __sockaddr_iso__; const struct sockaddr_ns *__restrict __sockaddr_ns__; const struct sockaddr_un *__restrict __sockaddr_un__; const struct sockaddr_x25 *__restrict __sockaddr_x25__; + } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); + + + + + +struct mmsghdr + { + struct msghdr msg_hdr; + unsigned int msg_len; + + }; + + + + + + +extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int socketpair (int __domain, int __type, int __protocol, + int __fds[2]) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern int getsockname (int __fd, __SOCKADDR_ARG __addr, + socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__)); +# 137 "/usr/include/sys/socket.h" 3 4 +extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); + + + +extern int getpeername (int __fd, __SOCKADDR_ARG __addr, + socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags); + + + + + + +extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); + + + + + + +extern ssize_t sendto (int __fd, const void *__buf, size_t __n, + int __flags, __CONST_SOCKADDR_ARG __addr, + socklen_t __addr_len); +# 174 "/usr/include/sys/socket.h" 3 4 +extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, + int __flags, __SOCKADDR_ARG __addr, + socklen_t *__restrict __addr_len); + + + + + + + +extern ssize_t sendmsg (int __fd, const struct msghdr *__message, + int __flags); + + + + + + + +extern int sendmmsg (int __fd, struct mmsghdr *__vmessages, + unsigned int __vlen, int __flags); + + + + + + + +extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); + + + + + + + +extern int recvmmsg (int __fd, struct mmsghdr *__vmessages, + unsigned int __vlen, int __flags, + const struct timespec *__tmo); + + + + + + +extern int getsockopt (int __fd, int __level, int __optname, + void *__restrict __optval, + socklen_t *__restrict __optlen) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int setsockopt (int __fd, int __level, int __optname, + const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int listen (int __fd, int __n) __attribute__ ((__nothrow__ , __leaf__)); +# 243 "/usr/include/sys/socket.h" 3 4 +extern int accept (int __fd, __SOCKADDR_ARG __addr, + socklen_t *__restrict __addr_len); + + + + + + +extern int accept4 (int __fd, __SOCKADDR_ARG __addr, + socklen_t *__restrict __addr_len, int __flags); +# 261 "/usr/include/sys/socket.h" 3 4 +extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int sockatmark (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +# 1 "/usr/include/bits/socket2.h" 1 3 4 +# 23 "/usr/include/bits/socket2.h" 3 4 +extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen, + int __flags); +extern ssize_t __recv_alias (int __fd, void *__buf, size_t __n, int __flags) __asm__ ("" "recv") + ; +extern ssize_t __recv_chk_warn (int __fd, void *__buf, size_t __n, size_t __buflen, int __flags) __asm__ ("" "__recv_chk") + + + __attribute__((__warning__ ("recv called with bigger length than size of destination " "buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) ssize_t +recv (int __fd, void *__buf, size_t __n, int __flags) +{ + if (__builtin_object_size (__buf, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__n)) + return __recv_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags); + + if (__n > __builtin_object_size (__buf, 0)) + return __recv_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags); + } + return __recv_alias (__fd, __buf, __n, __flags); +} + +extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, + size_t __buflen, int __flags, + __SOCKADDR_ARG __addr, + socklen_t *__restrict __addr_len); +extern ssize_t __recvfrom_alias (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "recvfrom") + + + ; +extern ssize_t __recvfrom_chk_warn (int __fd, void *__restrict __buf, size_t __n, size_t __buflen, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "__recvfrom_chk") + + + + + __attribute__((__warning__ ("recvfrom called with bigger length than size of " "destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) ssize_t +recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, + __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) +{ + if (__builtin_object_size (__buf, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__n)) + return __recvfrom_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags, + __addr, __addr_len); + if (__n > __builtin_object_size (__buf, 0)) + return __recvfrom_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags, + __addr, __addr_len); + } + return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); +} +# 281 "/usr/include/sys/socket.h" 2 3 4 + + + +# 27 "/usr/include/net/if.h" 2 3 4 + + + + + + +struct if_nameindex + { + unsigned int if_index; + char *if_name; + }; + + + + +enum + { + IFF_UP = 0x1, + + IFF_BROADCAST = 0x2, + + IFF_DEBUG = 0x4, + + IFF_LOOPBACK = 0x8, + + IFF_POINTOPOINT = 0x10, + + IFF_NOTRAILERS = 0x20, + + IFF_RUNNING = 0x40, + + IFF_NOARP = 0x80, + + IFF_PROMISC = 0x100, + + + + IFF_ALLMULTI = 0x200, + + + IFF_MASTER = 0x400, + + IFF_SLAVE = 0x800, + + + IFF_MULTICAST = 0x1000, + + + IFF_PORTSEL = 0x2000, + + IFF_AUTOMEDIA = 0x4000, + + IFF_DYNAMIC = 0x8000 + + }; + + + + + + +struct ifaddr + { + struct sockaddr ifa_addr; + union + { + struct sockaddr ifu_broadaddr; + struct sockaddr ifu_dstaddr; + } ifa_ifu; + struct iface *ifa_ifp; + struct ifaddr *ifa_next; + }; +# 111 "/usr/include/net/if.h" 3 4 +struct ifmap + { + unsigned long int mem_start; + unsigned long int mem_end; + unsigned short int base_addr; + unsigned char irq; + unsigned char dma; + unsigned char port; + + }; + + + + + +struct ifreq + { + + + union + { + char ifrn_name[16]; + } ifr_ifrn; + + union + { + struct sockaddr ifru_addr; + struct sockaddr ifru_dstaddr; + struct sockaddr ifru_broadaddr; + struct sockaddr ifru_netmask; + struct sockaddr ifru_hwaddr; + short int ifru_flags; + int ifru_ivalue; + int ifru_mtu; + struct ifmap ifru_map; + char ifru_slave[16]; + char ifru_newname[16]; + __caddr_t ifru_data; + } ifr_ifru; + }; +# 176 "/usr/include/net/if.h" 3 4 +struct ifconf + { + int ifc_len; + union + { + __caddr_t ifcu_buf; + struct ifreq *ifcu_req; + } ifc_ifcu; + }; + + + + + + + + +extern unsigned int if_nametoindex (const char *__ifname) __attribute__ ((__nothrow__ , __leaf__)); +extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __attribute__ ((__nothrow__ , __leaf__)); + + +extern struct if_nameindex *if_nameindex (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void if_freenameindex (struct if_nameindex *__ptr) __attribute__ ((__nothrow__ , __leaf__)); + + +# 13 "networking/libiproute/ipaddress.c" 2 +# 1 "/usr/include/net/if_arp.h" 1 3 4 +# 30 "/usr/include/net/if_arp.h" 3 4 + +# 54 "/usr/include/net/if_arp.h" 3 4 +struct arphdr + { + unsigned short int ar_hrd; + unsigned short int ar_pro; + unsigned char ar_hln; + unsigned char ar_pln; + unsigned short int ar_op; +# 69 "/usr/include/net/if_arp.h" 3 4 + }; +# 138 "/usr/include/net/if_arp.h" 3 4 +struct arpreq + { + struct sockaddr arp_pa; + struct sockaddr arp_ha; + int arp_flags; + struct sockaddr arp_netmask; + char arp_dev[16]; + }; + +struct arpreq_old + { + struct sockaddr arp_pa; + struct sockaddr arp_ha; + int arp_flags; + struct sockaddr arp_netmask; + }; +# 171 "/usr/include/net/if_arp.h" 3 4 +struct arpd_request + { + unsigned short int req; + u_int32_t ip; + unsigned long int dev; + unsigned long int stamp; + unsigned long int updated; + unsigned char ha[7]; + }; + + +# 14 "networking/libiproute/ipaddress.c" 2 + +# 1 "networking/libiproute/ip_common.h" 1 + + + + +# 1 "include/libbb.h" 1 +# 13 "include/libbb.h" +# 1 "include/platform.h" 1 +# 138 "include/platform.h" +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 1 3 4 +# 34 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/syslimits.h" 1 3 4 + + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 1 3 4 +# 168 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 3 4 +# 1 "/usr/include/limits.h" 1 3 4 +# 143 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/posix1_lim.h" 1 3 4 +# 160 "/usr/include/bits/posix1_lim.h" 3 4 +# 1 "/usr/include/bits/local_lim.h" 1 3 4 +# 38 "/usr/include/bits/local_lim.h" 3 4 +# 1 "/usr/include/linux/limits.h" 1 3 4 +# 39 "/usr/include/bits/local_lim.h" 2 3 4 +# 161 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 144 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/posix2_lim.h" 1 3 4 +# 148 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/xopen_lim.h" 1 3 4 +# 33 "/usr/include/bits/xopen_lim.h" 3 4 +# 1 "/usr/include/bits/stdio_lim.h" 1 3 4 +# 34 "/usr/include/bits/xopen_lim.h" 2 3 4 +# 152 "/usr/include/limits.h" 2 3 4 +# 169 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 2 3 4 +# 8 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/syslimits.h" 2 3 4 +# 35 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 2 3 4 +# 139 "include/platform.h" 2 +# 149 "include/platform.h" +# 1 "/usr/include/byteswap.h" 1 3 4 +# 24 "/usr/include/byteswap.h" 3 4 +# 1 "/usr/include/bits/byteswap.h" 1 3 4 +# 25 "/usr/include/byteswap.h" 2 3 4 +# 150 "include/platform.h" 2 +# 206 "include/platform.h" +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdint.h" 1 3 4 +# 9 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdint.h" 3 4 +# 1 "/usr/include/stdint.h" 1 3 4 +# 26 "/usr/include/stdint.h" 3 4 +# 1 "/usr/include/bits/wchar.h" 1 3 4 +# 27 "/usr/include/stdint.h" 2 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 28 "/usr/include/stdint.h" 2 3 4 +# 48 "/usr/include/stdint.h" 3 4 +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; + +typedef unsigned int uint32_t; + + + + + +__extension__ +typedef unsigned long long int uint64_t; + + + + + + +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; + + + +__extension__ +typedef long long int int_least64_t; + + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; + + + +__extension__ +typedef unsigned long long int uint_least64_t; + + + + + + +typedef signed char int_fast8_t; + + + + + +typedef int int_fast16_t; +typedef int int_fast32_t; +__extension__ +typedef long long int int_fast64_t; + + + +typedef unsigned char uint_fast8_t; + + + + + +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +__extension__ +typedef unsigned long long int uint_fast64_t; +# 125 "/usr/include/stdint.h" 3 4 +typedef int intptr_t; + + +typedef unsigned int uintptr_t; +# 137 "/usr/include/stdint.h" 3 4 +__extension__ +typedef long long int intmax_t; +__extension__ +typedef unsigned long long int uintmax_t; +# 10 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdint.h" 2 3 4 +# 207 "include/platform.h" 2 +typedef int bb__aliased_int __attribute__((__may_alias__)); +typedef long bb__aliased_long __attribute__((__may_alias__)); +typedef uint16_t bb__aliased_uint16_t __attribute__((__may_alias__)); +typedef uint32_t bb__aliased_uint32_t __attribute__((__may_alias__)); +# 248 "include/platform.h" +typedef int smallint; +typedef unsigned smalluint; +# 258 "include/platform.h" +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdbool.h" 1 3 4 +# 259 "include/platform.h" 2 +# 286 "include/platform.h" +# 1 "/usr/include/unistd.h" 1 3 4 +# 27 "/usr/include/unistd.h" 3 4 + +# 202 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/posix_opt.h" 1 3 4 +# 203 "/usr/include/unistd.h" 2 3 4 + + + +# 1 "/usr/include/bits/environments.h" 1 3 4 +# 22 "/usr/include/bits/environments.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 23 "/usr/include/bits/environments.h" 2 3 4 +# 207 "/usr/include/unistd.h" 2 3 4 +# 226 "/usr/include/unistd.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 227 "/usr/include/unistd.h" 2 3 4 +# 287 "/usr/include/unistd.h" 3 4 +extern int access (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int euidaccess (const char *__name, int __type) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int eaccess (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))) __attribute__ ((__warn_unused_result__)); +# 337 "/usr/include/unistd.h" 3 4 +extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) __asm__ ("" "lseek64") __attribute__ ((__nothrow__ , __leaf__)) + + ; + + + + + +extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int close (int __fd); + + + + + + +extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)); + + + + + +extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); +# 388 "/usr/include/unistd.h" 3 4 +extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") + + __attribute__ ((__warn_unused_result__)); +extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") + + __attribute__ ((__warn_unused_result__)); +# 404 "/usr/include/unistd.h" 3 4 +extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset) __attribute__ ((__warn_unused_result__)); + + +extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, + __off64_t __offset) __attribute__ ((__warn_unused_result__)); + + + + + + + +extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +# 432 "/usr/include/unistd.h" 3 4 +extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__)); +# 444 "/usr/include/unistd.h" 3 4 +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); +# 469 "/usr/include/unistd.h" 3 4 +extern int pause (void); + + + +extern int chown (const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + +extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + + +extern int fchownat (int __fd, const char *__file, __uid_t __owner, + __gid_t __group, int __flag) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); + + + +extern int chdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + +extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +# 511 "/usr/include/unistd.h" 3 4 +extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern char *get_current_dir_name (void) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern char *getwd (char *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + +extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char **__environ; + +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 execvpe (const char *__file, char *const __argv[], + char *const __envp[]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern void _exit (int __status) __attribute__ ((__noreturn__)); + + + + + +# 1 "/usr/include/bits/confname.h" 1 3 4 +# 24 "/usr/include/bits/confname.h" 3 4 +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 + + }; +# 610 "/usr/include/unistd.h" 2 3 4 + + +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__)); +# 660 "/usr/include/unistd.h" 3 4 +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__)) __attribute__ ((__warn_unused_result__)); + + + +extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + +extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) + __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) + __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + +extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + +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))) __attribute__ ((__warn_unused_result__)); + + + +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))) __attribute__ ((__warn_unused_result__)); + + + + +extern int linkat (int __fromfd, const char *__from, int __tofd, + const char *__to, int __flags) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); + + + + +extern int symlink (const char *__from, const char *__to) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); + + + + +extern ssize_t readlink (const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); + + + + +extern int symlinkat (const char *__from, int __tofd, + const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); + + +extern ssize_t readlinkat (int __fd, const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); + + + +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))); +# 871 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/getopt.h" 1 3 4 +# 57 "/usr/include/getopt.h" 3 4 +extern char *optarg; +# 71 "/usr/include/getopt.h" 3 4 +extern int optind; + + + + +extern int opterr; + + + +extern int optopt; +# 150 "/usr/include/getopt.h" 3 4 +extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) + __attribute__ ((__nothrow__ , __leaf__)); +# 872 "/usr/include/unistd.h" 2 3 4 + + + + + + + +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))) __attribute__ ((__warn_unused_result__)); + + + +extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern int getdomainname (char *__name, size_t __len) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +extern int setdomainname (const char *__name, size_t __len) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int revoke (const char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + + + +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__)) __attribute__ ((__warn_unused_result__)); + + + + + + +extern int chroot (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + +extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int fsync (int __fd); + + + + + +extern int syncfs (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +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__)); +# 997 "/usr/include/unistd.h" 3 4 +extern int truncate (const char *__file, __off64_t __length) __asm__ ("" "truncate64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int truncate64 (const char *__file, __off64_t __length) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 1019 "/usr/include/unistd.h" 3 4 +extern int ftruncate (int __fd, __off64_t __length) __asm__ ("" "ftruncate64") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__warn_unused_result__)); + + + + + +extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +# 1037 "/usr/include/unistd.h" 3 4 +extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__)); +# 1058 "/usr/include/unistd.h" 3 4 +extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__)); +# 1084 "/usr/include/unistd.h" 3 4 +extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") + __attribute__ ((__warn_unused_result__)); + + + + + +extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); +# 1112 "/usr/include/unistd.h" 3 4 +extern int fdatasync (int __fildes); + + + + + + + +extern char *crypt (const char *__key, const char *__salt) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern void encrypt (char *__glibc_block, int __edflag) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void swab (const void *__restrict __from, void *__restrict __to, + ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +# 1148 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/unistd.h" 1 3 4 +# 23 "/usr/include/bits/unistd.h" 3 4 +extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, + size_t __buflen) __attribute__ ((__warn_unused_result__)); +extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") + __attribute__ ((__warn_unused_result__)); +extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +read (int __fd, void *__buf, size_t __nbytes) +{ + if (__builtin_object_size (__buf, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__nbytes)) + return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); + + if (__nbytes > __builtin_object_size (__buf, 0)) + return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); + } + return __read_alias (__fd, __buf, __nbytes); +} + + +extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, + __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); +extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); +extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") + + __attribute__ ((__warn_unused_result__)); +extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") + + __attribute__ ((__warn_unused_result__)); +extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) + ; +extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") + + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) + ; +# 86 "/usr/include/bits/unistd.h" 3 4 +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) +{ + if (__builtin_object_size (__buf, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__nbytes)) + return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); + + if ( __nbytes > __builtin_object_size (__buf, 0)) + return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, + __builtin_object_size (__buf, 0)); + } + + return __pread64_alias (__fd, __buf, __nbytes, __offset); +} + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) +{ + if (__builtin_object_size (__buf, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__nbytes)) + return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); + + if ( __nbytes > __builtin_object_size (__buf, 0)) + return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, + __builtin_object_size (__buf, 0)); + } + + return __pread64_alias (__fd, __buf, __nbytes, __offset); +} + + + + +extern ssize_t __readlink_chk (const char *__restrict __path, + char *__restrict __buf, size_t __len, + size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t +__attribute__ ((__nothrow__ , __leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) + +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__len)) + return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); + + if ( __len > __builtin_object_size (__buf, 2 > 1)) + return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); + } + return __readlink_alias (__path, __buf, __len); +} + + + +extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, + char *__restrict __buf, size_t __len, + size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); +extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); +extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) + + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t +__attribute__ ((__nothrow__ , __leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) + +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__len)) + return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); + + if (__len > __builtin_object_size (__buf, 2 > 1)) + return __readlinkat_chk_warn (__fd, __path, __buf, __len, + __builtin_object_size (__buf, 2 > 1)); + } + return __readlinkat_alias (__fd, __path, __buf, __len); +} + + +extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__warn_unused_result__)); +extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +__attribute__ ((__nothrow__ , __leaf__)) getcwd (char *__buf, size_t __size) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__size)) + return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)); + + if (__size > __builtin_object_size (__buf, 2 > 1)) + return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)); + } + return __getcwd_alias (__buf, __size); +} + + +extern char *__getwd_chk (char *__buf, size_t buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * +__attribute__ ((__nothrow__ , __leaf__)) getwd (char *__buf) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); + return __getwd_warn (__buf); +} + + +extern size_t __confstr_chk (int __name, char *__buf, size_t __len, + size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)); +extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__ , __leaf__)) + ; +extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +__attribute__ ((__nothrow__ , __leaf__)) confstr (int __name, char *__buf, size_t __len) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__len)) + return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); + + if (__builtin_object_size (__buf, 2 > 1) < __len) + return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); + } + return __confstr_alias (__name, __buf, __len); +} + + +extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__warn_unused_result__)); +extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) getgroups (int __size, __gid_t __list[]) +{ + if (__builtin_object_size (__list, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__size) || __size < 0) + return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)); + + if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1)) + return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)); + } + return __getgroups_alias (__size, __list); +} + + +extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, + size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); +extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (2))); +extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__buflen)) + return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + + if (__buflen > __builtin_object_size (__buf, 2 > 1)) + return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + } + return __ttyname_r_alias (__fd, __buf, __buflen); +} + + + +extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) + __attribute__ ((__nonnull__ (1))); +extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") + __attribute__ ((__nonnull__ (1))); +extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") + + + __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +getlogin_r (char *__buf, size_t __buflen) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__buflen)) + return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + + if (__buflen > __builtin_object_size (__buf, 2 > 1)) + return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + } + return __getlogin_r_alias (__buf, __buflen); +} + + + + +extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__nonnull__ (1))); +extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) gethostname (char *__buf, size_t __buflen) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__buflen)) + return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + + if (__buflen > __builtin_object_size (__buf, 2 > 1)) + return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + } + return __gethostname_alias (__buf, __buflen); +} + + + + +extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) + + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) getdomainname (char *__buf, size_t __buflen) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__buflen)) + return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + + if (__buflen > __builtin_object_size (__buf, 2 > 1)) + return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + } + return __getdomainname_alias (__buf, __buflen); +} +# 1149 "/usr/include/unistd.h" 2 3 4 + + + +# 287 "include/platform.h" 2 +# 14 "include/libbb.h" 2 + +# 1 "/usr/include/ctype.h" 1 3 4 +# 28 "/usr/include/ctype.h" 3 4 + +# 46 "/usr/include/ctype.h" 3 4 +enum +{ + _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), + _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), + _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), + _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), + _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), + _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), + _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), + _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), + _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), + _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), + _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), + _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) +}; +# 79 "/usr/include/ctype.h" 3 4 +extern const unsigned short int **__ctype_b_loc (void) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +extern const __int32_t **__ctype_tolower_loc (void) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +extern const __int32_t **__ctype_toupper_loc (void) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +# 104 "/usr/include/ctype.h" 3 4 + + + + + + +extern int isalnum (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isalpha (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int iscntrl (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isdigit (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int islower (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isgraph (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isprint (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int ispunct (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isspace (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isupper (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int isxdigit (int) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int tolower (int __c) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int toupper (int __c) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + + +extern int isblank (int) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int isascii (int __c) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int toascii (int __c) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int _toupper (int) __attribute__ ((__nothrow__ , __leaf__)); +extern int _tolower (int) __attribute__ ((__nothrow__ , __leaf__)); +# 214 "/usr/include/ctype.h" 3 4 +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) tolower (int __c) +{ + return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; +} + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) toupper (int __c) +{ + return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; +} +# 257 "/usr/include/ctype.h" 3 4 +# 1 "/usr/include/xlocale.h" 1 3 4 +# 27 "/usr/include/xlocale.h" 3 4 +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; +# 258 "/usr/include/ctype.h" 2 3 4 +# 271 "/usr/include/ctype.h" 3 4 +extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); +extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); + +extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); +extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); +extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); +# 347 "/usr/include/ctype.h" 3 4 + +# 16 "include/libbb.h" 2 +# 1 "/usr/include/dirent.h" 1 3 4 +# 27 "/usr/include/dirent.h" 3 4 + +# 61 "/usr/include/dirent.h" 3 4 +# 1 "/usr/include/bits/dirent.h" 1 3 4 +# 22 "/usr/include/bits/dirent.h" 3 4 +struct dirent + { + + + + + __ino64_t d_ino; + __off64_t d_off; + + unsigned short int d_reclen; + unsigned char d_type; + char d_name[256]; + }; + + +struct dirent64 + { + __ino64_t d_ino; + __off64_t d_off; + unsigned short int d_reclen; + unsigned char d_type; + char d_name[256]; + }; +# 62 "/usr/include/dirent.h" 2 3 4 +# 97 "/usr/include/dirent.h" 3 4 +enum + { + DT_UNKNOWN = 0, + + DT_FIFO = 1, + + DT_CHR = 2, + + DT_DIR = 4, + + DT_BLK = 6, + + DT_REG = 8, + + DT_LNK = 10, + + DT_SOCK = 12, + + DT_WHT = 14 + + }; +# 127 "/usr/include/dirent.h" 3 4 +typedef struct __dirstream DIR; + + + + + + +extern DIR *opendir (const char *__name) __attribute__ ((__nonnull__ (1))); + + + + + + +extern DIR *fdopendir (int __fd); + + + + + + + +extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1))); +# 165 "/usr/include/dirent.h" 3 4 +extern struct dirent *readdir (DIR *__dirp) __asm__ ("" "readdir64") + __attribute__ ((__nonnull__ (1))); + + + + + + +extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1))); +# 189 "/usr/include/dirent.h" 3 4 +extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result) __asm__ ("" "readdir64_r") + + + + __attribute__ ((__nonnull__ (1, 2, 3))); + + + + + + +extern int readdir64_r (DIR *__restrict __dirp, + struct dirent64 *__restrict __entry, + struct dirent64 **__restrict __result) + __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +# 244 "/usr/include/dirent.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 245 "/usr/include/dirent.h" 2 3 4 +# 262 "/usr/include/dirent.h" 3 4 +extern int scandir (const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)) __asm__ ("" "scandir64") + + + + + + __attribute__ ((__nonnull__ (1, 2))); +# 277 "/usr/include/dirent.h" 3 4 +extern int scandir64 (const char *__restrict __dir, + struct dirent64 ***__restrict __namelist, + int (*__selector) (const struct dirent64 *), + int (*__cmp) (const struct dirent64 **, + const struct dirent64 **)) + __attribute__ ((__nonnull__ (1, 2))); +# 300 "/usr/include/dirent.h" 3 4 +extern int scandirat (int __dfd, const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)) __asm__ ("" "scandirat64") + + + + + + __attribute__ ((__nonnull__ (2, 3))); + + + + + + + +extern int scandirat64 (int __dfd, const char *__restrict __dir, + struct dirent64 ***__restrict __namelist, + int (*__selector) (const struct dirent64 *), + int (*__cmp) (const struct dirent64 **, + const struct dirent64 **)) + __attribute__ ((__nonnull__ (2, 3))); +# 329 "/usr/include/dirent.h" 3 4 +extern int alphasort (const struct dirent **__e1, const struct dirent **__e2) __asm__ ("" "alphasort64") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int alphasort64 (const struct dirent64 **__e1, + const struct dirent64 **__e2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 358 "/usr/include/dirent.h" 3 4 +extern __ssize_t getdirentries (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep) __asm__ ("" "getdirentries64") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__ ((__nonnull__ (2, 4))); + + + + + + +extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, + size_t __nbytes, + __off64_t *__restrict __basep) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))); +# 384 "/usr/include/dirent.h" 3 4 +extern int versionsort (const struct dirent **__e1, const struct dirent **__e2) __asm__ ("" "versionsort64") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int versionsort64 (const struct dirent64 **__e1, + const struct dirent64 **__e2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +# 17 "include/libbb.h" 2 +# 1 "/usr/include/errno.h" 1 3 4 +# 31 "/usr/include/errno.h" 3 4 + + + + +# 1 "/usr/include/bits/errno.h" 1 3 4 +# 24 "/usr/include/bits/errno.h" 3 4 +# 1 "/usr/include/linux/errno.h" 1 3 4 +# 1 "/usr/include/asm/errno.h" 1 3 4 +# 1 "/usr/include/asm-generic/errno.h" 1 3 4 + + + +# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 +# 5 "/usr/include/asm-generic/errno.h" 2 3 4 +# 1 "/usr/include/asm/errno.h" 2 3 4 +# 1 "/usr/include/linux/errno.h" 2 3 4 +# 25 "/usr/include/bits/errno.h" 2 3 4 +# 50 "/usr/include/bits/errno.h" 3 4 +extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +# 36 "/usr/include/errno.h" 2 3 4 +# 54 "/usr/include/errno.h" 3 4 +extern char *program_invocation_name, *program_invocation_short_name; + + + + +# 68 "/usr/include/errno.h" 3 4 +typedef int error_t; +# 18 "include/libbb.h" 2 +# 1 "/usr/include/fcntl.h" 1 3 4 +# 28 "/usr/include/fcntl.h" 3 4 + + + + + + + +# 1 "/usr/include/bits/fcntl.h" 1 3 4 +# 28 "/usr/include/bits/fcntl.h" 3 4 +struct flock + { + short int l_type; + short int l_whence; + + + + + __off64_t l_start; + __off64_t l_len; + + __pid_t l_pid; + }; + + +struct flock64 + { + short int l_type; + short int l_whence; + __off64_t l_start; + __off64_t l_len; + __pid_t l_pid; + }; + + + +# 1 "/usr/include/bits/fcntl-linux.h" 1 3 4 +# 38 "/usr/include/bits/fcntl-linux.h" 3 4 +# 1 "/usr/include/bits/uio.h" 1 3 4 +# 39 "/usr/include/bits/fcntl-linux.h" 2 3 4 +# 241 "/usr/include/bits/fcntl-linux.h" 3 4 +enum __pid_type + { + F_OWNER_TID = 0, + F_OWNER_PID, + F_OWNER_PGRP, + F_OWNER_GID = F_OWNER_PGRP + }; + + +struct f_owner_ex + { + enum __pid_type type; + __pid_t pid; + }; +# 311 "/usr/include/bits/fcntl-linux.h" 3 4 +struct file_handle +{ + unsigned int handle_bytes; + int handle_type; + + unsigned char f_handle[0]; +}; + + + + + + + + + + +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count, + unsigned int __flags); + + + + + + +extern ssize_t vmsplice (int __fdout, const struct iovec *__iov, + size_t __count, unsigned int __flags); + + + + + +extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout, + __off64_t *__offout, size_t __len, + unsigned int __flags); + + + + + +extern ssize_t tee (int __fdin, int __fdout, size_t __len, + unsigned int __flags); +# 370 "/usr/include/bits/fcntl-linux.h" 3 4 +extern int fallocate (int __fd, int __mode, __off64_t __offset, __off64_t __len) __asm__ ("" "fallocate64") + + ; + + + + + +extern int fallocate64 (int __fd, int __mode, __off64_t __offset, + __off64_t __len); + + + + +extern int name_to_handle_at (int __dfd, const char *__name, + struct file_handle *__handle, int *__mnt_id, + int __flags) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle, + int __flags); + + + + +# 54 "/usr/include/bits/fcntl.h" 2 3 4 +# 36 "/usr/include/fcntl.h" 2 3 4 +# 67 "/usr/include/fcntl.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 68 "/usr/include/fcntl.h" 2 3 4 +# 1 "/usr/include/bits/stat.h" 1 3 4 +# 38 "/usr/include/bits/stat.h" 3 4 +struct stat + { + __dev_t st_dev; + unsigned short int __pad1; + + + + __ino_t __st_ino; + + __mode_t st_mode; + __nlink_t st_nlink; + __uid_t st_uid; + __gid_t st_gid; + __dev_t st_rdev; + unsigned short int __pad2; + + + + __off64_t st_size; + + __blksize_t st_blksize; + + + + + __blkcnt64_t st_blocks; +# 72 "/usr/include/bits/stat.h" 3 4 + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +# 90 "/usr/include/bits/stat.h" 3 4 + __ino64_t st_ino; + + }; + + +struct stat64 + { + __dev_t st_dev; + unsigned int __pad1; + + __ino_t __st_ino; + __mode_t st_mode; + __nlink_t st_nlink; + __uid_t st_uid; + __gid_t st_gid; + __dev_t st_rdev; + unsigned int __pad2; + __off64_t st_size; + __blksize_t st_blksize; + + __blkcnt64_t st_blocks; + + + + + + + + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +# 129 "/usr/include/bits/stat.h" 3 4 + __ino64_t st_ino; + }; +# 69 "/usr/include/fcntl.h" 2 3 4 +# 160 "/usr/include/fcntl.h" 3 4 +extern int fcntl (int __fd, int __cmd, ...); +# 172 "/usr/include/fcntl.h" 3 4 +extern int open (const char *__file, int __oflag, ...) __asm__ ("" "open64") + __attribute__ ((__nonnull__ (1))); + + + + + +extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); +# 197 "/usr/include/fcntl.h" 3 4 +extern int openat (int __fd, const char *__file, int __oflag, ...) __asm__ ("" "openat64") + __attribute__ ((__nonnull__ (2))); + + + + + +extern int openat64 (int __fd, const char *__file, int __oflag, ...) + __attribute__ ((__nonnull__ (2))); +# 218 "/usr/include/fcntl.h" 3 4 +extern int creat (const char *__file, mode_t __mode) __asm__ ("" "creat64") + __attribute__ ((__nonnull__ (1))); + + + + + +extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1))); +# 265 "/usr/include/fcntl.h" 3 4 +extern int posix_fadvise (int __fd, __off64_t __offset, __off64_t __len, int __advise) __asm__ ("" "posix_fadvise64") __attribute__ ((__nothrow__ , __leaf__)) + + ; + + + + + +extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len, + int __advise) __attribute__ ((__nothrow__ , __leaf__)); +# 286 "/usr/include/fcntl.h" 3 4 +extern int posix_fallocate (int __fd, __off64_t __offset, __off64_t __len) __asm__ ("" "posix_fallocate64") + + ; + + + + + +extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len); + + + + + + + +# 1 "/usr/include/bits/fcntl2.h" 1 3 4 +# 30 "/usr/include/bits/fcntl2.h" 3 4 +extern int __open_2 (const char *__path, int __oflag) __asm__ ("" "__open64_2") + __attribute__ ((__nonnull__ (1))); +extern int __open_alias (const char *__path, int __oflag, ...) __asm__ ("" "open64") + __attribute__ ((__nonnull__ (1))); + +extern void __open_too_many_args (void) __attribute__((__error__ ("open can be called either with 2 or 3 arguments, not more"))) + ; +extern void __open_missing_mode (void) __attribute__((__error__ ("open with O_CREAT in second argument needs 3 arguments"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +open (const char *__path, int __oflag, ...) +{ + if (__builtin_va_arg_pack_len () > 1) + __open_too_many_args (); + + if (__builtin_constant_p (__oflag)) + { + if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) + { + __open_missing_mode (); + return __open_2 (__path, __oflag); + } + return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); + } + + if (__builtin_va_arg_pack_len () < 1) + return __open_2 (__path, __oflag); + + return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); +} + + + +extern int __open64_2 (const char *__path, int __oflag) __attribute__ ((__nonnull__ (1))); +extern int __open64_alias (const char *__path, int __oflag, ...) __asm__ ("" "open64") + __attribute__ ((__nonnull__ (1))); +extern void __open64_too_many_args (void) __attribute__((__error__ ("open64 can be called either with 2 or 3 arguments, not more"))) + ; +extern void __open64_missing_mode (void) __attribute__((__error__ ("open64 with O_CREAT in second argument needs 3 arguments"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +open64 (const char *__path, int __oflag, ...) +{ + if (__builtin_va_arg_pack_len () > 1) + __open64_too_many_args (); + + if (__builtin_constant_p (__oflag)) + { + if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) + { + __open64_missing_mode (); + return __open64_2 (__path, __oflag); + } + return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); + } + + if (__builtin_va_arg_pack_len () < 1) + return __open64_2 (__path, __oflag); + + return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); +} +# 104 "/usr/include/bits/fcntl2.h" 3 4 +extern int __openat_2 (int __fd, const char *__path, int __oflag) __asm__ ("" "__openat64_2") + + __attribute__ ((__nonnull__ (2))); +extern int __openat_alias (int __fd, const char *__path, int __oflag, ...) __asm__ ("" "openat64") + + __attribute__ ((__nonnull__ (2))); + +extern void __openat_too_many_args (void) __attribute__((__error__ ("openat can be called either with 3 or 4 arguments, not more"))) + ; +extern void __openat_missing_mode (void) __attribute__((__error__ ("openat with O_CREAT in third argument needs 4 arguments"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +openat (int __fd, const char *__path, int __oflag, ...) +{ + if (__builtin_va_arg_pack_len () > 1) + __openat_too_many_args (); + + if (__builtin_constant_p (__oflag)) + { + if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) + { + __openat_missing_mode (); + return __openat_2 (__fd, __path, __oflag); + } + return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); + } + + if (__builtin_va_arg_pack_len () < 1) + return __openat_2 (__fd, __path, __oflag); + + return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); +} + + + +extern int __openat64_2 (int __fd, const char *__path, int __oflag) + __attribute__ ((__nonnull__ (2))); +extern int __openat64_alias (int __fd, const char *__path, int __oflag, ...) __asm__ ("" "openat64") + + __attribute__ ((__nonnull__ (2))); +extern void __openat64_too_many_args (void) __attribute__((__error__ ("openat64 can be called either with 3 or 4 arguments, not more"))) + ; +extern void __openat64_missing_mode (void) __attribute__((__error__ ("openat64 with O_CREAT in third argument needs 4 arguments"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +openat64 (int __fd, const char *__path, int __oflag, ...) +{ + if (__builtin_va_arg_pack_len () > 1) + __openat64_too_many_args (); + + if (__builtin_constant_p (__oflag)) + { + if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) + { + __openat64_missing_mode (); + return __openat64_2 (__fd, __path, __oflag); + } + return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); + } + + if (__builtin_va_arg_pack_len () < 1) + return __openat64_2 (__fd, __path, __oflag); + + return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); +} +# 303 "/usr/include/fcntl.h" 2 3 4 + + + +# 19 "include/libbb.h" 2 +# 1 "/usr/include/inttypes.h" 1 3 4 +# 34 "/usr/include/inttypes.h" 3 4 +typedef unsigned int __gwchar_t; +# 266 "/usr/include/inttypes.h" 3 4 + +# 280 "/usr/include/inttypes.h" 3 4 +typedef struct + { + __extension__ long long int quot; + __extension__ long long int rem; + } imaxdiv_t; + + + + + +extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + +extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + +extern intmax_t strtoimax (const char *__restrict __nptr, + char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); + + +extern uintmax_t strtoumax (const char *__restrict __nptr, + char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); + + +extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr, + __gwchar_t **__restrict __endptr, int __base) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr, + __gwchar_t ** __restrict __endptr, int __base) + __attribute__ ((__nothrow__ , __leaf__)); +# 370 "/usr/include/inttypes.h" 3 4 +__extension__ +extern long long int __strtoll_internal (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern __inline __attribute__ ((__gnu_inline__)) intmax_t +__attribute__ ((__nothrow__ , __leaf__)) strtoimax (const char *__restrict nptr, char **__restrict endptr, int base) + +{ + return __strtoll_internal (nptr, endptr, base, 0); +} + +__extension__ +extern unsigned long long int __strtoull_internal (const char * + __restrict __nptr, + char ** + __restrict __endptr, + int __base, + int __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern __inline __attribute__ ((__gnu_inline__)) uintmax_t +__attribute__ ((__nothrow__ , __leaf__)) strtoumax (const char *__restrict nptr, char **__restrict endptr, int base) + +{ + return __strtoull_internal (nptr, endptr, base, 0); +} + +__extension__ +extern long long int __wcstoll_internal (const __gwchar_t *__restrict __nptr, + __gwchar_t **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern __inline __attribute__ ((__gnu_inline__)) intmax_t +__attribute__ ((__nothrow__ , __leaf__)) wcstoimax (const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) + +{ + return __wcstoll_internal (nptr, endptr, base, 0); +} + + +__extension__ +extern unsigned long long int __wcstoull_internal (const __gwchar_t * + __restrict __nptr, + __gwchar_t ** + __restrict __endptr, + int __base, + int __group) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern __inline __attribute__ ((__gnu_inline__)) uintmax_t +__attribute__ ((__nothrow__ , __leaf__)) wcstoumax (const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) + +{ + return __wcstoull_internal (nptr, endptr, base, 0); +} + + + + + +# 20 "include/libbb.h" 2 +# 1 "/usr/include/netdb.h" 1 3 4 +# 27 "/usr/include/netdb.h" 3 4 +# 1 "/usr/include/netinet/in.h" 1 3 4 +# 27 "/usr/include/netinet/in.h" 3 4 + + + +typedef uint32_t in_addr_t; +struct in_addr + { + in_addr_t s_addr; + }; + + +# 1 "/usr/include/bits/in.h" 1 3 4 +# 112 "/usr/include/bits/in.h" 3 4 +struct ip_opts + { + struct in_addr ip_dst; + char ip_opts[40]; + }; + + +struct ip_mreqn + { + struct in_addr imr_multiaddr; + struct in_addr imr_address; + int imr_ifindex; + }; + + +struct in_pktinfo + { + int ipi_ifindex; + struct in_addr ipi_spec_dst; + struct in_addr ipi_addr; + }; +# 38 "/usr/include/netinet/in.h" 2 3 4 + + +enum + { + IPPROTO_IP = 0, + + IPPROTO_ICMP = 1, + + IPPROTO_IGMP = 2, + + IPPROTO_IPIP = 4, + + IPPROTO_TCP = 6, + + IPPROTO_EGP = 8, + + IPPROTO_PUP = 12, + + IPPROTO_UDP = 17, + + IPPROTO_IDP = 22, + + IPPROTO_TP = 29, + + IPPROTO_DCCP = 33, + + IPPROTO_IPV6 = 41, + + IPPROTO_RSVP = 46, + + IPPROTO_GRE = 47, + + IPPROTO_ESP = 50, + + IPPROTO_AH = 51, + + IPPROTO_MTP = 92, + + IPPROTO_BEETPH = 94, + + IPPROTO_ENCAP = 98, + + IPPROTO_PIM = 103, + + IPPROTO_COMP = 108, + + IPPROTO_SCTP = 132, + + IPPROTO_UDPLITE = 136, + + IPPROTO_RAW = 255, + + IPPROTO_MAX + }; + + + + + +enum + { + IPPROTO_HOPOPTS = 0, + + IPPROTO_ROUTING = 43, + + IPPROTO_FRAGMENT = 44, + + IPPROTO_ICMPV6 = 58, + + IPPROTO_NONE = 59, + + IPPROTO_DSTOPTS = 60, + + IPPROTO_MH = 135 + + }; + + + +typedef uint16_t in_port_t; + + +enum + { + IPPORT_ECHO = 7, + IPPORT_DISCARD = 9, + IPPORT_SYSTAT = 11, + IPPORT_DAYTIME = 13, + IPPORT_NETSTAT = 15, + IPPORT_FTP = 21, + IPPORT_TELNET = 23, + IPPORT_SMTP = 25, + IPPORT_TIMESERVER = 37, + IPPORT_NAMESERVER = 42, + IPPORT_WHOIS = 43, + IPPORT_MTP = 57, + + IPPORT_TFTP = 69, + IPPORT_RJE = 77, + IPPORT_FINGER = 79, + IPPORT_TTYLINK = 87, + IPPORT_SUPDUP = 95, + + + IPPORT_EXECSERVER = 512, + IPPORT_LOGINSERVER = 513, + IPPORT_CMDSERVER = 514, + IPPORT_EFSSERVER = 520, + + + IPPORT_BIFFUDP = 512, + IPPORT_WHOSERVER = 513, + IPPORT_ROUTESERVER = 520, + + + IPPORT_RESERVED = 1024, + + + IPPORT_USERRESERVED = 5000 + }; +# 209 "/usr/include/netinet/in.h" 3 4 +struct in6_addr + { + union + { + uint8_t __u6_addr8[16]; + + uint16_t __u6_addr16[8]; + uint32_t __u6_addr32[4]; + + } __in6_u; + + + + + + }; + + +extern const struct in6_addr in6addr_any; +extern const struct in6_addr in6addr_loopback; +# 237 "/usr/include/netinet/in.h" 3 4 +struct sockaddr_in + { + sa_family_t sin_family; + in_port_t sin_port; + struct in_addr sin_addr; + + + unsigned char sin_zero[sizeof (struct sockaddr) - + (sizeof (unsigned short int)) - + sizeof (in_port_t) - + sizeof (struct in_addr)]; + }; + + + +struct sockaddr_in6 + { + sa_family_t sin6_family; + in_port_t sin6_port; + uint32_t sin6_flowinfo; + struct in6_addr sin6_addr; + uint32_t sin6_scope_id; + }; + + + + +struct ip_mreq + { + + struct in_addr imr_multiaddr; + + + struct in_addr imr_interface; + }; + +struct ip_mreq_source + { + + struct in_addr imr_multiaddr; + + + struct in_addr imr_interface; + + + struct in_addr imr_sourceaddr; + }; + + + + +struct ipv6_mreq + { + + struct in6_addr ipv6mr_multiaddr; + + + unsigned int ipv6mr_interface; + }; + + + + +struct group_req + { + + uint32_t gr_interface; + + + struct sockaddr_storage gr_group; + }; + +struct group_source_req + { + + uint32_t gsr_interface; + + + struct sockaddr_storage gsr_group; + + + struct sockaddr_storage gsr_source; + }; + + + +struct ip_msfilter + { + + struct in_addr imsf_multiaddr; + + + struct in_addr imsf_interface; + + + uint32_t imsf_fmode; + + + uint32_t imsf_numsrc; + + struct in_addr imsf_slist[1]; + }; + + + + + +struct group_filter + { + + uint32_t gf_interface; + + + struct sockaddr_storage gf_group; + + + uint32_t gf_fmode; + + + uint32_t gf_numsrc; + + struct sockaddr_storage gf_slist[1]; +}; +# 374 "/usr/include/netinet/in.h" 3 4 +extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +extern uint16_t ntohs (uint16_t __netshort) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +extern uint32_t htonl (uint32_t __hostlong) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +extern uint16_t htons (uint16_t __hostshort) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + + + +# 1 "/usr/include/bits/byteswap.h" 1 3 4 +# 386 "/usr/include/netinet/in.h" 2 3 4 +# 501 "/usr/include/netinet/in.h" 3 4 +extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) + __attribute__ ((__nothrow__ , __leaf__)); +# 531 "/usr/include/netinet/in.h" 3 4 +struct cmsghdr; + + +struct in6_pktinfo + { + struct in6_addr ipi6_addr; + unsigned int ipi6_ifindex; + }; + + +struct ip6_mtuinfo + { + struct sockaddr_in6 ip6m_addr; + uint32_t ip6m_mtu; + }; + + + +extern int inet6_option_space (int __nbytes) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, + int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +extern int inet6_option_append (struct cmsghdr *__cmsg, + const uint8_t *__typep, int __multx, + int __plusy) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, + int __multx, int __plusy) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +extern int inet6_option_next (const struct cmsghdr *__cmsg, + uint8_t **__tptrp) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +extern int inet6_option_find (const struct cmsghdr *__cmsg, + uint8_t **__tptrp, int __type) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); + + + +extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset, + uint8_t __type, socklen_t __len, uint8_t __align, + void **__databufp) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset) + __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val, + socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset, + uint8_t *__typep, socklen_t *__lenp, + void **__databufp) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset, + uint8_t __type, socklen_t *__lenp, + void **__databufp) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val, + socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern socklen_t inet6_rth_space (int __type, int __segments) __attribute__ ((__nothrow__ , __leaf__)); +extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type, + int __segments) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_rth_reverse (const void *__in, void *__out) __attribute__ ((__nothrow__ , __leaf__)); +extern int inet6_rth_segments (const void *__bp) __attribute__ ((__nothrow__ , __leaf__)); +extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, + struct in_addr __group, uint32_t *__fmode, + uint32_t *__numsrc, struct in_addr *__slist) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, + struct in_addr __group, uint32_t __fmode, + uint32_t __numsrc, + const struct in_addr *__slist) + __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int getsourcefilter (int __s, uint32_t __interface_addr, + const struct sockaddr *__group, + socklen_t __grouplen, uint32_t *__fmode, + uint32_t *__numsrc, + struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int setsourcefilter (int __s, uint32_t __interface_addr, + const struct sockaddr *__group, + socklen_t __grouplen, uint32_t __fmode, + uint32_t __numsrc, + const struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 28 "/usr/include/netdb.h" 2 3 4 + + + + +# 1 "/usr/include/rpc/netdb.h" 1 3 4 +# 42 "/usr/include/rpc/netdb.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 43 "/usr/include/rpc/netdb.h" 2 3 4 + + + +struct rpcent +{ + char *r_name; + char **r_aliases; + int r_number; +}; + +extern void setrpcent (int __stayopen) __attribute__ ((__nothrow__ , __leaf__)); +extern void endrpcent (void) __attribute__ ((__nothrow__ , __leaf__)); +extern struct rpcent *getrpcbyname (const char *__name) __attribute__ ((__nothrow__ , __leaf__)); +extern struct rpcent *getrpcbynumber (int __number) __attribute__ ((__nothrow__ , __leaf__)); +extern struct rpcent *getrpcent (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__)); + +extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__)); + +extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, + size_t __buflen, struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 33 "/usr/include/netdb.h" 2 3 4 + + + + +# 1 "/usr/include/bits/siginfo.h" 1 3 4 +# 24 "/usr/include/bits/siginfo.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 25 "/usr/include/bits/siginfo.h" 2 3 4 + + + + + + + +typedef union sigval + { + int sival_int; + void *sival_ptr; + } sigval_t; +# 295 "/usr/include/bits/siginfo.h" 3 4 +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[((64 / sizeof (int)) - 3)]; + + + + __pid_t _tid; + + struct + { + void (*_function) (sigval_t); + pthread_attr_t *_attribute; + } _sigev_thread; + } _sigev_un; + } sigevent_t; + + + + + + +enum +{ + SIGEV_SIGNAL = 0, + + SIGEV_NONE, + + SIGEV_THREAD, + + + SIGEV_THREAD_ID = 4 + +}; +# 38 "/usr/include/netdb.h" 2 3 4 + +# 1 "/usr/include/time.h" 1 3 4 +# 40 "/usr/include/netdb.h" 2 3 4 + + +# 1 "/usr/include/bits/netdb.h" 1 3 4 +# 26 "/usr/include/bits/netdb.h" 3 4 +struct netent +{ + char *n_name; + char **n_aliases; + int n_addrtype; + uint32_t n_net; +}; +# 43 "/usr/include/netdb.h" 2 3 4 +# 53 "/usr/include/netdb.h" 3 4 + + + + + + + + +extern int *__h_errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +# 92 "/usr/include/netdb.h" 3 4 +extern void herror (const char *__str) __attribute__ ((__nothrow__ , __leaf__)); + + +extern const char *hstrerror (int __err_num) __attribute__ ((__nothrow__ , __leaf__)); + + + + +struct hostent +{ + char *h_name; + char **h_aliases; + int h_addrtype; + int h_length; + char **h_addr_list; + + + +}; + + + + + + +extern void sethostent (int __stay_open); + + + + + +extern void endhostent (void); + + + + + + +extern struct hostent *gethostent (void); + + + + + + +extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len, + int __type); + + + + + +extern struct hostent *gethostbyname (const char *__name); +# 155 "/usr/include/netdb.h" 3 4 +extern struct hostent *gethostbyname2 (const char *__name, int __af); +# 167 "/usr/include/netdb.h" 3 4 +extern int gethostent_r (struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); + +extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len, + int __type, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); + +extern int gethostbyname_r (const char *__restrict __name, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); + +extern int gethostbyname2_r (const char *__restrict __name, int __af, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); +# 198 "/usr/include/netdb.h" 3 4 +extern void setnetent (int __stay_open); + + + + + +extern void endnetent (void); + + + + + + +extern struct netent *getnetent (void); + + + + + + +extern struct netent *getnetbyaddr (uint32_t __net, int __type); + + + + + +extern struct netent *getnetbyname (const char *__name); +# 237 "/usr/include/netdb.h" 3 4 +extern int getnetent_r (struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); + +extern int getnetbyaddr_r (uint32_t __net, int __type, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); + +extern int getnetbyname_r (const char *__restrict __name, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); + + + + +struct servent +{ + char *s_name; + char **s_aliases; + int s_port; + char *s_proto; +}; + + + + + + +extern void setservent (int __stay_open); + + + + + +extern void endservent (void); + + + + + + +extern struct servent *getservent (void); + + + + + + +extern struct servent *getservbyname (const char *__name, const char *__proto); + + + + + + +extern struct servent *getservbyport (int __port, const char *__proto); +# 308 "/usr/include/netdb.h" 3 4 +extern int getservent_r (struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); + +extern int getservbyname_r (const char *__restrict __name, + const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); + +extern int getservbyport_r (int __port, const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); + + + + +struct protoent +{ + char *p_name; + char **p_aliases; + int p_proto; +}; + + + + + + +extern void setprotoent (int __stay_open); + + + + + +extern void endprotoent (void); + + + + + + +extern struct protoent *getprotoent (void); + + + + + +extern struct protoent *getprotobyname (const char *__name); + + + + + +extern struct protoent *getprotobynumber (int __proto); +# 374 "/usr/include/netdb.h" 3 4 +extern int getprotoent_r (struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); + +extern int getprotobyname_r (const char *__restrict __name, + struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); + +extern int getprotobynumber_r (int __proto, + struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); +# 395 "/usr/include/netdb.h" 3 4 +extern int setnetgrent (const char *__netgroup); + + + + + + + +extern void endnetgrent (void); +# 412 "/usr/include/netdb.h" 3 4 +extern int getnetgrent (char **__restrict __hostp, + char **__restrict __userp, + char **__restrict __domainp); +# 423 "/usr/include/netdb.h" 3 4 +extern int innetgr (const char *__netgroup, const char *__host, + const char *__user, const char *__domain); + + + + + + + +extern int getnetgrent_r (char **__restrict __hostp, + char **__restrict __userp, + char **__restrict __domainp, + char *__restrict __buffer, size_t __buflen); +# 451 "/usr/include/netdb.h" 3 4 +extern int rcmd (char **__restrict __ahost, unsigned short int __rport, + const char *__restrict __locuser, + const char *__restrict __remuser, + const char *__restrict __cmd, int *__restrict __fd2p); +# 463 "/usr/include/netdb.h" 3 4 +extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport, + const char *__restrict __locuser, + const char *__restrict __remuser, + const char *__restrict __cmd, int *__restrict __fd2p, + sa_family_t __af); +# 479 "/usr/include/netdb.h" 3 4 +extern int rexec (char **__restrict __ahost, int __rport, + const char *__restrict __name, + const char *__restrict __pass, + const char *__restrict __cmd, int *__restrict __fd2p); +# 491 "/usr/include/netdb.h" 3 4 +extern int rexec_af (char **__restrict __ahost, int __rport, + const char *__restrict __name, + const char *__restrict __pass, + const char *__restrict __cmd, int *__restrict __fd2p, + sa_family_t __af); +# 505 "/usr/include/netdb.h" 3 4 +extern int ruserok (const char *__rhost, int __suser, + const char *__remuser, const char *__locuser); +# 515 "/usr/include/netdb.h" 3 4 +extern int ruserok_af (const char *__rhost, int __suser, + const char *__remuser, const char *__locuser, + sa_family_t __af); +# 528 "/usr/include/netdb.h" 3 4 +extern int iruserok (uint32_t __raddr, int __suser, + const char *__remuser, const char *__locuser); +# 539 "/usr/include/netdb.h" 3 4 +extern int iruserok_af (const void *__raddr, int __suser, + const char *__remuser, const char *__locuser, + sa_family_t __af); +# 551 "/usr/include/netdb.h" 3 4 +extern int rresvport (int *__alport); +# 560 "/usr/include/netdb.h" 3 4 +extern int rresvport_af (int *__alport, sa_family_t __af); + + + + + + +struct addrinfo +{ + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + socklen_t ai_addrlen; + struct sockaddr *ai_addr; + char *ai_canonname; + struct addrinfo *ai_next; +}; + + + +struct gaicb +{ + const char *ar_name; + const char *ar_service; + const struct addrinfo *ar_request; + struct addrinfo *ar_result; + + int __return; + int __glibc_reserved[5]; +}; +# 662 "/usr/include/netdb.h" 3 4 +extern int getaddrinfo (const char *__restrict __name, + const char *__restrict __service, + const struct addrinfo *__restrict __req, + struct addrinfo **__restrict __pai); + + +extern void freeaddrinfo (struct addrinfo *__ai) __attribute__ ((__nothrow__ , __leaf__)); + + +extern const char *gai_strerror (int __ecode) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int getnameinfo (const struct sockaddr *__restrict __sa, + socklen_t __salen, char *__restrict __host, + socklen_t __hostlen, char *__restrict __serv, + socklen_t __servlen, int __flags); +# 692 "/usr/include/netdb.h" 3 4 +extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict], + int __ent, struct sigevent *__restrict __sig); +# 703 "/usr/include/netdb.h" 3 4 +extern int gai_suspend (const struct gaicb *const __list[], int __ent, + const struct timespec *__timeout); + + +extern int gai_error (struct gaicb *__req) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int gai_cancel (struct gaicb *__gaicbp) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 21 "include/libbb.h" 2 +# 1 "/usr/include/setjmp.h" 1 3 4 +# 27 "/usr/include/setjmp.h" 3 4 + + +# 1 "/usr/include/bits/setjmp.h" 1 3 4 +# 34 "/usr/include/bits/setjmp.h" 3 4 +typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); +# 30 "/usr/include/setjmp.h" 2 3 4 +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 31 "/usr/include/setjmp.h" 2 3 4 + + + +struct __jmp_buf_tag + { + + + + + __jmp_buf __jmpbuf; + int __mask_was_saved; + __sigset_t __saved_mask; + }; + + + + +typedef struct __jmp_buf_tag jmp_buf[1]; + + + +extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__)); + + + + + + +extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__)); + + + +extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__)); + + + + + + + + + + +extern void longjmp (struct __jmp_buf_tag __env[1], int __val) + __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + + +extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) + __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + + +typedef struct __jmp_buf_tag sigjmp_buf[1]; +# 102 "/usr/include/setjmp.h" 3 4 +extern void siglongjmp (sigjmp_buf __env, int __val) + __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + +# 1 "/usr/include/bits/setjmp2.h" 1 3 4 +# 25 "/usr/include/bits/setjmp2.h" 3 4 +extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) + + __attribute__ ((__noreturn__)); +extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) + + __attribute__ ((__noreturn__)); +extern void siglongjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) + + __attribute__ ((__noreturn__)); +# 110 "/usr/include/setjmp.h" 2 3 4 + + + +# 22 "include/libbb.h" 2 +# 1 "/usr/include/signal.h" 1 3 4 +# 30 "/usr/include/signal.h" 3 4 + + +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 102 "/usr/include/bits/sigset.h" 3 4 +extern int __sigismember (const __sigset_t *, int); +extern int __sigaddset (__sigset_t *, int); +extern int __sigdelset (__sigset_t *, int); +# 116 "/usr/include/bits/sigset.h" 3 4 +extern __inline __attribute__ ((__gnu_inline__)) int __sigismember (const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; } +extern __inline __attribute__ ((__gnu_inline__)) int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); } +extern __inline __attribute__ ((__gnu_inline__)) int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); } +# 33 "/usr/include/signal.h" 2 3 4 + + + + + + + +typedef __sig_atomic_t sig_atomic_t; + +# 57 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/signum.h" 1 3 4 +# 58 "/usr/include/signal.h" 2 3 4 +# 75 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 76 "/usr/include/signal.h" 2 3 4 + + + + +# 1 "/usr/include/bits/siginfo.h" 1 3 4 +# 24 "/usr/include/bits/siginfo.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 25 "/usr/include/bits/siginfo.h" 2 3 4 +# 50 "/usr/include/bits/siginfo.h" 3 4 +typedef struct + { + int si_signo; + int si_errno; + + int si_code; + + union + { + int _pad[((128 / sizeof (int)) - 3)]; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + } _kill; + + + struct + { + int si_tid; + int si_overrun; + sigval_t si_sigval; + } _timer; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + sigval_t si_sigval; + } _rt; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + int si_status; + __clock_t si_utime; + __clock_t si_stime; + } _sigchld; + + + struct + { + void *si_addr; + short int si_addr_lsb; + } _sigfault; + + + struct + { + long int si_band; + int si_fd; + } _sigpoll; + + + struct + { + void *_call_addr; + int _syscall; + unsigned int _arch; + } _sigsys; + } _sifields; + } siginfo_t; +# 141 "/usr/include/bits/siginfo.h" 3 4 +enum +{ + SI_ASYNCNL = -60, + + SI_TKILL = -6, + + SI_SIGIO, + + SI_ASYNCIO, + + SI_MESGQ, + + SI_TIMER, + + SI_QUEUE, + + SI_USER, + + SI_KERNEL = 0x80 + +}; + + + +enum +{ + ILL_ILLOPC = 1, + + ILL_ILLOPN, + + ILL_ILLADR, + + ILL_ILLTRP, + + ILL_PRVOPC, + + ILL_PRVREG, + + ILL_COPROC, + + ILL_BADSTK + +}; + + +enum +{ + FPE_INTDIV = 1, + + FPE_INTOVF, + + FPE_FLTDIV, + + FPE_FLTOVF, + + FPE_FLTUND, + + FPE_FLTRES, + + FPE_FLTINV, + + FPE_FLTSUB + +}; + + +enum +{ + SEGV_MAPERR = 1, + + SEGV_ACCERR + +}; + + +enum +{ + BUS_ADRALN = 1, + + BUS_ADRERR, + + BUS_OBJERR, + + BUS_MCEERR_AR, + + BUS_MCEERR_AO + +}; + + +enum +{ + TRAP_BRKPT = 1, + + TRAP_TRACE + +}; + + +enum +{ + CLD_EXITED = 1, + + CLD_KILLED, + + CLD_DUMPED, + + CLD_TRAPPED, + + CLD_STOPPED, + + CLD_CONTINUED + +}; + + +enum +{ + POLL_IN = 1, + + POLL_OUT, + + POLL_MSG, + + POLL_ERR, + + POLL_PRI, + + POLL_HUP + +}; +# 81 "/usr/include/signal.h" 2 3 4 + + + + +typedef void (*__sighandler_t) (int); + + + + +extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__ , __leaf__)); + +extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern __sighandler_t signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__ , __leaf__)); +# 114 "/usr/include/signal.h" 3 4 + + + + + +extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__ , __leaf__)); +extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern void psignal (int __sig, const char *__s); + + + + +extern void psiginfo (const siginfo_t *__pinfo, const char *__s); +# 167 "/usr/include/signal.h" 3 4 +extern int __sigpause (int __sig_or_mask, int __is_sig); + + + +extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); +# 189 "/usr/include/signal.h" 3 4 +extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); + + +extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); + + +extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); +# 204 "/usr/include/signal.h" 3 4 +typedef __sighandler_t sighandler_t; + + + + +typedef __sighandler_t sig_t; + + + + + +extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigismember (const sigset_t *__set, int __signo) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + +extern int sigisemptyset (const sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigandset (sigset_t *__set, const sigset_t *__left, + const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern int sigorset (sigset_t *__set, const sigset_t *__left, + const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +# 1 "/usr/include/bits/sigaction.h" 1 3 4 +# 24 "/usr/include/bits/sigaction.h" 3 4 +struct sigaction + { + + + union + { + + __sighandler_t sa_handler; + + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; + + + + + + + + __sigset_t sa_mask; + + + int sa_flags; + + + void (*sa_restorer) (void); + }; +# 246 "/usr/include/signal.h" 2 3 4 + + +extern int sigprocmask (int __how, const sigset_t *__restrict __set, + sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); + + +extern int sigaction (int __sig, const struct sigaction *__restrict __act, + struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) + __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int sigwaitinfo (const sigset_t *__restrict __set, + siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigtimedwait (const sigset_t *__restrict __set, + siginfo_t *__restrict __info, + const struct timespec *__restrict __timeout) + __attribute__ ((__nonnull__ (1))); + + + +extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) + __attribute__ ((__nothrow__ , __leaf__)); +# 303 "/usr/include/signal.h" 3 4 +extern const char *const _sys_siglist[65]; +extern const char *const sys_siglist[65]; + + +struct sigvec + { + __sighandler_t sv_handler; + int sv_mask; + + int sv_flags; + + }; +# 327 "/usr/include/signal.h" 3 4 +extern int sigvec (int __sig, const struct sigvec *__vec, + struct sigvec *__ovec) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 1 "/usr/include/bits/sigcontext.h" 1 3 4 +# 27 "/usr/include/bits/sigcontext.h" 3 4 +# 1 "/usr/include/asm/sigcontext.h" 1 3 4 +# 9 "/usr/include/asm/sigcontext.h" 3 4 +struct sigcontext { + unsigned long trap_no; + unsigned long error_code; + unsigned long oldmask; + unsigned long arm_r0; + unsigned long arm_r1; + unsigned long arm_r2; + unsigned long arm_r3; + unsigned long arm_r4; + unsigned long arm_r5; + unsigned long arm_r6; + unsigned long arm_r7; + unsigned long arm_r8; + unsigned long arm_r9; + unsigned long arm_r10; + unsigned long arm_fp; + unsigned long arm_ip; + unsigned long arm_sp; + unsigned long arm_lr; + unsigned long arm_pc; + unsigned long arm_cpsr; + unsigned long fault_address; +}; +# 28 "/usr/include/bits/sigcontext.h" 2 3 4 + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 32 "/usr/include/bits/sigcontext.h" 2 3 4 +# 333 "/usr/include/signal.h" 2 3 4 + + +extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 343 "/usr/include/signal.h" 2 3 4 + + + + +extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__)); + +# 1 "/usr/include/bits/sigstack.h" 1 3 4 +# 25 "/usr/include/bits/sigstack.h" 3 4 +struct sigstack + { + void *ss_sp; + int ss_onstack; + }; + + + +enum +{ + SS_ONSTACK = 1, + + SS_DISABLE + +}; +# 49 "/usr/include/bits/sigstack.h" 3 4 +typedef struct sigaltstack + { + void *ss_sp; + int ss_flags; + size_t ss_size; + } stack_t; +# 350 "/usr/include/signal.h" 2 3 4 + + +# 1 "/usr/include/sys/ucontext.h" 1 3 4 +# 24 "/usr/include/sys/ucontext.h" 3 4 +# 1 "/usr/include/signal.h" 1 3 4 +# 25 "/usr/include/sys/ucontext.h" 2 3 4 + + + +# 1 "/usr/include/bits/sigcontext.h" 1 3 4 +# 29 "/usr/include/sys/ucontext.h" 2 3 4 + +typedef int greg_t; + + + + + +typedef greg_t gregset_t[18]; + + +enum +{ + REG_R0 = 0, + + REG_R1 = 1, + + REG_R2 = 2, + + REG_R3 = 3, + + REG_R4 = 4, + + REG_R5 = 5, + + REG_R6 = 6, + + REG_R7 = 7, + + REG_R8 = 8, + + REG_R9 = 9, + + REG_R10 = 10, + + REG_R11 = 11, + + REG_R12 = 12, + + REG_R13 = 13, + + REG_R14 = 14, + + REG_R15 = 15 + +}; + +struct _libc_fpstate +{ + struct + { + unsigned int sign1:1; + unsigned int unused:15; + unsigned int sign2:1; + unsigned int exponent:14; + unsigned int j:1; + unsigned int mantissa1:31; + unsigned int mantissa0:32; + } fpregs[8]; + unsigned int fpsr:32; + unsigned int fpcr:32; + unsigned char ftype[8]; + unsigned int init_flag; +}; + +typedef struct _libc_fpstate fpregset_t; + + + + + +typedef struct sigcontext mcontext_t; + + +typedef struct ucontext + { + unsigned long uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + __sigset_t uc_sigmask; + unsigned long uc_regspace[128] __attribute__((__aligned__(8))); + } ucontext_t; +# 353 "/usr/include/signal.h" 2 3 4 + + + + + +extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); + + + +extern int sigaltstack (const struct sigaltstack *__restrict __ss, + struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern int sighold (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int sigrelse (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int sigignore (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + +extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +# 1 "/usr/include/bits/sigthread.h" 1 3 4 +# 30 "/usr/include/bits/sigthread.h" 3 4 +extern int pthread_sigmask (int __how, + const __sigset_t *__restrict __newmask, + __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__)); + + +extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int pthread_sigqueue (pthread_t __threadid, int __signo, + const union sigval __value) __attribute__ ((__nothrow__ , __leaf__)); +# 389 "/usr/include/signal.h" 2 3 4 + + + + + + +extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__)); + +extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__)); + + + + +# 23 "include/libbb.h" 2 + + + + + + + +# 1 "/usr/include/stdio.h" 1 3 4 +# 29 "/usr/include/stdio.h" 3 4 + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 34 "/usr/include/stdio.h" 2 3 4 +# 44 "/usr/include/stdio.h" 3 4 +struct _IO_FILE; + + + +typedef struct _IO_FILE FILE; + + + + + +# 64 "/usr/include/stdio.h" 3 4 +typedef struct _IO_FILE __FILE; +# 74 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/libio.h" 1 3 4 +# 31 "/usr/include/libio.h" 3 4 +# 1 "/usr/include/_G_config.h" 1 3 4 +# 15 "/usr/include/_G_config.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 16 "/usr/include/_G_config.h" 2 3 4 + + + + +# 1 "/usr/include/wchar.h" 1 3 4 +# 82 "/usr/include/wchar.h" 3 4 +typedef struct +{ + int __count; + union + { + + unsigned int __wch; + + + + char __wchb[4]; + } __value; +} __mbstate_t; +# 21 "/usr/include/_G_config.h" 2 3 4 +typedef struct +{ + __off_t __pos; + __mbstate_t __state; +} _G_fpos_t; +typedef struct +{ + __off64_t __pos; + __mbstate_t __state; +} _G_fpos64_t; +# 32 "/usr/include/libio.h" 2 3 4 +# 49 "/usr/include/libio.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdarg.h" 1 3 4 +# 40 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdarg.h" 3 4 +typedef __builtin_va_list __gnuc_va_list; +# 50 "/usr/include/libio.h" 2 3 4 +# 144 "/usr/include/libio.h" 3 4 +struct _IO_jump_t; struct _IO_FILE; +# 154 "/usr/include/libio.h" 3 4 +typedef void _IO_lock_t; + + + + + +struct _IO_marker { + struct _IO_marker *_next; + struct _IO_FILE *_sbuf; + + + + int _pos; +# 177 "/usr/include/libio.h" 3 4 +}; + + +enum __codecvt_result +{ + __codecvt_ok, + __codecvt_partial, + __codecvt_error, + __codecvt_noconv +}; +# 245 "/usr/include/libio.h" 3 4 +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; +# 293 "/usr/include/libio.h" 3 4 + __off64_t _offset; +# 302 "/usr/include/libio.h" 3 4 + 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_; +# 338 "/usr/include/libio.h" 3 4 +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); + + + + +typedef __io_read_fn cookie_read_function_t; +typedef __io_write_fn cookie_write_function_t; +typedef __io_seek_fn cookie_seek_function_t; +typedef __io_close_fn cookie_close_function_t; + + +typedef struct +{ + __io_read_fn *read; + __io_write_fn *write; + __io_seek_fn *seek; + __io_close_fn *close; +} _IO_cookie_io_functions_t; +typedef _IO_cookie_io_functions_t cookie_io_functions_t; + +struct _IO_cookie_file; + + +extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, + void *__cookie, _IO_cookie_io_functions_t __fns); + + + + + + + +extern int __underflow (_IO_FILE *); +extern int __uflow (_IO_FILE *); +extern int __overflow (_IO_FILE *, int); +# 434 "/usr/include/libio.h" 3 4 +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__)); +# 464 "/usr/include/libio.h" 3 4 +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__)); +# 75 "/usr/include/stdio.h" 2 3 4 + + + + +typedef __gnuc_va_list va_list; +# 108 "/usr/include/stdio.h" 3 4 + + + + +typedef _G_fpos64_t fpos_t; + + + +typedef _G_fpos64_t fpos64_t; +# 164 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/bits/stdio_lim.h" 1 3 4 +# 165 "/usr/include/stdio.h" 2 3 4 + + + +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__)); + + + +# 198 "/usr/include/stdio.h" 3 4 +extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") __attribute__ ((__warn_unused_result__)); + + + + + + +extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); + + + +extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +# 227 "/usr/include/stdio.h" 3 4 +extern char *tempnam (const char *__dir, const char *__pfx) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + + + + + + + + +extern int fclose (FILE *__stream); + + + + +extern int fflush (FILE *__stream); + +# 252 "/usr/include/stdio.h" 3 4 +extern int fflush_unlocked (FILE *__stream); +# 262 "/usr/include/stdio.h" 3 4 +extern int fcloseall (void); + + + + +# 283 "/usr/include/stdio.h" 3 4 +extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") + + __attribute__ ((__warn_unused_result__)); +extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") + + + __attribute__ ((__warn_unused_result__)); + + + + + + + +extern FILE *fopen64 (const char *__restrict __filename, + const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); +extern FILE *freopen64 (const char *__restrict __filename, + const char *__restrict __modes, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); + + + + +extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + +extern FILE *fopencookie (void *__restrict __magic_cookie, + const char *__restrict __modes, + _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + + +extern int fprintf (FILE *__restrict __stream, + const char *__restrict __format, ...); + + + + +extern int printf (const char *__restrict __format, ...); + +extern int sprintf (char *__restrict __s, + const char *__restrict __format, ...) __attribute__ ((__nothrow__)); + + + + + +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg); + + + + +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); + +extern int vsprintf (char *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) __attribute__ ((__nothrow__)); + + + + + +extern int snprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); + + + + + + +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, + __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); +extern int __asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); +extern int asprintf (char **__restrict __ptr, + const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); + + + + +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, ...) __attribute__ ((__warn_unused_result__)); + + + + +extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); + +extern int sscanf (const char *__restrict __s, + const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)); +# 463 "/usr/include/stdio.h" 3 4 + + + + + + + + +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); + + +extern int vsscanf (const char *__restrict __s, + const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0))); +# 522 "/usr/include/stdio.h" 3 4 + + + + + + + + + +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + + + + + +extern int getchar (void); + +# 550 "/usr/include/stdio.h" 3 4 +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); +# 561 "/usr/include/stdio.h" 3 4 +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); + +# 594 "/usr/include/stdio.h" 3 4 +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) + __attribute__ ((__warn_unused_result__)); +# 640 "/usr/include/stdio.h" 3 4 + +# 649 "/usr/include/stdio.h" 3 4 +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +# 665 "/usr/include/stdio.h" 3 4 +extern __ssize_t __getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +extern __ssize_t getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); + + + + + + + +extern __ssize_t getline (char **__restrict __lineptr, + size_t *__restrict __n, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); + + + + + + + + +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) __attribute__ ((__warn_unused_result__)); + + + + +extern size_t fwrite (const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __s); + +# 726 "/usr/include/stdio.h" 3 4 +extern int fputs_unlocked (const char *__restrict __s, + FILE *__restrict __stream); +# 737 "/usr/include/stdio.h" 3 4 +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +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) __attribute__ ((__warn_unused_result__)); + + + + +extern void rewind (FILE *__stream); + +# 781 "/usr/include/stdio.h" 3 4 +extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") + + ; +extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64"); + + + + + + + + +# 806 "/usr/include/stdio.h" 3 4 +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") + ; +extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") + ; + + + + + + + + +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); + + + + +extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); + +extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + +extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); +extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + + + +extern void perror (const char *__s); + + + + + + +# 1 "/usr/include/bits/sys_errlist.h" 1 3 4 +# 26 "/usr/include/bits/sys_errlist.h" 3 4 +extern int sys_nerr; +extern const char *const sys_errlist[]; + + +extern int _sys_nerr; +extern const char *const _sys_errlist[]; +# 854 "/usr/include/stdio.h" 2 3 4 + + + + +extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +# 873 "/usr/include/stdio.h" 3 4 +extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__warn_unused_result__)); + + + + + +extern int pclose (FILE *__stream); + + + + + +extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern char *cuserid (char *__s); + + + + +struct obstack; + + +extern int obstack_printf (struct obstack *__restrict __obstack, + const char *__restrict __format, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); +extern int obstack_vprintf (struct obstack *__restrict __obstack, + const char *__restrict __format, + __gnuc_va_list __args) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); + + + + + + + +extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + +extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); +# 934 "/usr/include/stdio.h" 3 4 +# 1 "/usr/include/bits/stdio.h" 1 3 4 +# 43 "/usr/include/bits/stdio.h" 3 4 +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__)) __ssize_t +getline (char **__lineptr, size_t *__n, FILE *__stream) +{ + return __getdelim (__lineptr, __n, '\n', __stream); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) feof_unlocked (FILE *__stream) +{ + return (((__stream)->_flags & 0x10) != 0); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) ferror_unlocked (FILE *__stream) +{ + return (((__stream)->_flags & 0x20) != 0); +} +# 935 "/usr/include/stdio.h" 2 3 4 + + +# 1 "/usr/include/bits/stdio2.h" 1 3 4 +# 23 "/usr/include/bits/stdio2.h" 3 4 +extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, + const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)); +extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, + const char *__restrict __format, + __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__)); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) +{ + return __builtin___sprintf_chk (__s, 2 - 1, + __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); +} + + + + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) + +{ + return __builtin___vsprintf_chk (__s, 2 - 1, + __builtin_object_size (__s, 2 > 1), __fmt, __ap); +} + + + +extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, + size_t __slen, const char *__restrict __format, + ...) __attribute__ ((__nothrow__ , __leaf__)); +extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, + size_t __slen, const char *__restrict __format, + __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__)); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) + +{ + return __builtin___snprintf_chk (__s, __n, 2 - 1, + __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); +} + + + + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) + +{ + return __builtin___vsnprintf_chk (__s, __n, 2 - 1, + __builtin_object_size (__s, 2 > 1), __fmt, __ap); +} + + + + + +extern int __fprintf_chk (FILE *__restrict __stream, int __flag, + const char *__restrict __format, ...); +extern int __printf_chk (int __flag, const char *__restrict __format, ...); +extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, + const char *__restrict __format, __gnuc_va_list __ap); +extern int __vprintf_chk (int __flag, const char *__restrict __format, + __gnuc_va_list __ap); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) +{ + return __fprintf_chk (__stream, 2 - 1, __fmt, + __builtin_va_arg_pack ()); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +printf (const char *__restrict __fmt, ...) +{ + return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); +} + + + + + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) +{ + + return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); + + + +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +vfprintf (FILE *__restrict __stream, + const char *__restrict __fmt, __gnuc_va_list __ap) +{ + return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); +} + + +extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, + ...) __attribute__ ((__format__ (__printf__, 3, 4))); +extern int __vdprintf_chk (int __fd, int __flag, + const char *__restrict __fmt, __gnuc_va_list __arg) + __attribute__ ((__format__ (__printf__, 3, 0))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +dprintf (int __fd, const char *__restrict __fmt, ...) +{ + return __dprintf_chk (__fd, 2 - 1, __fmt, + __builtin_va_arg_pack ()); +} + + + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) +{ + return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); +} + + + + +extern int __asprintf_chk (char **__restrict __ptr, int __flag, + const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); +extern int __vasprintf_chk (char **__restrict __ptr, int __flag, + const char *__restrict __fmt, __gnuc_va_list __arg) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); +extern int __obstack_printf_chk (struct obstack *__restrict __obstack, + int __flag, const char *__restrict __format, + ...) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4))); +extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, + int __flag, + const char *__restrict __format, + __gnuc_va_list __args) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0))); + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) +{ + return __asprintf_chk (__ptr, 2 - 1, __fmt, + __builtin_va_arg_pack ()); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) + +{ + return __asprintf_chk (__ptr, 2 - 1, __fmt, + __builtin_va_arg_pack ()); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) + +{ + return __obstack_printf_chk (__obstack, 2 - 1, __fmt, + __builtin_va_arg_pack ()); +} +# 206 "/usr/include/bits/stdio2.h" 3 4 +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) + +{ + return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) + +{ + return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, + __ap); +} +# 241 "/usr/include/bits/stdio2.h" 3 4 +extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") + + __attribute__ ((__warn_unused_result__)); +extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +fgets (char *__restrict __s, int __n, FILE *__restrict __stream) +{ + if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__n) || __n <= 0) + return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); + + if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) + return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); + } + return __fgets_alias (__s, __n, __stream); +} + +extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, + size_t __size, size_t __n, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") + + + __attribute__ ((__warn_unused_result__)); +extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") + + + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t +fread (void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __stream) +{ + if (__builtin_object_size (__ptr, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__size) + || !__builtin_constant_p (__n) + || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) + return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); + + if (__size * __n > __builtin_object_size (__ptr, 0)) + return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); + } + return __fread_alias (__ptr, __size, __n, __stream); +} + + +extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, + int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") + + __attribute__ ((__warn_unused_result__)); +extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) +{ + if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__n) || __n <= 0) + return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); + + if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) + return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); + } + return __fgets_unlocked_alias (__s, __n, __stream); +} + + + + +extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, + size_t __size, size_t __n, + FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") + + + __attribute__ ((__warn_unused_result__)); +extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") + + + + + __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t +fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, + FILE *__restrict __stream) +{ + if (__builtin_object_size (__ptr, 0) != (size_t) -1) + { + if (!__builtin_constant_p (__size) + || !__builtin_constant_p (__n) + || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) + return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, + __stream); + + if (__size * __n > __builtin_object_size (__ptr, 0)) + return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, + __stream); + } + + + if (__builtin_constant_p (__size) + && __builtin_constant_p (__n) + && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) + && __size * __n <= 8) + { + size_t __cnt = __size * __n; + char *__cptr = (char *) __ptr; + if (__cnt == 0) + return 0; + + for (; __cnt > 0; --__cnt) + { + int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); + if (__c == (-1)) + break; + *__cptr++ = __c; + } + return (__cptr - (char *) __ptr) / __size; + } + + return __fread_unlocked_alias (__ptr, __size, __n, __stream); +} +# 938 "/usr/include/stdio.h" 2 3 4 + + + + + + +# 31 "include/libbb.h" 2 +# 1 "/usr/include/stdlib.h" 1 3 4 +# 32 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 324 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 3 4 +typedef unsigned int wchar_t; +# 33 "/usr/include/stdlib.h" 2 3 4 + + + + + + + + +# 1 "/usr/include/bits/waitflags.h" 1 3 4 +# 42 "/usr/include/stdlib.h" 2 3 4 +# 1 "/usr/include/bits/waitstatus.h" 1 3 4 +# 66 "/usr/include/bits/waitstatus.h" 3 4 +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; + }; +# 43 "/usr/include/stdlib.h" 2 3 4 +# 67 "/usr/include/stdlib.h" 3 4 +typedef union + { + union wait *__uptr; + int *__iptr; + } __WAIT_STATUS __attribute__ ((__transparent_union__)); +# 95 "/usr/include/stdlib.h" 3 4 + + +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; + + +# 139 "/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + +extern double atof (const char *__nptr) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern int atoi (const char *__nptr) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + +extern long int atol (const char *__nptr) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +__extension__ extern long long int atoll (const char *__nptr) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +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))); + +# 239 "/usr/include/stdlib.h" 3 4 +extern long int strtol_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); + +extern unsigned long int strtoul_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern long long int strtoll_l (const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); + +__extension__ +extern unsigned long long int strtoull_l (const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); + +extern double strtod_l (const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); + +extern float strtof_l (const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); + +extern long double strtold_l (const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); + + + + + +extern __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); +} + +# 305 "/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + +extern long int a64l (const char *__s) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 321 "/usr/include/stdlib.h" 3 4 +extern long int random (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int rand (void) __attribute__ ((__nothrow__ , __leaf__)); + +extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__)); +extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__)); +extern long int nrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__)); +extern long int jrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__)); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + __extension__ unsigned long long int __a; + + }; + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + + + +extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + +extern void *calloc (size_t __nmemb, size_t __size) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + + + + + + + + + + +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__)); + + + +# 1 "/usr/include/alloca.h" 1 3 4 +# 24 "/usr/include/alloca.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 25 "/usr/include/alloca.h" 2 3 4 + + + + + + + +extern void *alloca (size_t __size) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +# 493 "/usr/include/stdlib.h" 2 3 4 + + + + + +extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + +extern void *aligned_alloc (size_t __alignment, size_t __size) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); + + + + +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))) __attribute__ ((__warn_unused_result__)); + + + + + +extern char *secure_getenv (const char *__name) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + + +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__)); +# 606 "/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +# 623 "/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 645 "/usr/include/stdlib.h" 3 4 +extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int mkstemps64 (char *__template, int __suffixlen) + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 663 "/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 677 "/usr/include/stdlib.h" 3 4 +extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 698 "/usr/include/stdlib.h" 3 4 +extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") + + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + +extern int mkostemps64 (char *__template, int __suffixlen, int __flags) + __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); + + + + + + + + + +extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); + + + + + + +extern char *canonicalize_file_name (const char *__name) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +# 734 "/usr/include/stdlib.h" 3 4 +extern char *realpath (const char *__restrict __name, + char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + +typedef int (*__compar_fn_t) (const void *, const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + +typedef int (*__compar_d_fn_t) (const void *, const void *, void *); + + + + + +extern void *bsearch (const void *__key, const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); + + +# 1 "/usr/include/bits/stdlib-bsearch.h" 1 3 4 +# 19 "/usr/include/bits/stdlib-bsearch.h" 3 4 +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); +} +# 761 "/usr/include/stdlib.h" 2 3 4 + + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + +extern void qsort_r (void *__base, size_t __nmemb, size_t __size, + __compar_d_fn_t __compar, void *__arg) + __attribute__ ((__nonnull__ (1, 4))); + + + + +extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); + + + +__extension__ extern long long int llabs (long long int __x) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); + + + + + + + +extern div_t div (int __numer, int __denom) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +extern ldiv_t ldiv (long int __numer, long int __denom) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); + + + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); + +# 812 "/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); + + + + +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))) __attribute__ ((__warn_unused_result__)); +# 899 "/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *const *__restrict __tokens, + char **__restrict __valuep) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); + + + + + +extern void setkey (const char *__key) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); + + + + + + + +extern int grantpt (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int unlockpt (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern char *ptsname (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +# 1 "/usr/include/bits/stdlib-float.h" 1 3 4 +# 24 "/usr/include/bits/stdlib-float.h" 3 4 + +extern __inline __attribute__ ((__gnu_inline__)) double +__attribute__ ((__nothrow__ , __leaf__)) atof (const char *__nptr) +{ + return strtod (__nptr, (char **) ((void *)0)); +} + +# 956 "/usr/include/stdlib.h" 2 3 4 + + + +# 1 "/usr/include/bits/stdlib.h" 1 3 4 +# 23 "/usr/include/bits/stdlib.h" 3 4 +extern char *__realpath_chk (const char *__restrict __name, + char *__restrict __resolved, + size_t __resolvedlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__warn_unused_result__)); +extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__warn_unused_result__)) + __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +__attribute__ ((__nothrow__ , __leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) +{ + if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) + { + + if (__builtin_object_size (__resolved, 2 > 1) < 4096) + return __realpath_chk_warn (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); + + return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); + } + + return __realpath_alias (__name, __resolved); +} + + +extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, + size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); +extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (2))); +extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +__attribute__ ((__nothrow__ , __leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) +{ + if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__buflen)) + return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + if (__buflen > __builtin_object_size (__buf, 2 > 1)) + return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); + } + return __ptsname_r_alias (__fd, __buf, __buflen); +} + + +extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); +extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__warn_unused_result__)); + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int +__attribute__ ((__nothrow__ , __leaf__)) wctomb (char *__s, wchar_t __wchar) +{ + + + + + + + + if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) + return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); + return __wctomb_alias (__s, __wchar); +} + + +extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, + const char *__restrict __src, + size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__)); +extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__ , __leaf__)) + + + ; +extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +__attribute__ ((__nothrow__ , __leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) + +{ + if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__len)) + return __mbstowcs_chk (__dst, __src, __len, + __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); + + if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) + return __mbstowcs_chk_warn (__dst, __src, __len, + __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); + } + return __mbstowcs_alias (__dst, __src, __len); +} + + +extern size_t __wcstombs_chk (char *__restrict __dst, + const wchar_t *__restrict __src, + size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__)); +extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__ , __leaf__)) + + + ; +extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__ , __leaf__)) + + + + __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +__attribute__ ((__nothrow__ , __leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) + +{ + if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) + { + if (!__builtin_constant_p (__len)) + return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); + if (__len > __builtin_object_size (__dst, 2 > 1)) + return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); + } + return __wcstombs_alias (__dst, __src, __len); +} +# 960 "/usr/include/stdlib.h" 2 3 4 +# 968 "/usr/include/stdlib.h" 3 4 + +# 32 "include/libbb.h" 2 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stdarg.h" 1 3 4 +# 33 "include/libbb.h" 2 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 147 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 3 4 +typedef int ptrdiff_t; +# 34 "include/libbb.h" 2 +# 1 "/usr/include/string.h" 1 3 4 +# 27 "/usr/include/string.h" 3 4 + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 33 "/usr/include/string.h" 2 3 4 +# 44 "/usr/include/string.h" 3 4 + + +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))); +# 96 "/usr/include/string.h" 3 4 +extern void *memchr (const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +# 110 "/usr/include/string.h" 3 4 +extern void *rawmemchr (const void *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 121 "/usr/include/string.h" 3 4 +extern void *memrchr (const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strcpy (char *__restrict __dest, const char *__restrict __src) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, const char *__restrict __src) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, const char *__restrict __src, + size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (const char *__s1, const char *__s2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (const char *__s1, const char *__s2, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (const char *__s1, const char *__s2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + +# 166 "/usr/include/string.h" 3 4 +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))); +# 211 "/usr/include/string.h" 3 4 + +# 236 "/usr/include/string.h" 3 4 +extern char *strchr (const char *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 263 "/usr/include/string.h" 3 4 +extern char *strrchr (const char *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +# 277 "/usr/include/string.h" 3 4 +extern char *strchrnul (const char *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern size_t strcspn (const char *__s, const char *__reject) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (const char *__s, const char *__accept) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 315 "/usr/include/string.h" 3 4 +extern char *strpbrk (const char *__s, const char *__accept) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 342 "/usr/include/string.h" 3 4 +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))); +# 373 "/usr/include/string.h" 3 4 +extern char *strcasestr (const char *__haystack, const char *__needle) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + +extern void *memmem (const void *__haystack, size_t __haystacklen, + const void *__needle, size_t __needlelen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern size_t strlen (const char *__s) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strnlen (const char *__string, size_t __maxlen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__)); + +# 438 "/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); + + + + + +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))); +# 489 "/usr/include/string.h" 3 4 +extern char *index (const char *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 517 "/usr/include/string.h" 3 4 +extern char *rindex (const char *__s, int __c) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + + + +extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +__extension__ extern int ffsll (long long int __ll) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + + +extern int strcasecmp (const char *__s1, const char *__s2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int strcasecmp_l (const char *__s1, const char *__s2, + __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern int strncasecmp_l (const char *__s1, const char *__s2, + size_t __n, __locale_t __loc) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + + + + +extern char *strsep (char **__restrict __stringp, + const char *__restrict __delim) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__)); + + +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (const char *__s1, const char *__s2) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +# 604 "/usr/include/string.h" 3 4 +extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +# 632 "/usr/include/string.h" 3 4 +# 1 "/usr/include/bits/string.h" 1 3 4 +# 633 "/usr/include/string.h" 2 3 4 + + +# 1 "/usr/include/bits/string2.h" 1 3 4 +# 79 "/usr/include/bits/string2.h" 3 4 +typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2; +typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3; +typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4; +typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5; +typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6; +typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7; +typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8; +# 393 "/usr/include/bits/string2.h" 3 4 +extern void *__rawmemchr (const void *__s, int __c); +# 945 "/usr/include/bits/string2.h" 3 4 +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; +} +# 1021 "/usr/include/bits/string2.h" 3 4 +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; +} +# 1097 "/usr/include/bits/string2.h" 3 4 +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; +} +# 1147 "/usr/include/bits/string2.h" 3 4 +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; +} +# 1179 "/usr/include/bits/string2.h" 3 4 +extern char *__strsep_g (char **__stringp, const char *__delim); +# 1197 "/usr/include/bits/string2.h" 3 4 +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; +} +# 1278 "/usr/include/bits/string2.h" 3 4 +extern char *__strdup (const char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)); +# 1297 "/usr/include/bits/string2.h" 3 4 +extern char *__strndup (const char *__string, size_t __n) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)); +# 636 "/usr/include/string.h" 2 3 4 + + + + +# 1 "/usr/include/bits/string3.h" 1 3 4 +# 22 "/usr/include/bits/string3.h" 3 4 +extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters"))) + ; +# 47 "/usr/include/bits/string3.h" 3 4 +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +__attribute__ ((__nothrow__ , __leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) + +{ + return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +__attribute__ ((__nothrow__ , __leaf__)) memmove (void *__dest, const void *__src, size_t __len) +{ + return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +__attribute__ ((__nothrow__ , __leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) + +{ + return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); +} +# 75 "/usr/include/bits/string3.h" 3 4 +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +__attribute__ ((__nothrow__ , __leaf__)) memset (void *__dest, int __ch, size_t __len) +{ + if (__builtin_constant_p (__len) && __len == 0 + && (!__builtin_constant_p (__ch) || __ch != 0)) + { + __warn_memset_zero_len (); + return __dest; + } + return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +__attribute__ ((__nothrow__ , __leaf__)) bcopy (const void *__src, void *__dest, size_t __len) +{ + (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); +} + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +__attribute__ ((__nothrow__ , __leaf__)) bzero (void *__dest, size_t __len) +{ + (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) +{ + return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) +{ + return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +} + + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) + +{ + return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); +} + + +extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, + size_t __destlen) __attribute__ ((__nothrow__ , __leaf__)); +extern char *__stpncpy_alias (char *__dest, const char *__src, size_t __n) __asm__ ("" "stpncpy") __attribute__ ((__nothrow__ , __leaf__)) + ; + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) +{ + if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 + && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1))) + return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); + return __stpncpy_alias (__dest, __src, __n); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) +{ + return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +} + + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +__attribute__ ((__nothrow__ , __leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) + +{ + return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); +} +# 641 "/usr/include/string.h" 2 3 4 + + + + +# 35 "include/libbb.h" 2 + + +# 1 "/usr/include/libgen.h" 1 3 4 +# 23 "/usr/include/libgen.h" 3 4 + + + +extern char *dirname (char *__path) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern char *__xpg_basename (char *__path) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 38 "include/libbb.h" 2 + + +# 1 "/usr/include/sys/poll.h" 1 3 4 +# 25 "/usr/include/sys/poll.h" 3 4 +# 1 "/usr/include/bits/poll.h" 1 3 4 +# 26 "/usr/include/sys/poll.h" 2 3 4 + + +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 29 "/usr/include/sys/poll.h" 2 3 4 + + +# 1 "/usr/include/time.h" 1 3 4 +# 32 "/usr/include/sys/poll.h" 2 3 4 + + + + +typedef unsigned long int nfds_t; + + +struct pollfd + { + int fd; + short int events; + short int revents; + }; + + + +# 57 "/usr/include/sys/poll.h" 3 4 +extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout); +# 66 "/usr/include/sys/poll.h" 3 4 +extern int ppoll (struct pollfd *__fds, nfds_t __nfds, + const struct timespec *__timeout, + const __sigset_t *__ss); + + + + + + + +# 1 "/usr/include/bits/poll2.h" 1 3 4 +# 24 "/usr/include/bits/poll2.h" 3 4 + + +extern int __poll_alias (struct pollfd *__fds, nfds_t __nfds, int __timeout) __asm__ ("" "poll") + ; +extern int __poll_chk (struct pollfd *__fds, nfds_t __nfds, int __timeout, + unsigned int __fdslen); +extern int __poll_chk_warn (struct pollfd *__fds, nfds_t __nfds, int __timeout, unsigned int __fdslen) __asm__ ("" "__poll_chk") + + + __attribute__((__warning__ ("poll called with fds buffer too small file nfds entries"))); + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +poll (struct pollfd *__fds, nfds_t __nfds, int __timeout) +{ + if (__builtin_object_size (__fds, 2 > 1) != (unsigned int) -1) + { + if (! __builtin_constant_p (__nfds)) + return __poll_chk (__fds, __nfds, __timeout, __builtin_object_size (__fds, 2 > 1)); + else if (__builtin_object_size (__fds, 2 > 1) / sizeof (*__fds) < __nfds) + return __poll_chk_warn (__fds, __nfds, __timeout, __builtin_object_size (__fds, 2 > 1)); + } + + return __poll_alias (__fds, __nfds, __timeout); +} + + + +extern int __ppoll_alias (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout, const __sigset_t *__ss) __asm__ ("" "ppoll") + + ; +extern int __ppoll_chk (struct pollfd *__fds, nfds_t __nfds, + const struct timespec *__timeout, + const __sigset_t *__ss, unsigned int __fdslen); +extern int __ppoll_chk_warn (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout, const __sigset_t *__ss, unsigned int __fdslen) __asm__ ("" "__ppoll_chk") + + + + + __attribute__((__warning__ ("ppoll called with fds buffer too small file nfds entries"))); + +extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout, + const __sigset_t *__ss) +{ + if (__builtin_object_size (__fds, 2 > 1) != (unsigned int) -1) + { + if (! __builtin_constant_p (__nfds)) + return __ppoll_chk (__fds, __nfds, __timeout, __ss, __builtin_object_size (__fds, 2 > 1)); + else if (__builtin_object_size (__fds, 2 > 1) / sizeof (*__fds) < __nfds) + return __ppoll_chk_warn (__fds, __nfds, __timeout, __ss, + __builtin_object_size (__fds, 2 > 1)); + } + + return __ppoll_alias (__fds, __nfds, __timeout, __ss); +} + + + +# 77 "/usr/include/sys/poll.h" 2 3 4 +# 41 "include/libbb.h" 2 +# 1 "/usr/include/sys/ioctl.h" 1 3 4 +# 23 "/usr/include/sys/ioctl.h" 3 4 + + + +# 1 "/usr/include/bits/ioctls.h" 1 3 4 +# 23 "/usr/include/bits/ioctls.h" 3 4 +# 1 "/usr/include/asm/ioctls.h" 1 3 4 + + + + + +# 1 "/usr/include/asm-generic/ioctls.h" 1 3 4 + + + +# 1 "/usr/include/linux/ioctl.h" 1 3 4 + + + +# 1 "/usr/include/asm/ioctl.h" 1 3 4 +# 1 "/usr/include/asm-generic/ioctl.h" 1 3 4 +# 1 "/usr/include/asm/ioctl.h" 2 3 4 +# 5 "/usr/include/linux/ioctl.h" 2 3 4 +# 5 "/usr/include/asm-generic/ioctls.h" 2 3 4 +# 7 "/usr/include/asm/ioctls.h" 2 3 4 +# 24 "/usr/include/bits/ioctls.h" 2 3 4 +# 27 "/usr/include/sys/ioctl.h" 2 3 4 + + +# 1 "/usr/include/bits/ioctl-types.h" 1 3 4 +# 27 "/usr/include/bits/ioctl-types.h" 3 4 +struct winsize + { + unsigned short int ws_row; + unsigned short int ws_col; + unsigned short int ws_xpixel; + unsigned short int ws_ypixel; + }; + + +struct termio + { + unsigned short int c_iflag; + unsigned short int c_oflag; + unsigned short int c_cflag; + unsigned short int c_lflag; + unsigned char c_line; + unsigned char c_cc[8]; +}; +# 30 "/usr/include/sys/ioctl.h" 2 3 4 + + + + + + +# 1 "/usr/include/sys/ttydefaults.h" 1 3 4 +# 37 "/usr/include/sys/ioctl.h" 2 3 4 + + + + +extern int ioctl (int __fd, unsigned long int __request, ...) __attribute__ ((__nothrow__ , __leaf__)); + + +# 42 "include/libbb.h" 2 +# 1 "/usr/include/sys/mman.h" 1 3 4 +# 25 "/usr/include/sys/mman.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 26 "/usr/include/sys/mman.h" 2 3 4 +# 41 "/usr/include/sys/mman.h" 3 4 +# 1 "/usr/include/bits/mman.h" 1 3 4 +# 40 "/usr/include/bits/mman.h" 3 4 +# 1 "/usr/include/bits/mman-linux.h" 1 3 4 +# 40 "/usr/include/bits/mman.h" 2 3 4 +# 42 "/usr/include/sys/mman.h" 2 3 4 + + + + + +# 61 "/usr/include/sys/mman.h" 3 4 +extern void * mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) __asm__ ("" "mmap64") __attribute__ ((__nothrow__ , __leaf__)) + + + ; + + + + + +extern void *mmap64 (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int munmap (void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int mprotect (void *__addr, size_t __len, int __prot) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern int msync (void *__addr, size_t __len, int __flags); + + + + +extern int madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int posix_madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int mlock (const void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int munlock (const void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int mlockall (int __flags) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int munlockall (void) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern int mincore (void *__start, size_t __len, unsigned char *__vec) + __attribute__ ((__nothrow__ , __leaf__)); +# 133 "/usr/include/sys/mman.h" 3 4 +extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, + int __flags, ...) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int remap_file_pages (void *__start, size_t __size, int __prot, + size_t __pgoff, int __flags) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int shm_open (const char *__name, int __oflag, mode_t __mode); + + +extern int shm_unlink (const char *__name); + + +# 43 "include/libbb.h" 2 + +# 1 "/usr/include/sys/stat.h" 1 3 4 +# 37 "/usr/include/sys/stat.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 38 "/usr/include/sys/stat.h" 2 3 4 +# 103 "/usr/include/sys/stat.h" 3 4 + + +# 1 "/usr/include/bits/stat.h" 1 3 4 +# 106 "/usr/include/sys/stat.h" 2 3 4 +# 217 "/usr/include/sys/stat.h" 3 4 +extern int stat (const char *__restrict __file, struct stat *__restrict __buf) __asm__ ("" "stat64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (1, 2))); +extern int fstat (int __fd, struct stat *__buf) __asm__ ("" "fstat64") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__nonnull__ (2))); + + + + + + +extern int stat64 (const char *__restrict __file, + struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); +# 243 "/usr/include/sys/stat.h" 3 4 +extern int fstatat (int __fd, const char *__restrict __file, struct stat *__restrict __buf, int __flag) __asm__ ("" "fstatat64") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (2, 3))); + + + + + + +extern int fstatat64 (int __fd, const char *__restrict __file, + struct stat64 *__restrict __buf, int __flag) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); +# 267 "/usr/include/sys/stat.h" 3 4 +extern int lstat (const char *__restrict __file, struct stat *__restrict __buf) __asm__ ("" "lstat64") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int lstat64 (const char *__restrict __file, + struct stat64 *__restrict __buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int chmod (const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int lchmod (const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int fchmodat (int __fd, const char *__file, __mode_t __mode, + int __flag) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); + + + + + + +extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern __mode_t getumask (void) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int mkdir (const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkdirat (int __fd, const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + + + + +extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mknodat (int __fd, const char *__path, __mode_t __mode, + __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + + + +extern int mkfifo (const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkfifoat (int __fd, const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + + + +extern int utimensat (int __fd, const char *__path, + const struct timespec __times[2], + int __flags) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + + +extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__)); +# 410 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) __asm__ ("" "__fxstat64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (3))); +extern int __xstat (int __ver, const char *__filename, struct stat *__stat_buf) __asm__ ("" "__xstat64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat (int __ver, const char *__filename, struct stat *__stat_buf) __asm__ ("" "__lxstat64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat (int __ver, int __fildes, const char *__filename, struct stat *__stat_buf, int __flag) __asm__ ("" "__fxstatat64") __attribute__ ((__nothrow__ , __leaf__)) + + + __attribute__ ((__nonnull__ (3, 4))); +# 432 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); +extern int __xstat64 (int __ver, const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat64 (int __ver, const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat64 (int __ver, int __fildes, const char *__filename, + struct stat64 *__stat_buf, int __flag) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))); + +extern int __xmknod (int __ver, const char *__path, __mode_t __mode, + __dev_t *__dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int __xmknodat (int __ver, int __fd, const char *__path, + __mode_t __mode, __dev_t *__dev) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 5))); + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) stat (const char *__path, struct stat *__statbuf) +{ + return __xstat (3, __path, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) lstat (const char *__path, struct stat *__statbuf) +{ + return __lxstat (3, __path, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) fstat (int __fd, struct stat *__statbuf) +{ + return __fxstat (3, __fd, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) fstatat (int __fd, const char *__filename, struct stat *__statbuf, int __flag) + +{ + return __fxstatat (3, __fd, __filename, __statbuf, __flag); +} + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) mknod (const char *__path, __mode_t __mode, __dev_t __dev) +{ + return __xmknod (1, __path, __mode, &__dev); +} + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) mknodat (int __fd, const char *__path, __mode_t __mode, __dev_t __dev) + +{ + return __xmknodat (1, __fd, __path, __mode, &__dev); +} + + + + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) stat64 (const char *__path, struct stat64 *__statbuf) +{ + return __xstat64 (3, __path, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) lstat64 (const char *__path, struct stat64 *__statbuf) +{ + return __lxstat64 (3, __path, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) fstat64 (int __fd, struct stat64 *__statbuf) +{ + return __fxstat64 (3, __fd, __statbuf); +} + + +extern __inline __attribute__ ((__gnu_inline__)) int +__attribute__ ((__nothrow__ , __leaf__)) fstatat64 (int __fd, const char *__filename, struct stat64 *__statbuf, int __flag) + +{ + return __fxstatat64 (3, __fd, __filename, __statbuf, __flag); +} + + + + + + + +# 45 "include/libbb.h" 2 +# 1 "/usr/include/sys/time.h" 1 3 4 +# 25 "/usr/include/sys/time.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 26 "/usr/include/sys/time.h" 2 3 4 + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 28 "/usr/include/sys/time.h" 2 3 4 +# 37 "/usr/include/sys/time.h" 3 4 + +# 55 "/usr/include/sys/time.h" 3 4 +struct timezone + { + int tz_minuteswest; + int tz_dsttime; + }; + +typedef struct timezone *__restrict __timezone_ptr_t; +# 71 "/usr/include/sys/time.h" 3 4 +extern int gettimeofday (struct timeval *__restrict __tv, + __timezone_ptr_t __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int settimeofday (const struct timeval *__tv, + const struct timezone *__tz) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int adjtime (const struct timeval *__delta, + struct timeval *__olddelta) __attribute__ ((__nothrow__ , __leaf__)); + + + + +enum __itimer_which + { + + ITIMER_REAL = 0, + + + ITIMER_VIRTUAL = 1, + + + + ITIMER_PROF = 2 + + }; + + + +struct itimerval + { + + struct timeval it_interval; + + struct timeval it_value; + }; + + + + +typedef enum __itimer_which __itimer_which_t; + + + + + + +extern int getitimer (__itimer_which_t __which, + struct itimerval *__value) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int setitimer (__itimer_which_t __which, + const struct itimerval *__restrict __new, + struct itimerval *__restrict __old) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int utimes (const char *__file, const struct timeval __tvp[2]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + + +extern int lutimes (const char *__file, const struct timeval __tvp[2]) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); + + +extern int futimes (int __fd, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int futimesat (int __fd, const char *__file, + const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)); +# 189 "/usr/include/sys/time.h" 3 4 + +# 46 "include/libbb.h" 2 + + + + +# 1 "/usr/include/sys/wait.h" 1 3 4 +# 27 "/usr/include/sys/wait.h" 3 4 + +# 99 "/usr/include/sys/wait.h" 3 4 +typedef enum +{ + P_ALL, + P_PID, + P_PGID +} idtype_t; +# 113 "/usr/include/sys/wait.h" 3 4 +extern __pid_t wait (__WAIT_STATUS __stat_loc); +# 136 "/usr/include/sys/wait.h" 3 4 +extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options); +# 146 "/usr/include/sys/wait.h" 3 4 +# 1 "/usr/include/bits/siginfo.h" 1 3 4 +# 24 "/usr/include/bits/siginfo.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 25 "/usr/include/bits/siginfo.h" 2 3 4 +# 147 "/usr/include/sys/wait.h" 2 3 4 +# 159 "/usr/include/sys/wait.h" 3 4 +extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop, + int __options); + + + + + +struct rusage; + + + + + + +extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options, + struct rusage * __usage) __attribute__ ((__nothrow__)); + + + + +extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, + struct rusage *__usage) __attribute__ ((__nothrow__)); + + + + +# 51 "include/libbb.h" 2 +# 1 "/usr/include/termios.h" 1 3 4 +# 35 "/usr/include/termios.h" 3 4 + + + + +# 1 "/usr/include/bits/termios.h" 1 3 4 +# 23 "/usr/include/bits/termios.h" 3 4 +typedef unsigned char cc_t; +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; + + +struct termios + { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[32]; + speed_t c_ispeed; + speed_t c_ospeed; + + + }; +# 40 "/usr/include/termios.h" 2 3 4 +# 48 "/usr/include/termios.h" 3 4 +extern speed_t cfgetospeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__)); + + +extern speed_t cfgetispeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int cfsetispeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int cfsetspeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int tcgetattr (int __fd, struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int tcsetattr (int __fd, int __optional_actions, + const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern void cfmakeraw (struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int tcsendbreak (int __fd, int __duration) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int tcdrain (int __fd); + + + +extern int tcflush (int __fd, int __queue_selector) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int tcflow (int __fd, int __action) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern __pid_t tcgetsid (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + + +# 1 "/usr/include/sys/ttydefaults.h" 1 3 4 +# 105 "/usr/include/termios.h" 2 3 4 + + + +# 52 "include/libbb.h" 2 +# 1 "/usr/include/time.h" 1 3 4 +# 29 "/usr/include/time.h" 3 4 + + + + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 38 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 86 "/usr/include/bits/time.h" 3 4 +# 1 "/usr/include/bits/timex.h" 1 3 4 +# 25 "/usr/include/bits/timex.h" 3 4 +struct timex +{ + unsigned int modes; + __syscall_slong_t offset; + __syscall_slong_t freq; + __syscall_slong_t maxerror; + __syscall_slong_t esterror; + int status; + __syscall_slong_t constant; + __syscall_slong_t precision; + __syscall_slong_t tolerance; + struct timeval time; + __syscall_slong_t tick; + __syscall_slong_t ppsfreq; + __syscall_slong_t jitter; + int shift; + __syscall_slong_t stabil; + __syscall_slong_t jitcnt; + __syscall_slong_t calcnt; + __syscall_slong_t errcnt; + __syscall_slong_t stbcnt; + + int tai; + + + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; +}; +# 87 "/usr/include/bits/time.h" 2 3 4 + + + + +extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__)); + + +# 42 "/usr/include/time.h" 2 3 4 +# 131 "/usr/include/time.h" 3 4 + + +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + + + long int tm_gmtoff; + const char *tm_zone; + + + + +}; + + + + + + + + +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; + + +struct sigevent; +# 186 "/usr/include/time.h" 3 4 + + + +extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); + + +extern double difftime (time_t __time1, time_t __time0) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern char *strptime (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + const char *__restrict __format, + const struct tm *__restrict __tp, + __locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char *strptime_l (const char *__restrict __s, + const char *__restrict __fmt, struct tm *__tp, + __locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern struct tm *gmtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct tm *localtime_r (const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); + + +extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); + + + + + + + +extern char *asctime_r (const struct tm *__restrict __tp, + char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); + + +extern char *ctime_r (const time_t *__restrict __timer, + char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (const time_t *__when) __attribute__ ((__nothrow__ , __leaf__)); +# 319 "/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); + + +extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int dysize (int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); +# 334 "/usr/include/time.h" 3 4 +extern int nanosleep (const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + const struct timespec *__req, + struct timespec *__rem); + + +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int timer_settime (timer_t __timerid, int __flags, + const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__)); + + + + + +extern int timespec_get (struct timespec *__ts, int __base) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); +# 403 "/usr/include/time.h" 3 4 +extern int getdate_err; +# 412 "/usr/include/time.h" 3 4 +extern struct tm *getdate (const char *__string); +# 426 "/usr/include/time.h" 3 4 +extern int getdate_r (const char *__restrict __string, + struct tm *__restrict __resbufp); + + + +# 53 "include/libbb.h" 2 +# 1 "/usr/include/sys/param.h" 1 3 4 +# 23 "/usr/include/sys/param.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 24 "/usr/include/sys/param.h" 2 3 4 + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include-fixed/limits.h" 1 3 4 +# 27 "/usr/include/sys/param.h" 2 3 4 + + + + +# 1 "/usr/include/bits/param.h" 1 3 4 +# 28 "/usr/include/bits/param.h" 3 4 +# 1 "/usr/include/linux/param.h" 1 3 4 + + + +# 1 "/usr/include/asm/param.h" 1 3 4 +# 1 "/usr/include/asm-generic/param.h" 1 3 4 +# 1 "/usr/include/asm/param.h" 2 3 4 +# 5 "/usr/include/linux/param.h" 2 3 4 +# 29 "/usr/include/bits/param.h" 2 3 4 +# 32 "/usr/include/sys/param.h" 2 3 4 +# 54 "include/libbb.h" 2 +# 1 "/usr/include/pwd.h" 1 3 4 +# 27 "/usr/include/pwd.h" 3 4 + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 33 "/usr/include/pwd.h" 2 3 4 +# 49 "/usr/include/pwd.h" 3 4 +struct passwd +{ + char *pw_name; + char *pw_passwd; + __uid_t pw_uid; + __gid_t pw_gid; + char *pw_gecos; + char *pw_dir; + char *pw_shell; +}; +# 72 "/usr/include/pwd.h" 3 4 +extern void setpwent (void); + + + + + +extern void endpwent (void); + + + + + +extern struct passwd *getpwent (void); +# 94 "/usr/include/pwd.h" 3 4 +extern struct passwd *fgetpwent (FILE *__stream); + + + + + + + +extern int putpwent (const struct passwd *__restrict __p, + FILE *__restrict __f); + + + + + + +extern struct passwd *getpwuid (__uid_t __uid); + + + + + +extern struct passwd *getpwnam (const char *__name); +# 139 "/usr/include/pwd.h" 3 4 +extern int getpwent_r (struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + + +extern int getpwuid_r (__uid_t __uid, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + +extern int getpwnam_r (const char *__restrict __name, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); +# 163 "/usr/include/pwd.h" 3 4 +extern int fgetpwent_r (FILE *__restrict __stream, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); +# 180 "/usr/include/pwd.h" 3 4 +extern int getpw (__uid_t __uid, char *__buffer); + + + +# 55 "include/libbb.h" 2 +# 1 "/usr/include/grp.h" 1 3 4 +# 27 "/usr/include/grp.h" 3 4 + + + + + +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 33 "/usr/include/grp.h" 2 3 4 +# 42 "/usr/include/grp.h" 3 4 +struct group + { + char *gr_name; + char *gr_passwd; + __gid_t gr_gid; + char **gr_mem; + }; +# 62 "/usr/include/grp.h" 3 4 +extern void setgrent (void); +# 71 "/usr/include/grp.h" 3 4 +extern void endgrent (void); + + + + + +extern struct group *getgrent (void); +# 87 "/usr/include/grp.h" 3 4 +extern struct group *fgetgrent (FILE *__stream); +# 97 "/usr/include/grp.h" 3 4 +extern int putgrent (const struct group *__restrict __p, + FILE *__restrict __f); + + + + + + +extern struct group *getgrgid (__gid_t __gid); + + + + + +extern struct group *getgrnam (const char *__name); +# 135 "/usr/include/grp.h" 3 4 +extern int getgrent_r (struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + + + + + +extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + + + + +extern int getgrnam_r (const char *__restrict __name, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); +# 165 "/usr/include/grp.h" 3 4 +extern int fgetgrent_r (FILE *__restrict __stream, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); +# 177 "/usr/include/grp.h" 3 4 +# 1 "/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.8.3/include/stddef.h" 1 3 4 +# 178 "/usr/include/grp.h" 2 3 4 + + +extern int setgroups (size_t __n, const __gid_t *__groups) __attribute__ ((__nothrow__ , __leaf__)); +# 190 "/usr/include/grp.h" 3 4 +extern int getgrouplist (const char *__user, __gid_t __group, + __gid_t *__groups, int *__ngroups); +# 201 "/usr/include/grp.h" 3 4 +extern int initgroups (const char *__user, __gid_t __group); + + + + +# 56 "include/libbb.h" 2 +# 69 "include/libbb.h" +# 1 "/usr/include/mntent.h" 1 3 4 +# 25 "/usr/include/mntent.h" 3 4 +# 1 "/usr/include/paths.h" 1 3 4 +# 26 "/usr/include/mntent.h" 2 3 4 +# 50 "/usr/include/mntent.h" 3 4 + + + +struct mntent + { + char *mnt_fsname; + char *mnt_dir; + char *mnt_type; + char *mnt_opts; + int mnt_freq; + int mnt_passno; + }; + + + + +extern FILE *setmntent (const char *__file, const char *__mode) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern struct mntent *getmntent (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct mntent *getmntent_r (FILE *__restrict __stream, + struct mntent *__restrict __result, + char *__restrict __buffer, + int __bufsize) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int addmntent (FILE *__restrict __stream, + const struct mntent *__restrict __mnt) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int endmntent (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char *hasmntopt (const struct mntent *__mnt, + const char *__opt) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 70 "include/libbb.h" 2 + + +# 1 "/usr/include/sys/statfs.h" 1 3 4 +# 25 "/usr/include/sys/statfs.h" 3 4 +# 1 "/usr/include/bits/statfs.h" 1 3 4 +# 24 "/usr/include/bits/statfs.h" 3 4 +struct statfs + { + __fsword_t f_type; + __fsword_t f_bsize; + + + + + + + + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; + + __fsid_t f_fsid; + __fsword_t f_namelen; + __fsword_t f_frsize; + __fsword_t f_flags; + __fsword_t f_spare[4]; + }; + + +struct statfs64 + { + __fsword_t f_type; + __fsword_t f_bsize; + __fsblkcnt64_t f_blocks; + __fsblkcnt64_t f_bfree; + __fsblkcnt64_t f_bavail; + __fsfilcnt64_t f_files; + __fsfilcnt64_t f_ffree; + __fsid_t f_fsid; + __fsword_t f_namelen; + __fsword_t f_frsize; + __fsword_t f_flags; + __fsword_t f_spare[4]; + }; +# 26 "/usr/include/sys/statfs.h" 2 3 4 + + + + + + + + + +extern int statfs (const char *__file, struct statfs *__buf) __asm__ ("" "statfs64") __attribute__ ((__nothrow__ , __leaf__)) + + __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int statfs64 (const char *__file, struct statfs64 *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); +# 54 "/usr/include/sys/statfs.h" 3 4 +extern int fstatfs (int __fildes, struct statfs *__buf) __asm__ ("" "fstatfs64") __attribute__ ((__nothrow__ , __leaf__)) + __attribute__ ((__nonnull__ (2))); + + + + + +extern int fstatfs64 (int __fildes, struct statfs64 *__buf) + __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); + + + +# 73 "include/libbb.h" 2 +# 87 "include/libbb.h" +# 1 "/usr/include/utmp.h" 1 3 4 +# 26 "/usr/include/utmp.h" 3 4 + + + +# 1 "/usr/include/bits/utmp.h" 1 3 4 +# 26 "/usr/include/bits/utmp.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 27 "/usr/include/bits/utmp.h" 2 3 4 +# 36 "/usr/include/bits/utmp.h" 3 4 +struct lastlog + { + + + + __time_t ll_time; + + char ll_line[32]; + char ll_host[256]; + }; + + + + +struct exit_status + { + short int e_termination; + short int e_exit; + }; + + + +struct utmp +{ + short int ut_type; + pid_t ut_pid; + char ut_line[32]; + char ut_id[4]; + char ut_user[32]; + char ut_host[256]; + struct exit_status ut_exit; +# 79 "/usr/include/bits/utmp.h" 3 4 + long int ut_session; + struct timeval ut_tv; + + + int32_t ut_addr_v6[4]; + char __glibc_reserved[20]; +}; +# 30 "/usr/include/utmp.h" 2 3 4 +# 41 "/usr/include/utmp.h" 3 4 +extern int login_tty (int __fd) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern void login (const struct utmp *__entry) __attribute__ ((__nothrow__ , __leaf__)); + + +extern int logout (const char *__ut_line) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void logwtmp (const char *__ut_line, const char *__ut_name, + const char *__ut_host) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void updwtmp (const char *__wtmp_file, const struct utmp *__utmp) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern int utmpname (const char *__file) __attribute__ ((__nothrow__ , __leaf__)); + + +extern struct utmp *getutent (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void setutent (void) __attribute__ ((__nothrow__ , __leaf__)); + + +extern void endutent (void) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct utmp *getutid (const struct utmp *__id) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct utmp *getutline (const struct utmp *__line) __attribute__ ((__nothrow__ , __leaf__)); + + +extern struct utmp *pututline (const struct utmp *__utmp_ptr) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int getutent_r (struct utmp *__buffer, struct utmp **__result) __attribute__ ((__nothrow__ , __leaf__)); + +extern int getutid_r (const struct utmp *__id, struct utmp *__buffer, + struct utmp **__result) __attribute__ ((__nothrow__ , __leaf__)); + +extern int getutline_r (const struct utmp *__line, + struct utmp *__buffer, struct utmp **__result) __attribute__ ((__nothrow__ , __leaf__)); + + + + +# 88 "include/libbb.h" 2 +# 116 "include/libbb.h" +# 1 "/usr/include/arpa/inet.h" 1 3 4 +# 30 "/usr/include/arpa/inet.h" 3 4 + + + + +extern in_addr_t inet_addr (const char *__cp) __attribute__ ((__nothrow__ , __leaf__)); + + +extern in_addr_t inet_lnaof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host) + __attribute__ ((__nothrow__ , __leaf__)); + + +extern in_addr_t inet_netof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern in_addr_t inet_network (const char *__cp) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char *inet_ntoa (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int inet_pton (int __af, const char *__restrict __cp, + void *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern const char *inet_ntop (int __af, const void *__restrict __cp, + char *__restrict __buf, socklen_t __len) + __attribute__ ((__nothrow__ , __leaf__)); + + + + + + +extern int inet_aton (const char *__cp, struct in_addr *__inp) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern char *inet_net_ntop (int __af, const void *__cp, int __bits, + char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern int inet_net_pton (int __af, const char *__cp, + void *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); + + + + +extern unsigned int inet_nsap_addr (const char *__cp, + unsigned char *__buf, int __len) __attribute__ ((__nothrow__ , __leaf__)); + + + +extern char *inet_nsap_ntoa (int __len, const unsigned char *__cp, + char *__buf) __attribute__ ((__nothrow__ , __leaf__)); + + + +# 117 "include/libbb.h" 2 +# 139 "include/libbb.h" +extern char **environ; + + + + +int klogctl(int type, char *b, int len); +# 179 "include/libbb.h" + +# 179 "include/libbb.h" +#pragma GCC visibility push(hidden) +# 179 "include/libbb.h" + + + + +# 1 "include/pwd_.h" 1 +# 27 "include/pwd_.h" + +# 27 "include/pwd_.h" +#pragma GCC visibility push(hidden) +# 27 "include/pwd_.h" + +# 52 "include/pwd_.h" +extern void bb_internal_setpwent(void); + + +extern void bb_internal_endpwent(void); +# 70 "include/pwd_.h" +extern struct passwd *bb_internal_getpwuid(uid_t __uid); + + +extern struct passwd *bb_internal_getpwnam(const char *__name); +# 83 "include/pwd_.h" +extern int bb_internal_getpwent_r(struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + +extern int bb_internal_getpwuid_r(uid_t __uid, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + +extern int bb_internal_getpwnam_r(const char *__restrict __name, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + + + +extern int bb_internal_fgetpwent_r(FILE *__restrict __stream, + struct passwd *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct passwd **__restrict __result); + + +# 104 "include/pwd_.h" +#pragma GCC visibility pop +# 104 "include/pwd_.h" + +# 184 "include/libbb.h" 2 +# 1 "include/grp_.h" 1 +# 26 "include/grp_.h" + +# 26 "include/grp_.h" +#pragma GCC visibility push(hidden) +# 26 "include/grp_.h" + +# 53 "include/grp_.h" +extern void bb_internal_setgrent(void); + + +extern void bb_internal_endgrent(void); +# 71 "include/grp_.h" +extern struct group *bb_internal_getgrgid(gid_t __gid); + + +extern struct group *bb_internal_getgrnam(const char *__name); +# 84 "include/grp_.h" +extern int bb_internal_getgrent_r(struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + +extern int bb_internal_getgrgid_r(gid_t __gid, struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + +extern int bb_internal_getgrnam_r(const char *__restrict __name, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + + +extern int bb_internal_fgetgrent_r(FILE *__restrict __stream, + struct group *__restrict __resultbuf, + char *__restrict __buffer, size_t __buflen, + struct group **__restrict __result); + + + + +extern int bb_internal_getgrouplist(const char *__user, gid_t __group, + gid_t *__groups, int *__ngroups); + + + + +extern int bb_internal_initgroups(const char *__user, gid_t __group); + + +# 117 "include/grp_.h" +#pragma GCC visibility pop +# 117 "include/grp_.h" + +# 185 "include/libbb.h" 2 + + + +# 1 "include/shadow_.h" 1 +# 25 "include/shadow_.h" + +# 25 "include/shadow_.h" +#pragma GCC visibility push(hidden) +# 25 "include/shadow_.h" + + + +struct spwd { + char *sp_namp; + char *sp_pwdp; + long sp_lstchg; + long sp_min; + long sp_max; + long sp_warn; + long sp_inact; + long sp_expire; + unsigned long sp_flag; +}; +# 85 "include/shadow_.h" +extern int bb_internal_getspnam_r(const char *__name, struct spwd *__result_buf, + char *__buffer, size_t __buflen, + struct spwd **__result); +# 104 "include/shadow_.h" + +# 104 "include/shadow_.h" +#pragma GCC visibility pop +# 104 "include/shadow_.h" + +# 189 "include/libbb.h" 2 +# 226 "include/libbb.h" +typedef unsigned long long uoff_t; +# 255 "include/libbb.h" +struct BUG_off_t_size_is_misdetected { + char BUG_off_t_size_is_misdetected[sizeof(off_t) == sizeof(uoff_t) ? 1 : -1]; +}; +# 296 "include/libbb.h" +extern int *const bb_errno; + + + + + + +uint64_t bb_bswap_64(uint64_t x) ; + + +unsigned long long monotonic_ns(void) ; +unsigned long long monotonic_us(void) ; +unsigned long long monotonic_ms(void) ; +unsigned monotonic_sec(void) ; + +extern void chomp(char *s) ; +extern void trim(char *s) ; +extern char *skip_whitespace(const char *) ; +extern char *skip_non_whitespace(const char *) ; +extern char *skip_dev_pfx(const char *tty_name) ; + +extern char *strrstr(const char *haystack, const char *needle) ; + + +extern const char *bb_mode_string(mode_t mode) ; +extern int is_directory(const char *name, int followLinks) ; +enum { + FILEUTILS_PRESERVE_STATUS = 1 << 0, + FILEUTILS_DEREFERENCE = 1 << 1, + FILEUTILS_RECUR = 1 << 2, + FILEUTILS_FORCE = 1 << 3, + FILEUTILS_INTERACTIVE = 1 << 4, + FILEUTILS_MAKE_HARDLINK = 1 << 5, + FILEUTILS_MAKE_SOFTLINK = 1 << 6, + FILEUTILS_DEREF_SOFTLINK = 1 << 7, + FILEUTILS_DEREFERENCE_L0 = 1 << 8, + + + + + FILEUTILS_IGNORE_CHMOD_ERR = 1 << 11, +}; + +extern int remove_file(const char *path, int flags) ; + + + + +extern int copy_file(const char *source, const char *dest, int flags) ; + +enum { + ACTION_RECURSE = (1 << 0), + ACTION_FOLLOWLINKS = (1 << 1), + ACTION_FOLLOWLINKS_L0 = (1 << 2), + ACTION_DEPTHFIRST = (1 << 3), + + ACTION_QUIET = (1 << 5), + ACTION_DANGLING_OK = (1 << 6), +}; +typedef uint8_t recurse_flags_t; +extern int recursive_action(const char *fileName, unsigned flags, + int (*fileAction)(const char *fileName, struct stat* statbuf, void* userData, int depth), + int (*dirAction)(const char *fileName, struct stat* statbuf, void* userData, int depth), + void* userData, unsigned depth) ; +extern int device_open(const char *device, int mode) ; +enum { GETPTY_BUFSIZE = 16 }; +extern int xgetpty(char *line) ; +extern int get_console_fd_or_die(void) ; +extern void console_make_active(int fd, const int vt_num) ; +extern char *find_block_device(const char *path) ; + +extern off_t bb_copyfd_eof(int fd1, int fd2) ; +extern off_t bb_copyfd_size(int fd1, int fd2, off_t size) ; +extern void bb_copyfd_exact_size(int fd1, int fd2, off_t size) ; + + +extern void complain_copyfd_and_die(off_t sz) __attribute__ ((__noreturn__)) ; + +extern char bb_process_escape_sequence(const char **ptr) ; +char* strcpy_and_process_escape_sequences(char *dst, const char *src) ; + + + + + + +char *bb_get_last_path_component_strip(char *path) ; + +char *bb_get_last_path_component_nostrip(const char *path) ; + +const char *bb_basename(const char *name) ; + +char *last_char_is(const char *s, int c) ; + +void ndelay_on(int fd) ; +void ndelay_off(int fd) ; +void close_on_exec_on(int fd) ; +void xdup2(int, int) ; +void xmove_fd(int, int) ; + + +DIR *xopendir(const char *path) ; +DIR *warn_opendir(const char *path) ; + +char *xmalloc_realpath(const char *path) __attribute__ ((malloc)); +char *xmalloc_readlink(const char *path) __attribute__ ((malloc)); +char *xmalloc_readlink_or_warn(const char *path) __attribute__ ((malloc)); + +char *xrealloc_getcwd_or_warn(char *cwd) ; + +char *xmalloc_follow_symlinks(const char *path) __attribute__ ((malloc)); + + +enum { +# 424 "include/libbb.h" + BB_FATAL_SIGS = (int)(0 + + (1LL << 1) + + (1LL << 2) + + (1LL << 15) + + (1LL << 13) + + (1LL << 3) + + (1LL << 6) + + (1LL << 14) + + (1LL << 26) + + (1LL << 24) + + (1LL << 25) + + (1LL << 10) + + (1LL << 12) + + 0), +}; +void bb_signals(int sigs, void (*f)(int)) ; + + + +void bb_signals_recursive_norestart(int sigs, void (*f)(int)) ; + +void signal_no_SA_RESTART_empty_mask(int sig, void (*handler)(int)) ; + +void signal_SA_RESTART_empty_mask(int sig, void (*handler)(int)) ; +void wait_for_any_sig(void) ; +void kill_myself_with_sig(int sig) __attribute__ ((__noreturn__)) ; +void sig_block(int sig) ; +void sig_unblock(int sig) ; + +int sigaction_set(int sig, const struct sigaction *act) ; + +int sigprocmask_allsigs(int how) ; + +extern smallint bb_got_signal; +void record_signo(int signo); + + +void xsetgid(gid_t gid) ; +void xsetuid(uid_t uid) ; +void xchdir(const char *path) ; +void xchroot(const char *path) ; +void xsetenv(const char *key, const char *value) ; +void bb_unsetenv(const char *key) ; +void bb_unsetenv_and_free(char *key) ; +void xunlink(const char *pathname) ; +void xstat(const char *pathname, struct stat *buf) ; +void xfstat(int fd, struct stat *buf, const char *errmsg) ; +int xopen(const char *pathname, int flags) ; +int xopen_nonblocking(const char *pathname) ; +int xopen3(const char *pathname, int flags, int mode) ; +int open_or_warn(const char *pathname, int flags) ; +int open3_or_warn(const char *pathname, int flags, int mode) ; +int open_or_warn_stdin(const char *pathname) ; +int xopen_stdin(const char *pathname) ; +void xrename(const char *oldpath, const char *newpath) ; +int rename_or_warn(const char *oldpath, const char *newpath) ; +off_t xlseek(int fd, off_t offset, int whence) ; +int xmkstemp(char *template) ; +off_t fdlength(int fd) ; + +uoff_t get_volume_size_in_bytes(int fd, + const char *override, + unsigned override_units, + int extend); + +void xpipe(int filedes[2]) ; + +struct fd_pair { int rd; int wr; }; + + + + +typedef int8_t socktype_t; +typedef int8_t family_t; +struct BUG_too_small { + char BUG_socktype_t_too_small[(0 + | SOCK_STREAM + | SOCK_DGRAM + | SOCK_RDM + | SOCK_SEQPACKET + | SOCK_RAW + ) <= 127 ? 1 : -1]; + char BUG_family_t_too_small[(0 + | 0 + | 2 + | 10 + | 1 + + | 17 + + + | 16 + + + + ) <= 127 ? 1 : -1]; +}; + + +void parse_datestr(const char *date_str, struct tm *ptm) ; +time_t validate_tm_time(const char *date_str, struct tm *ptm) ; + + +int xsocket(int domain, int type, int protocol) ; +void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) ; +void xlisten(int s, int backlog) ; +void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) ; +ssize_t xsendto(int s, const void *buf, size_t len, const struct sockaddr *to, + socklen_t tolen) ; + + + + + + +void setsockopt_reuseaddr(int fd) ; +int setsockopt_broadcast(int fd) ; +int setsockopt_bindtodevice(int fd, const char *iface) ; + +unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default_port) ; +typedef struct len_and_sockaddr { + socklen_t len; + union { + struct sockaddr sa; + struct sockaddr_in sin; + + struct sockaddr_in6 sin6; + + } u; +} len_and_sockaddr; +enum { + LSA_LEN_SIZE = __builtin_offsetof (len_and_sockaddr, u), + LSA_SIZEOF_SA = sizeof( + union { + struct sockaddr sa; + struct sockaddr_in sin; + + struct sockaddr_in6 sin6; + + } + ) +}; + + + + + + +int xsocket_type(len_and_sockaddr **lsap, int af, int sock_type) ; +int xsocket_stream(len_and_sockaddr **lsap) ; + + + + + +int create_and_bind_stream_or_die(const char *bindaddr, int port) ; +int create_and_bind_dgram_or_die(const char *bindaddr, int port) ; + + + + +int create_and_connect_stream_or_die(const char *peer, int port) ; + +int xconnect_stream(const len_and_sockaddr *lsa) ; + +len_and_sockaddr *get_sock_lsa(int fd) __attribute__ ((malloc)); + +len_and_sockaddr *get_peer_lsa(int fd) __attribute__ ((malloc)); + + + + + +len_and_sockaddr* host2sockaddr(const char *host, int port) __attribute__ ((malloc)); + +len_and_sockaddr* xhost2sockaddr(const char *host, int port) __attribute__ ((malloc)); +len_and_sockaddr* xdotted2sockaddr(const char *host, int port) __attribute__ ((malloc)); + + + + + +len_and_sockaddr* host_and_af2sockaddr(const char *host, int port, sa_family_t af) __attribute__ ((malloc)); +len_and_sockaddr* xhost_and_af2sockaddr(const char *host, int port, sa_family_t af) __attribute__ ((malloc)); + + + + +void set_nport(struct sockaddr *sa, unsigned port) ; + +int get_nport(const struct sockaddr *sa) ; + +char* xmalloc_sockaddr2host(const struct sockaddr *sa) __attribute__ ((malloc)); + +char* xmalloc_sockaddr2host_noport(const struct sockaddr *sa) __attribute__ ((malloc)); + +char* xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa) __attribute__ ((malloc)); + +char* xmalloc_sockaddr2dotted(const struct sockaddr *sa) __attribute__ ((malloc)); +char* xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa) __attribute__ ((malloc)); + + +struct hostent *xgethostbyname(const char *name) ; + + + + +void socket_want_pktinfo(int fd) ; +ssize_t send_to_from(int fd, void *buf, size_t len, int flags, + const struct sockaddr *to, + const struct sockaddr *from, + socklen_t tolen) ; +ssize_t recv_from_to(int fd, void *buf, size_t len, int flags, + struct sockaddr *from, + struct sockaddr *to, + socklen_t sa_size) ; + +uint16_t inet_cksum(uint16_t *addr, int len) ; + +char *xstrdup(const char *s) __attribute__ ((malloc)); +char *xstrndup(const char *s, int n) __attribute__ ((malloc)); +void overlapping_strcpy(char *dst, const char *src) ; +char *safe_strncpy(char *dst, const char *src, size_t size) ; +char *strncpy_IFNAMSIZ(char *dst, const char *src) ; + + +int bb_putchar(int ch) ; + +int bb_putchar_stderr(char ch) ; +char *xasprintf(const char *format, ...) __attribute__ ((format(printf, 1, 2))) __attribute__ ((malloc)); +# 666 "include/libbb.h" +typedef struct uni_stat_t { + unsigned byte_count; + unsigned unicode_count; + unsigned unicode_width; +} uni_stat_t; + + +const char* printable_string(uni_stat_t *stats, const char *str); + + + +enum { PRINTABLE_META = 0x100 }; +void fputc_printable(int ch, FILE *file) ; + + + +void *malloc_or_warn(size_t size) __attribute__ ((malloc)); +void *xmalloc(size_t size) __attribute__ ((malloc)); +void *xzalloc(size_t size) __attribute__ ((malloc)); +void *xrealloc(void *old, size_t size) ; +# 695 "include/libbb.h" +void* xrealloc_vector_helper(void *vector, unsigned sizeof_and_shift, int idx) ; + + +extern ssize_t safe_read(int fd, void *buf, size_t count) ; +extern ssize_t nonblock_immune_read(int fd, void *buf, size_t count, int loop_on_EINTR) ; + + +extern ssize_t full_read(int fd, void *buf, size_t count) ; +extern void xread(int fd, void *buf, size_t count) ; +extern unsigned char xread_char(int fd) ; +extern ssize_t read_close(int fd, void *buf, size_t maxsz) ; +extern ssize_t open_read_close(const char *filename, void *buf, size_t maxsz) ; + + + +extern char *xmalloc_reads(int fd, size_t *maxsz_p) ; + +extern void *xmalloc_read(int fd, size_t *maxsz_p) __attribute__ ((malloc)); + +extern void *xmalloc_open_read_close(const char *filename, size_t *maxsz_p) __attribute__ ((malloc)); + +extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) __attribute__ ((malloc)); +# 727 "include/libbb.h" +extern int setup_unzip_on_fd(int fd, int fail_if_not_detected) ; + +extern int open_zipped(const char *fname) ; + + + + +extern void *xmalloc_open_zipped_read_close(const char *fname, size_t *maxsz_p) __attribute__ ((malloc)); + +extern ssize_t safe_write(int fd, const void *buf, size_t count) ; + + +extern ssize_t full_write(int fd, const void *buf, size_t count) ; +extern void xwrite(int fd, const void *buf, size_t count) ; +extern void xwrite_str(int fd, const char *str) ; +extern ssize_t full_write1_str(const char *str) ; +extern ssize_t full_write2_str(const char *str) ; +extern void xopen_xwrite_close(const char* file, const char *str) ; + + +extern void xclose(int fd) ; + + +extern void xprint_and_close_file(FILE *file) ; + + + + + + +extern char *bb_get_chunk_from_file(FILE *file, int *end) ; + +extern char *xmalloc_fgets_str(FILE *file, const char *terminating_string) __attribute__ ((malloc)); + +extern char *xmalloc_fgets_str_len(FILE *file, const char *terminating_string, size_t *maxsz_p) __attribute__ ((malloc)); + +extern char *xmalloc_fgetline_str(FILE *file, const char *terminating_string) __attribute__ ((malloc)); + +extern char *xmalloc_fgets(FILE *file) __attribute__ ((malloc)); + +extern char *xmalloc_fgetline(FILE *file) __attribute__ ((malloc)); + + + +void die_if_ferror(FILE *file, const char *msg) ; +void die_if_ferror_stdout(void) ; +int fflush_all(void) ; +void fflush_stdout_and_exit(int retval) __attribute__ ((__noreturn__)) ; +int fclose_if_not_stdin(FILE *file) ; +FILE* xfopen(const char *filename, const char *mode) ; + +FILE* fopen_or_warn(const char *filename, const char *mode) ; + +FILE* xfopen_stdin(const char *filename) ; +FILE* fopen_or_warn_stdin(const char *filename) ; +FILE* fopen_for_read(const char *path) ; +FILE* xfopen_for_read(const char *path) ; +FILE* fopen_for_write(const char *path) ; +FILE* xfopen_for_write(const char *path) ; +FILE* xfdopen_for_read(int fd) ; +FILE* xfdopen_for_write(int fd) ; + +int bb_pstrcmp(const void *a, const void *b) ; +void qsort_string_vector(char **sv, unsigned count) ; + + + + + +int safe_poll(struct pollfd *ufds, nfds_t nfds, int timeout_ms) ; + +char *safe_gethostname(void) ; + + +char* str_tolower(char *str) ; + +char *utoa(unsigned n) ; +char *itoa(int n) ; + +char *utoa_to_buf(unsigned n, char *buf, unsigned buflen) ; +char *itoa_to_buf(int n, char *buf, unsigned buflen) ; + +void smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) ; +void smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) ; + + + + + + + +const char *make_human_readable_str(unsigned long long size, + unsigned long block_size, unsigned long display_unit) ; + +char *bin2hex(char *dst, const char *src, int count) ; + +char* hex2bin(char *dst, const char *src, int count) ; + + +void generate_uuid(uint8_t *buf) ; + + +struct suffix_mult { + char suffix[4]; + unsigned mult; +}; +# 1 "include/xatonum.h" 1 +# 10 "include/xatonum.h" + +# 10 "include/xatonum.h" +#pragma GCC visibility push(hidden) +# 10 "include/xatonum.h" + +# 32 "include/xatonum.h" +unsigned long long xstrtoull_range_sfx(const char *str, int b, unsigned long long l, unsigned long long u, const struct suffix_mult *sfx) ; unsigned long long xstrtoull_range(const char *str, int b, unsigned long long l, unsigned long long u) ; unsigned long long xstrtoull_sfx(const char *str, int b, const struct suffix_mult *sfx) ; unsigned long long xstrtoull(const char *str, int b) ; unsigned long long xatoull_range_sfx(const char *str, unsigned long long l, unsigned long long u, const struct suffix_mult *sfx) ; unsigned long long xatoull_range(const char *str, unsigned long long l, unsigned long long u) ; unsigned long long xatoull_sfx(const char *str, const struct suffix_mult *sfx) ; unsigned long long xatoull(const char *str) ; long long xstrtoll_range_sfx(const char *str, int b, long long l, long long u, const struct suffix_mult *sfx) ; long long xstrtoll_range(const char *str, int b, long long l, long long u) ; long long xstrtoll(const char *str, int b) ; long long xatoll_range_sfx(const char *str, long long l, long long u, const struct suffix_mult *sfx) ; long long xatoll_range(const char *str, long long l, long long u) ; long long xatoll_sfx(const char *str, const struct suffix_mult *sfx) ; long long xatoll(const char *str) ; +# 90 "include/xatonum.h" +unsigned long xstrtoul_range_sfx(const char *str, int b, unsigned long l, unsigned long u, const struct suffix_mult *sfx) ; unsigned long xstrtoul_range(const char *str, int b, unsigned long l, unsigned long u) ; unsigned long xstrtoul_sfx(const char *str, int b, const struct suffix_mult *sfx) ; unsigned long xstrtoul(const char *str, int b) ; unsigned long xatoul_range_sfx(const char *str, unsigned long l, unsigned long u, const struct suffix_mult *sfx) ; unsigned long xatoul_range(const char *str, unsigned long l, unsigned long u) ; unsigned long xatoul_sfx(const char *str, const struct suffix_mult *sfx) ; unsigned long xatoul(const char *str) ; long xstrtol_range_sfx(const char *str, int b, long l, long u, const struct suffix_mult *sfx) ; long xstrtol_range(const char *str, int b, long l, long u) ; long xstrtol(const char *str, int b) ; long xatol_range_sfx(const char *str, long l, long u, const struct suffix_mult *sfx) ; long xatol_range(const char *str, long l, long u) ; long xatol_sfx(const char *str, const struct suffix_mult *sfx) ; long xatol(const char *str) ; + + + + + + +static __attribute__ ((always_inline)) __inline__ unsigned int xstrtou_range_sfx(const char *str, int b, unsigned int l, unsigned int u, const struct suffix_mult *sfx) { return xstrtoul_range_sfx(str, b, l, u, sfx); } static __attribute__ ((always_inline)) __inline__ unsigned int xstrtou_range(const char *str, int b, unsigned int l, unsigned int u) { return xstrtoul_range(str, b, l, u); } static __attribute__ ((always_inline)) __inline__ unsigned int xstrtou_sfx(const char *str, int b, const struct suffix_mult *sfx) { return xstrtoul_sfx(str, b, sfx); } static __attribute__ ((always_inline)) __inline__ unsigned int xstrtou(const char *str, int b) { return xstrtoul(str, b); } static __attribute__ ((always_inline)) __inline__ unsigned int xatou_range_sfx(const char *str, unsigned int l, unsigned int u, const struct suffix_mult *sfx) { return xatoul_range_sfx(str, l, u, sfx); } static __attribute__ ((always_inline)) __inline__ unsigned int xatou_range(const char *str, unsigned int l, unsigned int u) { return xatoul_range(str, l, u); } static __attribute__ ((always_inline)) __inline__ unsigned int xatou_sfx(const char *str, const struct suffix_mult *sfx) { return xatoul_sfx(str, sfx); } static __attribute__ ((always_inline)) __inline__ unsigned int xatou(const char *str) { return xatoul(str); } static __attribute__ ((always_inline)) __inline__ int xstrtoi_range_sfx(const char *str, int b, int l, int u, const struct suffix_mult *sfx) { return xstrtol_range_sfx(str, b, l, u, sfx); } static __attribute__ ((always_inline)) __inline__ int xstrtoi_range(const char *str, int b, int l, int u) { return xstrtol_range(str, b, l, u); } static __attribute__ ((always_inline)) __inline__ int xstrtoi(const char *str, int b) { return xstrtol(str, b); } static __attribute__ ((always_inline)) __inline__ int xatoi_range_sfx(const char *str, int l, int u, const struct suffix_mult *sfx) { return xatol_range_sfx(str, l, u, sfx); } static __attribute__ ((always_inline)) __inline__ int xatoi_range(const char *str, int l, int u) { return xatol_range(str, l, u); } static __attribute__ ((always_inline)) __inline__ int xatoi_sfx(const char *str, const struct suffix_mult *sfx) { return xatol_sfx(str, sfx); } static __attribute__ ((always_inline)) __inline__ int xatoi(const char *str) { return xatol(str); } + + + + + + +uint32_t BUG_xatou32_unimplemented(void); +static __attribute__ ((always_inline)) __inline__ uint32_t xatou32(const char *numstr) +{ + if ((2147483647 * 2U + 1U) == 0xffffffff) + return xatou(numstr); + if ((2147483647L * 2UL + 1UL) == 0xffffffff) + return xatoul(numstr); + return BUG_xatou32_unimplemented(); +} +# 127 "include/xatonum.h" +unsigned long long bb_strtoull(const char *arg, char **endp, int base) ; +long long bb_strtoll(const char *arg, char **endp, int base) ; +# 138 "include/xatonum.h" +unsigned long bb_strtoul(const char *arg, char **endp, int base) ; +long bb_strtol(const char *arg, char **endp, int base) ; +# 150 "include/xatonum.h" +static __attribute__ ((always_inline)) __inline__ +unsigned bb_strtou(const char *arg, char **endp, int base) +{ return bb_strtoul(arg, endp, base); } +static __attribute__ ((always_inline)) __inline__ +int bb_strtoi(const char *arg, char **endp, int base) +{ return bb_strtol(arg, endp, base); } + + + + + +uint32_t BUG_bb_strtou32_unimplemented(void); +static __attribute__ ((always_inline)) __inline__ +uint32_t bb_strtou32(const char *arg, char **endp, int base) +{ + if (sizeof(uint32_t) == sizeof(unsigned)) + return bb_strtou(arg, endp, base); + if (sizeof(uint32_t) == sizeof(unsigned long)) + return bb_strtoul(arg, endp, base); + return BUG_bb_strtou32_unimplemented(); +} +static __attribute__ ((always_inline)) __inline__ +int32_t bb_strtoi32(const char *arg, char **endp, int base) +{ + if (sizeof(int32_t) == sizeof(int)) + return bb_strtoi(arg, endp, base); + if (sizeof(int32_t) == sizeof(long)) + return bb_strtol(arg, endp, base); + return BUG_bb_strtou32_unimplemented(); +} + + + +double bb_strtod(const char *arg, char **endp) ; + + +# 185 "include/xatonum.h" +#pragma GCC visibility pop +# 185 "include/xatonum.h" + +# 834 "include/libbb.h" 2 +# 843 "include/libbb.h" +int xatoi_positive(const char *numstr) ; + + +uint16_t xatou16(const char *numstr) ; + + + + + +long xuname2uid(const char *name) ; +long xgroup2gid(const char *name) ; + +unsigned long get_ug_id(const char *s, long (*xname2id)(const char *)) ; + +struct bb_uidgid_t { + uid_t uid; + gid_t gid; +}; + +int get_uidgid(struct bb_uidgid_t*, const char*, int numeric_ok) ; + +void xget_uidgid(struct bb_uidgid_t*, const char*) ; + +void parse_chown_usergroup_or_die(struct bb_uidgid_t *u, char *user_group) ; +struct passwd* xgetpwnam(const char *name) ; +struct group* xgetgrnam(const char *name) ; +struct passwd* xgetpwuid(uid_t uid) ; +struct group* xgetgrgid(gid_t gid) ; +char* xuid2uname(uid_t uid) ; +char* xgid2group(gid_t gid) ; +char* uid2uname(uid_t uid) ; +char* gid2group(gid_t gid) ; +char* uid2uname_utoa(uid_t uid) ; +char* gid2group_utoa(gid_t gid) ; + +const char* get_cached_username(uid_t uid) ; +const char* get_cached_groupname(gid_t gid) ; +void clear_username_cache(void) ; + +enum { USERNAME_MAX_SIZE = 32 - sizeof(uid_t) }; + +void die_if_bad_username(const char* name) ; + + + + + +void write_new_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname); +void update_utmp(pid_t pid, int new_type, const char *tty_name, const char *username, const char *hostname); + + + + + + +int execable_file(const char *name) ; +char *find_execable(const char *filename, char **PATHp) ; +int exists_execable(const char *filename) ; + + + + + +int BB_EXECVP(const char *file, char *const argv[]) ; +# 917 "include/libbb.h" +int BB_EXECVP_or_die(char **argv) __attribute__ ((__noreturn__)) ; +# 929 "include/libbb.h" +pid_t xfork(void) ; + + + +pid_t spawn(char **argv) ; +pid_t xspawn(char **argv) ; + +pid_t safe_waitpid(pid_t pid, int *wstat, int options) ; +pid_t wait_any_nohang(int *wstat) ; +# 946 "include/libbb.h" +int wait4pid(pid_t pid) ; + +int spawn_and_wait(char **argv) ; + +int run_nofork_applet(int applet_no, char **argv) ; +# 975 "include/libbb.h" +enum { + DAEMON_CHDIR_ROOT = 1, + DAEMON_DEVNULL_STDIO = 2, + DAEMON_CLOSE_EXTRA_FDS = 4, + DAEMON_ONLY_SANITIZE = 8, + DAEMON_DOUBLE_FORK = 16, +}; + + enum { re_execed = 0 }; +# 1002 "include/libbb.h" +void bb_daemonize_or_rexec(int flags) ; +void bb_sanitize_stdio(void) ; + +int sanitize_env_if_suid(void) ; + + +char* single_argv(char **argv) ; +extern const char *const bb_argv_dash[]; +extern const char *opt_complementary; + + + + +extern const char *applet_long_options; + +extern uint32_t option_mask32; +extern uint32_t getopt32(char **argv, const char *applet_opts, ...) ; + + + + + + +typedef struct llist_t { + struct llist_t *link; + char *data; +} llist_t; +void llist_add_to(llist_t **old_head, void *data) ; +void llist_add_to_end(llist_t **list_head, void *data) ; +void *llist_pop(llist_t **elm) ; +void llist_unlink(llist_t **head, llist_t *elm) ; +void llist_free(llist_t *elm, void (*freeit)(void *data)) ; +llist_t *llist_rev(llist_t *list) ; +llist_t *llist_find_str(llist_t *first, const char *str) ; +# 1044 "include/libbb.h" +extern smallint wrote_pidfile; +void write_pidfile(const char *path) ; + + + + + + + +enum { + LOGMODE_NONE = 0, + LOGMODE_STDIO = (1 << 0), + LOGMODE_SYSLOG = (1 << 1) * 1, + LOGMODE_BOTH = LOGMODE_SYSLOG + LOGMODE_STDIO, +}; +extern const char *msg_eol; +extern smallint logmode; +extern int die_sleep; +extern uint8_t xfunc_error_retval; +extern jmp_buf die_jmp; +extern void xfunc_die(void) __attribute__ ((__noreturn__)) ; +extern void bb_show_usage(void) __attribute__ ((__noreturn__)) ; +extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) ; +extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) ; +extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) ; +extern void bb_simple_perror_msg(const char *s) ; +extern void bb_perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) ; +extern void bb_simple_perror_msg_and_die(const char *s) __attribute__ ((__noreturn__)) ; +extern void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) ; +extern void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) ; +extern void bb_perror_nomsg_and_die(void) __attribute__ ((__noreturn__)) ; +extern void bb_perror_nomsg(void) ; +extern void bb_info_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) ; +extern void bb_verror_msg(const char *s, va_list p, const char *strerr) ; +# 1090 "include/libbb.h" +int bb_cat(char** argv); + +int echo_main(int argc, char** argv) ; +int printf_main(int argc, char **argv) ; +int test_main(int argc, char **argv) ; +int kill_main(int argc, char **argv) ; + +int chown_main(int argc, char **argv) ; + +int ls_main(int argc, char **argv) ; + +int gunzip_main(int argc, char **argv) ; +int bunzip2_main(int argc, char **argv) ; + + +void bb_displayroutes(int noresolve, int netstatfmt) ; + + + + +int create_icmp_socket(void) ; +int create_icmp6_socket(void) ; + + +struct aftype { + const char *name; + const char *title; + int af; + int alen; + char* (*print)(unsigned char *); + const char* (*sprint)(struct sockaddr *, int numeric); + int (*input)( const char *bufp, struct sockaddr *); + void (*herror)(char *text); + int (*rprint)(int options); + int (*rinput)(int typ, int ext, char **argv); + + int (*getmask)(char *src, struct sockaddr *mask, char *name); +}; + +struct hwtype { + const char *name; + const char *title; + int type; + int alen; + char* (*print)(unsigned char *); + int (*input)(const char *, struct sockaddr *); + int (*activate)(int fd); + int suppress_null_addr; +}; +extern smallint interface_opt_a; +int display_interfaces(char *ifname) ; + +int in_ib(const char *bufp, struct sockaddr *sap) ; + + + +const struct aftype *get_aftype(const char *name) ; +const struct hwtype *get_hwtype(const char *name) ; +const struct hwtype *get_hwntype(int type) ; + + + +extern int find_applet_by_name(const char *name) ; + +extern void run_applet_and_exit(const char *name, char **argv) ; +extern void run_applet_no_and_exit(int a, char **argv) __attribute__ ((__noreturn__)) ; + + + +extern int match_fstype(const struct mntent *mt, const char *fstypes) ; +extern struct mntent *find_mount_point(const char *name, int subdir_too) ; + +extern void erase_mtab(const char * name) ; +extern unsigned int tty_baud_to_value(speed_t speed) ; +extern speed_t tty_value_to_baud(unsigned int value) ; + +extern void bb_warn_ignoring_args(char *arg) ; + + + + +extern int get_linux_version_code(void) ; + +extern char *query_loop(const char *device) ; +extern int del_loop(const char *device) ; + + + +extern int set_loop(char **devname, const char *file, unsigned long long offset, int ro) ; + + +char *bb_ask_stdin(const char * prompt) ; + +char *bb_ask(const int fd, int timeout, const char * prompt) ; +int bb_ask_confirmation(void) ; + +int bb_parse_mode(const char* s, mode_t* theMode) ; + + + + +enum { + PARSE_COLLAPSE = 0x00010000, + PARSE_TRIM = 0x00020000, + + PARSE_GREEDY = 0x00040000, + PARSE_MIN_DIE = 0x00100000, + + PARSE_KEEP_COPY = 0x00200000 * 1, + PARSE_EOL_COMMENTS = 0x00400000, + + + + + + + PARSE_NORMAL = PARSE_COLLAPSE | PARSE_TRIM | PARSE_GREEDY | PARSE_EOL_COMMENTS, +}; +typedef struct parser_t { + FILE *fp; + char *data; + char *line, *nline; + size_t line_alloc, nline_alloc; + int lineno; +} parser_t; +parser_t* config_open(const char *filename) ; +parser_t* config_open2(const char *filename, FILE* (*fopen_func)(const char *path)) ; + +int config_read(parser_t *parser, char **tokens, unsigned flags, const char *delims) ; + + +void config_close(parser_t *parser) ; + + + + + +char *concat_path_file(const char *path, const char *filename) ; + +char *concat_subpath_file(const char *path, const char *filename) ; + + +int bb_make_directory(char *path, long mode, int flags) ; + +int get_signum(const char *name) ; +const char *get_signame(int number) ; +void print_signames(void) ; + +char *bb_simplify_path(const char *path) ; + +char *bb_simplify_abs_path_inplace(char *path) ; + + +extern void bb_do_delay(int seconds) ; +extern void change_identity(const struct passwd *pw) ; +extern void run_shell(const char *shell, int loginshell, const char *command, const char **additional_args) __attribute__ ((__noreturn__)) ; + + + + + +const char *get_shell_name(void) ; +# 1263 "include/libbb.h" +extern void selinux_or_die(void) ; + + + + +int sd_listen_fds(void); +# 1290 "include/libbb.h" +extern void setup_environment(const char *shell, int flags, const struct passwd *pw) ; +extern int correct_password(const struct passwd *pw) ; + + + + +extern char *pw_encrypt(const char *clear, const char *salt, int cleanup) ; +extern int obscure(const char *old, const char *newval, const struct passwd *pwdp) ; +# 1306 "include/libbb.h" +extern int crypt_make_salt(char *p, int cnt ) ; + + +extern char* crypt_make_pw_salt(char p[(3 + 16 + 1)], const char *algo) ; + + + + + + + +extern int update_passwd(const char *filename, + const char *username, + const char *data, + const char *member) ; + +int index_in_str_array(const char *const string_array[], const char *key) ; +int index_in_strings(const char *strings, const char *key) ; +int index_in_substr_array(const char *const string_array[], const char *key) ; +int index_in_substrings(const char *strings, const char *key) ; +const char *nth_string(const char *strings, int n) ; + +extern void print_login_issue(const char *issue_file, const char *tty) ; +extern void print_login_prompt(void) ; + +char *xmalloc_ttyname(int fd) __attribute__ ((malloc)); + +int get_terminal_width_height(int fd, unsigned *width, unsigned *height) ; + +int tcsetattr_stdin_TCSANOW(const struct termios *tp) ; + + +int ioctl_or_perror(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))) ; +int ioctl_or_perror_and_die(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))) ; + +int bb_ioctl_or_warn(int fd, unsigned request, void *argp, const char *ioctl_name) ; +int bb_xioctl(int fd, unsigned request, void *argp, const char *ioctl_name) ; +# 1352 "include/libbb.h" +char *is_in_ino_dev_hashtable(const struct stat *statbuf) ; +void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name) ; +void reset_ino_dev_hashtable(void) ; + + +unsigned long long bb_makedev(unsigned major, unsigned minor) ; +# 1367 "include/libbb.h" +enum { + KEYCODE_UP = -2, + KEYCODE_DOWN = -3, + KEYCODE_RIGHT = -4, + KEYCODE_LEFT = -5, + KEYCODE_HOME = -6, + KEYCODE_END = -7, + KEYCODE_INSERT = -8, + KEYCODE_DELETE = -9, + KEYCODE_PAGEUP = -10, + KEYCODE_PAGEDOWN = -11, +# 1402 "include/libbb.h" + KEYCODE_CTRL_RIGHT = KEYCODE_RIGHT & ~0x40, + KEYCODE_CTRL_LEFT = KEYCODE_LEFT & ~0x40, + + + KEYCODE_ALT_RIGHT = KEYCODE_RIGHT & ~0x20, + KEYCODE_ALT_LEFT = KEYCODE_LEFT & ~0x20, + + KEYCODE_CURSOR_POS = -0x100, + + + + + KEYCODE_BUFFER_SIZE = 16 +}; +# 1429 "include/libbb.h" +int64_t read_key(int fd, char *buffer, int timeout) ; +void read_key_ungets(char *buffer, const char *str, unsigned len) ; + + + + + + +unsigned size_from_HISTFILESIZE(const char *hp); + + + +typedef struct line_input_t { + int flags; + const char *path_lookup; + + int cnt_history; + int cur_history; + int max_history; + + + + + + + + unsigned cnt_history_in_file; + const char *hist_file; + + char *history[(255 + 0) + 1]; + +} line_input_t; +enum { + DO_HISTORY = 1 * ((255 + 0) > 0), + TAB_COMPLETION = 2 * 1, + USERNAME_COMPLETION = 4 * 1, + VI_MODE = 8 * 1, + WITH_PATH_LOOKUP = 0x10, + FOR_SHELL = DO_HISTORY | TAB_COMPLETION | USERNAME_COMPLETION, +}; +line_input_t *new_line_input_t(int flags) ; +# 1478 "include/libbb.h" +int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) ; + +void save_history(line_input_t *st); +# 1495 "include/libbb.h" +enum { COMM_LEN = 16 }; + + + +struct smaprec { + unsigned long mapped_rw; + unsigned long mapped_ro; + unsigned long shared_clean; + unsigned long shared_dirty; + unsigned long private_clean; + unsigned long private_dirty; + unsigned long stack; + unsigned long smap_pss, smap_swap; + unsigned long smap_size; + unsigned long smap_start; + char smap_mode[5]; + char *smap_name; +}; + + + + + +int procps_read_smaps(pid_t pid, struct smaprec *total, + void (*cb)(struct smaprec *, void *), void *data); + +typedef struct procps_status_t { + DIR *dir; + DIR *task_dir; + uint8_t shift_pages_to_bytes; + uint8_t shift_pages_to_kb; + + uint16_t argv_len; + char *argv0; + char *exe; + + unsigned main_thread_pid; + + + unsigned long vsz, rss; + unsigned long stime, utime; + unsigned long start_time; + unsigned pid; + unsigned ppid; + unsigned pgid; + unsigned sid; + unsigned uid; + unsigned gid; + + unsigned ruid; + unsigned rgid; + int niceness; + + unsigned tty_major,tty_minor; + + struct smaprec smaps; + + char state[4]; + + + + char comm[COMM_LEN]; + + + int last_seen_on_cpu; + +} procps_status_t; + +enum { + PSSCAN_PID = 1 << 0, + PSSCAN_PPID = 1 << 1, + PSSCAN_PGID = 1 << 2, + PSSCAN_SID = 1 << 3, + PSSCAN_UIDGID = 1 << 4, + PSSCAN_COMM = 1 << 5, + + PSSCAN_ARGV0 = 1 << 7, + PSSCAN_EXE = 1 << 8, + PSSCAN_STATE = 1 << 9, + PSSCAN_VSZ = 1 << 10, + PSSCAN_RSS = 1 << 11, + PSSCAN_STIME = 1 << 12, + PSSCAN_UTIME = 1 << 13, + PSSCAN_TTY = 1 << 14, + PSSCAN_SMAPS = (1 << 15) * 1, + + + PSSCAN_ARGVN = (1 << 16) * (1 + || 1 || 1 + || 1 + || 0 + ), + PSSCAN_CONTEXT = (1 << 17) * 0, + PSSCAN_START_TIME = 1 << 18, + PSSCAN_CPU = (1 << 19) * 1, + PSSCAN_NICE = (1 << 20) * 1, + PSSCAN_RUIDGID = (1 << 21) * 1, + PSSCAN_TASKS = (1 << 22) * 1, +}; + +void free_procps_scan(procps_status_t* sp) ; +procps_status_t* procps_scan(procps_status_t* sp, int flags) ; + + +void read_cmdline(char *buf, int size, unsigned pid, const char *comm) ; +pid_t *find_pid_by_name(const char* procName) ; +pid_t *pidlist_reverse(pid_t *pidList) ; +int starts_with_cpu(const char *str) ; +unsigned get_cpu_count(void) ; +# 1612 "include/libbb.h" +char *percent_decode_in_place(char *str, int strict) ; + + +extern const char bb_uuenc_tbl_base64[] __attribute__((aligned(1))); +extern const char bb_uuenc_tbl_std[] __attribute__((aligned(1))); +void bb_uuencode(char *store, const void *s, int length, const char *tbl) ; +enum { + BASE64_FLAG_UU_STOP = 0x100, + + BASE64_FLAG_NO_STOP_CHAR = 0x80, +}; +const char *decode_base64(char **pp_dst, const char *src) ; +void read_base64(FILE *src_stream, FILE *dst_stream, int flags) ; + +typedef struct md5_ctx_t { + uint8_t wbuffer[64]; + void (*process_block)(struct md5_ctx_t*) ; + uint64_t total64; + uint32_t hash[8]; +} md5_ctx_t; +typedef struct md5_ctx_t sha1_ctx_t; +typedef struct md5_ctx_t sha256_ctx_t; +typedef struct sha512_ctx_t { + uint64_t total64[2]; + uint64_t hash[8]; + uint8_t wbuffer[128]; +} sha512_ctx_t; +typedef struct sha3_ctx_t { + uint64_t state[25]; + unsigned bytes_queued; +} sha3_ctx_t; +void md5_begin(md5_ctx_t *ctx) ; +void md5_hash(md5_ctx_t *ctx, const void *buffer, size_t len) ; +void md5_end(md5_ctx_t *ctx, void *resbuf) ; +void sha1_begin(sha1_ctx_t *ctx) ; + +void sha1_end(sha1_ctx_t *ctx, void *resbuf) ; +void sha256_begin(sha256_ctx_t *ctx) ; + + +void sha512_begin(sha512_ctx_t *ctx) ; +void sha512_hash(sha512_ctx_t *ctx, const void *buffer, size_t len) ; +void sha512_end(sha512_ctx_t *ctx, void *resbuf) ; +void sha3_begin(sha3_ctx_t *ctx) ; +void sha3_hash(sha3_ctx_t *ctx, const void *buffer, size_t len) ; +void sha3_end(sha3_ctx_t *ctx, void *resbuf) ; + +extern uint32_t *global_crc32_table; +uint32_t *crc32_filltable(uint32_t *tbl256, int endian) ; +uint32_t crc32_block_endian1(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) ; +uint32_t crc32_block_endian0(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) ; + +typedef struct masks_labels_t { + const char *labels; + const int masks[]; +} masks_labels_t; +int print_flags_separated(const int *masks, const char *labels, + int flags, const char *separator) ; +int print_flags(const masks_labels_t *ml, int flags) ; + +typedef struct bb_progress_t { + unsigned last_size; + unsigned last_update_sec; + unsigned last_change_sec; + unsigned start_sec; + const char *curfile; +} bb_progress_t; + + + + + + +void bb_progress_init(bb_progress_t *p, const char *curfile) ; +void bb_progress_update(bb_progress_t *p, + uoff_t beg_range, + uoff_t transferred, + uoff_t totalsize) ; + + +extern const char *applet_name; +# 1704 "include/libbb.h" +extern const char bb_banner[] __attribute__((aligned(1))); +extern const char bb_msg_memory_exhausted[] __attribute__((aligned(1))); +extern const char bb_msg_invalid_date[] __attribute__((aligned(1))); + + +extern const char bb_msg_unknown[] __attribute__((aligned(1))); +extern const char bb_msg_can_not_create_raw_socket[] __attribute__((aligned(1))); +extern const char bb_msg_perm_denied_are_you_root[] __attribute__((aligned(1))); +extern const char bb_msg_you_must_be_root[] __attribute__((aligned(1))); +extern const char bb_msg_requires_arg[] __attribute__((aligned(1))); +extern const char bb_msg_invalid_arg[] __attribute__((aligned(1))); +extern const char bb_msg_standard_input[] __attribute__((aligned(1))); +extern const char bb_msg_standard_output[] __attribute__((aligned(1))); + + +extern const char bb_hexdigits_upcase[] __attribute__((aligned(1))); + +extern const char bb_path_wtmp_file[] __attribute__((aligned(1))); +# 1735 "include/libbb.h" +extern const char bb_busybox_exec_path[] __attribute__((aligned(1))); + + +extern const char bb_PATH_root_path[] __attribute__((aligned(1))); + + + +extern const int const_int_0; +extern const int const_int_1; + + + +enum { COMMON_BUFSIZE = (8192 >= 256*sizeof(void*) ? 8192 +1 : 256*sizeof(void*)) }; +extern char bb_common_bufsiz1[COMMON_BUFSIZE]; + + +struct globals; + + + +extern struct globals *const ptr_to_globals; +# 1768 "include/libbb.h" +extern const char bb_default_login_shell[] __attribute__((aligned(1))); +# 1866 "include/libbb.h" +static __attribute__ ((always_inline)) __inline__ int bb_ascii_isalnum(unsigned char a) +{ + unsigned char b = a - '0'; + if (b <= 9) + return (b <= 9); + b = (a|0x20) - 'a'; + return b <= 'z' - 'a'; +} + +static __attribute__ ((always_inline)) __inline__ int bb_ascii_isxdigit(unsigned char a) +{ + unsigned char b = a - '0'; + if (b <= 9) + return (b <= 9); + b = (a|0x20) - 'a'; + return b <= 'f' - 'a'; +} + +static __attribute__ ((always_inline)) __inline__ unsigned char bb_ascii_toupper(unsigned char a) +{ + unsigned char b = a - 'a'; + if (b <= ('z' - 'a')) + a -= 'a' - 'A'; + return a; +} + +static __attribute__ ((always_inline)) __inline__ unsigned char bb_ascii_tolower(unsigned char a) +{ + unsigned char b = a - 'A'; + if (b <= ('Z' - 'A')) + a += 'a' - 'A'; + return a; +} +# 1909 "include/libbb.h" + +# 1909 "include/libbb.h" +#pragma GCC visibility pop +# 1909 "include/libbb.h" + +# 6 "networking/libiproute/ip_common.h" 2 +# 1 "/usr/include/asm/types.h" 1 3 4 + + + +# 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 +# 11 "/usr/include/asm-generic/int-ll64.h" 3 4 +# 1 "/usr/include/asm/bitsperlong.h" 1 3 4 +# 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 +# 1 "/usr/include/asm/bitsperlong.h" 2 3 4 +# 12 "/usr/include/asm-generic/int-ll64.h" 2 3 4 + + + + + + + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + + +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +# 5 "/usr/include/asm/types.h" 2 3 4 +# 7 "networking/libiproute/ip_common.h" 2 +# 1 "/usr/include/linux/netlink.h" 1 3 4 + + + +# 1 "/usr/include/linux/kernel.h" 1 3 4 + + + +# 1 "/usr/include/linux/sysinfo.h" 1 3 4 + + + +# 1 "/usr/include/linux/types.h" 1 3 4 + + + + + + + +# 1 "/usr/include/linux/posix_types.h" 1 3 4 + + + +# 1 "/usr/include/linux/stddef.h" 1 3 4 +# 5 "/usr/include/linux/posix_types.h" 2 3 4 +# 24 "/usr/include/linux/posix_types.h" 3 4 +typedef struct { + unsigned long fds_bits[1024 / (8 * sizeof(long))]; +} __kernel_fd_set; + + +typedef void (*__kernel_sighandler_t)(int); + + +typedef int __kernel_key_t; +typedef int __kernel_mqd_t; + +# 1 "/usr/include/asm/posix_types.h" 1 3 4 +# 22 "/usr/include/asm/posix_types.h" 3 4 +typedef unsigned short __kernel_mode_t; + + +typedef unsigned short __kernel_ipc_pid_t; + + +typedef unsigned short __kernel_uid_t; +typedef unsigned short __kernel_gid_t; + + +typedef unsigned short __kernel_old_dev_t; + + +# 1 "/usr/include/asm-generic/posix_types.h" 1 3 4 + + + +# 1 "/usr/include/asm/bitsperlong.h" 1 3 4 +# 5 "/usr/include/asm-generic/posix_types.h" 2 3 4 +# 14 "/usr/include/asm-generic/posix_types.h" 3 4 +typedef long __kernel_long_t; +typedef unsigned long __kernel_ulong_t; + + + +typedef __kernel_ulong_t __kernel_ino_t; + + + + + + + +typedef int __kernel_pid_t; +# 40 "/usr/include/asm-generic/posix_types.h" 3 4 +typedef __kernel_long_t __kernel_suseconds_t; + + + +typedef int __kernel_daddr_t; + + + +typedef unsigned int __kernel_uid32_t; +typedef unsigned int __kernel_gid32_t; + + + +typedef __kernel_uid_t __kernel_old_uid_t; +typedef __kernel_gid_t __kernel_old_gid_t; +# 67 "/usr/include/asm-generic/posix_types.h" 3 4 +typedef unsigned int __kernel_size_t; +typedef int __kernel_ssize_t; +typedef int __kernel_ptrdiff_t; +# 78 "/usr/include/asm-generic/posix_types.h" 3 4 +typedef struct { + int val[2]; +} __kernel_fsid_t; + + + + + +typedef __kernel_long_t __kernel_off_t; +typedef long long __kernel_loff_t; +typedef __kernel_long_t __kernel_time_t; +typedef __kernel_long_t __kernel_clock_t; +typedef int __kernel_timer_t; +typedef int __kernel_clockid_t; +typedef char * __kernel_caddr_t; +typedef unsigned short __kernel_uid16_t; +typedef unsigned short __kernel_gid16_t; +# 36 "/usr/include/asm/posix_types.h" 2 3 4 +# 36 "/usr/include/linux/posix_types.h" 2 3 4 +# 9 "/usr/include/linux/types.h" 2 3 4 +# 27 "/usr/include/linux/types.h" 3 4 +typedef __u16 __le16; +typedef __u16 __be16; +typedef __u32 __le32; +typedef __u32 __be32; +typedef __u64 __le64; +typedef __u64 __be64; + +typedef __u16 __sum16; +typedef __u32 __wsum; +# 5 "/usr/include/linux/sysinfo.h" 2 3 4 + + +struct sysinfo { + __kernel_long_t uptime; + __kernel_ulong_t loads[3]; + __kernel_ulong_t totalram; + __kernel_ulong_t freeram; + __kernel_ulong_t sharedram; + __kernel_ulong_t bufferram; + __kernel_ulong_t totalswap; + __kernel_ulong_t freeswap; + __u16 procs; + __u16 pad; + __kernel_ulong_t totalhigh; + __kernel_ulong_t freehigh; + __u32 mem_unit; + char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)]; +}; +# 5 "/usr/include/linux/kernel.h" 2 3 4 +# 5 "/usr/include/linux/netlink.h" 2 3 4 +# 1 "/usr/include/linux/socket.h" 1 3 4 +# 11 "/usr/include/linux/socket.h" 3 4 +typedef unsigned short __kernel_sa_family_t; + +struct __kernel_sockaddr_storage { + __kernel_sa_family_t ss_family; + + char __data[128 - sizeof(unsigned short)]; + + +} __attribute__ ((aligned((__alignof__ (struct sockaddr *))))); +# 6 "/usr/include/linux/netlink.h" 2 3 4 +# 35 "/usr/include/linux/netlink.h" 3 4 +struct sockaddr_nl { + __kernel_sa_family_t nl_family; + unsigned short nl_pad; + __u32 nl_pid; + __u32 nl_groups; +}; + +struct nlmsghdr { + __u32 nlmsg_len; + __u16 nlmsg_type; + __u16 nlmsg_flags; + __u32 nlmsg_seq; + __u32 nlmsg_pid; +}; +# 99 "/usr/include/linux/netlink.h" 3 4 +struct nlmsgerr { + int error; + struct nlmsghdr msg; +}; +# 112 "/usr/include/linux/netlink.h" 3 4 +struct nl_pktinfo { + __u32 group; +}; + +struct nl_mmap_req { + unsigned int nm_block_size; + unsigned int nm_block_nr; + unsigned int nm_frame_size; + unsigned int nm_frame_nr; +}; + +struct nl_mmap_hdr { + unsigned int nm_status; + unsigned int nm_len; + __u32 nm_group; + + __u32 nm_pid; + __u32 nm_uid; + __u32 nm_gid; +}; + +enum nl_mmap_status { + NL_MMAP_STATUS_UNUSED, + NL_MMAP_STATUS_RESERVED, + NL_MMAP_STATUS_VALID, + NL_MMAP_STATUS_COPY, + NL_MMAP_STATUS_SKIP, +}; + + + + + + + +enum { + NETLINK_UNCONNECTED = 0, + NETLINK_CONNECTED, +}; +# 161 "/usr/include/linux/netlink.h" 3 4 +struct nlattr { + __u16 nla_len; + __u16 nla_type; +}; +# 8 "networking/libiproute/ip_common.h" 2 +# 1 "/usr/include/linux/rtnetlink.h" 1 3 4 + + + + + +# 1 "/usr/include/linux/if_link.h" 1 3 4 + + + + + + + +struct rtnl_link_stats { + __u32 rx_packets; + __u32 tx_packets; + __u32 rx_bytes; + __u32 tx_bytes; + __u32 rx_errors; + __u32 tx_errors; + __u32 rx_dropped; + __u32 tx_dropped; + __u32 multicast; + __u32 collisions; + + + __u32 rx_length_errors; + __u32 rx_over_errors; + __u32 rx_crc_errors; + __u32 rx_frame_errors; + __u32 rx_fifo_errors; + __u32 rx_missed_errors; + + + __u32 tx_aborted_errors; + __u32 tx_carrier_errors; + __u32 tx_fifo_errors; + __u32 tx_heartbeat_errors; + __u32 tx_window_errors; + + + __u32 rx_compressed; + __u32 tx_compressed; +}; + + +struct rtnl_link_stats64 { + __u64 rx_packets; + __u64 tx_packets; + __u64 rx_bytes; + __u64 tx_bytes; + __u64 rx_errors; + __u64 tx_errors; + __u64 rx_dropped; + __u64 tx_dropped; + __u64 multicast; + __u64 collisions; + + + __u64 rx_length_errors; + __u64 rx_over_errors; + __u64 rx_crc_errors; + __u64 rx_frame_errors; + __u64 rx_fifo_errors; + __u64 rx_missed_errors; + + + __u64 tx_aborted_errors; + __u64 tx_carrier_errors; + __u64 tx_fifo_errors; + __u64 tx_heartbeat_errors; + __u64 tx_window_errors; + + + __u64 rx_compressed; + __u64 tx_compressed; +}; + + +struct rtnl_link_ifmap { + __u64 mem_start; + __u64 mem_end; + __u64 base_addr; + __u16 irq; + __u8 dma; + __u8 port; +}; +# 101 "/usr/include/linux/if_link.h" 3 4 +enum { + IFLA_UNSPEC, + IFLA_ADDRESS, + IFLA_BROADCAST, + IFLA_IFNAME, + IFLA_MTU, + IFLA_LINK, + IFLA_QDISC, + IFLA_STATS, + IFLA_COST, + + IFLA_PRIORITY, + + IFLA_MASTER, + + IFLA_WIRELESS, + + IFLA_PROTINFO, + + IFLA_TXQLEN, + + IFLA_MAP, + + IFLA_WEIGHT, + + IFLA_OPERSTATE, + IFLA_LINKMODE, + IFLA_LINKINFO, + + IFLA_NET_NS_PID, + IFLA_IFALIAS, + IFLA_NUM_VF, + IFLA_VFINFO_LIST, + IFLA_STATS64, + IFLA_VF_PORTS, + IFLA_PORT_SELF, + IFLA_AF_SPEC, + IFLA_GROUP, + IFLA_NET_NS_FD, + IFLA_EXT_MASK, + IFLA_PROMISCUITY, + + IFLA_NUM_TX_QUEUES, + IFLA_NUM_RX_QUEUES, + IFLA_CARRIER, + IFLA_PHYS_PORT_ID, + __IFLA_MAX +}; +# 157 "/usr/include/linux/if_link.h" 3 4 +enum { + IFLA_INET_UNSPEC, + IFLA_INET_CONF, + __IFLA_INET_MAX, +}; +# 195 "/usr/include/linux/if_link.h" 3 4 +enum { + IFLA_INET6_UNSPEC, + IFLA_INET6_FLAGS, + IFLA_INET6_CONF, + IFLA_INET6_STATS, + IFLA_INET6_MCAST, + IFLA_INET6_CACHEINFO, + IFLA_INET6_ICMP6STATS, + IFLA_INET6_TOKEN, + __IFLA_INET6_MAX +}; + + + +enum { + BRIDGE_MODE_UNSPEC, + BRIDGE_MODE_HAIRPIN, +}; + +enum { + IFLA_BRPORT_UNSPEC, + IFLA_BRPORT_STATE, + IFLA_BRPORT_PRIORITY, + IFLA_BRPORT_COST, + IFLA_BRPORT_MODE, + IFLA_BRPORT_GUARD, + IFLA_BRPORT_PROTECT, + IFLA_BRPORT_FAST_LEAVE, + IFLA_BRPORT_LEARNING, + IFLA_BRPORT_UNICAST_FLOOD, + __IFLA_BRPORT_MAX +}; + + +struct ifla_cacheinfo { + __u32 max_reasm_len; + __u32 tstamp; + __u32 reachable_time; + __u32 retrans_time; +}; + +enum { + IFLA_INFO_UNSPEC, + IFLA_INFO_KIND, + IFLA_INFO_DATA, + IFLA_INFO_XSTATS, + __IFLA_INFO_MAX, +}; + + + + + +enum { + IFLA_VLAN_UNSPEC, + IFLA_VLAN_ID, + IFLA_VLAN_FLAGS, + IFLA_VLAN_EGRESS_QOS, + IFLA_VLAN_INGRESS_QOS, + IFLA_VLAN_PROTOCOL, + __IFLA_VLAN_MAX, +}; + + + +struct ifla_vlan_flags { + __u32 flags; + __u32 mask; +}; + +enum { + IFLA_VLAN_QOS_UNSPEC, + IFLA_VLAN_QOS_MAPPING, + __IFLA_VLAN_QOS_MAX +}; + + + +struct ifla_vlan_qos_mapping { + __u32 from; + __u32 to; +}; + + +enum { + IFLA_MACVLAN_UNSPEC, + IFLA_MACVLAN_MODE, + IFLA_MACVLAN_FLAGS, + __IFLA_MACVLAN_MAX, +}; + + + +enum macvlan_mode { + MACVLAN_MODE_PRIVATE = 1, + MACVLAN_MODE_VEPA = 2, + MACVLAN_MODE_BRIDGE = 4, + MACVLAN_MODE_PASSTHRU = 8, +}; + + + + +enum { + IFLA_VXLAN_UNSPEC, + IFLA_VXLAN_ID, + IFLA_VXLAN_GROUP, + IFLA_VXLAN_LINK, + IFLA_VXLAN_LOCAL, + IFLA_VXLAN_TTL, + IFLA_VXLAN_TOS, + IFLA_VXLAN_LEARNING, + IFLA_VXLAN_AGEING, + IFLA_VXLAN_LIMIT, + IFLA_VXLAN_PORT_RANGE, + IFLA_VXLAN_PROXY, + IFLA_VXLAN_RSC, + IFLA_VXLAN_L2MISS, + IFLA_VXLAN_L3MISS, + IFLA_VXLAN_PORT, + IFLA_VXLAN_GROUP6, + IFLA_VXLAN_LOCAL6, + __IFLA_VXLAN_MAX +}; + + +struct ifla_vxlan_port_range { + __be16 low; + __be16 high; +}; + + + +enum { + IFLA_BOND_UNSPEC, + IFLA_BOND_MODE, + IFLA_BOND_ACTIVE_SLAVE, + __IFLA_BOND_MAX, +}; + + + + + +enum { + IFLA_VF_INFO_UNSPEC, + IFLA_VF_INFO, + __IFLA_VF_INFO_MAX, +}; + + + +enum { + IFLA_VF_UNSPEC, + IFLA_VF_MAC, + IFLA_VF_VLAN, + IFLA_VF_TX_RATE, + IFLA_VF_SPOOFCHK, + IFLA_VF_LINK_STATE, + __IFLA_VF_MAX, +}; + + + +struct ifla_vf_mac { + __u32 vf; + __u8 mac[32]; +}; + +struct ifla_vf_vlan { + __u32 vf; + __u32 vlan; + __u32 qos; +}; + +struct ifla_vf_tx_rate { + __u32 vf; + __u32 rate; +}; + +struct ifla_vf_spoofchk { + __u32 vf; + __u32 setting; +}; + +enum { + IFLA_VF_LINK_STATE_AUTO, + IFLA_VF_LINK_STATE_ENABLE, + IFLA_VF_LINK_STATE_DISABLE, + __IFLA_VF_LINK_STATE_MAX, +}; + +struct ifla_vf_link_state { + __u32 vf; + __u32 link_state; +}; +# 407 "/usr/include/linux/if_link.h" 3 4 +enum { + IFLA_VF_PORT_UNSPEC, + IFLA_VF_PORT, + __IFLA_VF_PORT_MAX, +}; + + + +enum { + IFLA_PORT_UNSPEC, + IFLA_PORT_VF, + IFLA_PORT_PROFILE, + IFLA_PORT_VSI_TYPE, + IFLA_PORT_INSTANCE_UUID, + IFLA_PORT_HOST_UUID, + IFLA_PORT_REQUEST, + IFLA_PORT_RESPONSE, + __IFLA_PORT_MAX, +}; + + + + + + + +enum { + PORT_REQUEST_PREASSOCIATE = 0, + PORT_REQUEST_PREASSOCIATE_RR, + PORT_REQUEST_ASSOCIATE, + PORT_REQUEST_DISASSOCIATE, +}; + +enum { + PORT_VDP_RESPONSE_SUCCESS = 0, + PORT_VDP_RESPONSE_INVALID_FORMAT, + PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES, + PORT_VDP_RESPONSE_UNUSED_VTID, + PORT_VDP_RESPONSE_VTID_VIOLATION, + PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION, + PORT_VDP_RESPONSE_OUT_OF_SYNC, + + PORT_PROFILE_RESPONSE_SUCCESS = 0x100, + PORT_PROFILE_RESPONSE_INPROGRESS, + PORT_PROFILE_RESPONSE_INVALID, + PORT_PROFILE_RESPONSE_BADSTATE, + PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES, + PORT_PROFILE_RESPONSE_ERROR, +}; + +struct ifla_port_vsi { + __u8 vsi_mgr_id; + __u8 vsi_type_id[3]; + __u8 vsi_type_version; + __u8 pad[3]; +}; + + + + +enum { + IFLA_IPOIB_UNSPEC, + IFLA_IPOIB_PKEY, + IFLA_IPOIB_MODE, + IFLA_IPOIB_UMCAST, + __IFLA_IPOIB_MAX +}; + +enum { + IPOIB_MODE_DATAGRAM = 0, + IPOIB_MODE_CONNECTED = 1, +}; + + + + + + +enum { + IFLA_HSR_UNSPEC, + IFLA_HSR_SLAVE1, + IFLA_HSR_SLAVE2, + IFLA_HSR_MULTICAST_SPEC, + IFLA_HSR_SUPERVISION_ADDR, + IFLA_HSR_SEQ_NR, + __IFLA_HSR_MAX, +}; +# 7 "/usr/include/linux/rtnetlink.h" 2 3 4 +# 1 "/usr/include/linux/if_addr.h" 1 3 4 + + + + + + +struct ifaddrmsg { + __u8 ifa_family; + __u8 ifa_prefixlen; + __u8 ifa_flags; + __u8 ifa_scope; + __u32 ifa_index; +}; +# 22 "/usr/include/linux/if_addr.h" 3 4 +enum { + IFA_UNSPEC, + IFA_ADDRESS, + IFA_LOCAL, + IFA_LABEL, + IFA_BROADCAST, + IFA_ANYCAST, + IFA_CACHEINFO, + IFA_MULTICAST, + __IFA_MAX, +}; +# 48 "/usr/include/linux/if_addr.h" 3 4 +struct ifa_cacheinfo { + __u32 ifa_prefered; + __u32 ifa_valid; + __u32 cstamp; + __u32 tstamp; +}; +# 8 "/usr/include/linux/rtnetlink.h" 2 3 4 +# 1 "/usr/include/linux/neighbour.h" 1 3 4 + + + + + + +struct ndmsg { + __u8 ndm_family; + __u8 ndm_pad1; + __u16 ndm_pad2; + __s32 ndm_ifindex; + __u16 ndm_state; + __u8 ndm_flags; + __u8 ndm_type; +}; + +enum { + NDA_UNSPEC, + NDA_DST, + NDA_LLADDR, + NDA_CACHEINFO, + NDA_PROBES, + NDA_VLAN, + NDA_PORT, + NDA_VNI, + NDA_IFINDEX, + __NDA_MAX +}; +# 64 "/usr/include/linux/neighbour.h" 3 4 +struct nda_cacheinfo { + __u32 ndm_confirmed; + __u32 ndm_used; + __u32 ndm_updated; + __u32 ndm_refcnt; +}; +# 96 "/usr/include/linux/neighbour.h" 3 4 +struct ndt_stats { + __u64 ndts_allocs; + __u64 ndts_destroys; + __u64 ndts_hash_grows; + __u64 ndts_res_failed; + __u64 ndts_lookups; + __u64 ndts_hits; + __u64 ndts_rcv_probes_mcast; + __u64 ndts_rcv_probes_ucast; + __u64 ndts_periodic_gc_runs; + __u64 ndts_forced_gc_runs; +}; + +enum { + NDTPA_UNSPEC, + NDTPA_IFINDEX, + NDTPA_REFCNT, + NDTPA_REACHABLE_TIME, + NDTPA_BASE_REACHABLE_TIME, + NDTPA_RETRANS_TIME, + NDTPA_GC_STALETIME, + NDTPA_DELAY_PROBE_TIME, + NDTPA_QUEUE_LEN, + NDTPA_APP_PROBES, + NDTPA_UCAST_PROBES, + NDTPA_MCAST_PROBES, + NDTPA_ANYCAST_DELAY, + NDTPA_PROXY_DELAY, + NDTPA_PROXY_QLEN, + NDTPA_LOCKTIME, + NDTPA_QUEUE_LENBYTES, + __NDTPA_MAX +}; + + +struct ndtmsg { + __u8 ndtm_family; + __u8 ndtm_pad1; + __u16 ndtm_pad2; +}; + +struct ndt_config { + __u16 ndtc_key_len; + __u16 ndtc_entry_size; + __u32 ndtc_entries; + __u32 ndtc_last_flush; + __u32 ndtc_last_rand; + __u32 ndtc_hash_rnd; + __u32 ndtc_hash_mask; + __u32 ndtc_hash_chain_gc; + __u32 ndtc_proxy_qlen; +}; + +enum { + NDTA_UNSPEC, + NDTA_NAME, + NDTA_THRESH1, + NDTA_THRESH2, + NDTA_THRESH3, + NDTA_CONFIG, + NDTA_PARMS, + NDTA_STATS, + NDTA_GC_INTERVAL, + __NDTA_MAX +}; +# 9 "/usr/include/linux/rtnetlink.h" 2 3 4 +# 23 "/usr/include/linux/rtnetlink.h" 3 4 +enum { + RTM_BASE = 16, + + + RTM_NEWLINK = 16, + + RTM_DELLINK, + + RTM_GETLINK, + + RTM_SETLINK, + + + RTM_NEWADDR = 20, + + RTM_DELADDR, + + RTM_GETADDR, + + + RTM_NEWROUTE = 24, + + RTM_DELROUTE, + + RTM_GETROUTE, + + + RTM_NEWNEIGH = 28, + + RTM_DELNEIGH, + + RTM_GETNEIGH, + + + RTM_NEWRULE = 32, + + RTM_DELRULE, + + RTM_GETRULE, + + + RTM_NEWQDISC = 36, + + RTM_DELQDISC, + + RTM_GETQDISC, + + + RTM_NEWTCLASS = 40, + + RTM_DELTCLASS, + + RTM_GETTCLASS, + + + RTM_NEWTFILTER = 44, + + RTM_DELTFILTER, + + RTM_GETTFILTER, + + + RTM_NEWACTION = 48, + + RTM_DELACTION, + + RTM_GETACTION, + + + RTM_NEWPREFIX = 52, + + + RTM_GETMULTICAST = 58, + + + RTM_GETANYCAST = 62, + + + RTM_NEWNEIGHTBL = 64, + + RTM_GETNEIGHTBL = 66, + + RTM_SETNEIGHTBL, + + + RTM_NEWNDUSEROPT = 68, + + + RTM_NEWADDRLABEL = 72, + + RTM_DELADDRLABEL, + + RTM_GETADDRLABEL, + + + RTM_GETDCB = 78, + + RTM_SETDCB, + + + RTM_NEWNETCONF = 80, + + RTM_GETNETCONF = 82, + + + RTM_NEWMDB = 84, + + RTM_DELMDB = 85, + + RTM_GETMDB = 86, + + + __RTM_MAX, + +}; +# 149 "/usr/include/linux/rtnetlink.h" 3 4 +struct rtattr { + unsigned short rta_len; + unsigned short rta_type; +}; +# 175 "/usr/include/linux/rtnetlink.h" 3 4 +struct rtmsg { + unsigned char rtm_family; + unsigned char rtm_dst_len; + unsigned char rtm_src_len; + unsigned char rtm_tos; + + unsigned char rtm_table; + unsigned char rtm_protocol; + unsigned char rtm_scope; + unsigned char rtm_type; + + unsigned rtm_flags; +}; + + + +enum { + RTN_UNSPEC, + RTN_UNICAST, + RTN_LOCAL, + RTN_BROADCAST, + + RTN_ANYCAST, + + RTN_MULTICAST, + RTN_BLACKHOLE, + RTN_UNREACHABLE, + RTN_PROHIBIT, + RTN_THROW, + RTN_NAT, + RTN_XRESOLVE, + __RTN_MAX +}; +# 250 "/usr/include/linux/rtnetlink.h" 3 4 +enum rt_scope_t { + RT_SCOPE_UNIVERSE=0, + + RT_SCOPE_SITE=200, + RT_SCOPE_LINK=253, + RT_SCOPE_HOST=254, + RT_SCOPE_NOWHERE=255 +}; +# 268 "/usr/include/linux/rtnetlink.h" 3 4 +enum rt_class_t { + RT_TABLE_UNSPEC=0, + + RT_TABLE_COMPAT=252, + RT_TABLE_DEFAULT=253, + RT_TABLE_MAIN=254, + RT_TABLE_LOCAL=255, + RT_TABLE_MAX=0xFFFFFFFF +}; + + + + +enum rtattr_type_t { + RTA_UNSPEC, + RTA_DST, + RTA_SRC, + RTA_IIF, + RTA_OIF, + RTA_GATEWAY, + RTA_PRIORITY, + RTA_PREFSRC, + RTA_METRICS, + RTA_MULTIPATH, + RTA_PROTOINFO, + RTA_FLOW, + RTA_CACHEINFO, + RTA_SESSION, + RTA_MP_ALGO, + RTA_TABLE, + RTA_MARK, + RTA_MFC_STATS, + __RTA_MAX +}; +# 317 "/usr/include/linux/rtnetlink.h" 3 4 +struct rtnexthop { + unsigned short rtnh_len; + unsigned char rtnh_flags; + unsigned char rtnh_hops; + int rtnh_ifindex; +}; +# 343 "/usr/include/linux/rtnetlink.h" 3 4 +struct rta_cacheinfo { + __u32 rta_clntref; + __u32 rta_lastuse; + __s32 rta_expires; + __u32 rta_error; + __u32 rta_used; + + + __u32 rta_id; + __u32 rta_ts; + __u32 rta_tsage; +}; + + + +enum { + RTAX_UNSPEC, + + RTAX_LOCK, + + RTAX_MTU, + + RTAX_WINDOW, + + RTAX_RTT, + + RTAX_RTTVAR, + + RTAX_SSTHRESH, + + RTAX_CWND, + + RTAX_ADVMSS, + + RTAX_REORDERING, + + RTAX_HOPLIMIT, + + RTAX_INITCWND, + + RTAX_FEATURES, + + RTAX_RTO_MIN, + + RTAX_INITRWND, + + RTAX_QUICKACK, + + __RTAX_MAX +}; +# 401 "/usr/include/linux/rtnetlink.h" 3 4 +struct rta_session { + __u8 proto; + __u8 pad1; + __u16 pad2; + + union { + struct { + __u16 sport; + __u16 dport; + } ports; + + struct { + __u8 type; + __u8 code; + __u16 ident; + } icmpt; + + __u32 spi; + } u; +}; + +struct rta_mfc_stats { + __u64 mfcs_packets; + __u64 mfcs_bytes; + __u64 mfcs_wrong_if; +}; + + + + + +struct rtgenmsg { + unsigned char rtgen_family; +}; +# 445 "/usr/include/linux/rtnetlink.h" 3 4 +struct ifinfomsg { + unsigned char ifi_family; + unsigned char __ifi_pad; + unsigned short ifi_type; + int ifi_index; + unsigned ifi_flags; + unsigned ifi_change; +}; + + + + + +struct prefixmsg { + unsigned char prefix_family; + unsigned char prefix_pad1; + unsigned short prefix_pad2; + int prefix_ifindex; + unsigned char prefix_type; + unsigned char prefix_len; + unsigned char prefix_flags; + unsigned char prefix_pad3; +}; + +enum +{ + PREFIX_UNSPEC, + PREFIX_ADDRESS, + PREFIX_CACHEINFO, + __PREFIX_MAX +}; + + + +struct prefix_cacheinfo { + __u32 preferred_time; + __u32 valid_time; +}; + + + + + + +struct tcmsg { + unsigned char tcm_family; + unsigned char tcm__pad1; + unsigned short tcm__pad2; + int tcm_ifindex; + __u32 tcm_handle; + __u32 tcm_parent; + __u32 tcm_info; +}; + +enum { + TCA_UNSPEC, + TCA_KIND, + TCA_OPTIONS, + TCA_STATS, + TCA_XSTATS, + TCA_RATE, + TCA_FCNT, + TCA_STATS2, + TCA_STAB, + __TCA_MAX +}; +# 521 "/usr/include/linux/rtnetlink.h" 3 4 +struct nduseroptmsg { + unsigned char nduseropt_family; + unsigned char nduseropt_pad1; + unsigned short nduseropt_opts_len; + int nduseropt_ifindex; + __u8 nduseropt_icmp_type; + __u8 nduseropt_icmp_code; + unsigned short nduseropt_pad2; + unsigned int nduseropt_pad3; + +}; + +enum { + NDUSEROPT_UNSPEC, + NDUSEROPT_SRCADDR, + __NDUSEROPT_MAX +}; +# 563 "/usr/include/linux/rtnetlink.h" 3 4 +enum rtnetlink_groups { + RTNLGRP_NONE, + + RTNLGRP_LINK, + + RTNLGRP_NOTIFY, + + RTNLGRP_NEIGH, + + RTNLGRP_TC, + + RTNLGRP_IPV4_IFADDR, + + RTNLGRP_IPV4_MROUTE, + + RTNLGRP_IPV4_ROUTE, + + RTNLGRP_IPV4_RULE, + + RTNLGRP_IPV6_IFADDR, + + RTNLGRP_IPV6_MROUTE, + + RTNLGRP_IPV6_ROUTE, + + RTNLGRP_IPV6_IFINFO, + + RTNLGRP_DECnet_IFADDR, + + RTNLGRP_NOP2, + RTNLGRP_DECnet_ROUTE, + + RTNLGRP_DECnet_RULE, + + RTNLGRP_NOP4, + RTNLGRP_IPV6_PREFIX, + + RTNLGRP_IPV6_RULE, + + RTNLGRP_ND_USEROPT, + + RTNLGRP_PHONET_IFADDR, + + RTNLGRP_PHONET_ROUTE, + + RTNLGRP_DCB, + + RTNLGRP_IPV4_NETCONF, + + RTNLGRP_IPV6_NETCONF, + + RTNLGRP_MDB, + + __RTNLGRP_MAX +}; + + + +struct tcamsg { + unsigned char tca_family; + unsigned char tca__pad1; + unsigned short tca__pad2; +}; +# 9 "networking/libiproute/ip_common.h" 2 + + + + + + + + +# 16 "networking/libiproute/ip_common.h" +#pragma GCC visibility push(hidden) +# 16 "networking/libiproute/ip_common.h" + + +char **ip_parse_common_args(char **argv); + +int ipaddr_list_or_flush(char **argv, int flush); + + + +int do_ipaddr(char **argv); +int do_iproute(char **argv); +int do_iprule(char **argv); + +int do_iptunnel(char **argv); +int do_iplink(char **argv); + + + + + +# 34 "networking/libiproute/ip_common.h" +#pragma GCC visibility pop +# 34 "networking/libiproute/ip_common.h" + +# 16 "networking/libiproute/ipaddress.c" 2 +# 1 "networking/libiproute/rt_names.h" 1 + + + + + +# 5 "networking/libiproute/rt_names.h" +#pragma GCC visibility push(hidden) +# 5 "networking/libiproute/rt_names.h" + + + +extern const char* rtnl_rtprot_n2a(int id, char *buf) ; +extern const char* rtnl_rtscope_n2a(int id, char *buf) ; +extern const char* rtnl_rtrealm_n2a(int id, char *buf) ; +extern const char* rtnl_dsfield_n2a(int id, char *buf) ; +extern const char* rtnl_rttable_n2a(int id, char *buf) ; +extern int rtnl_rtprot_a2n(uint32_t *id, char *arg) ; +extern int rtnl_rtscope_a2n(uint32_t *id, char *arg) ; +extern int rtnl_rtrealm_a2n(uint32_t *id, char *arg) ; +extern int rtnl_dsfield_a2n(uint32_t *id, char *arg) ; +extern int rtnl_rttable_a2n(uint32_t *id, char *arg) ; + +extern const char* ll_type_n2a(int type, char *buf) ; + +extern const char* ll_addr_n2a(unsigned char *addr, int alen, int type, + char *buf, int blen) ; +extern int ll_addr_a2n(unsigned char *lladdr, int len, char *arg) ; + +extern const char* ll_proto_n2a(unsigned short id, char *buf, int len) ; +extern int ll_proto_a2n(unsigned short *id, char *buf) ; + + +# 28 "networking/libiproute/rt_names.h" +#pragma GCC visibility pop +# 28 "networking/libiproute/rt_names.h" + +# 17 "networking/libiproute/ipaddress.c" 2 +# 1 "networking/libiproute/utils.h" 1 + + + + +# 1 "networking/libiproute/libnetlink.h" 1 +# 11 "networking/libiproute/libnetlink.h" + +# 11 "networking/libiproute/libnetlink.h" +#pragma GCC visibility push(hidden) +# 11 "networking/libiproute/libnetlink.h" + + +struct rtnl_handle { + int fd; + struct sockaddr_nl local; + struct sockaddr_nl peer; + uint32_t seq; + uint32_t dump; +}; + +extern void xrtnl_open(struct rtnl_handle *rth) ; + +extern int xrtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type) ; +extern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) ; +extern int xrtnl_dump_filter(struct rtnl_handle *rth, + int (*filter)(const struct sockaddr_nl*, struct nlmsghdr *n, void*) , + void *arg1) ; + + + + +extern int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, struct nlmsghdr *answer) + + + ; + +extern int rtnl_send(struct rtnl_handle *rth, char *buf, int) ; + + +extern int addattr32(struct nlmsghdr *n, int maxlen, int type, uint32_t data) ; +extern int addattr_l(struct nlmsghdr *n, int maxlen, int type, void *data, int alen) ; +extern int rta_addattr32(struct rtattr *rta, int maxlen, int type, uint32_t data) ; +extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, int alen) ; + +extern void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) ; + + +# 47 "networking/libiproute/libnetlink.h" +#pragma GCC visibility pop +# 47 "networking/libiproute/libnetlink.h" + +# 6 "networking/libiproute/utils.h" 2 +# 1 "networking/libiproute/ll_map.h" 1 + + + + + +# 5 "networking/libiproute/ll_map.h" +#pragma GCC visibility push(hidden) +# 5 "networking/libiproute/ll_map.h" + + +int ll_remember_index(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) ; +int ll_init_map(struct rtnl_handle *rth) ; +int xll_name_to_index(const char *name) ; +const char *ll_index_to_name(int idx) ; +const char *ll_idx_n2a(int idx, char *buf) ; + +unsigned ll_index_to_flags(int idx) ; + + +# 15 "networking/libiproute/ll_map.h" +#pragma GCC visibility pop +# 15 "networking/libiproute/ll_map.h" + +# 7 "networking/libiproute/utils.h" 2 +# 1 "networking/libiproute/rtm_map.h" 1 + + + + + +# 5 "networking/libiproute/rtm_map.h" +#pragma GCC visibility push(hidden) +# 5 "networking/libiproute/rtm_map.h" + + +const char *rtnl_rtntype_n2a(int id, char *buf) ; +int rtnl_rtntype_a2n(int *id, char *arg) ; + +int get_rt_realms(uint32_t *realms, char *arg) ; + + +# 12 "networking/libiproute/rtm_map.h" +#pragma GCC visibility pop +# 12 "networking/libiproute/rtm_map.h" + +# 8 "networking/libiproute/utils.h" 2 + + +# 9 "networking/libiproute/utils.h" +#pragma GCC visibility push(hidden) +# 9 "networking/libiproute/utils.h" + + +extern family_t preferred_family; +extern smallint show_stats; +extern smallint show_details; +extern smallint show_raw; +extern smallint resolve_hosts; +extern smallint oneline; +extern char _SL_; +# 29 "networking/libiproute/utils.h" +extern void incomplete_command(void) __attribute__ ((__noreturn__)); + + + +typedef struct { + uint8_t family; + uint8_t bytelen; + int16_t bitlen; + uint32_t data[4]; +} inet_prefix; +# 47 "networking/libiproute/utils.h" +struct dn_naddr { + unsigned short a_len; + unsigned char a_addr[20]; +}; + + + +struct ipx_addr { + uint32_t ipx_net; + uint8_t ipx_node[6]; +}; + +extern uint32_t get_addr32(char *name); +extern int get_addr_1(inet_prefix *dst, char *arg, int family); + +extern int get_addr(inet_prefix *dst, char *arg, int family); +extern void get_prefix(inet_prefix *dst, char *arg, int family); + +extern unsigned get_unsigned(char *arg, const char *errmsg); +extern uint32_t get_u32(char *arg, const char *errmsg); +extern uint16_t get_u16(char *arg, const char *errmsg); + +extern const char *rt_addr_n2a(int af, void *addr, char *buf, int buflen); + + + + + + + +void invarg(const char *, const char *) __attribute__ ((__noreturn__)); +void duparg(const char *, const char *) __attribute__ ((__noreturn__)); +void duparg2(const char *, const char *) __attribute__ ((__noreturn__)); +int inet_addr_match(const inet_prefix *a, const inet_prefix *b, int bits); + +const char *dnet_ntop(int af, const void *addr, char *str, size_t len); +int dnet_pton(int af, const char *src, void *addr); + +const char *ipx_ntop(int af, const void *addr, char *str, size_t len); +int ipx_pton(int af, const char *src, void *addr); + + +# 88 "networking/libiproute/utils.h" +#pragma GCC visibility pop +# 88 "networking/libiproute/utils.h" + +# 18 "networking/libiproute/ipaddress.c" 2 + + + + + + +struct filter_t { + char *label; + char *flushb; + struct rtnl_handle *rth; + int scope, scopemask; + int flags, flagmask; + int flushp; + int flushe; + int ifindex; + family_t family; + smallint showqueue; + smallint oneline; + smallint up; + smallint flushed; + inet_prefix pfx; +} __attribute__((__may_alias__)); +typedef struct filter_t filter_t; + + + + +static void print_link_flags(unsigned flags, unsigned mdown) +{ + static const int flag_masks[] = { + IFF_LOOPBACK, IFF_BROADCAST, IFF_POINTOPOINT, + IFF_MULTICAST, IFF_NOARP, IFF_UP, 0x10000 }; + static const char flag_labels[] __attribute__((aligned(1))) = + "LOOPBACK\0""BROADCAST\0""POINTOPOINT\0" + "MULTICAST\0""NOARP\0""UP\0""LOWER_UP\0"; + + bb_putchar('<'); + if (flags & IFF_UP && !(flags & IFF_RUNNING)) + printf("NO-CARRIER,"); + flags &= ~IFF_RUNNING; +# 69 "networking/libiproute/ipaddress.c" + flags = print_flags_separated(flag_masks, flag_labels, flags, ","); + if (flags) + printf("%x", flags); + if (mdown) + printf(",M-DOWN"); + printf("> "); +} + +static void print_queuelen(char *name) +{ + struct ifreq ifr; + int s; + + s = socket(2, SOCK_STREAM, 0); + if (s < 0) + return; + + memset(&ifr, 0, sizeof(ifr)); + strncpy_IFNAMSIZ(ifr.ifr_ifrn.ifrn_name, name); + if (bb_ioctl_or_warn(s,0x8942,&ifr,"SIOCGIFTXQLEN") < 0) { + close(s); + return; + } + close(s); + + if (ifr.ifr_ifru.ifru_ivalue) + printf("qlen %d", ifr.ifr_ifru.ifru_ivalue); +} + +static __attribute__((__noinline__)) int print_linkinfo(const struct nlmsghdr *n) +{ + struct ifinfomsg *ifi = ((void*)(((char*)n) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + struct rtattr *tb[(__IFLA_MAX - 1)+1]; + int len = n->nlmsg_len; + + if (n->nlmsg_type != RTM_NEWLINK && n->nlmsg_type != RTM_DELLINK) + return 0; + + len -= ((sizeof(*ifi)) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))); + if (len < 0) + return -1; + + if ((*(filter_t*)&bb_common_bufsiz1).ifindex && ifi->ifi_index != (*(filter_t*)&bb_common_bufsiz1).ifindex) + return 0; + if ((*(filter_t*)&bb_common_bufsiz1).up && !(ifi->ifi_flags & IFF_UP)) + return 0; + + memset(tb, 0, sizeof(tb)); + parse_rtattr(tb, (__IFLA_MAX - 1), ((struct rtattr*)(((char*)(ifi)) + ( ((sizeof(struct ifinfomsg))+4U -1) & ~(4U -1) ))), len); + if (tb[IFLA_IFNAME] == ((void *)0)) { + bb_error_msg("nil ifname"); + return -1; + } + if ((*(filter_t*)&bb_common_bufsiz1).label + && (!(*(filter_t*)&bb_common_bufsiz1).family || (*(filter_t*)&bb_common_bufsiz1).family == 17) + && fnmatch((*(filter_t*)&bb_common_bufsiz1).label, ((void*)(((char*)(tb[IFLA_IFNAME])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), 0) + ) { + return 0; + } + + if (n->nlmsg_type == RTM_DELLINK) + printf("Deleted "); + + printf("%d: %s", ifi->ifi_index, + + (char*)((void*)(((char*)(tb[IFLA_IFNAME])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))) + ); + + { + unsigned m_flag = 0; + if (tb[IFLA_LINK]) { + char b1[64]; + int iflink = *(int*)((void*)(((char*)(tb[IFLA_LINK])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + if (iflink == 0) + printf("@NONE: "); + else { + printf("@%s: ", ll_idx_n2a(iflink, b1)); + m_flag = ll_index_to_flags(iflink); + m_flag = !(m_flag & IFF_UP); + } + } else { + printf(": "); + } + print_link_flags(ifi->ifi_flags, m_flag); + } + + if (tb[IFLA_MTU]) + printf("mtu %u ", *(int*)((void*)(((char*)(tb[IFLA_MTU])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))))); + if (tb[IFLA_QDISC]) + printf("qdisc %s ", (char*)((void*)(((char*)(tb[IFLA_QDISC])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))))); + + if (tb[IFLA_MASTER]) { + char b1[64]; + printf("master %s ", ll_idx_n2a(*(int*)((void*)(((char*)(tb[IFLA_MASTER])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), b1)); + } +# 175 "networking/libiproute/ipaddress.c" + if ((*(filter_t*)&bb_common_bufsiz1).showqueue) + print_queuelen((char*)((void*)(((char*)(tb[IFLA_IFNAME])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))))); + + if (!(*(filter_t*)&bb_common_bufsiz1).family || (*(filter_t*)&bb_common_bufsiz1).family == 17) { + char b1[64]; + printf("%c link/%s ", _SL_, ll_type_n2a(ifi->ifi_type, b1)); + + if (tb[IFLA_ADDRESS]) { + fputs_unlocked(ll_addr_n2a(((void*)(((char*)(tb[IFLA_ADDRESS])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), ((int)((tb[IFLA_ADDRESS])->rta_len) - (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))), ifi->ifi_type, b1, sizeof(b1)), stdout) + + + ; + } + if (tb[IFLA_BROADCAST]) { + if (ifi->ifi_flags & IFF_POINTOPOINT) + printf(" peer "); + else + printf(" brd "); + fputs_unlocked(ll_addr_n2a(((void*)(((char*)(tb[IFLA_BROADCAST])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), ((int)((tb[IFLA_BROADCAST])->rta_len) - (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0))), ifi->ifi_type, b1, sizeof(b1)), stdout) + + + ; + } + } + bb_putchar('\n'); + + return 0; +} + +static int flush_update(void) +{ + if (rtnl_send((*(filter_t*)&bb_common_bufsiz1).rth, (*(filter_t*)&bb_common_bufsiz1).flushb, (*(filter_t*)&bb_common_bufsiz1).flushp) < 0) { + bb_perror_msg("can't send flush request"); + return -1; + } + (*(filter_t*)&bb_common_bufsiz1).flushp = 0; + return 0; +} + +static int print_addrinfo(const struct sockaddr_nl *who __attribute__ ((__unused__)), + struct nlmsghdr *n, void *arg __attribute__ ((__unused__))) +{ + struct ifaddrmsg *ifa = ((void*)(((char*)n) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + int len = n->nlmsg_len; + struct rtattr * rta_tb[(__IFA_MAX - 1)+1]; + char abuf[256]; + char b1[64]; + + if (n->nlmsg_type != RTM_NEWADDR && n->nlmsg_type != RTM_DELADDR) + return 0; + len -= ((sizeof(*ifa)) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))); + if (len < 0) { + bb_error_msg("wrong nlmsg len %d", len); + return -1; + } + + if ((*(filter_t*)&bb_common_bufsiz1).flushb && n->nlmsg_type != RTM_NEWADDR) + return 0; + + memset(rta_tb, 0, sizeof(rta_tb)); + parse_rtattr(rta_tb, (__IFA_MAX - 1), ((struct rtattr*)(((char*)(ifa)) + ( ((sizeof(struct ifaddrmsg))+4U -1) & ~(4U -1) ))), n->nlmsg_len - ((sizeof(*ifa)) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) )))); + + if (!rta_tb[IFA_LOCAL]) + rta_tb[IFA_LOCAL] = rta_tb[IFA_ADDRESS]; + if (!rta_tb[IFA_ADDRESS]) + rta_tb[IFA_ADDRESS] = rta_tb[IFA_LOCAL]; + + if ((*(filter_t*)&bb_common_bufsiz1).ifindex && (*(filter_t*)&bb_common_bufsiz1).ifindex != ifa->ifa_index) + return 0; + if (((*(filter_t*)&bb_common_bufsiz1).scope ^ ifa->ifa_scope) & (*(filter_t*)&bb_common_bufsiz1).scopemask) + return 0; + if (((*(filter_t*)&bb_common_bufsiz1).flags ^ ifa->ifa_flags) & (*(filter_t*)&bb_common_bufsiz1).flagmask) + return 0; + if ((*(filter_t*)&bb_common_bufsiz1).label) { + const char *label; + if (rta_tb[IFA_LABEL]) + label = ((void*)(((char*)(rta_tb[IFA_LABEL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + else + label = ll_idx_n2a(ifa->ifa_index, b1); + if (fnmatch((*(filter_t*)&bb_common_bufsiz1).label, label, 0) != 0) + return 0; + } + if ((*(filter_t*)&bb_common_bufsiz1).pfx.family) { + if (rta_tb[IFA_LOCAL]) { + inet_prefix dst; + memset(&dst, 0, sizeof(dst)); + dst.family = ifa->ifa_family; + memcpy(&dst.data, ((void*)(((char*)(rta_tb[IFA_LOCAL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), ((int)((rta_tb[IFA_LOCAL])->rta_len) - (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + if (inet_addr_match(&dst, &(*(filter_t*)&bb_common_bufsiz1).pfx, (*(filter_t*)&bb_common_bufsiz1).pfx.bitlen)) + return 0; + } + } + + if ((*(filter_t*)&bb_common_bufsiz1).flushb) { + struct nlmsghdr *fn; + if (( (((*(filter_t*)&bb_common_bufsiz1).flushp)+4U -1) & ~(4U -1) ) + n->nlmsg_len > (*(filter_t*)&bb_common_bufsiz1).flushe) { + if (flush_update()) + return -1; + } + fn = (struct nlmsghdr*)((*(filter_t*)&bb_common_bufsiz1).flushb + ( (((*(filter_t*)&bb_common_bufsiz1).flushp)+4U -1) & ~(4U -1) )); + memcpy(fn, n, n->nlmsg_len); + fn->nlmsg_type = RTM_DELADDR; + fn->nlmsg_flags = 1; + fn->nlmsg_seq = ++(*(filter_t*)&bb_common_bufsiz1).rth->seq; + (*(filter_t*)&bb_common_bufsiz1).flushp = (((char*)fn) + n->nlmsg_len) - (*(filter_t*)&bb_common_bufsiz1).flushb; + (*(filter_t*)&bb_common_bufsiz1).flushed = 1; + return 0; + } + + if (n->nlmsg_type == RTM_DELADDR) + printf("Deleted "); + + if ((*(filter_t*)&bb_common_bufsiz1).oneline) + printf("%u: %s", ifa->ifa_index, ll_index_to_name(ifa->ifa_index)); + if (ifa->ifa_family == 2) + printf(" inet "); + else if (ifa->ifa_family == 10) + printf(" inet6 "); + else + printf(" family %d ", ifa->ifa_family); + + if (rta_tb[IFA_LOCAL]) { + fputs_unlocked(rt_addr_n2a(ifa->ifa_family, ((void*)(((char*)(rta_tb[IFA_LOCAL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), abuf, sizeof(abuf)), stdout) + + ; + + if (rta_tb[IFA_ADDRESS] == ((void *)0) + || memcmp(((void*)(((char*)(rta_tb[IFA_ADDRESS])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), ((void*)(((char*)(rta_tb[IFA_LOCAL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), 4) == 0 + ) { + printf("/%d ", ifa->ifa_prefixlen); + } else { + printf(" peer %s/%d ", + rt_addr_n2a(ifa->ifa_family, + ((void*)(((char*)(rta_tb[IFA_ADDRESS])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), + abuf, sizeof(abuf)), + ifa->ifa_prefixlen); + } + } + + if (rta_tb[IFA_BROADCAST]) { + printf("brd %s ", + rt_addr_n2a(ifa->ifa_family, + ((void*)(((char*)(rta_tb[IFA_BROADCAST])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), + abuf, sizeof(abuf)) + ); + } + if (rta_tb[IFA_ANYCAST]) { + printf("any %s ", + rt_addr_n2a(ifa->ifa_family, + ((void*)(((char*)(rta_tb[IFA_ANYCAST])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), + abuf, sizeof(abuf)) + ); + } + printf("scope %s ", rtnl_rtscope_n2a(ifa->ifa_scope, b1)); + if (ifa->ifa_flags & 0x01) { + ifa->ifa_flags &= ~0x01; + printf("secondary "); + } + if (ifa->ifa_flags & 0x40) { + ifa->ifa_flags &= ~0x40; + printf("tentative "); + } + if (ifa->ifa_flags & 0x20) { + ifa->ifa_flags &= ~0x20; + printf("deprecated "); + } + if (!(ifa->ifa_flags & 0x80)) { + printf("dynamic "); + } else + ifa->ifa_flags &= ~0x80; + if (ifa->ifa_flags) + printf("flags %02x ", ifa->ifa_flags); + if (rta_tb[IFA_LABEL]) + fputs_unlocked((char*)((void*)(((char*)(rta_tb[IFA_LABEL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), stdout); + if (rta_tb[IFA_CACHEINFO]) { + struct ifa_cacheinfo *ci = ((void*)(((char*)(rta_tb[IFA_CACHEINFO])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + char buf[128]; + bb_putchar(_SL_); + if (ci->ifa_valid == 0xFFFFFFFFU) + sprintf(buf, "valid_lft forever"); + else + sprintf(buf, "valid_lft %dsec", ci->ifa_valid); + if (ci->ifa_prefered == 0xFFFFFFFFU) + sprintf(buf+strlen(buf), " preferred_lft forever"); + else + sprintf(buf+strlen(buf), " preferred_lft %dsec", ci->ifa_prefered); + printf(" %s", buf); + } + bb_putchar('\n'); + + return 0; +} + + +struct nlmsg_list { + struct nlmsg_list *next; + struct nlmsghdr h; +}; + +static int print_selected_addrinfo(int ifindex, struct nlmsg_list *ainfo) +{ + for (; ainfo; ainfo = ainfo->next) { + struct nlmsghdr *n = &ainfo->h; + struct ifaddrmsg *ifa = ((void*)(((char*)n) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + + if (n->nlmsg_type != RTM_NEWADDR) + continue; + if (n->nlmsg_len < ((sizeof(ifa)) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) )))) + return -1; + if (ifa->ifa_index != ifindex + || ((*(filter_t*)&bb_common_bufsiz1).family && (*(filter_t*)&bb_common_bufsiz1).family != ifa->ifa_family) + ) { + continue; + } + print_addrinfo(((void *)0), n, ((void *)0)); + } + return 0; +} + + +static int store_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) +{ + struct nlmsg_list **linfo = (struct nlmsg_list**)arg; + struct nlmsg_list *h; + struct nlmsg_list **lp; + + h = xzalloc(n->nlmsg_len + sizeof(void*)); + + memcpy(&h->h, n, n->nlmsg_len); + + + for (lp = linfo; *lp; lp = &(*lp)->next) + continue; + *lp = h; + + ll_remember_index(who, n, ((void *)0)); + return 0; +} + +static void ipaddr_reset_filter(int _oneline) +{ + memset(&(*(filter_t*)&bb_common_bufsiz1), 0, sizeof((*(filter_t*)&bb_common_bufsiz1))); + (*(filter_t*)&bb_common_bufsiz1).oneline = _oneline; +} + + +int ipaddr_list_or_flush(char **argv, int flush) +{ + static const char option[] __attribute__((aligned(1))) = "to\0""scope\0""up\0""label\0""dev\0"; + + struct nlmsg_list *linfo = ((void *)0); + struct nlmsg_list *ainfo = ((void *)0); + struct nlmsg_list *l; + struct rtnl_handle rth; + char *filter_dev = ((void *)0); + int no_link = 0; + + ipaddr_reset_filter(oneline); + (*(filter_t*)&bb_common_bufsiz1).showqueue = 1; + + if ((*(filter_t*)&bb_common_bufsiz1).family == 0) + (*(filter_t*)&bb_common_bufsiz1).family = preferred_family; + + if (flush) { + if (!*argv) { + bb_error_msg_and_die(bb_msg_requires_arg, "flush"); + } + if ((*(filter_t*)&bb_common_bufsiz1).family == 17) { + bb_error_msg_and_die("can't flush link addresses"); + } + } + + while (*argv) { + const smalluint key = index_in_strings(option, *argv); + if (key == 0) { + do { if (!*++argv) incomplete_command(); } while (0); + get_prefix(&(*(filter_t*)&bb_common_bufsiz1).pfx, *argv, (*(filter_t*)&bb_common_bufsiz1).family); + if ((*(filter_t*)&bb_common_bufsiz1).family == 0) { + (*(filter_t*)&bb_common_bufsiz1).family = (*(filter_t*)&bb_common_bufsiz1).pfx.family; + } + } else if (key == 1) { + uint32_t scope = 0; + do { if (!*++argv) incomplete_command(); } while (0); + (*(filter_t*)&bb_common_bufsiz1).scopemask = -1; + if (rtnl_rtscope_a2n(&scope, *argv)) { + if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*argv) && __builtin_constant_p ("all") && (__s1_len = strlen (*argv), __s2_len = strlen ("all"), (!((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("all") + 1) - (size_t)(const void *)("all") == 1) || __s2_len >= 4)) ? __builtin_strcmp (*argv, "all") : (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) && (__s1_len = strlen (*argv), __s1_len < 4) ? (__builtin_constant_p ("all") && ((size_t)(const void *)(("all") + 1) - (size_t)(const void *)("all") == 1) ? __builtin_strcmp (*argv, "all") : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ("all"); int __result = (((const unsigned char *) (const char *) (*argv))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (*argv))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (*argv))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (*argv))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("all") && ((size_t)(const void *)(("all") + 1) - (size_t)(const void *)("all") == 1) && (__s2_len = strlen ("all"), __s2_len < 4) ? (__builtin_constant_p (*argv) && ((size_t)(const void *)((*argv) + 1) - (size_t)(const void *)(*argv) == 1) ? __builtin_strcmp (*argv, "all") : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (*argv); int __result = (((const unsigned char *) (const char *) ("all"))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) ("all"))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) ("all"))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ("all"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (*argv, "all")))); }) != 0) { + invarg(*argv, "scope"); + } + scope = RT_SCOPE_NOWHERE; + (*(filter_t*)&bb_common_bufsiz1).scopemask = 0; + } + (*(filter_t*)&bb_common_bufsiz1).scope = scope; + } else if (key == 2) { + (*(filter_t*)&bb_common_bufsiz1).up = 1; + } else if (key == 3) { + do { if (!*++argv) incomplete_command(); } while (0); + (*(filter_t*)&bb_common_bufsiz1).label = *argv; + } else { + if (key == 4) + do { if (!*++argv) incomplete_command(); } while (0); + if (filter_dev) + duparg2("dev", *argv); + filter_dev = *argv; + } + argv++; + } + + xrtnl_open(&rth); + + xrtnl_wilddump_request(&rth, preferred_family, RTM_GETLINK); + xrtnl_dump_filter(&rth, store_nlmsg, &linfo); + + if (filter_dev) { + (*(filter_t*)&bb_common_bufsiz1).ifindex = xll_name_to_index(filter_dev); + } + + if (flush) { + char flushb[4096-512]; + + (*(filter_t*)&bb_common_bufsiz1).flushb = flushb; + (*(filter_t*)&bb_common_bufsiz1).flushp = 0; + (*(filter_t*)&bb_common_bufsiz1).flushe = sizeof(flushb); + (*(filter_t*)&bb_common_bufsiz1).rth = &rth; + + for (;;) { + xrtnl_wilddump_request(&rth, (*(filter_t*)&bb_common_bufsiz1).family, RTM_GETADDR); + (*(filter_t*)&bb_common_bufsiz1).flushed = 0; + xrtnl_dump_filter(&rth, print_addrinfo, ((void *)0)); + if ((*(filter_t*)&bb_common_bufsiz1).flushed == 0) { + return 0; + } + if (flush_update() < 0) { + return 1; + } + } + } + + if ((*(filter_t*)&bb_common_bufsiz1).family != 17) { + xrtnl_wilddump_request(&rth, (*(filter_t*)&bb_common_bufsiz1).family, RTM_GETADDR); + xrtnl_dump_filter(&rth, store_nlmsg, &ainfo); + } + + + if ((*(filter_t*)&bb_common_bufsiz1).family && (*(filter_t*)&bb_common_bufsiz1).family != 17) { + struct nlmsg_list **lp; + lp = &linfo; + + if ((*(filter_t*)&bb_common_bufsiz1).oneline) + no_link = 1; + + while ((l = *lp) != ((void *)0)) { + int ok = 0; + struct ifinfomsg *ifi = ((void*)(((char*)&l->h) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + struct nlmsg_list *a; + + for (a = ainfo; a; a = a->next) { + struct nlmsghdr *n = &a->h; + struct ifaddrmsg *ifa = ((void*)(((char*)n) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + + if (ifa->ifa_index != ifi->ifi_index + || ((*(filter_t*)&bb_common_bufsiz1).family && (*(filter_t*)&bb_common_bufsiz1).family != ifa->ifa_family) + ) { + continue; + } + if (((*(filter_t*)&bb_common_bufsiz1).scope ^ ifa->ifa_scope) & (*(filter_t*)&bb_common_bufsiz1).scopemask) + continue; + if (((*(filter_t*)&bb_common_bufsiz1).flags ^ ifa->ifa_flags) & (*(filter_t*)&bb_common_bufsiz1).flagmask) + continue; + if ((*(filter_t*)&bb_common_bufsiz1).pfx.family || (*(filter_t*)&bb_common_bufsiz1).label) { + struct rtattr *tb[(__IFA_MAX - 1)+1]; + memset(tb, 0, sizeof(tb)); + parse_rtattr(tb, (__IFA_MAX - 1), ((struct rtattr*)(((char*)(ifa)) + ( ((sizeof(struct ifaddrmsg))+4U -1) & ~(4U -1) ))), ((n)->nlmsg_len - ( (((((sizeof(struct ifaddrmsg))) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))+4U -1) & ~(4U -1) ))); + if (!tb[IFA_LOCAL]) + tb[IFA_LOCAL] = tb[IFA_ADDRESS]; + + if ((*(filter_t*)&bb_common_bufsiz1).pfx.family && tb[IFA_LOCAL]) { + inet_prefix dst; + memset(&dst, 0, sizeof(dst)); + dst.family = ifa->ifa_family; + memcpy(&dst.data, ((void*)(((char*)(tb[IFA_LOCAL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))), ((int)((tb[IFA_LOCAL])->rta_len) - (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + if (inet_addr_match(&dst, &(*(filter_t*)&bb_common_bufsiz1).pfx, (*(filter_t*)&bb_common_bufsiz1).pfx.bitlen)) + continue; + } + if ((*(filter_t*)&bb_common_bufsiz1).label) { + char b1[64]; + const char *label; + if (tb[IFA_LABEL]) + label = ((void*)(((char*)(tb[IFA_LABEL])) + (( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + (0)))); + else + label = ll_idx_n2a(ifa->ifa_index, b1); + if (fnmatch((*(filter_t*)&bb_common_bufsiz1).label, label, 0) != 0) + continue; + } + } + + ok = 1; + break; + } + if (!ok) + *lp = l->next; + else + lp = &l->next; + } + } + + for (l = linfo; l; l = l->next) { + if (no_link || print_linkinfo(&l->h) == 0) { + struct ifinfomsg *ifi = ((void*)(((char*)&l->h) + ((0) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))))); + if ((*(filter_t*)&bb_common_bufsiz1).family != 17) + print_selected_addrinfo(ifi->ifi_index, ainfo); + } + } + + return 0; +} + +static int default_scope(inet_prefix *lcl) +{ + if (lcl->family == 2) { + if (lcl->bytelen >= 1 && *(uint8_t*)&lcl->data == 127) + return RT_SCOPE_HOST; + } + return 0; +} + + +static int ipaddr_modify(int cmd, char **argv) +{ + static const char option[] __attribute__((aligned(1))) = + "peer\0""remote\0""broadcast\0""brd\0" + "anycast\0""scope\0""dev\0""label\0""local\0"; + struct rtnl_handle rth; + struct { + struct nlmsghdr n; + struct ifaddrmsg ifa; + char buf[256]; + } req; + char *d = ((void *)0); + char *l = ((void *)0); + inet_prefix lcl; + inet_prefix peer; + int local_len = 0; + int peer_len = 0; + int brd_len = 0; + int any_len = 0; + _Bool scoped = 0; + + memset(&req, 0, sizeof(req)); + + req.n.nlmsg_len = ((sizeof(struct ifaddrmsg)) + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) ))); + req.n.nlmsg_flags = 1; + req.n.nlmsg_type = cmd; + req.ifa.ifa_family = preferred_family; + + while (*argv) { + const smalluint arg = index_in_strings(option, *argv); + if (arg <= 1) { + do { if (!*++argv) incomplete_command(); } while (0); + + if (peer_len) { + duparg("peer", *argv); + } + get_prefix(&peer, *argv, req.ifa.ifa_family); + peer_len = peer.bytelen; + if (req.ifa.ifa_family == 0) { + req.ifa.ifa_family = peer.family; + } + addattr_l(&req.n, sizeof(req), IFA_ADDRESS, &peer.data, peer.bytelen); + req.ifa.ifa_prefixlen = peer.bitlen; + } else if (arg <= 3) { + inet_prefix addr; + do { if (!*++argv) incomplete_command(); } while (0); + if (brd_len) { + duparg("broadcast", *argv); + } + if (((*argv)[0] == ('+') && !(*argv)[1])) { + brd_len = -1; + } else if (((*argv)[0] == '-' && !(*argv)[1])) { + brd_len = -2; + } else { + get_addr(&addr, *argv, req.ifa.ifa_family); + if (req.ifa.ifa_family == 0) + req.ifa.ifa_family = addr.family; + addattr_l(&req.n, sizeof(req), IFA_BROADCAST, &addr.data, addr.bytelen); + brd_len = addr.bytelen; + } + } else if (arg == 4) { + inet_prefix addr; + do { if (!*++argv) incomplete_command(); } while (0); + if (any_len) { + duparg("anycast", *argv); + } + get_addr(&addr, *argv, req.ifa.ifa_family); + if (req.ifa.ifa_family == 0) { + req.ifa.ifa_family = addr.family; + } + addattr_l(&req.n, sizeof(req), IFA_ANYCAST, &addr.data, addr.bytelen); + any_len = addr.bytelen; + } else if (arg == 5) { + uint32_t scope = 0; + do { if (!*++argv) incomplete_command(); } while (0); + if (rtnl_rtscope_a2n(&scope, *argv)) { + invarg(*argv, "scope"); + } + req.ifa.ifa_scope = scope; + scoped = 1; + } else if (arg == 6) { + do { if (!*++argv) incomplete_command(); } while (0); + d = *argv; + } else if (arg == 7) { + do { if (!*++argv) incomplete_command(); } while (0); + l = *argv; + addattr_l(&req.n, sizeof(req), IFA_LABEL, l, strlen(l) + 1); + } else { + if (arg == 8) + do { if (!*++argv) incomplete_command(); } while (0); + if (local_len) { + duparg2("local", *argv); + } + get_prefix(&lcl, *argv, req.ifa.ifa_family); + if (req.ifa.ifa_family == 0) { + req.ifa.ifa_family = lcl.family; + } + addattr_l(&req.n, sizeof(req), IFA_LOCAL, &lcl.data, lcl.bytelen); + local_len = lcl.bytelen; + } + argv++; + } + + if (!d) { + + bb_error_msg_and_die("need \"dev IFACE\""); + } + if (l && (__extension__ (__builtin_constant_p (strlen(d)) && ((__builtin_constant_p (d) && strlen (d) < ((size_t) (strlen(d)))) || (__builtin_constant_p (l) && strlen (l) < ((size_t) (strlen(d))))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (d) && __builtin_constant_p (l) && (__s1_len = strlen (d), __s2_len = strlen (l), (!((size_t)(const void *)((d) + 1) - (size_t)(const void *)(d) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((l) + 1) - (size_t)(const void *)(l) == 1) || __s2_len >= 4)) ? __builtin_strcmp (d, l) : (__builtin_constant_p (d) && ((size_t)(const void *)((d) + 1) - (size_t)(const void *)(d) == 1) && (__s1_len = strlen (d), __s1_len < 4) ? (__builtin_constant_p (l) && ((size_t)(const void *)((l) + 1) - (size_t)(const void *)(l) == 1) ? __builtin_strcmp (d, l) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (l); int __result = (((const unsigned char *) (const char *) (d))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (d))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (d))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (d))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (l) && ((size_t)(const void *)((l) + 1) - (size_t)(const void *)(l) == 1) && (__s2_len = strlen (l), __s2_len < 4) ? (__builtin_constant_p (d) && ((size_t)(const void *)((d) + 1) - (size_t)(const void *)(d) == 1) ? __builtin_strcmp (d, l) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (d); int __result = (((const unsigned char *) (const char *) (l))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (l))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (l))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (l))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (d, l)))); }) : strncmp (d, l, strlen(d)))) != 0) { + bb_error_msg_and_die("\"dev\" (%s) must match \"label\" (%s)", d, l); + } + + if (peer_len == 0 && local_len && cmd != RTM_DELADDR) { + peer = lcl; + addattr_l(&req.n, sizeof(req), IFA_ADDRESS, &lcl.data, lcl.bytelen); + } + if (req.ifa.ifa_prefixlen == 0) + req.ifa.ifa_prefixlen = lcl.bitlen; + + if (brd_len < 0 && cmd != RTM_DELADDR) { + inet_prefix brd; + int i; + if (req.ifa.ifa_family != 2) { + bb_error_msg_and_die("broadcast can be set only for IPv4 addresses"); + } + brd = peer; + if (brd.bitlen <= 30) { + for (i=31; i>=brd.bitlen; i--) { + if (brd_len == -1) + brd.data[0] |= __bswap_32 (1<<(31-i)); + else + brd.data[0] &= ~__bswap_32 (1<<(31-i)); + } + addattr_l(&req.n, sizeof(req), IFA_BROADCAST, &brd.data, brd.bytelen); + brd_len = brd.bytelen; + } + } + if (!scoped && cmd != RTM_DELADDR) + req.ifa.ifa_scope = default_scope(&lcl); + + xrtnl_open(&rth); + + ll_init_map(&rth); + + req.ifa.ifa_index = xll_name_to_index(d); + + if (rtnl_talk(&rth, &req.n, ((void *)0)) < 0) + return 2; + + return 0; +} + + +int do_ipaddr(char **argv) +{ + static const char commands[] __attribute__((aligned(1))) = + "add\0""delete\0""list\0""show\0""lst\0""flush\0"; + smalluint cmd = 2; + if (*argv) { + cmd = index_in_substrings(commands, *argv); + if (cmd > 5) + bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + argv++; + if (cmd <= 1) + return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv); + } + + return ipaddr_list_or_flush(argv, cmd == 5); +}