#!/bin/bash # # # # Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. # . /lib/svc/share/smf_include.sh PATH=/usr/bin TEXINFO_DATA_DIR="/var/info" function readlink() { while getopts f name; do case $name in f) follow=1 ;; esac done shift $((OPTIND - 1)) if (( follow )); then python -ESc "import os; print os.path.realpath('$1')" else python -ESc "import os; print os.readlink('$1')" fi } function populate_texinfo_directory() { directory=$(dirname $1) dir_file=$(readlink -f $1) [[ ${dir_file} -ot ${directory} ]] || return case "${dir_file}" in /var/info/*) # Only process if the link resolves inside /var/info. echo "populating ${dir_file} from ${directory}" rm -f ${dir_file}.new for info_file in $(find ${directory} -type f | \ egrep -v -e '-[0-9]+$') ; do install-info --dir-file=${dir_file}.new \ --info-file=${info_file} done owner_group='root:bin' # default owner/group if [[ -f ${dir_file} ]] ; then # get owner/group from original file group_bin=$(ls -l ${dir_file} | \ awk '{print $3":"$4}') fi if [[ -f ${dir_file}.new ]] ; then # new dir file created, replace the original one mv -f ${dir_file}.new ${dir_file} chmod -f 0644 ${dir_file} chown -f ${owner_group} ${dir_file} ln -s ${1} ${dir_file}.backlink 2>/dev/null else # no dir file created (no input files installed) rm -f ${dir_file} ${dir_file}.backlink fi ;; esac } ### Begin Here ### case "$1" in 'start'|'refresh') # refresh texinfo directories for dir_link in $(pkg search -H -l -o path ':link:path:*/info/dir' | \ sort -u) ; do populate_texinfo_directory /${dir_link} done # remove any unreferenced directories for link in $(find ${TEXINFO_DATA_DIR} -type l -name '*.backlink') ; do path=$(readlink ${link}) if [[ ! -L ${path} ]] ; then file=${link%.backlink} echo -n "removing unreferenced texinfo directory: " echo "${file} ${link}" rm -f ${file} ${link} fi done ;; *) echo "Usage: $0 (start|refresh)" exit 1 ;; esac exit $SMF_EXIT_OK