(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:progname)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(basename)} {($ VSub_Number '$0')})])
                  left_token: <Left_CommandSub '$('>
                  spids: [58 62]
                )
              )
            }
          spids: [56]
        )
      ]
      spids: [56]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:usage)
          op: Equal
          rhs: {(DQ ('usage: ') (${ VSub_Name progname) (' [--ssh SSH] HOST COMMAND ...'))}
          spids: [66]
        )
      ]
      spids: [66]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:help)
          op: Equal
          rhs: 
            {
              (DQ ('Run a glibc test COMMAND on the remote machine HOST, via ssh,\n') 
                ('preserving the current working directory, and respecting quoting.\n') ('\n') ("If the '--ssh SSH' flag is present, use SSH as the SSH command,\n") 
                ("instead of ordinary 'ssh'.\n") ('\n') ("If the '--timeoutfactor FACTOR' flag is present, set TIMEOUTFACTOR on\n") 
                ('the remote machine to the specified FACTOR.\n') ('\n') ('To use this to run glibc tests, invoke the tests as follows:\n') ('\n') ('  ') (Lit_Other '$') 
                (" make test-wrapper='ABSPATH/cross-test-ssh.sh HOST' tests\n") ('\n') ('where ABSPATH is the absolute path to this script, and HOST is the\n') 
                ('name of the machine to connect to via ssh.\n') ('\n') ('If you need to connect to the test machine as a different user, you\n') 
                ('may specify that just as you would to SSH:\n') ('\n') ('  ') (Lit_Other '$') (" make test-wrapper='ABSPATH/cross-test-ssh.sh USER@HOST' tests\n") ('\n') 
                ('Naturally, the remote user must have an appropriate public key, and\n') ('you will want to ensure that SSH does not prompt interactively for a\n') 
                ('password on each connection.\n') ('\n') ("HOST and the build machines (on which 'make check' is being run) must\n") 
                ('share a filesystem; all files needed by the tests must be visible at\n') ('the same paths on both machines.\n') ('\n') (${ VSub_Name progname) 
                (' runs COMMAND in the same directory on the HOST that\n') (${ VSub_Name progname) (' itself is run in on the build machine.\n') ('\n') 
                ('The command and arguments are passed to the remote host in a way that\n') ('avoids any further shell substitution or expansion, on the assumption\n') 
                ('that the shell on the build machine has already done them\n') (appropriately.)
              )
            }
          spids: [75]
        )
      ]
      spids: [75]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ssh) op:Equal rhs:{(SQ <ssh>)} spids:[126])]
      spids: [126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:timeoutfactor)
          op: Equal
          rhs: {($ VSub_Name '$TIMEOUTFACTOR')}
          spids: [131]
        )
      ]
      spids: [131]
    )
    (WhileUntil
      keyword: <KW_While while>
      cond: [
        (Sentence
          child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(DQ (--ssh))}]
                  action: [
                    (C {(shift)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(1)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [16777215 182]
                        )
                      ]
                      spids: [16777215 188]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ssh)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                          spids: [191]
                        )
                      ]
                      spids: [191]
                    )
                  ]
                  spids: [160 163 197 16777215]
                )
                (case_arm
                  pat_list: [{(DQ (--timeoutfactor))}]
                  action: [
                    (C {(shift)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(1)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [16777215 223]
                        )
                      ]
                      spids: [16777215 229]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:timeoutfactor)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                          spids: [232]
                        )
                      ]
                      spids: [232]
                    )
                  ]
                  spids: [201 204 238 16777215]
                )
                (case_arm
                  pat_list: [{(DQ (--help))}]
                  action: [
                    (C {(echo)} {(DQ ($ VSub_Name '$usage'))})
                    (C {(echo)} {(DQ ($ VSub_Name '$help'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
                  ]
                  spids: [242 245 267 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [271 272 278 16777215]
                )
              ]
              spids: [150 156 281]
            )
            (C {(shift)})
          ]
          spids: [147 286]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(1)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_Name '$usage'))}]
              redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ("Type '") (${ VSub_Name progname) (" --help' for more detailed help."))}
              ]
              redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 302]
        )
      ]
      spids: [16777215 333]
    )
    (CommandList
      children: [
        (Sentence
          child: 
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:host)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [336]
                )
              ]
              spids: [336]
            )
          terminator: <Op_Semi ';'>
        )
        (C {(shift)})
      ]
    )
    (FuncDef
      name: bourne_quote
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:arg) op:Equal spids:[361])
                (assign_pair lhs:(LhsName name:qarg) op:Equal spids:[363])
              ]
              spids: [359]
            )
            (ForEach
              iter_name: arg
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:qarg)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name arg>
                                suffix_op: 
                                  (PatSub
                                    pat: {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">)}
                                    replace: 
                                      {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar '\\\\'>
                                        ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">)
                                      }
                                    do_all: T
                                    do_prefix: F
                                    do_suffix: F
                                  )
                                spids: [381 391]
                              )
                            }
                          spids: [380]
                        )
                      ]
                      spids: [380]
                    )
                    (C {(echo)} {(-n)} {(DQ ("'") ($ VSub_Name '$qarg') ("' "))})
                  ]
                  spids: [377 405]
                )
              spids: [371 375]
            )
          ]
          spids: [356]
        )
      spids: [351 355]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:command)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(bourne_quote)} {(DQ ($ VSub_At '$@'))})])
                  left_token: <Left_CommandSub '$('>
                  spids: [418 424]
                )
              )
            }
          spids: [416]
        )
      ]
      spids: [416]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:command)
          op: Equal
          rhs: 
            {
              (DQ ('cd ') 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(bourne_quote)} {(DQ ($ VSub_Name '$PWD'))})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [434 440]
                ) ('\n') (${ VSub_Name command)
              )
            }
          spids: [431]
        )
      ]
      spids: [431]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$timeoutfactor'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:command)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('export TIMEOUTFACTOR=') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(bourne_quote)} {(DQ ($ VSub_Name '$timeoutfactor'))})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [468 474]
                        ) ('\n') (${ VSub_Name command)
                      )
                    }
                  spids: [465]
                )
              ]
              spids: [465]
            )
          ]
          spids: [16777215 462]
        )
      ]
      spids: [16777215 481]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:full_command)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(bourne_quote)} {(DQ (${ VSub_Name command))})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [498 506]
                )
              )
            }
          spids: [496]
        )
      ]
      spids: [496]
    )
    (C {($ VSub_Name '$ssh')} {(DQ ($ VSub_Name '$host'))} {(/bin/sh)} {(-c)} 
      {(DQ ($ VSub_Name '$full_command'))}
    )
  ]
)