(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TMP) op: Equal rhs: { (BracedVarSub token: <VSub_Name TMP> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(Lit_Slash /) (tmp)}) spids: [41 46] ) } spids: [40] ) ] spids: [40] ) (Assignment keyword: Assign_Readonly pairs: [(assign_pair lhs:(LhsName name:TMP) op:Equal spids:[53])] spids: [51] ) (FuncDef name: log body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (': ') ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[74])] ) ] spids: [63] ) spids: [59 62] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number '$0') (' ERROR: ') ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[95])] ) (C {(exit)} {(1)}) ] spids: [84] ) spids: [80 83] ) (FuncDef name: show_help body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('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") ) } do_expansion: True here_end: EOF was_filled: True spids: [115] ) ] ) ] spids: [110] ) spids: [106 109] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FLAG_prefix) op: Equal rhs: {(SQ </usr/local>)} spids: [138] ) ] spids: [138] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FLAG_with_readline) op:Equal rhs:{(SQ )} spids:[143])] spids: [143] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FLAG_without_readline) op:Equal rhs:{(SQ )} spids:[150])] spids: [150] ) (While cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [-1 177 183 -1] ) (case_arm pat_list: [{(--help)}] action: [(C {(show_help)}) (C {(exit)} {(0)})] spids: [186 187 202 -1] ) (case_arm pat_list: [{(--with-readline)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FLAG_with_readline) op: Equal rhs: {(1)} spids: [210] ) ] spids: [210] ) ] spids: [206 207 214 -1] ) (case_arm pat_list: [{(--without-readline)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FLAG_without_readline) op: Equal rhs: {(1)} spids: [222] ) ] spids: [222] ) ] spids: [218 219 226 -1] ) (case_arm pat_list: [{(--prefix) (Lit_Other '=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FLAG_prefix) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ':')} {(SQ <'--prefix=\\(.*\\)'>)} ) ] ) left_token: <Left_CommandSub '$('> spids: [245 257] ) } spids: [244] ) ] spids: [244] ) ] spids: [238 241 260 -1] ) (case_arm pat_list: [{(--prefix)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(1)}) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ('--prefix requires an argument'))})] spids: [-1 278] ) ] spids: [-1 288] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FLAG_prefix) op: Equal rhs: {($ VSub_Number '$1')} spids: [294] ) ] spids: [294] ) ] spids: [263 264 298 -1] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(die)} {(DQ ("Invalid argument '") ($ VSub_Number '$1') ("'"))})] spids: [301 302 314 -1] ) ] spids: [166 172 317] ) (C {(shift)}) ] spids: [163 322] ) ) (FuncDef name: cc_quiet body: (BraceGroup children: [ (SimpleCommand words: [{(cc)} {(DQ ($ VSub_At '$@'))} {(-o)} {(/dev/null)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[348]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[351]) ] ) ] spids: [335] ) spids: [331 334] ) (FuncDef name: cc_or_die body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(cc)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$TMP') (/cc.log)} spids: [374] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [378] ) ] ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(log)} {(DQ ("Error running 'cc ") ($ VSub_At '$@') ("':"))}) (C {(cat)} {($ VSub_Name '$TMP') (/cc.log)}) (C {(die)} {(DQ ('Fatal compile error running feature test'))}) ] spids: [-1 382] ) ] spids: [-1 407] ) ] spids: [361] ) spids: [357 360] ) (FuncDef name: cc_statement body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:pp_var) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [424] ) ] spids: [422] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:prog) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [432] ) ] spids: [430] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$TMP') (/cc_statement.c)} spids: [441] ) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ('int main() {\n') (' ') ($ VSub_Name '$prog') ('\n') ('}\n'))} do_expansion: True here_end: EOF was_filled: True spids: [445] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(cc_quiet)} {($ VSub_Name '$TMP') (/cc_statement.c)}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('#define ') ($ VSub_Name '$pp_var') (' 1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [-1 466] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [483 491] ) ] spids: [419] ) spids: [415 418] ) (FuncDef name: detect_readline body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(cc_quiet)} {(build/detect-readline.c)} {(-l)} {(readline)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ <'HAVE_READLINE=1'>)})] spids: [-1 517] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$FLAG_with_readline'))} {(Lit_Other '=')} {(1)} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} { (SQ <'readline was not detected on the system (--with-readline passed).'>) } ) ] spids: [-1 543] ) ] spids: [-1 553] ) (C {(echo)} {(SQ <'HAVE_READLINE='>)}) ] spids: [527 563] ) ] spids: [503] ) spids: [499 502] ) (FuncDef name: detect_and_echo_vars body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$FLAG_without_readline'))} {(Lit_Other '=')} {(1)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ <'HAVE_READLINE='>)})] spids: [-1 588] ) ] else_action: [(C {(detect_readline)})] spids: [598 604] ) (C {(echo)} {(DQ ('PREFIX=') ($ VSub_Name '$FLAG_prefix'))}) ] spids: [572] ) spids: [568 571] ) (FuncDef name: cc_print_expr body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:c_expr) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [629] ) ] spids: [627] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$TMP') (/print_expr.c)} spids: [637] ) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('#include <stdio.h>\n') ('#include <sys/types.h> /* size_t, pid_t */\n') ('\n') ('int main() {\n') (' printf(') (Right_DoubleQuote '"') ('%lu') (Right_DoubleQuote '"') (', ') ($ VSub_Name '$c_expr') (');\n') ('}\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [641] ) ] ) (C {(cc_or_die)} {(-o)} {($ VSub_Name '$TMP') (/print_expr)} {($ VSub_Name '$TMP') (/print_expr.c)} ) (SimpleCommand words: [{($ VSub_Name '$TMP') (/print_expr)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$TMP') (/print_expr.out)} spids: [672] ) ] ) ] spids: [624] ) spids: [620 623] ) (FuncDef name: check_sizeof body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:pp_var) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [727] ) ] spids: [725] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:c_type) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [735] ) ] spids: [733] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:min_bytes) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [743] ) ] spids: [741] ) (C {(cc_print_expr)} {(DQ ('sizeof(') ($ VSub_Name '$c_type') (')'))}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:actual_bytes) op:Equal spids:[762])] spids: [760] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:actual_bytes) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Name '$TMP') (/print_expr.out)})] ) left_token: <Left_CommandSub '$('> spids: [766 771] ) } spids: [765] ) ] spids: [765] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$min_bytes'))}) (C {(test)} {(DQ ($ VSub_Name '$actual_bytes'))} {(-lt)} {(DQ ($ VSub_Name '$min_bytes'))} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} { (DQ ('sizeof(') ($ VSub_Name '$c_type') (') should be at least ') ($ VSub_Name '$min_bytes') ('; got ') ($ VSub_Name '$actual_bytes') ) } ) ] spids: [-1 800] ) ] spids: [-1 815] ) (C {(echo)} {(DQ ('#define ') ($ VSub_Name '$pp_var') (' ') ($ VSub_Name '$actual_bytes'))}) ] spids: [722] ) spids: [718 721] ) (FuncDef name: detect_c_language body: (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 )}) (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: [-1 1000] ) ] spids: [-1 1014] ) (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: [-1 1028] ) ] spids: [-1 1042] ) (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: [-1 1057] ) ] spids: [-1 1075] ) (C {(echo)} {(SQ <'#define HAVE_WCHAR_H 1'>)}) (C {(echo)} {(SQ <'#define SIZEOF_WCHAR_T 4'>)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$TMP') (/detect_va_list.c)} spids: [1125] ) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('#include <stdarg.h> /* C89 */\n') ('int main() {\n') (' va_list list1, list2;\n') (' list1 = list2;\n') ('}\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [1129] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(cc_quiet)} {($ VSub_Name '$TMP') (/detect_va_list.c)}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(SQ )})] spids: [-1 1146] ) ] else_action: [(C {(echo)} {(SQ <'#define VA_LIST_IS_ARRAY 1'>)})] spids: [1158 1168] ) ] spids: [839] ) spids: [835 838] ) (FuncDef name: main body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(C {(cc_quiet)} {(build/detect-cc.c)})] negated: True ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ("Couldn't compile a basic C program (cc not installed?)"))})] spids: [-1 1198] ) ] spids: [-1 1208] ) (C {(mkdir)} {(-p)} {(_build)}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:sh_out) op: Equal rhs: {(_build/detected-config.sh)} spids: [1229] ) ] spids: [1227] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:c_out) op: Equal rhs: {(_build/detected-config.h)} spids: [1235] ) ] spids: [1233] ) (SimpleCommand words: [{(detect_and_echo_vars)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$sh_out')} spids: [1242] ) ] ) (SimpleCommand words: [{(detect_c_language)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$c_out')} spids: [1249] ) ] ) (C {(log)} {(DQ ('Wrote ') ($ VSub_Name '$sh_out') (' and ') ($ VSub_Name '$c_out'))}) ] spids: [1186] ) spids: [1182 1185] ) (FuncDef name: unittest body: (BraceGroup children: [ (C {(cc_print_expr)} {(SQ <'sizeof(int)'>)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:actual) op:Equal spids:[1283])] spids: [1281] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:actual) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {($ VSub_Name '$TMP') (/print_expr.out)})] ) left_token: <Left_CommandSub '$('> spids: [1287 1292] ) } spids: [1286] ) ] spids: [1286] ) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name '$actual'))} {(Lit_Other '=')} {(4)}) (C {(die)} {(DQ ('Expected 4, got ') ($ VSub_Name '$actual'))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(check_sizeof)} {(SIZEOF_INT)} {(SQ <int>)} {(4)}) (C {(die)} {(DQ (FAILED))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cc_statement)} {(HAVE_INT)} {(SQ <'int x = (int)0;'>)}) (C {(die)} {(DQ (FAILED))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cc_statement)} {(HAVE_FOO)} {(SQ <'foo x = (foo)0;'>)}) (C {(die)} {(DQ ('Expected to fail'))}) ] op_id: Op_DAmp ) ] spids: [1271] ) spids: [1267 1270] ) (C {(main)} {(DQ ($ VSub_At '$@'))}) ] )