Easy Chroot 0.3.1
[easy-deb-chroot] / fremantle / easy-chroot / .py2deb_build_folder / easy-chroot / src / sbin / closechroot
index 32ac256..cdb2c89 100755 (executable)
@@ -21,6 +21,13 @@ if [ "x$CHROOT" = x ] ; then
   [ "x$CHROOT" != x ] || CHROOT=/debian
 fi
 
+# Strip off a trailing slash
+LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}`
+if [ "$LASTCHAR" = "/" ] ; then
+   echo "..stripping trailing slash..." >/dev/stderr
+   CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))`
+fi
+
 #Abort if chroot not mounted.
 if [ ! -f "$CHROOT/var/lock/qmount-complete" ] ; then
   echo "Nothing to do; chroot not mounted!"
@@ -29,19 +36,37 @@ fi
 
 echo "Closing the chroot..."
 
-#
+# Fremantle's fuser command is broken.
+# We can either use Debian's one instead (as gfuser),
+# or we can use the workaround: "cd /proc" first.
+
+echo "...closing chroot apps..."
 
 TEST1=`mount | grep " $CHROOT "`
 if [ "x$TEST1" != "x" ] ; then
-  echo "...Killing chroot apps..."
-  fuser -m "$CHROOT" -k
+  if [ -f "/bin/gfuser" ] ; then
+    gfuser -m "$CHROOT" -k
+  else
+    cd /proc
+    fuser -m "$CHROOT" -k
+  fi
 else
-  fuser "$CHROOT" -k
+  if [ -f "/bin/gfuser" ] ; then
+    gfuser "$CHROOT" -k
+  else
+    cd /proc
+    fuser "$CHROOT" -k
+  fi
 fi
 
 echo "..Unmounting bound dirs..."
 
 #Any external mounts
+
+umount -fl $CHROOT/home/user/MyDocs
+umount -fl $CHROOT/dev/pts
+umount -fl $CHROOT/dev/shm
+
 MNTD=`cat /proc/mounts | grep " $CHROOT/" | awk '{print $2}'`
 for MDRV in $MNTD ; do
   echo "unmounting $MDRV"