#!/bin/sh

# Copyright (C) 2005, Kay Sievers <kay.sievers@vrfy.org>
# Copyright (C) 2006, David Zeuthen <david@fubar.dk>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2.

# Check for environment variables
if [ -z "$HAL_PROP_BLOCK_DEVICE" ] || [ -z "$HAL_PROP_INFO_UDI" ] ; then
    echo "org.freedesktop.Hal.Device.UnknownError" >&2
    echo "Missing or empty environment variable(s)." >&2
    echo "This script should be started by hald." >&2
    exit 1
fi

MOUNT_POINT="$HAL_PROP_INFO_HAL_MOUNT_CREATED_MOUNT_POINT"
if [ -z "$MOUNT_POINT" ]; then
    MOUNT_POINT="$HAL_PROP_VOLUME_MOUNT_POINT"
    if [ -z "$MOUNT_POINT" ]; then
	echo "org.freedesktop.Hal.Device.Volume.NotMounted" >&2
	echo "Cannot figure out where device is mounted." >&2
	exit 1
    fi
fi

if [ "$HAL_PROP_STORAGE_MEDIA_CHECK_ENABLED" != "false" ]; then
    if [ "$HAL_PROP_VOLUME_IS_MOUNTED" != "true" ]; then
	echo "org.freedesktop.Hal.Device.Volume.NotMounted" >&2
	echo "Device is not mounted." >&2
	exit 1
    fi
fi

if [ "$HAL_METHOD_INVOKED_BY_UID" != "0" ]; then
    if [ "$HAL_METHOD_INVOKED_BY_UID" != "$HAL_PROP_INFO_HAL_MOUNT_MOUNTED_BY_UID" ]; then
	UID_MOUNTED="$HAL_PROP_INFO_HAL_MOUNT_MOUNTED_BY_UID"
	if [ -z "$UID_MOUNTED" ]; then
	    UID_MOUNTED="UNKNOWN"
	fi
	echo "org.freedesktop.Hal.Device.Volume.PermissionDenied" >&2
	echo "Volume mounted by uid $UID_MOUNTED cannot be unmounted by uid $HAL_METHOD_INVOKED_BY_UID." >&2
	exit 1
    fi
fi

# TODO: need to select storage-[fixed|removable][-change-uid]
#POLICY=hal-storage-fixed-mount
#if [ "$HAL_METHOD_INVOKED_BY_UID" != "0" ] ; then
#    RESULT=$(polkit-is-privileged --privilege $POLICY --user $HAL_METHOD_INVOKED_BY_UID 2>&1)
#    IS_PRIVILEGED=$?
#    if [ "$IS_PRIVILEGED" != "0" ] ; then
#	echo org.freedesktop.Hal.Device.PermissionDeniedByPolicy >&2
#	echo $POLICY refused uid $HAL_METHOD_INVOKED_BY_UID >&2
#	exit 1
#    fi
#fi

export MOUNT_POINT

if [ -n "$HALD_UNAME_S" -a -x $0-$HALD_UNAME_S ]; then
    exec $0-$HALD_UNAME_S $@
else
    echo "org.freedesktop.Hal.Device.UnknownError" >&2
    echo "No back-end for your operating system" >&2
    exit 1
fi
