(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TMP spids:[40]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name TMP> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (tmp)} ) spids: [41 46] ) } spids: [40] ) ] spids: [40] ) (command.Assignment keyword: Assign_Readonly pairs: [(assign_pair lhs:(lhs_expr.LhsName name:TMP spids:[53]) op:Equal spids:[53])] spids: [51] ) (command.FuncDef name: log body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (': ') ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) ] spids: [63] ) spids: [59 62] ) (command.FuncDef name: die body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (' ERROR: ') ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [84] ) spids: [80 83] ) (command.FuncDef name: show_help body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 127 stdin_parts: [ ('Usage: ./configure [OPTION]\n') ('\n') ('Detects system settings before a build of Oil.\n') ('\n') (' --prefix Prefix for the bin/ directory [/usr/local]\n') (' --with-readline Fail unless readline is available.\n') ( " --without-readline Don't compile with readline, even if it's available.\n" ) ("\t\t The shell won't have any interactive features.\n") ] ) ] ) ] spids: [110] ) spids: [106 109] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[140]) op: Equal rhs: {(SQ </usr/local>)} spids: [140] ) ] spids: [140] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_with_readline spids:[145]) op: Equal rhs: {(SQ )} spids: [145] ) ] spids: [145] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_without_readline spids:[152]) op: Equal rhs: {(SQ )} spids: [152] ) ] spids: [152] ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] spids: [177 179 185 16777215] ) (case_arm pat_list: [{(--help)}] action: [ (C {(show_help)}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] spids: [188 189 204 16777215] ) (case_arm pat_list: [{(--with-readline)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_with_readline spids:[212]) op: Equal rhs: {(1)} spids: [212] ) ] spids: [212] ) ] spids: [208 209 216 16777215] ) (case_arm pat_list: [{(--without-readline)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_without_readline spids:[224]) op: Equal rhs: {(1)} spids: [224] ) ] spids: [224] ) ] spids: [220 221 228 16777215] ) (case_arm pat_list: [{(--prefix) (Lit_Other '=') (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[246]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ':')} {(SQ <'--prefix=\\(.*\\)'>)} ) ] ) left_token: <Left_CommandSub '$('> spids: [247 259] ) } spids: [246] ) ] spids: [246] ) ] spids: [240 243 262 16777215] ) (case_arm pat_list: [{(--prefix)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(1)}) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ('--prefix requires an argument'))})] spids: [16777215 280] ) ] spids: [16777215 290] ) (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAG_prefix spids:[296]) op: Equal rhs: {($ VSub_Number '$1')} spids: [296] ) ] spids: [296] ) ] spids: [265 266 300 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(die)} {(DQ ("Invalid argument '") ($ VSub_Number '$1') ("'"))})] spids: [303 304 316 16777215] ) ] spids: [168 174 319] ) (C {(shift)}) ] spids: [165 324] ) ) (command.FuncDef name: cc_quiet body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(cc)} {(DQ ($ VSub_At '$@'))} {(-o)} {(/dev/null)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) ] spids: [337] ) spids: [333 336] ) (command.FuncDef name: cc_or_die body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.SimpleCommand words: [{(cc)} {(DQ ($ VSub_At '$@'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$TMP') (/cc.log)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(log)} {(DQ ("Error running 'cc ") ($ VSub_At '$@') ("':"))}) (C {(cat)} {($ VSub_DollarName '$TMP') (/cc.log)}) (C {(die)} {(DQ ('Fatal compile error running feature test'))}) ] spids: [16777215 384] ) ] spids: [16777215 409] ) ] spids: [363] ) spids: [359 362] ) (command.FuncDef name: cc_statement body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pp_var spids:[426]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [426] ) ] spids: [424] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prog spids:[434]) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [434] ) ] spids: [432] ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$TMP') (/cc_statement.c)} ) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 456 stdin_parts: [('int main() {\n') (' ') ($ VSub_DollarName '$prog') ('\n') ('}\n')] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cc_quiet)} {($ VSub_DollarName '$TMP') (/cc_statement.c)}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('#define ') ($ VSub_DollarName '$pp_var') (' 1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [16777215 470] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [487 495] ) ] spids: [421] ) spids: [417 420] ) (command.FuncDef name: detect_readline body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cc_quiet)} {(build/detect-readline.c)} {(-l)} {(readline)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ <'HAVE_READLINE=1'>)})] spids: [16777215 521] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(DQ ($ VSub_DollarName '$FLAG_with_readline'))} {(Lit_Other '=')} {(1)} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} { (SQ <'readline was not detected on the system (--with-readline passed).'>) } ) ] spids: [16777215 547] ) ] spids: [16777215 557] ) (C {(echo)} {(SQ <'HAVE_READLINE='>)}) ] spids: [531 567] ) ] spids: [507] ) spids: [503 506] ) (command.FuncDef name: detect_and_echo_vars body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(DQ ($ VSub_DollarName '$FLAG_without_readline'))} {(Lit_Other '=')} {(1)} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ <'HAVE_READLINE='>)})] spids: [16777215 592] ) ] else_action: [(C {(detect_readline)})] spids: [602 608] ) (C {(echo)} {(DQ ('PREFIX=') ($ VSub_DollarName '$FLAG_prefix'))}) ] spids: [576] ) spids: [572 575] ) (command.FuncDef name: cc_print_expr body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c_expr spids:[633]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [633] ) ] spids: [631] ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$TMP') (/print_expr.c)} ) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 661 stdin_parts: [ ('#include <stdio.h>\n') ('#include <sys/types.h> /* size_t, pid_t */\n') ('\n') ('int main() {\n') (' printf(') (Right_DoubleQuote '"') ('%lu') (Right_DoubleQuote '"') (', ') ($ VSub_DollarName '$c_expr') (');\n') ('}\n') ] ) ] ) (C {(cc_or_die)} {(-o)} {($ VSub_DollarName '$TMP') (/print_expr)} {($ VSub_DollarName '$TMP') (/print_expr.c)} ) (command.SimpleCommand words: [{($ VSub_DollarName '$TMP') (/print_expr)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$TMP') (/print_expr.out)} ) ] ) ] spids: [628] ) spids: [624 627] ) (command.FuncDef name: check_sizeof body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:pp_var spids:[733]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [733] ) ] spids: [731] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c_type spids:[741]) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [741] ) ] spids: [739] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:min_bytes spids:[749]) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [749] ) ] spids: [747] ) (C {(cc_print_expr)} {(DQ ('sizeof(') ($ VSub_DollarName '$c_type') (')'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:actual_bytes spids:[768]) op: Equal spids: [768] ) ] spids: [766] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:actual_bytes spids:[771]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(cat)} {($ VSub_DollarName '$TMP') (/print_expr.out)})] ) left_token: <Left_CommandSub '$('> spids: [772 777] ) } spids: [771] ) ] spids: [771] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$min_bytes'))}) (C {(test)} {(DQ ($ VSub_DollarName '$actual_bytes'))} {(-lt)} {(DQ ($ VSub_DollarName '$min_bytes'))} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} { (DQ ('sizeof(') ($ VSub_DollarName '$c_type') (') should be at least ') ($ VSub_DollarName '$min_bytes') ('; got ') ($ VSub_DollarName '$actual_bytes') ) } ) ] spids: [16777215 806] ) ] spids: [16777215 821] ) (C {(echo)} { (DQ ('#define ') ($ VSub_DollarName '$pp_var') (' ') ($ VSub_DollarName '$actual_bytes')) } ) ] spids: [728] ) spids: [724 727] ) (command.FuncDef name: detect_c_language body: (command.BraceGroup children: [ (C {(check_sizeof)} {(SIZEOF_INT)} {(SQ <int>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_LONG)} {(SQ <long>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_VOID_P)} {(SQ <'void *'>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_SHORT)} {(SQ <short>)} {(2)}) (C {(check_sizeof)} {(SIZEOF_FLOAT)} {(SQ <float>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_DOUBLE)} {(SQ <double>)} {(8)}) (C {(check_sizeof)} {(SIZEOF_SIZE_T)} {(SQ <size_t>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_FPOS_T)} {(SQ <fpos_t>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_PID_T)} {(SQ <pid_t>)} {(4)}) (C {(check_sizeof)} {(SIZEOF_OFF_T)} {(SQ <off_t>)} {(SQ )}) (C {(check_sizeof)} {(SIZEOF_TIME_T)} {(SQ <time_t>)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (C {(cc_statement)} {(HAVE_LONG_LONG)} {(SQ <'long long x; x = (long long)0;'>)}) ] action: [(C {(check_sizeof)} {(SIZEOF_LONG_LONG)} {(SQ <'long long'>)} {(8)})] spids: [16777215 1006] ) ] spids: [16777215 1020] ) (command.If arms: [ (if_arm cond: [ (C {(cc_statement)} {(HAVE_LONG_DOUBLE)} {(SQ <'long double x; x = (long double)0;'>)} ) ] action: [(C {(check_sizeof)} {(SIZEOF_LONG_DOUBLE)} {(SQ <'long double'>)} {(8)})] spids: [16777215 1034] ) ] spids: [16777215 1048] ) (command.If arms: [ (if_arm cond: [(C {(cc_statement)} {(HAVE_C99_BOOL)} {(SQ <'_Bool x; x = (_Bool)0;'>)})] action: [(C {(check_sizeof)} {(SIZEOF__BOOL)} {(SQ <_Bool>)} {(1)})] spids: [16777215 1063] ) ] spids: [16777215 1081] ) (C {(echo)} {(SQ <'#define HAVE_WCHAR_H 1'>)}) (C {(echo)} {(SQ <'#define SIZEOF_WCHAR_T 4'>)}) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$TMP') (/detect_va_list.c)} ) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1144 stdin_parts: [ ('#include <stdarg.h> /* C89 */\n') ('int main() {\n') (' va_list list1, list2;\n') (' list1 = list2;\n') ('}\n') ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(cc_quiet)} {($ VSub_DollarName '$TMP') (/detect_va_list.c)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ )})] spids: [16777215 1154] ) ] else_action: [(C {(echo)} {(SQ <'#define VA_LIST_IS_ARRAY 1'>)})] spids: [1166 1176] ) ] spids: [845] ) spids: [841 844] ) (command.FuncDef name: main body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {(cc_quiet)} {(build/detect-cc.c)})] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ("Couldn't compile a basic C program (cc not installed?)"))})] spids: [16777215 1206] ) ] spids: [16777215 1216] ) (C {(mkdir)} {(-p)} {(_build)}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:sh_out spids:[1237]) op: Equal rhs: {(_build/detected-config.sh)} spids: [1237] ) ] spids: [1235] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c_out spids:[1243]) op: Equal rhs: {(_build/detected-config.h)} spids: [1243] ) ] spids: [1241] ) (command.SimpleCommand words: [{(detect_and_echo_vars)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$sh_out')} ) ] ) (command.SimpleCommand words: [{(detect_c_language)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$c_out')} ) ] ) (C {(log)} {(DQ ('Wrote ') ($ VSub_DollarName '$sh_out') (' and ') ($ VSub_DollarName '$c_out'))} ) ] spids: [1194] ) spids: [1190 1193] ) (command.FuncDef name: unittest body: (command.BraceGroup children: [ (C {(cc_print_expr)} {(SQ <'sizeof(int)'>)}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:actual spids:[1291]) op: Equal spids: [1291] ) ] spids: [1289] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:actual spids:[1294]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(cat)} {($ VSub_DollarName '$TMP') (/print_expr.out)})] ) left_token: <Left_CommandSub '$('> spids: [1295 1300] ) } spids: [1294] ) ] spids: [1294] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$actual'))} {(Lit_Other '=')} {(4)}) (C {(die)} {(DQ ('Expected 4, got ') ($ VSub_DollarName '$actual'))}) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(check_sizeof)} {(SIZEOF_INT)} {(SQ <int>)} {(4)}) (C {(die)} {(DQ (FAILED))}) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(cc_statement)} {(HAVE_INT)} {(SQ <'int x = (int)0;'>)}) (C {(die)} {(DQ (FAILED))}) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(cc_statement)} {(HAVE_FOO)} {(SQ <'foo x = (foo)0;'>)}) (C {(die)} {(DQ ('Expected to fail'))}) ] ) ] spids: [1279] ) spids: [1275 1278] ) (C {(main)} {(DQ ($ VSub_At '$@'))}) ] )