--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/desktop/desktop-cache/files/gconf-cache Wed Apr 27 22:34:47 2016 -0700
@@ -0,0 +1,188 @@
+#!/bin/ksh -p
+#
+# Copyright (c) 2008, 2011, 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, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+#
+# 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
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+#
+###########################################################################
+#
+
+PATH=/usr/bin:/usr/sbin
+
+. /lib/svc/share/smf_include.sh
+
+USAGE="Usage: $0 { start | refresh }"
+FIND_NEWER=/usr/share/desktop-cache/find_newer
+
+if [ $# -ne 1 ] ; then
+ echo $USAGE
+ exit 2
+fi
+
+#
+# IF the gconf cache exist then :
+# find schema files newer than the cache
+# ELSE
+# get all schema file
+#
+# generate/merge schema files in the gconf cache
+#
+GCONFDIR="/etc/gconf"
+start_gconf_cache ()
+{
+test -w $GCONFDIR || {
+ echo "$GCONFDIR is not writable, skipping."
+ return
+}
+if [ -a "/etc/gconf/gconf.xml.defaults/%gconf-tree.xml" ]; then
+ SCHEMAS=`${FIND_NEWER} -f -m -c --name '*.schemas' \
+ --newer /etc/gconf/gconf.xml.defaults/%gconf-tree.xml \
+ /etc/gconf/schemas 2>/dev/null`
+ ENTRIES=`${FIND_NEWER} -f -m -c --name '*.entries' \
+ --newer /etc/gconf/gconf.xml.defaults/%gconf-tree.xml \
+ /etc/gconf/schemas 2>/dev/null`
+else
+ SCHEMAS=`/usr/bin/find /etc/gconf/schemas -name '*.schemas' ! -type d`
+ ENTRIES=`/usr/bin/find /etc/gconf/schemas -name '*.entries' ! -type d`
+fi
+
+if [ -n "$SCHEMAS" ]; then
+ test -x /usr/bin/gconftool-2 || {
+ echo "gconftool-2 not installed"
+ return
+ }
+ echo "Updating GConf cache for the following schemas:"
+ echo "$SCHEMAS" | /bin/sed -e 's/^/ /'
+ # redirect stdout to /dev/null because gconftool is too verbose
+ # errors are printed to stderr
+ GCONF_CONFIG_SOURCE=xml:merged:/etc/gconf/gconf.xml.defaults \
+ /usr/bin/gconftool-2 --makefile-install-rule $SCHEMAS > /dev/null
+ if [ $? -ne 0 ]; then
+ echo "gconftool-2 exited with an error while installing schemas"
+ exit $SMF_EXIT_ERR_FATAL
+ else
+ echo "Schema files merged in the GConf cache"
+ fi
+fi
+
+if [ -n "$ENTRIES" ]; then
+ test -x /usr/bin/gconftool-2 || {
+ echo "gconftool-2 not installed"
+ return
+ }
+ echo "Updating GConf cache for the following entries:"
+ echo "$ENTRIES" | /bin/sed -e 's/^/ /'
+ # redirect stdout to /dev/null because gconftool is too verbose
+ # errors are printed to stderr
+ /usr/bin/gconftool-2 --direct \
+ --config-source=xml:merged:/etc/gconf/gconf.xml.defaults \
+ --load $ENTRIES > /dev/null
+ if [ $? -ne 0 ]; then
+ echo "gconftool-2 exited with an error while adding entries"
+ exit $SMF_EXIT_ERR_FATAL
+ else
+ echo "Entries merged into the GConf cache"
+ fi
+fi
+}
+
+refresh_gconf_cache ()
+{
+test -w $GCONFDIR || {
+ echo "$GCONFDIR is not writable, skipping."
+ return
+}
+if [ -a "/etc/gconf/gconf.xml.defaults/%gconf-tree.xml" ]; then
+ SCHEMAS=`/usr/bin/find /etc/gconf/schemas ! -type d -follow \
+ -name '*.schemas' 2>/dev/null`
+ ENTRIES=`/usr/bin/find /etc/gconf/schemas ! -type d -follow \
+ -name '*.entries' 2>/dev/null`
+else
+ SCHEMAS=`/usr/bin/find /etc/gconf/schemas -name '*.schemas' ! -type d`
+ ENTRIES=`/usr/bin/find /etc/gconf/schemas -name '*.entries' ! -type d`
+fi
+
+if [ -n "$SCHEMAS" ]; then
+ test -x /usr/bin/gconftool-2 || {
+ echo "gconftool-2 not installed"
+ return
+ }
+ echo "Updating GConf cache for the following schemas:"
+ echo "$SCHEMAS" | /bin/sed -e 's/^/ /'
+ # redirect stdout to /dev/null because gconftool is too verbose
+ # errors are printed to stderr
+ GCONF_CONFIG_SOURCE=xml:merged:/etc/gconf/gconf.xml.defaults \
+ /usr/bin/gconftool-2 --makefile-install-rule $SCHEMAS > /dev/null
+ if [ $? -ne 0 ]; then
+ echo "gconftool-2 exited with an error while installing schemas"
+ exit $SMF_EXIT_ERR_FATAL
+ else
+ echo "Schema files merged in the GConf cache"
+ fi
+fi
+
+if [ -n "$ENTRIES" ]; then
+ test -x /usr/bin/gconftool-2 || {
+ echo "gconftool-2 not installed"
+ return
+ }
+ echo "Updating GConf cache for the following entries:"
+ echo "$ENTRIES" | /bin/sed -e 's/^/ /'
+ # redirect stdout to /dev/null because gconftool is too verbose
+ # errors are printed to stderr
+ /usr/bin/gconftool-2 --direct \
+ --config-source=xml:merged:/etc/gconf/gconf.xml.defaults \
+ --load $ENTRIES > /dev/null
+ if [ $? -ne 0 ]; then
+ echo "gconftool-2 exited with an error while adding entries"
+ exit $SMF_EXIT_ERR_FATAL
+ else
+ echo "Entries merged into the GConf cache"
+ fi
+fi
+}
+
+METHOD=$1
+
+case "$METHOD" in
+ 'start')
+ # Continue with rest of script
+ ;;
+ 'refresh')
+ ;;
+ -*)
+ echo $USAGE
+ exit 2
+ ;;
+ *)
+ echo "Invalid method $METHOD"
+ exit 2
+ ;;
+esac
+
+${METHOD}_gconf_cache
+
+exit $SMF_EXIT_OK