git: f2055611fe56 - main - mergemaster: remove from the tree

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Tue, 16 Jul 2024 12:26:52 UTC
The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=f2055611fe5624017bd7769c8dc6419c348806ff

commit f2055611fe5624017bd7769c8dc6419c348806ff
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2023-09-09 13:17:16 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2024-07-16 12:25:54 +0000

    mergemaster: remove from the tree
    
    Mergemaster has been deprecated for many years, replaced by
    etcupdate(8).  Remove it now, in advance of FreeBSD 15.0.
    
    PR:             252417
    Reviewed by:    imp
    Relnotes:       Yes
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D45622
---
 ObsoleteFiles.inc                       |    4 +
 targets/pseudo/userland/Makefile.depend |    1 -
 usr.sbin/Makefile                       |    1 -
 usr.sbin/mergemaster/Makefile           |    5 -
 usr.sbin/mergemaster/Makefile.depend    |   10 -
 usr.sbin/mergemaster/mergemaster.8      |  485 ----------
 usr.sbin/mergemaster/mergemaster.sh     | 1568 -------------------------------
 7 files changed, 4 insertions(+), 2070 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 19eefda42fe9..f8f0309d6ccf 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -51,6 +51,10 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20240716: retire mergemaster
+OLD_FILES+=usr/sbin/mergemaster
+OLD_FILES+=usr/share/man/man8/mergemaster.8.gz
+
 # 20240527: csh: Remove hardlink /.cshrc
 OLD_FILES+=.cshrc
 
diff --git a/targets/pseudo/userland/Makefile.depend b/targets/pseudo/userland/Makefile.depend
index 378531b68cc1..6a844630c999 100644
--- a/targets/pseudo/userland/Makefile.depend
+++ b/targets/pseudo/userland/Makefile.depend
@@ -589,7 +589,6 @@ DIRDEPS+= \
 	usr.sbin/makemap \
 	usr.sbin/manctl \
 	usr.sbin/memcontrol \
-	usr.sbin/mergemaster \
 	usr.sbin/mfiutil \
 	usr.sbin/mixer \
 	usr.sbin/mld6query \
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index 9d6c90d09461..e039cea6ee16 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -38,7 +38,6 @@ SUBDIR=	adduser \
 	mailwrapper \
 	makefs \
 	memcontrol \
-	mergemaster \
 	mfiutil \
 	mixer \
 	mlxcontrol \
