#!/bin/sh

config='/etc/sysconfig/xserver'
[ ! -s "$config" ] || . "$config"

is_yes() {
	case "$1" in
		yes|Yes|YES|true|True|TRUE|on|On|ON|Y|y|1) return 0 ;;
	esac
	return 1
}

OPTIONS=
check_arg() {
	OPTIONS="$OPTIONS${1:+ $2 $1}"
}

check_yes() {
	if [ -n "$1" ]; then
		is_yes "$1" &&
			OPTIONS="$OPTIONS $2" ||
			OPTIONS="$OPTIONS${3:+ $3}"
	fi
}

check_arg "$AUDIT" -audit
check_arg "$DPI" -dpi
check_arg "$DEPTH" -depth
check_arg "$NOLISTEN" -nolisten
check_arg "$CONNECTION_TIMEOUT" -to
check_arg "$DATA_SPACE_LIMIT" -ld
check_arg "$OPEN_FILES_LIMIT" -lf
check_arg "$STACK_SPACE_LIMIT" -ls
check_yes "$ACCESS_CONTROL" -ac
check_yes "$COREDUMP" -core
check_yes "$IGNORE_ABI" -ignoreABI
check_yes "$DPMS" dpms -dpms
check_yes "$XINERAMA" +xinerama -xinerama
check_yes "$AUTO_REPEAT" r -r
check_yes "$SCREENSAVER_VIDEO" v -v
check_arg "$SCREENSAVER_CYCLE" -p
check_arg "$SCREENSAVER_TIMEOUT" -s

XSERVER_OPTIONS="$OPTIONS"
OPTIONS=

check_arg "$XDMCP_QUERY" -query
check_arg "$XDMCP_INDIRECT" -indirect
check_arg "$XDMCP_MULTICAST" -multicast
check_yes "$XDMCP_BROADCAST" -broadcast
ENABLE_XDMCP="${OPTIONS:+1}"
check_arg "$XDMCP_PORT" -port
check_arg "$XDMCP_FROM" -from

XDMCP_OPTIONS="$OPTIONS"
OPTIONS=

exec X $XSERVER_OPTIONS ${ENABLE_XDMCP:+$XDMCP_OPTIONS} "$@"
