summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mergemaster
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/mergemaster')
-rwxr-xr-xusr.sbin/mergemaster/mergemaster.sh33
1 files changed, 20 insertions, 13 deletions
diff --git a/usr.sbin/mergemaster/mergemaster.sh b/usr.sbin/mergemaster/mergemaster.sh
index fa88741..7a33c4d 100755
--- a/usr.sbin/mergemaster/mergemaster.sh
+++ b/usr.sbin/mergemaster/mergemaster.sh
@@ -840,8 +840,19 @@ mm_install () {
DONT_INSTALL=yes
;;
/.cshrc | /.profile)
- case "${AUTO_INSTALL}" in
- '')
+ local st_nlink
+
+ # install will unlink the file before it installs the new one,
+ # so we have to restore/create the link afterwards.
+ #
+ st_nlink=0 # In case the file does not yet exist
+ eval $(stat -s ${DESTDIR}${COMPFILE#.} 2>/dev/null)
+
+ do_install_and_rm "${FILE_MODE}" "${1}" "${DESTDIR}${INSTALL_DIR}"
+
+ if [ -n "${AUTO_INSTALL}" -a $st_nlink -gt 1 ]; then
+ HANDLE_LINK=l
+ else
case "${LINK_EXPLAINED}" in
'')
echo " *** Historically BSD derived systems have had a"
@@ -855,17 +866,13 @@ mm_install () {
esac
echo " Use 'd' to delete the temporary ${COMPFILE}"
- echo " Use 'l' to delete the existing ${DESTDIR}${COMPFILE#.} and create the link"
+ echo " Use 'l' to delete the existing ${DESTDIR}/root/${COMPFILE##*/} and create the link"
echo ''
echo " Default is to leave the temporary file to deal with by hand"
echo ''
echo -n " How should I handle ${COMPFILE}? [Leave it to install later] "
read HANDLE_LINK
- ;;
- *) # Part of AUTO_INSTALL
- HANDLE_LINK=l
- ;;
- esac
+ fi
case "${HANDLE_LINK}" in
[dD]*)
@@ -875,19 +882,19 @@ mm_install () {
;;
[lL]*)
echo ''
- rm -f "${DESTDIR}${COMPFILE#.}"
- if ln "${DESTDIR}/root/${COMPFILE##*/}" "${DESTDIR}${COMPFILE#.}"; then
+ unlink ${DESTDIR}/root/${COMPFILE##*/}
+ if ln ${DESTDIR}${COMPFILE#.} ${DESTDIR}/root/${COMPFILE##*/}; then
echo " *** Link from ${DESTDIR}${COMPFILE#.} to ${DESTDIR}/root/${COMPFILE##*/} installed successfully"
- rm "${COMPFILE}"
else
- echo " *** Error linking ${DESTDIR}${COMPFILE#.} to ${DESTDIR}/root/${COMPFILE##*/}, ${COMPFILE} will remain to install by hand"
+ echo " *** Error linking ${DESTDIR}${COMPFILE#.} to ${DESTDIR}/root/${COMPFILE##*/}"
+ echo " *** ${COMPFILE} will remain for your consideration"
fi
;;
*)
echo " *** ${COMPFILE} will remain for your consideration"
;;
esac
- DONT_INSTALL=yes
+ return
;;
esac
OpenPOWER on IntegriCloud