diff options
Diffstat (limited to 'init.d.Linux/consolefont')
| -rwxr-xr-x | init.d.Linux/consolefont | 87 | 
1 files changed, 87 insertions, 0 deletions
| diff --git a/init.d.Linux/consolefont b/init.d.Linux/consolefont new file mode 100755 index 00000000..5401a7b3 --- /dev/null +++ b/init.d.Linux/consolefont @@ -0,0 +1,87 @@ +#!/sbin/runscript +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { +	need localmount +	need keymaps    # sets up terminal encoding scheme +	after hotplug +} + +start() { +	# Forget about any font until we are successful +	rm -rf "${RC_LIBDIR}"/console + +	case "${RC_SYS}" in +		UML|VPS|XEN) return 0 ;; +	esac + +	if [ -z "${CONSOLEFONT}" ] ; then +		ebegin $"Using the default console font" +		eend 0 +		return 0 +	fi + +	local x= param= sf_param= retval=1 + +	# Get additional parameters +	if [ -n "${CONSOLETRANSLATION}" ] ; then +		param="${param} -m ${CONSOLETRANSLATION}" +	fi +	if [ -n "${UNICODEMAP}" ] ; then +		param="${param} -u ${UNICODEMAP}" +	fi + +	# Set the console font +	local errmsg= +	ebegin "Setting user font" +	if [ -x /bin/setfont ] ; then +		# We patched setfont to have --tty support ... +		if [ -n "$(setfont --help 2>&1 | grep -e '--tty')" ] || \ +			[ -n "$(setfont --help 2>&1 | grep -e '-C')" ] +		then +			if [ -n "$(setfont --help 2>&1 | grep -e '--tty')" ] ; then +				sf_param="--tty=" +			else +				sf_param="-C " +			fi +			local ttydev= +			[ -d /dev/vc ] \ +				&& ttydev=/dev/vc/ \ +				|| ttydev=/dev/tty + +			x=1 +			while [ ${x} -le "${RC_TTY_NUMBER}" ] ; do +				/bin/setfont ${CONSOLEFONT} ${param} \ +					${sf_param}/${ttydev}${x} > /dev/null +				retval=$? +				x=$((${x} + 1)) +			done +		else +			/bin/setfont ${CONSOLEFONT} ${param} > /dev/null +			retval=$? +		fi +		errmsg="Failed to set user font" +	else +		retval=1 +		errmsg="/bin/setfont not found" +	fi +	eend ${retval} "${errmsg}" + +	# Store the last font so we can use it ASAP on boot +	if [ ${retval} -eq 0 -a -w "${RC_LIBDIR}" ] ; then +		mkdir -p "${RC_LIBDIR}"/console + +		# Pipe errors to null as maps may not be in use +		/bin/setfont -o "${RC_LIBDIR}"/console/font 2>/dev/null \ +			|| rm -f "${RC_LIBDIR}"/console/font +		/bin/setfont -om "${RC_LIBDIR}"/console/map 2>/dev/null \ +			|| rm -f "${RC_LIBDIR}"/console/map +		/bin/setfont -ou "${RC_LIBDIR}"/console/unimap 2>/dev/null \ +			|| rm -f "${RC_LIBDIR}"/console/unimap +	fi + +	return ${retval} +} + +# vim: set ts=4 : | 
