(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'WORKDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WORKDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR) op: assign_op.Equal rhs: {<work>} ) ] redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Usage: conflicts.sh [-s script] [-w workdir]'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND) op: assign_op.Equal rhs: {<etcupdate>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(DQ <'s:w:'>)} {<option>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName option)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMMAND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMMAND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND) op: assign_op.Equal rhs: {(DQ <'sh '> ($ Id.VSub_DollarName OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <w> pattern: (pat.Words words:[{<w>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'WORKDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'WORKDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [ {<shift>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike OPTIND) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] 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 '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] spids: [197 210] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CONFLICTS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFLICTS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFLICTS='> name:CONFLICTS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName WORKDIR) <'/conflicts'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OLD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OLD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLD='> name:OLD) op: assign_op.Equal rhs: {($ Id.VSub_DollarName WORKDIR) <'/old'>} ) ] 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_DollarName WORKDIR) <'/current'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEST='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST='> name:TEST) op: assign_op.Equal rhs: {($ Id.VSub_DollarName WORKDIR) <'/test'>} ) ] redirects: [] ) (command.ShFunction name_tok: <build_login_conflict> name: build_login_conflict body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-rf>} {($ Id.VSub_DollarName OLD)} {($ Id.VSub_DollarName NEW)} {($ Id.VSub_DollarName TEST)} {($ Id.VSub_DollarName CONFLICTS)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {($ Id.VSub_DollarName OLD) <'/etc'>} {($ Id.VSub_DollarName NEW) <'/etc'>} {($ Id.VSub_DollarName TEST) <'/etc'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName OLD) <'/etc/login.conf'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'default:'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t:passwd_format=md5:\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName NEW) <'/etc/login.conf'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'default:'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t:passwd_format=md5:'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t:copyright=/etc/COPYRIGHT\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TEST) <'/etc/login.conf'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'default:'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <'\t:passwd_format=md5:'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <'\n'> <' :welcome=/etc/motd:\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<-r>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <build_aliases_conflict> name: build_aliases_conflict body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-rf>} {($ Id.VSub_DollarName OLD)} {($ Id.VSub_DollarName NEW)} {($ Id.VSub_DollarName TEST)} {($ Id.VSub_DollarName CONFLICTS)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {($ Id.VSub_DollarName OLD) <'/etc/mail'>} {($ Id.VSub_DollarName NEW) <'/etc/mail'>} {($ Id.VSub_DollarName TEST) <'/etc/mail'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName OLD) <'/etc/mail/aliases'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'# root: me@my.domain\n'> <'\n'> <'# Basic system aliases -- these MUST be present\n'> <'MAILER-DAEMON: postmaster\n'> <'postmaster: root\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName NEW) <'/etc/mail/aliases'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'# root: me@my.domain\n'> <'\n'> <'# Basic system aliases -- these MUST be present\n'> <'MAILER-DAEMON: postmaster\n'> <'postmaster: root\n'> <'\n'> <'# General redirections for pseudo accounts\n'> <'_dhcp: root\n'> <'_pflogd: root\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TEST) <'/etc/mail/aliases'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'root: someone@example.com\n'> <'\n'> <'# Basic system aliases -- these MUST be present\n'> <'MAILER-DAEMON: postmaster\n'> <'postmaster: foo\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<-r>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <missing> name: missing body: (BraceGroup left: <Id.Lit_LBrace '{'> 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 '['>} {<-e>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} {<-o>} {<-L>} {($ Id.VSub_DollarName TEST) <'/'> ($ 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 '> ($ Id.VSub_Number 1) <' should be missing'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [494 515] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <present> name: present body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} {<-o>} {<-L>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' should be present'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [546 569] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <file> name: file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<contents>} {<sum>}] 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.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' should be a regular file'>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [614 629] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<2>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'contents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'contents='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'contents='> name:contents) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] 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 '['>} {(DQ ($ Id.VSub_DollarName contents))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<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 '> ($ Id.VSub_Number 1) <' has wrong contents'>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [673 691] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [645 658] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<3>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sum='> name:sum) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <md5> more_env: [] words: [ {<md5>} {<-q>} {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] 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 '['>} {(DQ ($ Id.VSub_DollarName sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 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 <'File '> ($ Id.VSub_Number 1) <' has wrong contents'>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [740 758] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [710 723] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <conflict> name: conflict body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<sum>}] 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.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' missing conflict'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [801 816] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sum='> name:sum) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <md5> more_env: [] words: [ {<md5>} {<-q>} {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] 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 '['>} {(DQ ($ Id.VSub_DollarName sum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<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 <'Conflict '> ($ Id.VSub_Number 1) <' has wrong contents'>)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [862 880] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [832 845] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <resolved> name: resolved body: (BraceGroup left: <Id.Lit_LBrace '{'> 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 '['>} {<-f>} {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ 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 <'Conflict '> ($ Id.VSub_Number 1) <' should be resolved'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [914 927] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (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 '['>} { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <id> more_env: [] words: [{<id>} {<-u>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } {<-ne>} {<0>} {<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 <'must be root'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [948 967] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> 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 '['>} {<-r>} {<'/etc/etcupdate.conf'>} {<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 <'WARNING: /etc/etcupdate.conf settings may break some tests.'>)}] redirects: [] do_fork: T ) ] spids: [984 995] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <build_login_conflict> more_env: [] words: [{<build_login_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking \'p\':'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <p>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<95de92ea3f1bb1bf4f612a8b5908cddd>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <missing> more_env: [] words: [{<missing>} {<'/etc/login.conf.db'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <conflict> more_env: [] words: [{<conflict>} {<'/etc/login.conf'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking \'mf\':'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <mf>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<95de92ea3f1bb1bf4f612a8b5908cddd>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <missing> more_env: [] words: [{<missing>} {<'/etc/login.conf.db'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <resolved> more_env: [] words: [{<resolved>} {<'/etc/login.conf'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <build_login_conflict> more_env: [] words: [{<build_login_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking \'tf\':'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <tf>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<7774a0f9a3a372c7c109c32fd31c4b6b>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf.db'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <resolved> more_env: [] words: [{<resolved>} {<'/etc/login.conf'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <build_login_conflict> more_env: [] words: [{<build_login_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking \'r\':'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName CONFLICTS) <'/etc/login.conf'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'default:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t:passwd_format=md5:'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <'\t:copyright=/etc/COPYRIGHT'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\n'> <' :welcome=/etc/motd:\n'> ] ) ) ] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <r>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<966e25984b9b63da8eaac8479dcb0d4d>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <file> more_env: [] words: [{<file>} {<'/etc/login.conf.db'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <resolved> more_env: [] words: [{<resolved>} {<'/etc/login.conf'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <build_aliases_conflict> more_env: [] words: [{<build_aliases_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking newalias warning for \'p\''>) <Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <p>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-q>} {<newalias>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (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_QMark '?')} {<-eq>} {<0>} {<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 <'+ Extra warning'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [1294 1307] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking newalias warning for \'mf\''>) <Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <mf>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-q>} {<newalias>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (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_QMark '?')} {<-eq>} {<0>} {<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 <'+ Extra warning'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [1357 1370] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <build_aliases_conflict> more_env: [] words: [{<build_aliases_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Checking newalias warning for \'tf\''>) <Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <tf>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-q>} {<newalias>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (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_QMark '?')} {<-ne>} {<0>} {<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 <'- Missing warning'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [1426 1439] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <build_aliases_conflict> more_env: [] words: [{<build_aliases_conflict>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {($ Id.VSub_DollarName TEST) <'/etc/mail/aliases'>} {($ Id.VSub_DollarName CONFLICTS) <'/etc/mail/aliases'>} ] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <r>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$COMMAND'> more_env: [] words: [ {($ Id.VSub_DollarName COMMAND)} {<resolve>} {<-d>} {($ Id.VSub_DollarName WORKDIR)} {<-D>} {($ Id.VSub_DollarName TEST)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-q>} {<newalias>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (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_QMark '?')} {<-ne>} {<0>} {<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 <'- Missing warning'>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'FAILED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FAILED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] spids: [1493 1506] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name FAILED))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] )