(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'SHLIB_COMPAT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SHLIB_COMPAT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHLIB_COMPAT='> name:SHLIB_COMPAT) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {($ Id.VSub_Number 0)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'/shlib-compat.py'> } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-lt>} {<3>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number 0) <' orig-dir new-dir output-dir'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [19 32] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'orig='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'orig='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig='> name:orig) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'new='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new='> name:new) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'out='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} ) ] redirects: [] ) (command.Simple blame_tok:<shift> more_env:[] words:[{<shift>} {<3>}] redirects:[] do_fork:T) (command.ShFunction name_tok: <remove_empty> name: remove_empty body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<i>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-s>} {($ Id.VSub_DollarName i)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <test_file> name: test_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<i>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\!'> ch: '!' ) } {<-f>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'file not found: '> ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [135 148] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'rorig='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rorig='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rorig='> name:rorig) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <realpath> more_env: [] words: [{<realpath>} {($ Id.VSub_DollarName orig)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rnew='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rnew='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rnew='> name:rnew) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <realpath> more_env: [] words: [{<realpath>} {($ Id.VSub_DollarName new)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName rorig)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName rnew)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [i] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName list)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName i)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test_file> more_env: [] words: [ {<test_file>} {($ Id.VSub_DollarName orig) <'/'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName new) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Continue continue>) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$SHLIB_COMPAT'> more_env: [] words: [ {($ Id.VSub_DollarName SHLIB_COMPAT)} {<--out-orig>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c>} {<--out-new>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c>} {<-v>} {(DQ ($ Id.VSub_At '@'))} {($ Id.VSub_DollarName orig) <'/'> ($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName new) <'/'> ($ Id.VSub_DollarName i)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.cmp>} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.err>} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <remove_empty> more_env: [] words: [ {<remove_empty>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.cmp>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.err>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c>} {<-a>} {<-f>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <astyle> more_env: [] words: [ {<astyle>} {<--quiet>} {<--style> <Id.Lit_Equals '='> <bsd>} {<-k3>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c.orig>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c.orig>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {<-u>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.orig.c>} {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.new.c>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName out) <'/'> ($ Id.VSub_DollarName i) <.diff>} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [324 347] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] )