(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 (Token id: Id.Lit_Chars val: '$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \\\n' span_id: 116 ) (Token id:Id.Lit_Chars val:' $codir/iconv/iconv_prog' span_id:117) ) } 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: (Token id:Id.Op_Semi val:';' span_id:143) ) (C {(echo)} {(1) (Id.Lit_Comma ',') (2) (Id.Lit_Comma ',') (3)}) ] ) ) (command.Simple words: [{(grep)} {(c)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:160) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: F ) terminator: (Token id:Id.Op_Semi val:';' span_id:162) ) ] 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 (Token id:Id.Lit_Chars val:'\\c' span_id:181))} 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: (Token id:Id.KW_While val:while span_id:198) cond: [ (command.Sentence child: (C {(read)} {(from)} {(to)} {(subset)} {(targets)}) terminator: (Token id:Id.Op_Semi val:';' span_id:209) ) ] 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 (Token id:Id.Lit_Chars val:'#' span_id:239))} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:241) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:245) ) terminator: (Token id:Id.Op_Semi val:';' span_id:246) ) ] spids: [218 243] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:257) 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: (Token id:Id.Op_Semi val:';' span_id:278) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:303) ) ] 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: (Token id:Id.Redir_Less val:'<' span_id:335) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:339) 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: (Token id: Id.Op_Semi val: ';' span_id: 357 ) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 361 ) arg_word: {(1)} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 364 ) ) ] spids: [348 359] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:374) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [376] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:378) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 380 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:381) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:406) ) ] 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: (Token id: Id.Redir_Great val: '>' span_id: 423 ) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 427 ) 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: (Token id: Id.Op_Semi val: ';' span_id: 440 ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [442] ) ] ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 444 ) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 446 ) ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 447 ) ) ] ) ] ) (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: (Token id:Id.Redir_Less val:'<' span_id:493) 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: (Token id: Id.Op_Semi val: ';' span_id: 511 ) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 515 ) arg_word: {(1)} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 518 ) ) ] spids: [502 513] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:528) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [530] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:532) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 534 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:535) ) ] ) ] ) (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: (Token id:Id.Redir_Great val:'>' span_id:569) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:573) 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: (Token id:Id.Op_Semi val:';' span_id:586) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [588] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:590) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 592 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:593) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:639) ) ] 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: (Token id:Id.Redir_Less val:'<' span_id:672) 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: (Token id:Id.Redir_Great val:'>' span_id:689) 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: (Token id: Id.Op_Semi val: ';' span_id: 707 ) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 711 ) arg_word: {(1)} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 714 ) ) ] spids: [698 709] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:724) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [726] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:728) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 730 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:731) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:765) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [767] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:769) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 771 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:772) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:810) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:816) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:824) ) ] ) (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 (Token id: Id.Lit_Chars val: '<U....><U....>' span_id: 866 ) ) } {(../localedata/charmaps/) ($ Id.VSub_DollarName '$from') } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '>' span_id: 872 ) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: T ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:875) ) ] 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: (Token id:Id.Redir_Less val:'<' span_id:911) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:915) 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: (Token id: Id.Op_Semi val: ';' span_id: 933 ) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 937 ) arg_word: {(1)} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 940 ) ) ] spids: [924 935] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:950) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [952] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:954) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 956 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:957) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:982) ) ] 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: (Token id: Id.Redir_Great val: '>' span_id: 999 ) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 1003 ) 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: (Token id: Id.Op_Semi val: ';' span_id: 1016 ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1018] ) ] ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 1020 ) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 1022 ) ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 1023 ) ) ] ) ] ) (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: (Token id:Id.Redir_Less val:'<' span_id:1073) 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: (Token id: Id.Op_Semi val: ';' span_id: 1091 ) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 1095 ) arg_word: {(1)} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 1098 ) ) ] spids: [1082 1093] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1108) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1110] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1112) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 1114 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1115) ) ] ) ] ) (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: (Token id:Id.Redir_Great val:'>' span_id:1149) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1153) 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: (Token id:Id.Op_Semi val:';' span_id:1166) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1168] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1170) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 1172 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1173) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:1215) ) ] 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: (Token id:Id.Redir_Less val:'<' span_id:1244) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {(-f)} {($ Id.VSub_DollarName '$to')} {(-t)} {(ASCII)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1261) 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: (Token id:Id.Op_Semi val:';' span_id:1279) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1283) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1286) ) ] spids: [1270 1281] ) ] ) (command.Sentence child: (C {(echo)} {(DQ (FAILED))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1296) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1298] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1300) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1302) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1303) ) ] ) ] ) (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: (Token id:Id.Op_Semi val:';' span_id:1337) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1339] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1341) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1343) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1344) ) ] ) ] ) (C {(echo)} {(DQ (/OK))}) ] spids: [1204 1217] ) ] ) ] ) redirects: [ (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:1360) fd:-1 arg_word:{(TESTS)}) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1371) cond: [ (command.Sentence child: (C {(read)} {(utf8)} {(from)} {(filename)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1380) ) ] 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 (Token id:Id.Lit_Chars val:'#' span_id:1410))} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1412) ) ] action: [ (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1416) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1417) ) ] spids: [1389 1414] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PROG) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1428) 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: (Token id:Id.Redir_Less val:'<' span_id:1468) fd: -1 arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name utf8)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1479) 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: (Token id:Id.Redir_Great val:'>' span_id:1501) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1505) 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: (Token id:Id.Redir_Great val:'>' span_id:1528) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1532) 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: (Token id:Id.Op_Semi val:';' span_id:1545) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1547] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1549) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1551) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1552) ) ] ) ] ) (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: (Token id:Id.Redir_Less val:'<' span_id:1593) fd: -1 arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1605) 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: (Token id:Id.Redir_Great val:'>' span_id:1626) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1630) 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: (Token id:Id.Op_Semi val:';' span_id:1643) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1645] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1647) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1649) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1650) ) ] ) ] ) (command.Simple words: [ {($ Id.VSub_DollarName '$PROG')} {(-f)} {($ Id.VSub_DollarName '$from')} {(-t)} {($ Id.VSub_DollarName '$utf8')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1665) fd: -1 arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1677) 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: (Token id:Id.Redir_Great val:'>' span_id:1698) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1702) 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: (Token id:Id.Op_Semi val:';' span_id:1715) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1717] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1719) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1721) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1722) ) ] ) ] ) (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: (Token id:Id.Redir_Less val:'<' span_id:1773) fd: -1 arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1785) 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: (Token id:Id.Redir_Great val:'>' span_id:1807) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1811) 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: (Token id:Id.Op_Semi val:';' span_id:1824) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1826] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1828) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1830) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1831) ) ] ) ] ) (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: (Token id:Id.Redir_Less val:'<' span_id:1882) fd: -1 arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1894) 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: (Token id:Id.Redir_Great val:'>' span_id:1916) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1920) 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: (Token id:Id.Op_Semi val:';' span_id:1933) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:failed) op: assign_op.Equal rhs: {(1)} spids: [1935] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1937) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1939) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1940) ) ] ) ] ) (C {(echo)} {(DQ (OK))}) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1954) fd: -1 arg_word: {(TESTS2)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'\\016\\377\\377\\377\\377\\377\\377\\377' span_id:1965))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1968) 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: (Token id:Id.Left_Backtick val:'`' span_id:1998) 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: (Token id:Id.Redir_Less val:'<' span_id:2021) fd: -1 arg_word: {($ Id.VSub_DollarName '$temp1')} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2025) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:2028) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:2031) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:2059) ) ] 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: (Token id:Id.ControlFlow_Continue val:continue span_id:2075) ) ] spids: [2049 2061] ) ] ) ] ) (C {(echo)} {(DQ (OK))}) ] ) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2093) arg_word: {($ Id.VSub_DollarName '$failed')} ) ] )