File diff 000000000000 → 000000000000
sys-apps/915resolution/files/initd-r1
Show inline comments
 
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}
 
}