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

devicename=$(basename $1)
fstype=$2
if [ -z "$fstype" ]; then
    fstype="$ID_FS_TYPE"
    if [ -z "$fstype" ]; then
        # fstype unknown, do nothing
	exit 1
    fi
fi

BASEDEV=$(echo $devicename | tr -d "0-9")

if [ ${BASEDEV} = "fd" ]; then
    DEVNUM=$(echo $devicename | tr -d "fd")
    LABEL="floppy${DEVNUM}"
    fstype="vfat"
else
    export $(udevinfo --query=env --name=$devicename)
    LABEL=${ID_FS_LABEL_SAFE}
    if [ -z ${LABEL} ]; then
	LABEL=$(echo ${ID_BUS}${ID_TYPE}-$devicename |tr " " "_")
    fi
fi

# make sure the root we mount to exists
ROOT=/tmp/drives
[ -d $ROOT ] ||	mkdir ${ROOT}

# invent $MOUNTPOINT
MOUNTPOINT=$ROOT/$LABEL
[ -d $MOUNTPOINT ] || mkdir ${MOUNTPOINT}

BLOCKS=${3:-0}
SIZE=$((${BLOCKS}*512/1048576))
DESCRIPTION="${ID_VENDOR}"
[ -f /etc/udev/fs-encoding.conf ] && . /etc/udev/fs-encoding.conf
CODEPAGE=${CODEPAGE:-866}
IOCHARSET=${IOCHARSET:-utf8}
if [ "${ID_TYPE}" = "cd" ]; then
    MOUNTOPTS="ro"
    if [ -n "${ID_CDROM_DVD}" ]; then
	DESCRIPTION="DVD"
    else
	DESCRIPTION="CD"
    fi
    DESCRIPTION="${DESCRIPTION}-ROM"
    if [ "${IOCHARSET}" = "utf8" ]; then
	MOUNTOPTS="${MOUNTOPTS},utf8"
    else
	MOUNTOPTS="${MOUNTOPTS},iocharset=${IOCHARSET}"
    fi
    echo "/dev/$devicename ${MOUNTPOINT} auto ${MOUNTOPTS} 0 0" >> /tmp/fstab
    echo "AddCdromDrive|${LABEL}|/dev/${devicename}|${DESCRIPTION}" > /tmp/lbus.fifo
else
    REMOVABLE=1
    MOUNTOPTS="rw,noatime"
    if [ ${BASEDEV} = "fd" ]; then
	DESCRIPTION="Floppy"
	MOUNTOPTS="${MOUNTOPTS},codepage=866,utf8"
    else
	if [ "${ID_BUS}" = "usb" ]; then
	    DESCRIPTION="USB DISK ${ID_VENDOR}"
	    REMOVABLE=1
	elif [ "${ID_BUS}" = "scsi" -a "${ID_VENDOR}" = "ATA" ]; then
	    DESCRIPTION="SATA DISK"
	else
	    DESCRIPTION="ATA DISK"
	fi
	DESCRIPTION="${DESCRIPTION} ${ID_MODEL}"
	if [ "${fstype}" = "vfat" -o "${fstype}" = "fat" ]; then
	    MOUNTOPTS="${MOUNTOPTS},codepage=${CODEPAGE}"
	fi
	if [ "${fstype}" = "iso9660" -o "${fstype}" = "ntfs" -o "${fstype}" = "vfat" -a "${IOCHARSET}" = "utf8" ]; then
	    MOUNTOPTS="${MOUNTOPTS},utf8"
	elif [ "${fstype}" = "fat" -o "${fstype}" = "jfs" -o "${fstype}" = "iso9660" -o "${fstype}" = "vfat" -o "${fstype}" = "udf" ]; then
	    MOUNTOPTS="${MOUNTOPTS},iocharset=${IOCHARSET}"
	elif [ "${fstype}" = "ntfs" ]; then
	    MOUNTOPTS="${MOUNTOPTS},nls=${IOCHARSET}"
	fi
    fi
    echo "/dev/$devicename ${MOUNTPOINT} ${fstype} ${MOUNTOPTS} 0 0" >> /tmp/fstab
    echo "AddBlockDevice|${LABEL}|/dev/${devicename}|${REMOVABLE}|${SIZE}|${DESCRIPTION}" > /tmp/lbus.fifo
fi
