(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'PATH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PATH='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: {<'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'>} ) ] redirects: [] ) (command.ShFunction name_tok: <display_usage> name: display_usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERSION_NUMBER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERSION_NUMBER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VERSION_NUMBER='> name:VERSION_NUMBER) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {(DQ <'['> <Id.Lit_Dollar '$'> <']FreeBSD:'>)} {($ Id.VSub_Number 0)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<4>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'mergemaster version '> (${ Id.VSub_Name VERSION_NUMBER))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <'Usage: mergemaster [-scrvhpCP] [-a|[-iFU]] [--run-updates=always|never]'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Options:'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -s Strict comparison (diff every pair of files)'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -c Use context diff instead of unified diff'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -r Re-run on a previously cleaned directory (skip temproot creation)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -v Be more verbose about the process, include additional checks'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -a Leave all files that differ to merge by hand'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -h Display more complete help'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ <' -i Automatically install files that do not exist in destination directory'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' -p Pre-buildworld mode, only compares crucial files'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' -F Install files that differ only by revision control Id ($FreeBSD)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' -C Compare local rc.conf variables to the defaults'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' -P Preserve files that are overwritten'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -U Attempt to auto upgrade files that have not been user modified'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' ***DANGEROUS***'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' --run-updates= Specify always or never to run newalises, pwd_mkdb, etc.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -m /path/directory Specify location of source to do the make in'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -t /path/directory Specify temp root directory'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' -d Add date and time to directory name (e.g., /var/tmp/temproot.'> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> <d.> <Id.Lit_Other '%'> <H.> <Id.Lit_Other '%'> <M> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <')'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -u N Specify a numeric umask'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -w N Specify a screen width in columns to sdiff'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -A architecture Alternative architecture name to pass to make'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' -D /path/directory Specify the destination directory to install files to'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <display_help> name: display_help body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'* To specify a directory other than /var/tmp/temproot for the'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' temporary root environment, use -t /path/to/temp/root'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'* The -w option takes a number as an argument for the column width'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' of the screen. The default is 80.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <'* The -a option causes mergemaster to run without prompting.'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <merge_loop> name: merge_loop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name VERBOSE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(DQ <' *** Type h at the sdiff prompt (%) to get usage help'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'MERGE_AGAIN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MERGE_AGAIN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MERGE_AGAIN='> name:MERGE_AGAIN) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name MERGE_AGAIN))} {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<-p>} {(DQ (${ Id.VSub_Name COMPFILE))} {(DQ (${ Id.VSub_Name COMPFILE) <.merged>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sdiff> more_env: [] words: [ {<sdiff>} {<-o>} {(DQ (${ Id.VSub_Name COMPFILE) <.merged>)} {<--text>} {<--suppress-common-lines>} {<--width> <Id.Lit_Equals '='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SCREEN_WIDTH> var_name: SCREEN_WIDTH suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<80>}) right: <Id.Right_DollarBrace '}'> ) } { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>}) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALL_MERGED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALL_MERGED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALL_MERGED='> name: INSTALL_MERGED ) op: assign_op.Equal rhs: {<V>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALL_MERGED))} {<Id.Lit_Equals '='>} {(DQ <v>)} {<-o>} {(DQ (${ Id.VSub_Name INSTALL_MERGED))} {<Id.Lit_Equals '='>} {(DQ <V>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'i\' to install merged file'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'r\' to re-do the merge'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'v\' to view the merged file'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' Default is to leave the temporary file to deal with by hand' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ < ' *** How should I deal with the merged file? [Leave it for later] ' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<INSTALL_MERGED>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name INSTALL_MERGED))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <iI> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ (${ Id.VSub_Name COMPFILE) <.merged>)} {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] 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: <mm_install> more_env: [] words: [ {<mm_install>} {(DQ (${ Id.VSub_Name COMPFILE))} ] 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 <' *** Merged version of '> (${ Id.VSub_Name COMPFILE) <' installed successfully'> ) } ] redirects: [] do_fork: T ) ] spids: [605 616] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Problem installing '> (${ Id.VSub_Name COMPFILE) <', it will remain to merge by hand later'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<MERGE_AGAIN>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <rR> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(DQ (${ Id.VSub_Name COMPFILE) <.merged>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <vV> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name PAGER)} {(DQ (${ Id.VSub_Name COMPFILE) <.merged>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<MERGE_AGAIN>}] redirects: [] do_fork: T ) ] 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>} {(DQ <'invalid choice: '> (${ Id.VSub_Name INSTALL_MERGED))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALL_MERGED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALL_MERGED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALL_MERGED='> name: INSTALL_MERGED ) op: assign_op.Equal rhs: {<V>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <diff_loop> name: diff_loop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> name: HANDLE_COMPFILE ) op: assign_op.Equal rhs: {<v>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {<Id.Lit_Equals '='>} {(DQ <v>)} {<-o>} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {<Id.Lit_Equals '='>} {(DQ <V>)} {<-o>} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {<Id.Lit_Equals '='>} {(DQ <'NOT V'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <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 '['>} {<-f>} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<-a>} {<-f>} {(DQ (${ Id.VSub_Name COMPFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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 '['>} {<-n>} {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {<-a>} {<-n>} {(DQ (${ Id.VSub_Name CHANGED))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name CHANGED))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' has not been user modified.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] 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: <mm_install> more_env: [] words: [ {<mm_install>} {(DQ (${ Id.VSub_Name COMPFILE))} ] 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 <' *** '> (${ Id.VSub_Name COMPFILE) <' upgraded successfully'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'AUTO_UPGRADED_FILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTO_UPGRADED_FILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'AUTO_UPGRADED_FILES=' > name: AUTO_UPGRADED_FILES ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES) <' '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <'\n'> ) } ) ] redirects: [] ) ] spids: [943 954] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Problem upgrading '> (${ Id.VSub_Name COMPFILE) <', it will remain to merge by hand'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [856 881] ) ] 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 '['>} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {<Id.Lit_Equals '='>} {(DQ <v>)} {<-o>} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {<Id.Lit_Equals '='>} {(DQ <V>)} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < ' ====================================================================== ' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Displaying differences between '> (${ Id.VSub_Name COMPFILE) <' and installed version:'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {(${ Id.VSub_Name DIFF_FLAG)} {(${ Id.VSub_Name DIFF_OPTIONS)} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] spids: [1025 1058] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [823 853] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** There is no installed version of '> (${ Id.VSub_Name COMPFILE) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_INSTALL))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] 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: <mm_install> more_env: [] words: [ {<mm_install>} {(DQ (${ Id.VSub_Name COMPFILE))} ] 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 <' *** '> (${ Id.VSub_Name COMPFILE) <' installed successfully'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'AUTO_INSTALLED_FILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTO_INSTALLED_FILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'AUTO_INSTALLED_FILES='> name: AUTO_INSTALLED_FILES ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES) <' '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <'\n'> ) } ) ] redirects: [] ) ] spids: [1200 1211] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Problem installing '> (${ Id.VSub_Name COMPFILE) <', it will remain to merge by hand'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NO_INSTALLED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NO_INSTALLED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NO_INSTALLED='> name: NO_INSTALLED ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Use \'d\' to delete the temporary '> (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Use \'i\' to install the temporary '> (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NO_INSTALLED))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Use \'m\' to merge the temporary and installed versions'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'v\' to view the diff results again'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Default is to leave the temporary file to deal with by hand'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'How should I deal with this? [Leave it for later] '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<HANDLE_COMPFILE>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name HANDLE_COMPFILE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <dD> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(DQ (${ Id.VSub_Name COMPFILE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' *** Deleting '> (${ Id.VSub_Name COMPFILE))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <iI> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] 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: <mm_install> more_env: [] words: [{<mm_install>} {(DQ (${ Id.VSub_Name COMPFILE))}] 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 <' *** '> (${ Id.VSub_Name COMPFILE) <' installed successfully'> ) } ] redirects: [] do_fork: T ) ] spids: [1441 1452] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Problem installing '> (${ Id.VSub_Name COMPFILE) <', it will remain to merge by hand'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <mM> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NO_INSTALLED))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <merge_loop> more_env: [] words: [{<merge_loop>}] redirects: [] do_fork: T ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** There is no installed version of '> (${ Id.VSub_Name COMPFILE) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> name: HANDLE_COMPFILE ) op: assign_op.Equal rhs: {(DQ <'NOT V'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <vV> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) ] 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>} {(DQ <'invalid choice: '> (${ Id.VSub_Name HANDLE_COMPFILE))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HANDLE_COMPFILE='> name: HANDLE_COMPFILE ) op: assign_op.Equal rhs: {(DQ <'NOT V'>)} ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<NO_INSTALLED>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name VERBOSE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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: <sleep> more_env: [] words: [{<sleep>} {<3>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <press_to_continue> name: press_to_continue body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<DISCARD>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(SQ <' *** Press the [Enter] or [Return] key to continue '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<DISCARD>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMPROOT='> name:TEMPROOT) op: assign_op.Equal rhs: {(SQ <'/var/tmp/temproot'>)} ) ] 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/mergemaster.rc'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {<'/etc/mergemaster.rc'>}] redirects: [] do_fork: T ) ] spids: [1737 1748] ) ] 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>} {(DQ ($ Id.VSub_DollarName HOME) <'/.mergemasterrc'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {(DQ ($ Id.VSub_DollarName HOME) <'/.mergemasterrc'>)}] redirects: [] do_fork: T ) ] spids: [1764 1778] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [var] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) semi_tok: <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:{(DQ ($ Id.VSub_DollarName var))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--run-updates> pattern: (pat.Words words:[{<--run-updates> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RUN_UPDATES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RUN_UPDATES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'RUN_UPDATES='> name: RUN_UPDATES ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name var> var_name: var suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'--run-updates='>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <upper> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <lower> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'newopts='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'newopts='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newopts='> name:newopts) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName newopts) <' '> ($ Id.VSub_DollarName var))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {($ Id.VSub_DollarName newopts)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<Id.KW_Var var>} {<newopts>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(DQ <':ascrvhipCPm:t:du:w:D:A:FU'>)} {<COMMAND_LINE_ARGUMENT>}] 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:{(DQ (${ Id.VSub_Name COMMAND_LINE_ARGUMENT))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <A> pattern: (pat.Words words:[{<A>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARCHSTRING='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARCHSTRING='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARCHSTRING='> name:ARCHSTRING) op: assign_op.Equal rhs: {(SQ <'TARGET_ARCH='>) (${ Id.VSub_Name OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <F> pattern: (pat.Words words:[{<F>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'FREEBSD_ID='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FREEBSD_ID='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FREEBSD_ID='> name:FREEBSD_ID) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <U> pattern: (pat.Words words:[{<U>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'AUTO_UPGRADE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTO_UPGRADE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'AUTO_UPGRADE='> name: AUTO_UPGRADE ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'STRICT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STRICT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STRICT='> name:STRICT) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<DIFF_OPTIONS>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words:[{<c>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DIFF_FLAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIFF_FLAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIFF_FLAG='> name:DIFF_FLAG) op: assign_op.Equal rhs: {(SQ <-c>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'RERUN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'RERUN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RERUN='> name:RERUN) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'VERBOSE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'VERBOSE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'VERBOSE='> name: VERBOSE ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <a> pattern: (pat.Words words:[{<a>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'AUTO_RUN='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTO_RUN='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AUTO_RUN='> name:AUTO_RUN) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<VERBOSE>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <h> pattern: (pat.Words words:[{<h>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <display_usage> more_env: [] words: [{<display_usage>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <display_help> more_env: [] words: [{<display_help>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <i> pattern: (pat.Words words:[{<i>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'AUTO_INSTALL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'AUTO_INSTALL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'AUTO_INSTALL='> name: AUTO_INSTALL ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'COMP_CONFS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'COMP_CONFS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMP_CONFS='> name:COMP_CONFS) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <P> pattern: (pat.Words words:[{<P>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PRESERVE_FILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PRESERVE_FILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PRESERVE_FILES='> name: PRESERVE_FILES ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <p> pattern: (pat.Words words:[{<p>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PRE_WORLD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PRE_WORLD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PRE_WORLD='> name:PRE_WORLD) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<COMP_CONFS>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<AUTO_RUN>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <m> pattern: (pat.Words words:[{<m>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SOURCEDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOURCEDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOURCEDIR='> name:SOURCEDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMPROOT='> name:TEMPROOT) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMPROOT='> name:TEMPROOT) op: assign_op.Equal rhs: {(${ Id.VSub_Name TEMPROOT) <.> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> <d.> <Id.Lit_Other '%'> <H.> <Id.Lit_Other '%'> <M> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <u> pattern: (pat.Words words:[{<u>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NEW_UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEW_UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW_UMASK='> name:NEW_UMASK) op: assign_op.Equal rhs: {(${ Id.VSub_Name 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 'SCREEN_WIDTH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SCREEN_WIDTH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCREEN_WIDTH='> name: SCREEN_WIDTH ) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DESTDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DESTDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DESTDIR='> name:DESTDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name 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: <display_usage> more_env: [] words: [{<display_usage>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) 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 '['>} {<-n>} {(DQ ($ Id.VSub_DollarName AUTO_RUN))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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 '['>} {<-n>} {(DQ ($ Id.VSub_DollarName FREEBSD_ID))} {<-o>} {<-n>} {(DQ ($ Id.VSub_DollarName AUTO_UPGRADE))} {<-o>} {<-n>} {(DQ ($ Id.VSub_DollarName AUTO_INSTALL))} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'*** You have included the -a option along with one or more options'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ <' that indicate that you wish mergemaster to actually make updates'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' (-F, -U, or -i), however these options are not compatible.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' Please read mergemaster(8) for more information.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2245 2274] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2229 2242] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MTREEDB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MTREEDB='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MTREEDB='> name:MTREEDB) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MTREEDB> var_name: MTREEDB suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(${ Id.VSub_Name DESTDIR) <Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <db>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MTREEFILE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MTREEFILE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MTREEFILE='> name:MTREEFILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name MTREEDB) <'/mergemaster.mtree'>)} ) ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} {<-a>} {<-z>} {(DQ (${ Id.VSub_Name PRESERVE_FILES_DIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PRESERVE_FILES_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PRESERVE_FILES_DIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PRESERVE_FILES_DIR='> name: PRESERVE_FILES_DIR ) op: assign_op.Equal rhs: {<'/var/tmp/mergemaster/preserved-files-'> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <y> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> <d-> <Id.Lit_Other '%'> <H> <Id.Lit_Other '%'> <M> <Id.Lit_Other '%'> <S> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name PRESERVE_FILES_DIR)}] redirects: [] do_fork: T ) ] spids: [2358 2383] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_UPGRADE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (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.KW_Bang '!'>} {<-s>} {(DQ (${ Id.VSub_Name MTREEFILE))} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** Unable to find mtree database ('> (${ Id.VSub_Name MTREEFILE) <').'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Skipping auto-upgrade on this run.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' It will be created for the next run when this one is complete.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<AUTO_UPGRADE>}] redirects: [] do_fork: T ) ] spids: [2446 2463] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-e>} {(DQ (${ Id.VSub_Name DESTDIR) <'/etc/fstab'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <grep> more_env: [] words: [ {<grep>} {<-q>} {<nodev>} {(${ Id.VSub_Name DESTDIR) <'/etc/fstab'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** You have the deprecated \'nodev\' option in '> (${ Id.VSub_Name DESTDIR) <'/etc/fstab.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' This can prevent the filesystem from being mounted on reboot.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Please update your fstab before continuing.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' See fstab(5) for more information.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [2560 2574] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [2541 2557] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] redirects:[] do_fork:T) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DONT_CHECK_PAGER))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShFunction name_tok: <check_pager> name: check_pager body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <type> more_env: [] words: [ {<type>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PAGER> var_name: PAGER suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Your PAGER environment variable specifies \''> (${ Id.VSub_Name PAGER) <'\', but'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' due to the limited PATH that I use for security reasons,' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' I cannot execute it. So, what would you like to do?'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Use \'e\' to exit mergemaster and fix your PAGER variable'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Use \'l\' to set PAGER to \'less\' for this run'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' Use \'m\' to use plain old \'more\' as your PAGER for this run' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' or you may type an absolute path to PAGER for this run'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Default is to use plain old \'more\' '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <'What should I do? [Use \'more\'] '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<FIXPAGER>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name FIXPAGER))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <eE> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PAGER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAGER='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PAGER='> name: PAGER ) op: assign_op.Equal rhs: {<less>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <mM> <Id.Lit_RBracket ']'>} {(SQ )}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PAGER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAGER='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PAGER='> name: PAGER ) op: assign_op.Equal rhs: {<more>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'PAGER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAGER='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PAGER='> name: PAGER ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName FIXPAGER))} ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'invalid choice: '> (${ Id.VSub_Name FIXPAGER))} ] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name PAGER))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <check_pager> more_env: [] words: [{<check_pager>}] redirects: [] do_fork: T ) ] spids: [2888 2903] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'PAGER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'PAGER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAGER='> name:PAGER) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name PAGER> var_name: PAGER suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<more>}) right: <Id.Right_DollarBrace '}'> ) } ) ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name VERBOSE))} {<-a>} {<Id.KW_Bang '!'>} {(DQ (${ Id.VSub_Name PAGER))} {<Id.Lit_Equals '='>} {(DQ <more>)} {<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 <' *** You have '> (${ Id.VSub_Name PAGER) <' defined as your pager so we will use that'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<3>}] redirects: [] do_fork: T ) ] spids: [2934 2965] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DIFF_FLAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIFF_FLAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIFF_FLAG='> name:DIFF_FLAG) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name DIFF_FLAG> var_name: DIFF_FLAG suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<-u>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SOURCEDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOURCEDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOURCEDIR='> name:SOURCEDIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SOURCEDIR> var_name: SOURCEDIR suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Slash '/'> <usr> <Id.Lit_Slash '/'> <src>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] 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.KW_Bang '!'>} {<-f>} {(${ Id.VSub_Name SOURCEDIR) <'/Makefile.inc1'>} {<-a>} {<-f>} {(${ Id.VSub_Name SOURCEDIR) <'/../Makefile.inc1'>} {<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 <' *** The source directory you specified ('> (${ Id.VSub_Name SOURCEDIR) <')'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' will be reset to '> (${ Id.VSub_Name SOURCEDIR) <'/..'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<3>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'SOURCEDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOURCEDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOURCEDIR='> name:SOURCEDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name SOURCEDIR) <'/..'>} ) ] redirects: [] ) ] spids: [3022 3049] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SOURCEDIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOURCEDIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOURCEDIR='> name:SOURCEDIR) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <realpath> more_env: [] words: [{<realpath>} {(DQ ($ Id.VSub_DollarName SOURCEDIR))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'MM_MAKE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MM_MAKE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MM_MAKE='> name:MM_MAKE) op: assign_op.Equal rhs: { (DQ <'make '> (${ Id.VSub_Name ARCHSTRING) <' -m '> (${ Id.VSub_Name SOURCEDIR) <'/share/mk -DNO_FILEMON'> ) } ) ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {<-a>} {<-s>} {(DQ (${ Id.VSub_Name MTREEFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <mtree> more_env: [] words: [{<mtree>} {<-F>} {<freebsd9>} {<-c>} {<-p>} {<'/var/empty/'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MTREE_FLAVOR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MTREE_FLAVOR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MTREE_FLAVOR='> name: MTREE_FLAVOR ) op: assign_op.Equal rhs: {(DQ <'-F freebsd9'>)} ) ] redirects: [] ) ] spids: [3161 3183] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MTREE_FLAVOR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MTREE_FLAVOR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MTREE_FLAVOR='> name:MTREE_FLAVOR) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CHANGED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CHANGED='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHANGED='> name:CHANGED) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <mtree> more_env: [] words: [ {<mtree>} {<-eqL>} {(${ Id.VSub_Name MTREE_FLAVOR)} {<-f>} {(${ Id.VSub_Name MTREEFILE)} {<-p>} {(${ Id.VSub_Name DESTDIR) <'/'>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'($2 == "changed") {print $1}'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) 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 '['>} {<-f>} { (DQ (${ Id.VSub_Name DESTDIR) <'/'> ($ Id.VSub_DollarName file) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'CHANGED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CHANGED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CHANGED='> name: CHANGED ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name CHANGED) (${ Id.VSub_Name DESTDIR) <'/'> (${ Id.VSub_Name file) <':'> ) } ) ] redirects: [] ) ] spids: [3256 3273] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName CHANGED))} {<Id.Lit_Equals '='>} {(SQ <':'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<CHANGED>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [3129 3154] ) ] 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 '['>} {<-t>} {<0>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'w='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'w='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w='> name:w) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <tput> more_env: [] words: [{<tput>} {<columns>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name w))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>} {(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name SCREEN_WIDTH))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SCREEN_WIDTH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SCREEN_WIDTH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCREEN_WIDTH='> name: SCREEN_WIDTH ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name w))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ (${ Id.VSub_Name w))}]) middle: <Id.Right_CasePat _> action: [] 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>} {<-n>} { (DQ <'*** You entered '> (${ Id.VSub_Name SCREEN_WIDTH) <' as your screen width, but stty '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'thinks it is '> (${ Id.VSub_Name w) <.>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'What would you like to use? ['> (${ Id.VSub_Name w) <'] '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<SCREEN_WIDTH>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name SCREEN_WIDTH))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'SCREEN_WIDTH='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SCREEN_WIDTH='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCREEN_WIDTH='> name: SCREEN_WIDTH ) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name w))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [3327 3338] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ID_TAG='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ID_TAG='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ID_TAG='> name:ID_TAG) op: assign_op.Equal rhs: {<FreeBSD>} ) ] redirects: [] ) (command.ShFunction name_tok: <delete_temproot> name: delete_temproot body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name TEMPROOT))}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok: <chflags> more_env: [] words: [{<chflags>} {<-R>} {<0>} {(DQ (${ Id.VSub_Name TEMPROOT))}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {(DQ (${ Id.VSub_Name TEMPROOT))}] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** Unable to delete '> (${ Id.VSub_Name TEMPROOT))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name RERUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEST_TEMP_ROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_TEMP_ROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_TEMP_ROOT='> name:TEST_TEMP_ROOT) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name TEST_TEMP_ROOT))} {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <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 '['>} {<-d>} {(DQ (${ Id.VSub_Name TEMPROOT))} {<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 < '*** The directory specified for the temporary root environment,' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' '> (${ Id.VSub_Name TEMPROOT) <', exists. This can be a security risk if untrusted'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' users have access to the system.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Use \'d\' to delete the old '> (${ Id.VSub_Name TEMPROOT) <' and continue'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Use \'t\' to select a new temporary root directory'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'e\' to exit mergemaster'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Default is to use '> (${ Id.VSub_Name TEMPROOT) <' as is'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'How should I deal with this? [Use the existing '> (${ Id.VSub_Name TEMPROOT) <'] '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<DELORNOT>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DELORNOT))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <dD> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Deleting the old '> (${ Id.VSub_Name TEMPROOT) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <delete_temproot> more_env: [] words: [{<delete_temproot>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<TEST_TEMP_ROOT>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <tT> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' *** Enter new directory name for temporary root environment' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<TEMPROOT>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <eE> <Id.Lit_RBracket ']'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Leaving '> (${ Id.VSub_Name TEMPROOT) <' intact'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<TEST_TEMP_ROOT>}] redirects: [] do_fork: T ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'invalid choice: '> (${ Id.VSub_Name DELORNOT))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPROOT='> name: TEMPROOT ) op: assign_op.Equal rhs: {<'/var/tmp/temproot.'> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <date> more_env: [] words: [ {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <m> <Id.Lit_Other '%'> <d.> <Id.Lit_Other '%'> <H.> <Id.Lit_Other '%'> <M.> <Id.Lit_Other '%'> <S> } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [3642 3657] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<TEST_TEMP_ROOT>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'*** Creating the temporary root environment in '> (${ Id.VSub_Name TEMPROOT))} ] 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: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name TEMPROOT))}] 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 <' *** '> (${ Id.VSub_Name TEMPROOT) <' ready for use'>)}] redirects: [] do_fork: T ) ] spids: [3995 4008] ) ] 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 '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name TEMPROOT))} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' *** FATAL ERROR: Cannot create '> (${ Id.VSub_Name TEMPROOT))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4026 4043] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Creating and populating directory structure in '> (${ Id.VSub_Name TEMPROOT) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name VERBOSE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name PRE_WORLD))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(${ Id.VSub_Name SOURCEDIR)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DESTDIR))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name MM_MAKE)} {<Id.Lit_VarLike 'DESTDIR='> (${ Id.VSub_Name DESTDIR)} {<distrib-dirs>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name MM_MAKE)} {<Id.Lit_VarLike 'DESTDIR='> (${ Id.VSub_Name TEMPROOT)} {<distrib-dirs>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name MM_MAKE)} {<_obj>} {<Id.Lit_VarLike 'SUBDIR_OVERRIDE='> <etc>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name MM_MAKE)} {<everything>} {<Id.Lit_VarLike 'SUBDIR_OVERRIDE='> <etc>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name MM_MAKE)} {<Id.Lit_VarLike 'DESTDIR='> (${ Id.VSub_Name TEMPROOT)} {<distribution>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** FATAL ERROR: Cannot \'cd\' to '> (${ Id.VSub_Name SOURCEDIR) <' and install files to'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' the temproot environment'>)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name TEMPROOT) <'/etc'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {<-p>} {(${ Id.VSub_Name SOURCEDIR) <'/etc/master.passwd'>} {(${ Id.VSub_Name TEMPROOT) <'/etc'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <install> more_env: [] words: [ {<install>} {<-p>} {<-o>} {<root>} {<-g>} {<wheel>} {<-m>} {<0644>} {(${ Id.VSub_Name SOURCEDIR) <'/etc/group'>} {(${ Id.VSub_Name TEMPROOT) <'/etc'>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < ' *** FATAL ERROR: Cannot copy files to the temproot environment' > ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name VERBOSE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' *** The following files exist only in the installed version of'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' '> (${ Id.VSub_Name DESTDIR) <'/etc. In the vast majority of cases these files'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' are necessary parts of the system and should not be deleted.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ <' However because these files are not updated by this process you'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ <' might want to verify their status before rebooting your system.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <diff> more_env: [] words: [ {<diff>} {<-qr>} {(${ Id.VSub_Name DESTDIR) <'/etc'>} {(${ Id.VSub_Name TEMPROOT) <'/etc'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ <'^Only in '> (${ Id.VSub_Name DESTDIR) <'/etc'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name IGNORE_MOTD))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** You have the IGNORE_MOTD option set in your mergemaster rc file.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' This option is deprecated in favor of the IGNORE_FILES option.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Please update your rc file accordingly.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter.Words words:[{(${ Id.VSub_Name IGNORE_FILES)}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-e>} {(${ Id.VSub_Name TEMPROOT) <'/'> (${ Id.VSub_Name file)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <unlink> more_env: [] words: [{<unlink>} {(${ Id.VSub_Name TEMPROOT) <'/'> (${ Id.VSub_Name file)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(${ Id.VSub_Name TEMPROOT) <'/etc/'> <Id.Lit_Star '*'> <.db>} {(${ Id.VSub_Name TEMPROOT) <'/etc/passwd'>} {(${ Id.VSub_Name TEMPROOT) <'/var/db/services.db'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {(${ Id.VSub_Name TEMPROOT) <'/usr/obj'>} {<-type>} {<f>} {<-delete>}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {(${ Id.VSub_Name TEMPROOT) <'/usr'>} {<-type>} {<l>} {<-delete>}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {(${ Id.VSub_Name TEMPROOT)} {<-type>} {<f>} {<-size>} {<0>} {<-delete>}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {<-d>} {(${ Id.VSub_Name TEMPROOT)} {<-type>} {<d>} {<-empty>} {<-mindepth>} {<1>} {<-delete>} ] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name PRE_WORLD))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MTREENEW='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MTREENEW='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MTREENEW='> name:MTREENEW) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>} {<-t>} {<mergemaster.mtree>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <mtree> more_env: [] words: [ {<mtree>} {<-nci>} {<-p>} {(${ Id.VSub_Name TEMPROOT)} {<-k>} {<size> <Id.Lit_Comma ','> <md5digest>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name MTREENEW)} ) (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-z>} {(DQ (${ Id.VSub_Name NEW_UMASK))} {<-a>} {<-z>} {(DQ (${ Id.VSub_Name AUTO_RUN))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'USER_UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USER_UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USER_UMASK='> name:USER_UMASK) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <umask> more_env: [] words: [{<umask>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name USER_UMASK))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0022> pattern: (pat.Words words:[{<0022>} {<022>}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Your umask is currently set to '> (${ Id.VSub_Name USER_UMASK) <'. By default, this script'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' installs all files with the same user, group and modes that'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' they are created with by '> (${ Id.VSub_Name SOURCEDIR) <'/etc/Makefile, compared to'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' a umask of 022. This umask allows world read permission when'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' the file\'s default permissions have it.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' No world permissions can sometimes cause problems. A umask of'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' 022 will restore the default behavior, but is not mandatory.'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' /etc/master.passwd is a special case. Its file permissions'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' will be 600 (rw-------) if installed.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(DQ <'What umask should I use? ['> (${ Id.VSub_Name USER_UMASK) <'] '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<NEW_UMASK>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'NEW_UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEW_UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW_UMASK='> name:NEW_UMASK) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NEW_UMASK> var_name: NEW_UMASK suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName USER_UMASK)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] spids: [4898 4923] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CONFIRMED_UMASK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CONFIRMED_UMASK='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIRMED_UMASK='> name:CONFIRMED_UMASK) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name NEW_UMASK> var_name: NEW_UMASK suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<0022>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter.Words words: [ {<atm>} {<devfs>} {<diskless1>} {<diskless2>} {<network>} {<network6>} {<pccard>} {<serial>} {<syscons>} {<sysctl>} {<alpha>} {<amd64>} {<i386>} {<sparc64>} ] ) 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 '['>} {<-f>} {(DQ (${ Id.VSub_Name DESTDIR) <'/etc/rc.'> (${ Id.VSub_Name file))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'OLD_RC_PRESENT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OLD_RC_PRESENT='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OLD_RC_PRESENT='> name: OLD_RC_PRESENT ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Break break>) ] spids: [5146 5165] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name OLD_RC_PRESENT))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <1> pattern: (pat.Words words:[{<1>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** There are elements of the old rc system in '> (${ Id.VSub_Name DESTDIR) <'/etc/.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' While these scripts will not hurt anything, they are not'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' functional on an up to date system, and can be removed.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(SQ <'Move these files to /var/tmp/mergemaster/old_rc? [yes] '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<MOVE_OLD_RC>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name MOVE_OLD_RC))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <nN> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [] 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: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {<'/var/tmp/mergemaster/old_rc'>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter.Words words: [ {<atm>} {<devfs>} {<diskless1>} {<diskless2>} {<network>} {<network6>} {<pccard>} {<serial>} {<syscons>} {<sysctl>} {<alpha>} {<amd64>} {<i386>} {<sparc64>} ] ) 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 '['>} {<-f>} { (DQ (${ Id.VSub_Name DESTDIR) <'/etc/rc.'> (${ Id.VSub_Name file) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name DESTDIR) <'/etc/rc.'> (${ Id.VSub_Name file) } {<'/var/tmp/mergemaster/old_rc/'>} ] redirects: [] do_fork: T ) ] spids: [5340 5359] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' The files have been moved'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <install_error> name: install_error body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** FATAL ERROR: Unable to install '> (${ Id.VSub_Number 1) <' to '> (${ Id.VSub_Number 2) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <do_install_and_rm> name: do_install_and_rm body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name PRESERVE_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (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>} { (DQ (${ Id.VSub_Number 3) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [ {<mkdir>} {<-p>} {(${ Id.VSub_Name PRESERVE_FILES_DIR) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {(${ Id.VSub_Number 3) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } {(${ Id.VSub_Name PRESERVE_FILES_DIR) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] spids: [5486 5508] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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.KW_Bang '!'>} {<-d>} { (DQ (${ Id.VSub_Number 3) <'/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <install> more_env: [] words: [ {<install>} {<-m>} {(${ Id.VSub_Number 1)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <unlink> more_env: [] words: [{<unlink>} {(${ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] spids: [5589 5608] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <install_error> more_env: [] words: [{<install_error>} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [5562 5586] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <install_error> more_env: [] words: [{<install_error>} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <find_mode> name: find_mode body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<OCTAL>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'OCTAL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OCTAL='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OCTAL='> name:OCTAL) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Amp left: (arith_expr.Binary op_id: Id.Arith_Amp left: (arith_expr.Unary op_id: Id.Arith_Tilde child: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'obase=10; ibase=8; '> (${ Id.VSub_Name CONFIRMED_UMASK) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) right: {<Id.Lit_Digits 4095>} ) right: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'obase=10; ibase=8; '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-f>} {(DQ <'%OMp%OLp'>)} {(${ Id.VSub_Number 1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <bc> more_env: [] words: [{<bc>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%04o'> <Id.Lit_BadBackslash '\\'> <n>)} {(${ Id.VSub_Name OCTAL)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <mm_install> name: mm_install body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<INSTALL_DIR>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALL_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALL_DIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INSTALL_DIR='> name:INSTALL_DIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALL_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALL_DIR='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INSTALL_DIR='> name:INSTALL_DIR) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name INSTALL_DIR> var_name: INSTALL_DIR suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name INSTALL_DIR))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'INSTALL_DIR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALL_DIR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALL_DIR='> name: INSTALL_DIR ) op: assign_op.Equal rhs: {<'/'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} {<-a>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'DIR_MODE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DIR_MODE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIR_MODE='> name:DIR_MODE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <find_mode> more_env: [] words: [ {<find_mode>} { (DQ (${ Id.VSub_Name TEMPROOT) <'/'> (${ Id.VSub_Name INSTALL_DIR) ) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <install> more_env: [] words: [ {<install>} {<-d>} {<-o>} {<root>} {<-g>} {<wheel>} {<-m>} {(DQ (${ Id.VSub_Name DIR_MODE))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <install_error> more_env: [] words: [ {<install_error>} {($ Id.VSub_Number 1)} {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [5798 5831] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'FILE_MODE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'FILE_MODE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILE_MODE='> name:FILE_MODE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <find_mode> more_env: [] words: [{<find_mode>} {(DQ (${ 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 '['>} {<Id.KW_Bang '!'>} {<-x>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>}) right: <Id.Right_DollarBrace '}'> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/etc/mail/aliases'> pattern: (pat.Words words:[{<'/etc/mail/aliases'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NEED_NEWALIASES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEED_NEWALIASES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NEED_NEWALIASES='> name: NEED_NEWALIASES ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/etc/login.conf'> pattern: (pat.Words words:[{<'/etc/login.conf'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NEED_CAP_MKDB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEED_CAP_MKDB='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NEED_CAP_MKDB='> name: NEED_CAP_MKDB ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/etc/services'> pattern: (pat.Words words:[{<'/etc/services'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'NEED_SERVICES_MKDB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEED_SERVICES_MKDB='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NEED_SERVICES_MKDB='> name: NEED_SERVICES_MKDB ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/etc/master.passwd'> pattern: (pat.Words words:[{<'/etc/master.passwd'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <do_install_and_rm> more_env: [] words: [ {<do_install_and_rm>} {<600>} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'NEED_PWD_MKDB='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'NEED_PWD_MKDB='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NEED_PWD_MKDB='> name: NEED_PWD_MKDB ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'DONT_INSTALL='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'DONT_INSTALL='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DONT_INSTALL='> name: DONT_INSTALL ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <'/.cshrc'> pattern: (pat.Words words:[{<'/.cshrc'>} {<'/.profile'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<st_nlink>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'st_nlink='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'st_nlink='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'st_nlink='> name: st_nlink ) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-s>} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_install_and_rm> more_env: [] words: [ {<do_install_and_rm>} {(DQ (${ Id.VSub_Name FILE_MODE))} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name AUTO_INSTALL))} {<-a>} {($ Id.VSub_DollarName st_nlink)} {<-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 'HANDLE_LINK='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'HANDLE_LINK='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HANDLE_LINK='> name: HANDLE_LINK ) op: assign_op.Equal rhs: {<l>} ) ] redirects: [] ) ] spids: [6096 6119] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name LINK_EXPLAINED))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' *** Historically BSD derived systems have had a' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' hard link from /.cshrc and /.profile to'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' their namesakes in /root. Please indicate' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' your preference below for bringing your'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' installed files up to date.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'LINK_EXPLAINED='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LINK_EXPLAINED='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LINK_EXPLAINED='> name: LINK_EXPLAINED ) op: assign_op.Equal rhs: {<yes>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Use \'d\' to delete the temporary '> (${ Id.VSub_Name COMPFILE) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Use \'l\' to delete the existing '> (${ Id.VSub_Name DESTDIR) <'/root/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) <' and create the link'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ < ' Default is to leave the temporary file to deal with by hand' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <' How should I handle '> (${ Id.VSub_Name COMPFILE) <'? [Leave it to install later] '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<HANDLE_LINK>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name HANDLE_LINK))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <dD> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(DQ (${ Id.VSub_Name COMPFILE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' *** Deleting '> (${ Id.VSub_Name COMPFILE))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <lL> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unlink> more_env: [] words: [ {<unlink>} {(${ Id.VSub_Name DESTDIR) <'/root/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ] 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: <ln> more_env: [] words: [ {<ln>} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } {(${ Id.VSub_Name DESTDIR) <'/root/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'> } ) right: <Id.Right_DollarBrace '}'> ) } ] 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 <' *** Link from '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <' to '> (${ Id.VSub_Name DESTDIR) <'/root/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) <' installed successfully'> ) } ] redirects: [] do_fork: T ) ] spids: [6339 6364] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Error linking '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <' to '> (${ Id.VSub_Name DESTDIR) <'/root/'> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> 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>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DONT_INSTALL))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <do_install_and_rm> more_env: [] words: [ {<do_install_and_rm>} {(DQ (${ Id.VSub_Name FILE_MODE))} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ] redirects: [] do_fork: T ) ] 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: <unset> more_env: [] words: [{<unset>} {<DONT_INSTALL>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [5915 5932] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <do_install_and_rm> more_env: [] words: [ {<do_install_and_rm>} {(DQ (${ Id.VSub_Name FILE_MODE))} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] 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 '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name TEMPROOT))} {<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 <'*** FATAL ERROR: The temproot directory ('> (${ Id.VSub_Name TEMPROOT) <')'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' has disappeared!'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [6569 6586] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] redirects:[] do_fork:T) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** Beginning comparison'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] 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 '['>} {<-z>} {(DQ (${ Id.VSub_Name PRE_WORLD))} {<-a>} {<-z>} {(DQ (${ Id.VSub_Name RERUN))} {<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 <' *** Checking '> (${ Id.VSub_Name DESTDIR) <'/etc/rc.d for stale files'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ (${ Id.VSub_Name DESTDIR) <'/etc/rc.d'>)}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter.Words words:[{<Id.Lit_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 '['>} {<Id.KW_Bang '!'>} {<-e>} { (DQ (${ Id.VSub_Name TEMPROOT) <'/etc/rc.d/'> (${ Id.VSub_Name file) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'STALE_RC_FILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'STALE_RC_FILES='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'STALE_RC_FILES='> name: STALE_RC_FILES ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name STALE_RC_FILES) <' '> (${ Id.VSub_Name file) ) } ) ] redirects: [] ) ] spids: [6715 6736] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name STALE_RC_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {(SQ <' *'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' *** No stale files found'>)}] redirects: [] do_fork: T ) ] 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>} { (DQ <' *** The following files exist in '> (${ Id.VSub_Name DESTDIR) <'/etc/rc.d but not in'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' '> (${ Id.VSub_Name TEMPROOT) <'/etc/rc.d/:'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name STALE_RC_FILES))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' The presence of stale files in this directory can cause the'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' dreaded unpredictable results, and therefore it is highly'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' recommended that you delete them.'>)}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(SQ <' *** Delete them now? [n] '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<DELETE_STALE_RC_FILES>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <yY> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' *** Deleting ... '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name STALE_RC_FILES)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' done.'>)}] redirects: [] do_fork: T ) ] 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>} {(SQ <' *** Files will not be deleted'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<2>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (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 '['>} {<-n>} {(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))} {<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>} {(SQ <' *** Deleting ... '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(${ Id.VSub_Name STALE_RC_FILES)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' done.'>)}] redirects: [] do_fork: T ) ] spids: [6961 6976] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] spids: [6646 6671] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ (${ Id.VSub_Name TEMPROOT))}] 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 '['>} {<-r>} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))}] redirects: [] do_fork: T ) ] spids: [7029 7044] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [COMPFILE] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {<.>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) 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 '['>} {<-e>} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLED_TYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLED_TYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLED_TYPE='> name: INSTALLED_TYPE ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <stat> more_env: [] words: [ {<stat>} {<-f>} {(SQ <'%HT'>)} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) ] spids: [7093 7113] ) ] else_kw: <Id.KW_Else else> else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT_TYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT_TYPE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMPROOT_TYPE='> name:TEMPROOT_TYPE) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <stat> more_env: [] words: [{<stat>} {<-f>} {(SQ <'%HT'>)} {($ Id.VSub_DollarName COMPFILE)}] 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 '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName TEMPROOT_TYPE))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName INSTALLED_TYPE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName COMPFILE))} {<Id.Lit_Equals '='>} {(SQ <.>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'TEMPROOT_TYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEMPROOT_TYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPROOT_TYPE='> name: TEMPROOT_TYPE ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName TEMPROOT_TYPE)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <upper> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <lower> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'INSTALLED_TYPE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'INSTALLED_TYPE='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INSTALLED_TYPE='> name: INSTALLED_TYPE ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName INSTALLED_TYPE)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [ {<tr>} {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <upper> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } {<Id.Lit_LBracket '['> <Id.Lit_Colon ':'> <lower> <Id.Lit_Colon ':'> <Id.Lit_RBracket ']'> } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** The installed file '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>}) right: <Id.Right_DollarBrace '}'> ) <' has the type '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName INSTALLED_TYPE) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' but the new version has the type '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName TEMPROOT_TYPE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' How would you like to handle this?'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' Use \'r\' to remove '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<.>}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName TEMPROOT_TYPE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'symbolic link'>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'TARGET='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TARGET='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGET='> name:TARGET) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <readlink> more_env: [] words: [{<readlink>} {($ Id.VSub_DollarName COMPFILE)}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' and create a link to '> ($ Id.VSub_DollarName TARGET) <' in its place'> ) } ] redirects: [] do_fork: T ) ] 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>} { (DQ <' You will be able to install it as a '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_DollarName TEMPROOT_TYPE) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Use \'i\' to ignore this'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<-n>} {(DQ <' How to proceed? [i] '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<ANSWER>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName ANSWER))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [{<Id.Lit_LBracket '['> <rR> <Id.Lit_RBracket ']'>}] ) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name PRESERVE_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } {(${ Id.VSub_Name PRESERVE_FILES_DIR) <'/'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ops: [<Id.Op_DPipe _>] ) ] 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: <rm> more_env: [] words: [ {<rm>} {<-rf>} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName TEMPROOT_TYPE))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ <'symbolic link'>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <ln> more_env: [] words: [ {<ln>} {<-sf>} {($ Id.VSub_DollarName TARGET)} {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** See the man page about adding '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) <' to the list of IGNORE_FILES'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <press_to_continue> more_env: [] words: [{<press_to_continue>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] spids: [7165 7184] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [COMPFILE] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [{<find>} {<.>} {<-type>} {<f>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) 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 '['>} {<Id.KW_Bang '!'>} {<-e>} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <diff_loop> more_env: [] words: [{<diff_loop>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_INSTALL))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) ] 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: <diff_loop> more_env: [] words: [{<diff_loop>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [7610 7632] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name STRICT))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [ {(SQ )} {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ID1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ID1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ID1='> name:ID1) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (DQ <'['> <Id.Lit_Dollar '$'> <']'> (${ Id.VSub_Name ID_TAG) <':'> ) } {(${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'ID2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ID2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ID2='> name:ID2) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} { (DQ <'['> <Id.Lit_Dollar '$'> <']'> (${ Id.VSub_Name ID_TAG) <':'> ) } {(${ Id.VSub_Name COMPFILE)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ID2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ID2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ID2='> name:ID2) op: assign_op.Equal rhs: {<none>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name ID2))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ (${ Id.VSub_Name ID1))}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Temp '> (${ Id.VSub_Name COMPFILE) <' and installed have the same Id, deleting'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(DQ (${ Id.VSub_Name COMPFILE))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-f>} {(DQ (${ Id.VSub_Name COMPFILE))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <diff> more_env: [] words: [ {<diff>} {<-q>} {(${ Id.VSub_Name DIFF_OPTIONS)} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Temp '> (${ Id.VSub_Name COMPFILE) <' and installed are the same, deleting'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {(DQ (${ Id.VSub_Name COMPFILE))}] redirects: [] do_fork: T ) ] spids: [7925 7962] ) ] else_kw: <Id.KW_Else else> else_action: [ (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 '['>} {<-n>} {(DQ ($ Id.VSub_DollarName FREEBSD_ID))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <diff> more_env: [] words: [ {<diff>} {<-q>} {<-I> (SQ <'[$]FreeBSD.*[$]'>)} { (DQ (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (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: <mm_install> more_env: [] words: [ {<mm_install>} {(DQ (${ Id.VSub_Name COMPFILE))} ] 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 <'*** Updated revision control Id for '> (${ Id.VSub_Name DESTDIR) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPFILE> var_name: COMPFILE suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<.>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] spids: [8073 8084] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** Problem installing '> (${ Id.VSub_Name COMPFILE) <', it will remain to merge by hand later'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] spids: [8032 8070] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [8016 8029] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <diff_loop> more_env: [] words: [{<diff_loop>}] redirects: [] do_fork: T ) ] 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>} { (DQ <' *** '> (${ Id.VSub_Name COMPFILE) <' will remain for your consideration'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [7894 7909] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] redirects:[] do_fork:T) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** Comparison complete'>)}] 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 '['>} {<-s>} {(DQ (${ Id.VSub_Name MTREENEW))} {<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 <'*** Saving mtree database for future upgrades'>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-e>} {(DQ (${ Id.VSub_Name MTREEFILE))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <unlink> more_env: [] words: [{<unlink>} {(${ Id.VSub_Name MTREEFILE)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {(${ Id.VSub_Name MTREENEW)} {(${ Id.VSub_Name MTREEFILE)}] redirects: [] do_fork: T ) ] spids: [8211 8226] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] redirects:[] do_fork:T) (command.ShAssignment left: <Id.Lit_VarLike 'TEST_FOR_FILES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TEST_FOR_FILES='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST_FOR_FILES='> name:TEST_FOR_FILES) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {(${ Id.VSub_Name TEMPROOT)} {<-type>} {<f>} {<-size>} {<Id.Lit_Other '+'> <0>} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name TEST_FOR_FILES))} {<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 <'*** Files that remain for you to merge by hand:'>)}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {(DQ (${ Id.VSub_Name TEMPROOT))} {<-type>} {<f>} {<-size>} {<Id.Lit_Other '+'> <0>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} { (DQ <'Do you wish to delete what is left of '> (${ Id.VSub_Name TEMPROOT) <'? [no] '> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<DEL_TEMPROOT>}] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name DEL_TEMPROOT))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words: [ {<Id.Lit_LBracket '['> <yY> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <delete_temproot> more_env: [] words: [{<delete_temproot>}] redirects: [] do_fork: T ) ] 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>} {(DQ <' *** '> (${ Id.VSub_Name TEMPROOT) <' will remain'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [8297 8312] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** '> (${ Id.VSub_Name TEMPROOT) <' is empty, deleting'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <delete_temproot> more_env: [] words: [{<delete_temproot>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < '*** You chose the automatic install option for files that did not' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < ' exist on your system. The following were installed for you:' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <'*** You chose the automatic install option for files that did not'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' exist on your system. The following were installed for you:'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name AUTO_RUN))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < '*** You chose the automatic upgrade option for files that you did' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < ' not alter on your system. The following were upgraded for you:' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <'*** You chose the automatic upgrade option for files that you did'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(SQ <' not alter on your system. The following were upgraded for you:'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <run_it_now> name: run_it_now body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName AUTO_RUN))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<answer>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) terminator: <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 '['>} {(DQ ($ Id.VSub_DollarName RUN_UPDATES))} {<Id.Lit_Equals '='>} {<always>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'answer='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'answer='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer) op: assign_op.Equal rhs: {<y>} ) ] redirects: [] ) ] spids: [8753 8768] ) (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 '['>} {(DQ ($ Id.VSub_DollarName RUN_UPDATES))} {<Id.Lit_Equals '='>} {<never>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'answer='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'answer='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'answer='> name:answer) op: assign_op.Equal rhs: {<n>} ) ] redirects: [] ) ] spids: [8775 8790] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {<-n>} {(SQ <' Would you like to run it now? y or n [n] '>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<answer>}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName answer))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <y> pattern: (pat.Words words:[{<y>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' Running '> (${ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ (${ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<n>}]) middle: <Id.Right_CasePat _> action: [ (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.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName RUN_UPDATES))} {<Id.Lit_Equals '='>} {<never>} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' *** Cancelled'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] spids: [8869 8886] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' Make sure to run '> (${ Id.VSub_Number 1) <' yourself'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> ) ] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' *** Sorry, I do not understand your answer ('> (${ Id.VSub_Name answer) <')'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NEED_NEWALIASES))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name DESTDIR))} {<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 <'*** You installed a new aliases file into '> (${ Id.VSub_Name DESTDIR) <'/etc/mail, but'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' the newaliases command is limited to the directories configured'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' in sendmail.cf. Make sure to create your aliases database by'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' hand when your sendmail configuration is done.'>)}] redirects: [] do_fork: T ) ] spids: [8989 9004] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'*** You installed a new aliases file, so make sure that you run'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' \'/usr/bin/newaliases\' to rebuild your aliases database'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [{<run_it_now>} {(SQ <'/usr/bin/newaliases'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NEED_CAP_MKDB))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** You installed a login.conf file, so make sure that you run'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' \'/usr/bin/cap_mkdb '> (${ Id.VSub_Name DESTDIR) <'/etc/login.conf\''>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' to rebuild your login.conf database'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [ {<run_it_now>} {(DQ <'/usr/bin/cap_mkdb '> (${ Id.VSub_Name DESTDIR) <'/etc/login.conf'>)} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NEED_SERVICES_MKDB))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'*** You installed a services file, so make sure that you run'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <' \'/usr/sbin/services_mkdb -q -o '> (${ Id.VSub_Name DESTDIR) <'/var/db/services.db '> (${ Id.VSub_Name DESTDIR) <'/etc/services\''> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' to rebuild your services database'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [ {<run_it_now>} { (DQ <'/usr/sbin/services_mkdb -q -o '> (${ Id.VSub_Name DESTDIR) <'/var/db/services.db '> (${ Id.VSub_Name DESTDIR) <'/etc/services'> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name NEED_PWD_MKDB))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'*** You installed a new master.passwd file, so make sure that you run'>)} ] 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name DESTDIR))} {<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 <' \'/usr/sbin/pwd_mkdb -d '> (${ Id.VSub_Name DESTDIR) <'/etc -p '> (${ Id.VSub_Name DESTDIR) <'/etc/master.passwd\''> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' to rebuild your password files'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [ {<run_it_now>} { (DQ <'/usr/sbin/pwd_mkdb -d '> (${ Id.VSub_Name DESTDIR) <'/etc -p '> (${ Id.VSub_Name DESTDIR) <'/etc/master.passwd'> ) } ] redirects: [] do_fork: T ) ] spids: [9246 9261] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' \'/usr/sbin/pwd_mkdb -p /etc/master.passwd\''>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' to rebuild your password files'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [{<run_it_now>} {(SQ <'/usr/sbin/pwd_mkdb -p /etc/master.passwd'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-e>} {(DQ (${ Id.VSub_Name DESTDIR) <'/etc/localtime'>)} {<-a>} {<Id.KW_Bang '!'>} {<-L>} {(DQ (${ Id.VSub_Name DESTDIR) <'/etc/localtime'>)} {<-a>} {<-z>} {(DQ (${ Id.VSub_Name PRE_WORLD))} {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name DESTDIR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'tzs_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tzs_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tzs_args='> name:tzs_args) op: assign_op.Equal rhs: {(DQ <'-C '> (${ Id.VSub_Name DESTDIR))} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (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>} {(DQ (${ Id.VSub_Name DESTDIR) <'/var/db/zoneinfo'>)} {<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 <'*** Reinstalling '> (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {(${ Id.VSub_Name DESTDIR) <'/var/db/zoneinfo'>}] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) <' as '> (${ Id.VSub_Name DESTDIR) <'/etc/localtime'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <tzsetup> more_env: [] words: [{<tzsetup>} {($ Id.VSub_DollarName tzs_args)} {<-r>}] redirects: [] do_fork: T ) ] spids: [9407 9423] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** There is no '> (${ Id.VSub_Name DESTDIR) <'/var/db/zoneinfo file to update '> (${ Id.VSub_Name DESTDIR) <'/etc/localtime.'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ <' You should run tzsetup'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <run_it_now> more_env: [] words: [{<run_it_now>} {(DQ <'tzsetup '> ($ Id.VSub_DollarName tzs_args))}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [9333 9372] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(SQ )}] 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 '['>} {<-r>} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))}] redirects: [] do_fork: T ) ] spids: [9499 9514] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name COMP_CONFS))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] 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: <.> more_env: [] words: [{<.>} {(${ Id.VSub_Name DESTDIR) <'/etc/defaults/rc.conf'>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'*** Comparing conf files: '> (${ Id.VSub_Name rc_conf_files))} ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [CONF_FILE] iterable: (for_iter.Words words:[{(${ Id.VSub_Name rc_conf_files)}]) 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 '['>} {<-r>} { (DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) ) } {<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>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** From '> (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'*** From '> (${ Id.VSub_Name DESTDIR) <'/etc/defaults/rc.conf'> ) } ] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [RC_CONF_VAR] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-i>} {<Id.Lit_Other '^'> <Id.Lit_LBracket '['> <a-z> <Id.Lit_RBracket ']'> } {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [ {<cut>} {<-d>} {(SQ <'='>)} {<-f>} {<1>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-w>} {<Id.Lit_Other '^'> (${ Id.VSub_Name RC_CONF_VAR)} {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-w>} {<Id.Lit_Other '^'> (${ Id.VSub_Name RC_CONF_VAR) } {(${ Id.VSub_Name DESTDIR) <'/etc/defaults/rc.conf'> } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (SQ < ' * No default variable with this name' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [9589 9607] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ) right: <Id.Right_Subshell _> redirects: [] ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [{(${ Id.VSub_Name PAGER)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(SQ )}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> 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 '['>} {<-n>} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <find> more_env: [] words: [ {<find>} {<-d>} {($ Id.VSub_DollarName PRESERVE_FILES_DIR)} {<-type>} {<d>} {<-empty>} {<-delete>} ] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.Simple blame_tok: <rmdir> more_env: [] words: [{<rmdir>} {($ Id.VSub_DollarName PRESERVE_FILES_DIR)}] redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) ] spids: [9761 9776] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )