(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tid) op: assign_op.Equal rhs: {(DQ <'reexec tests'>)} spids: [7] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHD_ORIG) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$SSHD')} spids: [13] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHD_COPY) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OBJ') <'/sshd'>} spids: [16] ) ] ) (command.ShFunction name: start_sshd_copy body: (BraceGroup children: [ (C {<cp>} {($ Id.VSub_DollarName '$SSHD_ORIG')} {($ Id.VSub_DollarName '$SSHD_COPY')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$SSHD_COPY')} spids: [39] ) ] ) (C {<start_sshd>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SSHD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$SSHD_ORIG')} spids: [46] ) ] ) ] ) ) (command.ShFunction name: copy_tests body: (BraceGroup children: [ (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)}) (command.ForEach iter_name: p iter_words: [{(${ Id.VSub_Name SSH_PROTOCOLS)}] do_arg_iter: F body: (command.DoGroup children: [ (C {<verbose>} {(DQ ($ Id.VSub_DollarName '$tid') <': proto '> ($ Id.VSub_DollarName '$p'))} ) (command.Simple words: [ {(${ Id.VSub_Name SSH)} {<-nqo>} {(DQ <'Protocol='> ($ Id.VSub_DollarName '$p'))} {<-F>} {($ Id.VSub_DollarName '$OBJ') <'/ssh_config'>} {<somehost>} {<cat>} {(${ Id.VSub_Name DATA)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name COPY)} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<fail>} {(DQ <'ssh cat '> ($ Id.VSub_DollarName '$DATA') <' failed'>)}) ] spids: [129 142] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cmp>} {(${ Id.VSub_Name DATA)} {(${ Id.VSub_Name COPY)}) (C {<fail>} {(DQ <'corrupted copy'>)}) ] ) (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)}) ] ) ) ] ) ) (C {<verbose>} {(DQ <'test config passing'>)}) (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>} ) (C {<start_sshd>}) (command.Simple words: [{<echo>} {(DQ <'InvalidXXX=no'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} ) ] do_fork: T ) (C {<copy_tests>}) (C {<stop_sshd>}) (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$os'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <cygwin>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<verbose>} {(DQ <'test reexec fallback'>)}) (C {<start_sshd_copy>}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$SSHD_COPY')}) (C {<copy_tests>}) (C {<stop_sshd>}) (C {<verbose>} {(DQ <'test reexec fallback without privsep'>)}) (C {<cp>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config.orig'>} {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} ) (command.Simple words: [{<echo>} {(DQ <'UsePrivilegeSeparation=no'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$OBJ') <'/sshd_config'>} ) ] do_fork: T ) (C {<start_sshd_copy>}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$SSHD_COPY')}) (C {<copy_tests>}) (C {<stop_sshd>}) ] spids: [237 255] ) ] ) ] )