(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick '`'> spids: [1 3] ) (Lit_Other ':') (/command) (Lit_Other ':') (/usr/local/bin) (Lit_Other ':') (/usr/local/sbin) (Lit_Other ':') (/bin) (Lit_Other ':') (/sbin) (Lit_Other ':') (/usr/bin) (Lit_Other ':') (/usr/sbin) (Lit_Other ':') (/usr/X11R6/bin) (Lit_Other ':') (/usr/ucb) } spids: [0] ) ] spids: [0] ) (C {(export)} {(PATH)}) (C {(umask)} {(022)}) (FuncDef name: die body: (BraceGroup children: [ (C {(echo)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [37] ) spids: [33 36] ) (FuncDef name: catexe body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {($ VSub_Number '$1')} spids: [63] ) ] ) (C {(chmod)} {(Lit_Other '+') (x)} {($ VSub_Number '$1')}) ] spids: [58] ) spids: [54 57] ) (FuncDef name: filter_svstat body: (BraceGroup children: [ (C {(sed)} {(-e)} {(SQ <'s/[0-9]* seconds/x seconds/'>)} {(-e)} {(SQ <'s/pid [0-9]*/pid x/'>)}) ] spids: [82] ) spids: [78 81] ) (AndOr ops: [Op_DPipe] children: [(C {(rm)} {(-rf)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not clean up old rts-tmp'))})] ) (AndOr ops: [Op_DPipe] children: [(C {(mkdir)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not create new rts-tmp'))})] ) (AndOr ops: [Op_DPipe] children: [(C {(cd)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not change to rts-tmp'))})] ) (AndOr ops: [Op_DPipe] children: [(C {(mkdir)} {(test.sv)}) (C {(die)} {(DQ ('Could not create test.sv'))})] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TOP) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick '`'> spids: [153 155] ) } spids: [152] ) ] spids: [152] ) (C {(echo)} {(SQ <'--- envdir requires arguments'>)}) (Sentence child:(C {(envdir)} {(whatever)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir complains if it cannot read directory'>)}) (C {(ln)} {(-s)} {(env1)} {(env1)}) (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir complains if it cannot read file'>)}) (C {(rm)} {(env1)}) (C {(mkdir)} {(env1)}) (C {(ln)} {(-s)} {(Message)} {(env1/Message)}) (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir adds variables'>)}) (C {(rm)} {(env1/Message)}) (SimpleCommand words: [{(echo)} {(This)} {(is)} {(a)} {(test.)} {(This)} {(is)} {(only)} {(a)} {(test.)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(env1/Message)} spids:[267])] ) (Sentence child: (C {(envdir)} {(env1)} {(sh)} {(-c)} {(SQ <'echo $Message'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envdir removes variables'>)}) (C {(mkdir)} {(env2)}) (C {(touch)} {(env2/Message)}) (Sentence child: (C {(envdir)} {(env1)} {(envdir)} {(env2)} {(sh)} {(-c)} {(SQ <'echo $Message'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envuidgid insists on two arguments'>)}) (Sentence child:(C {(envuidgid)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child:(C {(envuidgid)} {(root)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envuidgid sets UID=0 for root'>)}) (Sentence child:(C {(envuidgid)} {(root)} {(printenv)} {(UID)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- envuidgid complains if it cannot run program'>)}) (Sentence child:(C {(envuidgid)} {(root)} {(./nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- fghack insists on an argument'>)}) (Sentence child:(C {(fghack)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- fghack complains if it cannot run program'>)}) (Sentence child:(C {(fghack)} {(./nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- fghack runs a program'>)}) (Sentence child:(C {(fghack)} {(sh)} {(-c)} {(SQ <'echo hi &'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- match handles literal string'>)}) (C {(matchtest)} {(one)} {(one)}) (C {(matchtest)} {(one)} {(SQ )}) (C {(matchtest)} {(one)} {(on)}) (C {(matchtest)} {(one)} {(onf)}) (C {(matchtest)} {(one)} {(SQ <'one*'>)}) (C {(matchtest)} {(one)} {(onetwo)}) (C {(echo)} {(SQ <'--- match handles empty string'>)}) (C {(matchtest)} {(SQ )} {(SQ )}) (C {(matchtest)} {(SQ )} {(x)}) (C {(echo)} {(SQ <'--- match handles full-line wildcard'>)}) (C {(matchtest)} {(SQ <'*'>)} {(SQ )}) (C {(matchtest)} {(SQ <'*'>)} {(x)}) (C {(matchtest)} {(SQ <'*'>)} {(SQ <'*'>)}) (C {(matchtest)} {(SQ <'*'>)} {(one)}) (C {(echo)} {(SQ <'--- match handles ending wildcard'>)}) (C {(matchtest)} {(SQ <'one*'>)} {(one)}) (C {(matchtest)} {(SQ <'one*'>)} {(SQ <'one*'>)}) (C {(matchtest)} {(SQ <'one*'>)} {(onetwo)}) (C {(matchtest)} {(SQ <'one*'>)} {(SQ )}) (C {(matchtest)} {(SQ <'one*'>)} {(x)}) (C {(matchtest)} {(SQ <'one*'>)} {(on)}) (C {(matchtest)} {(SQ <'one*'>)} {(onf)}) (C {(echo)} {(SQ <'--- match handles wildcard termination'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'x one'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'* one'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'xy one'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <one>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <' two'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'xy one '>)}) (C {(echo)} {(SQ <'--- match handles multiple wildcards'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'x one'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' y one'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'x y one'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <one>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' one'>)}) (C {(echo)} {(SQ <'--- fnmatch handles literal string'>)}) (C {(matchtest)} {(Fone)} {(one)}) (C {(matchtest)} {(Fone)} {(SQ )}) (C {(matchtest)} {(Fone)} {(on)}) (C {(matchtest)} {(Fone)} {(onf)}) (C {(matchtest)} {(Fone)} {(SQ <'one*'>)}) (C {(matchtest)} {(Fone)} {(onetwo)}) (C {(echo)} {(SQ <'--- fnmatch handles empty string'>)}) (C {(matchtest)} {(SQ <F>)} {(SQ )}) (C {(matchtest)} {(SQ <F>)} {(x)}) (C {(echo)} {(SQ <'--- fnmatch handles full-line wildcard'>)}) (C {(matchtest)} {(SQ <'F*'>)} {(SQ )}) (C {(matchtest)} {(SQ <'F*'>)} {(x)}) (C {(matchtest)} {(SQ <'F*'>)} {(SQ <'*'>)}) (C {(matchtest)} {(SQ <'F*'>)} {(one)}) (C {(echo)} {(SQ <'--- fnmatch handles ending wildcard'>)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(one)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(SQ <'one*'>)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(onetwo)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(SQ )}) (C {(matchtest)} {(SQ <'Fone*'>)} {(x)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(on)}) (C {(matchtest)} {(SQ <'Fone*'>)} {(onf)}) (C {(echo)} {(SQ <'--- fnmatch handles wildcard termination'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'x one'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'* one'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'xy one'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <one>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <' two'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'xy one '>)}) (C {(echo)} {(SQ <'--- fnmatch handles multiple wildcards'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'x one'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' y one'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'x y one'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <one>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' one'>)}) (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' one'>)}) (C {(echo)} {(SQ <'--- multilog prints nothing with no actions'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1159 1170] ) (C {(multilog)}) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog e prints to stderr'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1188 1199] ) (SimpleCommand words: [{(multilog)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1207])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog inserts newline after partial final line'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (Pipeline children: [(C {(echo)} {(two)}) (C {(tr)} {(-d)} {(SQ <'\\012'>)})] negated: F ) ] ) spids: [1222 1243] ) (SimpleCommand words: [{(multilog)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1251])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles multiple actions'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1266 1277] ) (SimpleCommand words: [{(multilog)} {(e)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1287])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles wildcard -'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1302 1313] ) (SimpleCommand words: [{(multilog)} {(SQ <'-*'>)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1325])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles literal +'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1340 1351] ) (SimpleCommand words: [{(multilog)} {(SQ <'-*'>)} {(SQ <'+one'>)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1367])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles fnmatch -'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1382 1393] ) (SimpleCommand words: [{(multilog)} {(F)} {(SQ <'-*'>)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1407])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles fnmatch +'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (Sentence child:(C {(echo)} {(two)}) terminator:<Op_Semi ';'>) (C {(echo)} {(one)} {(two)}) ] ) spids: [1422 1440] ) (SimpleCommand words: [{(multilog)} {(F)} {(SQ <'-*'>)} {(SQ <'+*o*'>)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1458])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles long lines for stderr'>)}) (Sentence child: (Pipeline children: [ (C {(echo)} { ( 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 ) } ) (SimpleCommand words: [{(multilog)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1484])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child: (Pipeline children: [ (C {(echo)} { ( 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 ) } ) (SimpleCommand words: [{(multilog)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1503])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child: (Pipeline children: [ (C {(echo)} { ( 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 ) } ) (SimpleCommand words: [{(multilog)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1522])] ) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- multilog handles status files'>)}) (C {(rm)} {(-f)} {(test.status)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [1543 1554] ) (C {(multilog)} {(Lit_Other '=') (test.status)}) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (Pipeline children: [ (SimpleCommand words: [{(uniq)} {(-c)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(test.status)} spids:[1572])] ) (C {(sed)} {(SQ <'s/[ \t]*[ \t]/_/g'>)}) ] negated: F ) (C {(echo)} {(SQ <'--- multilog t has the right format'>)}) (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(ONE)}) terminator:<Op_Semi ';'>) (C {(echo)} {(TWO)}) ] ) spids: [1591 1602] ) (SimpleCommand words: [{(multilog)} {(t)} {(e)}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1612])] ) (C {(sed)} {(SQ <'s/[0-9a-f]/x/g'>)}) ] negated: F ) (C {(echo)} {(SQ <'--- svstat handles new and nonexistent directories'>)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {(echo)} {(hi)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/run)} spids:[1646])] spids: [1629 1644] ) (C {(chmod)} {(755)} {(test.sv/run)}) (C {(touch)} {(test.sv/down)}) (Sentence child:(C {(svstat)} {(test.sv)} {(nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- svc handles new and nonexistent directories'>)}) (Sentence child:(C {(svc)} {(test.sv)} {(nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- svok handles new and nonexistent directories'>)}) (Sentence child:(C {(svok)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child:(C {(svok)} {(nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- supervise handles nonexistent directories'>)}) (Sentence child:(C {(supervise)} {(nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- pgrphack insists on an argument'>)}) (Sentence child:(C {(pgrphack)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- pgrphack complains if it cannot run program'>)}) (Sentence child:(C {(pgrphack)} {(./nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- pgrphack runs a program'>)}) (Sentence child:(C {(pgrphack)} {(echo)} {(ok)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- readproctitle insists on an argument'>)}) (Sentence child: (SimpleCommand words: [{(readproctitle)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[1801])] ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- readproctitle insists on last argument being at least five bytes'>)}) (Sentence child: (SimpleCommand words: [{(readproctitle)} {(..........)} {(four)}] redirects: [(Redir op_id:Redir_Less fd:16777215 arg_word:{(/dev/null)} spids:[1823])] ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock requires arguments'>)}) (Sentence child:(C {(setlock)} {(whatever)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock complains if it cannot create lock file'>)}) (Sentence child: (C {(setlock)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock -x exits quietly if it cannot create lock file'>)}) (Sentence child: (C {(setlock)} {(-x)} {(nonexistent/lock)} {(echo)} {(wrong)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock creates lock file'>)}) (Sentence child:(C {(setlock)} {(lock)} {(echo)} {(ok)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock does not truncate lock file'>)}) (SimpleCommand words: [{(echo)} {(ok)}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(lock)} spids:[1920])] ) (Sentence child:(C {(setlock)} {(lock)} {(cat)} {(lock)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(rm)} {(-f)} {(lock)}) (C {(echo)} {(SQ <'--- setlock -n complains if file is already locked'>)}) (Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -n lock echo one && echo two'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- setlock -nx exits quietly if file is already locked'>)}) (Sentence child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -nx lock echo one && echo two'>)}) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- softlimit insists on an argument'>)}) (Sentence child:(C {(softlimit)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- softlimit complains if it cannot run program'>)}) (Sentence child:(C {(softlimit)} {(./nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- softlimit -p0 still allows exec'>)}) (Sentence child:(C {(softlimit)} {(-p0)} {(echo)} {(./nonexistent)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- supervise starts, svok works, svup works, svstat works, svc -x works'>)}) (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>) (Until cond: [(C {(svok)} {(test.sv)})] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2113 2120]) ) (Sentence child:(C {(svup)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child:(C {(svup)} {(-l)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (Sentence child:(C {(svup)} {(-L)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(svstat)} {(test.sv)}) terminator:<Op_Semi ';'>) (Sentence child: (C {(echo)} {($ VSub_QMark '$?')}) terminator: <Op_Semi ';'> ) ] ) spids: [2153 2165] ) (C {(filter_svstat)}) ] negated: F ) (Sentence child:(C {(svc)} {(-x)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(wait)}) (Sentence child:(C {(svstat)} {(test.sv)}) terminator:<Op_Semi ';'>) (C {(echo)} {($ VSub_QMark '$?')}) (C {(echo)} {(SQ <'--- svc -ox works'>)}) (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>) (Until cond: [(C {(svok)} {(test.sv)})] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2212 2219]) ) (C {(svc)} {(-ox)} {(test.sv)}) (C {(wait)}) (C {(echo)} {(SQ <'--- svstat and svup work for up services'>)}) (SimpleCommand words: [{(catexe)} {(test.sv/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('#!/bin/sh\n') ('sleep 1\n') ('svstat .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -l .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -L .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svup .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -L .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -l .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [2240] ) ] ) (Sentence child: (Pipeline children:[(C {(supervise)} {(test.sv)}) (C {(filter_svstat)})] negated:F) terminator: <Op_Amp '&'> ) (Until cond: [(C {(svok)} {(test.sv)})] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2286 2293]) ) (C {(svc)} {(-ox)} {(test.sv)}) (C {(wait)}) (C {(echo)} {(SQ <'--- svstat and svup work for logged services'>)}) (SimpleCommand words: [{(catexe)} {(test.sv/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('#!/bin/sh\n') ('sleep 1\n') ('svstat .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -l .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -L .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svup .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -L .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -l .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [2314] ) ] ) (SimpleCommand words: [{(catexe)} {(test.sv/log)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('exec cat\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2348] ) ] ) (Sentence child: (Pipeline children:[(C {(supervise)} {(test.sv)}) (C {(filter_svstat)})] negated:F) terminator: <Op_Amp '&'> ) (Until cond: [(C {(svok)} {(test.sv)})] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2370 2377]) ) (C {(svc)} {(-Lolox)} {(test.sv)}) (C {(wait)}) (C {(rm)} {(-f)} {(test.sv/log)}) (C {(echo)} {(SQ <'--- svc -u works'>)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (Sentence child:(C {(echo)} {(echo)} {(first)}) terminator:<Op_Semi ';'>) (C {(echo)} {(mv)} {(run2)} {(run)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/run)} spids:[2426])] spids: [2400 2424] ) (C {(chmod)} {(755)} {(test.sv/run)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (Sentence child:(C {(echo)} {(echo)} {(second)}) terminator:<Op_Semi ';'>) (C {(echo)} {(svc)} {(-x)} {(.)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/run2)} spids:[2462])] spids: [2436 2460] ) (C {(chmod)} {(755)} {(test.sv/run2)}) (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>) (Until cond: [(C {(svok)} {(test.sv)})] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2484 2491]) ) (C {(svc)} {(-u)} {(test.sv)}) (C {(wait)}) (C {(echo)} {(SQ <'--- supervise runs stop on down'>)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {(svc)} {(-dx)} {(.)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/run)} spids:[2526])] spids: [2507 2524] ) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {(echo)} {(KW_In in)} {(stop)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/stop)} spids:[2548])] spids: [2529 2546] ) (C {(rm)} {(-f)} {(test.sv/down)}) (C {(chmod)} {(Lit_Other '+') (x)} {(test.sv/run)} {(test.sv/stop)}) (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>) (C {(wait)}) (C {(rm)} {(-f)} {(test.sv/stop)}) (C {(echo)}) (C {(echo)} {(SQ <'--- supervise stops log after main'>)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {(SQ <'exec ../../sleeper'>)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/log)} spids:[2606])] spids: [2589 2604] ) (C {(chmod)} {(Lit_Other '+') (x)} {(test.sv/log)}) (C {(supervise)} {(test.sv)}) (C {(wait)}) (C {(rm)} {(-f)} {(test.sv/log)}) (C {(echo)}) (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>) (C {(echo)} {(SQ <'exec ../../sleeper'>)}) ] ) redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(test.sv/run)} spids:[2647])] spids: [2630 2645] ) (C {(chmod)} {(755)} {(test.sv/run)}) (C {(echo)} {(SQ <'--- svc sends right signals'>)}) (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>) (C {(sleep)} {(1)}) (C {(svc)} {(-a)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-c)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-h)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-i)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-t)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-q)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-1)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-2)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-w)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-d)} {(test.sv)}) (C {(sleep)} {(1)}) (C {(svc)} {(-xk)} {(test.sv)}) (C {(wait)}) (C {(mkdir)} {(service)} {(svc0)} {(svc1)} {(svc2)} {(svc2/log)}) (SimpleCommand words: [{(catexe)} {(svc0/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('echo svc0 ran >> output\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2802] ) ] ) (SimpleCommand words: [{(catexe)} {(svc1/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('echo svc1 ran\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2813] ) ] ) (SimpleCommand words: [{(catexe)} {(svc1/log)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('cat > output\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2824] ) ] ) (SimpleCommand words: [{(catexe)} {(svc2/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('echo svc2 ran\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2835] ) ] ) (SimpleCommand words: [{(catexe)} {(svc2/log/run)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('#!/bin/sh\n') ('cat > ../output\n'))} do_expansion: True here_end: EOF was_filled: T spids: [2846] ) ] ) (C {(ln)} {(-s)} { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick '`'> spids: [2857 2859] ) (/svc) (Lit_Other '[') (0-9) (Lit_Other ']') } {(service/)} ) (Sentence child: (SimpleCommand words: [ {(svscan)} { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_Backtick '`'> spids: [2870 2872] ) (/service) } ] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(svscan.log)} spids:[2875]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2878]) ] ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:svscanpid) op: Equal rhs: {($ VSub_Bang '$!')} spids: [2883] ) ] spids: [2883] ) (Until cond: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(svok)} {(svc0)}) (C {(svok)} {(svc1)}) (C {(svok)} {(svc2)}) (C {(svok)} {(svc2/log)}) ] ) ] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2911 2918]) ) (C {(kill)} {($ VSub_Name '$svscanpid')}) (SimpleCommand words: [{(wait)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[2930]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2933]) ] ) (C {(svc)} {(-dx)} {(svc) (Lit_Other '[') (0-9) (Lit_Other ']')} {(svc2/log)}) (Until cond: [ (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (Pipeline children:[(C {(svok)} {(svc0)})] negated:T) (Pipeline children:[(C {(svok)} {(svc1)})] negated:T) (Pipeline children:[(C {(svok)} {(svc2)})] negated:T) (Pipeline children:[(C {(svok)} {(svc2/log)})] negated:T) ] ) ] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[2980 2987]) ) (C {(head)} {(-n)} {(1)} {(svc) (Lit_Other '[') (0-9) (Lit_Other ']') (/output)}) (C {(cat)} {(svscan.log)}) (C {(rm)} {(-r)} {(svc0)} {(svc1)} {(svc2)} {(service)}) (C {(echo)} {(SQ <'--- tai64n has the right format'>)}) (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(ONE)}) terminator:<Op_Semi ';'>) (C {(echo)} {(TWO)}) ] ) spids: [3035 3046] ) (C {(tai64n)}) (C {(sed)} {(SQ <'s/[0-9a-f]/x/g'>)}) ] negated: F ) (C {(echo)} {(SQ <'--- tai64nlocal handles non-@ lines correctly'>)}) (Sentence child: (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>) (C {(echo)} {(two)}) ] ) spids: [3067 3078] ) (C {(tai64nlocal)}) ] negated: F ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_QMark '$?')}) (C {(cd)} {(..)}) (C {(rm)} {(-rf)} {(rts-tmp)}) ] )