Initial Contribution
diff --git a/sh/init.c b/sh/init.c
new file mode 100644
index 0000000..55ad172
--- /dev/null
+++ b/sh/init.c
@@ -0,0 +1,1090 @@
+/*
+ * This file was generated by the mkinit program.
+ */
+
+#include "shell.h"
+#include "mystring.h"
+#include "init.h"
+#include "eval.h"
+#include <stdio.h>
+#include "input.h"
+#include "error.h"
+#include <stdlib.h>
+#include "options.h"
+#include "redir.h"
+#include <signal.h>
+#include "trap.h"
+#include "output.h"
+#include "memalloc.h"
+#include "var.h"
+
+
+
+#undef ATABSIZE
+#define ATABSIZE 39
+#undef YYBISON
+#define YYBISON 1
+#undef YYSKELETON_NAME
+#define YYSKELETON_NAME "yacc.c"
+#undef YYPURE
+#define YYPURE 0
+#undef YYLSP_NEEDED
+#define YYLSP_NEEDED 0
+#undef ARITH_NUM
+#define ARITH_NUM 258
+#undef ARITH_LPAREN
+#define ARITH_LPAREN 259
+#undef ARITH_RPAREN
+#define ARITH_RPAREN 260
+#undef ARITH_OR
+#define ARITH_OR 261
+#undef ARITH_AND
+#define ARITH_AND 262
+#undef ARITH_BOR
+#define ARITH_BOR 263
+#undef ARITH_BXOR
+#define ARITH_BXOR 264
+#undef ARITH_BAND
+#define ARITH_BAND 265
+#undef ARITH_NE
+#define ARITH_NE 266
+#undef ARITH_EQ
+#define ARITH_EQ 267
+#undef ARITH_LE
+#define ARITH_LE 268
+#undef ARITH_GE
+#define ARITH_GE 269
+#undef ARITH_GT
+#define ARITH_GT 270
+#undef ARITH_LT
+#define ARITH_LT 271
+#undef ARITH_RSHIFT
+#define ARITH_RSHIFT 272
+#undef ARITH_LSHIFT
+#define ARITH_LSHIFT 273
+#undef ARITH_SUB
+#define ARITH_SUB 274
+#undef ARITH_ADD
+#define ARITH_ADD 275
+#undef ARITH_REM
+#define ARITH_REM 276
+#undef ARITH_DIV
+#define ARITH_DIV 277
+#undef ARITH_MUL
+#define ARITH_MUL 278
+#undef ARITH_BNOT
+#define ARITH_BNOT 279
+#undef ARITH_NOT
+#define ARITH_NOT 280
+#undef ARITH_UNARYPLUS
+#define ARITH_UNARYPLUS 281
+#undef ARITH_UNARYMINUS
+#define ARITH_UNARYMINUS 282
+#undef YYFINAL
+#define YYFINAL 14
+#undef YYLAST
+#define YYLAST 170
+#undef YYNTOKENS
+#define YYNTOKENS 28
+#undef YYNNTS
+#define YYNNTS 3
+#undef YYNRULES
+#define YYNRULES 26
+#undef YYNSTATES
+#define YYNSTATES 52
+#undef YYUNDEFTOK
+#define YYUNDEFTOK 2
+#undef YYMAXUTOK
+#define YYMAXUTOK 282
+#undef YYPACT_NINF
+#define YYPACT_NINF -13
+#undef YYTABLE_NINF
+#define YYTABLE_NINF -1
+#undef yyerrok
+#define yyerrok (yyerrstatus = 0)
+#undef yyclearin
+#define yyclearin (yychar = YYEMPTY)
+#undef YYEMPTY
+#define YYEMPTY (-2)
+#undef YYEOF
+#define YYEOF 0
+#undef YYACCEPT
+#define YYACCEPT goto yyacceptlab
+#undef YYABORT
+#define YYABORT goto yyabortlab
+#undef YYERROR
+#define YYERROR goto yyerrorlab
+#undef YYFAIL
+#define YYFAIL goto yyerrlab
+#undef YYTERROR
+#define YYTERROR 1
+#undef YYERRCODE
+#define YYERRCODE 256
+#undef YYPOPSTACK
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#undef YY_INT_ALIGNED
+#define YY_INT_ALIGNED short int
+#undef FLEX_SCANNER
+#define FLEX_SCANNER
+#undef YY_FLEX_MAJOR_VERSION
+#define YY_FLEX_MAJOR_VERSION 2
+#undef YY_FLEX_MINOR_VERSION
+#define YY_FLEX_MINOR_VERSION 5
+#undef YY_FLEX_SUBMINOR_VERSION
+#define YY_FLEX_SUBMINOR_VERSION 31
+#undef FLEX_BETA
+#define FLEX_BETA
+#undef FLEXINT_H
+#define FLEXINT_H
+#undef INT8_MIN
+#define INT8_MIN (-128)
+#undef INT16_MIN
+#define INT16_MIN (-32767-1)
+#undef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#undef INT8_MAX
+#define INT8_MAX (127)
+#undef INT16_MAX
+#define INT16_MAX (32767)
+#undef INT32_MAX
+#define INT32_MAX (2147483647)
+#undef UINT8_MAX
+#define UINT8_MAX (255U)
+#undef UINT16_MAX
+#define UINT16_MAX (65535U)
+#undef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef yyconst
+#define yyconst const
+#undef yyconst
+#define yyconst
+#undef YY_NULL
+#define YY_NULL 0
+#undef BEGIN
+#define BEGIN (yy_start) = 1 + 2 *
+#undef YY_START
+#define YY_START (((yy_start) - 1) / 2)
+#undef YYSTATE
+#define YYSTATE YY_START
+#undef YY_NEW_FILE
+#define YY_NEW_FILE yyrestart(yyin )
+#undef YY_END_OF_BUFFER_CHAR
+#define YY_END_OF_BUFFER_CHAR 0
+#undef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#undef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+#undef EOB_ACT_CONTINUE_SCAN
+#define EOB_ACT_CONTINUE_SCAN 0
+#undef EOB_ACT_END_OF_FILE
+#define EOB_ACT_END_OF_FILE 1
+#undef EOB_ACT_LAST_MATCH
+#define EOB_ACT_LAST_MATCH 2
+#undef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+#undef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+#undef YY_BUFFER_NEW
+#define YY_BUFFER_NEW 0
+#undef YY_BUFFER_NORMAL
+#define YY_BUFFER_NORMAL 1
+#undef YY_BUFFER_EOF_PENDING
+#define YY_BUFFER_EOF_PENDING 2
+#undef YY_CURRENT_BUFFER
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+#undef YY_CURRENT_BUFFER_LVALUE
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+#undef YY_FLUSH_BUFFER
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+#undef yy_new_buffer
+#define yy_new_buffer yy_create_buffer
+#undef YY_SKIP_YYWRAP
+#define YY_SKIP_YYWRAP
+#undef yytext_ptr
+#define yytext_ptr yytext
+#undef YY_DO_BEFORE_ACTION
+#define YY_DO_BEFORE_ACTION \
+#undef YY_NUM_RULES
+#define YY_NUM_RULES 29
+#undef YY_END_OF_BUFFER
+#define YY_END_OF_BUFFER 30
+#undef REJECT
+#define REJECT reject_used_but_not_detected
+#undef YY_MORE_ADJ
+#define YY_MORE_ADJ 0
+#undef YY_RESTORE_YY_MORE_OFFSET
+#define YY_RESTORE_YY_MORE_OFFSET
+#undef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#undef INITIAL
+#define INITIAL 0
+#undef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#undef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#undef ECHO
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#undef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#undef YY_DECL_IS_OURS
+#define YY_DECL_IS_OURS 1
+#undef YY_DECL
+#define YY_DECL int yylex (void)
+#undef YY_USER_ACTION
+#define YY_USER_ACTION
+#undef YY_BREAK
+#define YY_BREAK break;
+#undef YY_RULE_SETUP
+#define YY_RULE_SETUP \
+#undef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#undef YYTABLES_NAME
+#define YYTABLES_NAME "yytables"
+#undef MAXPWD
+#define MAXPWD 256
+#undef signal
+#define signal bsd_signal
+#undef ALL
+#define ALL (E_OPEN|E_CREAT|E_EXEC)
+#undef EV_EXIT
+#define EV_EXIT 01 /* exit after evaluating tree */
+#undef EV_TESTED
+#define EV_TESTED 02 /* exit status is checked; ignore -e flag */
+#undef EV_BACKCMD
+#define EV_BACKCMD 04 /* command executing within back quotes */
+#undef CMDTABLESIZE
+#define CMDTABLESIZE 31 /* should be prime */
+#undef ARB
+#define ARB 1 /* actual size determined at run time */
+#undef NEWARGS
+#define NEWARGS 5
+#undef EOF_NLEFT
+#define EOF_NLEFT -99 /* value of parsenleft when EOF pushed back */
+#undef _PATH_DEVNULL
+#define _PATH_DEVNULL "/dev/null"
+#undef PROFILE
+#define PROFILE 0
+#undef SIGSSIZE
+#define SIGSSIZE (sizeof(sigs)/sizeof(sigs[0]))
+#undef MINSIZE
+#define MINSIZE 504 /* minimum size of a block */
+#undef DEFINE_OPTIONS
+#define DEFINE_OPTIONS
+#undef EOFMARKLEN
+#define EOFMARKLEN 79
+#undef OPENBRACE
+#define OPENBRACE '{'
+#undef CLOSEBRACE
+#define CLOSEBRACE '}'
+#undef EMPTY
+#define EMPTY -2 /* marks an unused slot in redirtab */
+#undef signal
+#define signal bsd_signal
+#undef sys_signame
+#define sys_signame sys_siglist
+#undef S_DFL
+#define S_DFL 1 /* default signal handling (SIG_DFL) */
+#undef S_CATCH
+#define S_CATCH 2 /* signal is caught */
+#undef S_IGN
+#define S_IGN 3 /* signal is ignored (SIG_IGN) */
+#undef S_HARD_IGN
+#define S_HARD_IGN 4 /* signal is ignored permenantly */
+#undef S_RESET
+#define S_RESET 5 /* temporary - to reset a hard ignored sig */
+#undef OUTBUFSIZ
+#define OUTBUFSIZ BUFSIZ
+#undef BLOCK_OUT
+#define BLOCK_OUT -2 /* output to a fixed block of memory */
+#undef MEM_OUT
+#define MEM_OUT -3 /* output to dynamically allocated memory */
+#undef OUTPUT_ERR
+#define OUTPUT_ERR 01 /* error occurred on output */
+#undef TEMPSIZE
+#define TEMPSIZE 24
+#undef HAVE_VASPRINTF
+#define HAVE_VASPRINTF 1
+#undef VTABSIZE
+#define VTABSIZE 39
+#undef VTABSIZE
+#define VTABSIZE 517
+#undef ATABSIZE
+#define ATABSIZE 39
+#undef YYBISON
+#define YYBISON 1
+#undef YYSKELETON_NAME
+#define YYSKELETON_NAME "yacc.c"
+#undef YYPURE
+#define YYPURE 0
+#undef YYLSP_NEEDED
+#define YYLSP_NEEDED 0
+#undef ARITH_NUM
+#define ARITH_NUM 258
+#undef ARITH_LPAREN
+#define ARITH_LPAREN 259
+#undef ARITH_RPAREN
+#define ARITH_RPAREN 260
+#undef ARITH_OR
+#define ARITH_OR 261
+#undef ARITH_AND
+#define ARITH_AND 262
+#undef ARITH_BOR
+#define ARITH_BOR 263
+#undef ARITH_BXOR
+#define ARITH_BXOR 264
+#undef ARITH_BAND
+#define ARITH_BAND 265
+#undef ARITH_NE
+#define ARITH_NE 266
+#undef ARITH_EQ
+#define ARITH_EQ 267
+#undef ARITH_LE
+#define ARITH_LE 268
+#undef ARITH_GE
+#define ARITH_GE 269
+#undef ARITH_GT
+#define ARITH_GT 270
+#undef ARITH_LT
+#define ARITH_LT 271
+#undef ARITH_RSHIFT
+#define ARITH_RSHIFT 272
+#undef ARITH_LSHIFT
+#define ARITH_LSHIFT 273
+#undef ARITH_SUB
+#define ARITH_SUB 274
+#undef ARITH_ADD
+#define ARITH_ADD 275
+#undef ARITH_REM
+#define ARITH_REM 276
+#undef ARITH_DIV
+#define ARITH_DIV 277
+#undef ARITH_MUL
+#define ARITH_MUL 278
+#undef ARITH_BNOT
+#define ARITH_BNOT 279
+#undef ARITH_NOT
+#define ARITH_NOT 280
+#undef ARITH_UNARYPLUS
+#define ARITH_UNARYPLUS 281
+#undef ARITH_UNARYMINUS
+#define ARITH_UNARYMINUS 282
+#undef YYFINAL
+#define YYFINAL 14
+#undef YYLAST
+#define YYLAST 170
+#undef YYNTOKENS
+#define YYNTOKENS 28
+#undef YYNNTS
+#define YYNNTS 3
+#undef YYNRULES
+#define YYNRULES 26
+#undef YYNSTATES
+#define YYNSTATES 52
+#undef YYUNDEFTOK
+#define YYUNDEFTOK 2
+#undef YYMAXUTOK
+#define YYMAXUTOK 282
+#undef YYPACT_NINF
+#define YYPACT_NINF -13
+#undef YYTABLE_NINF
+#define YYTABLE_NINF -1
+#undef yyerrok
+#define yyerrok (yyerrstatus = 0)
+#undef yyclearin
+#define yyclearin (yychar = YYEMPTY)
+#undef YYEMPTY
+#define YYEMPTY (-2)
+#undef YYEOF
+#define YYEOF 0
+#undef YYACCEPT
+#define YYACCEPT goto yyacceptlab
+#undef YYABORT
+#define YYABORT goto yyabortlab
+#undef YYERROR
+#define YYERROR goto yyerrorlab
+#undef YYFAIL
+#define YYFAIL goto yyerrlab
+#undef YYTERROR
+#define YYTERROR 1
+#undef YYERRCODE
+#define YYERRCODE 256
+#undef YYPOPSTACK
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#undef YY_INT_ALIGNED
+#define YY_INT_ALIGNED short int
+#undef FLEX_SCANNER
+#define FLEX_SCANNER
+#undef YY_FLEX_MAJOR_VERSION
+#define YY_FLEX_MAJOR_VERSION 2
+#undef YY_FLEX_MINOR_VERSION
+#define YY_FLEX_MINOR_VERSION 5
+#undef YY_FLEX_SUBMINOR_VERSION
+#define YY_FLEX_SUBMINOR_VERSION 31
+#undef FLEX_BETA
+#define FLEX_BETA
+#undef FLEXINT_H
+#define FLEXINT_H
+#undef INT8_MIN
+#define INT8_MIN (-128)
+#undef INT16_MIN
+#define INT16_MIN (-32767-1)
+#undef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#undef INT8_MAX
+#define INT8_MAX (127)
+#undef INT16_MAX
+#define INT16_MAX (32767)
+#undef INT32_MAX
+#define INT32_MAX (2147483647)
+#undef UINT8_MAX
+#define UINT8_MAX (255U)
+#undef UINT16_MAX
+#define UINT16_MAX (65535U)
+#undef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef yyconst
+#define yyconst const
+#undef yyconst
+#define yyconst
+#undef YY_NULL
+#define YY_NULL 0
+#undef BEGIN
+#define BEGIN (yy_start) = 1 + 2 *
+#undef YY_START
+#define YY_START (((yy_start) - 1) / 2)
+#undef YYSTATE
+#define YYSTATE YY_START
+#undef YY_NEW_FILE
+#define YY_NEW_FILE yyrestart(yyin )
+#undef YY_END_OF_BUFFER_CHAR
+#define YY_END_OF_BUFFER_CHAR 0
+#undef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#undef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+#undef EOB_ACT_CONTINUE_SCAN
+#define EOB_ACT_CONTINUE_SCAN 0
+#undef EOB_ACT_END_OF_FILE
+#define EOB_ACT_END_OF_FILE 1
+#undef EOB_ACT_LAST_MATCH
+#define EOB_ACT_LAST_MATCH 2
+#undef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+#undef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+#undef YY_BUFFER_NEW
+#define YY_BUFFER_NEW 0
+#undef YY_BUFFER_NORMAL
+#define YY_BUFFER_NORMAL 1
+#undef YY_BUFFER_EOF_PENDING
+#define YY_BUFFER_EOF_PENDING 2
+#undef YY_CURRENT_BUFFER
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+#undef YY_CURRENT_BUFFER_LVALUE
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+#undef YY_FLUSH_BUFFER
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+#undef yy_new_buffer
+#define yy_new_buffer yy_create_buffer
+#undef YY_SKIP_YYWRAP
+#define YY_SKIP_YYWRAP
+#undef yytext_ptr
+#define yytext_ptr yytext
+#undef YY_DO_BEFORE_ACTION
+#define YY_DO_BEFORE_ACTION \
+#undef YY_NUM_RULES
+#define YY_NUM_RULES 29
+#undef YY_END_OF_BUFFER
+#define YY_END_OF_BUFFER 30
+#undef REJECT
+#define REJECT reject_used_but_not_detected
+#undef YY_MORE_ADJ
+#define YY_MORE_ADJ 0
+#undef YY_RESTORE_YY_MORE_OFFSET
+#define YY_RESTORE_YY_MORE_OFFSET
+#undef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#undef INITIAL
+#define INITIAL 0
+#undef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#undef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#undef ECHO
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#undef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#undef YY_DECL_IS_OURS
+#define YY_DECL_IS_OURS 1
+#undef YY_DECL
+#define YY_DECL int yylex (void)
+#undef YY_USER_ACTION
+#define YY_USER_ACTION
+#undef YY_BREAK
+#define YY_BREAK break;
+#undef YY_RULE_SETUP
+#define YY_RULE_SETUP \
+#undef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#undef YYTABLES_NAME
+#define YYTABLES_NAME "yytables"
+#undef MAXPWD
+#define MAXPWD 256
+#undef signal
+#define signal bsd_signal
+#undef ALL
+#define ALL (E_OPEN|E_CREAT|E_EXEC)
+#undef EV_EXIT
+#define EV_EXIT 01 /* exit after evaluating tree */
+#undef EV_TESTED
+#define EV_TESTED 02 /* exit status is checked; ignore -e flag */
+#undef EV_BACKCMD
+#define EV_BACKCMD 04 /* command executing within back quotes */
+#undef CMDTABLESIZE
+#define CMDTABLESIZE 31 /* should be prime */
+#undef ARB
+#define ARB 1 /* actual size determined at run time */
+#undef NEWARGS
+#define NEWARGS 5
+#undef EOF_NLEFT
+#define EOF_NLEFT -99 /* value of parsenleft when EOF pushed back */
+#undef _PATH_DEVNULL
+#define _PATH_DEVNULL "/dev/null"
+#undef PROFILE
+#define PROFILE 0
+#undef SIGSSIZE
+#define SIGSSIZE (sizeof(sigs)/sizeof(sigs[0]))
+#undef MINSIZE
+#define MINSIZE 504 /* minimum size of a block */
+#undef DEFINE_OPTIONS
+#define DEFINE_OPTIONS
+#undef EOFMARKLEN
+#define EOFMARKLEN 79
+#undef OPENBRACE
+#define OPENBRACE '{'
+#undef CLOSEBRACE
+#define CLOSEBRACE '}'
+#undef EMPTY
+#define EMPTY -2 /* marks an unused slot in redirtab */
+#undef signal
+#define signal bsd_signal
+#undef sys_signame
+#define sys_signame sys_siglist
+#undef S_DFL
+#define S_DFL 1 /* default signal handling (SIG_DFL) */
+#undef S_CATCH
+#define S_CATCH 2 /* signal is caught */
+#undef S_IGN
+#define S_IGN 3 /* signal is ignored (SIG_IGN) */
+#undef S_HARD_IGN
+#define S_HARD_IGN 4 /* signal is ignored permenantly */
+#undef S_RESET
+#define S_RESET 5 /* temporary - to reset a hard ignored sig */
+#undef OUTBUFSIZ
+#define OUTBUFSIZ BUFSIZ
+#undef BLOCK_OUT
+#define BLOCK_OUT -2 /* output to a fixed block of memory */
+#undef MEM_OUT
+#define MEM_OUT -3 /* output to dynamically allocated memory */
+#undef OUTPUT_ERR
+#define OUTPUT_ERR 01 /* error occurred on output */
+#undef TEMPSIZE
+#define TEMPSIZE 24
+#undef HAVE_VASPRINTF
+#define HAVE_VASPRINTF 1
+#undef VTABSIZE
+#define VTABSIZE 39
+#undef VTABSIZE
+#define VTABSIZE 517
+#undef main
+#define main echocmd
+#undef YYBISON
+#define YYBISON 1
+#undef YYSKELETON_NAME
+#define YYSKELETON_NAME "yacc.c"
+#undef YYPURE
+#define YYPURE 0
+#undef YYLSP_NEEDED
+#define YYLSP_NEEDED 0
+#undef ARITH_NUM
+#define ARITH_NUM 258
+#undef ARITH_LPAREN
+#define ARITH_LPAREN 259
+#undef ARITH_RPAREN
+#define ARITH_RPAREN 260
+#undef ARITH_OR
+#define ARITH_OR 261
+#undef ARITH_AND
+#define ARITH_AND 262
+#undef ARITH_BOR
+#define ARITH_BOR 263
+#undef ARITH_BXOR
+#define ARITH_BXOR 264
+#undef ARITH_BAND
+#define ARITH_BAND 265
+#undef ARITH_NE
+#define ARITH_NE 266
+#undef ARITH_EQ
+#define ARITH_EQ 267
+#undef ARITH_LE
+#define ARITH_LE 268
+#undef ARITH_GE
+#define ARITH_GE 269
+#undef ARITH_GT
+#define ARITH_GT 270
+#undef ARITH_LT
+#define ARITH_LT 271
+#undef ARITH_RSHIFT
+#define ARITH_RSHIFT 272
+#undef ARITH_LSHIFT
+#define ARITH_LSHIFT 273
+#undef ARITH_SUB
+#define ARITH_SUB 274
+#undef ARITH_ADD
+#define ARITH_ADD 275
+#undef ARITH_REM
+#define ARITH_REM 276
+#undef ARITH_DIV
+#define ARITH_DIV 277
+#undef ARITH_MUL
+#define ARITH_MUL 278
+#undef ARITH_BNOT
+#define ARITH_BNOT 279
+#undef ARITH_NOT
+#define ARITH_NOT 280
+#undef ARITH_UNARYPLUS
+#define ARITH_UNARYPLUS 281
+#undef ARITH_UNARYMINUS
+#define ARITH_UNARYMINUS 282
+#undef YYFINAL
+#define YYFINAL 14
+#undef YYLAST
+#define YYLAST 170
+#undef YYNTOKENS
+#define YYNTOKENS 28
+#undef YYNNTS
+#define YYNNTS 3
+#undef YYNRULES
+#define YYNRULES 26
+#undef YYNSTATES
+#define YYNSTATES 52
+#undef YYUNDEFTOK
+#define YYUNDEFTOK 2
+#undef YYMAXUTOK
+#define YYMAXUTOK 282
+#undef YYPACT_NINF
+#define YYPACT_NINF -13
+#undef YYTABLE_NINF
+#define YYTABLE_NINF -1
+#undef yyerrok
+#define yyerrok (yyerrstatus = 0)
+#undef yyclearin
+#define yyclearin (yychar = YYEMPTY)
+#undef YYEMPTY
+#define YYEMPTY (-2)
+#undef YYEOF
+#define YYEOF 0
+#undef YYACCEPT
+#define YYACCEPT goto yyacceptlab
+#undef YYABORT
+#define YYABORT goto yyabortlab
+#undef YYERROR
+#define YYERROR goto yyerrorlab
+#undef YYFAIL
+#define YYFAIL goto yyerrlab
+#undef YYTERROR
+#define YYTERROR 1
+#undef YYERRCODE
+#define YYERRCODE 256
+#undef YYPOPSTACK
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#undef YY_INT_ALIGNED
+#define YY_INT_ALIGNED short int
+#undef FLEX_SCANNER
+#define FLEX_SCANNER
+#undef YY_FLEX_MAJOR_VERSION
+#define YY_FLEX_MAJOR_VERSION 2
+#undef YY_FLEX_MINOR_VERSION
+#define YY_FLEX_MINOR_VERSION 5
+#undef YY_FLEX_SUBMINOR_VERSION
+#define YY_FLEX_SUBMINOR_VERSION 31
+#undef FLEX_BETA
+#define FLEX_BETA
+#undef FLEXINT_H
+#define FLEXINT_H
+#undef INT8_MIN
+#define INT8_MIN (-128)
+#undef INT16_MIN
+#define INT16_MIN (-32767-1)
+#undef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#undef INT8_MAX
+#define INT8_MAX (127)
+#undef INT16_MAX
+#define INT16_MAX (32767)
+#undef INT32_MAX
+#define INT32_MAX (2147483647)
+#undef UINT8_MAX
+#define UINT8_MAX (255U)
+#undef UINT16_MAX
+#define UINT16_MAX (65535U)
+#undef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef YY_USE_CONST
+#define YY_USE_CONST
+#undef yyconst
+#define yyconst const
+#undef yyconst
+#define yyconst
+#undef YY_NULL
+#define YY_NULL 0
+#undef BEGIN
+#define BEGIN (yy_start) = 1 + 2 *
+#undef YY_START
+#define YY_START (((yy_start) - 1) / 2)
+#undef YYSTATE
+#define YYSTATE YY_START
+#undef YY_NEW_FILE
+#define YY_NEW_FILE yyrestart(yyin )
+#undef YY_END_OF_BUFFER_CHAR
+#define YY_END_OF_BUFFER_CHAR 0
+#undef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#undef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+#undef EOB_ACT_CONTINUE_SCAN
+#define EOB_ACT_CONTINUE_SCAN 0
+#undef EOB_ACT_END_OF_FILE
+#define EOB_ACT_END_OF_FILE 1
+#undef EOB_ACT_LAST_MATCH
+#define EOB_ACT_LAST_MATCH 2
+#undef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+#undef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+#undef YY_BUFFER_NEW
+#define YY_BUFFER_NEW 0
+#undef YY_BUFFER_NORMAL
+#define YY_BUFFER_NORMAL 1
+#undef YY_BUFFER_EOF_PENDING
+#define YY_BUFFER_EOF_PENDING 2
+#undef YY_CURRENT_BUFFER
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+#undef YY_CURRENT_BUFFER_LVALUE
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+#undef YY_FLUSH_BUFFER
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+#undef yy_new_buffer
+#define yy_new_buffer yy_create_buffer
+#undef yytext_ptr
+#define yytext_ptr yytext
+#undef YY_DO_BEFORE_ACTION
+#define YY_DO_BEFORE_ACTION \
+#undef YY_NUM_RULES
+#define YY_NUM_RULES 29
+#undef YY_END_OF_BUFFER
+#define YY_END_OF_BUFFER 30
+#undef REJECT
+#define REJECT reject_used_but_not_detected
+#undef YY_MORE_ADJ
+#define YY_MORE_ADJ 0
+#undef YY_RESTORE_YY_MORE_OFFSET
+#define YY_RESTORE_YY_MORE_OFFSET
+#undef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#undef INITIAL
+#define INITIAL 0
+#undef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#undef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#undef ECHO
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#undef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#undef YY_DECL_IS_OURS
+#define YY_DECL_IS_OURS 1
+#undef YY_DECL
+#define YY_DECL int yylex (void)
+#undef YY_USER_ACTION
+#define YY_USER_ACTION
+#undef YY_BREAK
+#define YY_BREAK break;
+#undef YY_RULE_SETUP
+#define YY_RULE_SETUP \
+#undef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#undef YYTABLES_NAME
+#define YYTABLES_NAME "yytables"
+#undef MAXPWD
+#define MAXPWD 256
+#undef ALL
+#define ALL (E_OPEN|E_CREAT|E_EXEC)
+#undef EV_EXIT
+#define EV_EXIT 01 /* exit after evaluating tree */
+#undef EV_TESTED
+#define EV_TESTED 02 /* exit status is checked; ignore -e flag */
+#undef EV_BACKCMD
+#define EV_BACKCMD 04 /* command executing within back quotes */
+#undef CMDTABLESIZE
+#define CMDTABLESIZE 31 /* should be prime */
+#undef ARB
+#define ARB 1 /* actual size determined at run time */
+#undef NEWARGS
+#define NEWARGS 5
+#undef EOF_NLEFT
+#define EOF_NLEFT -99 /* value of parsenleft when EOF pushed back */
+#undef _PATH_DEVNULL
+#define _PATH_DEVNULL "/dev/null"
+#undef PROFILE
+#define PROFILE 0
+#undef SIGSSIZE
+#define SIGSSIZE (sizeof(sigs)/sizeof(sigs[0]))
+#undef MINSIZE
+#define MINSIZE 504 /* minimum size of a block */
+#undef DEFINE_OPTIONS
+#define DEFINE_OPTIONS
+#undef EOFMARKLEN
+#define EOFMARKLEN 79
+#undef OPENBRACE
+#define OPENBRACE '{'
+#undef CLOSEBRACE
+#define CLOSEBRACE '}'
+#undef EMPTY
+#define EMPTY -2 /* marks an unused slot in redirtab */
+#undef S_DFL
+#define S_DFL 1 /* default signal handling (SIG_DFL) */
+#undef S_CATCH
+#define S_CATCH 2 /* signal is caught */
+#undef S_IGN
+#define S_IGN 3 /* signal is ignored (SIG_IGN) */
+#undef S_HARD_IGN
+#define S_HARD_IGN 4 /* signal is ignored permenantly */
+#undef S_RESET
+#define S_RESET 5 /* temporary - to reset a hard ignored sig */
+#undef OUTBUFSIZ
+#define OUTBUFSIZ BUFSIZ
+#undef BLOCK_OUT
+#define BLOCK_OUT -2 /* output to a fixed block of memory */
+#undef MEM_OUT
+#define MEM_OUT -3 /* output to dynamically allocated memory */
+#undef OUTPUT_ERR
+#define OUTPUT_ERR 01 /* error occurred on output */
+#undef TEMPSIZE
+#define TEMPSIZE 24
+#undef HAVE_VASPRINTF
+#define HAVE_VASPRINTF 1
+#undef VTABSIZE
+#define VTABSIZE 39
+#undef VTABSIZE
+#define VTABSIZE 517
+#undef main
+#define main echocmd
+
+
+
+extern void rmaliases(void);
+
+extern int loopnest; /* current loop nesting level */
+
+extern void deletefuncs(void);
+extern void hash_special_builtins(void);
+
+struct strpush {
+ struct strpush *prev; /* preceding string on stack */
+ char *prevstring;
+ int prevnleft;
+ int prevlleft;
+ struct alias *ap; /* if push was associated with an alias */
+};
+
+struct parsefile {
+ struct parsefile *prev; /* preceding file on stack */
+ int linno; /* current line */
+ int fd; /* file descriptor (or -1 if string) */
+ int nleft; /* number of chars left in this line */
+ int lleft; /* number of chars left in this buffer */
+ char *nextc; /* next char in buffer */
+ char *buf; /* input buffer */
+ struct strpush *strpush; /* for pushing strings at this level */
+ struct strpush basestrpush; /* so pushing one is fast */
+};
+
+extern int parselleft; /* copy of parsefile->lleft */
+extern struct parsefile basepf; /* top level input file */
+extern char basebuf[BUFSIZ]; /* buffer for top level input file */
+
+extern pid_t backgndpid; /* pid of last background process */
+extern int jobctl;
+
+extern int tokpushback; /* last token pushed back */
+extern int checkkwd; /* 1 == check for kwds, 2 == also eat newlines */
+
+struct redirtab {
+ struct redirtab *next;
+ short renamed[10];
+};
+
+extern struct redirtab *redirlist;
+
+extern char sigmode[NSIG]; /* current value of signal */
+
+extern char **environ;
+
+
+
+/*
+ * Initialization code.
+ */
+
+void
+init() {
+
+ /* from exec.c: */
+ {
+ hash_special_builtins();
+ }
+
+ /* from input.c: */
+ {
+ basepf.nextc = basepf.buf = basebuf;
+ }
+
+ /* from var.c: */
+ {
+ char **envp;
+
+ initvar();
+ for (envp = environ ; *envp ; envp++) {
+ if (strchr(*envp, '=')) {
+ setvareq(*envp, VEXPORT|VTEXTFIXED);
+ }
+ }
+ }
+}
+
+
+
+/*
+ * This routine is called when an error or an interrupt occurs in an
+ * interactive shell and control is returned to the main command loop.
+ */
+
+void
+reset() {
+
+ /* from eval.c: */
+ {
+ evalskip = 0;
+ loopnest = 0;
+ funcnest = 0;
+ }
+
+ /* from input.c: */
+ {
+ if (exception != EXSHELLPROC)
+ parselleft = parsenleft = 0; /* clear input buffer */
+ popallfiles();
+ }
+
+ /* from parser.c: */
+ {
+ tokpushback = 0;
+ checkkwd = 0;
+ }
+
+ /* from redir.c: */
+ {
+ while (redirlist)
+ popredir();
+ }
+
+ /* from output.c: */
+ {
+ out1 = &output;
+ out2 = &errout;
+ if (memout.buf != NULL) {
+ ckfree(memout.buf);
+ memout.buf = NULL;
+ }
+ }
+}
+
+
+
+/*
+ * This routine is called to initialize the shell to run a shell procedure.
+ */
+
+void
+initshellproc() {
+
+ /* from alias.c: */
+ {
+ rmaliases();
+ }
+
+ /* from eval.c: */
+ {
+ exitstatus = 0;
+ }
+
+ /* from exec.c: */
+ {
+ deletefuncs();
+ }
+
+ /* from input.c: */
+ {
+ popallfiles();
+ }
+
+ /* from jobs.c: */
+ {
+ backgndpid = -1;
+#if JOBS
+ jobctl = 0;
+#endif
+ }
+
+ /* from options.c: */
+ {
+ int i;
+
+ for (i = 0; optlist[i].name; i++)
+ optlist[i].val = 0;
+ optschanged();
+
+ }
+
+ /* from redir.c: */
+ {
+ clearredir(0);
+ }
+
+ /* from trap.c: */
+ {
+ char *sm;
+
+ clear_traps(0);
+ for (sm = sigmode ; sm < sigmode + NSIG ; sm++) {
+ if (*sm == S_IGN)
+ *sm = S_HARD_IGN;
+ }
+ }
+
+ /* from var.c: */
+ {
+ shprocvar();
+ }
+}