#!/sbin/openrc-run
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

depend() {
	before bootmisc
}

do_hdparm() {
	local e=
	eval e=\$${extra_args}
	[ -z "${args}${all_args}${e}" ] && return 0
	
	if [ -n "${args:=${all_args} ${e}}" ] ; then
		local orgdevice=$(readlink -f "${device}")
		if [ -b "${orgdevice}" ] ; then
			ebegin "Running hdparm on ${device}"
			hdparm ${args} "${device}" > /dev/null
			eend $?
		fi
	fi
}

scan_nondevfs() {
	# non-devfs compatible system
	local device

	for device in /dev/hd* /dev/sd* /dev/cdrom* ; do
		[ -e "${device}" ] || continue
		case "${device}" in
			*[0-9]) continue ;;
			/dev/hd*)  extra_args="pata_all_args" ;;
			/dev/sd*)  extra_args="sata_all_args" ;;
			*)         extra_args="_no_xtra_args" ;;
		esac

		# check that the block device really exists by
		# opening it for reading
		local errmsg= status= nomed=1
		errmsg=$(export LC_ALL=C ; : 2>&1 <"${device}")
		status=$?
		case ${errmsg} in
		    *": No medium found") nomed=0;;
		esac
		if [ -b "${device}" ] && [ "${status}" = "0" -o "${nomed}" = "0" ] ; then
			local conf_var="${device##*/}_args"
			eval args=\$${conf_var}
			do_hdparm
		fi
	done
}

start() {
	if get_bootparam "nohdparm" ; then
		ewarn "Skipping hdparm init as requested in kernel cmdline"
		return 0
	fi

	scan_nondevfs
}
