]> git.pld-linux.org Git - packages/fbset.git/blob - fbset.init
- after doing our job switch to last used terminal instead of tty1
[packages/fbset.git] / fbset.init
1 #!/bin/sh
2 # $Id$
3 #
4 # fbset:        Sets up fbcon video modes.
5 #
6 #
7 # chkconfig:    2345 69 31
8 # description:  fbset is a utility with which fbcons video modes can be read \
9 #               and changed
10 #
11 # config:       /etc/sysconfig/fbset
12
13 # Source function library
14 . /etc/rc.d/init.d/functions
15
16 # Get service config
17 if [ -f /etc/sysconfig/fbset ]; then
18         . /etc/sysconfig/fbset
19 fi
20
21 function try_load
22 {
23         if [ -n "${FBMODULE}" ]; then
24                 _modprobe single $FBMODULE
25         else
26                 exit 0
27         fi
28 }
29
30 # Setting default depth
31 if [ -n "${DEPTH}" ]; then
32         DEPTH_options="-depth ${DEPTH}"
33 fi
34
35 if [ -z "${FBDEV_NUM}" ]; then
36         FBDEV_NUM=0
37 fi
38
39 # See how we were called.
40 case "$1" in
41   start)
42         # Check if service is already running?
43         if [ ! -f /var/lock/subsys/fbset ]; then
44
45                 # Check if we have framebuffer in kernel.
46                 if [ -f /proc/fb ]; then
47                         # /proc files show as files with size=0, this is a workaround.
48                         cat /proc/fb | grep -q "." || try_load
49                 else
50                         # if not, then try to load specified kernel module
51                         try_load
52                 fi
53
54                 if [ -n "${FBMODE_default}" ]; then
55                         show "Setting default video mode"
56                         busy
57
58                         # check if devfs (workaround: -a option don't work at all)
59                         if [ -d /dev/vc ]; then
60                                 if [ -z "$FBTERMINALS" ]; then
61                                         FBTERMINALS=\
62                                           "`ls /dev/vc/* | sed 's|/dev/vc/||g'`"
63                                 fi
64                                 FBDEV=`echo /dev/fb/${FBDEV_NUM}`
65                                 pattern="s/\/dev\/vc\///g"
66                         else
67                                 if [ -z "$FBTERMINALS" ]; then
68                                         FBTERMINALS=\
69                                           "`cat /etc/inittab | grep '^[0-9]*:' | cut -f1 -d:`"
70                                 fi
71                                 FBDEV=`echo /dev/fb${FBDEV_NUM}`
72                                 pattern="s/\/dev\/tty//g"
73                         fi
74
75                         # save old tty number
76                         tty=`/usr/bin/tty | sed $pattern`
77
78                         for cons in $FBTERMINALS; do
79                                 /usr/bin/con2fb $FBDEV $cons
80                                 /usr/bin/switchto $cons
81                                 /usr/bin/fbset -fb \
82                                   $FBDEV ${DEPTH_options} $FBMODE_default \
83                                   0<>/dev/tty$cons >&0 2>&0
84                         done
85                         [ $tty = "/dev/console" ] && tty=1
86                         /usr/bin/switchto $tty
87                         ok
88                 fi
89                 touch /var/lock/subsys/fbset
90         else
91                 msg_already_running fbset
92         fi
93         ;;
94   stop)
95         if [ -f /var/lock/subsys/fbset ]; then
96                 rm -f /var/lock/subsys/fbset
97         else
98                 msg_not_running fbset
99         fi
100         ;;
101   status)
102         # Check if we have framebuffer in kernel.
103         if [ -f /proc/fb ]; then
104                 # /proc files show as files with size=0, this is a workaround.
105                 cat /proc/fb | grep -q "." && nls "Frame buffer present." && exit 0
106                 nls "Frame buffer not present."
107                 exit 3
108         else
109                 nls "Frame buffer not present."
110                 exit 3
111         fi
112         ;;
113   restart|force-reload)
114         $0 stop
115         $0 start
116 #       exit $?
117         ;;
118   *)
119         msg_usage "$0 {start|stop|restart|force-reload|status}"
120         exit 3
121 esac
122
123 exit 0
This page took 0.083839 seconds and 4 git commands to generate.