// /usr/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1 -quiet -I. -I. -I./include -I./lib -DPROGRAM="bash" -DCONF_HOSTTYPE="i686" -DCONF_OSTYPE="linux-gnu" -DCONF_MACHTYPE="i686-pc-linux-gnu" -DCONF_VENDOR="pc" -DSHELL -DHAVE_CONFIG_H y.tab.c -fPIE -fstack-protector -fstack-protector-all -quiet -dumpbase y.tab.c -march=pentium4 -auxbase y.tab -O2 -fnew-ra -ftracer -o - -frandom-seed=0 # 1 "y.tab.c" # 1 "" # 1 "" # 1 "y.tab.c" # 55 "y.tab.c" enum yytokentype { IF = 258, THEN = 259, ELSE = 260, ELIF = 261, FI = 262, CASE = 263, ESAC = 264, FOR = 265, SELECT = 266, WHILE = 267, UNTIL = 268, DO = 269, DONE = 270, FUNCTION = 271, COND_START = 272, COND_END = 273, COND_ERROR = 274, IN = 275, BANG = 276, TIME = 277, TIMEOPT = 278, WORD = 279, ASSIGNMENT_WORD = 280, NUMBER = 281, ARITH_CMD = 282, ARITH_FOR_EXPRS = 283, COND_CMD = 284, AND_AND = 285, OR_OR = 286, GREATER_GREATER = 287, LESS_LESS = 288, LESS_AND = 289, LESS_LESS_LESS = 290, GREATER_AND = 291, SEMI_SEMI = 292, LESS_LESS_MINUS = 293, AND_GREATER = 294, LESS_GREATER = 295, GREATER_BAR = 296, yacc_EOF = 297 }; # 21 "./parse.y" # 1 "config.h" 1 # 146 "config.h" # 1 "config-top.h" 1 # 147 "config.h" 2 # 877 "config.h" # 1 "config-bot.h" 1 # 108 "config-bot.h" # 1 "/usr/include/wchar.h" 1 3 4 # 28 "/usr/include/wchar.h" 3 4 # 1 "/usr/include/features.h" 1 3 4 # 295 "/usr/include/features.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 296 "/usr/include/features.h" 2 3 4 # 318 "/usr/include/features.h" 3 4 # 1 "/usr/include/gnu/stubs.h" 1 3 4 # 319 "/usr/include/features.h" 2 3 4 # 29 "/usr/include/wchar.h" 2 3 4 # 37 "/usr/include/wchar.h" 3 4 # 1 "/usr/include/stdio.h" 1 3 4 # 44 "/usr/include/stdio.h" 3 4 typedef struct _IO_FILE FILE; # 62 "/usr/include/stdio.h" 3 4 typedef struct _IO_FILE __FILE; # 38 "/usr/include/wchar.h" 2 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 1 3 4 # 43 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 41 "/usr/include/wchar.h" 2 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 213 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 typedef unsigned int size_t; # 325 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 typedef long int wchar_t; # 354 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 3 4 typedef unsigned int wint_t; # 49 "/usr/include/wchar.h" 2 3 4 # 1 "/usr/include/bits/wchar.h" 1 3 4 # 51 "/usr/include/wchar.h" 2 3 4 # 76 "/usr/include/wchar.h" 3 4 typedef struct { int __count; union { wint_t __wch; char __wchb[4]; } __value; } __mbstate_t; # 93 "/usr/include/wchar.h" 3 4 typedef __mbstate_t mbstate_t; # 118 "/usr/include/wchar.h" 3 4 struct tm; extern wchar_t *wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) ; extern wchar_t *wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) ; extern wchar_t *wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) ; extern wchar_t *wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) ; extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__pure__)); extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) __attribute__ ((__pure__)); extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) ; extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) ; # 1 "/usr/include/xlocale.h" 1 3 4 # 28 "/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; # 167 "/usr/include/wchar.h" 2 3 4 extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) ; extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) ; extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) ; extern size_t wcsxfrm (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) ; extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) ; extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) ; extern wchar_t *wcsdup (__const wchar_t *__s) __attribute__ ((__malloc__)); extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) __attribute__ ((__pure__)); extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) __attribute__ ((__pure__)); extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) __attribute__ ((__pure__)); extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) __attribute__ ((__pure__)); extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) __attribute__ ((__pure__)); extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) __attribute__ ((__pure__)); extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) __attribute__ ((__pure__)); extern wchar_t *wcstok (wchar_t *__restrict __s, __const wchar_t *__restrict __delim, wchar_t **__restrict __ptr) ; extern size_t wcslen (__const wchar_t *__s) __attribute__ ((__pure__)); extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) __attribute__ ((__pure__)); extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) __attribute__ ((__pure__)); extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) __attribute__ ((__pure__)); extern int wmemcmp (__const wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__pure__)); extern wchar_t *wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) ; extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) ; extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) ; extern wchar_t *wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) ; extern wint_t btowc (int __c) ; extern int wctob (wint_t __c) ; extern int mbsinit (__const mbstate_t *__ps) __attribute__ ((__pure__)); extern size_t mbrtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n, mbstate_t *__p) ; extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, mbstate_t *__restrict __ps) ; extern size_t __mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) ; extern size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) ; extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) { return (__ps != ((void *)0) ? mbrtowc (((void *)0), __s, __n, __ps) : __mbrlen (__s, __n, ((void *)0))); } extern size_t mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) ; extern size_t wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) ; extern size_t mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) ; extern size_t wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) ; extern int wcwidth (wchar_t __c) ; extern int wcswidth (__const wchar_t *__s, size_t __n) ; extern double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) ; extern float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) ; extern long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) ; extern long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; __extension__ extern long long int wcstoll (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; __extension__ extern long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) ; # 448 "/usr/include/wchar.h" 3 4 extern long int wcstol_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) ; extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern long long int wcstoll_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) ; extern double wcstod_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) ; extern float wcstof_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) ; extern long double wcstold_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) ; extern double __wcstod_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) ; extern float __wcstof_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) ; extern long double __wcstold_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) ; extern long int __wcstol_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) ; extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt, wchar_t **__restrict __endptr, int __base, int __group) ; __extension__ extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) ; __extension__ extern unsigned long long int __wcstoull_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) ; extern __inline double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) { return __wcstod_internal (__nptr, __endptr, 0); } extern __inline long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) { return __wcstol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) { return __wcstoul_internal (__nptr, __endptr, __base, 0); } extern __inline float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) { return __wcstof_internal (__nptr, __endptr, 0); } extern __inline long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) { return __wcstold_internal (__nptr, __endptr, 0); } __extension__ extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) { return __wcstoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int wcstouq (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base) { return __wcstoull_internal (__nptr, __endptr, __base, 0); } extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) ; extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) ; extern int fwide (__FILE *__fp, int __mode) ; extern int fwprintf (__FILE *__restrict __stream, __const wchar_t *__restrict __format, ...) ; extern int wprintf (__const wchar_t *__restrict __format, ...) ; extern int swprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __format, ...) ; extern int vfwprintf (__FILE *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern int vwprintf (__const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern int vswprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern int fwscanf (__FILE *__restrict __stream, __const wchar_t *__restrict __format, ...) ; extern int wscanf (__const wchar_t *__restrict __format, ...) ; extern int swscanf (__const wchar_t *__restrict __s, __const wchar_t *__restrict __format, ...) ; extern int vfwscanf (__FILE *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern int vwscanf (__const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern int vswscanf (__const wchar_t *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) ; extern wint_t fgetwc (__FILE *__stream); extern wint_t getwc (__FILE *__stream); extern wint_t getwchar (void); extern wint_t fputwc (wchar_t __wc, __FILE *__stream); extern wint_t putwc (wchar_t __wc, __FILE *__stream); extern wint_t putwchar (wchar_t __wc); extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, __FILE *__restrict __stream); extern int fputws (__const wchar_t *__restrict __ws, __FILE *__restrict __stream); extern wint_t ungetwc (wint_t __wc, __FILE *__stream); # 736 "/usr/include/wchar.h" 3 4 extern wint_t getwc_unlocked (__FILE *__stream); extern wint_t getwchar_unlocked (void); extern wint_t fgetwc_unlocked (__FILE *__stream); extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); # 762 "/usr/include/wchar.h" 3 4 extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); extern wint_t putwchar_unlocked (wchar_t __wc); # 772 "/usr/include/wchar.h" 3 4 extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, __FILE *__restrict __stream); extern int fputws_unlocked (__const wchar_t *__restrict __ws, __FILE *__restrict __stream); extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, __const wchar_t *__restrict __format, __const struct tm *__restrict __tp) ; extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, __const wchar_t *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) ; # 817 "/usr/include/wchar.h" 3 4 # 109 "config-bot.h" 2 # 1 "/usr/include/wctype.h" 1 3 4 # 27 "/usr/include/wctype.h" 3 4 # 1 "/usr/include/bits/types.h" 1 3 4 # 28 "/usr/include/bits/types.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 29 "/usr/include/bits/types.h" 2 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 32 "/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; # 129 "/usr/include/bits/types.h" 3 4 # 1 "/usr/include/bits/typesizes.h" 1 3 4 # 130 "/usr/include/bits/types.h" 2 3 4 __extension__ typedef unsigned long long int __dev_t; __extension__ typedef unsigned int __uid_t; __extension__ typedef unsigned int __gid_t; __extension__ typedef unsigned long int __ino_t; __extension__ typedef unsigned long long int __ino64_t; __extension__ typedef unsigned int __mode_t; __extension__ typedef unsigned int __nlink_t; __extension__ typedef long int __off_t; __extension__ typedef long long int __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 unsigned long long int __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 long int __swblk_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 long long int __blkcnt64_t; __extension__ typedef unsigned long int __fsblkcnt_t; __extension__ typedef unsigned long long int __fsblkcnt64_t; __extension__ typedef unsigned long int __fsfilcnt_t; __extension__ typedef unsigned long long int __fsfilcnt64_t; __extension__ typedef int __ssize_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; # 28 "/usr/include/wctype.h" 2 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 36 "/usr/include/wctype.h" 2 3 4 # 45 "/usr/include/wctype.h" 3 4 # 64 "/usr/include/wctype.h" 3 4 typedef unsigned long int wctype_t; # 1 "/usr/include/endian.h" 1 3 4 # 37 "/usr/include/endian.h" 3 4 # 1 "/usr/include/bits/endian.h" 1 3 4 # 38 "/usr/include/endian.h" 2 3 4 # 76 "/usr/include/wctype.h" 2 3 4 # 86 "/usr/include/wctype.h" 3 4 enum { __ISwupper = 0, __ISwlower = 1, __ISwalpha = 2, __ISwdigit = 3, __ISwxdigit = 4, __ISwspace = 5, __ISwprint = 6, __ISwgraph = 7, __ISwblank = 8, __ISwcntrl = 9, __ISwpunct = 10, __ISwalnum = 11, _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) }; extern int iswalnum (wint_t __wc) ; extern int iswalpha (wint_t __wc) ; extern int iswcntrl (wint_t __wc) ; extern int iswdigit (wint_t __wc) ; extern int iswgraph (wint_t __wc) ; extern int iswlower (wint_t __wc) ; extern int iswprint (wint_t __wc) ; extern int iswpunct (wint_t __wc) ; extern int iswspace (wint_t __wc) ; extern int iswupper (wint_t __wc) ; extern int iswxdigit (wint_t __wc) ; extern int iswblank (wint_t __wc) ; # 186 "/usr/include/wctype.h" 3 4 extern wctype_t wctype (__const char *__property) ; extern int iswctype (wint_t __wc, wctype_t __desc) ; typedef __const __int32_t *wctrans_t; extern wint_t towlower (wint_t __wc) ; extern wint_t towupper (wint_t __wc) ; # 228 "/usr/include/wctype.h" 3 4 extern wctrans_t wctrans (__const char *__property) ; extern wint_t towctrans (wint_t __wc, wctrans_t __desc) ; extern int iswalnum_l (wint_t __wc, __locale_t __locale) ; extern int iswalpha_l (wint_t __wc, __locale_t __locale) ; extern int iswcntrl_l (wint_t __wc, __locale_t __locale) ; extern int iswdigit_l (wint_t __wc, __locale_t __locale) ; extern int iswgraph_l (wint_t __wc, __locale_t __locale) ; extern int iswlower_l (wint_t __wc, __locale_t __locale) ; extern int iswprint_l (wint_t __wc, __locale_t __locale) ; extern int iswpunct_l (wint_t __wc, __locale_t __locale) ; extern int iswspace_l (wint_t __wc, __locale_t __locale) ; extern int iswupper_l (wint_t __wc, __locale_t __locale) ; extern int iswxdigit_l (wint_t __wc, __locale_t __locale) ; extern int iswblank_l (wint_t __wc, __locale_t __locale) ; extern wctype_t wctype_l (__const char *__property, __locale_t __locale) ; extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale) ; extern wint_t towlower_l (wint_t __wc, __locale_t __locale) ; extern wint_t towupper_l (wint_t __wc, __locale_t __locale) ; extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale) ; extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, __locale_t __locale) ; # 110 "config-bot.h" 2 # 128 "config-bot.h" # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 11 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/syslimits.h" 1 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 122 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 3 4 # 1 "/usr/include/limits.h" 1 3 4 # 144 "/usr/include/limits.h" 3 4 # 1 "/usr/include/bits/posix1_lim.h" 1 3 4 # 130 "/usr/include/bits/posix1_lim.h" 3 4 # 1 "/usr/include/bits/local_lim.h" 1 3 4 # 36 "/usr/include/bits/local_lim.h" 3 4 # 1 "/usr/include/linux/limits.h" 1 3 4 # 37 "/usr/include/bits/local_lim.h" 2 3 4 # 131 "/usr/include/bits/posix1_lim.h" 2 3 4 # 145 "/usr/include/limits.h" 2 3 4 # 1 "/usr/include/bits/posix2_lim.h" 1 3 4 # 149 "/usr/include/limits.h" 2 3 4 # 1 "/usr/include/bits/xopen_lim.h" 1 3 4 # 34 "/usr/include/bits/xopen_lim.h" 3 4 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4 # 35 "/usr/include/bits/xopen_lim.h" 2 3 4 # 153 "/usr/include/limits.h" 2 3 4 # 123 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 2 3 4 # 8 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/syslimits.h" 2 3 4 # 12 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 2 3 4 # 129 "config-bot.h" 2 # 878 "config.h" 2 # 23 "./parse.y" 2 # 1 "bashtypes.h" 1 # 28 "bashtypes.h" # 1 "/usr/include/sys/types.h" 1 3 4 # 29 "/usr/include/sys/types.h" 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; # 133 "/usr/include/sys/types.h" 3 4 # 1 "/usr/include/time.h" 1 3 4 # 58 "/usr/include/time.h" 3 4 typedef __clock_t clock_t; # 74 "/usr/include/time.h" 3 4 typedef __time_t time_t; # 92 "/usr/include/time.h" 3 4 typedef __clockid_t clockid_t; # 104 "/usr/include/time.h" 3 4 typedef __timer_t timer_t; # 134 "/usr/include/sys/types.h" 2 3 4 typedef __useconds_t useconds_t; typedef __suseconds_t suseconds_t; # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 148 "/usr/include/sys/types.h" 2 3 4 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 191 "/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/sys/select.h" 1 3 4 # 31 "/usr/include/sys/select.h" 3 4 # 1 "/usr/include/bits/select.h" 1 3 4 # 32 "/usr/include/sys/select.h" 2 3 4 # 1 "/usr/include/bits/sigset.h" 1 3 4 # 23 "/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; # 35 "/usr/include/sys/select.h" 2 3 4 typedef __sigset_t sigset_t; # 1 "/usr/include/time.h" 1 3 4 # 118 "/usr/include/time.h" 3 4 struct timespec { __time_t tv_sec; long int tv_nsec; }; # 45 "/usr/include/sys/select.h" 2 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 69 "/usr/include/bits/time.h" 3 4 struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; # 47 "/usr/include/sys/select.h" 2 3 4 # 55 "/usr/include/sys/select.h" 3 4 typedef long int __fd_mask; # 67 "/usr/include/sys/select.h" 3 4 typedef struct { __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; # 99 "/usr/include/sys/select.h" 3 4 # 109 "/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); # 121 "/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); # 217 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/sys/sysmacros.h" 1 3 4 # 29 "/usr/include/sys/sysmacros.h" 3 4 __extension__ extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) ; __extension__ extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) ; __extension__ extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) ; __extension__ extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) { return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); } __extension__ extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) { return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); } __extension__ extern __inline unsigned long long int 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)); } # 220 "/usr/include/sys/types.h" 2 3 4 typedef __blksize_t blksize_t; # 244 "/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 # 36 "/usr/include/bits/pthreadtypes.h" 3 4 typedef unsigned long int pthread_t; typedef union { char __size[36]; long int __align; } pthread_attr_t; typedef union { struct { int __lock; unsigned int __count; int __owner; int __kind; unsigned int __nusers; int __spins; } __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; unsigned long long int __total_seq; unsigned long long int __wakeup_seq; unsigned long long int __woken_seq; void *__mutex; int __clock; unsigned int __broadcast_seq; } __data; char __size[48]; 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; unsigned int __flags; 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; # 267 "/usr/include/sys/types.h" 2 3 4 # 29 "bashtypes.h" 2 # 1 "/usr/include/inttypes.h" 1 3 4 # 28 "/usr/include/inttypes.h" 3 4 # 1 "/usr/include/stdint.h" 1 3 4 # 28 "/usr/include/stdint.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 29 "/usr/include/stdint.h" 2 3 4 # 49 "/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; # 126 "/usr/include/stdint.h" 3 4 typedef int intptr_t; typedef unsigned int uintptr_t; # 138 "/usr/include/stdint.h" 3 4 __extension__ typedef long long int intmax_t; __extension__ typedef unsigned long long int uintmax_t; # 29 "/usr/include/inttypes.h" 2 3 4 typedef long int __gwchar_t; # 274 "/usr/include/inttypes.h" 3 4 # 288 "/usr/include/inttypes.h" 3 4 typedef struct { long long int quot; long long int rem; } imaxdiv_t; extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__const__)); extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) __attribute__ ((__const__)); extern intmax_t strtoimax (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern uintmax_t strtoumax (__const char *__restrict __nptr, char ** __restrict __endptr, int __base) ; extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) ; extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr, __gwchar_t ** __restrict __endptr, int __base) ; # 390 "/usr/include/inttypes.h" 3 4 __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern __inline intmax_t 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) ; extern __inline uintmax_t strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base) { return __strtoull_internal (nptr, endptr, base, 0); } # 430 "/usr/include/inttypes.h" 3 4 extern __inline intmax_t wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) { return __wcstoll_internal (nptr, endptr, base, 0); } # 449 "/usr/include/inttypes.h" 3 4 extern __inline uintmax_t wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base) { return __wcstoull_internal (nptr, endptr, base, 0); } # 36 "bashtypes.h" 2 # 25 "./parse.y" 2 # 1 "bashansi.h" 1 # 28 "bashansi.h" # 1 "/usr/include/string.h" 1 3 4 # 28 "/usr/include/string.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 34 "/usr/include/string.h" 2 3 4 extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *memmove (void *__dest, __const void *__src, size_t __n) ; extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) ; extern void *memset (void *__s, int __c, size_t __n) ; extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern void *memchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); extern void *rawmemchr (__const void *__s, int __c) __attribute__ ((__pure__)); extern void *memrchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcoll (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; # 117 "/usr/include/string.h" 3 4 extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) __attribute__ ((__pure__)); extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) ; extern char *strdup (__const char *__s) __attribute__ ((__malloc__)); extern char *strndup (__const char *__string, size_t __n) __attribute__ ((__malloc__)); # 160 "/usr/include/string.h" 3 4 extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strchrnul (__const char *__s, int __c) __attribute__ ((__pure__)); extern size_t strcspn (__const char *__s, __const char *__reject) __attribute__ ((__pure__)); extern size_t strspn (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strpbrk (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strstr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ; extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strcasestr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); extern void *memmem (__const void *__haystack, size_t __haystacklen, __const void *__needle, size_t __needlelen) __attribute__ ((__pure__)); extern void *__mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern size_t strlen (__const char *__s) __attribute__ ((__pure__)); extern size_t strnlen (__const char *__string, size_t __maxlen) __attribute__ ((__pure__)); extern char *strerror (int __errnum) ; # 268 "/usr/include/string.h" 3 4 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern void __bzero (void *__s, size_t __n) ; extern void bcopy (__const void *__src, void *__dest, size_t __n) ; extern void bzero (void *__s, size_t __n) ; extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern char *index (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__)); extern int ffs (int __i) __attribute__ ((__const__)); extern int ffsl (long int __l) __attribute__ ((__const__)); __extension__ extern int ffsll (long long int __ll) __attribute__ ((__const__)); extern int strcasecmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) __attribute__ ((__pure__)); extern int strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) __attribute__ ((__pure__)); extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ; extern int strverscmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern char *strsignal (int __sig) ; extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *__stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strfry (char *__string) ; extern void *memfrob (void *__s, size_t __n) ; extern char *basename (__const char *__filename) ; # 393 "/usr/include/string.h" 3 4 # 1 "/usr/include/bits/string.h" 1 3 4 # 394 "/usr/include/string.h" 2 3 4 # 1 "/usr/include/bits/string2.h" 1 3 4 # 394 "/usr/include/bits/string2.h" 3 4 extern void *__rawmemchr (const void *__s, int __c); # 969 "/usr/include/bits/string2.h" 3 4 extern __inline size_t __strcspn_c1 (__const char *__s, int __reject); extern __inline size_t __strcspn_c1 (__const char *__s, int __reject) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject) ++__result; return __result; } extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1, int __reject2); extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1, int __reject2) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2) ++__result; return __result; } extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1, int __reject2, int __reject3); extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1, int __reject2, int __reject3) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2 && __s[__result] != __reject3) ++__result; return __result; } # 1045 "/usr/include/bits/string2.h" 3 4 extern __inline size_t __strspn_c1 (__const char *__s, int __accept); extern __inline size_t __strspn_c1 (__const char *__s, int __accept) { register size_t __result = 0; while (__s[__result] == __accept) ++__result; return __result; } extern __inline size_t __strspn_c2 (__const char *__s, int __accept1, int __accept2); extern __inline size_t __strspn_c2 (__const char *__s, int __accept1, int __accept2) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2) ++__result; return __result; } extern __inline size_t __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3); extern __inline size_t __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2 || __s[__result] == __accept3) ++__result; return __result; } # 1121 "/usr/include/bits/string2.h" 3 4 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1, int __accept2); extern __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 char *__strpbrk_c3 (__const char *__s, int __accept1, int __accept2, int __accept3); extern __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; } # 1173 "/usr/include/bits/string2.h" 3 4 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp); extern __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; } # 1205 "/usr/include/bits/string2.h" 3 4 extern char *__strsep_g (char **__stringp, __const char *__delim); # 1223 "/usr/include/bits/string2.h" 3 4 extern __inline char *__strsep_1c (char **__s, char __reject); extern __inline char * __strsep_1c (char **__s, char __reject) { register 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 char *__strsep_2c (char **__s, char __reject1, char __reject2); extern __inline char * __strsep_2c (char **__s, char __reject1, char __reject2) { register char *__retval = *__s; if (__retval != ((void *)0)) { register 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 char *__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3); extern __inline char * __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3) { register char *__retval = *__s; if (__retval != ((void *)0)) { register 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; } # 1299 "/usr/include/bits/string2.h" 3 4 # 1 "/usr/include/stdlib.h" 1 3 4 # 33 "/usr/include/stdlib.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 34 "/usr/include/stdlib.h" 2 3 4 # 554 "/usr/include/stdlib.h" 3 4 extern void *malloc (size_t __size) __attribute__ ((__malloc__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); # 922 "/usr/include/stdlib.h" 3 4 # 1300 "/usr/include/bits/string2.h" 2 3 4 extern char *__strdup (__const char *__string) __attribute__ ((__malloc__)); # 1323 "/usr/include/bits/string2.h" 3 4 extern char *__strndup (__const char *__string, size_t __n) __attribute__ ((__malloc__)); # 397 "/usr/include/string.h" 2 3 4 # 29 "bashansi.h" 2 # 1 "/usr/include/strings.h" 1 3 4 # 33 "bashansi.h" 2 # 1 "/usr/include/stdlib.h" 1 3 4 # 33 "/usr/include/stdlib.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 34 "/usr/include/stdlib.h" 2 3 4 # 1 "/usr/include/bits/waitflags.h" 1 3 4 # 43 "/usr/include/stdlib.h" 2 3 4 # 1 "/usr/include/bits/waitstatus.h" 1 3 4 # 65 "/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; }; # 44 "/usr/include/stdlib.h" 2 3 4 # 68 "/usr/include/stdlib.h" 3 4 typedef union { union wait *__uptr; int *__iptr; } __WAIT_STATUS __attribute__ ((__transparent_union__)); # 93 "/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; # 137 "/usr/include/stdlib.h" 3 4 extern size_t __ctype_get_mb_cur_max (void) ; extern double atof (__const char *__nptr) __attribute__ ((__pure__)); extern int atoi (__const char *__nptr) __attribute__ ((__pure__)); extern long int atol (__const char *__nptr) __attribute__ ((__pure__)); __extension__ extern long long int atoll (__const char *__nptr) __attribute__ ((__pure__)); extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ; extern float strtof (__const char *__restrict __nptr, char **__restrict __endptr) ; extern long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) ; extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; # 229 "/usr/include/stdlib.h" 3 4 extern long int strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; extern unsigned long int strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern long long int strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; __extension__ extern unsigned long long int strtoull_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) ; extern double strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern float strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern long double strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) ; extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long double __strtold_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; # 307 "/usr/include/stdlib.h" 3 4 extern __inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoul_internal (__nptr, __endptr, __base, 0); } extern __inline float strtof (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtof_internal (__nptr, __endptr, 0); } extern __inline long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtold_internal (__nptr, __endptr, 0); } __extension__ extern __inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } extern __inline double atof (__const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern __inline int atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline long long int atoll (__const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } # 408 "/usr/include/stdlib.h" 3 4 extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) __attribute__ ((__pure__)); # 423 "/usr/include/stdlib.h" 3 4 extern long int random (void) ; extern void srandom (unsigned int __seed) ; extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) ; extern char *setstate (char *__statebuf) ; 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) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int __x[3]; unsigned short int __old_x[3]; unsigned short int __c; unsigned short int __init; unsigned long long int __a; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ; # 564 "/usr/include/stdlib.h" 3 4 extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void *__ptr) ; extern void cfree (void *__ptr) ; # 1 "/usr/include/alloca.h" 1 3 4 # 25 "/usr/include/alloca.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 26 "/usr/include/alloca.h" 2 3 4 extern void *alloca (size_t __size) ; # 579 "/usr/include/stdlib.h" 2 3 4 extern void *valloc (size_t __size) __attribute__ ((__malloc__)); extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) __attribute__ ((__malloc__)); extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); extern void _Exit (int __status) __attribute__ ((__noreturn__)); extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __replace) ; extern int unsetenv (__const char *__name) ; extern int clearenv (void) ; # 663 "/usr/include/stdlib.h" 3 4 extern char *mktemp (char *__template) ; # 677 "/usr/include/stdlib.h" 3 4 extern int mkstemp (char *__template) __asm__ ("" "mkstemp64"); extern int mkstemp64 (char *__template); # 693 "/usr/include/stdlib.h" 3 4 extern char *mkdtemp (char *__template) ; extern int system (__const char *__command); extern char *canonicalize_file_name (__const char *__name) ; # 720 "/usr/include/stdlib.h" 3 4 extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); typedef __compar_fn_t comparison_fn_t; extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); __extension__ extern long long int llabs (long long int __x) __attribute__ ((__const__)); extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __attribute__ ((__const__)); # 784 "/usr/include/stdlib.h" 3 4 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *gcvt (double __value, int __ndigit, char *__buf) ; extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qgcvt (long double __value, int __ndigit, char *__buf) ; extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ; extern int rpmatch (__const char *__response) ; # 866 "/usr/include/stdlib.h" 3 4 extern int getsubopt (char **__restrict __optionp, char *__const *__restrict __tokens, char **__restrict __valuep) ; extern void setkey (__const char *__key) ; extern int posix_openpt (int __oflag); extern int grantpt (int __fd) ; extern int unlockpt (int __fd) ; extern char *ptsname (int __fd) ; extern int ptsname_r (int __fd, char *__buf, size_t __buflen) ; extern int getpt (void); extern int getloadavg (double __loadavg[], int __nelem) ; # 37 "bashansi.h" 2 # 26 "./parse.y" 2 # 1 "./include/filecntl.h" 1 # 24 "./include/filecntl.h" # 1 "/usr/include/fcntl.h" 1 3 4 # 29 "/usr/include/fcntl.h" 3 4 # 1 "/usr/include/bits/fcntl.h" 1 3 4 # 137 "/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; }; # 182 "/usr/include/bits/fcntl.h" 3 4 extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) ; # 34 "/usr/include/fcntl.h" 2 3 4 # 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 # 36 "/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; # 70 "/usr/include/bits/stat.h" 3 4 struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; # 88 "/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; # 127 "/usr/include/bits/stat.h" 3 4 __ino64_t st_ino; }; # 106 "/usr/include/sys/stat.h" 2 3 4 # 215 "/usr/include/sys/stat.h" 3 4 extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) __asm__ ("" "stat64"); extern int fstat (int __fd, struct stat *__buf) __asm__ ("" "fstat64"); extern int stat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) ; extern int fstat64 (int __fd, struct stat64 *__buf) ; # 239 "/usr/include/sys/stat.h" 3 4 extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) __asm__ ("" "lstat64"); # 248 "/usr/include/sys/stat.h" 3 4 extern int lstat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) ; extern int chmod (__const char *__file, __mode_t __mode) ; extern int lchmod (__const char *__file, __mode_t __mode) ; extern int fchmod (int __fd, __mode_t __mode) ; extern __mode_t umask (__mode_t __mask) ; extern __mode_t getumask (void) ; extern int mkdir (__const char *__path, __mode_t __mode) ; extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) ; extern int mkfifo (__const char *__path, __mode_t __mode) ; # 326 "/usr/include/sys/stat.h" 3 4 extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) __asm__ ("" "__fxstat64"); extern int __xstat (int __ver, __const char *__filename, struct stat *__stat_buf) __asm__ ("" "__xstat64"); extern int __lxstat (int __ver, __const char *__filename, struct stat *__stat_buf) __asm__ ("" "__lxstat64"); # 343 "/usr/include/sys/stat.h" 3 4 extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) ; extern int __xstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) ; extern int __lxstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) ; extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, __dev_t *__dev) ; extern __inline__ int stat (__const char *__path, struct stat *__statbuf) { return __xstat (3, __path, __statbuf); } extern __inline__ int lstat (__const char *__path, struct stat *__statbuf) { return __lxstat (3, __path, __statbuf); } extern __inline__ int fstat (int __fd, struct stat *__statbuf) { return __fxstat (3, __fd, __statbuf); } extern __inline__ int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) { return __xmknod (1, __path, __mode, &__dev); } extern __inline__ int stat64 (__const char *__path, struct stat64 *__statbuf) { return __xstat64 (3, __path, __statbuf); } extern __inline__ int lstat64 (__const char *__path, struct stat64 *__statbuf) { return __lxstat64 (3, __path, __statbuf); } extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf) { return __fxstat64 (3, __fd, __statbuf); } # 38 "/usr/include/fcntl.h" 2 3 4 # 63 "/usr/include/fcntl.h" 3 4 extern int fcntl (int __fd, int __cmd, ...); # 75 "/usr/include/fcntl.h" 3 4 extern int open (__const char *__file, int __oflag, ...) __asm__ ("" "open64"); extern int open64 (__const char *__file, int __oflag, ...); # 93 "/usr/include/fcntl.h" 3 4 extern int creat (__const char *__file, __mode_t __mode) __asm__ ("" "creat64"); extern int creat64 (__const char *__file, __mode_t __mode); # 122 "/usr/include/fcntl.h" 3 4 extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64"); extern int lockf64 (int __fd, int __cmd, __off64_t __len); # 140 "/usr/include/fcntl.h" 3 4 extern int posix_fadvise (int __fd, __off64_t __offset, __off64_t __len, int __advise) __asm__ ("" "posix_fadvise64"); extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, int __advise) ; # 161 "/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); # 25 "./include/filecntl.h" 2 # 28 "./parse.y" 2 # 1 "/usr/include/unistd.h" 1 3 4 # 28 "/usr/include/unistd.h" 3 4 # 171 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/bits/posix_opt.h" 1 3 4 # 172 "/usr/include/unistd.h" 2 3 4 # 1 "/usr/include/bits/environments.h" 1 3 4 # 23 "/usr/include/bits/environments.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 24 "/usr/include/bits/environments.h" 2 3 4 # 176 "/usr/include/unistd.h" 2 3 4 # 195 "/usr/include/unistd.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 196 "/usr/include/unistd.h" 2 3 4 # 243 "/usr/include/unistd.h" 3 4 typedef __socklen_t socklen_t; # 256 "/usr/include/unistd.h" 3 4 extern int access (__const char *__name, int __type) ; extern int euidaccess (__const char *__name, int __type) ; # 289 "/usr/include/unistd.h" 3 4 extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) __asm__ ("" "lseek64"); # 298 "/usr/include/unistd.h" 3 4 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) ; extern int close (int __fd); extern ssize_t read (int __fd, void *__buf, size_t __nbytes); extern ssize_t write (int __fd, __const void *__buf, size_t __n); # 340 "/usr/include/unistd.h" 3 4 extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64"); extern ssize_t pwrite (int __fd, __const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64"); # 356 "/usr/include/unistd.h" 3 4 extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset); extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, __off64_t __offset); extern int pipe (int __pipedes[2]) ; # 378 "/usr/include/unistd.h" 3 4 extern unsigned int alarm (unsigned int __seconds) ; # 390 "/usr/include/unistd.h" 3 4 extern unsigned int sleep (unsigned int __seconds); extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) ; extern int usleep (__useconds_t __useconds); # 414 "/usr/include/unistd.h" 3 4 extern int pause (void); extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ; extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) ; extern int chdir (__const char *__path) ; extern int fchdir (int __fd) ; # 448 "/usr/include/unistd.h" 3 4 extern char *getcwd (char *__buf, size_t __size) ; extern char *get_current_dir_name (void) ; extern char *getwd (char *__buf) ; extern int dup (int __fd) ; extern int dup2 (int __fd, int __fd2) ; extern char **__environ; extern char **environ; extern int execve (__const char *__path, char *__const __argv[], char *__const __envp[]) ; extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) ; extern int execv (__const char *__path, char *__const __argv[]) ; extern int execle (__const char *__path, __const char *__arg, ...) ; extern int execl (__const char *__path, __const char *__arg, ...) ; extern int execvp (__const char *__file, char *__const __argv[]) ; extern int execlp (__const char *__file, __const char *__arg, ...) ; extern int nice (int __inc) ; extern void _exit (int __status) __attribute__ ((__noreturn__)); # 1 "/usr/include/bits/confname.h" 1 3 4 # 26 "/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 }; enum { _CS_PATH, _CS_V6_WIDTH_RESTRICTED_ENVS, _CS_GNU_LIBC_VERSION, _CS_GNU_LIBPTHREAD_VERSION, _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 }; # 526 "/usr/include/unistd.h" 2 3 4 extern long int pathconf (__const char *__path, int __name) ; extern long int fpathconf (int __fd, int __name) ; extern long int sysconf (int __name) __attribute__ ((__const__)); extern size_t confstr (int __name, char *__buf, size_t __len) ; extern __pid_t getpid (void) ; extern __pid_t getppid (void) ; extern __pid_t getpgrp (void) ; # 561 "/usr/include/unistd.h" 3 4 extern __pid_t __getpgid (__pid_t __pid) ; extern __pid_t getpgid (__pid_t __pid) ; extern int setpgid (__pid_t __pid, __pid_t __pgid) ; # 587 "/usr/include/unistd.h" 3 4 extern int setpgrp (void) ; # 605 "/usr/include/unistd.h" 3 4 extern __pid_t setsid (void) ; extern __pid_t getsid (__pid_t __pid) ; extern __uid_t getuid (void) ; extern __uid_t geteuid (void) ; extern __gid_t getgid (void) ; extern __gid_t getegid (void) ; extern int getgroups (int __size, __gid_t __list[]) ; extern int group_member (__gid_t __gid) ; extern int setuid (__uid_t __uid) ; extern int setreuid (__uid_t __ruid, __uid_t __euid) ; extern int seteuid (__uid_t __uid) ; extern int setgid (__gid_t __gid) ; extern int setregid (__gid_t __rgid, __gid_t __egid) ; extern int setegid (__gid_t __gid) ; extern int getresuid (__uid_t *__euid, __uid_t *__ruid, __uid_t *__suid); extern int getresgid (__gid_t *__egid, __gid_t *__rgid, __gid_t *__sgid); extern int setresuid (__uid_t __euid, __uid_t __ruid, __uid_t __suid); extern int setresgid (__gid_t __egid, __gid_t __rgid, __gid_t __sgid); extern __pid_t fork (void) ; extern __pid_t vfork (void) ; extern char *ttyname (int __fd) ; extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ; extern int isatty (int __fd) ; extern int ttyslot (void) ; extern int link (__const char *__from, __const char *__to) ; extern int symlink (__const char *__from, __const char *__to) ; extern int readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) ; extern int unlink (__const char *__name) ; extern int rmdir (__const char *__path) ; extern __pid_t tcgetpgrp (int __fd) ; extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ; extern char *getlogin (void); extern int getlogin_r (char *__name, size_t __name_len); extern int setlogin (__const char *__name) ; # 775 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/getopt.h" 1 3 4 # 59 "/usr/include/getopt.h" 3 4 extern char *optarg; # 73 "/usr/include/getopt.h" 3 4 extern int optind; extern int opterr; extern int optopt; # 152 "/usr/include/getopt.h" 3 4 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) ; # 776 "/usr/include/unistd.h" 2 3 4 extern int gethostname (char *__name, size_t __len) ; extern int sethostname (__const char *__name, size_t __len) ; extern int sethostid (long int __id) ; extern int getdomainname (char *__name, size_t __len) ; extern int setdomainname (__const char *__name, size_t __len) ; extern int vhangup (void) ; extern int revoke (__const char *__file) ; extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) ; extern int acct (__const char *__name) ; extern char *getusershell (void) ; extern void endusershell (void) ; extern void setusershell (void) ; extern int daemon (int __nochdir, int __noclose) ; extern int chroot (__const char *__path) ; extern char *getpass (__const char *__prompt); # 857 "/usr/include/unistd.h" 3 4 extern int fsync (int __fd); extern long int gethostid (void); extern void sync (void) ; extern int getpagesize (void) __attribute__ ((__const__)); extern int truncate (__const char *__file, __off64_t __length) __asm__ ("" "truncate64"); extern int truncate64 (__const char *__file, __off64_t __length) ; extern int ftruncate (int __fd, __off64_t __length) __asm__ ("" "ftruncate64"); extern int ftruncate64 (int __fd, __off64_t __length) ; extern int getdtablesize (void) ; # 918 "/usr/include/unistd.h" 3 4 extern int brk (void *__addr) ; extern void *sbrk (intptr_t __delta) ; # 939 "/usr/include/unistd.h" 3 4 extern long int syscall (long int __sysno, ...) ; # 993 "/usr/include/unistd.h" 3 4 extern int fdatasync (int __fildes) ; extern char *crypt (__const char *__key, __const char *__salt) ; extern void encrypt (char *__block, int __edflag) ; extern void swab (__const void *__restrict __from, void *__restrict __to, ssize_t __n) ; extern char *ctermid (char *__s) ; # 31 "./parse.y" 2 # 1 "/usr/include/locale.h" 1 3 4 # 29 "/usr/include/locale.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 30 "/usr/include/locale.h" 2 3 4 # 1 "/usr/include/bits/locale.h" 1 3 4 # 27 "/usr/include/bits/locale.h" 3 4 enum { __LC_CTYPE = 0, __LC_NUMERIC = 1, __LC_TIME = 2, __LC_COLLATE = 3, __LC_MONETARY = 4, __LC_MESSAGES = 5, __LC_ALL = 6, __LC_PAPER = 7, __LC_NAME = 8, __LC_ADDRESS = 9, __LC_TELEPHONE = 10, __LC_MEASUREMENT = 11, __LC_IDENTIFICATION = 12 }; # 31 "/usr/include/locale.h" 2 3 4 # 52 "/usr/include/locale.h" 3 4 struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; char int_p_cs_precedes; char int_p_sep_by_space; char int_n_cs_precedes; char int_n_sep_by_space; char int_p_sign_posn; char int_n_sign_posn; # 119 "/usr/include/locale.h" 3 4 }; extern char *setlocale (int __category, __const char *__locale) ; extern struct lconv *localeconv (void) ; # 148 "/usr/include/locale.h" 3 4 typedef __locale_t locale_t; extern __locale_t newlocale (int __category_mask, __const char *__locale, __locale_t __base) ; # 189 "/usr/include/locale.h" 3 4 extern __locale_t duplocale (__locale_t __dataset) ; extern void freelocale (__locale_t __dataset) ; extern __locale_t uselocale (__locale_t __dataset) ; # 35 "./parse.y" 2 # 1 "/usr/include/stdio.h" 1 3 4 # 30 "/usr/include/stdio.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 35 "/usr/include/stdio.h" 2 3 4 # 72 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/libio.h" 1 3 4 # 32 "/usr/include/libio.h" 3 4 # 1 "/usr/include/_G_config.h" 1 3 4 # 14 "/usr/include/_G_config.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 15 "/usr/include/_G_config.h" 2 3 4 # 26 "/usr/include/_G_config.h" 3 4 typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; # 44 "/usr/include/_G_config.h" 3 4 # 1 "/usr/include/gconv.h" 1 3 4 # 31 "/usr/include/gconv.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 32 "/usr/include/gconv.h" 2 3 4 enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; enum { __GCONV_IS_LAST = 0x0001, __GCONV_IGNORE_ERRORS = 0x0002 }; struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data; typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *, int, int); typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char); typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *); typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, __const unsigned char *, unsigned char *, unsigned char *); typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, size_t *); typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *); struct __gconv_trans_data { __gconv_trans_fct __trans_fct; __gconv_trans_context_fct __trans_context_fct; __gconv_trans_end_fct __trans_end_fct; void *__data; struct __gconv_trans_data *__next; }; struct __gconv_step { struct __gconv_loaded_object *__shlib_handle; __const char *__modname; int __counter; char *__from_name; char *__to_name; __gconv_fct __fct; __gconv_btowc_fct __btowc_fct; __gconv_init_fct __init_fct; __gconv_end_fct __end_fct; int __min_needed_from; int __max_needed_from; int __min_needed_to; int __max_needed_to; int __stateful; void *__data; }; struct __gconv_step_data { unsigned char *__outbuf; unsigned char *__outbufend; int __flags; int __invocation_counter; int __internal_use; __mbstate_t *__statep; __mbstate_t __state; struct __gconv_trans_data *__trans; }; typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data []; } *__gconv_t; # 45 "/usr/include/_G_config.h" 2 3 4 typedef union { struct __gconv_info __cd; struct { struct __gconv_info __cd; struct __gconv_step_data __data; } __combined; } _G_iconv_t; typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); # 33 "/usr/include/libio.h" 2 3 4 # 53 "/usr/include/libio.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stdarg.h" 1 3 4 # 54 "/usr/include/libio.h" 2 3 4 # 163 "/usr/include/libio.h" 3 4 struct _IO_jump_t; struct _IO_FILE; # 173 "/usr/include/libio.h" 3 4 typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; # 196 "/usr/include/libio.h" 3 4 }; enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; # 264 "/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; # 312 "/usr/include/libio.h" 3 4 __off64_t _offset; void *__pad1; void *__pad2; int _mode; char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; }; 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_; # 351 "/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) ; extern wint_t __wunderflow (_IO_FILE *) ; extern wint_t __wuflow (_IO_FILE *) ; extern wint_t __woverflow (_IO_FILE *, wint_t) ; # 441 "/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) ; extern int _IO_ferror (_IO_FILE *__fp) ; extern int _IO_peekc_locked (_IO_FILE *__fp) ; extern void _IO_flockfile (_IO_FILE *) ; extern void _IO_funlockfile (_IO_FILE *) ; extern int _IO_ftrylockfile (_IO_FILE *) ; # 471 "/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 *) ; # 73 "/usr/include/stdio.h" 2 3 4 typedef __gnuc_va_list va_list; # 86 "/usr/include/stdio.h" 3 4 typedef _G_fpos64_t fpos_t; typedef _G_fpos64_t fpos64_t; # 138 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4 # 139 "/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) ; extern int rename (__const char *__old, __const char *__new) ; # 167 "/usr/include/stdio.h" 3 4 extern FILE *tmpfile (void) __asm__ ("" "tmpfile64"); extern FILE *tmpfile64 (void); extern char *tmpnam (char *__s) ; extern char *tmpnam_r (char *__s) ; # 196 "/usr/include/stdio.h" 3 4 extern char *tempnam (__const char *__dir, __const char *__pfx) __attribute__ ((__malloc__)); extern int fclose (FILE *__stream); extern int fflush (FILE *__stream); # 221 "/usr/include/stdio.h" 3 4 extern int fflush_unlocked (FILE *__stream); # 231 "/usr/include/stdio.h" 3 4 extern int fcloseall (void); # 252 "/usr/include/stdio.h" 3 4 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64"); extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64"); extern FILE *fopen64 (__const char *__restrict __filename, __const char *__restrict __modes); extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream); extern FILE *fdopen (int __fd, __const char *__modes) ; extern FILE *fopencookie (void *__restrict __magic_cookie, __const char *__restrict __modes, _IO_cookie_io_functions_t __io_funcs) ; extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) ; extern FILE *open_memstream (char **__restrict __bufloc, size_t *__restrict __sizeloc) ; extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; 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, ...) ; 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) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...); extern int scanf (__const char *__restrict __format, ...); extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 1, 0))); extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); extern int getchar (void); # 454 "/usr/include/stdio.h" 3 4 extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); # 465 "/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); # 498 "/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); extern char *gets (char *__s); # 543 "/usr/include/stdio.h" 3 4 extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream); # 559 "/usr/include/stdio.h" 3 4 extern __ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream); extern __ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream); extern __ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream); extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); extern int puts (__const char *__s); extern int ungetc (int __c, FILE *__stream); extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s); # 620 "/usr/include/stdio.h" 3 4 extern int fputs_unlocked (__const char *__restrict __s, FILE *__restrict __stream); # 631 "/usr/include/stdio.h" 3 4 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern int fseek (FILE *__stream, long int __off, int __whence); extern long int ftell (FILE *__stream); extern void rewind (FILE *__stream); # 675 "/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"); # 700 "/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); extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; extern void perror (__const char *__s); # 1 "/usr/include/bits/sys_errlist.h" 1 3 4 # 27 "/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[]; # 748 "/usr/include/stdio.h" 2 3 4 extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; # 767 "/usr/include/stdio.h" 3 4 extern FILE *popen (__const char *__command, __const char *__modes); extern int pclose (FILE *__stream); extern char *ctermid (char *__s) ; extern char *cuserid (char *__s); struct obstack; extern int obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __format, __gnuc_va_list __args) __attribute__ ((__format__ (__printf__, 2, 0))); extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; # 828 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/bits/stdio.h" 1 3 4 # 33 "/usr/include/bits/stdio.h" 3 4 extern __inline int vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline int getchar (void) { return _IO_getc (stdin); } extern __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 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 int putchar (int __c) { return _IO_putc (__c, stdout); } extern __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 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 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 __ssize_t getline (char **__lineptr, size_t *__n, FILE *__stream) { return __getdelim (__lineptr, __n, '\n', __stream); } extern __inline int feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x10) != 0); } extern __inline int ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x20) != 0); } # 829 "/usr/include/stdio.h" 2 3 4 # 38 "./parse.y" 2 # 1 "./include/chartypes.h" 1 # 24 "./include/chartypes.h" # 1 "/usr/include/ctype.h" 1 3 4 # 30 "/usr/include/ctype.h" 3 4 # 48 "/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)) }; # 81 "/usr/include/ctype.h" 3 4 extern __const unsigned short int **__ctype_b_loc (void) __attribute__ ((__const)); extern __const __int32_t **__ctype_tolower_loc (void) __attribute__ ((__const)); extern __const __int32_t **__ctype_toupper_loc (void) __attribute__ ((__const)); # 96 "/usr/include/ctype.h" 3 4 extern int isalnum (int) ; extern int isalpha (int) ; extern int iscntrl (int) ; extern int isdigit (int) ; extern int islower (int) ; extern int isgraph (int) ; extern int isprint (int) ; extern int ispunct (int) ; extern int isspace (int) ; extern int isupper (int) ; extern int isxdigit (int) ; extern int tolower (int __c) ; extern int toupper (int __c) ; extern int isblank (int) ; extern int isctype (int __c, int __mask) ; extern int isascii (int __c) ; extern int toascii (int __c) ; extern int _toupper (int) ; extern int _tolower (int) ; # 190 "/usr/include/ctype.h" 3 4 extern __inline int tolower (int __c) { return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; } extern __inline int toupper (int __c) { return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; } # 247 "/usr/include/ctype.h" 3 4 extern int isalnum_l (int, __locale_t) ; extern int isalpha_l (int, __locale_t) ; extern int iscntrl_l (int, __locale_t) ; extern int isdigit_l (int, __locale_t) ; extern int islower_l (int, __locale_t) ; extern int isgraph_l (int, __locale_t) ; extern int isprint_l (int, __locale_t) ; extern int ispunct_l (int, __locale_t) ; extern int isspace_l (int, __locale_t) ; extern int isupper_l (int, __locale_t) ; extern int isxdigit_l (int, __locale_t) ; extern int isblank_l (int, __locale_t) ; extern int __tolower_l (int __c, __locale_t __l) ; extern int tolower_l (int __c, __locale_t __l) ; extern int __toupper_l (int __c, __locale_t __l) ; extern int toupper_l (int __c, __locale_t __l) ; # 323 "/usr/include/ctype.h" 3 4 # 25 "./include/chartypes.h" 2 # 39 "./parse.y" 2 # 1 "/usr/include/signal.h" 1 3 4 # 31 "/usr/include/signal.h" 3 4 # 1 "/usr/include/bits/sigset.h" 1 3 4 # 103 "/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); # 117 "/usr/include/bits/sigset.h" 3 4 extern __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 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 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); } # 34 "/usr/include/signal.h" 2 3 4 typedef __sig_atomic_t sig_atomic_t; # 58 "/usr/include/signal.h" 3 4 # 1 "/usr/include/bits/signum.h" 1 3 4 # 59 "/usr/include/signal.h" 2 3 4 # 73 "/usr/include/signal.h" 3 4 typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) ; extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) ; extern __sighandler_t signal (int __sig, __sighandler_t __handler) ; # 102 "/usr/include/signal.h" 3 4 extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) ; extern int kill (__pid_t __pid, int __sig) ; extern int killpg (__pid_t __pgrp, int __sig) ; extern int raise (int __sig) ; extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ; extern int gsignal (int __sig) ; extern void psignal (int __sig, __const char *__s); # 149 "/usr/include/signal.h" 3 4 extern int __sigpause (int __sig_or_mask, int __is_sig); # 159 "/usr/include/signal.h" 3 4 extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); # 178 "/usr/include/signal.h" 3 4 extern int sigblock (int __mask) ; extern int sigsetmask (int __mask) ; extern int siggetmask (void) ; # 193 "/usr/include/signal.h" 3 4 typedef __sighandler_t sighandler_t; typedef __sighandler_t sig_t; # 1 "/usr/include/time.h" 1 3 4 # 207 "/usr/include/signal.h" 2 3 4 # 1 "/usr/include/bits/siginfo.h" 1 3 4 # 25 "/usr/include/bits/siginfo.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 26 "/usr/include/bits/siginfo.h" 2 3 4 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 51 "/usr/include/bits/siginfo.h" 3 4 typedef struct siginfo { 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; } _sigfault; struct { long int si_band; int si_fd; } _sigpoll; } _sifields; } siginfo_t; # 129 "/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 }; 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 }; # 273 "/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); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; enum { SIGEV_SIGNAL = 0, SIGEV_NONE, SIGEV_THREAD, SIGEV_THREAD_ID = 4 }; # 210 "/usr/include/signal.h" 2 3 4 extern int sigemptyset (sigset_t *__set) ; extern int sigfillset (sigset_t *__set) ; extern int sigaddset (sigset_t *__set, int __signo) ; extern int sigdelset (sigset_t *__set, int __signo) ; extern int sigismember (__const sigset_t *__set, int __signo) ; extern int sigisemptyset (__const sigset_t *__set) ; extern int sigandset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) ; extern int sigorset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) ; # 1 "/usr/include/bits/sigaction.h" 1 3 4 # 25 "/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); }; # 243 "/usr/include/signal.h" 2 3 4 extern int sigprocmask (int __how, __const sigset_t *__restrict __set, sigset_t *__restrict __oset) ; extern int sigsuspend (__const sigset_t *__set); extern int sigaction (int __sig, __const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) ; extern int sigpending (sigset_t *__set) ; extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig); extern int sigwaitinfo (__const sigset_t *__restrict __set, siginfo_t *__restrict __info); extern int sigtimedwait (__const sigset_t *__restrict __set, siginfo_t *__restrict __info, __const struct timespec *__restrict __timeout); extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) ; # 298 "/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; }; # 322 "/usr/include/signal.h" 3 4 extern int sigvec (int __sig, __const struct sigvec *__vec, struct sigvec *__ovec) ; # 1 "/usr/include/bits/sigcontext.h" 1 3 4 # 28 "/usr/include/bits/sigcontext.h" 3 4 # 1 "/usr/include/asm/sigcontext.h" 1 3 4 # 1 "/usr/include/linux/compiler.h" 1 3 4 # 34 "/usr/include/linux/compiler.h" 3 4 # 1 "/usr/include/linux/compiler-gcc3.h" 1 3 4 # 1 "/usr/include/linux/compiler-gcc.h" 1 3 4 # 5 "/usr/include/linux/compiler-gcc3.h" 2 3 4 # 35 "/usr/include/linux/compiler.h" 2 3 4 # 5 "/usr/include/asm/sigcontext.h" 2 3 4 # 20 "/usr/include/asm/sigcontext.h" 3 4 struct _fpreg { unsigned short significand[4]; unsigned short exponent; }; struct _fpxreg { unsigned short significand[4]; unsigned short exponent; unsigned short padding[3]; }; struct _xmmreg { unsigned long element[4]; }; struct _fpstate { unsigned long cw; unsigned long sw; unsigned long tag; unsigned long ipoff; unsigned long cssel; unsigned long dataoff; unsigned long datasel; struct _fpreg _st[8]; unsigned short status; unsigned short magic; unsigned long _fxsr_env[6]; unsigned long mxcsr; unsigned long reserved; struct _fpxreg _fxsr_st[8]; struct _xmmreg _xmm[8]; unsigned long padding[56]; }; struct sigcontext { unsigned short gs, __gsh; unsigned short fs, __fsh; unsigned short es, __esh; unsigned short ds, __dsh; unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long esp; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; unsigned long trapno; unsigned long err; unsigned long eip; unsigned short cs, __csh; unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; struct _fpstate * fpstate; unsigned long oldmask; unsigned long cr2; }; # 29 "/usr/include/bits/sigcontext.h" 2 3 4 # 328 "/usr/include/signal.h" 2 3 4 extern int sigreturn (struct sigcontext *__scp) ; # 340 "/usr/include/signal.h" 3 4 extern int siginterrupt (int __sig, int __interrupt) ; # 1 "/usr/include/bits/sigstack.h" 1 3 4 # 26 "/usr/include/bits/sigstack.h" 3 4 struct sigstack { void *ss_sp; int ss_onstack; }; enum { SS_ONSTACK = 1, SS_DISABLE }; # 50 "/usr/include/bits/sigstack.h" 3 4 typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 343 "/usr/include/signal.h" 2 3 4 # 1 "/usr/include/sys/ucontext.h" 1 3 4 # 23 "/usr/include/sys/ucontext.h" 3 4 # 1 "/usr/include/signal.h" 1 3 4 # 24 "/usr/include/sys/ucontext.h" 2 3 4 # 1 "/usr/include/bits/sigcontext.h" 1 3 4 # 28 "/usr/include/sys/ucontext.h" 2 3 4 typedef int greg_t; typedef greg_t gregset_t[19]; enum { REG_GS = 0, REG_FS, REG_ES, REG_DS, REG_EDI, REG_ESI, REG_EBP, REG_ESP, REG_EBX, REG_EDX, REG_ECX, REG_EAX, REG_TRAPNO, REG_ERR, REG_EIP, REG_CS, REG_EFL, REG_UESP, REG_SS }; struct _libc_fpreg { unsigned short int significand[4]; unsigned short int exponent; }; struct _libc_fpstate { unsigned long int cw; unsigned long int sw; unsigned long int tag; unsigned long int ipoff; unsigned long int cssel; unsigned long int dataoff; unsigned long int datasel; struct _libc_fpreg _st[8]; unsigned long int status; }; typedef struct _libc_fpstate *fpregset_t; typedef struct { gregset_t gregs; fpregset_t fpregs; unsigned long int oldmask; unsigned long int cr2; } mcontext_t; typedef struct ucontext { unsigned long int uc_flags; struct ucontext *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; __sigset_t uc_sigmask; struct _libc_fpstate __fpregs_mem; } ucontext_t; # 346 "/usr/include/signal.h" 2 3 4 extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ; extern int sigaltstack (__const struct sigaltstack *__restrict __ss, struct sigaltstack *__restrict __oss) ; extern int sighold (int __sig) ; extern int sigrelse (int __sig) ; extern int sigignore (int __sig) ; extern __sighandler_t sigset (int __sig, __sighandler_t __disp) ; # 1 "/usr/include/bits/sigthread.h" 1 3 4 # 31 "/usr/include/bits/sigthread.h" 3 4 extern int pthread_sigmask (int __how, __const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask); extern int pthread_kill (pthread_t __threadid, int __signo) ; # 381 "/usr/include/signal.h" 2 3 4 extern int __libc_current_sigrtmin (void) ; extern int __libc_current_sigrtmax (void) ; # 40 "./parse.y" 2 # 1 "./include/memalloc.h" 1 # 42 "./parse.y" 2 # 1 "shell.h" 1 # 25 "shell.h" # 1 "bashjmp.h" 1 # 24 "bashjmp.h" # 1 "./include/posixjmp.h" 1 # 24 "./include/posixjmp.h" # 1 "/usr/include/setjmp.h" 1 3 4 # 28 "/usr/include/setjmp.h" 3 4 # 1 "/usr/include/bits/setjmp.h" 1 3 4 # 38 "/usr/include/bits/setjmp.h" 3 4 typedef int __jmp_buf[6]; # 31 "/usr/include/setjmp.h" 2 3 4 # 1 "/usr/include/bits/sigset.h" 1 3 4 # 32 "/usr/include/setjmp.h" 2 3 4 typedef struct __jmp_buf_tag { __jmp_buf __jmpbuf; int __mask_was_saved; __sigset_t __saved_mask; } jmp_buf[1]; extern int setjmp (jmp_buf __env) ; extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) ; extern int _setjmp (struct __jmp_buf_tag __env[1]) ; # 76 "/usr/include/setjmp.h" 3 4 extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((__noreturn__)); extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((__noreturn__)); typedef struct __jmp_buf_tag sigjmp_buf[1]; # 108 "/usr/include/setjmp.h" 3 4 extern void siglongjmp (sigjmp_buf __env, int __val) __attribute__ ((__noreturn__)); # 25 "./include/posixjmp.h" 2 # 25 "bashjmp.h" 2 extern sigjmp_buf top_level; extern sigjmp_buf subshell_top_level; extern sigjmp_buf return_catch; # 26 "shell.h" 2 # 1 "command.h" 1 # 25 "command.h" # 1 "./include/stdc.h" 1 # 26 "command.h" 2 enum r_instruction { r_output_direction, r_input_direction, r_inputa_direction, r_appending_to, r_reading_until, r_reading_string, r_duplicating_input, r_duplicating_output, r_deblank_reading_until, r_close_this, r_err_and_out, r_input_output, r_output_force, r_duplicating_input_word, r_duplicating_output_word, r_move_input, r_move_output, r_move_input_word, r_move_output_word }; # 65 "command.h" enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, cm_connection, cm_function_def, cm_until, cm_group, cm_arith, cm_cond, cm_arith_for, cm_subshell }; # 87 "command.h" typedef struct word_desc { char *word; int flags; } WORD_DESC; typedef struct word_list { struct word_list *next; WORD_DESC *word; } WORD_LIST; # 110 "command.h" typedef union { int dest; WORD_DESC *filename; } REDIRECTEE; typedef struct redirect { struct redirect *next; int redirector; int flags; enum r_instruction instruction; REDIRECTEE redirectee; char *here_doc_eof; } REDIRECT; typedef struct element { WORD_DESC *word; REDIRECT *redirect; } ELEMENT; # 148 "command.h" typedef struct command { enum command_type type; int flags; int line; REDIRECT *redirects; union { struct for_com *For; struct case_com *Case; struct while_com *While; struct if_com *If; struct connection *Connection; struct simple_com *Simple; struct function_def *Function_def; struct group_com *Group; struct select_com *Select; struct arith_com *Arith; struct cond_com *Cond; struct arith_for_com *ArithFor; struct subshell_com *Subshell; } value; } COMMAND; typedef struct connection { int ignore; COMMAND *first; COMMAND *second; int connector; } CONNECTION; typedef struct pattern_list { struct pattern_list *next; WORD_LIST *patterns; COMMAND *action; } PATTERN_LIST; typedef struct case_com { int flags; WORD_DESC *word; PATTERN_LIST *clauses; } CASE_COM; typedef struct for_com { int flags; WORD_DESC *name; WORD_LIST *map_list; COMMAND *action; } FOR_COM; typedef struct arith_for_com { int flags; int line; WORD_LIST *init; WORD_LIST *test; WORD_LIST *step; COMMAND *action; } ARITH_FOR_COM; typedef struct select_com { int flags; WORD_DESC *name; WORD_LIST *map_list; COMMAND *action; } SELECT_COM; typedef struct if_com { int flags; COMMAND *test; COMMAND *true_case; COMMAND *false_case; } IF_COM; typedef struct while_com { int flags; COMMAND *test; COMMAND *action; } WHILE_COM; typedef struct arith_com { int flags; WORD_LIST *exp; int line; } ARITH_COM; # 270 "command.h" typedef struct cond_com { int flags; int line; int type; WORD_DESC *op; struct cond_com *left, *right; } COND_COM; typedef struct simple_com { int flags; WORD_LIST *words; REDIRECT *redirects; int line; } SIMPLE_COM; typedef struct function_def { int flags; WORD_DESC *name; COMMAND *command; int line; } FUNCTION_DEF; typedef struct group_com { int ignore; COMMAND *command; } GROUP_COM; typedef struct subshell_com { int flags; COMMAND *command; } SUBSHELL_COM; extern COMMAND *global_command; # 319 "command.h" extern WORD_DESC *copy_word (WORD_DESC *) ; extern WORD_LIST *copy_word_list (WORD_LIST *) ; extern REDIRECT *copy_redirect (REDIRECT *) ; extern REDIRECT *copy_redirects (REDIRECT *) ; extern COMMAND *copy_command (COMMAND *) ; # 28 "shell.h" 2 # 1 "syntax.h" 1 # 67 "syntax.h" extern const int sh_syntaxtab[]; # 29 "shell.h" 2 # 1 "general.h" 1 # 30 "general.h" # 1 "/usr/include/sys/time.h" 1 3 4 # 26 "/usr/include/sys/time.h" 3 4 # 1 "/usr/include/time.h" 1 3 4 # 27 "/usr/include/sys/time.h" 2 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 29 "/usr/include/sys/time.h" 2 3 4 # 38 "/usr/include/sys/time.h" 3 4 # 56 "/usr/include/sys/time.h" 3 4 struct timezone { int tz_minuteswest; int tz_dsttime; }; typedef struct timezone *__restrict __timezone_ptr_t; # 72 "/usr/include/sys/time.h" 3 4 extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz) ; extern int settimeofday (__const struct timeval *__tv, __const struct timezone *__tz) ; extern int adjtime (__const struct timeval *__delta, struct timeval *__olddelta) ; 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) ; extern int setitimer (__itimer_which_t __which, __const struct itimerval *__restrict __new, struct itimerval *__restrict __old) ; extern int utimes (__const char *__file, __const struct timeval __tvp[2]) ; extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) ; extern int futimes (int __fd, __const struct timeval __tvp[2]) ; # 181 "/usr/include/sys/time.h" 3 4 # 31 "general.h" 2 # 1 "/usr/include/sys/resource.h" 1 3 4 # 25 "/usr/include/sys/resource.h" 3 4 # 1 "/usr/include/bits/resource.h" 1 3 4 # 32 "/usr/include/bits/resource.h" 3 4 enum __rlimit_resource { RLIMIT_CPU = 0, RLIMIT_FSIZE = 1, RLIMIT_DATA = 2, RLIMIT_STACK = 3, RLIMIT_CORE = 4, RLIMIT_RSS = 5, RLIMIT_NOFILE = 7, RLIMIT_OFILE = RLIMIT_NOFILE, RLIMIT_AS = 9, RLIMIT_NPROC = 6, RLIMIT_MEMLOCK = 8, RLIMIT_LOCKS = 10, RLIMIT_NLIMITS = 11, RLIM_NLIMITS = RLIMIT_NLIMITS }; # 109 "/usr/include/bits/resource.h" 3 4 typedef __rlim64_t rlim_t; typedef __rlim64_t rlim64_t; struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; struct rlimit64 { rlim64_t rlim_cur; rlim64_t rlim_max; }; enum __rusage_who { RUSAGE_SELF = 0, RUSAGE_CHILDREN = -1, RUSAGE_BOTH = -2 }; # 1 "/usr/include/bits/time.h" 1 3 4 # 151 "/usr/include/bits/resource.h" 2 3 4 struct rusage { struct timeval ru_utime; struct timeval ru_stime; long int ru_maxrss; long int ru_ixrss; long int ru_idrss; long int ru_isrss; long int ru_minflt; long int ru_majflt; long int ru_nswap; long int ru_inblock; long int ru_oublock; long int ru_msgsnd; long int ru_msgrcv; long int ru_nsignals; long int ru_nvcsw; long int ru_nivcsw; }; enum __priority_which { PRIO_PROCESS = 0, PRIO_PGRP = 1, PRIO_USER = 2 }; # 26 "/usr/include/sys/resource.h" 2 3 4 typedef enum __rlimit_resource __rlimit_resource_t; typedef enum __rusage_who __rusage_who_t; typedef enum __priority_which __priority_which_t; # 55 "/usr/include/sys/resource.h" 3 4 extern int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits) __asm__ ("" "getrlimit64"); extern int getrlimit64 (__rlimit_resource_t __resource, struct rlimit64 *__rlimits) ; # 75 "/usr/include/sys/resource.h" 3 4 extern int setrlimit (__rlimit_resource_t __resource, __const struct rlimit *__rlimits) __asm__ ("" "setrlimit64"); extern int setrlimit64 (__rlimit_resource_t __resource, __const struct rlimit64 *__rlimits) ; extern int getrusage (__rusage_who_t __who, struct rusage *__usage) ; extern int getpriority (__priority_which_t __which, id_t __who) ; extern int setpriority (__priority_which_t __which, id_t __who, int __prio) ; # 33 "general.h" 2 # 42 "general.h" # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 43 "general.h" 2 # 1 "xmalloc.h" 1 # 39 "xmalloc.h" extern void * xmalloc (size_t) ; extern void * xrealloc (void *, size_t) ; extern void xfree (void *) ; # 46 "general.h" 2 # 115 "general.h" typedef struct g_list { struct g_list *next; } GENERIC_LIST; typedef struct { char *word; int token; } STRING_INT_ALIST; # 176 "general.h" typedef int Function (); typedef void VFunction (); typedef char *CPFunction (); typedef char **CPPFunction (); # 188 "general.h" typedef int sh_intfunc_t (int) ; typedef int sh_ivoidfunc_t (void) ; typedef int sh_icpfunc_t (char *) ; typedef int sh_icppfunc_t (char **) ; typedef int sh_iptrfunc_t (void *) ; typedef void sh_voidfunc_t (void) ; typedef void sh_vintfunc_t (int) ; typedef void sh_vcpfunc_t (char *) ; typedef void sh_vcppfunc_t (char **) ; typedef void sh_vptrfunc_t (void *) ; typedef int sh_wdesc_func_t (WORD_DESC *) ; typedef int sh_wlist_func_t (WORD_LIST *) ; typedef int sh_glist_func_t (GENERIC_LIST *) ; typedef char *sh_string_func_t (char *) ; typedef int sh_msg_func_t (const char *, ...) ; typedef void sh_vmsg_func_t (const char *, ...) ; typedef void sh_sv_func_t (char *) ; typedef void sh_free_func_t (void *) ; typedef void sh_resetsig_func_t (int) ; typedef int sh_ignore_func_t (const char *) ; typedef int sh_assign_func_t (const char *) ; typedef int sh_builtin_func_t (WORD_LIST *) ; # 239 "general.h" typedef int QSFUNC (const void *, const void *); # 269 "general.h" extern void posix_initialize (int) ; extern rlim_t string_to_rlimtype (char *) ; extern void print_rlimtype (rlim_t, int) ; extern int all_digits (char *) ; extern int legal_number (char *, intmax_t *) ; extern int legal_identifier (char *) ; extern int check_identifier (WORD_DESC *, int) ; extern int assignment (const char *) ; extern int sh_unset_nodelay_mode (int) ; extern int sh_validfd (int) ; extern void check_dev_tty (void) ; extern int move_to_high_fd (int, int, int) ; extern int check_binary_file (char *, int) ; extern char *make_absolute (char *, char *) ; extern int absolute_pathname (const char *) ; extern int absolute_program (const char *) ; extern char *base_pathname (char *) ; extern char *full_pathname (char *) ; extern char *polite_directory_format (char *) ; extern char *extract_colon_unit (char *, int *) ; extern void tilde_initialize (void) ; extern char *bash_tilde_expand (const char *, int) ; extern int group_member (gid_t) ; extern char **get_group_list (int *) ; extern int *get_group_array (int *) ; # 30 "shell.h" 2 # 1 "error.h" 1 # 27 "error.h" extern char *get_name_for_error (void) ; extern void file_error (const char *) ; extern void programming_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void report_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void parser_error (int, const char *, ...) __attribute__((__format__ (printf, 2, 3))); extern void fatal_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void sys_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void internal_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void internal_warning (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void itrace (const char *, ...) __attribute__ ((__format__ (printf, 1, 2))); extern void command_error (const char *, int, int, int) ; extern char *command_errstr (int) ; extern void err_badarraysub (const char *) ; extern void err_unboundvar (const char *) ; extern void err_readonly (const char *) ; # 31 "shell.h" 2 # 1 "variables.h" 1 # 25 "variables.h" # 1 "array.h" 1 # 27 "array.h" typedef intmax_t arrayind_t; enum atype {array_indexed, array_assoc}; typedef struct array { enum atype type; arrayind_t max_index, num_elements; struct array_element *head; } ARRAY; typedef struct array_element { arrayind_t ind; char *value; struct array_element *next, *prev; } ARRAY_ELEMENT; typedef int sh_ae_map_func_t (ARRAY_ELEMENT *) ; extern ARRAY *array_create (void) ; extern void array_flush (ARRAY *) ; extern void array_dispose (ARRAY *) ; extern ARRAY *array_copy (ARRAY *) ; extern ARRAY *array_slice (ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *) ; extern void array_walk (ARRAY *, sh_ae_map_func_t *) ; extern ARRAY_ELEMENT *array_shift (ARRAY *, int, int) ; extern int array_rshift (ARRAY *, int, char *) ; extern ARRAY *array_quote (ARRAY *) ; extern char *array_subrange (ARRAY *, arrayind_t, arrayind_t, int) ; extern char *array_patsub (ARRAY *, char *, char *, int) ; extern ARRAY_ELEMENT *array_create_element (arrayind_t, char *) ; extern ARRAY_ELEMENT *array_copy_element (ARRAY_ELEMENT *) ; extern void array_dispose_element (ARRAY_ELEMENT *) ; extern int array_insert (ARRAY *, arrayind_t, char *) ; extern ARRAY_ELEMENT *array_remove (ARRAY *, arrayind_t) ; extern char *array_reference (ARRAY *, arrayind_t) ; extern WORD_LIST *array_to_word_list (ARRAY *) ; extern ARRAY *array_from_word_list (WORD_LIST *) ; extern ARRAY *array_assign_list (ARRAY *, WORD_LIST *) ; extern char **array_to_argv (ARRAY *) ; extern char *array_to_assign (ARRAY *, int) ; extern char *array_to_string (ARRAY *, char *, int) ; extern ARRAY *array_from_string (char *, char *) ; # 26 "variables.h" 2 # 1 "hashlib.h" 1 # 34 "hashlib.h" typedef struct bucket_contents { struct bucket_contents *next; char *key; void * data; unsigned int khash; int times_found; } BUCKET_CONTENTS; typedef struct hash_table { BUCKET_CONTENTS **bucket_array; int nbuckets; int nentries; } HASH_TABLE; typedef int hash_wfunc (BUCKET_CONTENTS *) ; extern HASH_TABLE *hash_create (int) ; extern HASH_TABLE *hash_copy (HASH_TABLE *, sh_string_func_t *) ; extern void hash_flush (HASH_TABLE *, sh_free_func_t *) ; extern void hash_dispose (HASH_TABLE *) ; extern void hash_walk (HASH_TABLE *, hash_wfunc *) ; extern int hash_bucket (const char *, HASH_TABLE *) ; extern int hash_size (HASH_TABLE *) ; extern BUCKET_CONTENTS *hash_search (const char *, HASH_TABLE *, int) ; extern BUCKET_CONTENTS *hash_insert (char *, HASH_TABLE *, int) ; extern BUCKET_CONTENTS *hash_remove (const char *, HASH_TABLE *, int) ; extern unsigned int hash_string (const char *) ; # 29 "variables.h" 2 # 1 "conftypes.h" 1 # 31 "variables.h" 2 typedef struct var_context { char *name; int scope; int flags; struct var_context *up; struct var_context *down; HASH_TABLE *table; } VAR_CONTEXT; # 63 "variables.h" typedef struct variable *sh_var_value_func_t (struct variable *) ; typedef struct variable *sh_var_assign_func_t (struct variable *, char *, arrayind_t) ; union _value { char *s; intmax_t i; COMMAND *f; ARRAY *a; HASH_TABLE *h; double d; void *v; }; typedef struct variable { char *name; char *value; char *exportstr; sh_var_value_func_t *dynamic_value; sh_var_assign_func_t *assign_func; int attributes; int context; } SHELL_VAR; typedef struct _vlist { SHELL_VAR **list; int list_size; int list_len; } VARLIST; # 193 "variables.h" typedef int sh_var_map_func_t (SHELL_VAR *) ; extern VAR_CONTEXT *global_variables; extern VAR_CONTEXT *shell_variables; extern HASH_TABLE *shell_functions; extern HASH_TABLE *temporary_env; extern int variable_context; extern char *dollar_vars[]; extern char **export_env; extern void initialize_shell_variables (char **, int) ; extern SHELL_VAR *set_if_not (char *, char *) ; extern void sh_set_lines_and_columns (int, int) ; extern void set_pwd (void) ; extern void set_ppid (void) ; extern void make_funcname_visible (int) ; extern SHELL_VAR *var_lookup (const char *, VAR_CONTEXT *) ; extern SHELL_VAR *find_function (const char *) ; extern SHELL_VAR *find_variable (const char *) ; extern SHELL_VAR *find_variable_internal (const char *, int) ; extern SHELL_VAR *find_tempenv_variable (const char *) ; extern SHELL_VAR *copy_variable (SHELL_VAR *) ; extern SHELL_VAR *make_local_variable (const char *) ; extern SHELL_VAR *bind_variable (const char *, char *) ; extern SHELL_VAR *bind_function (const char *, COMMAND *) ; extern SHELL_VAR **map_over (sh_var_map_func_t *, VAR_CONTEXT *) ; SHELL_VAR **map_over_funcs (sh_var_map_func_t *) ; extern SHELL_VAR **all_shell_variables (void) ; extern SHELL_VAR **all_shell_functions (void) ; extern SHELL_VAR **all_visible_variables (void) ; extern SHELL_VAR **all_visible_functions (void) ; extern SHELL_VAR **all_exported_variables (void) ; extern SHELL_VAR **local_exported_variables (void) ; extern SHELL_VAR **all_local_variables (void) ; extern SHELL_VAR **all_array_variables (void) ; extern char **all_variables_matching_prefix (const char *) ; extern char **make_var_array (HASH_TABLE *) ; extern char **add_or_supercede_exported_var (char *, int) ; extern char *get_variable_value (SHELL_VAR *) ; extern char *get_string_value (const char *) ; extern char *sh_get_env_value (const char *) ; extern char *make_variable_value (SHELL_VAR *, char *) ; extern SHELL_VAR *bind_variable_value (SHELL_VAR *, char *) ; extern SHELL_VAR *bind_int_variable (char *, char *) ; extern SHELL_VAR *bind_var_to_int (char *, intmax_t) ; extern int assign_in_env (const char *) ; extern int unbind_variable (const char *) ; extern int unbind_func (const char *) ; extern int makunbound (const char *, VAR_CONTEXT *) ; extern int kill_local_variable (const char *) ; extern void delete_all_variables (HASH_TABLE *) ; extern void delete_all_contexts (VAR_CONTEXT *) ; extern VAR_CONTEXT *new_var_context (char *, int) ; extern void dispose_var_context (VAR_CONTEXT *) ; extern VAR_CONTEXT *push_var_context (char *, int, HASH_TABLE *) ; extern void pop_var_context (void) ; extern VAR_CONTEXT *push_scope (int, HASH_TABLE *) ; extern void pop_scope (int) ; extern void push_context (char *, int, HASH_TABLE *) ; extern void pop_context (void) ; extern void push_dollar_vars (void) ; extern void pop_dollar_vars (void) ; extern void dispose_saved_dollar_vars (void) ; extern void adjust_shell_level (int) ; extern void non_unsettable (char *) ; extern void dispose_variable (SHELL_VAR *) ; extern void dispose_used_env_vars (void) ; extern void dispose_function_env (void) ; extern void dispose_builtin_env (void) ; extern void merge_temporary_env (void) ; extern void merge_builtin_env (void) ; extern void kill_all_local_variables (void) ; extern void set_var_read_only (char *) ; extern void set_func_read_only (const char *) ; extern void set_var_auto_export (char *) ; extern void set_func_auto_export (const char *) ; extern void sort_variables (SHELL_VAR **) ; extern void maybe_make_export_env (void) ; extern void update_export_env_inplace (char *, int, char *) ; extern void put_command_name_into_env (char *) ; extern void put_gnu_argv_flags_into_env (intmax_t, char *) ; extern void print_var_list (SHELL_VAR **) ; extern void print_func_list (SHELL_VAR **) ; extern void print_assignment (SHELL_VAR *) ; extern void print_var_value (SHELL_VAR *, int) ; extern void print_var_function (SHELL_VAR *) ; extern SHELL_VAR *make_new_array_variable (char *) ; extern SHELL_VAR *make_local_array_variable (char *) ; extern void set_pipestatus_array (int *, int) ; extern void set_pipestatus_from_exit (int) ; extern void stupidly_hack_special_variables (char *) ; extern int get_random_number (void) ; extern void sv_ifs (char *) ; extern void sv_path (char *) ; extern void sv_mail (char *) ; extern void sv_globignore (char *) ; extern void sv_ignoreeof (char *) ; extern void sv_strict_posix (char *) ; extern void sv_optind (char *) ; extern void sv_opterr (char *) ; extern void sv_locale (char *) ; extern void sv_terminal (char *) ; extern void sv_hostfile (char *) ; extern void sv_tz (char *) ; extern void sv_histsize (char *) ; extern void sv_histignore (char *) ; extern void sv_history_control (char *) ; extern void sv_histchars (char *) ; # 32 "shell.h" 2 # 1 "arrayfunc.h" 1 # 28 "arrayfunc.h" extern SHELL_VAR *convert_var_to_array (SHELL_VAR *) ; extern SHELL_VAR *bind_array_variable (char *, arrayind_t, char *) ; extern SHELL_VAR *assign_array_element (char *, char *) ; extern SHELL_VAR *find_or_make_array_variable (char *, int) ; extern SHELL_VAR *assign_array_from_string (char *, char *) ; extern SHELL_VAR *assign_array_var_from_word_list (SHELL_VAR *, WORD_LIST *) ; extern SHELL_VAR *assign_array_var_from_string (SHELL_VAR *, char *) ; extern int unbind_array_element (SHELL_VAR *, char *) ; extern int skipsubscript (const char *, int) ; extern void print_array_assignment (SHELL_VAR *, int) ; extern arrayind_t array_expand_index (char *, int) ; extern int valid_array_reference (char *) ; extern char *array_value (char *, int, int *) ; extern char *get_array_value (char *, int, int *) ; extern char *array_variable_name (char *, char **, int *) ; extern SHELL_VAR *array_variable_part (char *, char **, int *) ; # 33 "shell.h" 2 # 1 "quit.h" 1 # 25 "quit.h" extern int interrupt_state; # 34 "shell.h" 2 # 1 "./include/maxpath.h" 1 # 27 "./include/maxpath.h" # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 28 "./include/maxpath.h" 2 # 35 "shell.h" 2 # 1 "unwind_prot.h" 1 # 25 "unwind_prot.h" extern void begin_unwind_frame (char *) ; extern void discard_unwind_frame (char *) ; extern void run_unwind_frame (char *) ; extern void add_unwind_protect (); extern void remove_unwind_protect (void) ; extern void run_unwind_protects (void) ; extern void clear_unwind_protect_list (int) ; extern void uwp_init (void) ; extern void unwind_protect_mem (char *, int) ; # 36 "shell.h" 2 # 1 "dispose_cmd.h" 1 # 26 "dispose_cmd.h" extern void dispose_command (COMMAND *) ; extern void dispose_word (WORD_DESC *) ; extern void dispose_words (WORD_LIST *) ; extern void dispose_word_array (char **) ; extern void dispose_redirects (REDIRECT *) ; extern void dispose_cond_node (COND_COM *) ; # 37 "shell.h" 2 # 1 "make_cmd.h" 1 # 26 "make_cmd.h" extern void cmd_init (void) ; extern WORD_DESC *make_bare_word (const char *) ; extern WORD_DESC *make_word_flags (WORD_DESC *, const char *) ; extern WORD_DESC *make_word (const char *) ; extern WORD_DESC *make_word_from_token (int) ; extern WORD_LIST *make_word_list (WORD_DESC *, WORD_LIST *) ; extern COMMAND *make_command (enum command_type, SIMPLE_COM *) ; extern COMMAND *command_connect (COMMAND *, COMMAND *, int) ; extern COMMAND *make_for_command (WORD_DESC *, WORD_LIST *, COMMAND *) ; extern COMMAND *make_group_command (COMMAND *) ; extern COMMAND *make_case_command (WORD_DESC *, PATTERN_LIST *) ; extern PATTERN_LIST *make_pattern_list (WORD_LIST *, COMMAND *) ; extern COMMAND *make_if_command (COMMAND *, COMMAND *, COMMAND *) ; extern COMMAND *make_while_command (COMMAND *, COMMAND *) ; extern COMMAND *make_until_command (COMMAND *, COMMAND *) ; extern COMMAND *make_bare_simple_command (void) ; extern COMMAND *make_simple_command (ELEMENT, COMMAND *) ; extern void make_here_document (REDIRECT *) ; extern REDIRECT *make_redirection (int, enum r_instruction, REDIRECTEE) ; extern COMMAND *make_function_def (WORD_DESC *, COMMAND *, int, int) ; extern COMMAND *clean_simple_command (COMMAND *) ; extern COMMAND *make_arith_command (WORD_LIST *) ; extern COMMAND *make_select_command (WORD_DESC *, WORD_LIST *, COMMAND *) ; extern COND_COM *make_cond_node (int, WORD_DESC *, COND_COM *, COND_COM *) ; extern COMMAND *make_cond_command (COND_COM *) ; extern COMMAND *make_arith_for_command (WORD_LIST *, COMMAND *, int) ; extern COMMAND *make_subshell_command (COMMAND *) ; extern COMMAND *connect_async_list (COMMAND *, COMMAND *, int) ; # 38 "shell.h" 2 # 1 "./include/ocache.h" 1 # 55 "./include/ocache.h" typedef struct objcache { void * data; int cs; int nc; } sh_obj_cache_t; # 39 "shell.h" 2 # 1 "subst.h" 1 # 44 "subst.h" extern char * de_backslash (char *) ; extern void unquote_bang (char *) ; extern char *extract_command_subst (char *, int *) ; extern char *extract_arithmetic_subst (char *, int *) ; extern char *extract_process_subst (char *, char *, int *) ; extern char *assignment_name (char *) ; extern char *string_list_internal (WORD_LIST *, char *) ; extern char *string_list (WORD_LIST *) ; extern char *string_list_dollar_star (WORD_LIST *) ; extern char *string_list_dollar_at (WORD_LIST *, int) ; extern void word_list_remove_quoted_nulls (WORD_LIST *) ; extern WORD_LIST *list_string (char *, char *, int) ; extern char *get_word_from_string (char **, char *, char **) ; extern char *strip_trailing_ifs_whitespace (char *, char *, int) ; extern int do_assignment (const char *) ; extern int do_assignment_no_expand (const char *) ; extern char *sub_append_string (char *, char *, int *, int *) ; extern char *sub_append_number (intmax_t, char *, int *, int *) ; extern WORD_LIST *list_rest_of_args (void) ; extern char *string_rest_of_args (int) ; extern int number_of_args (void) ; extern WORD_LIST *expand_string_unsplit (char *, int) ; extern WORD_LIST *expand_prompt_string (char *, int) ; extern WORD_LIST *expand_string (char *, int) ; extern char *expand_string_to_string (char *, int) ; extern char *expand_string_unsplit_to_string (char *, int) ; extern char *dequote_string (char *) ; extern WORD_LIST *expand_word (WORD_DESC *, int) ; extern WORD_LIST *expand_word_unsplit (WORD_DESC *, int) ; extern WORD_LIST *expand_word_leave_quoted (WORD_DESC *, int) ; extern char *get_dollar_var_value (intmax_t) ; extern char *quote_string (char *) ; extern char *quote_escapes (char *) ; extern char *string_quote_removal (char *, int) ; extern WORD_DESC *word_quote_removal (WORD_DESC *, int) ; extern WORD_LIST *word_list_quote_removal (WORD_LIST *, int) ; extern void setifs (SHELL_VAR *) ; extern char *getifs (void) ; extern WORD_LIST *word_split (WORD_DESC *, char *) ; extern WORD_LIST *expand_words (WORD_LIST *) ; extern WORD_LIST *expand_words_no_vars (WORD_LIST *) ; extern WORD_LIST *expand_words_shellexp (WORD_LIST *) ; extern char *command_substitute (char *, int) ; extern char *pat_subst (char *, char *, char *, int) ; extern void unlink_fifo_list (void) ; extern WORD_LIST *list_string_with_quotes (char *) ; extern char *extract_array_assignment_list (char *, int *) ; extern char *remove_backslashes (char *) ; extern char *cond_expand_word (WORD_DESC *, int) ; extern int char_is_quoted (char *, int) ; extern int unclosed_pair (char *, int, char *) ; extern int skip_to_delim (char *, int, char *) ; extern WORD_LIST *split_at_delims (char *, int, char *, int, int *, int *) ; extern SHELL_VAR *ifs_var; extern char *ifs_value; extern unsigned char ifs_cmap[]; extern unsigned char ifs_firstc; # 40 "shell.h" 2 # 1 "sig.h" 1 # 33 "sig.h" typedef void SigHandler (int) ; # 47 "sig.h" extern SigHandler *set_signal_handler (int, SigHandler *) ; # 112 "sig.h" extern void termination_unwind_protect (int) ; extern void sigint_sighandler (int) ; extern void initialize_signals (int) ; extern void initialize_terminating_signals (void) ; extern void reset_terminating_signals (void) ; extern void throw_to_top_level (void) ; extern void jump_to_top_level (int) __attribute__((__noreturn__)); extern SigHandler *set_sigint_handler (void) ; extern SigHandler *trap_to_sighandler (int) ; extern void trap_handler (int) ; # 41 "shell.h" 2 # 1 "pathnames.h" 1 # 42 "shell.h" 2 # 1 "externs.h" 1 # 30 "externs.h" extern intmax_t evalexp (char *, int *) ; extern char *make_command_string (COMMAND *) ; extern void print_command (COMMAND *) ; extern void print_simple_command (SIMPLE_COM *) ; extern char *named_function_string (char *, COMMAND *, int) ; extern void print_word_list (WORD_LIST *, char *) ; extern char *indirection_level_string (void) ; extern void xtrace_print_word_list (WORD_LIST *) ; extern void xtrace_print_arith_cmd (WORD_LIST *) ; extern void xtrace_print_cond_term (int, int, WORD_DESC *, char *, char *) ; extern void exit_shell (int) __attribute__((__noreturn__)); extern void sh_exit (int) __attribute__((__noreturn__)); extern void disable_priv_mode (void) ; extern void unbind_args (void) ; extern int shell_is_restricted (char *) ; extern int maybe_make_restricted (char *) ; extern void unset_bash_input (int) ; extern void get_current_user_info (void) ; extern int reader_loop (void) ; extern int parse_command (void) ; extern int read_command (void) ; extern char **brace_expand (char *) ; extern int yyparse (void) ; extern int return_EOF (void) ; extern void reset_parser (void) ; extern WORD_LIST *parse_string_to_word_list (char *, const char *) ; extern char *decode_prompt_string (char *) ; extern int get_current_prompt_level (void) ; extern void set_current_prompt_level (int) ; extern char *history_delimiting_chars (void) ; extern void set_default_locale (void) ; extern void set_default_locale_vars (void) ; extern int set_locale_var (char *, char *) ; extern int set_lang (char *, char *) ; extern char *get_locale_var (char *) ; extern char *localetrans (char *, int, int *) ; extern char *mk_msgstr (char *, int *) ; extern char *localeexpand (char *, int, int, int, int *) ; extern void list_walk (GENERIC_LIST *, sh_glist_func_t *) ; extern void wlist_walk (WORD_LIST *, sh_icpfunc_t *) ; extern GENERIC_LIST *list_reverse (); extern int list_length (); extern GENERIC_LIST *list_append (); extern GENERIC_LIST *list_remove (); extern int find_string_in_alist (char *, STRING_INT_ALIST *, int) ; extern char *find_token_in_alist (int, STRING_INT_ALIST *, int) ; extern int find_index_in_alist (char *, STRING_INT_ALIST *, int) ; extern char *substring (char *, int, int) ; extern char *strsub (char *, char *, char *, int) ; extern char *strcreplace (char *, int, char *, int) ; extern void strip_leading (char *) ; extern void strip_trailing (char *, int, int) ; extern void xbcopy (char *, char *, int) ; extern long get_clk_tck (void) ; extern void clock_t_to_secs (); extern void print_clock_t (); extern char *fmtulong (unsigned long int, int, char *, size_t, int) ; extern char *fmtullong (unsigned long long int, int, char *, size_t, int) ; extern char *fmtumax (uintmax_t, int, char *, size_t, int) ; extern char *inttostr (intmax_t, char *, size_t) ; extern char *itos (intmax_t) ; extern char *uinttostr (uintmax_t, char *, size_t) ; extern char *uitos (uintmax_t) ; extern char *sh_makepath (const char *, const char *, int) ; extern int isnetconn (int) ; extern int netopen (char *) ; # 180 "externs.h" extern int getmaxgroups (void) ; extern long getmaxchild (void) ; extern char *sh_canonpath (char *, int) ; extern char *sh_physpath (char *, int) ; extern char *sh_realpath (const char *, char *) ; extern char *sh_single_quote (char *) ; extern char *sh_double_quote (char *) ; extern char *sh_un_double_quote (char *) ; extern char *sh_backslash_quote (char *) ; extern char *sh_backslash_quote_for_double_quotes (char *) ; extern int sh_contains_shell_metas (char *) ; extern int spname (char *, char *) ; # 219 "externs.h" extern char *strerror (int) ; # 228 "externs.h" extern char *strindex (const char *, const char *) ; typedef struct _list_of_strings { char **list; int list_size; int list_len; } STRINGLIST; typedef int sh_strlist_map_func_t (char *) ; extern STRINGLIST *strlist_create (int) ; extern STRINGLIST *strlist_resize (STRINGLIST *, int) ; extern void strlist_flush (STRINGLIST *) ; extern void strlist_dispose (STRINGLIST *) ; extern int strlist_remove (STRINGLIST *, char *) ; extern STRINGLIST *strlist_copy (STRINGLIST *) ; extern STRINGLIST *strlist_merge (STRINGLIST *, STRINGLIST *) ; extern STRINGLIST *strlist_append (STRINGLIST *, STRINGLIST *) ; extern STRINGLIST *strlist_prefix_suffix (STRINGLIST *, char *, char *) ; extern void strlist_print (STRINGLIST *, char *) ; extern void strlist_walk (STRINGLIST *, sh_strlist_map_func_t *) ; extern void strlist_sort (STRINGLIST *) ; extern char **strvec_create (int) ; extern char **strvec_resize (char **, int) ; extern void strvec_flush (char **) ; extern void strvec_dispose (char **) ; extern int strvec_remove (char **, char *) ; extern int strvec_len (char **) ; extern int strvec_search (char **, char *) ; extern char **strvec_copy (char **) ; extern int strvec_strcmp (char **, char **) ; extern void strvec_sort (char **) ; extern char **strvec_from_word_list (WORD_LIST *, int, int, int *) ; extern WORD_LIST *strvec_to_word_list (char **, int, int) ; # 306 "externs.h" extern char *ansicstr (char *, int, int, int *, int *) ; extern char *ansic_quote (char *, int, int *) ; extern int ansic_shouldquote (const char *) ; extern char *ansiexpand (char *, int, int, int *) ; extern void timeval_to_secs (); extern void print_timeval (); extern char *sh_mktmpname (char *, int) ; extern int sh_mktmpfd (char *, int, char **) ; extern char *xstrchr (const char *, int) ; extern ssize_t zread (int, char *, size_t) ; extern ssize_t zreadintr (int, char *, size_t) ; extern ssize_t zreadc (int, char *) ; extern void zreset (void) ; extern void zsyncfd (int) ; extern int zwrite (int, char *, size_t) ; # 43 "shell.h" 2 # 1 "version.h" 1 # 17 "version.h" extern char *shell_version_string (void) ; extern void show_shell_version (int) ; # 44 "shell.h" 2 extern int EOF_Reached; # 84 "shell.h" extern char **shell_environment; extern WORD_LIST *rest_of_args; extern int executing, login_shell; extern int interactive, interactive_shell; extern int startup_state; struct fd_bitmap { int size; char *bitmap; }; struct user_info { uid_t uid, euid; gid_t gid, egid; char *user_name; char *shell; char *home_dir; }; extern struct user_info current_user; # 46 "./parse.y" 2 # 1 "trap.h" 1 # 53 "trap.h" extern char *trap_list[]; extern void initialize_traps (void) ; extern void run_pending_traps (void) ; extern void maybe_set_sigchld_trap (char *) ; extern void set_sigchld_trap (char *) ; extern void set_debug_trap (char *) ; extern void set_error_trap (char *) ; extern void set_sigint_trap (char *) ; extern void set_signal (int, char *) ; extern void restore_default_signal (int) ; extern void ignore_signal (int) ; extern int run_exit_trap (void) ; extern void run_trap_cleanup (int) ; extern void run_debug_trap (void) ; extern void run_error_trap (void) ; extern void free_trap_strings (void) ; extern void reset_signal_handlers (void) ; extern void restore_original_signals (void) ; extern char *signal_name (int) ; extern int decode_signal (char *) ; extern void run_interrupt_trap (void) ; extern int maybe_call_trap_handler (int) ; extern int signal_is_trapped (int) ; extern int signal_is_ignored (int) ; extern int signal_is_special (int) ; extern void set_signal_ignored (int) ; # 47 "./parse.y" 2 # 1 "flags.h" 1 # 35 "flags.h" struct flags_alist { char name; int *value; }; extern struct flags_alist shell_flags[]; extern char optflags[]; extern int mark_modified_vars, exit_immediately_on_error, disallow_filename_globbing, place_keywords_in_env, read_but_dont_execute, just_one_command, unbound_vars_is_error, echo_input_at_read, echo_command_at_execute, no_invisible_vars, noclobber, hashing_enabled, forced_interactive, privileged_mode, asynchronous_notification, interactive_comments, no_symbolic_links; extern int brace_expansion; extern int history_expansion; extern int restricted; extern int restricted_shell; extern int *find_flag (int) ; extern int change_flag (int, int) ; extern char *which_set_flags (void) ; extern void reset_shell_flags (void) ; extern void initialize_flags (void) ; # 48 "./parse.y" 2 # 1 "parser.h" 1 # 26 "parser.h" # 1 "input.h" 1 # 34 "input.h" typedef int sh_cget_func_t (void) ; typedef int sh_cunget_func_t (int) ; enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream}; # 53 "input.h" typedef struct BSTREAM { int b_fd; char *b_buffer; size_t b_size; size_t b_used; int b_flag; size_t b_inputp; } BUFFERED_STREAM; extern int default_buffered_input; typedef union { FILE *file; char *string; int buffered_fd; } INPUT_STREAM; typedef struct { enum stream_type type; char *name; INPUT_STREAM location; sh_cget_func_t *getter; sh_cunget_func_t *ungetter; } BASH_INPUT; extern BASH_INPUT bash_input; extern void initialize_bash_input (void) ; extern void init_yy_io (sh_cget_func_t *, sh_cunget_func_t *, enum stream_type, const char *, INPUT_STREAM) ; extern char *yy_input_name (void) ; extern void with_input_from_stdin (void) ; extern void with_input_from_string (char *, const char *) ; extern void with_input_from_stream (FILE *, const char *) ; extern void push_stream (int) ; extern void pop_stream (void) ; extern int stream_on_stack (enum stream_type) ; extern char *read_secondary_line (int) ; extern int find_reserved_word (char *) ; extern void gather_here_documents (void) ; extern void execute_prompt_command (char *) ; extern int *save_token_state (void) ; extern void restore_token_state (int *) ; extern int getc_with_restart (FILE *) ; extern int ungetc_with_restart (int, FILE *) ; extern int fd_is_bash_input (int) ; extern int set_bash_input_fd (int) ; extern int save_bash_input (int, int) ; extern int check_bash_input (int) ; extern int duplicate_buffered_stream (int, int) ; extern BUFFERED_STREAM *fd_to_buffered_stream (int) ; extern BUFFERED_STREAM *set_buffered_stream (int, BUFFERED_STREAM *) ; extern BUFFERED_STREAM *open_buffered_stream (char *) ; extern void free_buffered_stream (BUFFERED_STREAM *) ; extern int close_buffered_stream (BUFFERED_STREAM *) ; extern int close_buffered_fd (int) ; extern int sync_buffered_stream (int) ; extern int buffered_getchar (void) ; extern int buffered_ungetchar (int) ; extern void with_input_from_buffered_stream (int, char *) ; # 27 "parser.h" 2 struct dstack { char *delimiters; int delimiter_depth; int delimiter_space; }; # 49 "./parse.y" 2 # 1 "mailcheck.h" 1 # 25 "mailcheck.h" extern int time_to_check_mail (void) ; extern void reset_mail_timer (void) ; extern void reset_mail_files (void) ; extern void free_mail_files (void) ; extern char *make_default_mailpath (void) ; extern void remember_mail_dates (void) ; extern void check_mail (void) ; # 50 "./parse.y" 2 # 1 "test.h" 1 # 30 "test.h" extern int test_eaccess (char *, int) ; extern int test_unop (char *) ; extern int test_binop (char *) ; extern int unary_test (char *, char *) ; extern int binary_test (char *, char *, char *, int) ; extern int test_command (int, char **) ; # 51 "./parse.y" 2 # 1 "builtins/common.h" 1 # 24 "builtins/common.h" # 1 "./include/stdc.h" 1 # 25 "builtins/common.h" 2 # 57 "builtins/common.h" extern void builtin_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern void builtin_usage (void) ; extern void no_args (WORD_LIST *) ; extern int no_options (WORD_LIST *) ; extern void sh_needarg (char *) ; extern void sh_neednumarg (char *) ; extern void sh_notfound (char *) ; extern void sh_invalidopt (char *) ; extern void sh_invalidoptname (char *) ; extern void sh_invalidid (char *) ; extern void sh_invalidnum (char *) ; extern void sh_invalidsig (char *) ; extern void sh_erange (char *, char *) ; extern void sh_badpid (char *) ; extern void sh_badjob (char *) ; extern void sh_readonly (const char *) ; extern void sh_nojobs (char *) ; extern void sh_restricted (char *) ; extern char **make_builtin_argv (WORD_LIST *, int *) ; extern void remember_args (WORD_LIST *, int) ; extern int dollar_vars_changed (void) ; extern void set_dollar_vars_unchanged (void) ; extern void set_dollar_vars_changed (void) ; extern intmax_t get_numeric_arg (WORD_LIST *, int) ; extern int get_exitstat (WORD_LIST *) ; extern int read_octal (char *) ; extern char *the_current_working_directory; extern char *get_working_directory (char *) ; extern void set_working_directory (char *) ; extern int get_job_by_name (const char *, int) ; extern int get_job_spec (WORD_LIST *) ; extern int display_signal_list (WORD_LIST *, int) ; extern struct builtin *builtin_address_internal (char *, int) ; extern sh_builtin_func_t *find_shell_builtin (char *) ; extern sh_builtin_func_t *builtin_address (char *) ; extern sh_builtin_func_t *find_special_builtin (char *) ; extern void initialize_shell_builtins (void) ; extern void getopts_reset (int) ; extern int minus_o_option_value (char *) ; extern void list_minus_o_opts (int, int) ; extern char **get_minus_o_opts (void) ; extern int set_minus_o_option (int, char *) ; extern void set_shellopts (void) ; extern void parse_shellopts (char *) ; extern void initialize_shell_options (int) ; extern void reset_shell_options (void) ; extern void reset_shopt_options (void) ; extern char **get_shopt_options (void) ; extern int shopt_setopt (char *, int) ; extern int shopt_listopt (char *, int) ; extern int set_login_shell (int) ; extern int describe_command (char *, int) ; extern int set_or_show_attributes (WORD_LIST *, int, int) ; extern int show_var_attributes (SHELL_VAR *, int, int) ; extern int show_name_attributes (char *, int) ; extern void set_var_attribute (char *, int, int) ; extern char *get_dirstack_from_string (char *) ; extern char *get_dirstack_element (intmax_t, int) ; extern void set_dirstack_element (intmax_t, int, char *) ; extern WORD_LIST *get_directory_stack (void) ; extern int parse_and_execute (char *, const char *, int) ; extern void parse_and_execute_cleanup (void) ; extern int maybe_execute_file (const char *, int) ; extern int source_file (const char *) ; extern int fc_execute_file (const char *) ; # 52 "./parse.y" 2 # 1 "builtins/builtext.h" 1 extern int alias_builtin (WORD_LIST *) ; extern char * const alias_doc[]; extern int unalias_builtin (WORD_LIST *) ; extern char * const unalias_doc[]; extern int bind_builtin (WORD_LIST *) ; extern char * const bind_doc[]; extern int break_builtin (WORD_LIST *) ; extern char * const break_doc[]; extern int continue_builtin (WORD_LIST *) ; extern char * const continue_doc[]; extern int builtin_builtin (WORD_LIST *) ; extern char * const builtin_doc[]; extern int cd_builtin (WORD_LIST *) ; extern char * const cd_doc[]; extern int pwd_builtin (WORD_LIST *) ; extern char * const pwd_doc[]; extern int colon_builtin (WORD_LIST *) ; extern char * const colon_doc[]; extern int colon_builtin (WORD_LIST *) ; extern char * const true_doc[]; extern int false_builtin (WORD_LIST *) ; extern char * const false_doc[]; extern int command_builtin (WORD_LIST *) ; extern char * const command_doc[]; extern int declare_builtin (WORD_LIST *) ; extern char * const declare_doc[]; extern int declare_builtin (WORD_LIST *) ; extern char * const typeset_doc[]; extern int local_builtin (WORD_LIST *) ; extern char * const local_doc[]; extern int echo_builtin (WORD_LIST *) ; extern char * const echo_doc[]; extern int enable_builtin (WORD_LIST *) ; extern char * const enable_doc[]; extern int eval_builtin (WORD_LIST *) ; extern char * const eval_doc[]; extern int getopts_builtin (WORD_LIST *) ; extern char * const getopts_doc[]; extern int exec_builtin (WORD_LIST *) ; extern char * const exec_doc[]; extern int exit_builtin (WORD_LIST *) ; extern char * const exit_doc[]; extern int logout_builtin (WORD_LIST *) ; extern char * const logout_doc[]; extern int fc_builtin (WORD_LIST *) ; extern char * const fc_doc[]; extern int fg_builtin (WORD_LIST *) ; extern char * const fg_doc[]; extern int bg_builtin (WORD_LIST *) ; extern char * const bg_doc[]; extern int hash_builtin (WORD_LIST *) ; extern char * const hash_doc[]; extern int help_builtin (WORD_LIST *) ; extern char * const help_doc[]; extern int history_builtin (WORD_LIST *) ; extern char * const history_doc[]; extern int jobs_builtin (WORD_LIST *) ; extern char * const jobs_doc[]; extern int disown_builtin (WORD_LIST *) ; extern char * const disown_doc[]; extern int kill_builtin (WORD_LIST *) ; extern char * const kill_doc[]; extern int let_builtin (WORD_LIST *) ; extern char * const let_doc[]; extern int read_builtin (WORD_LIST *) ; extern char * const read_doc[]; extern int return_builtin (WORD_LIST *) ; extern char * const return_doc[]; extern int set_builtin (WORD_LIST *) ; extern char * const set_doc[]; extern int unset_builtin (WORD_LIST *) ; extern char * const unset_doc[]; extern int export_builtin (WORD_LIST *) ; extern char * const export_doc[]; extern int readonly_builtin (WORD_LIST *) ; extern char * const readonly_doc[]; extern int shift_builtin (WORD_LIST *) ; extern char * const shift_doc[]; extern int source_builtin (WORD_LIST *) ; extern char * const source_doc[]; extern int source_builtin (WORD_LIST *) ; extern char * const dot_doc[]; extern int suspend_builtin (WORD_LIST *) ; extern char * const suspend_doc[]; extern int test_builtin (WORD_LIST *) ; extern char * const test_doc[]; extern int test_builtin (WORD_LIST *) ; extern char * const test_bracket_doc[]; extern int times_builtin (WORD_LIST *) ; extern char * const times_doc[]; extern int trap_builtin (WORD_LIST *) ; extern char * const trap_doc[]; extern int type_builtin (WORD_LIST *) ; extern char * const type_doc[]; extern int ulimit_builtin (WORD_LIST *) ; extern char * const ulimit_doc[]; extern int umask_builtin (WORD_LIST *) ; extern char * const umask_doc[]; extern int wait_builtin (WORD_LIST *) ; extern char * const wait_doc[]; extern char * const for_doc[]; extern char * const arith_for_doc[]; extern char * const select_doc[]; extern char * const time_doc[]; extern char * const case_doc[]; extern char * const if_doc[]; extern char * const while_doc[]; extern char * const until_doc[]; extern char * const function_doc[]; extern char * const grouping_braces_doc[]; extern char * const fg_percent_doc[]; extern char * const arith_doc[]; extern char * const conditional_doc[]; extern char * const variable_help_doc[]; extern int pushd_builtin (WORD_LIST *) ; extern char * const pushd_doc[]; extern int popd_builtin (WORD_LIST *) ; extern char * const popd_doc[]; extern int dirs_builtin (WORD_LIST *) ; extern char * const dirs_doc[]; extern int shopt_builtin (WORD_LIST *) ; extern char * const shopt_doc[]; extern int printf_builtin (WORD_LIST *) ; extern char * const printf_doc[]; extern int complete_builtin (WORD_LIST *) ; extern char * const complete_doc[]; extern int compgen_builtin (WORD_LIST *) ; extern char * const compgen_doc[]; # 53 "./parse.y" 2 # 1 "./include/shmbutil.h" 1 # 24 "./include/shmbutil.h" # 1 "./include/stdc.h" 1 # 25 "./include/shmbutil.h" 2 # 54 "./include/shmbutil.h" # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 55 "./include/shmbutil.h" 2 # 69 "./include/shmbutil.h" extern size_t xmbsrtowcs (wchar_t *, const char **, size_t, mbstate_t *) ; extern char *xstrchr (const char *, int) ; # 55 "./parse.y" 2 # 1 "bashline.h" 1 # 26 "bashline.h" extern int bash_readline_initialized; extern void posix_readline_initialize (int) ; extern int enable_hostname_completion (int) ; extern void initialize_readline (void) ; extern void bashline_reinitialize (void) ; extern int bash_re_edit (char *) ; extern int bind_keyseq_to_unix_command (char *) ; extern char *command_word_completion_function (const char *, int) ; extern char *bash_groupname_completion_function (const char *, int) ; extern char *bash_servicename_completion_function (const char *, int) ; extern char **get_hostname_list (void) ; extern void clear_hostname_list (void) ; extern char **bash_directory_completion_matches (const char *) ; # 58 "./parse.y" 2 # 1 "./lib/readline/readline.h" 1 # 36 "./lib/readline/readline.h" # 1 "./lib/readline/rlstdc.h" 1 # 37 "./lib/readline/readline.h" 2 # 1 "./lib/readline/rltypedefs.h" 1 # 48 "./lib/readline/rltypedefs.h" typedef int rl_command_func_t (int, int); typedef char *rl_compentry_func_t (const char *, int); typedef char **rl_completion_func_t (const char *, int, int); typedef char *rl_quote_func_t (char *, int, char *); typedef char *rl_dequote_func_t (char *, int); typedef int rl_compignore_func_t (char **); typedef void rl_compdisp_func_t (char **, int, int); typedef int rl_hook_func_t (void); typedef int rl_getc_func_t (FILE *); typedef int rl_linebuf_func_t (char *, int); typedef int rl_intfunc_t (int); typedef int rl_icpfunc_t (char *); typedef int rl_icppfunc_t (char **); typedef void rl_voidfunc_t (void); typedef void rl_vintfunc_t (int); typedef void rl_vcpfunc_t (char *); typedef void rl_vcppfunc_t (char **); # 38 "./lib/readline/readline.h" 2 # 1 "./lib/readline/keymaps.h" 1 # 36 "./lib/readline/keymaps.h" # 1 "./lib/readline/chardefs.h" 1 # 37 "./lib/readline/keymaps.h" 2 # 45 "./lib/readline/keymaps.h" typedef struct _keymap_entry { char type; rl_command_func_t *function; } KEYMAP_ENTRY; # 61 "./lib/readline/keymaps.h" typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[257]; typedef KEYMAP_ENTRY *Keymap; extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap; extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap; extern Keymap rl_make_bare_keymap (void); extern Keymap rl_copy_keymap (Keymap); extern Keymap rl_make_keymap (void); extern void rl_discard_keymap (Keymap); extern Keymap rl_get_keymap_by_name (const char *); extern Keymap rl_get_keymap (void); extern void rl_set_keymap (Keymap); # 39 "./lib/readline/readline.h" 2 # 1 "./lib/readline/tilde.h" 1 # 43 "./lib/readline/tilde.h" typedef char *tilde_hook_func_t (char *); extern tilde_hook_func_t *tilde_expansion_preexpansion_hook; extern tilde_hook_func_t *tilde_expansion_failure_hook; extern char **tilde_additional_prefixes; extern char **tilde_additional_suffixes; extern char *tilde_expand (const char *); extern char *tilde_expand_word (const char *); # 40 "./lib/readline/readline.h" 2 # 55 "./lib/readline/readline.h" enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; typedef struct undo_list { struct undo_list *next; int start, end; char *text; enum undo_code what; } UNDO_LIST; extern UNDO_LIST *rl_undo_list; typedef struct _funmap { const char *name; rl_command_func_t *function; } FUNMAP; extern FUNMAP **funmap; # 83 "./lib/readline/readline.h" extern int rl_digit_argument (int, int); extern int rl_universal_argument (int, int); extern int rl_forward_byte (int, int); extern int rl_forward_char (int, int); extern int rl_forward (int, int); extern int rl_backward_byte (int, int); extern int rl_backward_char (int, int); extern int rl_backward (int, int); extern int rl_beg_of_line (int, int); extern int rl_end_of_line (int, int); extern int rl_forward_word (int, int); extern int rl_backward_word (int, int); extern int rl_refresh_line (int, int); extern int rl_clear_screen (int, int); extern int rl_arrow_keys (int, int); extern int rl_insert (int, int); extern int rl_quoted_insert (int, int); extern int rl_tab_insert (int, int); extern int rl_newline (int, int); extern int rl_do_lowercase_version (int, int); extern int rl_rubout (int, int); extern int rl_delete (int, int); extern int rl_rubout_or_delete (int, int); extern int rl_delete_horizontal_space (int, int); extern int rl_delete_or_show_completions (int, int); extern int rl_insert_comment (int, int); extern int rl_upcase_word (int, int); extern int rl_downcase_word (int, int); extern int rl_capitalize_word (int, int); extern int rl_transpose_words (int, int); extern int rl_transpose_chars (int, int); extern int rl_char_search (int, int); extern int rl_backward_char_search (int, int); extern int rl_beginning_of_history (int, int); extern int rl_end_of_history (int, int); extern int rl_get_next_history (int, int); extern int rl_get_previous_history (int, int); extern int rl_set_mark (int, int); extern int rl_exchange_point_and_mark (int, int); extern int rl_vi_editing_mode (int, int); extern int rl_emacs_editing_mode (int, int); extern int rl_overwrite_mode (int, int); extern int rl_re_read_init_file (int, int); extern int rl_dump_functions (int, int); extern int rl_dump_macros (int, int); extern int rl_dump_variables (int, int); extern int rl_complete (int, int); extern int rl_possible_completions (int, int); extern int rl_insert_completions (int, int); extern int rl_menu_complete (int, int); extern int rl_kill_word (int, int); extern int rl_backward_kill_word (int, int); extern int rl_kill_line (int, int); extern int rl_backward_kill_line (int, int); extern int rl_kill_full_line (int, int); extern int rl_unix_word_rubout (int, int); extern int rl_unix_line_discard (int, int); extern int rl_copy_region_to_kill (int, int); extern int rl_kill_region (int, int); extern int rl_copy_forward_word (int, int); extern int rl_copy_backward_word (int, int); extern int rl_yank (int, int); extern int rl_yank_pop (int, int); extern int rl_yank_nth_arg (int, int); extern int rl_yank_last_arg (int, int); extern int rl_reverse_search_history (int, int); extern int rl_forward_search_history (int, int); extern int rl_start_kbd_macro (int, int); extern int rl_end_kbd_macro (int, int); extern int rl_call_last_kbd_macro (int, int); extern int rl_revert_line (int, int); extern int rl_undo_command (int, int); extern int rl_tilde_expand (int, int); extern int rl_restart_output (int, int); extern int rl_stop_output (int, int); extern int rl_abort (int, int); extern int rl_tty_status (int, int); extern int rl_history_search_forward (int, int); extern int rl_history_search_backward (int, int); extern int rl_noninc_forward_search (int, int); extern int rl_noninc_reverse_search (int, int); extern int rl_noninc_forward_search_again (int, int); extern int rl_noninc_reverse_search_again (int, int); extern int rl_insert_close (int, int); extern void rl_callback_handler_install (const char *, rl_vcpfunc_t *); extern void rl_callback_read_char (void); extern void rl_callback_handler_remove (void); extern int rl_vi_redo (int, int); extern int rl_vi_undo (int, int); extern int rl_vi_yank_arg (int, int); extern int rl_vi_fetch_history (int, int); extern int rl_vi_search_again (int, int); extern int rl_vi_search (int, int); extern int rl_vi_complete (int, int); extern int rl_vi_tilde_expand (int, int); extern int rl_vi_prev_word (int, int); extern int rl_vi_next_word (int, int); extern int rl_vi_end_word (int, int); extern int rl_vi_insert_beg (int, int); extern int rl_vi_append_mode (int, int); extern int rl_vi_append_eol (int, int); extern int rl_vi_eof_maybe (int, int); extern int rl_vi_insertion_mode (int, int); extern int rl_vi_movement_mode (int, int); extern int rl_vi_arg_digit (int, int); extern int rl_vi_change_case (int, int); extern int rl_vi_put (int, int); extern int rl_vi_column (int, int); extern int rl_vi_delete_to (int, int); extern int rl_vi_change_to (int, int); extern int rl_vi_yank_to (int, int); extern int rl_vi_delete (int, int); extern int rl_vi_back_to_indent (int, int); extern int rl_vi_first_print (int, int); extern int rl_vi_char_search (int, int); extern int rl_vi_match (int, int); extern int rl_vi_change_char (int, int); extern int rl_vi_subst (int, int); extern int rl_vi_overstrike (int, int); extern int rl_vi_overstrike_delete (int, int); extern int rl_vi_replace (int, int); extern int rl_vi_set_mark (int, int); extern int rl_vi_goto_mark (int, int); extern int rl_vi_check (void); extern int rl_vi_domove (int, int *); extern int rl_vi_bracktype (int); extern int rl_vi_fWord (int, int); extern int rl_vi_bWord (int, int); extern int rl_vi_eWord (int, int); extern int rl_vi_fword (int, int); extern int rl_vi_bword (int, int); extern int rl_vi_eword (int, int); # 277 "./lib/readline/readline.h" extern char *readline (const char *); extern int rl_set_prompt (const char *); extern int rl_expand_prompt (char *); extern int rl_initialize (void); extern int rl_discard_argument (void); extern int rl_add_defun (const char *, rl_command_func_t *, int); extern int rl_bind_key (int, rl_command_func_t *); extern int rl_bind_key_in_map (int, rl_command_func_t *, Keymap); extern int rl_unbind_key (int); extern int rl_unbind_key_in_map (int, Keymap); extern int rl_unbind_function_in_map (rl_command_func_t *, Keymap); extern int rl_unbind_command_in_map (const char *, Keymap); extern int rl_set_key (const char *, rl_command_func_t *, Keymap); extern int rl_generic_bind (int, const char *, char *, Keymap); extern int rl_variable_bind (const char *, const char *); extern int rl_macro_bind (const char *, const char *, Keymap); extern int rl_translate_keyseq (const char *, char *, int *); extern char *rl_untranslate_keyseq (int); extern rl_command_func_t *rl_named_function (const char *); extern rl_command_func_t *rl_function_of_keyseq (const char *, Keymap, int *); extern void rl_list_funmap_names (void); extern char **rl_invoking_keyseqs_in_map (rl_command_func_t *, Keymap); extern char **rl_invoking_keyseqs (rl_command_func_t *); extern void rl_function_dumper (int); extern void rl_macro_dumper (int); extern void rl_variable_dumper (int); extern int rl_read_init_file (const char *); extern int rl_parse_and_bind (char *); extern Keymap rl_make_bare_keymap (void); extern Keymap rl_copy_keymap (Keymap); extern Keymap rl_make_keymap (void); extern void rl_discard_keymap (Keymap); extern Keymap rl_get_keymap_by_name (const char *); extern char *rl_get_keymap_name (Keymap); extern void rl_set_keymap (Keymap); extern Keymap rl_get_keymap (void); extern void rl_set_keymap_from_edit_mode (void); extern char *rl_get_keymap_name_from_edit_mode (void); extern int rl_add_funmap_entry (const char *, rl_command_func_t *); extern const char **rl_funmap_names (void); extern void rl_initialize_funmap (void); extern void rl_push_macro_input (char *); extern void rl_add_undo (enum undo_code, int, int, char *); extern void rl_free_undo_list (void); extern int rl_do_undo (void); extern int rl_begin_undo_group (void); extern int rl_end_undo_group (void); extern int rl_modifying (int, int); extern void rl_redisplay (void); extern int rl_on_new_line (void); extern int rl_on_new_line_with_prompt (void); extern int rl_forced_update_display (void); extern int rl_clear_message (void); extern int rl_reset_line_state (void); extern int rl_crlf (void); extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); extern int rl_show_char (int); extern int rl_character_len (int, int); extern void rl_save_prompt (void); extern void rl_restore_prompt (void); extern void rl_replace_line (const char *, int); extern int rl_insert_text (const char *); extern int rl_delete_text (int, int); extern int rl_kill_text (int, int); extern char *rl_copy_text (int, int); extern void rl_prep_terminal (int); extern void rl_deprep_terminal (void); extern void rl_tty_set_default_bindings (Keymap); extern int rl_reset_terminal (const char *); extern void rl_resize_terminal (void); extern void rl_set_screen_size (int, int); extern void rl_get_screen_size (int *, int *); extern char *rl_get_termcap (const char *); extern int rl_stuff_char (int); extern int rl_execute_next (int); extern int rl_clear_pending_input (void); extern int rl_read_key (void); extern int rl_getc (FILE *); extern int rl_set_keyboard_input_timeout (int); extern void rl_extend_line_buffer (int); extern int rl_ding (void); extern int rl_alphabetic (int); extern int rl_set_signals (void); extern int rl_clear_signals (void); extern void rl_cleanup_after_signal (void); extern void rl_reset_after_signal (void); extern void rl_free_line_state (void); extern int rl_set_paren_blink_timeout (int); extern int rl_maybe_save_line (void); extern int rl_maybe_unsave_line (void); extern int rl_maybe_replace_line (void); extern int rl_complete_internal (int); extern void rl_display_match_list (char **, int, int); extern char **rl_completion_matches (const char *, rl_compentry_func_t *); extern char *rl_username_completion_function (const char *, int); extern char *rl_filename_completion_function (const char *, int); extern int rl_completion_mode (rl_command_func_t *); # 455 "./lib/readline/readline.h" extern const char *rl_library_version; extern int rl_readline_version; extern int rl_gnu_readline_p; extern int rl_readline_state; extern int rl_editing_mode; extern int rl_insert_mode; extern const char *rl_readline_name; extern char *rl_prompt; extern char *rl_line_buffer; extern int rl_point; extern int rl_end; extern int rl_mark; extern int rl_done; extern int rl_pending_input; extern int rl_dispatching; extern int rl_explicit_arg; extern int rl_numeric_arg; extern rl_command_func_t *rl_last_func; extern const char *rl_terminal_name; extern FILE *rl_instream; extern FILE *rl_outstream; extern rl_hook_func_t *rl_startup_hook; extern rl_hook_func_t *rl_pre_input_hook; extern rl_hook_func_t *rl_event_hook; extern rl_getc_func_t *rl_getc_function; extern rl_voidfunc_t *rl_redisplay_function; extern rl_vintfunc_t *rl_prep_term_function; extern rl_voidfunc_t *rl_deprep_term_function; extern Keymap rl_executing_keymap; extern Keymap rl_binding_keymap; extern int rl_erase_empty_line; extern int rl_already_prompted; extern int rl_num_chars_to_read; extern char *rl_executing_macro; extern int rl_catch_signals; extern int rl_catch_sigwinch; extern rl_compentry_func_t *rl_completion_entry_function; extern rl_compignore_func_t *rl_ignore_some_completions_function; # 596 "./lib/readline/readline.h" extern rl_completion_func_t *rl_attempted_completion_function; extern const char *rl_basic_word_break_characters; extern const char *rl_completer_word_break_characters; extern const char *rl_completer_quote_characters; extern const char *rl_basic_quote_characters; extern const char *rl_filename_quote_characters; extern const char *rl_special_prefixes; extern rl_icppfunc_t *rl_directory_completion_hook; # 639 "./lib/readline/readline.h" extern rl_icppfunc_t *rl_directory_rewrite_hook; # 651 "./lib/readline/readline.h" extern rl_compdisp_func_t *rl_completion_display_matches_hook; extern int rl_filename_completion_desired; extern int rl_filename_quoting_desired; extern rl_quote_func_t *rl_filename_quoting_function; extern rl_dequote_func_t *rl_filename_dequoting_function; extern rl_linebuf_func_t *rl_char_is_quoted_p; extern int rl_attempted_completion_over; extern int rl_completion_type; extern int rl_completion_append_character; extern int rl_completion_suppress_append; extern int rl_completion_query_items; # 712 "./lib/readline/readline.h" extern int rl_completion_mark_symlink_dirs; extern int rl_ignore_completion_duplicates; extern int rl_inhibit_completion; # 759 "./lib/readline/readline.h" struct readline_state { int point; int end; int mark; char *buffer; int buflen; UNDO_LIST *ul; char *prompt; int rlstate; int done; Keymap kmap; rl_command_func_t *lastfunc; int insmode; int edmode; int kseqlen; FILE *inf; FILE *outf; int pendingin; char *macro; int catchsigs; int catchsigwinch; char reserved[64]; }; extern int rl_save_state (struct readline_state *); extern int rl_restore_state (struct readline_state *); # 59 "./parse.y" 2 # 1 "bashhist.h" 1 # 26 "bashhist.h" extern int remember_on_history; extern int history_lines_this_session; extern int history_lines_in_file; extern int history_expansion; extern int history_control; extern int command_oriented_history; extern int current_command_first_line_saved; extern int hist_last_line_added; extern int history_expansion_inhibited; extern void bash_initialize_history (void) ; extern void bash_history_reinit (int) ; extern void bash_history_disable (void) ; extern void bash_history_enable (void) ; extern void load_history (void) ; extern void save_history (void) ; extern int maybe_append_history (char *) ; extern int maybe_save_shell_history (void) ; extern char *pre_process_line (char *, int, int) ; extern void maybe_add_history (char *) ; extern void bash_add_history (char *) ; extern int check_add_history (char *, int) ; extern int history_number (void) ; extern void setup_history_ignore (char *) ; extern char *last_history_line (void) ; # 63 "./parse.y" 2 # 1 "./lib/readline/history.h" 1 # 38 "./lib/readline/history.h" typedef void *histdata_t; typedef struct _hist_entry { char *line; histdata_t data; } HIST_ENTRY; typedef struct _hist_state { HIST_ENTRY **entries; int offset; int length; int size; int flags; } HISTORY_STATE; # 65 "./lib/readline/history.h" extern void using_history (void); extern HISTORY_STATE *history_get_history_state (void); extern void history_set_history_state (HISTORY_STATE *); extern void add_history (const char *); extern HIST_ENTRY *remove_history (int); extern HIST_ENTRY *replace_history_entry (int, const char *, histdata_t); extern void clear_history (void); extern void stifle_history (int); extern int unstifle_history (void); extern int history_is_stifled (void); extern HIST_ENTRY **history_list (void); extern int where_history (void); extern HIST_ENTRY *current_history (void); extern HIST_ENTRY *history_get (int); extern int history_total_bytes (void); extern int history_set_pos (int); extern HIST_ENTRY *previous_history (void); extern HIST_ENTRY *next_history (void); # 149 "./lib/readline/history.h" extern int history_search (const char *, int); extern int history_search_prefix (const char *, int); extern int history_search_pos (const char *, int, int); extern int read_history (const char *); extern int read_history_range (const char *, int, int); extern int write_history (const char *); extern int append_history (int, const char *); extern int history_truncate_file (const char *, int); # 203 "./lib/readline/history.h" extern int history_expand (char *, char **); extern char *history_arg_extract (int, int, const char *); extern char *get_history_event (const char *, int *, int); extern char **history_tokenize (const char *); extern int history_base; extern int history_length; extern int history_max_entries; extern char history_expansion_char; extern char history_subst_char; extern char *history_word_delimiters; extern char history_comment_char; extern char *history_no_expand_chars; extern char *history_search_delimiter_chars; extern int history_quotes_inhibit_expansion; extern int max_input_history; extern rl_linebuf_func_t *history_inhibit_expansion_function; # 64 "./parse.y" 2 # 1 "jobs.h" 1 # 25 "jobs.h" # 1 "siglist.h" 1 # 26 "jobs.h" 2 # 1 "./include/posixwait.h" 1 # 28 "./include/posixwait.h" # 1 "/usr/include/sys/wait.h" 1 3 4 # 28 "/usr/include/sys/wait.h" 3 4 # 98 "/usr/include/sys/wait.h" 3 4 typedef enum { P_ALL, P_PID, P_PGID } idtype_t; # 112 "/usr/include/sys/wait.h" 3 4 extern __pid_t wait (__WAIT_STATUS __stat_loc); # 135 "/usr/include/sys/wait.h" 3 4 extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options); # 1 "/usr/include/bits/siginfo.h" 1 3 4 # 25 "/usr/include/bits/siginfo.h" 3 4 # 1 "/usr/include/bits/wordsize.h" 1 3 4 # 26 "/usr/include/bits/siginfo.h" 2 3 4 # 140 "/usr/include/sys/wait.h" 2 3 4 # 151 "/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) ; struct rusage; extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, struct rusage *__usage) ; # 29 "./include/posixwait.h" 2 # 41 "./include/posixwait.h" typedef int WAIT; # 30 "jobs.h" 2 # 52 "jobs.h" typedef struct process { struct process *next; pid_t pid; WAIT status; int running; char *command; } PROCESS; typedef enum { JRUNNING, JSTOPPED, JDEAD, JMIXED } JOB_STATE; # 83 "jobs.h" typedef struct job { char *wd; PROCESS *pipe; pid_t pgrp; JOB_STATE state; int flags; COMMAND *deferred; sh_vptrfunc_t *j_cleanup; void * cleanarg; } JOB; # 108 "jobs.h" extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp; extern pid_t last_made_pid, last_asynchronous_pid; extern int current_job, previous_job; extern int asynchronous_notification; extern JOB **jobs; extern int job_slots; extern void making_children (void) ; extern void stop_making_children (void) ; extern void cleanup_the_pipeline (void) ; extern void save_pipeline (int) ; extern void restore_pipeline (int) ; extern void start_pipeline (void) ; extern int stop_pipeline (int, COMMAND *) ; extern void delete_job (int, int) ; extern void nohup_job (int) ; extern void delete_all_jobs (int) ; extern void nohup_all_jobs (int) ; extern int count_all_jobs (void) ; extern void terminate_current_pipeline (void) ; extern void terminate_stopped_jobs (void) ; extern void hangup_all_jobs (void) ; extern void kill_current_pipeline (void) ; extern int get_job_by_pid (pid_t, int) ; extern void describe_pid (pid_t) ; extern void list_one_job (JOB *, int, int, int) ; extern void list_all_jobs (int) ; extern void list_stopped_jobs (int) ; extern void list_running_jobs (int) ; extern pid_t make_child (char *, int) ; extern int get_tty_state (void) ; extern int set_tty_state (void) ; extern int wait_for_single_pid (pid_t) ; extern void wait_for_background_pids (void) ; extern int wait_for (pid_t) ; extern int wait_for_job (int) ; extern void notify_and_cleanup (void) ; extern void reap_dead_jobs (void) ; extern int start_job (int, int) ; extern int kill_pid (pid_t, int, int) ; extern int initialize_job_control (int) ; extern void initialize_job_signals (void) ; extern int give_terminal_to (pid_t, int) ; extern void set_sigwinch_handler (void) ; extern void unset_sigwinch_handler (void) ; extern void unfreeze_jobs_list (void) ; extern int set_job_control (int) ; extern void without_job_control (void) ; extern void end_job_control (void) ; extern void restart_job_control (void) ; extern void set_sigchld_handler (void) ; extern void ignore_tty_job_signals (void) ; extern void default_tty_job_signals (void) ; extern int job_control; # 68 "./parse.y" 2 # 1 "alias.h" 1 # 28 "alias.h" typedef struct alias { char *name; char *value; char flags; } alias_t; extern HASH_TABLE *aliases; extern void initialize_aliases (void) ; extern alias_t *find_alias (char *) ; extern char *get_alias_value (char *) ; extern void add_alias (char *, char *) ; extern int remove_alias (char *) ; extern void delete_all_aliases (void) ; extern alias_t **all_aliases (void) ; extern char *alias_expand_word (char *) ; extern char *alias_expand (char *) ; # 72 "./parse.y" 2 # 1 "/usr/include/sys/param.h" 1 3 4 # 22 "/usr/include/sys/param.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/limits.h" 1 3 4 # 23 "/usr/include/sys/param.h" 2 3 4 # 1 "/usr/include/linux/param.h" 1 3 4 # 1 "/usr/include/asm/param.h" 1 3 4 # 5 "/usr/include/linux/param.h" 2 3 4 # 25 "/usr/include/sys/param.h" 2 3 4 # 77 "./parse.y" 2 # 1 "/usr/include/time.h" 1 3 4 # 30 "/usr/include/time.h" 3 4 # 1 "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/stddef.h" 1 3 4 # 39 "/usr/include/time.h" 2 3 4 # 1 "/usr/include/bits/time.h" 1 3 4 # 43 "/usr/include/time.h" 2 3 4 # 129 "/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; # 178 "/usr/include/time.h" 3 4 extern clock_t clock (void) ; extern time_t time (time_t *__timer) ; extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) ; extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ; extern char *strptime (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp) ; extern size_t strftime_l (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) ; extern char *strptime_l (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp, __locale_t __loc) ; extern struct tm *gmtime (__const time_t *__timer) ; extern struct tm *localtime (__const time_t *__timer) ; extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ; extern char *asctime (__const struct tm *__tp) ; extern char *ctime (__const time_t *__timer) ; extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ; extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ; extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern char *tzname[2]; extern void tzset (void) ; extern int daylight; extern long int timezone; extern int stime (__const time_t *__when) ; # 309 "/usr/include/time.h" 3 4 extern time_t timegm (struct tm *__tp) ; extern time_t timelocal (struct tm *__tp) ; extern int dysize (int __year) __attribute__ ((__const__)); # 324 "/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) ; extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ; extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) ; 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) ; extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) ; extern int timer_delete (timer_t __timerid) ; extern int timer_settime (timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) ; extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) ; extern int timer_getoverrun (timer_t __timerid) ; # 386 "/usr/include/time.h" 3 4 extern int getdate_err; # 395 "/usr/include/time.h" 3 4 extern struct tm *getdate (__const char *__string); # 409 "/usr/include/time.h" 3 4 extern int getdate_r (__const char *__restrict __string, struct tm *__restrict __resbufp); # 79 "./parse.y" 2 # 107 "./parse.y" extern int extended_glob; extern int eof_encountered; extern int no_line_editing, running_under_emacs; extern int current_command_number; extern int sourcelevel; extern int posixly_correct; extern int last_command_exit_value; extern int interrupt_immediately; extern char *shell_name, *current_host_name; extern char *dist_version; extern int patch_level; extern int dump_translatable_strings, dump_po_strings; extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; extern int bash_input_fd_changed; extern int errno; # 137 "./parse.y" static int yy_getc (void) ; static int yy_ungetc (int) ; static int yy_readline_get (void) ; static int yy_readline_unget (int) ; static int yy_string_get (void) ; static int yy_string_unget (int) ; static int yy_stream_get (void) ; static int yy_stream_unget (int) ; static int shell_getc (int) ; static void shell_ungetc (int) ; static void discard_until (int) ; static void push_string (char *, int, alias_t *) ; static void pop_string (void) ; static void free_string_list (void) ; static char *read_a_line (int) ; static int reserved_word_acceptable (int) ; static int yylex (void) ; static int alias_expand_token (char *) ; static int time_command_acceptable (void) ; static int special_case_tokens (char *) ; static int read_token (int) ; static char *parse_matched_pair (int, int, int, int *, int) ; static char *parse_compound_assignment (int *) ; static int parse_dparen (int) ; static int parse_arith_cmd (char **) ; static void cond_error (void) ; static COND_COM *cond_expr (void) ; static COND_COM *cond_or (void) ; static COND_COM *cond_and (void) ; static COND_COM *cond_term (void) ; static int cond_skip_newlines (void) ; static COMMAND *parse_cond_command (void) ; static int token_is_assignment (char *, int) ; static int token_is_ident (char *, int) ; static int read_token_word (int) ; static void discard_parser_constructs (int) ; static char *error_token_from_token (int) ; static char *error_token_from_text (void) ; static void print_offending_line (void) ; static void report_syntax_error (char *) ; static void handle_eof_input_unit (void) ; static void prompt_again (void) ; static void print_prompt (void) ; char *history_delimiting_chars (void) ; static void set_line_mbstate (void) ; static char *shell_input_line_property = ((void *)0); extern int yyerror (const char *) ; char *primary_prompt = "\\s-\\v\\$ "; char *secondary_prompt = "> "; char *ps1_prompt, *ps2_prompt; char **prompt_string_pointer = (char **)((void *)0); char *current_prompt_string; int expand_aliases = 0; int promptvars = 1; static char *current_decoded_prompt; int current_command_line_count; static REDIRECT *redir_stack[10]; int need_here_doc; static char *shell_input_line = (char *)((void *)0); static int shell_input_line_index; static int shell_input_line_size; static int shell_input_line_len; static int shell_input_line_terminator; static int function_dstart; static int function_bstart; static int arith_for_lineno; static REDIRECTEE redir; # 276 "./parse.y" typedef union YYSTYPE { WORD_DESC *word; int number; WORD_LIST *word_list; COMMAND *command; REDIRECT *redirect; ELEMENT element; PATTERN_LIST *pattern; } YYSTYPE; # 424 "y.tab.c" # 436 "y.tab.c" # 474 "y.tab.c" union yyalloc { short yyss; YYSTYPE yyvs; }; # 526 "y.tab.c" typedef signed char yysigned_char; # 553 "y.tab.c" static const unsigned char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 44, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 2, 52, 53, 2, 2, 2, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 43, 48, 2, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 46, 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45 }; # 735 "y.tab.c" static const unsigned char yyr1[] = { 0, 54, 55, 55, 55, 55, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 59, 59, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 66, 66, 66, 67, 67, 67, 68, 68, 69, 70, 70, 70, 71, 72, 73, 74, 74, 74, 75, 75, 76, 76, 76, 76, 77, 77, 78, 78, 79, 80, 80, 81, 81, 81, 82, 82, 82, 82, 82, 82, 83, 83, 84, 84, 84, 85, 85, 86, 86, 86, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 89, 89, 90, 90 }; static const unsigned char yyr2[] = { 0, 2, 2, 1, 2, 1, 0, 1, 2, 2, 2, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 6, 6, 7, 7, 10, 10, 9, 9, 7, 7, 5, 5, 6, 6, 7, 7, 10, 10, 6, 7, 6, 5, 6, 4, 1, 2, 3, 5, 7, 6, 3, 1, 3, 4, 6, 5, 1, 2, 4, 4, 5, 5, 2, 3, 1, 3, 2, 1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 0, 2, 1, 2, 2, 4, 4, 3, 3, 1, 1, 2, 2, 3, 3, 4, 1, 1, 2 }; static const unsigned char yydefact[] = { 0, 0, 123, 0, 0, 0, 123, 123, 0, 0, 0, 140, 38, 39, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 123, 123, 0, 40, 43, 45, 139, 46, 49, 59, 53, 50, 48, 55, 54, 56, 57, 58, 0, 125, 132, 133, 0, 4, 107, 0, 0, 123, 123, 0, 123, 0, 0, 123, 0, 134, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 15, 23, 19, 31, 17, 25, 21, 29, 27, 33, 35, 36, 9, 10, 0, 0, 1, 38, 44, 41, 47, 118, 119, 2, 123, 123, 126, 127, 123, 0, 135, 123, 124, 106, 108, 117, 0, 123, 0, 123, 121, 120, 122, 123, 123, 123, 0, 123, 123, 0, 0, 92, 137, 123, 14, 16, 24, 20, 32, 18, 26, 22, 30, 28, 34, 37, 11, 12, 90, 86, 42, 0, 0, 130, 131, 0, 136, 0, 123, 123, 123, 123, 123, 123, 0, 123, 0, 123, 0, 0, 0, 0, 123, 6, 123, 0, 0, 123, 84, 83, 0, 128, 129, 0, 0, 138, 123, 123, 87, 0, 0, 0, 110, 111, 109, 0, 96, 123, 0, 123, 123, 0, 7, 0, 123, 0, 70, 71, 123, 123, 123, 123, 0, 0, 0, 0, 51, 52, 0, 85, 81, 0, 0, 89, 112, 113, 114, 115, 116, 80, 102, 97, 0, 78, 104, 0, 0, 0, 0, 60, 8, 123, 0, 61, 0, 0, 0, 0, 72, 0, 123, 73, 82, 88, 123, 123, 123, 123, 103, 79, 0, 0, 123, 62, 63, 0, 123, 123, 68, 69, 74, 75, 0, 93, 0, 0, 0, 123, 105, 98, 99, 123, 123, 0, 0, 123, 123, 123, 95, 100, 101, 0, 0, 66, 67, 0, 0, 94, 64, 65, 76, 77 }; static const short yydefgoto[] = { -1, 31, 202, 32, 33, 99, 34, 35, 36, 37, 38, 39, 40, 41, 178, 42, 43, 44, 45, 46, 188, 194, 195, 196, 235, 53, 54, 112, 113, 102, 123, 55, 47, 152, 114, 50, 51 }; static const short yypact[] = { 275, -24, -182, -7, 10, -2, -182, -182, 16, -1, 404, 43, 20, -182, 554, -182, 50, 71, -10, 74, 34, 76, 82, 89, 98, -182, -182, 101, 124, -182, -182, 161, -182, -182, 171, -182, 204, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, 41, 72, -182, 117, 447, -182, -182, 160, 318, -182, 125, 95, 131, 164, 167, 134, 157, 117, 533, -182, 141, 184, 190, 35, 191, 75, 192, 196, 197, 199, 200, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, 166, 172, -182, -182, -182, -182, 204, -182, -182, -182, -182, -182, 361, 361, -182, 533, 117, -182, -182, -182, 251, -182, 27, -182, 122, -182, -182, -182, -182, -182, -182, -182, 123, -182, -182, 173, 38, -182, 117, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, 318, 318, 48, 48, 490, 117, 193, -182, -182, -182, -182, -182, -182, 23, -182, 146, -182, 216, 181, 31, 73, -182, 209, -182, 220, 226, -182, 204, -182, 38, -182, -182, 361, 361, 117, -182, -182, -182, 241, 318, 318, 318, 318, 318, 244, 213, -182, 12, -182, -182, 239, -182, 222, -182, 205, -182, -182, -182, -182, -182, -182, 246, 318, 222, 211, -182, -182, 38, 204, -182, 256, 260, -182, -182, -182, 97, 97, 97, -182, -182, 231, 18, -182, -182, 245, -28, 257, 228, -182, -182, -182, 112, -182, 258, 233, 262, 238, -182, 251, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -20, 247, -182, -182, -182, 115, -182, -182, -182, -182, -182, -182, 127, 145, 318, 318, 318, -182, -182, -182, 318, -182, -182, 283, 252, -182, -182, -182, -182, -182, 318, 289, 254, -182, -182, 291, 261, -182, -182, -182, -182, -182 }; static const short yypgoto[] = { -182, -182, 118, -30, 284, 140, -182, -182, -126, -182, -182, -182, -182, -182, -160, -182, -182, -182, -182, -182, 52, -182, 136, -182, 99, -166, -6, -182, -181, -182, -150, -27, -182, 4, 2, 3, 326 }; static const unsigned short yytable[] = { 60, 61, 49, 177, 48, 211, 98, 214, 223, 224, 225, 226, 227, 64, 80, 203, 81, 56, 260, 219, 52, 232, 59, 93, 94, 261, 260, 258, 63, 115, 117, 248, 125, 276, 57, 129, 233, 198, 58, 82, 62, 2, 233, 245, 246, 207, 3, 162, 4, 5, 6, 7, 240, 177, 109, 9, 111, 251, 84, 135, 85, 136, 111, 249, 234, 15, 66, 111, 131, 149, 234, 111, 67, 199, 78, 111, 150, 151, 103, 104, 154, 208, 111, 86, 137, 100, 101, 209, 29, 163, 30, 177, 225, 226, 227, 79, 169, 170, 83, 139, 87, 140, 103, 104, 156, 179, 88, 49, 49, 118, 153, 155, 167, 89, 105, 106, 168, 111, 294, 295, 174, 175, 90, 210, 141, 91, 265, 157, 158, 280, 189, 190, 191, 192, 193, 197, 164, 171, 119, 120, 121, 284, 165, 172, 212, 122, 212, 98, 92, 217, 286, 186, 49, 49, 180, 181, 111, 184, 200, 111, 204, 95, 266, 107, 110, 281, 111, 111, 116, 231, 201, 111, 166, 173, 124, 130, 241, 285, 126, 220, 221, 127, 212, 212, 49, 49, 128, 153, 149, 119, 120, 121, 236, 237, 132, 96, 13, 14, 185, 186, 187, 243, 244, 16, 17, 18, 19, 20, 133, 21, 22, 23, 24, 264, 134, 138, 142, 147, 27, 28, 143, 144, 271, 145, 146, 148, 176, 273, 274, 275, 14, 205, 206, 201, 279, 215, 16, 17, 18, 19, 20, 216, 21, 22, 23, 24, 239, 272, 222, 289, 229, 27, 28, 228, 238, 278, 242, 212, 212, 282, 283, 247, 250, 252, 253, 119, 120, 121, 257, 233, 288, 277, 262, 267, 290, 291, 1, 269, 2, 263, 296, 157, 158, 3, 268, 4, 5, 6, 7, 270, 213, 8, 9, 159, 160, 161, 10, 11, 292, 12, 13, 14, 15, 293, 297, 298, 299, 16, 17, 18, 19, 20, 300, 21, 22, 23, 24, 218, 97, 25, 26, 2, 27, 28, 287, 29, 3, 30, 4, 5, 6, 7, 230, 259, 8, 9, 65, 0, 0, 10, 11, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 111, 0, 2, 27, 28, 0, 29, 3, 30, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0, 10, 11, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0, 2, 27, 28, 0, 29, 3, 30, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0, 0, 11, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0, 2, 27, 28, 0, 29, 3, 30, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0, 108, 0, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0, 2, 27, 28, 0, 29, 3, 30, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 111, 0, 2, 27, 28, 0, 29, 3, 30, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 0, 0, 0, 0, 16, 17, 18, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0, 0, 27, 28, 0, 29, 0, 30, 68, 69, 70, 71, 72, 0, 73, 0, 74, 75, 0, 0, 0, 0, 0, 76, 77 }; static const short yycheck[] = { 6, 7, 0, 129, 0, 171, 36, 173, 189, 190, 191, 192, 193, 10, 24, 165, 26, 24, 46, 179, 44, 9, 24, 29, 30, 53, 46, 9, 29, 56, 57, 212, 59, 53, 24, 62, 24, 14, 28, 49, 24, 3, 24, 209, 210, 14, 8, 20, 10, 11, 12, 13, 202, 179, 51, 17, 44, 217, 24, 24, 26, 26, 44, 213, 52, 27, 23, 44, 65, 99, 52, 44, 52, 50, 24, 44, 103, 104, 30, 31, 107, 50, 44, 49, 49, 44, 45, 14, 50, 116, 52, 217, 273, 274, 275, 24, 123, 124, 24, 24, 24, 26, 30, 31, 110, 132, 24, 105, 106, 14, 106, 108, 118, 24, 42, 43, 122, 44, 284, 285, 126, 127, 24, 50, 49, 24, 14, 30, 31, 14, 157, 158, 159, 160, 161, 162, 14, 14, 43, 44, 45, 14, 20, 20, 171, 50, 173, 177, 24, 176, 5, 6, 150, 151, 150, 151, 44, 154, 164, 44, 166, 0, 50, 46, 4, 50, 44, 44, 43, 196, 24, 44, 50, 50, 43, 18, 203, 50, 14, 185, 186, 14, 209, 210, 182, 183, 52, 183, 218, 43, 44, 45, 198, 199, 53, 24, 25, 26, 5, 6, 7, 207, 208, 32, 33, 34, 35, 36, 24, 38, 39, 40, 41, 240, 24, 24, 24, 51, 47, 48, 24, 24, 249, 24, 24, 53, 53, 254, 255, 256, 26, 15, 51, 24, 261, 15, 32, 33, 34, 35, 36, 15, 38, 39, 40, 41, 24, 253, 7, 276, 37, 47, 48, 9, 15, 261, 51, 284, 285, 265, 266, 15, 51, 7, 4, 43, 44, 45, 37, 24, 276, 24, 15, 15, 280, 281, 1, 15, 3, 51, 286, 30, 31, 8, 51, 10, 11, 12, 13, 51, 172, 16, 17, 42, 43, 44, 21, 22, 15, 24, 25, 26, 27, 51, 15, 51, 15, 32, 33, 34, 35, 36, 51, 38, 39, 40, 41, 177, 34, 44, 45, 3, 47, 48, 272, 50, 8, 52, 10, 11, 12, 13, 196, 234, 16, 17, 10, -1, -1, 21, 22, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, 44, -1, 3, 47, 48, -1, 50, 8, 52, 10, 11, 12, 13, -1, -1, 16, 17, -1, -1, -1, 21, 22, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, -1, 3, 47, 48, -1, 50, 8, 52, 10, 11, 12, 13, -1, -1, 16, 17, -1, -1, -1, -1, 22, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, -1, 3, 47, 48, -1, 50, 8, 52, 10, 11, 12, 13, -1, -1, 16, 17, -1, -1, -1, 21, -1, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, -1, 3, 47, 48, -1, 50, 8, 52, 10, 11, 12, 13, -1, -1, 16, 17, -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, 44, -1, 3, 47, 48, -1, 50, 8, 52, 10, 11, 12, 13, -1, -1, 16, 17, -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, -1, -1, -1, -1, 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, -1, -1, 47, 48, -1, 50, -1, 52, 32, 33, 34, 35, 36, -1, 38, -1, 40, 41, -1, -1, -1, -1, -1, 47, 48 }; static const unsigned char yystos[] = { 0, 1, 3, 8, 10, 11, 12, 13, 16, 17, 21, 22, 24, 25, 26, 27, 32, 33, 34, 35, 36, 38, 39, 40, 41, 44, 45, 47, 48, 50, 52, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 86, 87, 88, 89, 90, 44, 79, 80, 85, 24, 24, 28, 24, 80, 80, 24, 29, 89, 90, 23, 52, 32, 33, 34, 35, 36, 38, 40, 41, 47, 48, 24, 24, 24, 26, 49, 24, 24, 26, 49, 24, 24, 24, 24, 24, 24, 80, 80, 0, 24, 58, 57, 59, 44, 45, 83, 30, 31, 42, 43, 46, 21, 89, 4, 44, 81, 82, 88, 85, 43, 85, 14, 43, 44, 45, 50, 84, 43, 85, 14, 14, 52, 85, 18, 89, 53, 24, 24, 24, 26, 49, 24, 24, 26, 49, 24, 24, 24, 24, 24, 51, 53, 57, 85, 85, 87, 87, 85, 89, 80, 30, 31, 42, 43, 44, 20, 85, 14, 20, 50, 80, 80, 85, 85, 14, 20, 50, 80, 80, 53, 62, 68, 85, 87, 87, 42, 43, 89, 5, 6, 7, 74, 85, 85, 85, 85, 85, 75, 76, 77, 85, 14, 50, 80, 24, 56, 84, 80, 15, 51, 14, 50, 14, 50, 79, 85, 56, 79, 15, 15, 85, 59, 68, 80, 80, 7, 82, 82, 82, 82, 82, 9, 37, 76, 85, 9, 24, 52, 78, 80, 80, 15, 24, 84, 85, 51, 80, 80, 79, 79, 15, 82, 84, 51, 68, 7, 4, 42, 43, 44, 37, 9, 78, 46, 53, 15, 51, 85, 14, 50, 15, 51, 15, 51, 85, 80, 85, 85, 85, 53, 24, 80, 85, 14, 50, 80, 80, 14, 50, 5, 74, 80, 85, 80, 80, 15, 51, 79, 79, 80, 15, 51, 15, 51 }; # 1333 "y.tab.c" static void yydestruct (int yytype, YYSTYPE *yyvaluep) { (void) yyvaluep; switch (yytype) { default: break; } } # 1364 "y.tab.c" int yyparse (void); # 1373 "y.tab.c" int yychar; YYSTYPE yylval; int yynerrs; # 1396 "y.tab.c" int yyparse (void) { register int yystate; register int yyn; int yyresult; int yyerrstatus; int yytoken = 0; # 1423 "y.tab.c" short yyssa[200]; short *yyss = yyssa; register short *yyssp; YYSTYPE yyvsa[200]; YYSTYPE *yyvs = yyvsa; register YYSTYPE *yyvsp; unsigned int yystacksize = 200; YYSTYPE yyval; int yylen; ; yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = (-2); yyssp = yyss; yyvsp = yyvs; goto yysetstate; yynewstate: yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { unsigned int yysize = yyssp - yyss + 1; # 1508 "y.tab.c" if (10000 <= yystacksize) goto yyoverflowlab; yystacksize *= 2; if (10000 < yystacksize) yystacksize = 10000; { short *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) __builtin_alloca (((yystacksize) * (sizeof (short) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1))); if (! yyptr) goto yyoverflowlab; do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyss, yyss, (yysize) * sizeof (*(yyss))); yyss = &yyptr->yyss; yynewbytes = yystacksize * sizeof (*yyss) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while (0); do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyvs, yyvs, (yysize) * sizeof (*(yyvs))); yyvs = &yyptr->yyvs; yynewbytes = yystacksize * sizeof (*yyvs) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while (0); if (yyss1 != yyssa) do { ; } while (0); } yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; ; if (yyss + yystacksize - 1 <= yyssp) goto yyabortlab; } ; goto yybackup; yybackup: yyn = yypact[yystate]; if (yyn == -182) goto yydefault; if (yychar == (-2)) { ; yychar = yylex (); } if (yychar <= 0) { yychar = yytoken = 0; ; } else { yytoken = ((unsigned int) (yychar) <= 297 ? yytranslate[yychar] : 2); ; } yyn += yytoken; if (yyn < 0 || 602 < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == -1) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == 95) goto yyacceptlab; ; if (yychar != 0) yychar = (-2); *++yyvsp = yylval; if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; yyreduce: yylen = yyr2[yyn]; # 1641 "y.tab.c" yyval = yyvsp[1-yylen]; ; switch (yyn) { case 2: # 327 "./parse.y" { global_command = yyvsp[-1].command; eof_encountered = 0; goto yyacceptlab; } break; case 3: # 336 "./parse.y" { global_command = (COMMAND *)((void *)0); goto yyacceptlab; } break; case 4: # 343 "./parse.y" { global_command = (COMMAND *)((void *)0); eof_encountered = 0; if (interactive) { goto yyacceptlab; } else { goto yyabortlab; } } break; case 5: # 358 "./parse.y" { global_command = (COMMAND *)((void *)0); handle_eof_input_unit (); goto yyacceptlab; } break; case 6: # 368 "./parse.y" { yyval.word_list = (WORD_LIST *)((void *)0); } break; case 7: # 370 "./parse.y" { yyval.word_list = make_word_list (yyvsp[0].word, (WORD_LIST *)((void *)0)); } break; case 8: # 372 "./parse.y" { yyval.word_list = make_word_list (yyvsp[0].word, yyvsp[-1].word_list); } break; case 9: # 376 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (1, r_output_direction, redir); } break; case 10: # 381 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_input_direction, redir); } break; case 11: # 386 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_output_direction, redir); } break; case 12: # 391 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_input_direction, redir); } break; case 13: # 396 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (1, r_appending_to, redir); } break; case 14: # 401 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_appending_to, redir); } break; case 15: # 406 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_reading_until, redir); redir_stack[need_here_doc++] = yyval.redirect; } break; case 16: # 412 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_reading_until, redir); redir_stack[need_here_doc++] = yyval.redirect; } break; case 17: # 418 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_reading_string, redir); } break; case 18: # 423 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_reading_string, redir); } break; case 19: # 428 "./parse.y" { redir.dest = yyvsp[0].number; yyval.redirect = make_redirection (0, r_duplicating_input, redir); } break; case 20: # 433 "./parse.y" { redir.dest = yyvsp[0].number; yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_input, redir); } break; case 21: # 438 "./parse.y" { redir.dest = yyvsp[0].number; yyval.redirect = make_redirection (1, r_duplicating_output, redir); } break; case 22: # 443 "./parse.y" { redir.dest = yyvsp[0].number; yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_output, redir); } break; case 23: # 448 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_duplicating_input_word, redir); } break; case 24: # 453 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_input_word, redir); } break; case 25: # 458 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (1, r_duplicating_output_word, redir); } break; case 26: # 463 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_duplicating_output_word, redir); } break; case 27: # 468 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_deblank_reading_until, redir); redir_stack[need_here_doc++] = yyval.redirect; } break; case 28: # 475 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_deblank_reading_until, redir); redir_stack[need_here_doc++] = yyval.redirect; } break; case 29: # 482 "./parse.y" { redir.dest = 0; yyval.redirect = make_redirection (1, r_close_this, redir); } break; case 30: # 487 "./parse.y" { redir.dest = 0; yyval.redirect = make_redirection (yyvsp[-2].number, r_close_this, redir); } break; case 31: # 492 "./parse.y" { redir.dest = 0; yyval.redirect = make_redirection (0, r_close_this, redir); } break; case 32: # 497 "./parse.y" { redir.dest = 0; yyval.redirect = make_redirection (yyvsp[-2].number, r_close_this, redir); } break; case 33: # 502 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (1, r_err_and_out, redir); } break; case 34: # 507 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_input_output, redir); } break; case 35: # 512 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (0, r_input_output, redir); } break; case 36: # 517 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (1, r_output_force, redir); } break; case 37: # 522 "./parse.y" { redir.filename = yyvsp[0].word; yyval.redirect = make_redirection (yyvsp[-2].number, r_output_force, redir); } break; case 38: # 529 "./parse.y" { yyval.element.word = yyvsp[0].word; yyval.element.redirect = 0; } break; case 39: # 531 "./parse.y" { yyval.element.word = yyvsp[0].word; yyval.element.redirect = 0; } break; case 40: # 533 "./parse.y" { yyval.element.redirect = yyvsp[0].redirect; yyval.element.word = 0; } break; case 41: # 537 "./parse.y" { yyval.redirect = yyvsp[0].redirect; } break; case 42: # 541 "./parse.y" { register REDIRECT *t; for (t = yyvsp[-1].redirect; t->next; t = t->next) ; t->next = yyvsp[0].redirect; yyval.redirect = yyvsp[-1].redirect; } break; case 43: # 552 "./parse.y" { yyval.command = make_simple_command (yyvsp[0].element, (COMMAND *)((void *)0)); } break; case 44: # 554 "./parse.y" { yyval.command = make_simple_command (yyvsp[0].element, yyvsp[-1].command); } break; case 45: # 558 "./parse.y" { yyval.command = clean_simple_command (yyvsp[0].command); } break; case 46: # 560 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 47: # 562 "./parse.y" { COMMAND *tc; tc = yyvsp[-1].command; if (tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = yyvsp[0].redirect; } else tc->redirects = yyvsp[0].redirect; yyval.command = yyvsp[-1].command; } break; case 48: # 578 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 49: # 582 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 50: # 584 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 51: # 586 "./parse.y" { yyval.command = make_while_command (yyvsp[-3].command, yyvsp[-1].command); } break; case 52: # 588 "./parse.y" { yyval.command = make_until_command (yyvsp[-3].command, yyvsp[-1].command); } break; case 53: # 590 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 54: # 592 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 55: # 594 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 56: # 596 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 57: # 598 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 58: # 600 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 59: # 602 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 60: # 606 "./parse.y" { yyval.command = make_for_command (yyvsp[-4].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 61: # 608 "./parse.y" { yyval.command = make_for_command (yyvsp[-4].word, make_word_list (make_word("$@"), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 62: # 610 "./parse.y" { yyval.command = make_for_command (yyvsp[-5].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 63: # 612 "./parse.y" { yyval.command = make_for_command (yyvsp[-5].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 64: # 614 "./parse.y" { yyval.command = make_for_command (yyvsp[-8].word, ((yyvsp[-5].word_list && yyvsp[-5].word_list->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)yyvsp[-5].word_list) : (WORD_LIST *)(yyvsp[-5].word_list)), yyvsp[-1].command); } break; case 65: # 616 "./parse.y" { yyval.command = make_for_command (yyvsp[-8].word, ((yyvsp[-5].word_list && yyvsp[-5].word_list->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)yyvsp[-5].word_list) : (WORD_LIST *)(yyvsp[-5].word_list)), yyvsp[-1].command); } break; case 66: # 618 "./parse.y" { yyval.command = make_for_command (yyvsp[-7].word, (WORD_LIST *)((void *)0), yyvsp[-1].command); } break; case 67: # 620 "./parse.y" { yyval.command = make_for_command (yyvsp[-7].word, (WORD_LIST *)((void *)0), yyvsp[-1].command); } break; case 68: # 624 "./parse.y" { yyval.command = make_arith_for_command (yyvsp[-5].word_list, yyvsp[-1].command, arith_for_lineno); } break; case 69: # 626 "./parse.y" { yyval.command = make_arith_for_command (yyvsp[-5].word_list, yyvsp[-1].command, arith_for_lineno); } break; case 70: # 628 "./parse.y" { yyval.command = make_arith_for_command (yyvsp[-3].word_list, yyvsp[-1].command, arith_for_lineno); } break; case 71: # 630 "./parse.y" { yyval.command = make_arith_for_command (yyvsp[-3].word_list, yyvsp[-1].command, arith_for_lineno); } break; case 72: # 634 "./parse.y" { yyval.command = make_select_command (yyvsp[-4].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 73: # 638 "./parse.y" { yyval.command = make_select_command (yyvsp[-4].word, make_word_list (make_word("$@"), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 74: # 642 "./parse.y" { yyval.command = make_select_command (yyvsp[-5].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 75: # 646 "./parse.y" { yyval.command = make_select_command (yyvsp[-5].word, make_word_list (make_word("\"$@\""), ((WORD_LIST *)((void *)0))), yyvsp[-1].command); } break; case 76: # 650 "./parse.y" { yyval.command = make_select_command (yyvsp[-8].word, ((yyvsp[-5].word_list && yyvsp[-5].word_list->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)yyvsp[-5].word_list) : (WORD_LIST *)(yyvsp[-5].word_list)), yyvsp[-1].command); } break; case 77: # 654 "./parse.y" { yyval.command = make_select_command (yyvsp[-8].word, ((yyvsp[-5].word_list && yyvsp[-5].word_list->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)yyvsp[-5].word_list) : (WORD_LIST *)(yyvsp[-5].word_list)), yyvsp[-1].command); } break; case 78: # 660 "./parse.y" { yyval.command = make_case_command (yyvsp[-4].word, (PATTERN_LIST *)((void *)0)); } break; case 79: # 662 "./parse.y" { yyval.command = make_case_command (yyvsp[-5].word, yyvsp[-2].pattern); } break; case 80: # 664 "./parse.y" { yyval.command = make_case_command (yyvsp[-4].word, yyvsp[-1].pattern); } break; case 81: # 668 "./parse.y" { yyval.command = make_function_def (yyvsp[-4].word, yyvsp[0].command, function_dstart, function_bstart); } break; case 82: # 671 "./parse.y" { yyval.command = make_function_def (yyvsp[-4].word, yyvsp[0].command, function_dstart, function_bstart); } break; case 83: # 674 "./parse.y" { yyval.command = make_function_def (yyvsp[-2].word, yyvsp[0].command, function_dstart, function_bstart); } break; case 84: # 679 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 85: # 681 "./parse.y" { COMMAND *tc; tc = yyvsp[-1].command; # 698 "./parse.y" if (tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = yyvsp[0].redirect; } else tc->redirects = yyvsp[0].redirect; yyval.command = yyvsp[-1].command; } break; case 86: # 712 "./parse.y" { yyval.command = make_subshell_command (yyvsp[-1].command); yyval.command->flags |= 0x01; } break; case 87: # 719 "./parse.y" { yyval.command = make_if_command (yyvsp[-3].command, yyvsp[-1].command, (COMMAND *)((void *)0)); } break; case 88: # 721 "./parse.y" { yyval.command = make_if_command (yyvsp[-5].command, yyvsp[-3].command, yyvsp[-1].command); } break; case 89: # 723 "./parse.y" { yyval.command = make_if_command (yyvsp[-4].command, yyvsp[-2].command, yyvsp[-1].command); } break; case 90: # 728 "./parse.y" { yyval.command = make_group_command (yyvsp[-1].command); } break; case 91: # 732 "./parse.y" { yyval.command = make_arith_command (yyvsp[0].word_list); } break; case 92: # 736 "./parse.y" { yyval.command = yyvsp[-1].command; } break; case 93: # 740 "./parse.y" { yyval.command = make_if_command (yyvsp[-2].command, yyvsp[0].command, (COMMAND *)((void *)0)); } break; case 94: # 742 "./parse.y" { yyval.command = make_if_command (yyvsp[-4].command, yyvsp[-2].command, yyvsp[0].command); } break; case 95: # 744 "./parse.y" { yyval.command = make_if_command (yyvsp[-3].command, yyvsp[-1].command, yyvsp[0].command); } break; case 97: # 749 "./parse.y" { yyvsp[0].pattern->next = yyvsp[-1].pattern; yyval.pattern = yyvsp[0].pattern; } break; case 98: # 753 "./parse.y" { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, yyvsp[0].command); } break; case 99: # 755 "./parse.y" { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, (COMMAND *)((void *)0)); } break; case 100: # 757 "./parse.y" { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, yyvsp[0].command); } break; case 101: # 759 "./parse.y" { yyval.pattern = make_pattern_list (yyvsp[-2].word_list, (COMMAND *)((void *)0)); } break; case 103: # 764 "./parse.y" { yyvsp[-1].pattern->next = yyvsp[-2].pattern; yyval.pattern = yyvsp[-1].pattern; } break; case 104: # 768 "./parse.y" { yyval.word_list = make_word_list (yyvsp[0].word, (WORD_LIST *)((void *)0)); } break; case 105: # 770 "./parse.y" { yyval.word_list = make_word_list (yyvsp[0].word, yyvsp[-2].word_list); } break; case 106: # 779 "./parse.y" { yyval.command = yyvsp[0].command; if (need_here_doc) gather_here_documents (); } break; case 108: # 788 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 110: # 795 "./parse.y" { if (yyvsp[-2].command->type == cm_connection) yyval.command = connect_async_list (yyvsp[-2].command, (COMMAND *)((void *)0), '&'); else yyval.command = command_connect (yyvsp[-2].command, (COMMAND *)((void *)0), '&'); } break; case 112: # 806 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, 285); } break; case 113: # 808 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, 286); } break; case 114: # 810 "./parse.y" { if (yyvsp[-3].command->type == cm_connection) yyval.command = connect_async_list (yyvsp[-3].command, yyvsp[0].command, '&'); else yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, '&'); } break; case 115: # 817 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, ';'); } break; case 116: # 819 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, ';'); } break; case 117: # 821 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 125: # 844 "./parse.y" { yyval.command = yyvsp[0].command; if (need_here_doc) gather_here_documents (); } break; case 126: # 850 "./parse.y" { if (yyvsp[-1].command->type == cm_connection) yyval.command = connect_async_list (yyvsp[-1].command, (COMMAND *)((void *)0), '&'); else yyval.command = command_connect (yyvsp[-1].command, (COMMAND *)((void *)0), '&'); if (need_here_doc) gather_here_documents (); } break; case 127: # 859 "./parse.y" { yyval.command = yyvsp[-1].command; if (need_here_doc) gather_here_documents (); } break; case 128: # 867 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, 285); } break; case 129: # 869 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, 286); } break; case 130: # 871 "./parse.y" { if (yyvsp[-2].command->type == cm_connection) yyval.command = connect_async_list (yyvsp[-2].command, yyvsp[0].command, '&'); else yyval.command = command_connect (yyvsp[-2].command, yyvsp[0].command, '&'); } break; case 131: # 878 "./parse.y" { yyval.command = command_connect (yyvsp[-2].command, yyvsp[0].command, ';'); } break; case 132: # 881 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 133: # 885 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 134: # 887 "./parse.y" { yyvsp[0].command->flags |= 0x04; yyval.command = yyvsp[0].command; } break; case 135: # 892 "./parse.y" { yyvsp[0].command->flags |= yyvsp[-1].number; yyval.command = yyvsp[0].command; } break; case 136: # 897 "./parse.y" { yyvsp[0].command->flags |= yyvsp[-2].number|0x04; yyval.command = yyvsp[0].command; } break; case 137: # 902 "./parse.y" { yyvsp[0].command->flags |= yyvsp[-1].number|0x04; yyval.command = yyvsp[0].command; } break; case 138: # 910 "./parse.y" { yyval.command = command_connect (yyvsp[-3].command, yyvsp[0].command, '|'); } break; case 139: # 912 "./parse.y" { yyval.command = yyvsp[0].command; } break; case 140: # 916 "./parse.y" { yyval.number = 0x80; } break; case 141: # 918 "./parse.y" { yyval.number = 0x80|0x100; } break; } # 2529 "y.tab.c" yyvsp -= yylen; yyssp -= yylen; ; *++yyvsp = yyval; yyn = yyr1[yyn]; yystate = yypgoto[yyn - 54] + *yyssp; if (0 <= yystate && yystate <= 602 && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - 54]; goto yynewstate; yyerrlab: if (!yyerrstatus) { ++yynerrs; # 2609 "y.tab.c" yyerror ("syntax error"); } if (yyerrstatus == 3) { if (yychar == 0) { (yyvsp--, yyssp--); while (yyss < yyssp) { ; yydestruct (yystos[*yyssp], yyvsp); (yyvsp--, yyssp--); } goto yyabortlab; } ; yydestruct (yytoken, &yylval); yychar = (-2); } goto yyerrlab1; yyerrlab1: yyerrstatus = 3; for (;;) { yyn = yypact[yystate]; if (yyn != -182) { yyn += 1; if (0 <= yyn && yyn <= 602 && yycheck[yyn] == 1) { yyn = yytable[yyn]; if (0 < yyn) break; } } if (yyssp == yyss) goto yyabortlab; ; yydestruct (yystos[yystate], yyvsp); yyvsp--; yystate = *--yyssp; ; } if (yyn == 95) goto yyacceptlab; ; *++yyvsp = yylval; yystate = yyn; goto yynewstate; yyacceptlab: yyresult = 0; goto yyreturn; yyabortlab: yyresult = 1; goto yyreturn; yyoverflowlab: yyerror ("parser stack overflow"); yyresult = 2; yyreturn: if (yyss != yyssa) do { ; } while (0); return yyresult; } # 920 "./parse.y" # 941 "./parse.y" static int current_token; static int last_read_token; static int token_before_that; static int two_tokens_ago; static int token_to_read; static WORD_DESC *word_desc_to_read; static int parser_state; int EOF_Reached = 0; # 986 "./parse.y" int return_EOF () { return ((-1)); } BASH_INPUT bash_input; void initialize_bash_input () { bash_input.type = st_none; do { if (bash_input.name) free (bash_input.name); } while (0); bash_input.name = (char *)((void *)0); bash_input.location.file = (FILE *)((void *)0); bash_input.location.string = (char *)((void *)0); bash_input.getter = (sh_cget_func_t *)((void *)0); bash_input.ungetter = (sh_cunget_func_t *)((void *)0); } void init_yy_io (get, unget, type, name, location) sh_cget_func_t *get; sh_cunget_func_t *unget; enum stream_type type; const char *name; INPUT_STREAM location; { bash_input.type = type; do { if (bash_input.name) free (bash_input.name); } while (0); bash_input.name = name ? (char *)strcpy (xmalloc (1 + strlen (name)), (name)) : (char *)((void *)0); bash_input.location = location; bash_input.getter = get; bash_input.ungetter = unget; } char * yy_input_name () { return (bash_input.name ? bash_input.name : "stdin"); } static int yy_getc () { return (*(bash_input.getter)) (); } static int yy_ungetc (c) int c; { return (*(bash_input.ungetter)) (c); } # 1082 "./parse.y" char *current_readline_prompt = (char *)((void *)0); unsigned char *current_readline_line = (unsigned char *)((void *)0); int current_readline_line_index = 0; static int yy_readline_get () { SigHandler *old_sigint; int line_len; unsigned char c; if (!current_readline_line) { if (!bash_readline_initialized) initialize_readline (); if (job_control) give_terminal_to (shell_pgrp, 0); old_sigint = (SigHandler *)((void *)0); if (signal_is_ignored (2) == 0) { old_sigint = (SigHandler *)set_signal_handler (2, sigint_sighandler); interrupt_immediately++; } current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); if (signal_is_ignored (2) == 0 && old_sigint) { interrupt_immediately--; set_signal_handler (2, old_sigint); } if (current_readline_line == 0) return ((-1)); current_readline_line_index = 0; line_len = strlen (current_readline_line); current_readline_line = (char *)xrealloc (current_readline_line, 2 + line_len); current_readline_line[line_len++] = '\n'; current_readline_line[line_len] = '\0'; } if (current_readline_line[current_readline_line_index] == 0) { free (current_readline_line); current_readline_line = (char *)((void *)0); return (yy_readline_get ()); } else { c = current_readline_line[current_readline_line_index++]; return (c); } } static int yy_readline_unget (c) int c; { if (current_readline_line_index && current_readline_line) current_readline_line[--current_readline_line_index] = c; return (c); } void with_input_from_stdin () { INPUT_STREAM location; if (bash_input.type != st_stdin && stream_on_stack (st_stdin) == 0) { location.string = current_readline_line; init_yy_io (yy_readline_get, yy_readline_unget, st_stdin, "readline stdin", location); } } # 1185 "./parse.y" static int yy_string_get () { register char *string; register unsigned char c; string = bash_input.location.string; if (string && *string) { c = *string++; bash_input.location.string = string; return (c); } else return ((-1)); } static int yy_string_unget (c) int c; { *(--bash_input.location.string) = c; return (c); } void with_input_from_string (string, name) char *string; const char *name; { INPUT_STREAM location; location.string = string; init_yy_io (yy_string_get, yy_string_unget, st_string, name, location); } # 1235 "./parse.y" static int yy_stream_get () { int result; result = (-1); if (bash_input.location.file) result = getc_with_restart (bash_input.location.file); return (result); } static int yy_stream_unget (c) int c; { return (ungetc_with_restart (c, bash_input.location.file)); } void with_input_from_stream (stream, name) FILE *stream; const char *name; { INPUT_STREAM location; location.file = stream; init_yy_io (yy_stream_get, yy_stream_unget, st_stream, name, location); } typedef struct stream_saver { struct stream_saver *next; BASH_INPUT bash_input; int line; BUFFERED_STREAM *bstream; } STREAM_SAVER; int line_number = 0; static int cond_lineno; static int cond_token; STREAM_SAVER *stream_list = (STREAM_SAVER *)((void *)0); void push_stream (reset_lineno) int reset_lineno; { STREAM_SAVER *saver = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER)); xbcopy ((char *)&bash_input, (char *)&(saver->bash_input), sizeof (BASH_INPUT)); saver->bstream = (BUFFERED_STREAM *)((void *)0); if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) saver->bstream = set_buffered_stream (bash_input.location.buffered_fd, (BUFFERED_STREAM *)((void *)0)); saver->line = line_number; bash_input.name = (char *)((void *)0); saver->next = stream_list; stream_list = saver; EOF_Reached = 0; if (reset_lineno) line_number = 0; } void pop_stream () { if (!stream_list) EOF_Reached = 1; else { STREAM_SAVER *saver = stream_list; EOF_Reached = 0; stream_list = stream_list->next; init_yy_io (saver->bash_input.getter, saver->bash_input.ungetter, saver->bash_input.type, saver->bash_input.name, saver->bash_input.location); if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) { if (bash_input_fd_changed) { bash_input_fd_changed = 0; if (default_buffered_input >= 0) { bash_input.location.buffered_fd = default_buffered_input; saver->bstream->b_fd = default_buffered_input; (fcntl ((default_buffered_input), 2, 1)); } } set_buffered_stream (bash_input.location.buffered_fd, saver->bstream); } line_number = saver->line; do { if (saver->bash_input.name) free (saver->bash_input.name); } while (0); free (saver); } } int stream_on_stack (type) enum stream_type type; { register STREAM_SAVER *s; for (s = stream_list; s; s = s->next) if (s->bash_input.type == type) return 1; return 0; } int * save_token_state () { int *ret; ret = (int *)xmalloc (3 * sizeof (int)); ret[0] = last_read_token; ret[1] = token_before_that; ret[2] = two_tokens_ago; return ret; } void restore_token_state (ts) int *ts; { if (ts == 0) return; last_read_token = ts[0]; token_before_that = ts[1]; two_tokens_ago = ts[2]; } # 1419 "./parse.y" typedef struct string_saver { struct string_saver *next; int expand_alias; char *saved_line; alias_t *expander; int saved_line_size, saved_line_index, saved_line_terminator; } STRING_SAVER; STRING_SAVER *pushed_string_list = (STRING_SAVER *)((void *)0); # 1439 "./parse.y" static void push_string (s, expand, ap) char *s; int expand; alias_t *ap; { STRING_SAVER *temp = (STRING_SAVER *)xmalloc (sizeof (STRING_SAVER)); temp->expand_alias = expand; temp->saved_line = shell_input_line; temp->saved_line_size = shell_input_line_size; temp->saved_line_index = shell_input_line_index; temp->saved_line_terminator = shell_input_line_terminator; temp->expander = ap; temp->next = pushed_string_list; pushed_string_list = temp; if (ap) ap->flags |= 0x2; shell_input_line = s; shell_input_line_size = strlen (s); shell_input_line_index = 0; shell_input_line_terminator = '\0'; parser_state &= ~0x002; set_line_mbstate (); } static void pop_string () { STRING_SAVER *t; do { if (shell_input_line) free (shell_input_line); } while (0); shell_input_line = pushed_string_list->saved_line; shell_input_line_index = pushed_string_list->saved_line_index; shell_input_line_size = pushed_string_list->saved_line_size; shell_input_line_terminator = pushed_string_list->saved_line_terminator; if (pushed_string_list->expand_alias) parser_state |= 0x002; else parser_state &= ~0x002; t = pushed_string_list; pushed_string_list = pushed_string_list->next; if (t->expander) t->expander->flags &= ~0x2; free ((char *)t); set_line_mbstate (); } static void free_string_list () { register STRING_SAVER *t, *t1; for (t = pushed_string_list; t; ) { t1 = t->next; do { if (t->saved_line) free (t->saved_line); } while (0); if (t->expander) t->expander->flags &= ~0x2; free ((char *)t); t = t1; } pushed_string_list = (STRING_SAVER *)((void *)0); } static char * read_a_line (remove_quoted_newline) int remove_quoted_newline; { static char *line_buffer = (char *)((void *)0); static int buffer_size = 0; int indx = 0, c, peekc, pass_next; if (interactive && bash_input.type != st_string && no_line_editing) print_prompt (); pass_next = 0; while (1) { c = yy_getc (); if (interrupt_state) throw_to_top_level (); if (c == 0) { continue; } if (c == (-1)) { if (interactive && bash_input.type == st_stream) clearerr (stdin); if (indx == 0) return ((char *)((void *)0)); c = '\n'; } do { if ((indx) + (2) >= buffer_size) { while ((indx) + (2) >= buffer_size) buffer_size += (128); line_buffer = xrealloc (line_buffer, buffer_size); } } while (0); if (pass_next) { line_buffer[indx++] = c; pass_next = 0; } else if (c == '\\' && remove_quoted_newline) { peekc = yy_getc (); if (peekc == '\n') continue; else { yy_ungetc (peekc); pass_next = 1; line_buffer[indx++] = c; } } else line_buffer[indx++] = c; if (c == '\n') { line_buffer[indx] = '\0'; return (line_buffer); } } } char * read_secondary_line (remove_quoted_newline) int remove_quoted_newline; { prompt_string_pointer = &ps2_prompt; prompt_again (); return (read_a_line (remove_quoted_newline)); } # 1633 "./parse.y" STRING_INT_ALIST word_token_alist[] = { { "if", 258 }, { "then", 259 }, { "else", 260 }, { "elif", 261 }, { "fi", 262 }, { "case", 263 }, { "esac", 264 }, { "for", 265 }, { "select", 266 }, { "while", 267 }, { "until", 268 }, { "do", 269 }, { "done", 270 }, { "in", 275 }, { "function", 271 }, { "time", 277 }, { "{", '{' }, { "}", '}' }, { "!", 276 }, { "[[", 272 }, { "]]", 273 }, { (char *)((void *)0), 0} }; STRING_INT_ALIST other_token_alist[] = { { "-p", 278 }, { "&&", 285 }, { "||", 286 }, { ">>", 287 }, { "<<", 288 }, { "<&", 289 }, { ">&", 291 }, { ";;", 292 }, { "<<-", 293 }, { "<<<", 290 }, { "&>", 294 }, { "<>", 295 }, { ">|", 296 }, { "EOF", 297 }, { ">", '>' }, { "<", '<' }, { "-", '-' }, { "{", '{' }, { "}", '}' }, { ";", ';' }, { "(", '(' }, { ")", ')' }, { "|", '|' }, { "&", '&' }, { "newline", '\n' }, { (char *)((void *)0), 0} }; # 1709 "./parse.y" struct dstack dstack = { (char *)((void *)0), 0, 0 }; static struct dstack temp_dstack = { (char *)((void *)0), 0, 0 }; # 1742 "./parse.y" static int eol_ungetc_lookahead = 0; static int shell_getc (remove_quoted_newline) int remove_quoted_newline; { register int i; int c; unsigned char uc; static int mustpop = 0; if (interrupt_state) throw_to_top_level (); if (eol_ungetc_lookahead) { c = eol_ungetc_lookahead; eol_ungetc_lookahead = 0; return (c); } if (!shell_input_line || ((!shell_input_line[shell_input_line_index]) && (pushed_string_list == (STRING_SAVER *)((void *)0)))) { line_number++; restart_read: if (interrupt_state) throw_to_top_level (); i = 0; shell_input_line_terminator = 0; notify_and_cleanup (); if (interactive && bash_input.type != st_string && no_line_editing) print_prompt (); if (bash_input.type == st_stream) clearerr (stdin); while (1) { c = yy_getc (); if (interrupt_state) throw_to_top_level (); if (c == '\0') { continue; } do { if ((i) + (2) >= shell_input_line_size) { while ((i) + (2) >= shell_input_line_size) shell_input_line_size += (256); shell_input_line = xrealloc (shell_input_line, shell_input_line_size); } } while (0); if (c == (-1)) { if (bash_input.type == st_stream) clearerr (stdin); if (i == 0) shell_input_line_terminator = (-1); shell_input_line[i] = '\0'; break; } shell_input_line[i++] = c; if (c == '\n') { shell_input_line[--i] = '\0'; current_command_line_count++; break; } } shell_input_line_index = 0; shell_input_line_len = i; set_line_mbstate (); if (remember_on_history && shell_input_line && shell_input_line[0]) { char *expansions; int old_hist; old_hist = history_expansion_inhibited; if ((dstack.delimiter_depth ? dstack.delimiters[dstack.delimiter_depth - 1] : 0) == '\'') history_expansion_inhibited = 1; expansions = pre_process_line (shell_input_line, 1, 1); history_expansion_inhibited = old_hist; if (expansions != shell_input_line) { free (shell_input_line); shell_input_line = expansions; shell_input_line_len = shell_input_line ? strlen (shell_input_line) : 0; if (!shell_input_line_len) current_command_line_count--; shell_input_line_size = shell_input_line_len; set_line_mbstate (); } } else if (remember_on_history && shell_input_line && shell_input_line[0] == '\0' && current_command_line_count > 1) { if ((dstack.delimiter_depth ? dstack.delimiters[dstack.delimiter_depth - 1] : 0)) maybe_add_history (shell_input_line); else { char *hdcs; hdcs = history_delimiting_chars (); if (hdcs && hdcs[0] == ';') maybe_add_history (shell_input_line); } } if (shell_input_line) { if (echo_input_at_read && (shell_input_line[0] || shell_input_line_terminator != (-1))) fprintf (stderr, "%s\n", shell_input_line); } else { shell_input_line_size = 0; prompt_string_pointer = ¤t_prompt_string; prompt_again (); goto restart_read; } if (shell_input_line_terminator != (-1)) { if (shell_input_line_len + 3 > shell_input_line_size) shell_input_line = (char *)xrealloc (shell_input_line, 1 + (shell_input_line_size += 2)); shell_input_line[shell_input_line_len] = '\n'; shell_input_line[shell_input_line_len + 1] = '\0'; set_line_mbstate (); } } uc = shell_input_line[shell_input_line_index]; if (uc) shell_input_line_index++; if ((uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { prompt_again (); line_number++; goto restart_read; } if (!uc && (pushed_string_list != (STRING_SAVER *)((void *)0))) { if (mustpop) { pop_string (); uc = shell_input_line[shell_input_line_index]; if (uc) shell_input_line_index++; mustpop--; } else { mustpop++; uc = ' '; } } if (!uc && shell_input_line_terminator == (-1)) return ((shell_input_line_index != 0) ? '\n' : (-1)); return (uc); } static void shell_ungetc (c) int c; { if (shell_input_line && shell_input_line_index) shell_input_line[--shell_input_line_index] = c; else eol_ungetc_lookahead = c; } # 2004 "./parse.y" static void discard_until (character) int character; { int c; while ((c = shell_getc (0)) != (-1) && c != character) ; if (c != (-1)) shell_ungetc (c); } void execute_prompt_command (command) char *command; { sh_builtin_func_t *temp_last, *temp_this; char *last_lastarg; int temp_exit_value, temp_eof_encountered; temp_last = last_shell_builtin; temp_this = this_shell_builtin; temp_exit_value = last_command_exit_value; temp_eof_encountered = eof_encountered; last_lastarg = get_string_value ("_"); if (last_lastarg) last_lastarg = (char *)strcpy (xmalloc (1 + strlen (last_lastarg)), (last_lastarg)); parse_and_execute ((char *)strcpy (xmalloc (1 + strlen (command)), (command)), "PROMPT_COMMAND", 0x001|0x004); last_shell_builtin = temp_last; this_shell_builtin = temp_this; last_command_exit_value = temp_exit_value; eof_encountered = temp_eof_encountered; bind_variable ("_", last_lastarg); do { if (last_lastarg) free (last_lastarg); } while (0); if (token_to_read == '\n') token_to_read = 0; } static char *token = (char *)((void *)0); static int token_buffer_size; # 2062 "./parse.y" static int yylex () { if (interactive && (current_token == 0 || current_token == '\n')) { if ((!prompt_string_pointer || prompt_string_pointer == &ps1_prompt) && time_to_check_mail ()) { check_mail (); reset_mail_timer (); } if (token_to_read == 0 && interactive) prompt_again (); } two_tokens_ago = token_before_that; token_before_that = last_read_token; last_read_token = current_token; current_token = read_token (0); return (current_token); } static int esacs_needed_count; void gather_here_documents () { int r = 0; while (need_here_doc) { make_here_document (redir_stack[r++]); need_here_doc--; } } static int open_brace_count; # 2162 "./parse.y" static int alias_expand_token (tokstr) char *tokstr; { char *expanded; alias_t *ap; if (((parser_state & 0x002) || (((last_read_token) == 280) || ((last_read_token) != 292 && reserved_word_acceptable(last_read_token)))) && (parser_state & 0x001) == 0) { ap = find_alias (tokstr); if (ap && (ap->flags & 0x2)) return (-100); expanded = ap ? (char *)strcpy (xmalloc (1 + strlen (ap->value)), (ap->value)) : (char *)((void *)0); if (expanded) { push_string (expanded, ap->flags & 0x1, ap); return (-99); } else return (-100); } return (-100); } static int time_command_acceptable () { switch (last_read_token) { case 0: case ';': case '\n': case 285: case 286: case '&': case 269: case 259: case 260: case '{': case '(': return 1; default: return 0; } } # 2243 "./parse.y" static int special_case_tokens (tokstr) char *tokstr; { if ((last_read_token == 279) && ((token_before_that == 265) || (token_before_that == 263) || (token_before_that == 266)) && (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) { if (token_before_that == 263) { parser_state |= 0x001; esacs_needed_count++; } return (275); } if (last_read_token == 279 && (token_before_that == 265 || token_before_that == 266) && (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) return (269); if (esacs_needed_count) { esacs_needed_count--; if (((tokstr)[0] == ("esac")[0] && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (tokstr) && __builtin_constant_p ("esac") && (__s1_len = strlen (tokstr), __s2_len = strlen ("esac"), (!((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("esac") + 1) - (size_t)(const void *)("esac") == 1) || __s2_len >= 4)) ? __builtin_strcmp (tokstr, "esac") : (__builtin_constant_p (tokstr) && ((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) && (__s1_len = strlen (tokstr), __s1_len < 4) ? (__builtin_constant_p ("esac") && ((size_t)(const void *)(("esac") + 1) - (size_t)(const void *)("esac") == 1) ? __builtin_strcmp (tokstr, "esac") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("esac"); register int __result = (((__const unsigned char *) (__const char *) (tokstr))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (tokstr))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (tokstr))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (tokstr))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("esac") && ((size_t)(const void *)(("esac") + 1) - (size_t)(const void *)("esac") == 1) && (__s2_len = strlen ("esac"), __s2_len < 4) ? (__builtin_constant_p (tokstr) && ((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) ? __builtin_strcmp (tokstr, "esac") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (tokstr); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("esac"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("esac"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("esac"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("esac"))[3]); } } __result; }))) : __builtin_strcmp (tokstr, "esac")))); }) == 0)) { parser_state &= ~0x001; return (264); } } if (parser_state & 0x004) { parser_state &= ~0x004; if (tokstr[0] == '{' && tokstr[1] == '\0') { open_brace_count++; function_bstart = line_number; return ('{'); } } if (last_read_token == 283 && tokstr[0] == 'd' && tokstr[1] == 'o' && !tokstr[2]) return (269); if (last_read_token == 283 && tokstr[0] == '{' && tokstr[1] == '\0') { open_brace_count++; return ('{'); } if (open_brace_count && reserved_word_acceptable (last_read_token) && tokstr[0] == '}' && !tokstr[1]) { open_brace_count--; return ('}'); } if (last_read_token == 277 && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2]) return (278); if (((token)[0] == ("time")[0] && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (token) && __builtin_constant_p ("time") && (__s1_len = strlen (token), __s2_len = strlen ("time"), (!((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("time") + 1) - (size_t)(const void *)("time") == 1) || __s2_len >= 4)) ? __builtin_strcmp (token, "time") : (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) && (__s1_len = strlen (token), __s1_len < 4) ? (__builtin_constant_p ("time") && ((size_t)(const void *)(("time") + 1) - (size_t)(const void *)("time") == 1) ? __builtin_strcmp (token, "time") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("time"); register int __result = (((__const unsigned char *) (__const char *) (token))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (token))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("time") && ((size_t)(const void *)(("time") + 1) - (size_t)(const void *)("time") == 1) && (__s2_len = strlen ("time"), __s2_len < 4) ? (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) ? __builtin_strcmp (token, "time") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (token); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("time"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("time"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("time"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("time"))[3]); } } __result; }))) : __builtin_strcmp (token, "time")))); }) == 0) && ((parser_state & 0x001) == 0) && time_command_acceptable ()) return (277); if ((parser_state & 0x200) && tokstr[0] == ']' && tokstr[1] == ']' && tokstr[2] == '\0') return (273); return (-1); } void reset_parser () { dstack.delimiter_depth = 0; open_brace_count = 0; parser_state = 0; if (pushed_string_list) free_string_list (); if (shell_input_line) { free (shell_input_line); shell_input_line = (char *)((void *)0); shell_input_line_size = shell_input_line_index = 0; } do { if (word_desc_to_read) free (word_desc_to_read); } while (0); word_desc_to_read = (WORD_DESC *)((void *)0); last_read_token = '\n'; token_to_read = '\n'; } static int read_token (command) int command; { int character; int peek_char; int result; if (command == 1) { reset_parser (); return ('\n'); } if (token_to_read) { result = token_to_read; if (token_to_read == 279 || token_to_read == 280) { yylval.word = word_desc_to_read; word_desc_to_read = (WORD_DESC *)((void *)0); } token_to_read = 0; return (result); } if ((parser_state & (0x100|0x200)) == 0x100) { cond_lineno = line_number; parser_state |= 0x200; yylval.command = parse_cond_command (); if (cond_token != 273) { cond_error (); return (-1); } token_to_read = 273; parser_state &= ~(0x200|0x100); return (284); } re_read_token: while ((character = shell_getc (1)) != (-1) && (((character) == ' ') || ((character) == '\t'))) ; if (character == (-1)) { EOF_Reached = 1; return (297); } if ((character == '#' && (!interactive || interactive_comments)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { discard_until ('\n'); shell_getc (0); character = '\n'; } if (character == '\n') { if (need_here_doc) gather_here_documents (); parser_state &= ~0x002; return (character); } if (((sh_syntaxtab[(unsigned char)(character)] & 0x0001) && ((parser_state & 0x010) == 0)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { if (character == '<' || character == '>') parser_state &= ~0x002; peek_char = shell_getc (1); if (character == peek_char) { switch (character) { case '<': peek_char = shell_getc (1); if (peek_char == '-') return (293); else if (peek_char == '<') return (290); else { shell_ungetc (peek_char); return (288); } case '>': return (287); case ';': parser_state |= 0x001; parser_state &= ~0x002; return (292); case '&': return (285); case '|': return (286); case '(': result = parse_dparen (character); if (result == -2) break; else return result; } } else if ((character == '<' && peek_char == '&') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (289); else if ((character == '>' && peek_char == '&') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (291); else if ((character == '<' && peek_char == '>') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (295); else if ((character == '>' && peek_char == '|') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (296); else if ((peek_char == '>' && character == '&') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (294); shell_ungetc (peek_char); if ((character == ')' && last_read_token == '(' && token_before_that == 279) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { parser_state |= 0x004; parser_state &= ~0x002; function_dstart = line_number; } if ((character == '(' && (parser_state & 0x001) == 0) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) parser_state |= 0x020; else if (((parser_state & 0x001) && character == ')') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) parser_state &= ~0x001; else if (((parser_state & 0x020) && character == ')') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) parser_state &= ~0x020; if ((posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (character); } if ((character == '-' && (last_read_token == 289 || last_read_token == 291)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) return (character); result = read_token_word (character); if (result == -99) goto re_read_token; return result; } # 2571 "./parse.y" static char matched_pair_error; static char * parse_matched_pair (qc, open, close, lenp, flags) int qc; int open, close; int *lenp, flags; { int count, ch, was_dollar; int pass_next_character, nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; int retind, retsize; count = 1; pass_next_character = was_dollar = 0; ret = (char *)xmalloc (retsize = 64); retind = 0; start_lineno = line_number; while (count) { ch = shell_getc ((qc != '\'' || (flags & 0x02)) && pass_next_character == 0); if (ch == (-1)) { free (ret); parser_error (start_lineno, "unexpected EOF while looking for matching `%c'", close); EOF_Reached = 1; return (&matched_pair_error); } if (ch == '\n' && interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) prompt_again (); if (pass_next_character) { pass_next_character = 0; if (qc != '\'' && ch == '\n') { if (retind > 0) retind--; continue; } do { if ((retind) + (2) >= retsize) { while ((retind) + (2) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); if ((ch == '\001' || ch == '\177') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) ret[retind++] = '\001'; ret[retind++] = ch; continue; } else if ((ch == '\001' || ch == '\177') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { do { if ((retind) + (2) >= retsize) { while ((retind) + (2) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); ret[retind++] = '\001'; ret[retind++] = ch; continue; } else if ((ch == close) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) count--; else if ((open != close && was_dollar && open == '{' && ch == open) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) count++; else if ((((flags & 0x01) == 0) && ch == open) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) count++; do { if ((retind) + (1) >= retsize) { while ((retind) + (1) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); ret[retind++] = ch; if (open == '\'') { if (((flags & 0x02) && ch == '\\') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) pass_next_character++; continue; } if ((ch == '\\') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) pass_next_character++; if (open != close) { if (((sh_syntaxtab[(unsigned char)(ch)] & 0x0008)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { do { if (dstack.delimiter_depth + 2 > dstack.delimiter_space) dstack.delimiters = (char *)xrealloc (dstack.delimiters, (dstack.delimiter_space += 10) * sizeof (char)); dstack.delimiters[dstack.delimiter_depth] = ch; dstack.delimiter_depth++; } while (0); if ((was_dollar && ch == '\'') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) nestret = parse_matched_pair (ch, ch, ch, &nestlen, 0x02); else nestret = parse_matched_pair (ch, ch, ch, &nestlen, 0); dstack.delimiter_depth--; if (nestret == &matched_pair_error) { free (ret); return &matched_pair_error; } if ((was_dollar && ch == '\'') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); xfree (nestret); nestret = sh_single_quote (ttrans); free (ttrans); nestlen = strlen (nestret); retind -= 2; } else if ((was_dollar && ch == '"') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); xfree (nestret); nestret = (char *)xmalloc (ttranslen + 3); nestret[0] = '"'; strcpy (nestret + 1, ttrans); nestret[ttranslen + 1] = '"'; nestret[ttranslen += 2] = '\0'; free (ttrans); nestlen = ttranslen; retind -= 2; } if (nestlen) { do { if ((retind) + (nestlen) >= retsize) { while ((retind) + (nestlen) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); strcpy (ret + retind, nestret); retind += nestlen; } do { if (nestret) free (nestret); } while (0); } } else if ((open == '"' && ch == '`') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { nestret = parse_matched_pair (0, '`', '`', &nestlen, 0); if (nestret == &matched_pair_error) { free (ret); return &matched_pair_error; } if (nestlen) { do { if ((retind) + (nestlen) >= retsize) { while ((retind) + (nestlen) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); strcpy (ret + retind, nestret); retind += nestlen; } do { if (nestret) free (nestret); } while (0); } else if ((was_dollar && (ch == '(' || ch == '{' || ch == '[')) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { if (open == ch) count--; if (ch == '(') nestret = parse_matched_pair (0, '(', ')', &nestlen, 0); else if (ch == '{') nestret = parse_matched_pair (0, '{', '}', &nestlen, 0x01); else if (ch == '[') nestret = parse_matched_pair (0, '[', ']', &nestlen, 0); if (nestret == &matched_pair_error) { free (ret); return &matched_pair_error; } if (nestlen) { do { if ((retind) + (nestlen) >= retsize) { while ((retind) + (nestlen) >= retsize) retsize += (64); ret = xrealloc (ret, retsize); } } while (0); strcpy (ret + retind, nestret); retind += nestlen; } do { if (nestret) free (nestret); } while (0); } was_dollar = ((ch == '$') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)); } ret[retind] = '\0'; if (lenp) *lenp = retind; return ret; } static int parse_dparen (c) int c; { int cmdtyp, len, sline; char *wval, *wv2; WORD_DESC *wd; if (last_read_token == 265) { arith_for_lineno = line_number; cmdtyp = parse_arith_cmd (&wval); if (cmdtyp == 1) { len = strlen (wval); wv2 = (char *)xmalloc (len); __builtin_strncpy (wv2, wval + 1, len - 2); wv2[len - 2] = '\0'; wd = make_word (wv2); yylval.word_list = make_word_list (wd, (WORD_LIST *)((void *)0)); free (wval); free (wv2); return (283); } else return -1; } if (reserved_word_acceptable (last_read_token)) { sline = line_number; cmdtyp = parse_arith_cmd (&wval); if (cmdtyp == 1) { wd = make_word (wval); wd->flags = 0x02; yylval.word_list = make_word_list (wd, (WORD_LIST *)((void *)0)); free (wval); return (282); } else if (cmdtyp == 0) { push_string (wval, 0, (alias_t *)((void *)0)); if ((parser_state & 0x001) == 0) parser_state |= 0x020; return (c); } else return -1; } return -2; } static int parse_arith_cmd (ep) char **ep; { int exp_lineno, rval, c; char *ttok, *tokstr; int ttoklen; exp_lineno = line_number; ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0); rval = 1; if (ttok == &matched_pair_error) return -1; c = shell_getc (0); if ((c != ')') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) rval = 0; tokstr = (char *)xmalloc (ttoklen + 4); tokstr[0] = (rval == 1) ? '"' : '('; __builtin_strncpy (tokstr + 1, ttok, ttoklen - 1); if (rval == 1) { tokstr[ttoklen] = '"'; tokstr[ttoklen+1] = '\0'; } else { tokstr[ttoklen] = ')'; tokstr[ttoklen+1] = c; tokstr[ttoklen+2] = '\0'; } *ep = tokstr; do { if (ttok) free (ttok); } while (0); return rval; } static void cond_error () { char *etext; if (EOF_Reached && cond_token != 274) parser_error (cond_lineno, "unexpected EOF while looking for `]]'"); else if (cond_token != 274) { if (etext = error_token_from_token (cond_token)) { parser_error (cond_lineno, "syntax error in conditional expression: unexpected token `%s'", etext); free (etext); } else parser_error (cond_lineno, "syntax error in conditional expression"); } } static COND_COM * cond_expr () { return (cond_or ()); } static COND_COM * cond_or () { COND_COM *l, *r; l = cond_and (); if (cond_token == 286) { r = cond_or (); l = make_cond_node (2, (WORD_DESC *)((void *)0), l, r); } return l; } static COND_COM * cond_and () { COND_COM *l, *r; l = cond_term (); if (cond_token == 285) { r = cond_and (); l = make_cond_node (1, (WORD_DESC *)((void *)0), l, r); } return l; } static int cond_skip_newlines () { while ((cond_token = read_token (0)) == '\n') { if (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) prompt_again (); } return (cond_token); } static COND_COM * cond_term () { WORD_DESC *op; COND_COM *term, *tleft, *tright; int tok, lineno; char *etext; tok = cond_skip_newlines (); lineno = line_number; if (tok == 273) { do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } else if (tok == '(') { term = cond_expr (); if (cond_token != ')') { if (term) dispose_cond_node (term); if (etext = error_token_from_token (cond_token)) { parser_error (lineno, "unexpected token `%s', expected `)'", etext); free (etext); } else parser_error (lineno, "expected `)'"); do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } term = make_cond_node (6, (WORD_DESC *)((void *)0), term, (COND_COM *)((void *)0)); (void)cond_skip_newlines (); } else if (tok == 276 || (tok == 279 && (yylval.word->word[0] == '!' && yylval.word->word[1] == '\0'))) { if (tok == 279) dispose_word (yylval.word); term = cond_term (); if (term) term->flags |= 0x04; } else if (tok == 279 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (0); if (tok == 279) { tleft = make_cond_node (5, yylval.word, (COND_COM *)((void *)0), (COND_COM *)((void *)0)); term = make_cond_node (3, op, tleft, (COND_COM *)((void *)0)); } else { dispose_word (op); if (etext = error_token_from_token (tok)) { parser_error (line_number, "unexpected argument `%s' to conditional unary operator", etext); free (etext); } else parser_error (line_number, "unexpected argument to conditional unary operator"); do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } (void)cond_skip_newlines (); } else if (tok == 279) { tleft = make_cond_node (5, yylval.word, (COND_COM *)((void *)0), (COND_COM *)((void *)0)); tok = read_token (0); if (tok == 279 && test_binop (yylval.word->word)) op = yylval.word; else if (tok == '<' || tok == '>') op = make_word_from_token (tok); else if (tok == 273 || tok == 285 || tok == 286 || tok == ')') { op = make_word ("-n"); term = make_cond_node (3, op, tleft, (COND_COM *)((void *)0)); cond_token = tok; return (term); } else { if (etext = error_token_from_token (tok)) { parser_error (line_number, "unexpected token `%s', conditional binary operator expected", etext); free (etext); } else parser_error (line_number, "conditional binary operator expected"); dispose_cond_node (tleft); do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } tok = read_token (0); if (tok == 279) { tright = make_cond_node (5, yylval.word, (COND_COM *)((void *)0), (COND_COM *)((void *)0)); term = make_cond_node (4, op, tleft, tright); } else { if (etext = error_token_from_token (tok)) { parser_error (line_number, "unexpected argument `%s' to conditional binary operator", etext); free (etext); } else parser_error (line_number, "unexpected argument to conditional binary operator"); dispose_cond_node (tleft); dispose_word (op); do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } (void)cond_skip_newlines (); } else { if (tok < 256) parser_error (line_number, "unexpected token `%c' in conditional command", tok); else if (etext = error_token_from_token (tok)) { parser_error (line_number, "unexpected token `%s' in conditional command", etext); free (etext); } else parser_error (line_number, "unexpected token %d in conditional command", tok); do { cond_token = 274; return ((COND_COM *)((void *)0)); } while (0); } return (term); } static COMMAND * parse_cond_command () { COND_COM *cexp; cexp = cond_expr (); return (make_cond_command (cexp)); } static int token_is_assignment (t, i) char *t; int i; { unsigned char c, c1; int r; c = t[i]; c1 = t[i+1]; t[i] = '='; t[i+1] = '\0'; r = assignment (t); t[i] = c; t[i+1] = c1; return r; } static int token_is_ident (t, i) char *t; int i; { unsigned char c; int r; c = t[i]; t[i] = '\0'; r = legal_identifier (t); t[i] = c; return r; } static int read_token_word (character) int character; { WORD_DESC *the_word; int token_index; int all_digit_token; int dollar_present; int quoted; int pass_next_character; int cd; int result, peek_char; char *ttok, *ttrans; int ttoklen, ttranslen; intmax_t lvalue; if (token_buffer_size < 496) token = (char *)xrealloc (token, token_buffer_size = 496); token_index = 0; all_digit_token = ((character) >= '0' && (character) <= '9'); dollar_present = quoted = pass_next_character = 0; for (;;) { if (character == (-1)) goto got_token; if (pass_next_character) { pass_next_character = 0; goto got_character; } cd = (dstack.delimiter_depth ? dstack.delimiters[dstack.delimiter_depth - 1] : 0); if ((character == '\\') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { peek_char = shell_getc (0); if (peek_char == '\n') { character = '\n'; goto next_character; } else { shell_ungetc (peek_char); if (cd == 0 || cd == '`' || (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & 0x0040))) pass_next_character++; quoted = 1; goto got_character; } } if (((sh_syntaxtab[(unsigned char)(character)] & 0x0008)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { do { if (dstack.delimiter_depth + 2 > dstack.delimiter_space) dstack.delimiters = (char *)xrealloc (dstack.delimiters, (dstack.delimiter_space += 10) * sizeof (char)); dstack.delimiters[dstack.delimiter_depth] = character; dstack.delimiter_depth++; } while (0); ttok = parse_matched_pair (character, character, character, &ttoklen, 0); dstack.delimiter_depth--; if (ttok == &matched_pair_error) return -1; do { if ((token_index) + (ttoklen + 2) >= token_buffer_size) { while ((token_index) + (ttoklen + 2) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); token[token_index++] = character; strcpy (token + token_index, ttok); token_index += ttoklen; all_digit_token = 0; quoted = 1; dollar_present |= (character == '"' && (__extension__ (__builtin_constant_p ('$') && !__builtin_constant_p (ttok) && ('$') == '\0' ? (char *) __rawmemchr (ttok, '$') : __builtin_strchr (ttok, '$'))) != 0); do { if (ttok) free (ttok); } while (0); goto next_character; } if (extended_glob && ((character) == '@' || (character) == '*' || (character) == '+' || (character) == '?' || (character) == '!')) { peek_char = shell_getc (1); if ((peek_char == '(') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { do { if (dstack.delimiter_depth + 2 > dstack.delimiter_space) dstack.delimiters = (char *)xrealloc (dstack.delimiters, (dstack.delimiter_space += 10) * sizeof (char)); dstack.delimiters[dstack.delimiter_depth] = peek_char; dstack.delimiter_depth++; } while (0); ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); dstack.delimiter_depth--; if (ttok == &matched_pair_error) return -1; do { if ((token_index) + (ttoklen + 2) >= token_buffer_size) { while ((token_index) + (ttoklen + 2) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); token[token_index++] = character; token[token_index++] = peek_char; strcpy (token + token_index, ttok); token_index += ttoklen; do { if (ttok) free (ttok); } while (0); dollar_present = all_digit_token = 0; goto next_character; } else shell_ungetc (peek_char); } if (((character) == '$' || (character) == '<' || (character) == '>')) { peek_char = shell_getc (1); if ((peek_char == '(' || ((peek_char == '{' || peek_char == '[') && character == '$')) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { if (peek_char == '{') ttok = parse_matched_pair (cd, '{', '}', &ttoklen, 0x01); else if (peek_char == '(') { do { if (dstack.delimiter_depth + 2 > dstack.delimiter_space) dstack.delimiters = (char *)xrealloc (dstack.delimiters, (dstack.delimiter_space += 10) * sizeof (char)); dstack.delimiters[dstack.delimiter_depth] = peek_char; dstack.delimiter_depth++; } while (0); ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); dstack.delimiter_depth--; } else ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); if (ttok == &matched_pair_error) return -1; do { if ((token_index) + (ttoklen + 2) >= token_buffer_size) { while ((token_index) + (ttoklen + 2) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); token[token_index++] = character; token[token_index++] = peek_char; strcpy (token + token_index, ttok); token_index += ttoklen; do { if (ttok) free (ttok); } while (0); dollar_present = 1; all_digit_token = 0; goto next_character; } else if ((character == '$' && (peek_char == '\'' || peek_char == '"')) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { int first_line; first_line = line_number; do { if (dstack.delimiter_depth + 2 > dstack.delimiter_space) dstack.delimiters = (char *)xrealloc (dstack.delimiters, (dstack.delimiter_space += 10) * sizeof (char)); dstack.delimiters[dstack.delimiter_depth] = peek_char; dstack.delimiter_depth++; } while (0); ttok = parse_matched_pair (peek_char, peek_char, peek_char, &ttoklen, (peek_char == '\'') ? 0x02 : 0); dstack.delimiter_depth--; if (ttok == &matched_pair_error) return -1; if (peek_char == '\'') { ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); free (ttok); ttok = sh_single_quote (ttrans); free (ttrans); ttrans = ttok; ttranslen = strlen (ttrans); } else { ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); free (ttok); ttok = (char *)xmalloc (ttranslen + 3); ttok[0] = '"'; strcpy (ttok + 1, ttrans); ttok[ttranslen + 1] = '"'; ttok[ttranslen += 2] = '\0'; free (ttrans); ttrans = ttok; } do { if ((token_index) + (ttranslen + 2) >= token_buffer_size) { while ((token_index) + (ttranslen + 2) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); strcpy (token + token_index, ttrans); token_index += ttranslen; do { if (ttrans) free (ttrans); } while (0); quoted = 1; all_digit_token = 0; goto next_character; } else if ((character == '$' && peek_char == '$') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { ttok = (char *)xmalloc (3); ttok[0] = ttok[1] = '$'; ttok[2] = '\0'; do { if ((token_index) + (3) >= token_buffer_size) { while ((token_index) + (3) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); strcpy (token + token_index, ttok); token_index += 2; dollar_present = 1; all_digit_token = 0; do { if (ttok) free (ttok); } while (0); goto next_character; } else shell_ungetc (peek_char); } else if ((character == '[' && token_index > 0 && (((last_read_token) == 280) || ((last_read_token) != 292 && reserved_word_acceptable(last_read_token))) && ((parser_state & 0x001) == 0) && token_is_ident (token, token_index)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); if (ttok == &matched_pair_error) return -1; do { if ((token_index) + (ttoklen + 2) >= token_buffer_size) { while ((token_index) + (ttoklen + 2) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); token[token_index++] = character; strcpy (token + token_index, ttok); token_index += ttoklen; do { if (ttok) free (ttok); } while (0); all_digit_token = 0; goto next_character; } else if ((character == '=' && token_index > 0 && token_is_assignment (token, token_index)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { peek_char = shell_getc (1); if ((peek_char == '(') && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { ttok = parse_compound_assignment (&ttoklen); do { if ((token_index) + (ttoklen + 4) >= token_buffer_size) { while ((token_index) + (ttoklen + 4) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); token[token_index++] = '='; token[token_index++] = '('; if (ttok) { strcpy (token + token_index, ttok); token_index += ttoklen; } token[token_index++] = ')'; do { if (ttok) free (ttok); } while (0); all_digit_token = 0; goto next_character; } else shell_ungetc (peek_char); } if (((sh_syntaxtab[(unsigned char)(character)] & 0x0002)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { shell_ungetc (character); goto got_token; } got_character: all_digit_token &= ((character) >= '0' && (character) <= '9'); dollar_present |= character == '$'; if (character == '\001' || character == '\177') token[token_index++] = '\001'; token[token_index++] = character; do { if ((token_index) + (1) >= token_buffer_size) { while ((token_index) + (1) >= token_buffer_size) token_buffer_size += (512); token = xrealloc (token, token_buffer_size); } } while (0); next_character: if (character == '\n' && interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) prompt_again (); cd = (dstack.delimiter_depth ? dstack.delimiters[dstack.delimiter_depth - 1] : 0); character = shell_getc (cd != '\'' && pass_next_character == 0); } got_token: token[token_index] = '\0'; if ((all_digit_token && (character == '<' || character == '>' || last_read_token == 289 || last_read_token == 291)) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) { if (legal_number (token, &lvalue) && (int)lvalue == lvalue) yylval.number = lvalue; else yylval.number = -1; return (281); } result = (((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) ? special_case_tokens (token) : -1; if (result >= 0) return result; if ((posixly_correct) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) do { if (!dollar_present && !quoted && reserved_word_acceptable (last_read_token)) { int i; for (i = 0; word_token_alist[i].word != (char *)((void *)0); i++) if (((token)[0] == (word_token_alist[i].word)[0] && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (token) && __builtin_constant_p (word_token_alist[i].word) && (__s1_len = strlen (token), __s2_len = strlen (word_token_alist[i].word), (!((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) || __s2_len >= 4)) ? __builtin_strcmp (token, word_token_alist[i].word) : (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) && (__s1_len = strlen (token), __s1_len < 4) ? (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) ? __builtin_strcmp (token, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (word_token_alist[i].word); register int __result = (((__const unsigned char *) (__const char *) (token))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (token))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) && (__s2_len = strlen (word_token_alist[i].word), __s2_len < 4) ? (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) ? __builtin_strcmp (token, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (token); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[3]); } } __result; }))) : __builtin_strcmp (token, word_token_alist[i].word)))); }) == 0)) { if ((parser_state & 0x001) && (word_token_alist[i].token != 264)) break; if (word_token_alist[i].token == 277) break; if (word_token_alist[i].token == 264) parser_state &= ~(0x001|0x080); else if (word_token_alist[i].token == 263) parser_state |= 0x080; else if (word_token_alist[i].token == 273) parser_state &= ~(0x100|0x200); else if (word_token_alist[i].token == 272) parser_state |= 0x100; else if (word_token_alist[i].token == '{') open_brace_count++; else if (word_token_alist[i].token == '}' && open_brace_count) open_brace_count--; return (word_token_alist[i].token); } } } while (0); if (expand_aliases && quoted == 0) { result = alias_expand_token (token); if (result == -99) return (-99); else if (result == -100) parser_state &= ~0x002; } if ((posixly_correct == 0) && ((shell_input_line_index > 1) ? shell_input_line_property[shell_input_line_index - 1] : 1)) do { if (!dollar_present && !quoted && reserved_word_acceptable (last_read_token)) { int i; for (i = 0; word_token_alist[i].word != (char *)((void *)0); i++) if (((token)[0] == (word_token_alist[i].word)[0] && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (token) && __builtin_constant_p (word_token_alist[i].word) && (__s1_len = strlen (token), __s2_len = strlen (word_token_alist[i].word), (!((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) || __s2_len >= 4)) ? __builtin_strcmp (token, word_token_alist[i].word) : (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) && (__s1_len = strlen (token), __s1_len < 4) ? (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) ? __builtin_strcmp (token, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (word_token_alist[i].word); register int __result = (((__const unsigned char *) (__const char *) (token))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (token))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (token))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) && (__s2_len = strlen (word_token_alist[i].word), __s2_len < 4) ? (__builtin_constant_p (token) && ((size_t)(const void *)((token) + 1) - (size_t)(const void *)(token) == 1) ? __builtin_strcmp (token, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (token); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[3]); } } __result; }))) : __builtin_strcmp (token, word_token_alist[i].word)))); }) == 0)) { if ((parser_state & 0x001) && (word_token_alist[i].token != 264)) break; if (word_token_alist[i].token == 277) break; if (word_token_alist[i].token == 264) parser_state &= ~(0x001|0x080); else if (word_token_alist[i].token == 263) parser_state |= 0x080; else if (word_token_alist[i].token == 273) parser_state &= ~(0x100|0x200); else if (word_token_alist[i].token == 272) parser_state |= 0x100; else if (word_token_alist[i].token == '{') open_brace_count++; else if (word_token_alist[i].token == '}' && open_brace_count) open_brace_count--; return (word_token_alist[i].token); } } } while (0); the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); the_word->word = (char *)xmalloc (1 + token_index); the_word->flags = 0; strcpy (the_word->word, token); if (dollar_present) the_word->flags |= 0x01; if (quoted) the_word->flags |= 0x02; if (assignment (token)) { the_word->flags |= 0x04; if ((((last_read_token) == 280) || ((last_read_token) != 292 && reserved_word_acceptable(last_read_token))) && ((parser_state & 0x001) == 0)) the_word->flags |= 0x10; } yylval.word = the_word; result = ((the_word->flags & (0x04|0x10)) == (0x04|0x10)) ? 280 : 279; if (last_read_token == 271) { parser_state |= 0x004; function_dstart = line_number; } return (result); } static int reserved_word_acceptable (toksym) int toksym; { switch (toksym) { case '\n': case ';': case '(': case ')': case '|': case '&': case '{': case '}': case 285: case 276: case 269: case 270: case 261: case 260: case 264: case 262: case 258: case 286: case 292: case 259: case 277: case 278: case 268: case 267: case 0: return 1; default: return 0; } } int find_reserved_word (tokstr) char *tokstr; { int i; for (i = 0; word_token_alist[i].word; i++) if (((tokstr)[0] == (word_token_alist[i].word)[0] && __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (tokstr) && __builtin_constant_p (word_token_alist[i].word) && (__s1_len = strlen (tokstr), __s2_len = strlen (word_token_alist[i].word), (!((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) || __s2_len >= 4)) ? __builtin_strcmp (tokstr, word_token_alist[i].word) : (__builtin_constant_p (tokstr) && ((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) && (__s1_len = strlen (tokstr), __s1_len < 4) ? (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) ? __builtin_strcmp (tokstr, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (word_token_alist[i].word); register int __result = (((__const unsigned char *) (__const char *) (tokstr))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (tokstr))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (tokstr))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (tokstr))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (word_token_alist[i].word) && ((size_t)(const void *)((word_token_alist[i].word) + 1) - (size_t)(const void *)(word_token_alist[i].word) == 1) && (__s2_len = strlen (word_token_alist[i].word), __s2_len < 4) ? (__builtin_constant_p (tokstr) && ((size_t)(const void *)((tokstr) + 1) - (size_t)(const void *)(tokstr) == 1) ? __builtin_strcmp (tokstr, word_token_alist[i].word) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (tokstr); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (word_token_alist[i].word))[3]); } } __result; }))) : __builtin_strcmp (tokstr, word_token_alist[i].word)))); }) == 0)) return i; return -1; } # 3602 "./parse.y" static int no_semi_successors[] = { '\n', '{', '(', ')', ';', '&', '|', 263, 269, 260, 258, 292, 259, 268, 267, 285, 286, 275, 0 }; char * history_delimiting_chars () { register int i; if (dstack.delimiter_depth != 0) return ("\n"); # 3627 "./parse.y" if (token_before_that == ')') { if (two_tokens_ago == '(') return " "; else if (parser_state & 0x080) return " "; else return "; "; } else if (token_before_that == 279 && two_tokens_ago == 271) return " "; else if (token_before_that == 279 && two_tokens_ago == 265) { for (i = shell_input_line_index; (((shell_input_line[i]) == ' ') || ((shell_input_line[i]) == '\t')); i++) ; if (shell_input_line[i] && shell_input_line[i] == 'i' && shell_input_line[i+1] == 'n') return " "; return ";"; } for (i = 0; no_semi_successors[i]; i++) { if (token_before_that == no_semi_successors[i]) return (" "); } return ("; "); } static void prompt_again () { char *temp_prompt; if (!interactive) return; ps1_prompt = get_string_value ("PS1"); ps2_prompt = get_string_value ("PS2"); if (!prompt_string_pointer) prompt_string_pointer = &ps1_prompt; temp_prompt = *prompt_string_pointer ? decode_prompt_string (*prompt_string_pointer) : (char *)((void *)0); if (temp_prompt == 0) { temp_prompt = (char *)xmalloc (1); temp_prompt[0] = '\0'; } current_prompt_string = *prompt_string_pointer; prompt_string_pointer = &ps2_prompt; if (!no_line_editing) { do { if (current_readline_prompt) free (current_readline_prompt); } while (0); current_readline_prompt = temp_prompt; } else { do { if (current_decoded_prompt) free (current_decoded_prompt); } while (0); current_decoded_prompt = temp_prompt; } } int get_current_prompt_level () { return ((current_prompt_string && current_prompt_string == ps2_prompt) ? 2 : 1); } void set_current_prompt_level (x) int x; { prompt_string_pointer = (x == 2) ? &ps2_prompt : &ps1_prompt; current_prompt_string = *prompt_string_pointer; } static void print_prompt () { fprintf (stderr, "%s", current_decoded_prompt); fflush (stderr); } # 3758 "./parse.y" char * decode_prompt_string (string) char *string; { WORD_LIST *list; char *result, *t; struct dstack save_dstack; int last_exit_value; int result_size, result_index; int c, n; char *temp, octal_string[4]; struct tm *tm; time_t the_time; char timebuf[128]; char *timefmt; result = (char *)xmalloc (result_size = 48); result[result_index = 0] = 0; temp = (char *)((void *)0); while (c = *string++) { if (posixly_correct && c == '!') { if (*string == '!') { temp = (char *)strcpy (xmalloc (1 + strlen ("!")), ("!")); goto add_string; } else { temp = itos (history_number ()); string--; goto add_string; } } if (c == '\\') { c = *string; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': __builtin_strncpy (octal_string, string, 3); octal_string[3] = '\0'; n = read_octal (octal_string); temp = (char *)xmalloc (3); if (n == '\001' || n == '\177') { temp[0] = '\001'; temp[1] = n; temp[2] = '\0'; } else if (n == -1) { temp[0] = '\\'; temp[1] = '\0'; } else { temp[0] = n; temp[1] = '\0'; } for (c = 0; n != -1 && c < 3 && ((*string) >= '0' && (*string) <= '7'); c++) string++; c = 0; goto add_string; case 'd': case 't': case 'T': case '@': case 'A': (void) time (&the_time); tm = localtime (&the_time); if (c == 'd') n = strftime (timebuf, sizeof (timebuf), "%a %b %d", tm); else if (c == 't') n = strftime (timebuf, sizeof (timebuf), "%H:%M:%S", tm); else if (c == 'T') n = strftime (timebuf, sizeof (timebuf), "%I:%M:%S", tm); else if (c == '@') n = strftime (timebuf, sizeof (timebuf), "%I:%M %p", tm); else if (c == 'A') n = strftime (timebuf, sizeof (timebuf), "%H:%M", tm); timebuf[sizeof(timebuf) - 1] = '\0'; temp = (char *)strcpy (xmalloc (1 + strlen (timebuf)), (timebuf)); goto add_string; case 'D': if (string[1] != '{') goto not_escape; (void) time (&the_time); tm = localtime (&the_time); string += 2; timefmt = xmalloc (strlen (string) + 3); for (t = timefmt; *string && *string != '}'; ) *t++ = *string++; *t = '\0'; c = *string; if (timefmt[0] == '\0') { timefmt[0] = '%'; timefmt[1] = 'X'; timefmt[2] = '\0'; } n = strftime (timebuf, sizeof (timebuf), timefmt, tm); free (timefmt); timebuf[sizeof(timebuf) - 1] = '\0'; if (promptvars || posixly_correct) temp = sh_backslash_quote_for_double_quotes (timebuf); else temp = (char *)strcpy (xmalloc (1 + strlen (timebuf)), (timebuf)); goto add_string; case 'n': temp = (char *)xmalloc (3); temp[0] = no_line_editing ? '\n' : '\r'; temp[1] = no_line_editing ? '\0' : '\n'; temp[2] = '\0'; goto add_string; case 's': temp = base_pathname (shell_name); temp = (char *)strcpy (xmalloc (1 + strlen (temp)), (temp)); goto add_string; case 'v': case 'V': temp = (char *)xmalloc (16); if (c == 'v') strcpy (temp, dist_version); else sprintf (temp, "%s.%d", dist_version, patch_level); goto add_string; case 'w': case 'W': { char t_string[4096]; int tlen; temp = get_string_value ("PWD"); if (temp == 0) { if (getcwd (t_string, sizeof(t_string)) == 0) { t_string[0] = '.'; tlen = 1; } else tlen = strlen (t_string); } else { tlen = sizeof (t_string) - 1; __builtin_strncpy (t_string, temp, tlen); } t_string[tlen] = '\0'; if (c == 'W') { if (((t_string)[0] == '/' && (t_string)[1] == 0) == 0 && ((t_string)[0] == '/' && (t_string)[1] == '/' && (t_string)[2] == 0) == 0) { t = strrchr (t_string, '/'); if (t) strcpy (t_string, t + 1); } } else strcpy (t_string, polite_directory_format (t_string)); if (promptvars || posixly_correct) temp = sh_backslash_quote_for_double_quotes (t_string); else temp = (char *)strcpy (xmalloc (1 + strlen (t_string)), (t_string)); goto add_string; } case 'u': if (current_user.user_name == 0) get_current_user_info (); temp = (char *)strcpy (xmalloc (1 + strlen (current_user.user_name)), (current_user.user_name)); goto add_string; case 'h': case 'H': temp = (char *)strcpy (xmalloc (1 + strlen (current_host_name)), (current_host_name)); if (c == 'h' && (t = (char *)(__extension__ (__builtin_constant_p ('.') && !__builtin_constant_p (temp) && ('.') == '\0' ? (char *) __rawmemchr (temp, '.') : __builtin_strchr (temp, '.'))))) *t = '\0'; goto add_string; case '#': temp = itos (current_command_number); goto add_string; case '!': temp = itos (history_number ()); goto add_string; case '$': t = temp = (char *)xmalloc (3); if ((promptvars || posixly_correct) && (current_user.euid != 0)) *t++ = '\\'; *t++ = current_user.euid == 0 ? '#' : '$'; *t = '\0'; goto add_string; case 'j': temp = itos (count_all_jobs ()); goto add_string; case 'l': temp = (char *)ttyname (fileno (stdin)); t = temp ? base_pathname (temp) : "tty"; temp = (char *)strcpy (xmalloc (1 + strlen (t)), (t)); goto add_string; case '[': case ']': temp = (char *)xmalloc (3); temp[0] = '\001'; temp[1] = (c == '[') ? '\001' : '\002'; temp[2] = '\0'; goto add_string; case '\\': case 'a': case 'e': case 'r': temp = (char *)xmalloc (2); if (c == 'a') temp[0] = '\07'; else if (c == 'e') temp[0] = '\033'; else if (c == 'r') temp[0] = '\r'; else temp[0] = c; temp[1] = '\0'; goto add_string; default: not_escape: temp = (char *)xmalloc (3); temp[0] = '\\'; temp[1] = c; temp[2] = '\0'; add_string: if (c) string++; result = sub_append_string (temp, result, &result_index, &result_size); temp = (char *)((void *)0); result[result_index] = '\0'; break; } } else { do { if ((result_index) + (3) >= result_size) { while ((result_index) + (3) >= result_size) result_size += (48); result = xrealloc (result, result_size); } } while (0); result[result_index++] = c; result[result_index] = '\0'; } } save_dstack = dstack; dstack = temp_dstack; dstack.delimiter_depth = 0; if (promptvars || posixly_correct) { last_exit_value = last_command_exit_value; list = expand_prompt_string (result, 0x1); free (result); result = string_list (list); dispose_words (list); last_command_exit_value = last_exit_value; } else { t = dequote_string (result); free (result); result = t; } dstack = save_dstack; return (result); } # 4114 "./parse.y" int yyerror (msg) const char *msg; { report_syntax_error ((char *)((void *)0)); reset_parser (); return (0); } static char * error_token_from_token (token) int token; { char *t; if (t = find_token_in_alist (token, word_token_alist, 0)) return t; if (t = find_token_in_alist (token, other_token_alist, 0)) return t; t = (char *)((void *)0); switch (current_token) { case 279: case 280: if (yylval.word) t = (char *)strcpy (xmalloc (1 + strlen (yylval.word->word)), (yylval.word->word)); break; case 281: t = itos (yylval.number); break; case 282: if (yylval.word_list) t = string_list (yylval.word_list); break; case 283: if (yylval.word_list) t = string_list_internal (yylval.word_list, " ; "); break; case 284: t = (char *)((void *)0); break; } return t; } static char * error_token_from_text () { char *msg, *t; int token_end, i; t = shell_input_line; i = shell_input_line_index; token_end = 0; msg = (char *)((void *)0); if (i && t[i] == '\0') i--; while (i && ((((t[i]) == ' ') || ((t[i]) == '\t')) || t[i] == '\n')) i--; if (i) token_end = i + 1; while (i && (((t[i]) ? ((char *)xstrchr ((" \n\t;|&"), (t[i])) != (char *)((void *)0)) : 0) == 0)) i--; while (i != token_end && ((((t[i]) == ' ') || ((t[i]) == '\t')) || t[i] == '\n')) i++; if (token_end || (i == 0 && token_end == 0)) { if (token_end) msg = substring (t, i, token_end); else { msg = (char *)xmalloc (2); msg[0] = t[i]; msg[1] = '\0'; } } return (msg); } static void print_offending_line () { char *msg; int token_end; msg = (char *)strcpy (xmalloc (1 + strlen (shell_input_line)), (shell_input_line)); token_end = strlen (msg); while (token_end && msg[token_end - 1] == '\n') msg[--token_end] = '\0'; parser_error (line_number, "`%s'", msg); free (msg); } static void report_syntax_error (message) char *message; { char *msg; if (message) { parser_error (line_number, "%s", message); if (interactive && EOF_Reached) EOF_Reached = 0; last_command_exit_value = 258; return; } if (current_token != 0 && EOF_Reached == 0 && (msg = error_token_from_token (current_token))) { parser_error (line_number, "syntax error near unexpected token `%s'", msg); free (msg); if (interactive == 0) print_offending_line (); last_command_exit_value = 258; return; } if (shell_input_line && *shell_input_line) { msg = error_token_from_text (); if (msg) { parser_error (line_number, "syntax error near `%s'", msg); free (msg); } if (interactive == 0) print_offending_line (); } else { msg = EOF_Reached ? "syntax error: unexpected end of file" : "syntax error"; parser_error (line_number, "%s", msg); if (interactive && EOF_Reached) EOF_Reached = 0; } last_command_exit_value = 258; } static void discard_parser_constructs (error_p) int error_p; { } # 4304 "./parse.y" int ignoreeof = 0; int eof_encountered = 0; int eof_encountered_limit = 10; static void handle_eof_input_unit () { if (interactive) { if (EOF_Reached) EOF_Reached = 0; if (ignoreeof) { if (eof_encountered < eof_encountered_limit) { fprintf (stderr, "Use \"%s\" to leave the shell.\n", login_shell ? "logout" : "exit"); eof_encountered++; last_read_token = current_token = '\n'; prompt_string_pointer = (char **)((void *)0); prompt_again (); return; } } reset_parser (); exit_builtin ((WORD_LIST *)((void *)0)); } else { EOF_Reached = 1; } } # 4366 "./parse.y" static WORD_LIST parse_string_error; WORD_LIST * parse_string_to_word_list (s, whom) char *s; const char *whom; { WORD_LIST *wl; int tok, orig_current_token, orig_line_number, orig_input_terminator; int orig_line_count; int old_echo_input, old_expand_aliases; int old_remember_on_history, old_history_expansion_inhibited; old_remember_on_history = remember_on_history; old_history_expansion_inhibited = history_expansion_inhibited; bash_history_disable (); orig_line_number = line_number; orig_line_count = current_command_line_count; orig_input_terminator = shell_input_line_terminator; old_echo_input = echo_input_at_read; old_expand_aliases = expand_aliases; push_stream (1); last_read_token = 279; current_command_line_count = 0; echo_input_at_read = expand_aliases = 0; with_input_from_string (s, whom); wl = (WORD_LIST *)((void *)0); while ((tok = read_token (0)) != 297) { if (tok == '\n' && *bash_input.location.string == '\0') break; if (tok == '\n') continue; if (tok != 279 && tok != 280) { line_number = orig_line_number + line_number - 1; orig_current_token = current_token; current_token = tok; yyerror ((char *)((void *)0)); current_token = orig_current_token; if (wl) dispose_words (wl); wl = &parse_string_error; break; } wl = make_word_list (yylval.word, wl); } last_read_token = '\n'; pop_stream (); remember_on_history = old_remember_on_history; history_expansion_inhibited = old_history_expansion_inhibited; echo_input_at_read = old_echo_input; expand_aliases = old_expand_aliases; current_command_line_count = orig_line_count; shell_input_line_terminator = orig_input_terminator; if (wl == &parse_string_error) { last_command_exit_value = 1; if (interactive_shell == 0 && posixly_correct) jump_to_top_level (1); else jump_to_top_level (2); } return (((wl && wl->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)wl) : (WORD_LIST *)(wl))); } static char * parse_compound_assignment (retlenp) int *retlenp; { WORD_LIST *wl, *rl; int tok, orig_line_number, orig_token_size; char *saved_token, *ret; saved_token = token; orig_token_size = token_buffer_size; orig_line_number = line_number; last_read_token = 279; token = (char *)((void *)0); token_buffer_size = 0; wl = (WORD_LIST *)((void *)0); while ((tok = read_token (0)) != ')') { if (tok == '\n') continue; if (tok != 279 && tok != 280) { current_token = tok; if (tok == 297) parser_error (orig_line_number, "unexpected EOF while looking for matching `)'"); else yyerror ((char *)((void *)0)); if (wl) dispose_words (wl); wl = &parse_string_error; break; } wl = make_word_list (yylval.word, wl); } do { if (token) free (token); } while (0); token = saved_token; token_buffer_size = orig_token_size; if (wl == &parse_string_error) { last_command_exit_value = 1; last_read_token = '\n'; if (interactive_shell == 0 && posixly_correct) jump_to_top_level (1); else jump_to_top_level (2); } last_read_token = 279; if (wl) { rl = ((wl && wl->next) ? (WORD_LIST *)list_reverse ((GENERIC_LIST *)wl) : (WORD_LIST *)(wl)); ret = string_list (rl); dispose_words (rl); } else ret = (char *)((void *)0); if (retlenp) *retlenp = (ret && *ret) ? strlen (ret) : 0; return ret; } # 4526 "./parse.y" static void set_line_mbstate () { int i, previ, len; mbstate_t mbs, prevs; size_t mbclen; if (shell_input_line == ((void *)0)) return; len = strlen (shell_input_line); do { if (shell_input_line_property) free (shell_input_line_property); } while (0); shell_input_line_property = (char *)xmalloc (len + 1); memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) { mbs = prevs; if (shell_input_line[i] == (-1)) { int j; for (j = i; j < len; j++) shell_input_line_property[j] = 1; break; } mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); if (mbclen == 1 || mbclen == (size_t)-1) { mbclen = 1; previ = i + 1; } else if (mbclen == (size_t)-2) mbclen = 0; else if (mbclen > 1) { mbclen = 0; previ = i + 1; prevs = mbs; } else { } shell_input_line_property[i] = mbclen; } }