#!/bin/bash
#   userful-storage-eject
#
#   Jason Kim <jason@userful.com>
#
#   Copyright (c) 2002-2007 by Userful Corporation
#
#   Wrapper script for hal eject program to control permission
########################

logfile="/var/log/userful-start.log"
source /etc/userful/os-info

function check_arch()
{
    case $(uname -m) in
        x86_64|ia64)
        echo "lib64"
        ;;
    *)
        echo "lib"
        ;;
    esac
}

# Check INVOKER and Original MOUNTER
if [ "$HAL_METHOD_INVOKED_BY_UID" != "0" -a "$HAL_PROP_INFO_HAL_MOUNT_MOUNTED_BY_UID" != "" ]; then
    if [ "$HAL_PROP_INFO_HAL_MOUNT_MOUNTED_BY_UID" != "$HAL_METHOD_INVOKED_BY_UID" ]; then
	    echo "`date +"%b %d %T"` (eject $HAL_PROP_BLOCK_DEVICE) Permission denied." >> $logfile
		echo "org.freedesktop.Hal.Device.Volume.PermissionDenied" >&2
		echo "The device was mounted by another USER." >&2
		exit 1
    fi
fi

LANG=en_US.UTF-8

read GIVEN_EJECTOPTIONS
GIVEN_EJECTOPTIONS=${GIVEN_EJECTOPTIONS//[^a-zA-Z0-9_=[:space:]]/_}

echo "`date +"%b %d %T"` (eject $HAL_PROP_BLOCK_DEVICE): Given Eject option:$GIVEN_EJECTOPTIONS" >> $logfile

LIB=$(check_arch)

##
## Find hal-storage-eject and run it.
##
HAL_EJECT_COMMAND=
if [[ -e ./hal-storage-eject ]]; then
    HAL_EJECT_COMMAND="./hal-storage-eject"

elif [[ -e ./hal-system-storage-eject ]]; then
    HAL_EJECT_COMMAND="./hal-system-storage-eject"

elif [[ -e /usr/$LIB/hal/scripts/hal-storage-eject ]]; then
    HAL_EJECT_COMMAND="/usr/$LIB/hal/scripts/hal-storage-eject"

elif [[ -e /usr/$LIB/hal/scripts/hal-system-storage-eject ]]; then
    HAL_EJECT_COMMAND="/usr/$LIB/hal/scripts/hal-system-storage-eject "

elif [[ -e /usr/libexec/hal-storage-eject ]]; then
    HAL_EJECT_COMMAND="/usr/libexec/hal-storage-eject"

elif [[ -e /usr/libexec/hal-system-storage-eject ]]; then
    HAL_EJECT_COMMAND="/usr/libexec/hal-system-storage-eject"
fi

echo -e "$GIVEN_EJECTOPTIONS\n" | $HAL_EJECT_COMMAND
