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=098592494dd42d2ec9e8d2b51a0e7e0ce45699bc;hpb=3bfbb79eef6cca9c40a63a8ea0ab86b421b72eee;p=grml-scripts.git diff --git a/usr_sbin/grml-chroot b/usr_sbin/grml-chroot index 0985924..2540957 100755 --- a/usr_sbin/grml-chroot +++ b/usr_sbin/grml-chroot @@ -9,8 +9,13 @@ PROG_NAME_=$(basename $0) DEST_="" MOUNTED_="" # all mounted destinations -COMMAND_="" # command to start in chroot +function bailout +{ + umount_all + die "Bailout" +} +trap bailout 1 2 3 3 6 9 14 15 function die { @@ -18,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=$? +else + chroot "$DEST_" "$@" + RC=$? +fi + +if [ -z "$STATEDIR" ] ; then + umount_all +else + rm "$DEST_/$STATEDIR/$$" + + if rmdir "$DEST_/$STATEDIR" 2>/dev/null; then + umount_all + fi +fi + +exit $RC