X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_sbin%2Fgrml-chroot;h=2540957ea0bbc5cbee4cd00008e06035f6b1ef2b;hb=refs%2Fheads%2Fmika%2Fgrml_chroot_multi;hp=e9c1ae35e054d780f04af08171f5110bc1c1a703;hpb=01e3fafa6cfa747d4fc8d21fc13df200e0ed137d;p=grml-scripts.git diff --git a/usr_sbin/grml-chroot b/usr_sbin/grml-chroot index e9c1ae3..2540957 100755 --- a/usr_sbin/grml-chroot +++ b/usr_sbin/grml-chroot @@ -10,6 +10,12 @@ PROG_NAME_=$(basename $0) DEST_="" MOUNTED_="" # all mounted destinations +function bailout +{ + umount_all + die "Bailout" +} +trap bailout 1 2 3 3 6 9 14 15 function die { @@ -17,6 +23,16 @@ function die exit 1 } +function isMounted +{ + local dir="$1" + if cut -d\ -f 2 /proc/mounts | grep -q "$dir"; then + return 0 + else + return 1 + fi +} + function printUsage { cat < "$DEST_"/etc/debian_chroot fi @@ -103,10 +128,15 @@ else chroot "$DEST_" "$@" RC=$? fi -umount_all -if [ ! -z "$WROTE_DEBIAN_CHROOT" ]; then - rm "$DEST_"/etc/debian_chroot +if [ -z "$STATEDIR" ] ; then + umount_all +else + rm "$DEST_/$STATEDIR/$$" + + if rmdir "$DEST_/$STATEDIR" 2>/dev/null; then + umount_all + fi fi exit $RC