#!/bin/sh
# add_fstab_entry
# place in /lib/udev
# $1 = devicename
# $2 = fstype

DEVICENAME=$(basename $1)
FSTYPE=$2
export $(udevinfo -qenv -n ${DEVICENAME})
ROOT=/var/run/drives
FSTAB=/var/run/ltspfs_fstab

# Make sure we have a valid FSTYPE
[ -z "${FSTYPE}" ] && FSTYPE="${ID_FS_TYPE}"   # Use udevinfo ID_FS_TYPE
[ -z "${FSTYPE}" ] && exit 1                   # That's empty too, die.

LABEL=${ID_FS_LABEL_SAFE}
BASEDEV=${DEVICENAME%%[0-9]*}

[ "${BASEDEV}" = "fd" ] && LABEL="floppy${DEVICENAME##fd}"
[ "${BASEDEV}" = "cdrom" ] && LABEL="cdrom"
[ -z "${LABEL}" ] && LABEL="${ID_BUS}${ID_TYPE}-${DEVICENAME}"

# Invent $MOUNTPOINT
MOUNTPOINT=$ROOT/$LABEL
mkdir -p ${MOUNTPOINT}

echo "/dev/${DEVICENAME} ${MOUNTPOINT} ${FSTYPE} defaults 0 0" >> ${FSTAB}

# Mount in the client session, if logged in.
for LDM_SOCKET in /var/run/ldm_socket_*; do
    if [ -S ${LDM_SOCKET} ]; then
        SERVER=${LDM_SOCKET##*_}
        SSH_OPTS="-X"
        # see if we have a command with DISPLAY matching our socket
        IS_DIRECTX=$(pgrep -f -l ${LDM_SOCKET}.*DISPLAY)

        unset DISPLAY_INFO
        # get the DISPLAY info for ltspfsmounter
        if [ -n "${IS_DIRECTX}" ];then
            unset SSH_OPTS
            for line in $IS_DIRECTX ; do
                case $line in
                    DISPLAY*)
                        DISPLAY_INFO="${line}"
                    ;;
                esac
            done
        fi

        # ltspfs needs access to the X display
        /usr/bin/ssh $SSH_OPTS -S ${LDM_SOCKET} ${SERVER} \
             "$DISPLAY_INFO /usr/sbin/ltspfsmounter ${MOUNTPOINT} add"
    fi
done
