open-src/data/ogl-select/ogl-select
changeset 970 272328fe1b4a
child 1155 4ef9f4d0b8de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/data/ogl-select/ogl-select	Fri Jul 02 21:03:57 2010 -0700
@@ -0,0 +1,138 @@
+#!/bin/ksh93
+#
+# Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+#
+
+. /lib/svc/share/smf_include.sh
+
+USAGE="Usage: $0 <method>"
+
+PATH=/usr/bin:/usr/sbin
+
+DRIVER=""
+OGL_SELECT_DIR=/lib/opengl/ogl_select
+
+#######
+#
+# Default values
+# 
+# Users must not modify this script to change them - change via SMF properties
+#
+
+
+# Default to MESA
+VENDOR="MESA"
+
+METHOD=$1
+if [[ $# -lt 1 ]] ; then
+	print $USAGE
+	exit $SMF_EXIT_ERR_FATAL
+fi
+shift
+
+case $METHOD in
+	start)
+		# Continue with rest of script
+		;;
+	stop)
+		# Nothing to do
+		exit $SMF_EXIT_OK
+		;;
+	*)
+		print "Invalid method $METHOD"
+		exit $SMF_EXIT_ERR_FATAL
+		;;
+esac
+
+if [[ "$1" != "" ]] ; then
+	print $USAGE
+	exit $SMF_EXIT_ERR_FATAL
+fi
+
+getprop() {
+	PROPVAL=""
+	# The "" instance is to get the properties from the base service 
+	# without any instance specifier
+	svcprop -q -p $1 application/opengl/ogl-select
+	if [[ $? -eq 0 ]] ; then
+		PROPVAL=$(svcprop -p $1 application/opengl/ogl-select)
+		if [[ "$PROPVAL" == "\"\"" ]] ; then
+			PROPVAL=""
+		fi
+		return
+	fi
+	return
+}
+
+readregistry()
+{
+	while read DRIVERTMP VENDORTMP; do
+		case "$DRIVERTMP" in
+		'#'* | '')	# Ignore comments or empty lines
+			continue ;;
+		esac
+		if [[ "$DRIVERTMP" = "$DRIVER" && "$VENDORTMP" != '' ]]; then
+			VENDOR="$VENDORTMP"
+		fi
+	done
+}
+
+# Get the driver attached to the console
+DRIVER="$(/usr/bin/constype)"
+
+REGISTRY=/tmp/ogl_select$$
+if [[ -e ${REGISTRY} ]]; then
+	rm -f ${REGISTRY}
+fi
+touch ${REGISTRY}
+
+for x in ${OGL_SELECT_DIR}/*_vendor_select
+do
+	if [[ -x "$x" ]]; then
+		($x identify >> ${REGISTRY})
+	fi
+done
+ 
+if [[ -f ${REGISTRY} ]]; then
+	readregistry < ${REGISTRY}
+fi
+
+# Check for user override of vendor
+getprop options/vendor
+if [[ "$PROPVAL" != "" && "$PROPVAL" != "notset" ]] ; then
+	VENDOR="${PROPVAL}"
+fi
+
+# Force the vendor name to lower case
+VENDOR=$(print ${VENDOR} | /usr/bin/tr "[A-Z]" "[a-z]")
+
+# Build vendor script name
+SELECT_SCRIPT="${OGL_SELECT_DIR}/${VENDOR}_vendor_select"
+if [[ ! -x "${SELECT_SCRIPT}" ]]; then
+        print $0 "Can't execute vendor select script:" $SELECT_SCRIPT
+        exit $SMF_EXIT_ERR_FATAL
+fi
+
+($SELECT_SCRIPT)
+
+exit $SMF_ERR_OK