diff --git a/usr.sbin/mergemaster/Makefile b/usr.sbin/mergemaster/Makefile
deleted file mode 100644
index 2edda1b9bc05..000000000000
--- a/usr.sbin/mergemaster/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-SCRIPTS=mergemaster.sh
-MAN=	mergemaster.8
-
-.include <bsd.prog.mk>
-
diff --git a/usr.sbin/mergemaster/Makefile.depend b/usr.sbin/mergemaster/Makefile.depend
deleted file mode 100644
index 11aba52f82cf..000000000000
--- a/usr.sbin/mergemaster/Makefile.depend
+++ /dev/null
@@ -1,10 +0,0 @@
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/mergemaster/mergemaster.8 b/usr.sbin/mergemaster/mergemaster.8
deleted file mode 100644
index 20d746de347c..000000000000
--- a/usr.sbin/mergemaster/mergemaster.8
+++ /dev/null
@@ -1,485 +0,0 @@
-.\" Copyright (c) 1998-2011 Douglas Barton
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd April 16, 2024
-.Dt MERGEMASTER 8
-.Os
-.Sh NAME
-.Nm mergemaster
-.Nd merge configuration files, et al during an upgrade
-.Sh SYNOPSIS
-.Nm
-.Op Fl scrvhpCP
-.Op Fl a|iFU
-.Op Fl -run-updates=[always|never]
-.Op Fl m Ar /path/to/sources
-.Op Fl t Ar /path/to/temp/root
-.Op Fl d
-.Op Fl u Ar N
-.Op Fl w Ar N
-.Op Fl A Ar Target architecture
-.Op Fl D Ar /destdir/path
-.Sh DESCRIPTION
-.Bf -symbolic
-The
-.Nm
-utility is deprecated and may not be available in
-.Fx 15.0
-or later.
-Users are advised to use
-.Xr etcupdate 8
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility is a Bourne shell script which is designed to aid you
-in updating the various configuration and other files
-associated with
-.Fx .
-It is
-.Sy HIGHLY
-recommended that you back up your
-.Pa /etc
-directory before beginning this process.
-.Pp
-The script uses
-.Pa /usr/src/Makefile
-to build a temporary root environment from
-.Pa /
-down, populating that environment with the various
-files.
-You can specify a different source directory
-with the
-.Fl m
-command line option, or specify the destination
-directory with the
-.Fl D
-option.
-It then compares each file in that environment
-to its installed counterpart.
-When the script finds a
-change in the new file, or there is no installed
-version of the new file it gives you four options to
-deal with it.
-You can install the new file as is,
-delete the new file, merge the old and new
-files (as appropriate) using
-.Xr sdiff 1
-or leave the file in the temporary root environment to
-merge by hand later.
-.Pp
-By default it creates the temporary root in
-.Pa /var/tmp/temproot
-and compares the
-Version Control System (VCS) Id strings ($FreeBSD)
-for files that have them, deleting
-the temporary file if the strings match.
-If there is
-no Id string, or if the strings are different it
-compares the files themselves.
-You can
-also specify that the script ignore the Id strings and
-compare every file with the
-.Fl s
-option.
-Using the
-.Fl F
-option
-.Nm
-will install the new file for you if they differ only by
-VCS strings.
-.Pp
-The merge menu option is designed to let you easily combine your
-customizations from the old version of a file into the new one.
-While you can use the merge function to incorporate changes from
-files that you have not customized,
-it is not recommended.
-.Pp
-The
-.Nm
-utility checks your umask and issues a warning for anything
-other than 022.
-While it is not mandatory to grant
-world read permissions for most configuration files, you
-may run into problems without them.
-If you choose a
-umask other than 022 and experience trouble later this
-could be the cause.
-.Pa /etc/master.passwd
-is treated as a special case.
-If you choose to install
-this file or a merged version of it the file permissions
-are always 600 (rw-------) for security reasons.
-After
-installing an updated version of this file you should
-probably run
-.Xr pwd_mkdb 8
-with the
-.Fl p
-option to rebuild your password databases
-and recreate
-.Pa /etc/passwd .
-.Pp
-The script uses the owner and group ids
-that the files are created with by
-.Pa /usr/src/etc/Makefile ,
-and file permissions as specified by the umask.
-Unified diffs are used by default to display any
-differences unless you choose context diffs.
-.Pp
-The
-.Nm
-utility will source scripts that you specify right before
-it starts the comparison, and after it is done running.
-The easiest way to handle this is to place the path
-to the script(s) in the appropriate variables in your
-.Pa .mergemasterrc
-file.
-The script sourced before comparison is named in
-.Ev MM_PRE_COMPARE_SCRIPT ,
-and the one sourced after the script is done is
-.Ev MM_EXIT_SCRIPT .
-This is the recommended way to specify local modifications,
-or files that you want to give special handling to.
-This includes files that you want to be deleted without
-being compared.
-Because the named scripts are sourced from within
-.Nm ,
-all of the script's variables are available for use in
-your custom script.
-You can also use
-.Pa /etc/mergemaster.rc
-which will be read before
-.Pa .mergemasterrc .
-Options specified on the command line are updated last,
-and therefore can override both files.
-.Pp
-When the comparison is done if there are any files remaining
-in the temproot directory they will be listed, and if the
-.Fl a
-option is not in use the user will be given the option of
-deleting the temproot directory.
-If there are no files remaining in the temproot directory
-it will be deleted.
-.Pp
-The options are as follows:
-.Bl -tag -width Fl
-.It Fl s
-Perform a strict comparison, diffing every pair of files.
-This comparison is performed line by line,
-without regard to VCS Ids.
-.It Fl c
-Use context diffs instead of unified diffs.
-.It Fl r
-Re-run
-.Nm
-on a previously cleaned directory, skipping the creation of
-the temporary root environment.
-This option is compatible
-with all other options.
-.It Fl v
-Be more verbose about the process.
-You should probably use
-this option the first time you run
-.Nm .
-This option also gives you a list of files that exist
-only in the installed version of
-.Pa /etc .
-.It Fl a
-Run automatically.
-This option will leave all the files that
-differ from the installed versions in the temporary directory
-to be dealt with by hand.
-If the
-.Pa temproot
-directory exists, it creates a new one in a previously
-non-existent directory.
-This option unsets the verbose flag,
-and is not compatible with
-.Fl i ,
-.Fl F ,
-or
-.Fl U .
-Setting
-.Fl a
-makes
-.Fl w
-superfluous.
-.It Fl h
-Display usage and help information.
-.It Fl i
-Automatically install any files that do not exist in the
-destination directory.
-.It Fl p
-Pre-buildworld mode.
-Compares only files known to be essential to the success of
-{build|install}world, i.e.,
-.Pa /etc/group
-and
-.Pa /etc/master.passwd .
-.It Fl F
-If the files differ only by VCS Id ($FreeBSD)
-install the new file.
-.It Fl C
-After a standard
-.Nm
-run,
-compares your rc.conf[.local] options to the defaults.
-.It Fl P
-Preserve files that you replace in
-.Pa /var/tmp/mergemaster/preserved-files-<date> ,
-or another directory you specify in your
-.Nm
-rc file.
-.It Fl U
-Attempt to auto upgrade files that have not been user modified.
-This option can be dangerous when there are critical changes
-in the new versions that affect your running system.
-.It Fl -run-updates=[always|never]
-Specify always or never to run newaliases, pwd_mkdb, etc.
-at the end of the comparison run.
-If this option is omitted the default is to prompt the user
-for each update as necessary.
-.It Fl m Ar /path/to/sources
-Specify the path to the directory where you want to do the
-.Xr make 1 .
-(In other words, where your sources are, but -s was already
-taken.)
-In older versions of
-.Nm
-the path to
-.Pa src/etc
-was required.
-.Nm
-will convert the path if this older method is used.
-.It Fl t Ar /path/to/temp/root
-Create the temporary root environment in
-.Pa /path/to/temp/root
-instead of the default
-.Pa /var/tmp/temproot .
-.It Fl d
-Add the date and time to the name of the temporary
-root directory.
-If
-.Fl t
-is specified, this option must
-follow it if you want the date added too.
-.It Fl u Ar N
-Specify a numeric umask.
-The default is 022.
-.It Fl w Ar N
-Supply an alternate screen width to the
-.Xr sdiff 1
-command in numbers of columns.
-The default is 80.
-.It Fl A Ar Target architecture
-Specify an alternative
-.Ev TARGET_ARCH
-architecture name.
-.It Fl D Ar /path
-Specify the destination directory for the installed files.
-.El
-.Sh ENVIRONMENT
-The
-.Nm
-utility uses the
-.Ev PAGER
-environment variable if set.
-Otherwise it uses
-.Xr less 1 .
-If
-.Ev PAGER
-specifies a program outside
-its
-limited
-.Ev PATH
-without specifying the full path,
-.Nm
-prompts you with options on how to proceed.
-The
-.Ev MM_PRE_COMPARE_SCRIPT
-and
-.Ev MM_EXIT_SCRIPT
-variables are used as described above.
-Other variables that are used by the script internally
-can be specified in
-.Pa .mergemasterrc
-as described in more detail below.
-.Sh FILES
-.Bl -tag -width $HOME/.mergemasterrc -compact
-.It Pa /etc/mergemaster.rc
-.It Pa $HOME/.mergemasterrc
-.El
-.Pp
-The
-.Nm
-utility will
-.Ic .\&
-(source) these files if they exist.
-Command line options
-will override rc file options.
-.Pa $HOME/.mergemasterrc
-overrides
-.Pa /etc/mergemaster.rc .
-Here is an example
-with all values commented out:
-.Bd -literal
-# These are options for mergemaster, with their default values listed
-# The following options have command line overrides
-#
-# The target architecture (-A, unset by default)
-#ARCHSTRING='TARGET_ARCH=<foo>'
-#
-# Sourcedir is the directory to do the 'make' in (-m)
-#SOURCEDIR='/usr/src'
-#
-# Directory to install the temporary root environment into (-t)
-#TEMPROOT='/var/tmp/temproot'
-#
-# Specify the destination directory for the installed files (-D)
-#DESTDIR=
-#
-# Strict comparison skips the VCS Id test and compares every file (-s)
-#STRICT=no
-#
-# Type of diff, such as unified, context, etc. (-c)
-#DIFF_FLAG='-u'
-#
-# Install the new file if it differs only by VCS Id ($FreeBSD, -F)
-#FREEBSD_ID=
-#
-# Verbose mode includes more details and additional checks (-v)
-#VERBOSE=
-#
-# Automatically install files that do not exist on the system already (-i)
-#AUTO_INSTALL=
-#
-# Automatically upgrade files that have not been user modified (-U)
-# ***DANGEROUS***
-#AUTO_UPGRADE=
-#
-# Either always or never run newaliases, pwd_mkdb at the end (--run-updates)
-#RUN_UPDATES=
-#
-# Compare /etc/rc.conf[.local] to /etc/defaults/rc.conf (-C)
-#COMP_CONFS=
-#
-# Preserve files that you replace (-P)
-#PRESERVE_FILES=
-#PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S`
-#
-# The umask for mergemaster to compare the default file's modes to (-u)
-#NEW_UMASK=022
-#
-# The following options have no command line overrides
-#
-# Files to always avoid comparing
-#IGNORE_FILES='/etc/motd /etc/printcap foo bar'
-#
-# Additional options for diff.  This will get unset when using -s.
-#DIFF_OPTIONS='-Bb'	# Ignore changes in whitespace
-#
-# Location to store the list of mtree values for AUTO_UPGRADE purposes
-#MTREEDB='/var/db'
-#
-# For those who just cannot stand including the full path to PAGER
-#DONT_CHECK_PAGER=
-#
-# If you set 'yes' above, make sure to include the PATH to your pager
-#PATH=/bin:/usr/bin:/usr/sbin
-#
-# Delete stale files in /etc/rc.d without prompting
-#DELETE_STALE_RC_FILES=
-#
-# Specify the path to scripts to run before the comparison starts,
-# and/or after the script has finished its work
-#MM_PRE_COMPARE_SCRIPT=
-#MM_EXIT_SCRIPT=
-.Ed
-.Sh EXIT STATUS
-Exit status is 0 on successful completion, or if the user bails out
-manually at some point during execution.
-.Pp
-Exit status is 1 if it fails for one of the following reasons:
-.Pp
-Invalid command line option
-.Pp
-Failure to create the temporary root environment
-.Pp
-Failure to populate the temporary root
-.Pp
-Presence of the 'nodev' option in
-.Pa <DESTDIR>/etc/fstab
-.Pp
-Failure to install a file
-.Sh EXAMPLES
-Typically all you will need to do is type
-.Nm
-at the prompt and the script will do all the work for you.
-.Pp
-To use context diffs and have
-.Nm
-explain more things as it goes along, use:
-.Pp
-.Dl # mergemaster -cv
-.Pp
-To specify that
-.Nm
-put the temporary root environment in
-.Pa /usr/tmp/root ,
-use:
-.Pp
-.Dl # mergemaster -t /usr/tmp/root
-.Pp
-To specify a 110 column screen with a strict
-comparison, use:
-.Pp
-.Dl # mergemaster -sw 110
-.Sh SEE ALSO
-.Xr diff 1 ,
-.Xr make 1 ,
-.Xr less 1 ,
-.Xr sdiff 1 ,
-.Xr etcupdate 8 ,
-.Xr pwd_mkdb 8
-.Pp
-.Pa /usr/src/etc/Makefile
-.Rs
-.%U https://docs.freebsd.org/en/books/handbook/cutting-edge/#makeworld
-.%T The FreeBSD Handbook
-.Re
-.Sh HISTORY
-The
-.Nm
-utility was first publicly available on one of my
-web pages in a much simpler form under the name
-.Pa comproot
-on 13 March 1998.
-The idea for creating the
-temporary root environment comes from Nik Clayton's
-make world tutorial which is referenced above.
-.Sh AUTHORS
-This manual page and the script itself were written by
-.An Douglas Barton Aq Mt dougb@FreeBSD.org .
diff --git a/usr.sbin/mergemaster/mergemaster.sh b/usr.sbin/mergemaster/mergemaster.sh
deleted file mode 100755
index 572415164101..000000000000
--- a/usr.sbin/mergemaster/mergemaster.sh
+++ /dev/null
@@ -1,1568 +0,0 @@
-#!/bin/sh
-
-# mergemaster
-
-# Compare files created by /usr/src/etc/Makefile (or the directory
-# the user specifies) with the currently installed copies.
-
-# Copyright (c) 1998-2012 Douglas Barton, All rights reserved
-# Please see detailed copyright below
-
-PATH=/bin:/usr/bin:/usr/sbin
-
-display_usage () {
-  VERSION_NUMBER=`grep "[$]FreeBSD:" $0 | cut -d ' ' -f 4`
-  echo "mergemaster version ${VERSION_NUMBER}"
-  echo 'Usage: mergemaster [-scrvhpCP] [-a|[-iFU]] [--run-updates=always|never]'
-  echo '    [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]'
-  echo "Options:"
-  echo "  -s  Strict comparison (diff every pair of files)"
-  echo "  -c  Use context diff instead of unified diff"
-  echo "  -r  Re-run on a previously cleaned directory (skip temproot creation)"
-  echo "  -v  Be more verbose about the process, include additional checks"
-  echo "  -a  Leave all files that differ to merge by hand"
-  echo "  -h  Display more complete help"
-  echo '  -i  Automatically install files that do not exist in destination directory'
-  echo '  -p  Pre-buildworld mode, only compares crucial files'
-  echo '  -F  Install files that differ only by revision control Id ($FreeBSD)'
-  echo '  -C  Compare local rc.conf variables to the defaults'
-  echo '  -P  Preserve files that are overwritten'
-  echo "  -U  Attempt to auto upgrade files that have not been user modified"
-  echo '      ***DANGEROUS***'
-  echo '  --run-updates=  Specify always or never to run newalises, pwd_mkdb, etc.'
-  echo ''
-  echo "  -m /path/directory  Specify location of source to do the make in"
-  echo "  -t /path/directory  Specify temp root directory"
-  echo "  -d  Add date and time to directory name (e.g., /var/tmp/temproot.`date +%m%d.%H.%M`)"
-  echo "  -u N  Specify a numeric umask"
-  echo "  -w N  Specify a screen width in columns to sdiff"
-  echo "  -A architecture  Alternative architecture name to pass to make"
-  echo '  -D /path/directory  Specify the destination directory to install files to'
-  echo ''
-}
-
-display_help () {
-  echo "* To specify a directory other than /var/tmp/temproot for the"
-  echo "  temporary root environment, use -t /path/to/temp/root"
-  echo "* The -w option takes a number as an argument for the column width"
-  echo "  of the screen.  The default is 80."
-  echo '* The -a option causes mergemaster to run without prompting.'
-}
-
-# Loop allowing the user to use sdiff to merge files and display the merged
-# file.
-merge_loop () {
-  case "${VERBOSE}" in
-  '') ;;
-  *)
-      echo "   *** Type h at the sdiff prompt (%) to get usage help"
-      ;;
-  esac
-  echo ''
-  MERGE_AGAIN=yes
-  while [ "${MERGE_AGAIN}" = "yes" ]; do
-    # Prime file.merged so we don't blat the owner/group id's
-    cp -p "${COMPFILE}" "${COMPFILE}.merged"
-    sdiff -o "${COMPFILE}.merged" --text --suppress-common-lines \
-      --width=${SCREEN_WIDTH:-80} "${DESTDIR}${COMPFILE#.}" "${COMPFILE}"
-    INSTALL_MERGED=V
-    while [ "${INSTALL_MERGED}" = "v" -o "${INSTALL_MERGED}" = "V" ]; do
-      echo ''
-      echo "  Use 'i' to install merged file"
-      echo "  Use 'r' to re-do the merge"
-      echo "  Use 'v' to view the merged file"
-      echo "  Default is to leave the temporary file to deal with by hand"
-      echo ''
-      echo -n "    *** How should I deal with the merged file? [Leave it for later] "
-      read INSTALL_MERGED
-
-      case "${INSTALL_MERGED}" in
-      [iI])
-        mv "${COMPFILE}.merged" "${COMPFILE}"
-        echo ''
-        if mm_install "${COMPFILE}"; then
-          echo "     *** Merged version of ${COMPFILE} installed successfully"
-        else
-          echo "     *** Problem installing ${COMPFILE}, it will remain to merge by hand later"
-        fi
-        unset MERGE_AGAIN
-        ;;
-      [rR])
-        rm "${COMPFILE}.merged"
-        ;;
-      [vV])
-        ${PAGER} "${COMPFILE}.merged"
-        ;;
-      '')
-        echo "   *** ${COMPFILE} will remain for your consideration"
-        unset MERGE_AGAIN
-        ;;
-      *)
-        echo "invalid choice: ${INSTALL_MERGED}"
-        INSTALL_MERGED=V
-        ;;
-      esac
-    done
-  done
-}
-
-# Loop showing user differences between files, allow merge, skip or install
-# options
-diff_loop () {
-
-  HANDLE_COMPFILE=v
-
-  while [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" -o \
-    "${HANDLE_COMPFILE}" = "NOT V" ]; do
-    if [ -f "${DESTDIR}${COMPFILE#.}" -a -f "${COMPFILE}" ]; then
-      if [ -n "${AUTO_UPGRADE}" -a -n "${CHANGED}" ]; then
-        case "${CHANGED}" in
-        *:${DESTDIR}${COMPFILE#.}:*) ;;		# File has been modified
-        *)
-          echo ''
-          echo "  *** ${COMPFILE} has not been user modified."
-          echo ''
-
-          if mm_install "${COMPFILE}"; then
-            echo "   *** ${COMPFILE} upgraded successfully"
-            echo ''
-            # Make the list print one file per line
-            AUTO_UPGRADED_FILES="${AUTO_UPGRADED_FILES}      ${DESTDIR}${COMPFILE#.}
-"
-          else
-            echo "   *** Problem upgrading ${COMPFILE}, it will remain to merge by hand"
-          fi
-          return
-          ;;
-        esac
-      fi
-      if [ "${HANDLE_COMPFILE}" = "v" -o "${HANDLE_COMPFILE}" = "V" ]; then
-	echo ''
-	echo '   ======================================================================   '
-	echo ''
-        (
-          echo "  *** Displaying differences between installed version and ${COMPFILE}:"
-          echo ''
-          diff ${DIFF_FLAG} ${DIFF_OPTIONS} "${DESTDIR}${COMPFILE#.}" "${COMPFILE}"
-        ) | ${PAGER}
-        echo ''
-      fi
-    else
-      echo ''
-      echo "  *** There is no installed version of ${COMPFILE}"
-      echo ''
-      case "${AUTO_INSTALL}" in
-      [Yy][Ee][Ss])
-        echo ''
-        if mm_install "${COMPFILE}"; then
-          echo "   *** ${COMPFILE} installed successfully"
-          echo ''
-          # Make the list print one file per line
-          AUTO_INSTALLED_FILES="${AUTO_INSTALLED_FILES}      ${DESTDIR}${COMPFILE#.}
-"
-        else
-          echo "   *** Problem installing ${COMPFILE}, it will remain to merge by hand"
-        fi
-        return
-        ;;
-      *)
-        NO_INSTALLED=yes
-        ;;
-      esac
-    fi
-
-    echo "  Use 'd' to delete the temporary ${COMPFILE}"
-    echo "  Use 'i' to install the temporary ${COMPFILE}"
-    case "${NO_INSTALLED}" in
-    '')
-      echo "  Use 'm' to merge the temporary and installed versions"
-      echo "  Use 'v' to view the diff results again"
-      ;;
-    esac
-    echo ''
-    echo "  Default is to leave the temporary file to deal with by hand"
-    echo ''
-    echo -n "How should I deal with this? [Leave it for later] "
-    read HANDLE_COMPFILE
-
-    case "${HANDLE_COMPFILE}" in
-    [dD])
-      rm "${COMPFILE}"
-      echo ''
-      echo "   *** Deleting ${COMPFILE}"
-      ;;
-    [iI])
-      echo ''
-      if mm_install "${COMPFILE}"; then
-        echo "   *** ${COMPFILE} installed successfully"
-      else
-        echo "   *** Problem installing ${COMPFILE}, it will remain to merge by hand"
-      fi
-      ;;
-    [mM])
-      case "${NO_INSTALLED}" in
-      '')
-        # interact with user to merge files
-        merge_loop
-        ;;
-      *)
-        echo ''
-        echo "   *** There is no installed version of ${COMPFILE}"
-        echo ''
-        HANDLE_COMPFILE="NOT V"
-        ;;
-      esac # End of "No installed version of file but user selected merge" test
-      ;;
-    [vV])
-      continue
-      ;;
-    '')
-      echo ''
-      echo "   *** ${COMPFILE} will remain for your consideration"
-      ;;
-    *)
-      # invalid choice, show menu again.
-      echo "invalid choice: ${HANDLE_COMPFILE}"
-      echo ''
-      HANDLE_COMPFILE="NOT V"
-      continue
-      ;;
-    esac  # End of "How to handle files that are different"
-  done
-  unset NO_INSTALLED
-  echo ''
-  case "${VERBOSE}" in
-  '') ;;
-  *)
-    sleep 3
-    ;;
-  esac
-}
-
-press_to_continue () {
-  local DISCARD
-  echo -n ' *** Press the [Enter] or [Return] key to continue '
-  read DISCARD
-}
-
-# Set the default path for the temporary root environment
-#
-TEMPROOT='/var/tmp/temproot'
-
-# Read /etc/mergemaster.rc first so the one in $HOME can override
-#
-if [ -r /etc/mergemaster.rc ]; then
-  . /etc/mergemaster.rc
-fi
-
-# Read .mergemasterrc before command line so CLI can override
-#
-if [ -r "$HOME/.mergemasterrc" ]; then
-  . "$HOME/.mergemasterrc"
-fi
-
-for var in "$@" ; do
-  case "$var" in
-  --run-updates*)
-    RUN_UPDATES=`echo ${var#--run-updates=} | tr [:upper:] [:lower:]`
-    ;;
-  *)
-    newopts="$newopts $var"
-    ;;
-  esac
-done
-
-set -- $newopts
-unset var newopts
-
-# Check the command line options
-#
-while getopts ":ascrvhipCPm:t:du:w:D:A:FU" COMMAND_LINE_ARGUMENT ; do
-  case "${COMMAND_LINE_ARGUMENT}" in
-  A)
-    ARCHSTRING='TARGET_ARCH='${OPTARG}
-    ;;
-  F)
-    FREEBSD_ID=yes
-    ;;
-  U)
-    AUTO_UPGRADE=yes
-    ;;
-  s)
-    STRICT=yes
-    unset DIFF_OPTIONS
-    ;;
-  c)
-    DIFF_FLAG='-c'
-    ;;
-  r)
-    RERUN=yes
-    ;;
-  v)
-    case "${AUTO_RUN}" in
-    '') VERBOSE=yes ;;
-    esac
-    ;;
-  a)
-    AUTO_RUN=yes
-    unset VERBOSE
-    ;;
-  h)
-    display_usage
-    display_help
-    exit 0
-    ;;
-  i)
-    AUTO_INSTALL=yes
-    ;;
-  C)
-    COMP_CONFS=yes
-    ;;
-  P)
-    PRESERVE_FILES=yes
-    ;;
-  p)
-    PRE_WORLD=yes
-    unset COMP_CONFS
-    unset AUTO_RUN
-    ;;
-  m)
-    SOURCEDIR=${OPTARG}
-    ;;
-  t)
-    TEMPROOT=${OPTARG}
-    ;;
-  d)
-    TEMPROOT=${TEMPROOT}.`date +%m%d.%H.%M`
-    ;;
-  u)
-    NEW_UMASK=${OPTARG}
-    ;;
-  w)
-    SCREEN_WIDTH=${OPTARG}
-    ;;
-  D)
-    DESTDIR=${OPTARG}
-    ;;
-  *)
-    display_usage
-    exit 1
-    ;;
-  esac
-done
-
-if [ -n "$AUTO_RUN" ]; then
-  if [ -n "$FREEBSD_ID" -o -n "$AUTO_UPGRADE" -o -n "$AUTO_INSTALL" ]; then
-    echo ''
-    echo "*** You have included the -a option along with one or more options"
-    echo '    that indicate that you wish mergemaster to actually make updates'
-    echo '    (-F, -U, or -i), however these options are not compatible.'
-    echo '    Please read mergemaster(8) for more information.'
-    echo ''
-    exit 1
-  fi
-fi
-
-# Assign the location of the mtree database
-#
-MTREEDB=${MTREEDB:-${DESTDIR}/var/db}
-MTREEFILE="${MTREEDB}/mergemaster.mtree"
-
-# Don't force the user to set this in the mergemaster rc file
-if [ -n "${PRESERVE_FILES}" -a -z "${PRESERVE_FILES_DIR}" ]; then
-  PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S`
-  mkdir -p ${PRESERVE_FILES_DIR}
-fi
-
-# Check for the mtree database in DESTDIR
-case "${AUTO_UPGRADE}" in
-'') ;;	# If the option is not set no need to run the test or warn the user
-*)
-  if [ ! -s "${MTREEFILE}" ]; then
-    echo ''
-    echo "*** Unable to find mtree database (${MTREEFILE})."
-    echo "    Skipping auto-upgrade on this run."
-    echo "    It will be created for the next run when this one is complete."
-    echo ''
-    case "${AUTO_RUN}" in
-    '')
-      press_to_continue
-      ;;
-    esac
-    unset AUTO_UPGRADE
-  fi
*** 1175 LINES SKIPPED ***