[PATCH] kbd.init - drugie podejście

Przemysław Białek lobo w chello.pl
Wto, 12 Paź 2004, 19:40:11 CEST


On Tue, Oct 12, 2004 at 07:16:15PM +0200, Jakub Bogusz wrote:
> On Tue, Oct 12, 2004 at 07:08:29PM +0200, Przemysław Białek wrote:
> > --- kbd.init.orig	2004-10-12 14:30:28.863893416 +0200
> > +++ kbd.init	2004-10-12 19:06:32.061904584 +0200
> > @@ -26,12 +26,9 @@
> >  	. /etc/sysconfig/console
> >  
> >  	# Checking if we have framebuffer enabled
> > -	if [ -f /proc/fb ]; then
> > -		# /proc shows as files with size=0, this is workaround
>                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > -		if cat /proc/fb | grep -q "."; then FB=yes; fi
> > -	fi
> > -
> > -	if [ -n "$SVGATEXTMODE" ]; then
> > +	if [ -s /proc/fb ]; then
> > +		FB=y
> > +	elif [ -n "$SVGATEXTMODE" ]; then
> 
> $ test -s /proc/fb ; echo $?
> 1
> $ cat /proc/fb
> 0 3Dfx Voodoo5
> 
> inna rzecz, że niektóre fb pozostawiają pusty /proc/fb - np. pm2,
> przynajmniej tak było na jakichś starszych 2.4.x na alphie.
> Nie wiem jak teraz, bo sprzęt poszedł do szafy dawno temu.
> 
Tutaj widziałem ten komentarz, ale go źle zrozumiałem :). Wydawało mi
się, że chodzi o to, że /proc/fb jest pusty, w przypadku, gdy jest
załadowany podsystem fb, ale nie ma żadnego aktywnego sterownika.
Już cofam ten kawałek. W załączeniu poprawiony patch. Dzieki.

-- 
Pozdrawiam
Przemysław Białek

-------------- następna część ---------
--- kbd.init.orig	2004-10-12 14:30:28.863893416 +0200
+++ kbd.init	2004-10-12 19:38:16.515383648 +0200
@@ -29,9 +29,7 @@
 	if [ -f /proc/fb ]; then
 		# /proc shows as files with size=0, this is workaround
 		if cat /proc/fb | grep -q "."; then FB=yes; fi
-	fi
-
-	if [ -n "$SVGATEXTMODE" ]; then
+	elif [ -n "$SVGATEXTMODE" ]; then
 		run_cmd "Setting Text Mode $SVGATEXTMODE" SVGATextMode $SVGATEXTMODE
 	fi
 
@@ -44,46 +42,35 @@
 	    ;;
 	esac
 
+	if [ -e /dev/.devfsd -a -d /dev/vc ]; then
+		DEVICES="`cd /dev/vc; ls`"
+		pattern="/dev/vc/"
+	else
+		DEVICES="`cat /etc/inittab | grep '^[0-9]*:' | cut -f1 -d :`"
+		pattern="/dev/tty"
+	fi
+
+	[ -z "$SET_FONT_TERMINALS" ] && SET_FONT_TERMINALS="$DEVICES"
+
 	if [ -n "$CONSOLEFONT" ]; then
 		CMD="setfont -m ${CONSOLEMAP:-trivial} $CONSOLEFONT"
 		show "Loading console font and map"
 		busy
 
 		# don't initialize on multiple terminals if we use fbset
-		# (assume that, in this case fb is loaded as a module)
-		if [ ! -z "$FB" ]; then
-			# Check for devfs (workaround: -a option don't work at all)
-			if [ -d /dev/vc ]; then
-				pattern="s/\/dev\/vc\///g"
-			else
-				pattern="s/\/dev\/tty//g"
-			fi
-
+		# (assume that, in this case fb is initialized)
+		if [ -n "$FB" ]; then
 			# save old tty number
-			tty=`/usr/bin/tty | sed $pattern`
-
-			# check if devfs (workaround: -a option don't work at all)
-			if [ -d /dev/vc ]; then
-				DEVICES="`ls /dev/vc/* | sed 's|/dev/vc/||g'`"
-			else
-				DEVICES="`cat /etc/inittab | grep '^[0-9]*:' | cut -f1 -d :`"
-			fi
-
-			[ -z "$SET_FONT_TERMINALS" ] && SET_FONT_TERMINALS="$DEVICES"
+			tty=`/usr/bin/tty`
+			tty=${tty##$pattern}
 
 			for cons in $SET_FONT_TERMINALS; do
 				/usr/bin/open -c $cons -s -w -- $CMD
-				if [ "$NUM_LOCK" ]; then
-					if [ $NUM_LOCK = "on" ]; then
-						/usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D +num
-					else
-						/usr/bin/open -c $cons -s -w -- /usr/bin/setleds -D -num
-					fi
-				fi
 			done
 
+			# restore old tty number
 			if [ "$tty" = "/dev/console" ]; then
-			    	tty=1
+				tty=1
 			fi
 			/usr/bin/switchto $tty
 		else
@@ -96,6 +83,21 @@
 	fi
 	run_cmd "Enabling SAK sequence" /bin/sh -c "echo Control Alt keycode 101 = SAK | loadkeys"
 
+	if [ -n "$NUM_LOCK" ]; then
+		if is_yes "$NUM_LOCK"; then
+			show "Setting up numlock status (on)"
+			NUMLOCK_CMD="+num"
+		else
+			show "Setting up numlock status (off)"
+			NUMLOCK_CMD="-num"
+		fi
+		busy
+		for cons in $DEVICES; do
+			/usr/bin/setleds -D $NUMLOCK_CMD < "$pattern$cols"
+		done
+		ok
+	fi
+
 	power_option=""
 	if [ "$POWER_SAVE" ]; then
 		if [ "$BLANK_TIME" ]; then


Więcej informacji o liście dyskusyjnej pld-devel-pl