(command.CommandList children: [ (C {<Id.KW_Set set>} {<-e>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:codir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [57] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_wrapper_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [60] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:run_program_env) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$3'))} spids: [65] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp1) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$codir') </iconvdata/iconv-test.xxx>} spids: [74] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp2) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$codir') </iconvdata/iconv-test.yyy>} spids: [78] ) ] ) (C {<trap>} {(DQ <'rm -f '> ($ Id.VSub_DollarName '$temp1') <' '> ($ Id.VSub_DollarName '$temp2'))} {<1>} {<2>} {<3>} {<15>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBPATH) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$codir') <Id.Lit_Other ':'> ($ Id.VSub_DollarName '$codir') </iconvdata> } spids: [104] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ICONV) op: assign_op.Equal rhs: { (SQ <'$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \\\n'> <' $codir/iconv/iconv_prog'> ) } spids: [114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ICONV) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$test_wrapper_env') <' '> ($ Id.VSub_DollarName '$run_program_env') <' '> ($ Id.VSub_DollarName '$ICONV') ) } spids: [120] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Sentence child: (C {<echo>} {(DQ <testing> <Id.Lit_Other '\\'> <c>)}) terminator: <Id.Op_Semi _> ) (C {<echo>} {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <3>}) ] ) ) (command.Simple words: [{<grep>} {<c>}] redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})] ) ] negated: F ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ac_n) op: assign_op.Equal rhs: {<-n>} spids: [167] ) (assign_pair lhs: (sh_lhs_expr.Name name:ac_c) op: assign_op.Equal rhs: (word.Empty) spids: [170] ) (assign_pair lhs: (sh_lhs_expr.Name name:ac_t) op: assign_op.Equal rhs: (word.Empty) spids: [172] ) ] ) ] spids: [133 164] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ac_n) op: assign_op.Equal rhs: (word.Empty) spids: [177] ) (assign_pair lhs: (sh_lhs_expr.Name name:ac_c) op: assign_op.Equal rhs: {(SQ <'\\c'>)} spids: [179] ) (assign_pair lhs: (sh_lhs_expr.Name name:ac_t) op: assign_op.Equal rhs: (word.Empty) spids: [184] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<0>} spids: [195] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<read>} {<from>} {<to>} {<subset>} {<targets>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$subset'))}) (C {<test>} {(DQ ($ Id.VSub_DollarName '$from'))} {<Id.Lit_Equals '='>} {(SQ <'#'>)} ) ] ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] spids: [218 243] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [(C {<eval>} {<echo>} {($ Id.VSub_DollarName '$ICONV')})] ) ) } spids: [256] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$targets'))}) terminator: <Id.Op_Semi _> ) ] action: [ (command.ForEach iter_name: t iter_words: [{($ Id.VSub_DollarName '$targets')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-f>} {<testdata/> ($ Id.VSub_DollarName '$from')}) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <' test data: '> ($ Id.VSub_DollarName '$from') <' -> '> ($ Id.VSub_DollarName '$t') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$from')} {<-t>} {($ Id.VSub_DollarName '$t')} {<testdata/> ($ Id.VSub_DollarName '$from')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [348 359] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [376] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-s>} {<testdata/> ($ Id.VSub_DollarName '$from') <..> ($ Id.VSub_DollarName '$t') } ) terminator: <Id.Op_Semi _> ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> ($ Id.VSub_DollarName '$from') <..> ($ Id.VSub_DollarName '$t') } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_GreatAnd '2>&'> fd: 2 arg_word: {<1>} ) ] more_env: [ (env_pair name: LC_ALL val: {<C>} spids: [411] ) ] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [442] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ </OK> ($ Id.VSub_DollarName '$ac_c'))} ) ] spids: [396 408] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <' -> '> ($ Id.VSub_DollarName '$from') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$t')} {<-t>} {($ Id.VSub_DollarName '$to')} {<-o>} {($ Id.VSub_DollarName '$temp2')} {($ Id.VSub_DollarName '$temp1')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) ] ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [502 513] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [530] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {<-s>} {($ Id.VSub_DollarName '$temp1')}) (command.Simple words: [ {<cmp>} {<testdata/> ($ Id.VSub_DollarName '$from')} {($ Id.VSub_DollarName '$temp2')} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_GreatAnd '2>&'> fd: 2 arg_word: {<1>} ) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[559])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [588] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ </OK>)}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp1')} {($ Id.VSub_DollarName '$temp2')} ) ] spids: [295 305] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_DollarName '$subset')} {<Id.Lit_Equals '='>} {<Y>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <' suntzu: '> ($ Id.VSub_DollarName '$from') <' -> '> ($ Id.VSub_DollarName '$t') <' -> '> ($ Id.VSub_DollarName '$to') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$from')} {<-t>} {($ Id.VSub_DollarName '$t')} {<testdata/suntzus>} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$t')} {<-t>} {($ Id.VSub_DollarName '$to')} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) ] negated: F ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [698 709] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [726] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {<testdata/suntzus>} {($ Id.VSub_DollarName '$temp1')} ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[746])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [767] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ </OK>)}) ] spids: [630 641] ) ] ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp1')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ ($ Id.VSub_DollarName '$t'))} {<Id.Lit_Equals '='>} {<UTF8>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tc) op: assign_op.Equal rhs: {<UTF-8>} spids: [814] ) ] ) terminator: <Id.Op_Semi _> ) ] spids: [799 812] ) ] else_action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$t'))} spids: [820] ) ] ) terminator: <Id.Op_Semi _> ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<test>} {<-f>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$from') } ) (C {<test>} {<-f>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$tc')} ) (C {<test>} {<-f>} {<testdata/> ($ Id.VSub_DollarName '$from')} ) (command.Pipeline children: [ (command.Simple words: [ {<grep>} {(SQ <'<U....><U....>'>)} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$from') } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) ] ) ] negated: T ) ] ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test charmap: '> ($ Id.VSub_DollarName '$from') <' -> '> ($ Id.VSub_DollarName '$t') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$from')} {<-t>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$tc')} {<testdata/> ($ Id.VSub_DollarName '$from')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [924 935] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [952] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-s>} {<testdata/> ($ Id.VSub_DollarName '$from') <..> ($ Id.VSub_DollarName '$t') } ) terminator: <Id.Op_Semi _> ) ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> ($ Id.VSub_DollarName '$from') <..> ($ Id.VSub_DollarName '$t') } ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_GreatAnd '2>&'> fd: 2 arg_word: {<1>} ) ] more_env: [ (env_pair name: LC_ALL val: {<C>} spids: [987] ) ] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1018] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ </OK> ($ Id.VSub_DollarName '$ac_c'))} ) ] spids: [972 984] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <' -> '> ($ Id.VSub_DollarName '$from') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-t>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$from')} {<-f>} {<../localedata/charmaps/> ($ Id.VSub_DollarName '$tc')} {<-o>} {($ Id.VSub_DollarName '$temp2')} {($ Id.VSub_DollarName '$temp1')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) ] ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>} ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [1082 1093] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1110] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {<-s>} {($ Id.VSub_DollarName '$temp1')}) (command.Simple words: [ {<cmp>} {<testdata/> ($ Id.VSub_DollarName '$from')} {($ Id.VSub_DollarName '$temp2')} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_GreatAnd '2>&'> fd: 2 arg_word: {<1>} ) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1139])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1168] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ </OK>)}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp1')} {($ Id.VSub_DollarName '$temp2')} ) ] spids: [829 877] ) ] ) ] ) ) ] spids: [269 280] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {(DQ ($ Id.VSub_DollarName '$subset'))} {<Id.Lit_Equals '='>} {<N>}) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <' suntzu: ASCII -> '> ($ Id.VSub_DollarName '$to') <' -> ASCII '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {<ASCII>} {<-t>} {($ Id.VSub_DollarName '$to')} {<testdata/suntzus>} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {</dev/null>} ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$to')} {<-t>} {<ASCII>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) ] negated: F ) (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-gt>} {<128>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] spids: [1270 1281] ) ] ) (command.Sentence child: (C {<echo>} {(DQ <FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1298] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} {(DQ <OK> ($ Id.VSub_DollarName '$ac_c'))} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<cmp>} {<testdata/suntzus>} {($ Id.VSub_DollarName '$temp1')}] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1318])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1339] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ </OK>)}) ] spids: [1204 1217] ) ] ) ] ) redirects: [(redir.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{<TESTS>})] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<read>} {<utf8>} {<from>} {<filename>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$filename'))}) (C {<test>} {(DQ ($ Id.VSub_DollarName '$utf8'))} {<Id.Lit_Equals '='>} {(SQ <'#'>)} ) ] ) terminator: <Id.Op_Semi _> ) ] action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] spids: [1389 1414] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [(C {<eval>} {<echo>} {($ Id.VSub_DollarName '$ICONV')})] ) ) } spids: [1427] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test encoder: '> ($ Id.VSub_DollarName '$utf8') <' -> '> ($ Id.VSub_DollarName '$from') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$utf8')} {<-t>} {($ Id.VSub_DollarName '$from')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name utf8)} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.BE>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1484])] ) (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.LE>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1511])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1547] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ <OK>)}) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test decoder: '> ($ Id.VSub_DollarName '$from') <' -> '> ($ Id.VSub_DollarName '$utf8') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$from')} {<-t>} {($ Id.VSub_DollarName '$utf8')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.BE>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name utf8)} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1610])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1645] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$from')} {<-t>} {($ Id.VSub_DollarName '$utf8')} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.LE>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name utf8)} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1682])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1717] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ <OK>)}) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test non-BOM: '> (${ Id.VSub_Name from) <'BE -> '> (${ Id.VSub_Name from) <'LE '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {(${ Id.VSub_Name from) <BE>} {<-t>} {(${ Id.VSub_Name from) <LE>} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.BE>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.LE>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1790])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1826] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ <OK>)}) (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test non-BOM: '> (${ Id.VSub_Name from) <'LE -> '> (${ Id.VSub_Name from) <'BE '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {(${ Id.VSub_Name from) <LE>} {<-t>} {(${ Id.VSub_Name from) <BE>} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.LE>} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<cmp>} {($ Id.VSub_DollarName '$temp1')} {<testdata/> (${ Id.VSub_Name filename) <..> (${ Id.VSub_Name from) <.BE>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>}) ] more_env: [(env_pair name:LC_ALL val:{<C>} spids:[1899])] ) (command.BraceGroup children: [ (command.Sentence child: (C {<echo>} {(DQ </FAILED>)}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [1935] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] ) ] ) (C {<echo>} {(DQ <OK>)}) ] ) redirects: [(redir.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{<TESTS2>})] ) (command.Simple words: [{<printf>} {(SQ <'\\016\\377\\377\\377\\377\\377\\377\\377'>)}] redirects: [ (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{($ Id.VSub_DollarName '$temp1')}) ] ) (command.ForEach iter_name: from iter_words: [{($ Id.VSub_DollarName '$iconv_modules')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<echo>} {($ Id.VSub_DollarName '$ac_n')} { (DQ <'test decoder '> ($ Id.VSub_DollarName '$from') <' '> ($ Id.VSub_DollarName '$ac_c') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [(C {<eval>} {<echo>} {($ Id.VSub_DollarName '$ICONV')})] ) ) } spids: [1997] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {<-f>} {($ Id.VSub_DollarName '$from')} {<-t>} {<UTF8>} ] redirects: [ (redir.Redir op: <Id.Redir_Less '<'> fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {</dev/null>} ) (redir.Redir op: <Id.Redir_GreatAnd '2>&'> fd: 2 arg_word: {<1>} ) ] ) terminator: <Id.Op_Semi _> ) ] action: [(C {<Id.Lit_Other ':'>})] spids: [2009 2033] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2045] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_DollarName '$status')} {<-gt>} {<1>}) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} {(DQ </FAILED>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {<1>} spids: [2071] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [2049 2061] ) ] ) ] ) (C {<echo>} {(DQ <OK>)}) ] ) ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$failed')} ) ] )