(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bindir)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [3]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VERSION)
          op: assign_op.Equal
          rhs: {(1.0)}
          spids: [7]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(egrep)} {(-h)} {(Id.Lit_Splice '@deftypefu') (Id.Lit_QMark '?') (nx) (Id.Lit_QMark '?')} 
          {(Id.Lit_Star '*') (.texi)} {(../linuxthreads/) (Id.Lit_Star '*') (.texi)}
        )
        (C {(sed)} {(-e)} 
          {
            (SQ 
              (Token
                id: Id.Lit_Chars
                val: 
's/@deftypefunx*[[:space:]]*\\({[^{]*}\\|[[:alnum:]_]*\\)[[:space:]]*\\([[:alnum:]_]*\\).*/\\2/'
                span_id: 34
              )
            )
          } {(-e)} 
          {
            (SQ 
              (Token
                id: Id.Lit_Chars
                val: 
's/@deftypefn {[^}]*function}*[[:space:]]*\\({[^{]*}\\|[[:alnum:]_]*\\)[[:space:]]*\\([[:alnum:]_]*\\).*/\\2/'
                span_id: 40
              )
            )
          } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^@/d' span_id:46))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^obstack_/d' span_id:56))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^\\([lf]\\|\\)stat\\(\\|64\\)$/d' span_id:62))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^mknod$/d' span_id:68))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^signbit$/d' span_id:78))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^sigsetjmp$/d' span_id:84))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^pthread_cleanup/d' span_id:94))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^IFTODT$/d' span_id:100))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^DTTOIF$/d' span_id:106))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__fwriting$/d' span_id:116))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^__fwritable$/d' span_id:122))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__fsetlocking$/d' span_id:128))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__freading$/d' span_id:138))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^__freadable$/d' span_id:144))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__fpurge$/d' span_id:150))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__fpending$/d' span_id:160))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^__flbf$/d' span_id:166))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^__fbufsize$/d' span_id:172))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^alloca$/d' span_id:182))})
        (command.Simple
          words: [{(sort)} {(-u)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:191)
              fd: -1
              arg_word: {(DOCUMENTED)}
            )
          ]
        )
      ]
      negated: F
    )
    (command.Pipeline
      children: [
        (C {(nm)} {(--extern)} {(--define)} {($ Id.VSub_DollarName '$bindir') (/libc.so)} 
          {($ Id.VSub_DollarName '$bindir') (/math/libm.so)} {($ Id.VSub_DollarName '$bindir') (/rt/librt.so)} 
          {($ Id.VSub_DollarName '$bindir') (/linuxthreads/libpthread.so)} {($ Id.VSub_DollarName '$bindir') (/dlfcn/libdl.so)} 
          {($ Id.VSub_DollarName '$bindir') (/crypt/libcrypt.so)} {($ Id.VSub_DollarName '$bindir') (/login/libutil.so)}
        )
        (C {(egrep)} {(DQ (' [TW] ([[:alpha:]]|_[[:alpha:]])'))})
        (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\(@.*\\)//' span_id:236))})
        (C {(cut)} {(-b)} {(12-)})
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_IO/d' span_id:254))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_dl/d' span_id:260))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_pthread/d' span_id:266))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_obstack/d' span_id:272))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_argp/d' span_id:282))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_authenticate$/d' span_id:288))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_environ$/d' span_id:294))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_errno$/d' span_id:304))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_h_errno$/d' span_id:310))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_longjmp$/d' span_id:316))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_mcleanup$/d' span_id:326))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_rpc_dtablesize$/d' span_id:332))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_seterr_reply$/d' span_id:338))}
        )
        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^_nss/d' span_id:348))} {(-e)} 
          {(SQ (Token id:Id.Lit_Chars val:'/^_setjmp$/d' span_id:354))}
        )
        (command.Simple
          words: [{(sort)} {(-u)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:363)
              fd: -1
              arg_word: {(AVAILABLE)}
            )
          ]
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:370)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 408
          stdin_parts: [
            ('<!DOCTYPE HTML PUBLIC ')
            (Id.Right_DoubleQuote '"')
            ('-//IETF//DTD HTML//EN')
            (Id.Right_DoubleQuote '"')
            ('>\n')
            ('<html>\n')
            ('  <head>\n')
            ('    <title>Undocumented glibc functions</title>\n')
            ('  </head>\n')
            ('\n')
            ('  <body>\n')
            ('    <center><h1>Undocumented <tt>glibc</tt> functions</h1></center>\n')
            ('\n')
            ('    <p>The following table includes names of the function in glibc\n')
            ('    which are not yet documented in the manual.  This list is\n')
            ('    automatically created and therefore might contain errors.  Please\n')
            ('    check the latest manual (available from the CVS archive) before\n')
            ('    starting to work.  It might also be good to let me know in\n')
            ('    advanace on which functions you intend to work to avoid\n')
            ('    duplication.</p>\n')
            ('\n')
            ('    <p>A few comments:</p>\n')
            ('\n')
            ('    <ul>\n')
            ('      <li>Some functions in the list are much less important than\n')
            ('      others.  Please prioritize.</li>\n')
            ('\n')
            ('      <li>Similarly for the LFS functions (those ending in 64).</li>\n')
            ('    </ul>\n')
            ('\n')
            ('    <p>The function sombody already volunteered to document are marked\n')
            ('    with a reference to the person.</p>\n')
            ('\n')
            ('    <center><table>\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:n) op:assign_op.Equal rhs:{(0)} spids:[410])]
    )
    (command.Pipeline
      children: [
        (C {(diff)} {(-y)} {(--width) (Id.Lit_Equals '=') (60)} {(--suppress-common-lines)} {(DOCUMENTED)} 
          {(AVAILABLE)}
        )
        (C {(expand)})
        (C {(cut)} {(-b)} {(33-)})
        (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'/^[[:space:]]*$/d' span_id:444))})
        (command.WhileUntil
          keyword: (Token id:Id.KW_While val:while span_id:449)
          cond: [
            (command.Sentence
              child: (C {(read)} {(name)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:454)
            )
          ]
          body: 
            (command.DoGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:line)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ($ Id.VSub_DollarName '$line') ('\n') ('<td><tt>') 
                            ($ Id.VSub_DollarName '$name') ('</tt></td>')
                          )
                        }
                      spids: [459]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:n)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:470)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(expr)} {($ Id.VSub_DollarName '$n')} {(Id.Lit_Other '+')} {(1)})
                                ]
                              )
                          )
                        }
                      spids: [469]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$n')} {(-eq)} {(4)} 
                              {(Id.Lit_RBracket ']')}
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:492)
                        )
                      ]
                      action: [
                        (C {(echo)} {(DQ ('<tr>\n') ($ Id.VSub_DollarName '$line') ('\n') ('</tr>'))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:line)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [507]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:n)
                              op: assign_op.Equal
                              rhs: {(0)}
                              spids: [512]
                            )
                          ]
                        )
                      ]
                      spids: [481 494]
                    )
                  ]
                )
              ]
            )
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$n')} {(-gt)} {(0)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:531)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$n')} {(-eq)} {(1)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:547)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:line)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$line') ('\n') ('<td></td>'))}
                          spids: [552]
                        )
                      ]
                    )
                  ]
                  spids: [536 549]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$n')} {(-eq)} {(2)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:574)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:line)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$line') ('\n') ('<td></td>'))}
                          spids: [579]
                        )
                      ]
                    )
                  ]
                  spids: [563 576]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$n')} {(-eq)} {(3)} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:601)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:line)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$line') ('\n') ('<td></td>'))}
                          spids: [606]
                        )
                      ]
                    )
                  ]
                  spids: [590 603]
                )
              ]
            )
            (C {(echo)} {(DQ ('<tr>\n') ($ Id.VSub_DollarName '$line') ('\n') ('</tr>'))})
          ]
          spids: [520 533]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:631)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 652
          stdin_parts: [
            ('    </table></center>\n')
            ('\n')
            ('    <hr>\n')
            ('    <address><a href=')
            (Id.Right_DoubleQuote '"')
            ('mailto:drepper@redhat.com')
            (Id.Right_DoubleQuote '"')
            ('>Ulrich Drepper</a></address>\n')
            ('Generated on ')
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:643)
              command_list: (command.CommandList children:[(C {(date)})])
            )
            (' with documented.sh version ')
            ($ Id.VSub_DollarName '$VERSION')
            ('\n')
            ('  </body>\n')
            ('</html>\n')
          ]
        )
      ]
    )
  ]
)