auto import from //depot/cupcake/@135843
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();
+      }
+}