(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDRPROG='> name:NDRPROG) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 0> var_name: 0 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <'/ndrgen1'> ) } spids: [83] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INCDIR='> name:INCDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name ROOT) <'/usr/include/smbsrv'>} spids: [94] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGNAME='> name:PROGNAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {($ Id.VSub_Number 0)}) right: <Id.Backtick_Right '`'> ) } spids: [101] ) ] redirects: [] ) (command.ShFunction name: ndrgen_usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_Number 1)} right: {(DQ )} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<print>} {(DQ ($ Id.VSub_DollarName PROGNAME) <': ERROR: '> ($ Id.VSub_Number 1))} ) ] spids: [118 133] ) ] else_action: [] redirects: [] ) (C {<echo>} {(DQ <'usage: '> ($ Id.VSub_DollarName PROGNAME) <' [-Y cpp-path] file [file]...'>)} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: ndrgen_copy_header body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ndl_file='> name:ndl_file) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [175] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ndr_file='> name:ndr_file) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [179] ) ] redirects: [] ) (command.Simple words: [ {<nawk>} { (SQ <'BEGIN { copy=0; }\n'> <'\t/^\\/\\* NDRGEN_HEADER_BEGIN \\*\\// { copy=1; next; }\n'> <'\t/^\\/\\* NDRGEN_HEADER_END \\*\\// { copy=0; next; }\n'> <'\t/./ { if (copy==1) print; }'> ) } ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName ndl_file)} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName ndr_file)} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_lt left: {($ Id.VSub_Pound '#')} right: {<1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<ndrgen_usage>})] spids: [204 218] ) ] else_action: [] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<getopts>} {(DQ <Y>)} {<FLAG>} {($ Id.VSub_Star '*')}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName FLAG)} arms: [ (case_arm pat_list: [{<Y>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC_FLAG='> name:CC_FLAG) op: assign_op.Equal rhs: {(DQ <y>)} spids: [253] ) ] redirects: [] ) ] spids: [249 250 259 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<ndrgen_usage>})] spids: [262 263 269 -1] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName CC_FLAG)} right: {(DQ <y>)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<shift>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName OPTIND)} right: {<Id.Lit_Digits 1>} ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_lt left: {($ Id.VSub_Pound '#')} right: {<1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<ndrgen_usage>} {(DQ <'C pre-processor path is missing'>)})] spids: [309 323] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [336] ) ] redirects: [] ) (C {<shift>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName OPTIND)} right: {<Id.Lit_Digits 1>} ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_Number 1)} right: {(DQ <-_cc>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_Number 1)} right: {(DQ <-_gcc>)} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC_ARG='> name:CC_ARG) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [386] ) ] redirects: [] ) (C {<shift>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName OPTIND)} right: {<Id.Lit_Digits 1>} ) ) } ) ] spids: [357 383] ) ] else_action: [] redirects: [] ) ] redirects: [] ) ] spids: [277 293] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobEqual left: {($ Id.VSub_DollarName CC)} right: {(DQ )} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<ndrgen_usage>} {(DQ <'C pre-processor is not defined'>)})] spids: [410 425] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName CC)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-x>} {($ Id.VSub_DollarName CC)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<ndrgen_usage>} {(DQ <'cannot run '> ($ Id.VSub_DollarName CC))})] spids: [437 463] ) ] else_action: [] redirects: [] ) (command.ForEach iter_names: [i] iterable: (for_iter.Args) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_r child: {($ Id.VSub_DollarName i)} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<print>} { (DQ ($ Id.VSub_DollarName PROGNAME) <': ERROR: cannot read '> ($ Id.VSub_DollarName i) ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [483 497] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BASENAME='> name:BASENAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {($ Id.VSub_DollarName i)} {<.ndl>}) right: <Id.Backtick_Right '`'> ) } spids: [518] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMP_NAME='> name:TMP_NAME) op: assign_op.Equal rhs: {($ Id.VSub_DollarName BASENAME) <.ndl.c>} spids: [530] ) ] redirects: [] ) (C {<cp>} {($ Id.VSub_DollarName i)} {($ Id.VSub_DollarName TMP_NAME)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {($ Id.VSub_DollarName CC)} {($ Id.VSub_DollarName CC_ARG)} {<-E>} {<-D__a64>} {<-D__EXTENSIONS__>} {<-D_FILE_OFFSET_BITS> <Id.Lit_Equals '='> <64>} {<-I.>} {<-I> (${ Id.VSub_Name INCDIR)} {<-I> (${ Id.VSub_Name INCDIR) <'/ndl'>} {<-DNDRGEN>} {($ Id.VSub_DollarName TMP_NAME)} ) (command.Simple words: [{($ Id.VSub_DollarName NDRPROG)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName BASENAME) <.raw>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) ] ) action: [ (C {<touch>} {(${ Id.VSub_Name BASENAME) <_ndr.c>}) (C {<ndrgen_copy_header>} {($ Id.VSub_DollarName i)} {(${ Id.VSub_Name BASENAME) <_ndr.c>} ) (command.Simple words: [{<cat>} {<->}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 639 stdin_parts: [ <'/*\n'> <' * Please do not edit this file.\n'> <' * It was generated using ndrgen.\n'> <' */\n'> <'\n'> <'#include <strings.h>\n'> <'#include <smbsrv/ndr.h>\n'> <'#include <smbsrv/ndl/'> ($ Id.VSub_DollarName BASENAME) <'.ndl>\n'> ] ) ) (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name BASENAME) <_ndr.c>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<cat>} {($ Id.VSub_DollarName BASENAME) <.raw>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name BASENAME) <_ndr.c>} ) ] more_env: [] do_fork: T ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName BASENAME) <.raw>}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName TMP_NAME)}) ] spids: [544 591] ) ] else_action: [ (C {<rm>} {<-f>} {($ Id.VSub_DollarName BASENAME) <.raw>}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName TMP_NAME)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] ) ] ) redirects: [] ) ] )