blob: 4485f914788ea36755937003432c658c9044c055 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
install() {
(
. /etc/conf.d/splash
if /bin/mountpoint -q /lib/splash/cache; then
/bin/umount /lib/splash/cache
fi
# Add the helper
add_binary /sbin/fbcondecor_helper
# Add the daemon for early start
if [[ $SPLASH_DAEMON = early ]]; then
add_binary /sbin/fbsplashd.static
fi
# Add a clean config file avoiding errors when running the hook
file=$( /usr/bin/mktemp )
for var in SPLASH_INIT_MESSAGE SPLASH_MODE_REQ SPLASH_THEME SPLASH_TTY \
SPLASH_AUTOVERBOSE SPLASH_EFFECTS SPLASH_TEXTBOX
do
eval value=\"\$$var\"
[ -n "$value" ] && echo $var="'$value'"
done >|$file
add_file $file /etc/conf.d/splash
# List file paths contained in given Fbsplash theme cfg file
_get_cfg_files() {
< "$1" /bin/sed -re '
# convert all whitespace into single blanks
s,[[:space:]]+, ,g ; t L1
:L1
# drop comments, grouping directives and blank lines
/^ *([#<]|$)/ d
# get a filepath or drop
s,.*[ =]([^ ]*/[^ ]+).*,\1, ; t ; d
' | /usr/bin/sort -u
}
# Check if cfg file name or path
_match_cfg() {
[[ "$1" =~ (^|/)[0-9]+x[0-9]+\.cfg$ ]]
}
# Add non-cfg files in given dir
_add_non_cfg_files() {
local file dir="$1"
for file in $( /bin/ls "$dir" ); do
if [ -f "$dir/$file" ]; then
_match_cfg "$file" || add_file "$dir/$file"
fi
done
}
# Add global non-cfg files
_add_non_cfg_files /etc/splash
# Add themes
dirs=""
for theme in ${SPLASH_THEMES[*]}; do # string list and array allowed
[ ${theme:0:1} = / ] || theme=/etc/splash/$theme
if [ -f $theme ]; then
if ! _match_cfg $theme; then
err "Not a valid theme cfg file name: $theme"
continue
fi
add_file $theme || continue
dir=$( dirname $theme )
# Add non-cfg files in theme dir
_add_non_cfg_files $dir
# Add files refered in cfg file by paths
for file in $( _get_cfg_files $theme ); do
if [ ${file:0:1} = / ]; then
add_file $file
continue
fi
# Path may be relative to theme-dir or to /etc/splash
[ -e $dir/$file -o ! -f /etc/splash/$file ] && add_file $dir/$file
[ -e /etc/splash/$file -o ! -f $dir/$file ] && add_file /etc/splash/$file
done
elif [ -d $theme ]; then
dir=$theme
add_full_dir $dir
else
err "Theme not found: $theme"
continue
fi
if [[ " "$dirs" " != *" "$dir" "* ]]; then
dirs+=" "$dir
fi
done
for dir in $dirs; do
# Add the rc_init-pre script if we have one
# Currently this just prevents early daemon start for the theme
if [[ $SPLASH_DAEMON = early && -x $dir/scripts/rc_init-pre ]]; then
add_file $dir/scripts/rc_init-pre || continue
echo "WARNING: rc_init-pre script found - no early daemon with '${dir##*/}'!" >&2
fi
done
)
SCRIPT="fbsplash"
}
help() {
cat<<HELPEOF
This hook adds the FBconDecor helper and Fbsplash themes and maybe the
Fbsplash daemon as specified in /etc/conf.d/splash. Put it after udev
for early daemon start or when using a FBconDecor kernel.
HELPEOF
}
#EOF
|