(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(/bin) (Id.Lit_Other ':') (/usr/bin) (Id.Lit_Other ':') (/usr/sbin)} spids: [26] ) ] ) (command.ShFunction name: display_usage body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSION_NUMBER) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:43) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(grep)} {(DQ ('[') (Id.Lit_Other '$') (']FreeBSD:'))} {($ Id.VSub_Number '$0')} ) (C {(cut)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:63))} {(-f)} {(4)} ) ] negated: F ) ] ) ) } spids: [42] ) ] ) (C {(echo)} {(DQ ('mergemaster version ') (${ Id.VSub_Name VERSION_NUMBER))}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: 'Usage: mergemaster [-scrvhpCP] [-a|[-iFU]] [--run-updates=always|never]' span_id: 85 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]' span_id: 92 ) ) } ) (C {(echo)} {(DQ ('Options:'))}) (C {(echo)} {(DQ (' -s Strict comparison (diff every pair of files)'))}) (C {(echo)} {(DQ (' -c Use context diff instead of unified diff'))}) (C {(echo)} {(DQ (' -r Re-run on a previously cleaned directory (skip temproot creation)'))} ) (C {(echo)} {(DQ (' -v Be more verbose about the process, include additional checks'))}) (C {(echo)} {(DQ (' -a Leave all files that differ to merge by hand'))}) (C {(echo)} {(DQ (' -h Display more complete help'))}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -i Automatically install files that do not exist in destination directory' span_id: 148 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -p Pre-buildworld mode, only compares crucial files' span_id: 155 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -F Install files that differ only by revision control Id ($FreeBSD)' span_id: 162 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -C Compare local rc.conf variables to the defaults' span_id: 169 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -P Preserve files that are overwritten' span_id: 176 ) ) } ) (C {(echo)} {(DQ (' -U Attempt to auto upgrade files that have not been user modified'))}) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:' ***DANGEROUS***' span_id:190))}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' --run-updates= Specify always or never to run newalises, pwd_mkdb, etc.' span_id: 197 ) ) } ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' -m /path/directory Specify location of source to do the make in'))}) (C {(echo)} {(DQ (' -t /path/directory Specify temp root directory'))}) (C {(echo)} { (DQ (' -d Add date and time to directory name (e.g., /var/tmp/temproot.') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:225) command_list: (command.CommandList children: [ (C {(date)} {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) (Id.Lit_Other '%') (d.) (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M) } ) ] ) ) (')') ) } ) (C {(echo)} {(DQ (' -u N Specify a numeric umask'))}) (C {(echo)} {(DQ (' -w N Specify a screen width in columns to sdiff'))}) (C {(echo)} {(DQ (' -A architecture Alternative architecture name to pass to make'))}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' -D /path/directory Specify the destination directory to install files to' span_id: 268 ) ) } ) (C {(echo)} {(SQ )}) ] ) ) (command.ShFunction name: display_help body: (command.BraceGroup children: [ (C {(echo)} {(DQ ('* To specify a directory other than /var/tmp/temproot for the'))}) (C {(echo)} {(DQ (' temporary root environment, use -t /path/to/temp/root'))}) (C {(echo)} {(DQ ('* The -w option takes a number as an argument for the column width'))}) (C {(echo)} {(DQ (' of the screen. The default is 80.'))}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '* The -a option causes mergemaster to run without prompting.' span_id: 319 ) ) } ) ] ) ) (command.ShFunction name: merge_loop body: (command.BraceGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name VERBOSE))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[350 352 354 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ (' *** Type h at the sdiff prompt (%) to get usage help'))}) ] spids: [357 358 368 -1] ) ] ) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MERGE_AGAIN) op: assign_op.Equal rhs: {(yes)} spids: [380] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:384) cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name MERGE_AGAIN))} {(Id.Lit_Equals '=')} {(DQ (yes))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:401) ) ] body: (command.DoGroup children: [ (C {(cp)} {(-p)} {(DQ (${ Id.VSub_Name COMPFILE))} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} ) (C {(sdiff)} {(-o)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} {(--text)} {(--suppress-common-lines)} {(--width) (Id.Lit_Equals '=') (braced_var_sub token: (Token id:Id.VSub_Name val:SCREEN_WIDTH span_id:448) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(80)}) ) } { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:458) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALL_MERGED) op: assign_op.Equal rhs: {(V)} spids: [471] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:475) cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:506) ) ] body: (command.DoGroup children: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (" Use 'i' to install merged file"))}) (C {(echo)} {(DQ (" Use 'r' to re-do the merge"))}) (C {(echo)} {(DQ (" Use 'v' to view the merged file"))}) (C {(echo)} {(DQ (' Default is to leave the temporary file to deal with by hand'))} ) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} { (DQ ( ' *** How should I deal with the merged file? [Leave it for later] ' ) ) } ) (C {(read)} {(INSTALL_MERGED)}) (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALL_MERGED))} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (iI) (Id.Lit_RBracket ']')}] action: [ (C {(mv)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} {(DQ (${ Id.VSub_Name COMPFILE))} ) (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))}) terminator: (Token id:Id.Op_Semi val:';' span_id:614) ) ] action: [ (C {(echo)} { (DQ (' *** Merged version of ') (${ Id.VSub_Name COMPFILE) (' installed successfully') ) } ) ] spids: [605 616] ) ] else_action: [ (C {(echo)} { (DQ (' *** Problem installing ') (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand later') ) } ) ] ) (C {(unset)} {(MERGE_AGAIN)}) ] spids: [577 580 652 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (rR) (Id.Lit_RBracket ']')}] action: [(C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))})] spids: [655 658 671 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (vV) (Id.Lit_RBracket ']')}] action: [ (C {(${ Id.VSub_Name PAGER)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} ) ] spids: [674 677 692 -1] ) (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) (C {(unset)} {(MERGE_AGAIN)}) ] spids: [695 697 716 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name INSTALL_MERGED))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALL_MERGED) op: assign_op.Equal rhs: {(V)} spids: [733] ) ] ) ] spids: [719 720 737 -1] ) ] ) ] ) ) ] ) ) ] ) ) (command.ShFunction name: diff_loop body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE) op: assign_op.Equal rhs: {(v)} spids: [766] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:771) cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:818) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:834) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } {(-a)} {(-f)} {(DQ (${ Id.VSub_Name COMPFILE))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:851) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {(-a)} {(-n)} {(DQ (${ Id.VSub_Name CHANGED))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:879) ) ] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name CHANGED))} arms: [ (case_arm pat_list: [ {(Id.Lit_Star '*') (Id.Lit_Other ':') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 901 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) (Id.Lit_Other ':') (Id.Lit_Star '*') } ] spids: [895 907 909 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' has not been user modified.') ) } ) (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))} ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 952 ) ) ] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' upgraded successfully') ) } ) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name: AUTO_UPGRADED_FILES ) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES) (' ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 988 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ('\n') ) } spids: [978] ) ] ) ] spids: [943 954] ) ] else_action: [ (C {(echo)} { (DQ (' *** Problem upgrading ') (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand') ) } ) ] ) (command.ControlFlow token: (Token id: Id.ControlFlow_Return val: return span_id: 1013 ) ) ] spids: [915 916 1016 -1] ) ] ) ] spids: [856 881] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1056) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' ====================================================================== ' span_id: 1070 ) ) } ) (C {(echo)} {(SQ )}) (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (C {(echo)} { (DQ (' *** Displaying differences between ') (${ Id.VSub_Name COMPFILE) (' and installed version:') ) } ) (C {(echo)} {(SQ )}) (C {(diff)} {(${ Id.VSub_Name DIFF_FLAG)} {(${ Id.VSub_Name DIFF_OPTIONS)} { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 1115 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ) ] ) ) (C {(${ Id.VSub_Name PAGER)}) ] negated: F ) (C {(echo)} {(SQ )}) ] spids: [1025 1058] ) ] ) ] spids: [823 853] ) ] else_action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** There is no installed version of ') (${ Id.VSub_Name COMPFILE)) } ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALL))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ee) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']') } ] action: [ (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1209) ) ] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' installed successfully') ) } ) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:AUTO_INSTALLED_FILES) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES) (' ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 1245 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ('\n') ) } spids: [1235] ) ] ) ] spids: [1200 1211] ) ] else_action: [ (C {(echo)} { (DQ (' *** Problem installing ') (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand') ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1270) ) ] spids: [1182 1191 1273 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NO_INSTALLED) op: assign_op.Equal rhs: {(yes)} spids: [1280] ) ] ) ] spids: [1276 1277 1284 -1] ) ] ) ] ) (C {(echo)} {(DQ (" Use 'd' to delete the temporary ") (${ Id.VSub_Name COMPFILE))}) (C {(echo)} {(DQ (" Use 'i' to install the temporary ") (${ Id.VSub_Name COMPFILE))} ) (command.Case to_match: {(DQ (${ Id.VSub_Name NO_INSTALLED))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(DQ (" Use 'm' to merge the temporary and installed versions"))} ) (C {(echo)} {(DQ (" Use 'v' to view the diff results again"))}) ] spids: [1325 1327 1344 -1] ) ] ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' Default is to leave the temporary file to deal with by hand'))}) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} {(DQ ('How should I deal with this? [Leave it for later] '))}) (C {(read)} {(HANDLE_COMPFILE)}) (command.Case to_match: {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')}] action: [ (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))}) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' *** Deleting ') (${ Id.VSub_Name COMPFILE))}) ] spids: [1395 1398 1426 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (iI) (Id.Lit_RBracket ']')}] action: [ (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))}) terminator: (Token id:Id.Op_Semi val:';' span_id:1450) ) ] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' installed successfully') ) } ) ] spids: [1441 1452] ) ] else_action: [ (C {(echo)} { (DQ (' *** Problem installing ') (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand') ) } ) ] ) ] spids: [1429 1432 1483 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (mM) (Id.Lit_RBracket ']')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name NO_INSTALLED))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(C {(merge_loop)})] spids: [1503 1505 1515 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** There is no installed version of ') (${ Id.VSub_Name COMPFILE) ) } ) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE) op: assign_op.Equal rhs: {(DQ ('NOT V'))} spids: [1544] ) ] ) ] spids: [1518 1519 1550 -1] ) ] ) ] spids: [1486 1489 1559 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (vV) (Id.Lit_RBracket ']')}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1568) ) ] spids: [1562 1565 1571 -1] ) (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) ] spids: [1574 1576 1596 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name HANDLE_COMPFILE))}) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE) op: assign_op.Equal rhs: {(DQ ('NOT V'))} spids: [1623] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:1629) ) ] spids: [1599 1600 1632 -1] ) ] ) ] ) ) (C {(unset)} {(NO_INSTALLED)}) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name VERBOSE))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[1666 1668 1670 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(sleep)} {(3)})] spids: [1673 1674 1682 -1] ) ] ) ] ) ) (command.ShFunction name: press_to_continue body: (command.BraceGroup children: [ (C {(local)} {(DISCARD)}) (C {(echo)} {(-n)} { (SQ (Token id: Id.Lit_Chars val: ' *** Press the [Enter] or [Return] key to continue ' span_id: 1708 ) ) } ) (C {(read)} {(DISCARD)}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:/var/tmp/temproot span_id:1727))} spids: [1725] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} {(/etc/mergemaster.rc)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1746) ) ] action: [(C {(.)} {(/etc/mergemaster.rc)})] spids: [1737 1748] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ ($ Id.VSub_DollarName '$HOME') (/.mergemasterrc))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1776) ) ] action: [(C {(.)} {(DQ ($ Id.VSub_DollarName '$HOME') (/.mergemasterrc))})] spids: [1764 1778] ) ] ) (command.ForEach iter_name: var iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$var'))} arms: [ (case_arm pat_list: [{(--run-updates) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUN_UPDATES) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1821) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:var span_id:1827) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('--run-updates=')} ) ) } ) (C {(tr)} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) (Id.Lit_Other ':') (Id.Lit_RBracket ']') } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')} ) ] negated: F ) ] ) ) } spids: [1820] ) ] ) ] spids: [1815 1817 1850 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newopts) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$newopts') (' ') ($ Id.VSub_DollarName '$var')) } spids: [1857] ) ] ) ] spids: [1853 1854 1865 -1] ) ] ) ] ) ) (C {(Id.KW_Set set)} {(--)} {($ Id.VSub_DollarName '$newopts')}) (C {(unset)} {(Id.KW_Var var)} {(newopts)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1892) cond: [ (command.Sentence child: (C {(getopts)} {(DQ (':ascrvhipCPm:t:du:w:D:A:FU'))} {(COMMAND_LINE_ARGUMENT)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1902) ) ] body: (command.DoGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name COMMAND_LINE_ARGUMENT))} arms: [ (case_arm pat_list: [{(A)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARCHSTRING) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'TARGET_ARCH=' span_id:1924)) (${ Id.VSub_Name OPTARG) } spids: [1922] ) ] ) ] spids: [1918 1919 1931 -1] ) (case_arm pat_list: [{(F)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FREEBSD_ID) op: assign_op.Equal rhs: {(yes)} spids: [1938] ) ] ) ] spids: [1934 1935 1942 -1] ) (case_arm pat_list: [{(U)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:AUTO_UPGRADE) op: assign_op.Equal rhs: {(yes)} spids: [1949] ) ] ) ] spids: [1945 1946 1953 -1] ) (case_arm pat_list: [{(s)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STRICT) op: assign_op.Equal rhs: {(yes)} spids: [1960] ) ] ) (C {(unset)} {(DIFF_OPTIONS)}) ] spids: [1956 1957 1969 -1] ) (case_arm pat_list: [{(c)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIFF_FLAG) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:-c span_id:1978))} spids: [1976] ) ] ) ] spids: [1972 1973 1982 -1] ) (case_arm pat_list: [{(r)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RERUN) op: assign_op.Equal rhs: {(yes)} spids: [1989] ) ] ) ] spids: [1985 1986 1993 -1] ) (case_arm pat_list: [{(v)}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERBOSE) op: assign_op.Equal rhs: {(yes)} spids: [2015] ) ] ) ] spids: [2011 2013 2018 -1] ) ] ) ] spids: [1996 1997 2024 -1] ) (case_arm pat_list: [{(a)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:AUTO_RUN) op: assign_op.Equal rhs: {(yes)} spids: [2031] ) ] ) (C {(unset)} {(VERBOSE)}) ] spids: [2027 2028 2040 -1] ) (case_arm pat_list: [{(h)}] action: [ (C {(display_usage)}) (C {(display_help)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2053) arg_word: {(0)} ) ] spids: [2043 2044 2058 -1] ) (case_arm pat_list: [{(i)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:AUTO_INSTALL) op: assign_op.Equal rhs: {(yes)} spids: [2065] ) ] ) ] spids: [2061 2062 2069 -1] ) (case_arm pat_list: [{(C)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COMP_CONFS) op: assign_op.Equal rhs: {(yes)} spids: [2076] ) ] ) ] spids: [2072 2073 2080 -1] ) (case_arm pat_list: [{(P)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PRESERVE_FILES) op: assign_op.Equal rhs: {(yes)} spids: [2087] ) ] ) ] spids: [2083 2084 2091 -1] ) (case_arm pat_list: [{(p)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PRE_WORLD) op: assign_op.Equal rhs: {(yes)} spids: [2098] ) ] ) (C {(unset)} {(COMP_CONFS)}) (C {(unset)} {(AUTO_RUN)}) ] spids: [2094 2095 2112 -1] ) (case_arm pat_list: [{(m)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOURCEDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} spids: [2119] ) ] ) ] spids: [2115 2116 2125 -1] ) (case_arm pat_list: [{(t)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} spids: [2132] ) ] ) ] spids: [2128 2129 2138 -1] ) (case_arm pat_list: [{(d)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT) op: assign_op.Equal rhs: {(${ Id.VSub_Name TEMPROOT) (.) (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:2150) command_list: (command.CommandList children: [ (C {(date)} {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) (Id.Lit_Other '%') (d.) (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M) } ) ] ) ) } spids: [2145] ) ] ) ] spids: [2141 2142 2167 -1] ) (case_arm pat_list: [{(u)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEW_UMASK) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} spids: [2174] ) ] ) ] spids: [2170 2171 2180 -1] ) (case_arm pat_list: [{(w)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} spids: [2187] ) ] ) ] spids: [2183 2184 2193 -1] ) (case_arm pat_list: [{(D)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DESTDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name OPTARG)} spids: [2200] ) ] ) ] spids: [2196 2197 2206 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(display_usage)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2216) arg_word: {(1)} ) ] spids: [2209 2210 2221 -1] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$AUTO_RUN'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2240) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2272) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** You have included the -a option along with one or more options'))} ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' that indicate that you wish mergemaster to actually make updates' span_id: 2293 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' (-F, -U, or -i), however these options are not compatible.' span_id: 2300 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' Please read mergemaster(8) for more information.' span_id: 2307 ) ) } ) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2317) arg_word: {(1)} ) ] spids: [2245 2274] ) ] ) ] spids: [2229 2242] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MTREEDB) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:MTREEDB span_id:2335) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(${ Id.VSub_Name DESTDIR) (Id.Lit_Slash /) (var) (Id.Lit_Slash /) (db)} ) ) } spids: [2333] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MTREEFILE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name MTREEDB) (/mergemaster.mtree))} spids: [2346] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} {(-a)} {(-z)} {(DQ (${ Id.VSub_Name PRESERVE_FILES_DIR))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2381) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PRESERVE_FILES_DIR) op: assign_op.Equal rhs: {(/var/tmp/mergemaster/preserved-files-) (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:2388) command_list: (command.CommandList children: [ (C {(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) } ) ] ) ) } spids: [2386] ) ] ) (C {(mkdir)} {(-p)} {(${ Id.VSub_Name PRESERVE_FILES_DIR)}) ] spids: [2358 2383] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[2433 2435 2437 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-s)} {(DQ (${ Id.VSub_Name MTREEFILE))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2461) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ ('*** Unable to find mtree database (') (${ Id.VSub_Name MTREEFILE) (').')) } ) (C {(echo)} {(DQ (' Skipping auto-upgrade on this run.'))}) (C {(echo)} {(DQ (' It will be created for the next run when this one is complete.'))} ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(C {(press_to_continue)})] spids: [2514 2516 2522 -1] ) ] ) (C {(unset)} {(AUTO_UPGRADE)}) ] spids: [2446 2463] ) ] ) ] spids: [2442 2443 2536 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/fstab))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2555) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(grep)} {(-q)} {(nodev)} {(${ Id.VSub_Name DESTDIR) (/etc/fstab)}) terminator: (Token id:Id.Op_Semi val:';' span_id:2572) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ ("*** You have the deprecated 'nodev' option in ") (${ Id.VSub_Name DESTDIR) (/etc/fstab.) ) } ) (C {(echo)} {(DQ (' This can prevent the filesystem from being mounted on reboot.'))} ) (C {(echo)} {(DQ (' Please update your fstab before continuing.'))}) (C {(echo)} {(DQ (' See fstab(5) for more information.'))}) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2621) arg_word: {(1)} ) ] spids: [2560 2574] ) ] ) ] spids: [2541 2557] ) ] ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name DONT_CHECK_PAGER))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShFunction name: check_pager body: (command.BraceGroup children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:2665) cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {(type)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:PAGER span_id:2673) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {(' *')} ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2679) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:2681) ) ] body: (command.DoGroup children: [ (C {(echo)} { (DQ (" *** Your PAGER environment variable specifies '") (${ Id.VSub_Name PAGER) ("', but") ) } ) (C {(echo)} {(DQ (' due to the limited PATH that I use for security reasons,'))} ) (C {(echo)} {(DQ (' I cannot execute it. So, what would you like to do?'))} ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (" Use 'e' to exit mergemaster and fix your PAGER variable"))} ) (C {(echo)} {(DQ (" Use 'l' to set PAGER to 'less' for this run"))}) (C {(echo)} {(DQ (" Use 'm' to use plain old 'more' as your PAGER for this run"))} ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' or you may type an absolute path to PAGER for this run'))} ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (" Default is to use plain old 'more' "))}) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} {(DQ ("What should I do? [Use 'more'] "))}) (C {(read)} {(FIXPAGER)}) (command.Case to_match: {(DQ (${ Id.VSub_Name FIXPAGER))} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (eE) (Id.Lit_RBracket ']')}] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:2802) arg_word: {(0)} ) ] spids: [2796 2799 2807 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (lL) (Id.Lit_RBracket ']')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PAGER) op: assign_op.Equal rhs: {(less)} spids: [2816] ) ] ) ] spids: [2810 2813 2820 -1] ) (case_arm pat_list: [{(Id.Lit_LBracket '[') (mM) (Id.Lit_RBracket ']')} {(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PAGER) op: assign_op.Equal rhs: {(more)} spids: [2832] ) ] ) ] spids: [2823 2829 2836 -1] ) (case_arm pat_list: [{(/) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PAGER) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$FIXPAGER'))} spids: [2844] ) ] ) ] spids: [2839 2841 2850 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name FIXPAGER))}) ] spids: [2853 2854 -1 2873] ) ] ) (C {(echo)} {(SQ )}) ] ) ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PAGER))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2900) ) ] action: [(C {(check_pager)})] spids: [2887 2902] ) ] ) ] spids: [2653 2655 2911 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PAGER) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:PAGER span_id:2927) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(more)}) ) } spids: [2925] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2962) ) ] action: [ (C {(echo)} { (DQ (' *** You have ') (${ Id.VSub_Name PAGER) (' defined as your pager so we will use that') ) } ) (C {(echo)} {(SQ )}) (C {(sleep)} {(3)}) ] spids: [2933 2964] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIFF_FLAG) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:DIFF_FLAG span_id:2999) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(-u)}) ) } spids: [2997] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOURCEDIR) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:SOURCEDIR span_id:3013) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(Id.Lit_Slash /) (usr) (Id.Lit_Slash /) (src)} ) ) } spids: [3011] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(${ Id.VSub_Name SOURCEDIR) (/Makefile.inc1)} {(-a)} {(-f)} {(${ Id.VSub_Name SOURCEDIR) (/../Makefile.inc1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3046) ) ] action: [ (C {(echo)} {(DQ (' *** The source directory you specified (') (${ Id.VSub_Name SOURCEDIR) (')'))} ) (C {(echo)} {(DQ (' will be reset to ') (${ Id.VSub_Name SOURCEDIR) (/..))}) (C {(echo)} {(SQ )}) (C {(sleep)} {(3)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOURCEDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name SOURCEDIR) (/..)} spids: [3084] ) ] ) ] spids: [3021 3048] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOURCEDIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3093) command_list: (command.CommandList children: [(C {(realpath)} {(DQ ($ Id.VSub_DollarName '$SOURCEDIR'))})] ) ) } spids: [3092] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MM_MAKE) op: assign_op.Equal rhs: { (DQ ('make ') (${ Id.VSub_Name ARCHSTRING) (' -m ') (${ Id.VSub_Name SOURCEDIR) ('/share/mk -DNO_FILEMON') ) } spids: [3105] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {(-a)} {(-s)} {(DQ (${ Id.VSub_Name MTREEFILE))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3151) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(mtree)} {(-F)} {(freebsd9)} {(-c)} {(-p)} {(/var/empty/)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3174) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:3178) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:3180) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MTREE_FLAVOR) op: assign_op.Equal rhs: {(DQ ('-F freebsd9'))} spids: [3185] ) ] ) ] spids: [3160 3182] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MTREE_FLAVOR) op: assign_op.Equal rhs: (word.Empty) spids: [3194] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHANGED) op: assign_op.Equal rhs: {(Id.Lit_Other ':')} spids: [3200] ) ] ) (command.ForEach iter_name: file iter_words: [ { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3210) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {(mtree)} {(-eqL)} {(${ Id.VSub_Name MTREE_FLAVOR)} {(-f)} {(${ Id.VSub_Name MTREEFILE)} {(-p)} {(${ Id.VSub_Name DESTDIR) (/)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:3239) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(awk)} { (SQ (Token id: Id.Lit_Chars val: '($2 == "changed") {print $1}' span_id: 3247 ) ) } ) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name DESTDIR) (/) ($ Id.VSub_DollarName '$file'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3270) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHANGED) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name CHANGED) (${ Id.VSub_Name DESTDIR) (/) (${ Id.VSub_Name file) (':') ) } spids: [3275] ) ] ) ] spids: [3255 3272] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CHANGED'))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:':' span_id:3306))} {(Id.Lit_RBracket ']')} ) (C {(unset)} {(CHANGED)}) ] ) ] spids: [3128 3153] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-t)} {(0)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:3335) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:w) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:3341) command_list: (command.CommandList children:[(C {(tput)} {(columns)})]) ) } spids: [3340] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name w))} arms: [ (case_arm pat_list:[{(0)} {(SQ )}] spids:[3361 3365 3367 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name SCREEN_WIDTH))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name w))} spids: [3392] ) ] ) ] spids: [3388 3390 3399 -1] ) (case_arm pat_list: [{(DQ (${ Id.VSub_Name w))}] spids: [3402 3407 3409 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(-n)} { (DQ ('*** You entered ') (${ Id.VSub_Name SCREEN_WIDTH) (' as your screen width, but stty ') ) } ) (C {(echo)} {(DQ ('thinks it is ') (${ Id.VSub_Name w) (.))}) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} {(DQ ('What would you like to use? [') (${ Id.VSub_Name w) ('] '))} ) (C {(read)} {(SCREEN_WIDTH)}) (command.Case to_match: {(DQ (${ Id.VSub_Name SCREEN_WIDTH))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name w))} spids: [3482] ) ] ) ] spids: [3478 3480 3489 -1] ) ] ) ] spids: [3415 3416 3495 -1] ) ] ) ] spids: [3373 3374 -1 3501] ) ] ) ] spids: [3326 3337] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID_TAG) op: assign_op.Equal rhs: {(FreeBSD)} spids: [3512] ) ] ) (command.ShFunction name: delete_temproot body: (command.BraceGroup children: [ (command.Simple words: [{(rm)} {(-rf)} {(DQ (${ Id.VSub_Name TEMPROOT))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:3534) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(chflags)} {(-R)} {(0)} {(DQ (${ Id.VSub_Name TEMPROOT))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:3550) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(rm)} {(-rf)} {(DQ (${ Id.VSub_Name TEMPROOT))}) (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(DQ ('*** Unable to delete ') (${ Id.VSub_Name TEMPROOT))}) terminator: (Token id:Id.Op_Semi val:';' span_id:3576) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:3578) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3581) ) ] ) ] ) ] ) ) (command.Case to_match: {(DQ (${ Id.VSub_Name RERUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_TEMP_ROOT) op: assign_op.Equal rhs: {(yes)} spids: [3615] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:3619) cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name TEST_TEMP_ROOT))} {(Id.Lit_Equals '=')} {(DQ (yes))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3636) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-d)} {(DQ (${ Id.VSub_Name TEMPROOT))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:3654) ) ] action: [ (C {(echo)} { (DQ ( '*** The directory specified for the temporary root environment,' ) ) } ) (C {(echo)} { (DQ (' ') (${ Id.VSub_Name TEMPROOT) (', exists. This can be a security risk if untrusted') ) } ) (C {(echo)} {(DQ (' users have access to the system.'))}) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} { (DQ (" Use 'd' to delete the old ") (${ Id.VSub_Name TEMPROOT) (' and continue') ) } ) (C {(echo)} {(DQ (" Use 't' to select a new temporary root directory"))} ) (C {(echo)} {(DQ (" Use 'e' to exit mergemaster"))}) (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' Default is to use ') (${ Id.VSub_Name TEMPROOT) (' as is') ) } ) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} { (DQ ('How should I deal with this? [Use the existing ') (${ Id.VSub_Name TEMPROOT) ('] ') ) } ) (C {(read)} {(DELORNOT)}) (command.Case to_match: {(DQ (${ Id.VSub_Name DELORNOT))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')} ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** Deleting the old ') (${ Id.VSub_Name TEMPROOT) ) } ) (C {(echo)} {(SQ )}) (C {(delete_temproot)}) (C {(unset)} {(TEST_TEMP_ROOT)}) ] spids: [3784 3787 3820 -1] ) (case_arm pat_list: [ {(Id.Lit_LBracket '[') (tT) (Id.Lit_RBracket ']')} ] action: [ (C {(echo)} { (DQ ( ' *** Enter new directory name for temporary root environment' ) ) } ) (C {(read)} {(TEMPROOT)}) ] spids: [3823 3826 3841 -1] ) (case_arm pat_list: [ {(Id.Lit_LBracket '[') (eE) (Id.Lit_RBracket ']')} ] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Exit val: exit span_id: 3850 ) arg_word: {(0)} ) ] spids: [3844 3847 3855 -1] ) (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** Leaving ') (${ Id.VSub_Name TEMPROOT) (' intact') ) } ) (C {(echo)} {(SQ )}) (C {(unset)} {(TEST_TEMP_ROOT)}) ] spids: [3858 3860 3891 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name DELORNOT))} ) (C {(echo)} {(SQ )}) ] spids: [3894 3895 3920 -1] ) ] ) ] spids: [3701 3703 3926 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT) op: assign_op.Equal rhs: {(/var/tmp/temproot.) (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 3943 ) command_list: (command.CommandList children: [ (C {(date)} {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) (Id.Lit_Other '%') (d.) (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M.) (Id.Lit_Other '%') (S) } ) ] ) ) } spids: [3941] ) ] ) ] spids: [3929 3930 3962 -1] ) ] ) ] spids: [3641 3656] ) ] else_action: [(C {(unset)} {(TEST_TEMP_ROOT)})] ) ] ) ) (C {(echo)} {(DQ ('*** Creating the temporary root environment in ') (${ Id.VSub_Name TEMPROOT))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name TEMPROOT))}) terminator: (Token id:Id.Op_Semi val:';' span_id:4005) ) ] action: [(C {(echo)} {(DQ (' *** ') (${ Id.VSub_Name TEMPROOT) (' ready for use'))})] spids: [3994 4007] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} {(DQ (${ Id.VSub_Name TEMPROOT))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4040) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' *** FATAL ERROR: Cannot create ') (${ Id.VSub_Name TEMPROOT))}) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:4067) arg_word: {(1)} ) ] spids: [4025 4042] ) ] ) (C {(echo)} { (DQ (' *** Creating and populating directory structure in ') (${ Id.VSub_Name TEMPROOT) ) } ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name VERBOSE))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[4104 4106 4108 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(press_to_continue)})] spids: [4111 4112 4118 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name PRE_WORLD))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(${ Id.VSub_Name SOURCEDIR)}) (command.Case to_match: {(DQ (${ Id.VSub_Name DESTDIR))} arms: [ (case_arm pat_list: [{(SQ )}] spids: [4163 4165 4167 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Simple words: [ {(${ Id.VSub_Name MM_MAKE)} {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name DESTDIR)} {(distrib-dirs)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4185) fd: -1 arg_word: {(/dev/null)} ) ] ) ] spids: [4170 4171 4189 -1] ) ] ) ] ) (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(${ Id.VSub_Name MM_MAKE)} {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name TEMPROOT)} {(distrib-dirs)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4206) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ {(${ Id.VSub_Name MM_MAKE)} {(_obj)} {(Id.Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4221) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ {(${ Id.VSub_Name MM_MAKE)} {(everything)} {(Id.Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4236) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ {(${ Id.VSub_Name MM_MAKE)} {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name TEMPROOT)} {(distribution)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4253) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:4255) ) ] ) (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(SQ )}) terminator: (Token id:Id.Op_Semi val:';' span_id:4267) ) (command.Sentence child: (C {(echo)} { (DQ (" *** FATAL ERROR: Cannot 'cd' to ") (${ Id.VSub_Name SOURCEDIR) (' and install files to') ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:4279) ) (command.Sentence child: (C {(echo)} {(DQ (' the temproot environment'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:4287) ) (command.Sentence child: (C {(echo)} {(SQ )}) terminator: (Token id:Id.Op_Semi val:';' span_id:4294) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:4297) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4300) ) ] ) ] ) ] spids: [4136 4138 4304 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(mkdir)} {(-p)} {(${ Id.VSub_Name TEMPROOT) (/etc)}) (C {(cp)} {(-p)} {(${ Id.VSub_Name SOURCEDIR) (/etc/master.passwd)} {(${ Id.VSub_Name TEMPROOT) (/etc)} ) (C {(install)} {(-p)} {(-o)} {(root)} {(-g)} {(wheel)} {(-m)} {(0644)} {(${ Id.VSub_Name SOURCEDIR) (/etc/group)} {(${ Id.VSub_Name TEMPROOT) (/etc)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:4371) ) ] ) (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(SQ )}) terminator: (Token id:Id.Op_Semi val:';' span_id:4383) ) (command.Sentence child: (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' *** FATAL ERROR: Cannot copy files to the temproot environment' span_id: 4389 ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:4391) ) (command.Sentence child: (C {(echo)} {(SQ )}) terminator: (Token id:Id.Op_Semi val:';' span_id:4398) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:4401) arg_word: {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4404) ) ] ) ] ) ] spids: [4307 4308 4408 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name VERBOSE))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[4438 4440 4442 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' *** The following files exist only in the installed version of' span_id: 4458 ) ) } ) (C {(echo)} { (DQ (' ') (${ Id.VSub_Name DESTDIR) ('/etc. In the vast majority of cases these files') ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' are necessary parts of the system and should not be deleted.' span_id: 4476 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' However because these files are not updated by this process you' span_id: 4483 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' might want to verify their status before rebooting your system.' span_id: 4490 ) ) } ) (C {(echo)} {(SQ )}) (C {(press_to_continue)}) (command.Pipeline children: [ (C {(diff)} {(-qr)} {(${ Id.VSub_Name DESTDIR) (/etc)} {(${ Id.VSub_Name TEMPROOT) (/etc)} ) (C {(grep)} {(DQ ('^Only in ') (${ Id.VSub_Name DESTDIR) (/etc))}) (C {(${ Id.VSub_Name PAGER)}) ] negated: F ) (C {(echo)} {(SQ )}) (C {(press_to_continue)}) ] spids: [4445 4446 4545 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name IGNORE_MOTD))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[4563 4565 4567 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** You have the IGNORE_MOTD option set in your mergemaster rc file.'))} ) (C {(echo)} {(DQ (' This option is deprecated in favor of the IGNORE_FILES option.'))} ) (C {(echo)} {(DQ (' Please update your rc file accordingly.'))}) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:4607) arg_word: {(1)} ) ] spids: [4570 4571 4612 -1] ) ] ) (command.ForEach iter_name: file iter_words: [{(${ Id.VSub_Name IGNORE_FILES)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-e)} {(${ Id.VSub_Name TEMPROOT) (/) (${ Id.VSub_Name file)}) (C {(unlink)} {(${ Id.VSub_Name TEMPROOT) (/) (${ Id.VSub_Name file)}) ] ) ] ) ) (C {(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)} ) (command.Simple words: [{(find)} {(${ Id.VSub_Name TEMPROOT) (/usr/obj)} {(-type)} {(f)} {(-delete)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4724) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(find)} {(${ Id.VSub_Name TEMPROOT) (/usr)} {(-type)} {(l)} {(-delete)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4750) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(find)} {(${ Id.VSub_Name TEMPROOT)} {(-type)} {(f)} {(-size)} {(0)} {(-delete)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4770) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [ {(find)} {(-d)} {(${ Id.VSub_Name TEMPROOT)} {(-type)} {(d)} {(-empty)} {(-mindepth)} {(1)} {(-delete)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4794) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name PRE_WORLD))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MTREENEW) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4819) command_list: (command.CommandList children: [(C {(mktemp)} {(-t)} {(mergemaster.mtree)})] ) ) } spids: [4818] ) ] ) (command.Simple words: [ {(mtree)} {(-nci)} {(-p)} {(${ Id.VSub_Name TEMPROOT)} {(-k)} {(size) (Id.Lit_Comma ',') (md5digest)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4846) fd: -1 arg_word: {(${ Id.VSub_Name MTREENEW)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4852) fd: 2 arg_word: {(/dev/null)} ) ] ) ] spids: [4814 4816 4856 -1] ) (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[4859 4860 4870 -1]) ] ) ] spids: [3598 3600 4876 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name NEW_UMASK))} {(-a)} {(-z)} {(DQ (${ Id.VSub_Name AUTO_RUN))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:4920) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:USER_UMASK) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:4926) command_list: (command.CommandList children:[(C {(umask)})]) ) } spids: [4925] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name USER_UMASK))} arms: [ (case_arm pat_list:[{(0022)} {(022)}] spids:[4944 4947 4949 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** Your umask is currently set to ') (${ Id.VSub_Name USER_UMASK) ('. By default, this script') ) } ) (C {(echo)} {(DQ (' installs all files with the same user, group and modes that'))} ) (C {(echo)} { (DQ (' they are created with by ') (${ Id.VSub_Name SOURCEDIR) ('/etc/Makefile, compared to') ) } ) (C {(echo)} {(DQ (' a umask of 022. This umask allows world read permission when'))} ) (C {(echo)} {(DQ (" the file's default permissions have it."))}) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' No world permissions can sometimes cause problems. A umask of'))} ) (C {(echo)} {(DQ (' 022 will restore the default behavior, but is not mandatory.'))} ) (C {(echo)} {(DQ (' /etc/master.passwd is a special case. Its file permissions'))} ) (C {(echo)} {(DQ (' will be 600 (rw-------) if installed.'))}) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} {(DQ ('What umask should I use? [') (${ Id.VSub_Name USER_UMASK) ('] '))} ) (C {(read)} {(NEW_UMASK)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEW_UMASK) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:NEW_UMASK span_id:5067) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {($ Id.VSub_DollarName '$USER_UMASK')} ) ) ) } spids: [5064] ) ] ) ] spids: [4952 4953 5074 -1] ) ] ) (C {(echo)} {(SQ )}) ] spids: [4897 4922] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIRMED_UMASK) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:NEW_UMASK span_id:5090) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0022)}) ) } spids: [5088] ) ] ) (command.ForEach iter_name: file iter_words: [ {(atm)} {(devfs)} {(diskless1)} {(diskless2)} {(network)} {(network6)} {(pccard)} {(serial)} {(syscons)} {(sysctl)} {(alpha)} {(amd64)} {(i386)} {(sparc64)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.) (${ Id.VSub_Name file))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5162) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OLD_RC_PRESENT) op: assign_op.Equal rhs: {(1)} spids: [5167] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:5171) ) ] spids: [5145 5164] ) ] ) ] ) ) (command.Case to_match: {(DQ (${ Id.VSub_Name OLD_RC_PRESENT))} arms: [ (case_arm pat_list: [{(1)}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** There are elements of the old rc system in ') (${ Id.VSub_Name DESTDIR) (/etc/.) ) } ) (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' While these scripts will not hurt anything, they are not' span_id: 5219 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' functional on an up to date system, and can be removed.' span_id: 5226 ) ) } ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(-n)} { (SQ (Token id: Id.Lit_Chars val: 'Move these files to /var/tmp/mergemaster/old_rc? [yes] ' span_id: 5258 ) ) } ) (C {(read)} {(MOVE_OLD_RC)}) (command.Case to_match: {(DQ (${ Id.VSub_Name MOVE_OLD_RC))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (nN) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] spids: [5279 5283 5285 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(mkdir)} {(-p)} {(/var/tmp/mergemaster/old_rc)}) (command.ForEach iter_name: file iter_words: [ {(atm)} {(devfs)} {(diskless1)} {(diskless2)} {(network)} {(network6)} {(pccard)} {(serial)} {(syscons)} {(sysctl)} {(alpha)} {(amd64)} {(i386)} {(sparc64)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.) (${ Id.VSub_Name file) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5356) ) ] action: [ (C {(mv)} {(${ Id.VSub_Name DESTDIR) (/etc/rc.) (${ Id.VSub_Name file) } {(/var/tmp/mergemaster/old_rc/)} ) ] spids: [5339 5358] ) ] ) ] ) ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' The files have been moved' span_id: 5383 ) ) } ) (C {(press_to_continue)}) ] spids: [5288 5289 5390 -1] ) ] ) ] spids: [5248 5250 5396 -1] ) (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[5399 5400 5402 -1]) ] ) ] spids: [5189 5190 -1 5407] ) ] ) (command.ShFunction name: install_error body: (command.BraceGroup children: [ (C {(echo)} { (DQ ('*** FATAL ERROR: Unable to install ') (${ Id.VSub_Number 1) (' to ') (${ Id.VSub_Number 2) ) } ) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:5447) arg_word: {(1)} ) ] ) ) (command.ShFunction name: do_install_and_rm body: (command.BraceGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name PRESERVE_FILES))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ee) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']') } ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ (${ Id.VSub_Number 3) (/) (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:5497) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5505) ) ] action: [ (C {(mkdir)} {(-p)} {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/) (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:5519) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) } ) (C {(cp)} {(${ Id.VSub_Number 3) (/) (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:5533) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) } {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/) (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:5544) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) } ) ] spids: [5485 5507] ) ] ) ] spids: [5473 5482 5554 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} { (DQ (${ Id.VSub_Number 3) (/) (braced_var_sub token: (Token id:Id.VSub_Number val:2 span_id:5575) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5583) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(install)} {(-m)} {(${ Id.VSub_Number 1)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5605) ) ] action: [(C {(unlink)} {(${ Id.VSub_Number 2)})] spids: [5588 5607] ) ] else_action: [ (C {(install_error)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)}) ] ) ] spids: [5561 5585] ) ] else_action: [(C {(install_error)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)})] ) ] ) ) (command.ShFunction name: find_mode body: (command.BraceGroup children: [ (C {(local)} {(OCTAL)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OCTAL) op: assign_op.Equal rhs: { (word_part.ArithSub 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: (arith_expr.ArithWord w: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 5673 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (DQ ('obase=10; ibase=8; ') (${ Id.VSub_Name CONFIRMED_UMASK) ) } ) (C {(bc)}) ] negated: F ) ] ) ) } ) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 4095)}) ) right: (arith_expr.ArithWord w: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 5695 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (DQ ('obase=10; ibase=8; ') (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 5700 ) command_list: (command.CommandList children: [ (C {(stat)} {(-f)} {(DQ ('%OMp%OLp'))} {(${ Id.VSub_Number 1)} ) ] ) ) ) } ) (C {(bc)}) ] negated: F ) ] ) ) } ) ) ) } spids: [5669] ) ] ) (C {(printf)} {(DQ ('%04o') (Id.Lit_Other '\\') (n))} {(${ Id.VSub_Name OCTAL)}) ] ) ) (command.ShFunction name: mm_install body: (command.BraceGroup children: [ (C {(local)} {(INSTALL_DIR)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALL_DIR) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:5754) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) } spids: [5752] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALL_DIR) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:INSTALL_DIR span_id:5762) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Percent arg_word: {(Id.Lit_Slash /) ('*')} ) ) } spids: [5760] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name INSTALL_DIR))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALL_DIR) op: assign_op.Equal rhs: {(/)} spids: [5786] ) ] ) ] spids: [5781 5783 5790 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5828) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIR_MODE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:5834) command_list: (command.CommandList children: [ (C {(find_mode)} { (DQ (${ Id.VSub_Name TEMPROOT) (/) (${ Id.VSub_Name INSTALL_DIR) ) } ) ] ) ) } spids: [5833] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(install)} {(-d)} {(-o)} {(root)} {(-g)} {(wheel)} {(-m)} {(DQ (${ Id.VSub_Name DIR_MODE))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ) (C {(install_error)} {($ Id.VSub_Number '$1')} {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR)} ) ] ) ] spids: [5797 5830] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FILE_MODE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:5900) command_list: (command.CommandList children: [(C {(find_mode)} {(DQ (${ Id.VSub_Number 1))})] ) ) } spids: [5899] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-x)} {(DQ (${ Id.VSub_Number 1))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5929) ) ] action: [ (command.Case to_match: { (DQ (braced_var_sub token: (Token id:Id.VSub_Number val:1 span_id:5938) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } arms: [ (case_arm pat_list: [{(/etc/mail/aliases)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEED_NEWALIASES) op: assign_op.Equal rhs: {(yes)} spids: [5951] ) ] ) ] spids: [5947 5948 5955 -1] ) (case_arm pat_list: [{(/etc/login.conf)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEED_CAP_MKDB) op: assign_op.Equal rhs: {(yes)} spids: [5962] ) ] ) ] spids: [5958 5959 5966 -1] ) (case_arm pat_list: [{(/etc/services)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEED_SERVICES_MKDB) op: assign_op.Equal rhs: {(yes)} spids: [5973] ) ] ) ] spids: [5969 5970 5977 -1] ) (case_arm pat_list: [{(/etc/master.passwd)}] action: [ (C {(do_install_and_rm)} {(600)} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NEED_PWD_MKDB) op: assign_op.Equal rhs: {(yes)} spids: [6004] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DONT_INSTALL) op: assign_op.Equal rhs: {(yes)} spids: [6008] ) ] ) ] spids: [5980 5981 6012 -1] ) (case_arm pat_list: [{(/.cshrc)} {(/.profile)}] action: [ (C {(local)} {(st_nlink)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:st_nlink) op: assign_op.Equal rhs: {(0)} spids: [6041] ) ] ) (C {(eval)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6050) command_list: (command.CommandList children: [ (command.Simple words: [ {(stat)} {(-s)} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6059 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:6064) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } ) (C {(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))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name AUTO_INSTALL))} {(-a)} {($ Id.VSub_DollarName '$st_nlink')} {(-gt)} {(1)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6116) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HANDLE_LINK) op: assign_op.Equal rhs: {(l)} spids: [6121] ) ] ) ] spids: [6095 6118] ) ] else_action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name LINK_EXPLAINED))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} { (DQ (' *** Historically BSD derived systems have had a') ) } ) (C {(echo)} {(DQ (' hard link from /.cshrc and /.profile to'))} ) (C {(echo)} {(DQ (' their namesakes in /root. Please indicate'))} ) (C {(echo)} {(DQ (' your preference below for bringing your'))} ) (C {(echo)} {(DQ (' installed files up to date.'))}) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LINK_EXPLAINED) op: assign_op.Equal rhs: {(yes)} spids: [6185] ) ] ) ] spids: [6139 6141 6189 -1] ) ] ) (C {(echo)} { (DQ (" Use 'd' to delete the temporary ") (${ Id.VSub_Name COMPFILE) ) } ) (C {(echo)} { (DQ (" Use 'l' to delete the existing ") (${ Id.VSub_Name DESTDIR) (/root/) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:6215) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) (' and create the link') ) } ) (C {(echo)} {(SQ )}) (C {(echo)} { (DQ ( ' Default is to leave the temporary file to deal with by hand' ) ) } ) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} { (DQ (' How should I handle ') (${ Id.VSub_Name COMPFILE) ('? [Leave it to install later] ') ) } ) (C {(read)} {(HANDLE_LINK)}) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name HANDLE_LINK))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [ (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))}) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' *** Deleting ') (${ Id.VSub_Name COMPFILE))}) ] spids: [6276 6280 6308 -1] ) (case_arm pat_list: [ {(Id.Lit_LBracket '[') (lL) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [ (C {(echo)} {(SQ )}) (C {(unlink)} {(${ Id.VSub_Name DESTDIR) (/root/) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:6331) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(ln)} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6346 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } {(${ Id.VSub_Name DESTDIR) (/root/) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6356 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:6361) ) ] action: [ (C {(echo)} { (DQ (' *** Link from ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6374 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) (' to ') (${ Id.VSub_Name DESTDIR) (/root/) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6384 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) (' installed successfully') ) } ) ] spids: [6338 6363] ) ] else_action: [ (C {(echo)} { (DQ (' *** Error linking ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6404 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) (' to ') (${ Id.VSub_Name DESTDIR) (/root/) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 6414 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPound arg_word: {('*') (Id.Lit_Slash /)} ) ) ) } ) (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) ] ) ] spids: [6311 6315 6436 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) ] spids: [6439 6440 6454 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6460) ) ] spids: [6015 6020 6463 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name DONT_INSTALL))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(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))} ) ] spids: [6481 6483 6510 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(unset)} {(DONT_INSTALL)})] spids: [6513 6514 6522 -1] ) ] ) ] spids: [5914 5931] ) ] else_action: [ (C {(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))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6561) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} {(DQ (${ Id.VSub_Name TEMPROOT))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6583) ) ] action: [ (C {(echo)} {(DQ ('*** FATAL ERROR: The temproot directory (') (${ Id.VSub_Name TEMPROOT) (')'))} ) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:' has disappeared!' span_id:6602))} ) (C {(echo)} {(SQ )}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:6612) arg_word: {(1)} ) ] spids: [6568 6585] ) ] ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** Beginning comparison'))}) (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name PRE_WORLD))} {(-a)} {(-z)} {(DQ (${ Id.VSub_Name RERUN))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6668) ) ] action: [ (C {(echo)} {(DQ (' *** Checking ') (${ Id.VSub_Name DESTDIR) ('/etc/rc.d for stale files'))} ) (C {(echo)} {(SQ )}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.d))}) (command.ForEach iter_name: file iter_words: [{(Id.Lit_Star '*')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} { (DQ (${ Id.VSub_Name TEMPROOT) (/etc/rc.d/) (${ Id.VSub_Name file) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6733) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STALE_RC_FILES) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name STALE_RC_FILES) (' ') (${ Id.VSub_Name file) ) } spids: [6738] ) ] ) ] spids: [6714 6735] ) ] ) ] ) ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name STALE_RC_FILES))} arms: [ (case_arm pat_list: [{(SQ )} {(SQ (Token id:Id.Lit_Chars val:' *' span_id:6771))}] action: [ (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:' *** No stale files found' span_id:6779))} ) ] spids: [6767 6773 6783 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} { (DQ (' *** The following files exist in ') (${ Id.VSub_Name DESTDIR) ('/etc/rc.d but not in') ) } ) (C {(echo)} {(DQ (' ') (${ Id.VSub_Name TEMPROOT) ('/etc/rc.d/:'))}) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (${ Id.VSub_Name STALE_RC_FILES))}) (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' The presence of stale files in this directory can cause the' span_id: 6836 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' dreaded unpredictable results, and therefore it is highly' span_id: 6843 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' recommended that you delete them.' span_id: 6850 ) ) } ) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} { (SQ (Token id: Id.Lit_Chars val: ' *** Delete them now? [n] ' span_id: 6881 ) ) } ) (C {(read)} {(DELETE_STALE_RC_FILES)}) (command.Case to_match: {(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (yY) (Id.Lit_RBracket ']')}] action: [ (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' *** Deleting ... ' span_id: 6910 ) ) } ) (C {(rm)} {(${ Id.VSub_Name STALE_RC_FILES)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' done.' span_id: 6924 ) ) } ) ] spids: [6901 6904 6928 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' *** Files will not be deleted' span_id: 6938 ) ) } ) ] spids: [6931 6932 6942 -1] ) ] ) (C {(sleep)} {(2)}) ] spids: [6865 6867 6953 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:6973) ) ] action: [ (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' *** Deleting ... ' span_id: 6981 ) ) } ) (C {(rm)} {(${ Id.VSub_Name STALE_RC_FILES)}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' done.' span_id: 6995 ) ) } ) ] spids: [6960 6975] ) ] ) ] spids: [6956 6957 -1 7002] ) ] ) ] spids: [6786 6787 7005 -1] ) ] ) (C {(echo)} {(SQ )}) ] spids: [6645 6670] ) ] ) (C {(cd)} {(DQ (${ Id.VSub_Name TEMPROOT))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7041) ) ] action: [(C {(.)} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))})] spids: [7028 7043] ) ] ) (command.ForEach iter_name: COMPFILE iter_words: [ { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7075) command_list: (command.CommandList children: [(command.Pipeline children:[(C {(find)} {(.)}) (C {(sort)})] negated:F)] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-e)} { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7103) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7110) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALLED_TYPE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7116) command_list: (command.CommandList children: [ (C {(stat)} {(-f)} {(SQ (Token id:Id.Lit_Chars val:'%HT' span_id:7124))} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7131) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } ) ] ) ) } spids: [7115] ) ] ) ] spids: [7092 7112] ) ] else_action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:7141) ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT_TYPE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7148) command_list: (command.CommandList children: [ (C {(stat)} {(-f)} {(SQ (Token id:Id.Lit_Chars val:'%HT' span_id:7156))} {($ Id.VSub_DollarName '$COMPFILE')} ) ] ) ) } spids: [7147] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))} {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$INSTALLED_TYPE'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7181) ) ] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$COMPFILE'))} {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:. span_id:7195))} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:7202) ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEMPROOT_TYPE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7206) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$TEMPROOT_TYPE')}) (C {(tr)} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) (Id.Lit_Other ':') (Id.Lit_RBracket ']') } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')} ) ] negated: F ) ] ) ) } spids: [7205] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INSTALLED_TYPE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7232) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$INSTALLED_TYPE')}) (C {(tr)} {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) (Id.Lit_Other ':') (Id.Lit_RBracket ']') } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')} ) ] negated: F ) ] ) ) } spids: [7231] ) ] ) (C {(echo)} { (DQ ('*** The installed file ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7266) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) (' has the type ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7271) ) ($ Id.VSub_DollarName '$INSTALLED_TYPE') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7273) ) ) } ) (C {(echo)} { (DQ (' but the new version has the type ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7281) ) ($ Id.VSub_DollarName '$TEMPROOT_TYPE') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7283) ) ) } ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' How would you like to handle this?'))}) (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (" Use 'r' to remove ") (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7314) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))} arms: [ (case_arm pat_list: [{(SQ (Token id:Id.Lit_Chars val:'symbolic link' span_id:7331))}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGET) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7337) command_list: (command.CommandList children: [ (C {(readlink)} {($ Id.VSub_DollarName '$COMPFILE')}) ] ) ) } spids: [7336] ) ] ) (C {(echo)} { (DQ (' and create a link to ') ($ Id.VSub_DollarName '$TARGET') (' in its place') ) } ) ] spids: [7330 7333 7354 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} { (DQ (' You will be able to install it as a ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7364) ) ($ Id.VSub_DollarName '$TEMPROOT_TYPE') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7366) ) ) } ) ] spids: [7357 7358 7369 -1] ) ] ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (" Use 'i' to ignore this"))}) (C {(echo)} {(SQ )}) (C {(echo)} {(-n)} {(DQ (' How to proceed? [i] '))}) (C {(read)} {(ANSWER)}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$ANSWER'))} arms: [ (case_arm pat_list: [{(Id.Lit_LBracket '[') (rR) (Id.Lit_RBracket ']')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name PRESERVE_FILES))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ee) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']') } ] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(mv)} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 7451 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/)} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:7463) arg_word: {(1)} ) ] ) ] spids: [7433 7442 7467 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(rm)} {(-rf)} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7481) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } ) ] spids: [7470 7471 7486 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))} arms: [ (case_arm pat_list: [ {(SQ (Token id:Id.Lit_Chars val:'symbolic link' span_id:7502))} ] action: [ (C {(ln)} {(-sf)} {($ Id.VSub_DollarName '$TARGET')} {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7516) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } ) ] spids: [7501 7504 7521 -1] ) ] ) ] spids: [7417 7420 7526 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ ('*** See the man page about adding ') (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7543) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) (' to the list of IGNORE_FILES') ) } ) (C {(press_to_continue)}) ] spids: [7529 7530 7553 -1] ) ] ) (C {(echo)} {(SQ )}) ] spids: [7164 7183] ) ] ) ] ) ) (command.ForEach iter_name: COMPFILE iter_words: [ { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7576) command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(find)} {(.)} {(-type)} {(f)}) (C {(sort)})] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7622) suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)}) ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7629) ) ] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(C {(diff_loop)})] spids: [7645 7647 7653 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALL))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) ] spids: [7671 7673 7691 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(diff_loop)})] spids: [7694 7695 7701 -1] ) ] ) ] spids: [7656 7657 7707 -1] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:7716) ) ] spids: [7609 7631] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name STRICT))} arms: [ (case_arm pat_list: [ {(SQ )} {(Id.Lit_LBracket '[') (Nn) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Oo) (Id.Lit_RBracket ']') } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7769) command_list: (command.CommandList children: [ (command.Simple words: [ {(grep)} { (DQ ('[') (Id.Lit_Other '$') (']') (${ Id.VSub_Name ID_TAG) (':') ) } {(${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 7788 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:7793) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [7768] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:7799) command_list: (command.CommandList children: [ (command.Simple words: [ {(grep)} { (DQ ('[') (Id.Lit_Other '$') (']') (${ Id.VSub_Name ID_TAG) (':') ) } {(${ Id.VSub_Name COMPFILE)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:7818) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [7798] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ID2) op: assign_op.Equal rhs: {(none)} spids: [7824] ) ] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name ID2))} arms: [ (case_arm pat_list: [{(DQ (${ Id.VSub_Name ID1))}] action: [ (C {(echo)} { (DQ (' *** Temp ') (${ Id.VSub_Name COMPFILE) (' and installed have the same Id, deleting') ) } ) (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))}) ] spids: [7840 7845 7868 -1] ) ] ) ] spids: [7734 7745 7874 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name COMPFILE))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:7906) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [ {(diff)} {(-q)} {(${ Id.VSub_Name DIFF_OPTIONS)} { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id:Id.VSub_Name val:COMPFILE span_id:7939) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7951) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:7957) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:7959) ) ] action: [ (C {(echo)} { (DQ (' *** Temp ') (${ Id.VSub_Name COMPFILE) (' and installed are the same, deleting') ) } ) (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))}) ] spids: [7924 7961] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$FREEBSD_ID'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8026) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [ {(diff)} {(-q)} {(-I) (SQ (Token id: Id.Lit_Chars val: '[$]FreeBSD.*[$]' span_id: 8039 ) ) } { (DQ (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 8047 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ) } {(DQ (${ Id.VSub_Name COMPFILE))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:8059) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 8065 ) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:8067) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))}) terminator: (Token id: Id.Op_Semi val: ';' span_id: 8081 ) ) ] action: [ (C {(echo)} { (DQ ('*** Updated revision control Id for ') (${ Id.VSub_Name DESTDIR) (braced_var_sub token: (Token id: Id.VSub_Name val: COMPFILE span_id: 8094 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(.)} ) ) ) } ) ] spids: [8072 8083] ) ] else_action: [ (C {(echo)} { (DQ ('*** Problem installing ') (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand later') ) } ) ] ) (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 8118 ) ) ] spids: [8031 8069] ) ] ) ] spids: [8015 8028] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [(C {(diff_loop)})] spids: [8138 8140 8150 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} { (DQ (' *** ') (${ Id.VSub_Name COMPFILE) (' will remain for your consideration') ) } ) ] spids: [8153 8154 8172 -1] ) ] ) ] ) ] spids: [7893 7908] ) ] ) ] ) ) (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** Comparison complete'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-s)} {(DQ (${ Id.VSub_Name MTREENEW))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8223) ) ] action: [ (C {(echo)} {(DQ ('*** Saving mtree database for future upgrades'))}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-e)} {(DQ (${ Id.VSub_Name MTREEFILE))}) (C {(unlink)} {(${ Id.VSub_Name MTREEFILE)}) ] ) (C {(mv)} {(${ Id.VSub_Name MTREENEW)} {(${ Id.VSub_Name MTREEFILE)}) ] spids: [8210 8225] ) ] ) (C {(echo)} {(SQ )}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_FOR_FILES) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:8274) command_list: (command.CommandList children: [ (command.Simple words: [ {(find)} {(${ Id.VSub_Name TEMPROOT)} {(-type)} {(f)} {(-size)} {(Id.Lit_Other '+') (0)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:8292) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [8273] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name TEST_FOR_FILES))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8309) ) ] action: [ (C {(echo)} {(DQ ('*** Files that remain for you to merge by hand:'))}) (command.Pipeline children: [ (C {(find)} {(DQ (${ Id.VSub_Name TEMPROOT))} {(-type)} {(f)} {(-size)} {(Id.Lit_Other '+') (0)} ) (C {(sort)}) ] negated: F ) (C {(echo)} {(SQ )}) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (C {(echo)} {(-n)} { (DQ ('Do you wish to delete what is left of ') (${ Id.VSub_Name TEMPROOT) ('? [no] ') ) } ) (C {(read)} {(DEL_TEMPROOT)}) (command.Case to_match: {(DQ (${ Id.VSub_Name DEL_TEMPROOT))} arms: [ (case_arm pat_list: [ {(Id.Lit_LBracket '[') (yY) (Id.Lit_RBracket ']') (Id.Lit_Star '*')} ] action: [(C {(delete_temproot)})] spids: [8395 8399 8405 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ (' *** ') (${ Id.VSub_Name TEMPROOT) (' will remain'))}) ] spids: [8408 8409 8423 -1] ) ] ) ] spids: [8361 8363 8429 -1] ) (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[8432 8433 8435 -1]) ] ) ] spids: [8296 8311] ) ] else_action: [ (C {(echo)} {(DQ ('*** ') (${ Id.VSub_Name TEMPROOT) (' is empty, deleting'))}) (C {(delete_temproot)}) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[8469 8471 8473 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '*** You chose the automatic install option for files that did not' span_id: 8507 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' exist on your system. The following were installed for you:' span_id: 8514 ) ) } ) (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}) ] ) ) (C {(${ Id.VSub_Name PAGER)}) ] negated: F ) ] spids: [8490 8492 8536 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '*** You chose the automatic install option for files that did not' span_id: 8552 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' exist on your system. The following were installed for you:' span_id: 8559 ) ) } ) (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}) ] spids: [8539 8540 8572 -1] ) ] ) ] spids: [8475 8476 8578 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[8593 8595 8597 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Case to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '*** You chose the automatic upgrade option for files that you did' span_id: 8631 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' not alter on your system. The following were upgraded for you:' span_id: 8638 ) ) } ) (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}) ] ) ) (C {(${ Id.VSub_Name PAGER)}) ] negated: F ) ] spids: [8614 8616 8660 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: '*** You chose the automatic upgrade option for files that you did' span_id: 8676 ) ) } ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' not alter on your system. The following were upgraded for you:' span_id: 8683 ) ) } ) (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}) ] spids: [8663 8664 8696 -1] ) ] ) ] spids: [8599 8600 8702 -1] ) ] ) (command.ShFunction name: run_it_now body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$AUTO_RUN'))} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:8727) ) ] ) (C {(local)} {(answer)}) (C {(echo)} {(SQ )}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:8743) cond: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:8747) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} {(Id.Lit_Equals '=')} {(always)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8765) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:answer) op: assign_op.Equal rhs: {(y)} spids: [8770] ) ] ) ] spids: [8752 8767] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} {(Id.Lit_Equals '=')} {(never)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8787) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:answer) op: assign_op.Equal rhs: {(n)} spids: [8792] ) ] ) ] spids: [8774 8789] ) ] else_action: [ (C {(echo)} {(-n)} { (SQ (Token id: Id.Lit_Chars val: ' Would you like to run it now? y or n [n] ' span_id: 8804 ) ) } ) (C {(read)} {(answer)}) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$answer'))} arms: [ (case_arm pat_list: [{(y)}] action: [ (C {(echo)} {(DQ (' Running ') (${ Id.VSub_Number 1))}) (C {(echo)} {(SQ )}) (C {(eval)} {(DQ (${ Id.VSub_Number 1))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:8855) ) ] spids: [8826 8827 8858 -1] ) (case_arm pat_list: [{(SQ )} {(n)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} {(Id.Lit_Equals '=')} {(never)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:8883) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ (' *** Cancelled'))}) (C {(echo)} {(SQ )}) ] spids: [8868 8885] ) ] ) (C {(echo)} {(DQ (' Make sure to run ') (${ Id.VSub_Number 1) (' yourself'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:8921) ) ] spids: [8861 8865 8924 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ (' *** Sorry, I do not understand your answer (') (${ Id.VSub_Name answer) (')') ) } ) (C {(echo)} {(SQ )}) ] spids: [8927 8928 -1 8954] ) ] ) ] ) ) ] ) ) (command.Case to_match: {(DQ (${ Id.VSub_Name NEED_NEWALIASES))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[8972 8974 8976 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9001) ) ] action: [ (C {(echo)} { (DQ ('*** You installed a new aliases file into ') (${ Id.VSub_Name DESTDIR) ('/etc/mail, but') ) } ) (C {(echo)} {(DQ (' the newaliases command is limited to the directories configured'))} ) (C {(echo)} {(DQ (' in sendmail.cf. Make sure to create your aliases database by'))} ) (C {(echo)} {(DQ (' hand when your sendmail configuration is done.'))}) ] spids: [8988 9003] ) ] else_action: [ (C {(echo)} {(DQ ('*** You installed a new aliases file, so make sure that you run'))}) (C {(echo)} {(DQ (" '/usr/bin/newaliases' to rebuild your aliases database"))}) (C {(run_it_now)} {(SQ (Token id:Id.Lit_Chars val:/usr/bin/newaliases span_id:9058))}) ] ) ] spids: [8978 8979 9065 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name NEED_CAP_MKDB))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[9080 9082 9084 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** You installed a login.conf file, so make sure that you run'))}) (C {(echo)} {(DQ (" '/usr/bin/cap_mkdb ") (${ Id.VSub_Name DESTDIR) ("/etc/login.conf'"))} ) (C {(echo)} {(DQ (' to rebuild your login.conf database'))}) (C {(run_it_now)} {(DQ ('/usr/bin/cap_mkdb ') (${ Id.VSub_Name DESTDIR) (/etc/login.conf))}) ] spids: [9086 9087 9132 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name NEED_SERVICES_MKDB))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[9147 9149 9151 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** You installed a services file, so make sure that you run'))}) (C {(echo)} { (DQ (" '/usr/sbin/services_mkdb -q -o ") (${ Id.VSub_Name DESTDIR) ('/var/db/services.db ') (${ Id.VSub_Name DESTDIR) ("/etc/services'") ) } ) (C {(echo)} {(DQ (' to rebuild your services database'))}) (C {(run_it_now)} { (DQ ('/usr/sbin/services_mkdb -q -o ') (${ Id.VSub_Name DESTDIR) ('/var/db/services.db ') (${ Id.VSub_Name DESTDIR) (/etc/services) ) } ) ] spids: [9153 9154 9207 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name NEED_PWD_MKDB))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[9222 9224 9226 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** You installed a new master.passwd file, so make sure that you run'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9258) ) ] action: [ (C {(echo)} { (DQ (" '/usr/sbin/pwd_mkdb -d ") (${ Id.VSub_Name DESTDIR) ('/etc -p ') (${ Id.VSub_Name DESTDIR) ("/etc/master.passwd'") ) } ) (C {(echo)} {(DQ (' to rebuild your password files'))}) (C {(run_it_now)} { (DQ ('/usr/sbin/pwd_mkdb -d ') (${ Id.VSub_Name DESTDIR) ('/etc -p ') (${ Id.VSub_Name DESTDIR) (/etc/master.passwd) ) } ) ] spids: [9245 9260] ) ] else_action: [ (C {(echo)} {(DQ (" '/usr/sbin/pwd_mkdb -p /etc/master.passwd'"))}) (C {(echo)} {(DQ (' to rebuild your password files'))}) (C {(run_it_now)} { (SQ (Token id: Id.Lit_Chars val: '/usr/sbin/pwd_mkdb -p /etc/master.passwd' span_id: 9320 ) ) } ) ] ) ] spids: [9228 9229 9327 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(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 ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9369) ) ] action: [ (C {(echo)} {(SQ )}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tzs_args) op: assign_op.Equal rhs: {(DQ ('-C ') (${ Id.VSub_Name DESTDIR))} spids: [9397] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name DESTDIR) (/var/db/zoneinfo))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9420) ) ] action: [ (C {(echo)} { (DQ ('*** Reinstalling ') (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:9429) command_list: (command.CommandList children: [(C {(cat)} {(${ Id.VSub_Name DESTDIR) (/var/db/zoneinfo)})] ) ) (' as ') (${ Id.VSub_Name DESTDIR) (/etc/localtime) ) } ) (C {(tzsetup)} {($ Id.VSub_DollarName '$tzs_args')} {(-r)}) ] spids: [9406 9422] ) ] else_action: [ (C {(echo)} { (DQ ('*** There is no ') (${ Id.VSub_Name DESTDIR) ('/var/db/zoneinfo file to update ') (${ Id.VSub_Name DESTDIR) (/etc/localtime.) ) } ) (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:' You should run tzsetup' span_id:9475))}) (C {(run_it_now)} {(DQ ('tzsetup ') ($ Id.VSub_DollarName '$tzs_args'))}) ] ) ] spids: [9332 9371] ) ] ) (C {(echo)} {(SQ )}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9511) ) ] action: [(C {(.)} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))})] spids: [9498 9513] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name COMP_CONFS))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[9537 9539 9541 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(.)} {(${ Id.VSub_Name DESTDIR) (/etc/defaults/rc.conf)}) (command.Pipeline children: [ (command.Subshell command_list: (command.CommandList children: [ (C {(echo)} {(SQ )}) (C {(echo)} {(DQ ('*** Comparing conf files: ') (${ Id.VSub_Name rc_conf_files))} ) (command.ForEach iter_name: CONF_FILE iter_words: [{(${ Id.VSub_Name rc_conf_files)}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-r)} { (DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9604) ) ] action: [ (C {(echo)} {(SQ )}) (C {(echo)} { (DQ ('*** From ') (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE) ) } ) (C {(echo)} { (DQ ('*** From ') (${ Id.VSub_Name DESTDIR) (/etc/defaults/rc.conf) ) } ) (command.ForEach iter_name: RC_CONF_VAR iter_words: [ { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 9646 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(grep)} {(-i)} {(Id.Lit_Other '^') (Id.Lit_LBracket '[') (a-z) (Id.Lit_RBracket ']') } {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE)} ) (C {(cut)} {(-d)} { (SQ (Token id: Id.Lit_Chars val: '=' span_id: 9674 ) ) } {(-f)} {(1)} ) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(echo)} {(SQ )}) (C {(grep)} {(-w)} {(Id.Lit_Other '^') (${ Id.VSub_Name RC_CONF_VAR)} {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE)} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(grep)} {(-w)} {(Id.Lit_Other '^') (${ Id.VSub_Name RC_CONF_VAR) } {(${ Id.VSub_Name DESTDIR) (/etc/defaults/rc.conf)} ) (C {(echo)} { (SQ (Token id: Id.Lit_Chars val: ' * No default variable with this name' span_id: 9729 ) ) } ) ] ) ] ) ) ] spids: [9588 9606] ) ] ) ] ) ) ] ) ) (C {(${ Id.VSub_Name PAGER)}) ] negated: F ) (C {(echo)} {(SQ )}) ] spids: [9543 9544 9755 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:9773) ) ] action: [ (command.Simple words: [ {(find)} {(-d)} {($ Id.VSub_DollarName '$PRESERVE_FILES_DIR')} {(-type)} {(d)} {(-empty)} {(-delete)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:9792) fd: 2 arg_word: {(/dev/null)} ) ] ) (command.Simple words: [{(rmdir)} {($ Id.VSub_DollarName '$PRESERVE_FILES_DIR')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:9800) fd: 2 arg_word: {(/dev/null)} ) ] ) ] spids: [9760 9775] ) ] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:9806) arg_word:{(0)}) ] )