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=b3d118487a399f0cc277229aed2fe91ae62460a7;hpb=3b069a494fe989e75be26e5bc50efd8bb35d3109;p=grml-scripts.git diff --git a/usr_sbin/grml-chroot b/usr_sbin/grml-chroot index b3d1184..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 + if (( $# < 1 )); then chroot "$DEST_" RC=$? @@ -95,6 +128,15 @@ else chroot "$DEST_" "$@" RC=$? fi -umount_all + +if [ -z "$STATEDIR" ] ; then + umount_all +else + rm "$DEST_/$STATEDIR/$$" + + if rmdir "$DEST_/$STATEDIR" 2>/dev/null; then + umount_all + fi +fi exit $RC