components/gnome/gtk3/files/gtk3-input-method-cache.sh
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Thu, 22 Sep 2016 16:57:34 -0700
changeset 6968 8acbeef80cf1
permissions -rw-r--r--
16513834 input-method-cache SMF action does not follow GTK3 update

#! /bin/ksh93

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#

PATH=/usr/bin:/usr/sbin

. /lib/svc/share/smf_include.sh

USAGE="Usage: $0 <method>"

if [[ $# -ne 1 ]] ; then
	print "$USAGE" >&2
	exit 2
fi

METHOD="$1"

case $METHOD in
	start|refresh)
		# Continue with rest of script
		;;
	-*)
		print "$USAGE" >&2
		exit 2
		;;
	*)
		print "Invalid method $METHOD" >&2
		exit 2
		;;
esac

for DIR in "" "/64"; do
    MAKE_CACHE="/usr/bin$DIR/gtk-query-immodules-3.0"
    MODULE_DIR="/usr/lib$DIR/gtk-3.0/3.0.0/immodules/"
    CACHE_FILE="/usr/lib$DIR/gtk-3.0/3.0.0/immodules.cache"

    if [[ ! -x "${MAKE_CACHE}" ]] ; then
	print "${MAKE_CACHE} not installed"
	continue
    fi

    if [[ ! -r "${CACHE_FILE}" ]]; then
	RESULT="no cache file"
    elif [[ "${METHOD}" == "refresh" ]]; then
	RESULT="refresh requested"
    elif [[ "${MODULE_DIR}" -nt "${CACHE_FILE}" ]] ; then
	RESULT="directory updated"
    else
	RESULT="$(find ${MODULE_DIR} -newer ${CACHE_FILE})"
    fi

    if [[ -n "$RESULT" ]]; then
	print "updating/creating im modules cache file ($RESULT)"
	umask 022
	${MAKE_CACHE} --update-cache
	if [ $? -ne 0 ]; then
	    print "${MAKE_CACHE} exited with an error while generating the cache file ${CACHE_FILE}"
	    exit $SMF_EXIT_ERR_FATAL
	else
	    print "input method cache installed in ${CACHE_FILE}"
	fi
    fi
done

exit $SMF_EXIT_OK