Group :: Rede/Acesso Remoto
RPM: lbuscd
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
#!/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"
# fstype unknown, do nothing
[ -n "$fstype" ] || exit 1
fi
[ "$fstype" != "swap" ] || exit 0
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}"
ENC_CONF="/etc/udev/fs-encoding.conf"
[ -f "$ENC_CONF" ] && . "$ENC_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} udf,iso9660,cdfs ${MOUNTOPTS} 0 0" >> /tmp/fstab
echo "AddCdromDrive|${LABEL}|/dev/${devicename}|${DESCRIPTION}" > /tmp/lbus.fifo
else
REMOVABLE=0
MOUNTOPTS="rw,noatime"
if [ ${BASEDEV} = "fd" ]; then
DESCRIPTION="Floppy"
MOUNTOPTS="${MOUNTOPTS},codepage=866,utf8"
else
case "$ID_BUS" in
usb)
DESCRIPTION="USB DISK ${ID_VENDOR}"
REMOVABLE=1
;;
scsi)
[ "x$ID_VENDOR" = "xATA" ] && DESCRIPTION="SATA DISK" || DESCRIPTION="SCSI DISK"
;;
ata)
DESCRIPTION="ATA DISK"
;;
*)
DESCRIPTION="DISK"
;;
esac
DESCRIPTION="${DESCRIPTION} ${ID_MODEL}"
if [ "${fstype}" = "vfat" -o "${fstype}" = "fat" ]; then
MOUNTOPTS="${MOUNTOPTS},codepage=${CODEPAGE}"
fi
if [ "${fstype}" = "fat" -o "${fstype}" = "jfs" -o "${fstype}" = "iso9660" -o "${fstype}" = "vfat" -o "${fstype}" = "udf" ]; then
MOUNTOPTS="${MOUNTOPTS},iocharset=${IOCHARSET}"
fi
if [ "${fstype}" = "ntfs" ] && grep -q '^fuse[[:blank:]]' /proc/modules; then
if [ -x /sbin/mount.fuse.ntfs ]; then
fstype="fuse.ntfs"
elif [ -x /sbin/mount.ntfs-3g ]; then
fstype="ntfs-3g"
fi
fi
case "${fstype}" in
ntfs)
MOUNTOPTS="${MOUNTOPTS},nls=${IOCHARSET}"
;;
fuse.ntfs|ntfs-3g)
MOUNTOPTS="${MOUNTOPTS},silent,umask=000,locale=en_US.UTF-8"
;;
esac
fi
echo "/dev/$devicename ${MOUNTPOINT} ${fstype} ${MOUNTOPTS} 0 0" >> /tmp/fstab
echo "AddBlockDevice|${LABEL}|/dev/${devicename}|${REMOVABLE}|${SIZE}|${DESCRIPTION}" > /tmp/lbus.fifo
fi