#!/bin/sh
########################################################################
#
# Description : Input devices
#
# Authors     : Based on Open Suse Udev Rules
#               kay.sievers@suse.de
#
# Adapted to  : Jim Gifford
# LFS
#
# Version     : 00.00
#
# Notes       :
#
########################################################################

. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/storage

test "$HOTPLUG_MOUNT_FSTAB" != yes && exit

# Handle only partitions of sd
case "$DEVNAME" in
	/dev/sd*|/dev/hd*) : ;;
	*) exit 0 ;;
esac
case "$DEVNAME" in
	*sd[a-z]|*hd[a-z]) exit 0 ;;
esac


NODES=$DEVNAME
for sl in `udevinfo -q symlink -p $DEVPATH`; do
	NODES="$NODES /dev/$sl"
done
boot_mesg "Avilable nodes: $NODES"

NODE=
declare -i FSCK=0
while read dn mp fs opts dump fsck x; do
	for n in $NODES; do
		if [ "$n" == "$dn" ] ; then
			case $opts in
				*hotplug*) : ;;
				*) exit 0 ;;
			esac
			NODE="$n"
			FSCK="$fsck"
			boot_mesg "matching line for $DEVNAME:"
			boot_mesg "$dn $mp $fs $opts $dump $fsck $x"
			break 2
		fi
	done
done < /etc/fstab

if [ "$HOTPLUG_CHECK_FILESYSTEMS" == yes -a "$FSCK" -gt 0 ] ; then
	MESSAGE="`fsck -a $DEVNAME`"
	RET=$?
	boot_mesg "$MESSAGE"
	case $RET in
		0|1) : ;;
		2|3) 
			boot_mesg "Please unplug device $DEVNAME, and plug it again" 
			logger -t $0 "fsck for '$DEVNAME' failed. Will not mount it."
			exit 0
			;;
		*) 
			err_mesg "fsck failed on $DEVNAME. Please fsck filesystem manually." 
			logger -t $0 "fsck for '$DEVNAME' failed. Will not mount it."
			exit 1
			;;
	esac
fi


if [ -n "$NODE" ] ; then
	MESSAGE="`mount -av "$NODE"`"
	test $? != 0 && logger -t $0 "Could not mount '$DEVNAME'."
	boot_mesg "$MESSAGE"
fi
