#!/bin/sh
#============================================================================#
# Unmount hotplug devices as normal user                                     #
#============================================================================#
# (C) Denis Smirnov <mithraen@freesource.info>          http://mithraen.ru/  #
#============================================================================#
HMOUNT=/usr/bin/hmount
PMOUNT=/usr/bin/pmount
PUMOUNT=/usr/bin/pumount
UDISKSCTL=/usr/bin/udisksctl
FUSERMOUNT=/usr/bin/fusermount

if [ -z "$1" ]; then
    echo "Use: $0 <block device>"
    exit -1
fi

# If it is fuse mount point -- unmount it with fusermount -u
if [ -d "$1" ]; then
    D=`realpath "$1"`
    if cat /proc/mounts \
            | sed 's/^[^ ]* //' \
            | fgrep -q "$D fuse"; then
        fusermount -u "$D"
        exit $?
    fi
fi

DEV="$1"

[ -b "$DEV" ] || [ -b "/dev/$DEV" ] && DEV="/dev/$DEV"

if [ -x $HMOUNT ]; then
    $HMOUNT -u "$DEV"
elif [ -x $PMOUNT ]; then
    $PUMOUNT "$DEV"
elif [ -x $UDISKSCTL ]; then
    # TODO: add unmount by mount point
    if [ -b "$DEV" ]; then
        $UDISKSCTL unmount -b "$DEV"
    else
        echo "$1 is not block device"
        exit -1
    fi
else
    /bin/umount "$DEV"
fi
