|
new file 100644
|
|
|
#!/sbin/runscript
|
|
|
|
|
|
depend() {
|
|
|
before xdm
|
|
|
}
|
|
|
|
|
|
# Credit to David Leverton for this function which handily maps a bash array
|
|
|
# structure to positional parameters so existing configs work :)
|
|
|
# We'll deprecate arrays at some point though.
|
|
|
_get_array() {
|
|
|
if [ -n "${BASH}" ] ; then
|
|
|
case "$(declare -p "$1" 2>/dev/null)" in
|
|
|
"declare -a "*)
|
|
|
echo "set -- \"\${$1[@]}\""
|
|
|
return
|
|
|
;;
|
|
|
esac
|
|
|
fi
|
|
|
|
|
|
echo "eval set -- \"\$$1\""
|
|
|
}
|
|
|
|
|
|
checkconfig() {
|
|
|
if [ -z "${replace}" ]; then
|
|
|
eerror "You need to have at least one resolution to replace"
|
|
|
eerror "/etc/conf.d/915resolution"
|
|
|
return 1
|
|
|
fi
|
|
|
|
|
|
# Start with a clean log file
|
|
|
cat /dev/null > ${log:-/dev/null}
|
|
|
|
|
|
return 0
|
|
|
}
|
|
|
|
|
|
start() {
|
|
|
checkconfig || return 1
|
|
|
|
|
|
ebegin "Patching video BIOS with new video modes"
|
|
|
|
|
|
retval=0
|
|
|
first=0
|
|
|
eval $(_get_array replace)
|
|
|
for mode in "$@"; do
|
|
|
# If this is not the first mode, insert a separator in the log
|
|
|
if [ ${first} -ne 0 ]; then
|
|
|
echo "" >> ${log:-/dev/null}
|
|
|
echo "---" >> ${log:-/dev/null}
|
|
|
echo "" >> ${log:-/dev/null}
|
|
|
fi
|
|
|
|
|
|
# Set each mode, and remember the last bad return value if any fail
|
|
|
915resolution ${mode} >> ${log:-/dev/null} || retval=$?
|
|
|
|
|
|
first=1
|
|
|
done
|
|
|
|
|
|
eend ${retval}
|
|
|
}
|