Pre-Depend on zsh [Testing: issue287]
[grml-etc-core.git] / debian / preinst
index fa84a38..06a7917 100755 (executable)
@@ -4,41 +4,49 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Die Okt 03 20:33:19 CEST 2006 [mika]
+# Latest change: Sam Sep 15 10:36:46 CEST 2007 [mika]
 ################################################################################
 
 set -e
 
 # check for files from rm_conffile() in debian/preinst of grml-etc
 # make sure we don't lose any files...
-divert_conffile() {
+backup_conffile() {
     CONFFILE="$1"
 
-    if [ -e "$CONFFILE.dpkg-bak" ]; then
+    if [ -e "$CONFFILE.dpkg-bak" -a -e "$CONFFILE" ]; then
        cp -f "$CONFFILE" "$CONFFILE".original
     else
-       [ -e "$CONFFILE" ] && cp -f "$CONFFILE" "$CONFFILE".grml-etc-core
-       [ -e "$CONFFILE" ] && cp -f "$CONFFILE" "$CONFFILE".original
+       [ -e "$CONFFILE" ] && cp -f "$CONFFILE" "$CONFFILE".grml-etc-core || true
     fi
 }
 
 case "$1" in
    install|upgrade|configure)
+        TMP=$$
         # move files from package grml-etc to grml-etc-core, make sure
         # we don't lose any files...
         for file in /etc/zsh/zlogin /etc/zsh/zprofile /etc/zsh/zshenv /etc/zsh/zshrc \
-                    /etc/zsh/zlogout /etc/skel/.zshrc /etc/vim/vimrc; do
-               divert_conffile $file && \
+                    /etc/zsh/zlogout /etc/vim/vimrc; do
+               [ -e "$file".original ] || cp -f "$file" "${file}.tmp.$TMP" 2>/dev/null || /bin/true
+              # [ -e "$file".dpkg-new ] && cp -f "$file".dpkg-new "${file}.tmp.$TMP"
+               backup_conffile $file && \
                [ -f "$file" ] && rm $file && \
                dpkg-divert --quiet --add --rename --package grml-etc-core --divert "$file".original $file  && \
-               [ -f "$file".dpkg-bak ] && mv -f "$file".dpkg-bak "$file"
+               [ -f "$file".dpkg-bak ]      && mv -f "$file".dpkg-bak "$file"
                [ -f "$file".grml-etc-core ] && mv -f "$file".grml-etc-core "$file"
+              [ -e "${file}.tmp.$TMP" ]      && mv -f "${file}.tmp.$TMP" "$file.original"
 
                # trying to overwrite `/etc/skel/.zshrc', which is also in package zsh
                # [ -f /etc/skel/.zshrc ] && \
                # dpkg-divert --quiet --add --rename --package grml-etc-core --divert /etc/skel/.zshrc.original /etc/skel/.zshrc
         done
 
+       if dpkg-divert --list grml-etc-core 2>/dev/null | grep -q /etc/skel/.zshrc.original ; then
+          mv -f /etc/skel/.zshrc.original /etc/skel/.zshrc.original.old && \
+          dpkg-divert --remove --rename --package grml-etc-core /etc/skel/.zshrc
+       fi
+
      ;;
    *)
      echo "preinst called with unknown argument $1" >&2