(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(no)} spids:[89])] spids: [89] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WORKDIR) op:Equal rhs:{(work)} spids:[92])] spids: [92] ) (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)} {(DQ ('Usage: preworld.sh [-s script] [-w workdir]'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [100] ) spids: [96 99] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:COMMAND) op:Equal rhs:{(etcupdate)} spids:[120])] spids: [120] ) (While cond: [(Sentence child:(C {(getopts)} {(DQ ('s:w:'))} {(option)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$option')} arms: [ (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMMAND) op: Equal rhs: {(DQ ('sh ') ($ VSub_Name '$OPTARG'))} spids: [148] ) ] spids: [148] ) ] spids: [144 145 155 16777215] ) (case_arm pat_list: [{(w)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WORKDIR) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [162] ) ] spids: [162] ) ] spids: [158 159 166 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(echo)}) (C {(usage)})] spids: [169 170 179 16777215] ) ] spids: [137 141 182] ) ] spids: [134 184] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:OPTIND) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [188 195] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)})] spids: [16777215 210] ) ] spids: [16777215 215] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CONFLICTS) op: Equal rhs: {($ VSub_Name '$WORKDIR') (/conflicts)} spids: [218] ) ] spids: [218] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SRC) op: Equal rhs: {($ VSub_Name '$WORKDIR') (/src)} spids: [222] ) ] spids: [222] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OLD) op: Equal rhs: {($ VSub_Name '$WORKDIR') (/current)} spids: [226] ) ] spids: [226] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST) op: Equal rhs: {($ VSub_Name '$WORKDIR') (/test)} spids: [230] ) ] spids: [230] ) (FuncDef name: build_trees body: (BraceGroup children: [ (C {(rm)} {(-rf)} {($ VSub_Name '$SRC')} {($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')} {($ VSub_Name '$CONFLICTS')} ) (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/etc)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/etc/master.passwd)} spids: [280] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('#\n') ('root::0:0::0:0:Charlie &:/root:/bin/csh\n') ('toor:*:0:0::0:0:Bourne-again Superuser:/root:\n') ('daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin\n') ('operator:*:2:5::0:0:System &:/:/usr/sbin/nologin\n') ('_dhcp:*:65:65::0:0:dhcp programs:/var/empty:/usr/sbin/nologin\n') ( 'uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico\n' ) ('pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin\n') ('www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin\n') ('hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin\n') ( 'nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin\n' ) ) } do_expansion: True here_end: EOF was_filled: T spids: [285] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/etc/group)} spids: [303] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('#\n') ('wheel:*:0:root\n') ('daemon:*:1:\n') ('kmem:*:2:\n') ('sys:*:3:\n') ('tty:*:4:\n') ('operator:*:5:root\n') ('_dhcp:*:65:\n') ('uucp:*:66:\n') ('dialer:*:68:\n') ('network:*:69:\n') ('www:*:80:\n') ('hast:*:845:\n') ('nogroup:*:65533:\n') ('nobody:*:65534:\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [308] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/etc/inetd.conf)} spids: [330] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('# Yet another file\n'))} do_expansion: True here_end: EOF was_filled: T spids: [335] ) ] ) (C {(cp)} {(-R)} {($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}) (C {(sed)} {(-I)} {(DQ )} {(-e)} {(SQ <'s/root::/root:<rpass>:/'>)} {($ VSub_Name '$TEST') (/etc/master.passwd)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/etc/master.passwd)} spids: [378] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('john:<password>:1001:1001::0:0:John Baldwin:/home/john:/bin/tcsh\n') ( 'messagebus:*:556:556::0:0:D-BUS Daemon User:/nonexistent:/usr/sbin/nologin\n' ) ('polkit:*:562:562::0:0:PolicyKit User:/nonexistent:/usr/sbin/nologin\n') ( 'haldaemon:*:560:560::0:0:HAL Daemon User:/nonexistent:/usr/sbin/nologin\n' ) ) } do_expansion: True here_end: EOF was_filled: T spids: [383] ) ] ) (SimpleCommand words: [ {(awk)} {(SQ <'/wheel/ { printf "%s,john\\n", $0; next } // { print }'>)} {($ VSub_Name '$OLD') (/etc/group)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/etc/group)} spids: [403] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/etc/group)} spids: [411] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('john:*:1001:\n') ('messagebus:*:556:\n') ('polkit:*:562:\n') ('haldaemon:*:560:\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [416] ) ] ) (C {(rm)} {($ VSub_Name '$TEST') (/etc/inetd.conf)}) (C {(touch)} {($ VSub_Name '$TEST') (/etc/localtime)}) (C {(cp)} {(-R)} {($ VSub_Name '$OLD')} {($ VSub_Name '$SRC')}) (C {(sed)} {(-I)} {(DQ )} {(-e)} { (SQ <'/:80:/i\\\n'> < 'auditdistd:*:78:77::0:0:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin' > ) } {($ VSub_Name '$SRC') (/etc/master.passwd)} ) (C {(sed)} {(-I)} {(DQ )} {(-e)} {(SQ <'/:80:/i\\\n'> <'audit:*:77:'>)} {($ VSub_Name '$SRC') (/etc/group)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$SRC') (/etc/inetd.conf)} spids: [497] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('# Making this larger\n'))} do_expansion: True here_end: EOF was_filled: T spids: [502] ) ] ) ] spids: [239] ) spids: [235 238] ) (FuncDef name: missing body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(-o)} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be missing'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [553] ) ] spids: [553] ) ] spids: [16777215 541] ) ] spids: [16777215 557] ) ] spids: [517] ) spids: [513 516] ) (FuncDef name: present body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(-o)} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be present'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [607] ) ] spids: [607] ) ] spids: [16777215 595] ) ] spids: [16777215 611] ) ] spids: [569] ) spids: [565 568] ) (FuncDef name: file body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:contents) op:Equal spids:[634]) (assign_pair lhs:(LhsName name:sum) op:Equal spids:[636]) ] spids: [632] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-f)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a regular file'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [667] ) ] spids: [667] ) ] spids: [16777215 655] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(2)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:contents) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')}) ] ) left_token: <Left_Backtick '`'> spids: [688 694] ) } spids: [687] ) ] spids: [687] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$contents'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' has wrong contents'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [727] ) ] spids: [727] ) ] spids: [16777215 715] ) ] spids: [16777215 731] ) ] spids: [671 684] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(3)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sum) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(md5)} {(-q)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')}) ] ) left_token: <Left_Backtick '`'> spids: [751 759] ) } spids: [750] ) ] spids: [750] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$sum'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$3'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' has wrong contents'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [792] ) ] spids: [792] ) ] spids: [16777215 780] ) ] spids: [16777215 796] ) ] spids: [734 747] ) ] spids: [16777215 799] ) ] spids: [629] ) spids: [625 628] ) (FuncDef name: conflict body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:sum) op:Equal spids:[819])] spids: [817] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-f)} {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' missing conflict'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [850] ) ] spids: [850] ) ] spids: [16777215 838] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(1)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sum) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(md5)} {(-q)} {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')} ) ] ) left_token: <Left_Backtick '`'> spids: [871 879] ) } spids: [870] ) ] spids: [870] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$sum'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Conflict ') ($ VSub_Number '$1') (' has wrong contents'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [912] ) ] spids: [912] ) ] spids: [16777215 900] ) ] spids: [16777215 916] ) ] spids: [854 867] ) ] spids: [16777215 919] ) ] spids: [814] ) spids: [810 813] ) (FuncDef name: check_trees body: (BraceGroup children: [ (C {(echo)} {(DQ ('Checking tree for correct results:'))}) (C {(file)} {(/etc/master.passwd)} {(DQ )} {(1385366e8b424d33d59b7d8a2bdb15d3)}) (C {(file)} {(/etc/group)} {(DQ )} {(21273f845f6ec0cda9188c4ddac9ed47)}) (C {(missing)} {(/etc/inetd.conf)}) (C {(file)} {(/etc/passwd)} {(DQ )} {(9831537874bdc99adccaa2b0293248a1)}) (C {(file)} {(/etc/pwd.db)}) (C {(file)} {(/etc/spwd.db)}) ] spids: [928] ) spids: [924 927] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children:[(C {(id)} {(-u)})]) left_token: <Left_Backtick '`'> spids: [996 1000] ) } {(-ne)} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('must be root'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [16777215 1009] ) ] spids: [16777215 1023] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-r)} {(/etc/etcupdate.conf)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('WARNING: /etc/etcupdate.conf settings may break some tests.'))})] spids: [16777215 1037] ) ] spids: [16777215 1046] ) (C {(build_trees)}) (SimpleCommand words: [ {($ VSub_Name '$COMMAND')} {(-np)} {(-s)} {($ VSub_Name '$SRC')} {(-d)} {($ VSub_Name '$WORKDIR')} {(-D)} {($ VSub_Name '$TEST')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/testn.out)} spids: [1068] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)} spids: [1076] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ (' M /etc/group\n') (' M /etc/master.passwd\n'))} do_expansion: True here_end: EOF was_filled: T spids: [1081] ) ] ) (C {(echo)} {(DQ ('Differences for -n:'))}) (AndOr ops: [Op_DPipe] children: [ (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correct.out)} {(-L)} {(DQ (test))} {($ VSub_Name '$WORKDIR') (/testn.out)} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[1120])] spids: [1120] ) ] ) (SimpleCommand words: [ {($ VSub_Name '$COMMAND')} {(-p)} {(-s)} {($ VSub_Name '$SRC')} {(-d)} {($ VSub_Name '$WORKDIR')} {(-D)} {($ VSub_Name '$TEST')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/test.out)} spids: [1140] ) ] ) (C {(echo)} {(DQ ('Differences for real:'))}) (AndOr ops: [Op_DPipe] children: [ (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correct.out)} {(-L)} {(DQ (test))} {($ VSub_Name '$WORKDIR') (/test.out)} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[1178])] spids: [1178] ) ] ) (C {(check_trees)}) (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAILED))} {(Lit_Other '=')} {(no)} {(Lit_Other ']')}) ] )