(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: always.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:OLD) op: Equal rhs: {($ VSub_Name '$WORKDIR') (/old)} spids: [222] ) ] spids: [222] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NEW) 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] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:states) op: Equal rhs: {(DQ ('equal first second difftype difflinks difffiles'))} spids: [238] ) ] spids: [238] ) (FuncDef name: build_trees body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[259])] spids: [257] ) (C {(rm)} {(-rf)} {($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')} {($ VSub_Name '$CONFLICTS')} ) (ForEach iter_name: i iter_words: [{($ VSub_Name '$states')}] do_arg_iter: F body: (DoGroup children: [ (ForEach iter_name: j iter_words: [{($ VSub_Name '$states')}] do_arg_iter: F body: (DoGroup children: [ (ForEach iter_name: k iter_words: [{($ VSub_Name '$states')}] do_arg_iter: F body: (DoGroup children: [ (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/) ($ VSub_Name '$i') (/) ($ VSub_Name '$j') (/) ($ VSub_Name '$k') } {($ VSub_Name '$NEW') (/) ($ VSub_Name '$i') (/) ($ VSub_Name '$j') (/) ($ VSub_Name '$k')} {($ VSub_Name '$TEST') (/) ($ VSub_Name '$i') (/) ($ VSub_Name '$j') (/) ($ VSub_Name '$k') } ) ] spids: [310 344] ) spids: [306 308] ) ] spids: [298 347] ) spids: [294 296] ) ] spids: [286 350] ) spids: [282 284] ) (C {(mkfifo)} {($ VSub_Name '$OLD') (/first/difftype/second/fifo)}) (C {(mkdir)} {($ VSub_Name '$TEST') (/first/difftype/second/fifo)}) (C {(ln)} {(-s)} {(DQ ('old link'))} {($ VSub_Name '$OLD') (/first/difflinks/second/link)}) (C {(ln)} {(-s)} {(DQ ('test link'))} {($ VSub_Name '$TEST') (/first/difflinks/second/link)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/first/difffiles/second/file)} spids: [451] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (bar))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/first/difffiles/second/file)} spids: [463] ) ] ) (C {(mkdir)} {($ VSub_Name '$NEW') (/second/second/difftype/dir)}) (C {(mkfifo)} {($ VSub_Name '$TEST') (/second/second/difftype/dir)}) (C {(ln)} {(-s)} {(DQ ('new link'))} {($ VSub_Name '$NEW') (/second/second/difflinks/link)}) (C {(ln)} {(-s)} {(DQ ('test link'))} {($ VSub_Name '$TEST') (/second/second/difflinks/link)}) (SimpleCommand words: [{(echo)} {(DQ (new))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/second/second/difffiles/file)} spids: [542] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (test))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/second/second/difffiles/file)} spids: [554] ) ] ) (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/first/first/fifo)}) (C {(mkdir)} {($ VSub_Name '$NEW') (/difftype/first/first/fifo)}) (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/difftype/difftype/one)}) (C {(mkdir)} {($ VSub_Name '$NEW') (/difftype/difftype/difftype/one)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/difftype/difftype/difftype/one)} spids: [612] ) ] ) (C {(mkdir)} {($ VSub_Name '$OLD') (/difftype/difftype/difftype/two)}) (SimpleCommand words: [{(echo)} {(DQ (baz))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/difftype/difftype/difftype/two)} spids: [630] ) ] ) (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$TEST') (/difftype/difftype/difftype/two)}) (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/difftype/difflinks/link)}) (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difftype/difftype/difflinks/link)}) (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$TEST') (/difftype/difftype/difflinks/link)}) (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difftype/difftype/difffiles/file)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/difftype/difftype/difffiles/file)} spids: [730] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (bar))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/difftype/difftype/difffiles/file)} spids: [742] ) ] ) (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/first/first/link)}) (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/first/first/link)}) (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/difftype/difftype/link)}) (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/difftype/difftype/link)}) (SimpleCommand words: [{(echo)} {(DQ (test))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/difflinks/difftype/difftype/link)} spids: [824] ) ] ) (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/difflinks/difflinks/link)}) (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/difflinks/difflinks/link)}) (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$TEST') (/difflinks/difflinks/difflinks/link)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/difffiles/first/first/file)} spids: [894] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (bar))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/difffiles/first/first/file)} spids: [906] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (old))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/difffiles/difftype/difftype/file)} spids: [931] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (new))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/difffiles/difftype/difftype/file)} spids: [943] ) ] ) (C {(mkfifo)} {($ VSub_Name '$TEST') (/difffiles/difftype/difftype/file)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/difffiles/difffiles/difffiles/conflict)} spids: [978] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('this is an old file\n'))} do_expansion: True here_end: EOF was_filled: T spids: [983] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/difffiles/difffiles/difffiles/conflict)} spids: [991] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('this is a new file\n'))} do_expansion: True here_end: EOF was_filled: T spids: [996] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/difffiles/difffiles/difffiles/conflict)} spids: [1004] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('this is a test file\n'))} do_expansion: True here_end: EOF was_filled: T spids: [1009] ) ] ) (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/adddir)} {($ VSub_Name '$NEW') (/adddir)} {($ VSub_Name '$TEST') (/adddir)} ) (C {(mkdir)} {($ VSub_Name '$NEW') (/adddir/conflict)}) (C {(touch)} {($ VSub_Name '$NEW') (/adddir/conflict/newfile)}) (C {(touch)} {($ VSub_Name '$TEST') (/adddir/conflict)}) (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/rmdir)} {($ VSub_Name '$NEW') (/rmdir)} {($ VSub_Name '$TEST') (/rmdir)} ) (ForEach iter_name: i iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}] do_arg_iter: F body: (DoGroup children: [(C {(mkdir)} {($ VSub_Name '$i') (/rmdir/extra)})] spids: [1100 1109] ) spids: [1094 1098] ) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/rmdir/extra/localfile.txt)} spids: [1118] ) ] ) (ForEach iter_name: i iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}] do_arg_iter: F body: (DoGroup children: [(C {(mkdir)} {($ VSub_Name '$i') (/rmdir/conflict)})] spids: [1144 1153] ) spids: [1138 1142] ) (C {(mkfifo)} {($ VSub_Name '$OLD') (/rmdir/conflict/difftype)}) (C {(mkdir)} {($ VSub_Name '$TEST') (/rmdir/conflict/difftype)}) (ForEach iter_name: i iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}] do_arg_iter: F body: (DoGroup children: [ (ForEach iter_name: j iter_words: [{(already)} {(old)} {(fromdir)} {(todir)}] do_arg_iter: F body: (DoGroup children: [ (C {(mkdir)} {(-p)} {($ VSub_Name '$i') (/dirchange/) ($ VSub_Name '$j')}) ] spids: [1204 1216] ) spids: [1194 1202] ) ] spids: [1186 1219] ) spids: [1178 1184] ) (ForEach iter_name: i iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}] do_arg_iter: F body: (DoGroup children: [ (C {(mkdir)} {($ VSub_Name '$i') (/dirchange/fromdir/extradir)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$i') (/dirchange/fromdir/extradir/file)} spids: [1265] ) ] ) ] spids: [1250 1271] ) spids: [1244 1248] ) (C {(mkfifo)} {($ VSub_Name '$TEST') (/dirchange/fromdir/extradir/fifo)}) (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$NEW') (/dirchange/fromdir/extradir)}) (ForEach iter_name: i iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}] do_arg_iter: F body: (DoGroup children: [(C {(mkdir)} {($ VSub_Name '$i') (/dirchange/fromdir/conflict)})] spids: [1316 1325] ) spids: [1310 1314] ) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/dirchange/fromdir/conflict/somefile)} spids: [1334] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (bar))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/dirchange/fromdir/conflict/somefile)} spids: [1346] ) ] ) (C {(mkfifo)} {($ VSub_Name '$NEW') (/dirchange/fromdir/conflict)}) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/dirchange/todir/difffile)} spids: [1377] ) ] ) (C {(mkdir)} {($ VSub_Name '$NEW') (/dirchange/todir/difffile)}) (SimpleCommand words: [{(echo)} {(DQ (baz))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/dirchange/todir/difffile/file)} spids: [1395] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (bar))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$TEST') (/dirchange/todir/difffile)} spids: [1407] ) ] ) (SimpleCommand words: [{(echo)} {(DQ (foo))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$OLD') (/dirchange/todir/difftype)} spids: [1428] ) ] ) (C {(mkdir)} {($ VSub_Name '$NEW') (/dirchange/todir/difftype)}) (SimpleCommand words: [{(echo)} {(DQ (baz))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$NEW') (/dirchange/todir/difftype/file)} spids: [1446] ) ] ) (C {(mkfifo)} {($ VSub_Name '$TEST') (/dirchange/todir/difftype)}) ] spids: [254] ) spids: [250 253] ) (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: [1503] ) ] spids: [1503] ) ] spids: [16777215 1491] ) ] spids: [16777215 1507] ) ] spids: [1467] ) spids: [1463 1466] ) (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: [1557] ) ] spids: [1557] ) ] spids: [16777215 1545] ) ] spids: [16777215 1561] ) ] spids: [1519] ) spids: [1515 1518] ) (FuncDef name: fifo body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-p)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a FIFO'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [1603] ) ] spids: [1603] ) ] spids: [16777215 1591] ) ] spids: [16777215 1607] ) ] spids: [1573] ) spids: [1569 1572] ) (FuncDef name: dir body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-d)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a directory'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [1649] ) ] spids: [1649] ) ] spids: [16777215 1637] ) ] spids: [16777215 1653] ) ] spids: [1619] ) spids: [1615 1618] ) (FuncDef name: link body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:val) op:Equal spids:[1673])] spids: [1671] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a link'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [1704] ) ] spids: [1704] ) ] spids: [16777215 1692] ) (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:val) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(readlink)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')}) ] ) left_token: <Left_Backtick '`'> spids: [1725 1731] ) } spids: [1724] ) ] spids: [1724] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$val'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('Link ') ($ VSub_Number '$1') (' should link to ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Number '$2') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [1767] ) ] spids: [1767] ) ] spids: [16777215 1752] ) ] spids: [16777215 1771] ) ] spids: [1708 1721] ) ] spids: [16777215 1774] ) ] spids: [1668] ) spids: [1664 1667] ) (FuncDef name: file body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:contents) op:Equal spids:[1797]) (assign_pair lhs:(LhsName name:sum) op:Equal spids:[1799]) ] spids: [1795] ) (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: [1830] ) ] spids: [1830] ) ] spids: [16777215 1818] ) (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: [1851 1857] ) } spids: [1850] ) ] spids: [1850] ) (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: [1890] ) ] spids: [1890] ) ] spids: [16777215 1878] ) ] spids: [16777215 1894] ) ] spids: [1834 1847] ) (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: [1914 1922] ) } spids: [1913] ) ] spids: [1913] ) (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: [1955] ) ] spids: [1955] ) ] spids: [16777215 1943] ) ] spids: [16777215 1959] ) ] spids: [1897 1910] ) ] spids: [16777215 1962] ) ] spids: [1792] ) spids: [1788 1791] ) (FuncDef name: conflict body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:sum) op:Equal spids:[1982])] spids: [1980] ) (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: [2013] ) ] spids: [2013] ) ] spids: [16777215 2001] ) (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: [2034 2042] ) } spids: [2033] ) ] spids: [2033] ) (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: [2075] ) ] spids: [2075] ) ] spids: [16777215 2063] ) ] spids: [16777215 2079] ) ] spids: [2017 2030] ) ] spids: [16777215 2082] ) ] spids: [1977] ) spids: [1973 1976] ) (FuncDef name: noconflict body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should not have a conflict'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED) op: Equal rhs: {(yes)} spids: [2122] ) ] spids: [2122] ) ] spids: [16777215 2110] ) ] spids: [16777215 2126] ) ] spids: [2094] ) spids: [2090 2093] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children:[(C {(id)} {(-u)})]) left_token: <Left_Backtick '`'> spids: [2135 2139] ) } {(-ne)} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('must be root'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [16777215 2148] ) ] spids: [16777215 2162] ) (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 2176] ) ] spids: [16777215 2185] ) (C {(build_trees)}) (SimpleCommand words: [ {($ VSub_Name '$COMMAND')} {(-r)} {(-d)} {($ VSub_Name '$WORKDIR')} {(-D)} {($ VSub_Name '$TEST')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/test.out)} spids: [2207] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)} spids: [2215] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ (' D /dirchange/fromdir/extradir/file\n') (' C /difffiles/difffiles/difffiles/conflict\n') (' C /difftype/difftype/difffiles/file\n') (' C /second/second/difffiles/file\n') ('Warnings:\n') (' Modified regular file remains: /dirchange/fromdir/conflict/somefile\n') (' Modified regular file remains: /first/difffiles/second/file\n') (' Modified symbolic link remains: /first/difflinks/second/link\n') (' Modified directory remains: /first/difftype/second/fifo\n') (' Modified directory remains: /rmdir/conflict/difftype\n') (' Non-empty directory remains: /rmdir/extra\n') (' Non-empty directory remains: /rmdir/conflict\n') ( ' Modified mismatch: /difffiles/difftype/difftype/file (regular file vs fifo file)\n' ) (' Removed file changed: /difffiles/first/first/file\n') (' Modified link changed: /difflinks/difflinks/difflinks/link (') (Right_DoubleQuote '"') (old) (Right_DoubleQuote '"') (' became ') (Right_DoubleQuote '"') (new) (Right_DoubleQuote '"') (')\n') (' Modified mismatch: /difflinks/difftype/difftype/link (symbolic link vs regular file)\n') (' Removed link changed: /difflinks/first/first/link (') (Right_DoubleQuote '"') (old) (Right_DoubleQuote '"') (' became ') (Right_DoubleQuote '"') (new) (Right_DoubleQuote '"') (')\n') (' New link conflict: /difftype/difftype/difflinks/link (') (Right_DoubleQuote '"') (new) (Right_DoubleQuote '"') (' vs ') (Right_DoubleQuote '"') (test) (Right_DoubleQuote '"') (')\n') ( ' Modified regular file changed: /difftype/difftype/difftype/one (fifo file became directory)\n' ) ( ' Modified symbolic link changed: /difftype/difftype/difftype/two (directory became regular file)\n' ) (' Remove mismatch: /difftype/first/first/fifo (fifo file became directory)\n') ( ' Modified directory changed: /dirchange/fromdir/conflict (directory became fifo file)\n' ) (' Modified directory changed: /dirchange/fromdir/extradir (directory became symbolic link)\n') ( ' Modified regular file changed: /dirchange/todir/difffile (regular file became directory)\n' ) (' Modified fifo file changed: /dirchange/todir/difftype (regular file became directory)\n') (' New file mismatch: /adddir/conflict (directory vs regular file)\n') (' Directory mismatch: ') ($ VSub_Name '$TEST') ('/adddir/conflict (regular file)\n') (' Directory mismatch: ') ($ VSub_Name '$TEST') ('/dirchange/todir/difffile (regular file)\n') (' Directory mismatch: ') ($ VSub_Name '$TEST') ('/dirchange/todir/difftype (fifo file)\n') (' New link conflict: /second/second/difflinks/link (') (Right_DoubleQuote '"') ('new link') (Right_DoubleQuote '"') (' vs ') (Right_DoubleQuote '"') ('test link') (Right_DoubleQuote '"') (')\n') (' New file mismatch: /second/second/difftype/dir (directory vs fifo file)\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [2220] ) ] ) (C {(echo)} {(DQ ('Differences for regular:'))}) (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:[2326])] spids: [2326] ) ] ) (C {(present)} {(/first/difftype/second/fifo)}) (C {(link)} {(/first/difflinks/second/link)} {(DQ ('test link'))}) (C {(file)} {(/first/difffiles/second/file)} {(DQ (bar))}) (C {(fifo)} {(/second/second/difftype/dir)}) (C {(link)} {(/second/second/difflinks/link)} {(DQ ('test link'))}) (C {(file)} {(/second/second/difffiles/file)} {(DQ (test))}) (C {(conflict)} {(/second/second/difffiles/file)} {(4f2ee8620a251fd53f06bb6112eb6ffa)}) (C {(missing)} {(/difftype/first/first/fifo)}) (C {(file)} {(/difftype/difftype/difftype/one)} {(DQ (foo))}) (C {(link)} {(/difftype/difftype/difftype/two)} {(DQ (bar))}) (C {(link)} {(/difftype/difftype/difflinks/link)} {(DQ (test))}) (C {(conflict)} {(/difftype/difftype/difffiles/file)} {(117f2bcd1f6491f6044e79e5a57a9229)}) (C {(missing)} {(/difflinks/first/first/link)}) (C {(file)} {(/difflinks/difftype/difftype/link)} {(DQ (test))}) (C {(link)} {(/difflinks/difflinks/difflinks/link)} {(DQ (test))}) (C {(missing)} {(/difffiles/first/first/file)}) (C {(fifo)} {(/difffiles/difftype/difftype/file)}) (C {(file)} {(/difffiles/difffiles/difffiles/conflict)} {(DQ ('this is a test file'))}) (C {(conflict)} {(/difffiles/difffiles/difffiles/conflict)} {(8261cfdd89280c4a6c26e4ac86541fe9)}) (C {(file)} {(/adddir/conflict)}) (C {(dir)} {(/rmdir/extra)}) (C {(file)} {(/rmdir/extra/localfile.txt)} {(DQ (foo))}) (C {(dir)} {(/rmdir/conflict/difftype)}) (C {(present)} {(/rmdir/conflict)}) (C {(missing)} {(/dirchange/fromdir/extradir/file)}) (C {(fifo)} {(/dirchange/fromdir/extradir/fifo)}) (C {(file)} {(/dirchange/fromdir/conflict/somefile)} {(DQ (bar))}) (C {(file)} {(/dirchange/todir/difffile)} {(DQ (bar))}) (C {(fifo)} {(/dirchange/todir/difftype)}) (C {(build_trees)}) (SimpleCommand words: [ {($ VSub_Name '$COMMAND')} {(-r)} {(-A)} {(SQ <'/first*'>)} {(-A)} {(SQ <'/second* /*di*'>)} {(-d)} {($ VSub_Name '$WORKDIR')} {(-D)} {($ VSub_Name '$TEST')} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/test1.out)} spids: [2632] ) ] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Name '$WORKDIR') (/correct1.out)} spids: [2642] ) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ (' D /dirchange/fromdir/extradir/file\n') (' U /difffiles/difffiles/difffiles/conflict\n') (' U /difffiles/difftype/difftype/file\n') (' A /difffiles/first/first/file\n') (' U /difflinks/difflinks/difflinks/link\n') (' U /difflinks/difftype/difftype/link\n') (' A /difflinks/first/first/link\n') (' U /difftype/difftype/difffiles/file\n') (' U /difftype/difftype/difflinks/link\n') (' D /difftype/difftype/difftype/one\n') (' U /difftype/difftype/difftype/two\n') (' U /dirchange/todir/difffile\n') (' U /dirchange/todir/difftype\n') (' U /adddir/conflict\n') (' A /adddir/conflict/newfile\n') (' A /dirchange/todir/difffile/file\n') (' A /dirchange/todir/difftype/file\n') (' U /second/second/difffiles/file\n') (' U /second/second/difflinks/link\n') (' D /second/second/difftype/dir\n') ('Warnings:\n') (' Modified regular file remains: /dirchange/fromdir/conflict/somefile\n') (' Modified regular file remains: /first/difffiles/second/file\n') (' Modified symbolic link remains: /first/difflinks/second/link\n') (' Modified directory remains: /first/difftype/second/fifo\n') (' Modified directory remains: /rmdir/conflict/difftype\n') (' Non-empty directory remains: /rmdir/extra\n') (' Non-empty directory remains: /rmdir/conflict\n') ( ' Modified directory changed: /dirchange/fromdir/conflict (directory became fifo file)\n' ) (' Modified directory changed: /dirchange/fromdir/extradir (directory became symbolic link)\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [2647] ) ] ) (C {(echo)} {(DQ ("Differences for -A '/first*' -A '/second* /*di*':"))}) (AndOr ops: [Op_DPipe] children: [ (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correct1.out)} {(-L)} {(DQ (test))} {($ VSub_Name '$WORKDIR') (/test1.out)} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[2714])] spids: [2714] ) ] ) (C {(present)} {(/first/difftype/second/fifo)}) (C {(link)} {(/first/difflinks/second/link)} {(DQ ('test link'))}) (C {(file)} {(/first/difffiles/second/file)} {(DQ (bar))}) (C {(missing)} {(/second/second/difftype/dir)}) (C {(link)} {(/second/second/difflinks/link)} {(DQ ('new link'))}) (C {(file)} {(/second/second/difffiles/file)} {(DQ (new))}) (C {(noconflict)} {(/second/second/difffiles/file)}) (C {(missing)} {(/difftype/first/first/fifo)}) (C {(missing)} {(/difftype/difftype/difftype/one)}) (C {(file)} {(/difftype/difftype/difftype/two)} {(DQ (baz))}) (C {(link)} {(/difftype/difftype/difflinks/link)} {(DQ (new))}) (C {(noconflict)} {(/difftype/difftype/difffiles/file)}) (C {(file)} {(/difftype/difftype/difffiles/file)} {(DQ (foo))}) (C {(link)} {(/difflinks/first/first/link)} {(DQ (new))}) (C {(link)} {(/difflinks/difftype/difftype/link)} {(DQ (new))}) (C {(link)} {(/difflinks/difflinks/difflinks/link)} {(DQ (new))}) (C {(file)} {(/difffiles/first/first/file)} {(DQ (bar))}) (C {(file)} {(/difffiles/difftype/difftype/file)} {(DQ (new))}) (C {(noconflict)} {(/difffiles/difffiles/difffiles/conflict)}) (C {(file)} {(/difffiles/difffiles/difffiles/conflict)} {(DQ ('this is a new file'))}) (C {(file)} {(/adddir/conflict/newfile)}) (C {(dir)} {(/rmdir/extra)}) (C {(file)} {(/rmdir/extra/localfile.txt)} {(DQ (foo))}) (C {(dir)} {(/rmdir/conflict/difftype)}) (C {(present)} {(/rmdir/conflict)}) (C {(missing)} {(/dirchange/fromdir/extradir/file)}) (C {(fifo)} {(/dirchange/fromdir/extradir/fifo)}) (C {(file)} {(/dirchange/fromdir/conflict/somefile)} {(DQ (bar))}) (C {(file)} {(/dirchange/todir/difffile/file)} {(DQ (baz))}) (C {(file)} {(/dirchange/todir/difftype/file)} {(DQ (baz))}) (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAILED))} {(Lit_Other '=')} {(no)} {(Lit_Other ']')}) ] )