#!@GENTOO_PORTAGE_EPREFIX@/bin/bash # Script to install a catalog in the centralized SGML catalog # Send any comments to Eric Bischoff <eric@caldera.de> # This program is under GPL license. See LICENSE file for details. # Modified by Gentoo developers to better integrate it to portage. # <text-markup@gentoo.org> # Set help message SGML_HELP_MESSAGE="Usage: `basename $0` [<option>] <action>\n\ where <option> is:\n\ \040 -d|--delegate: \t\t\t Use DELEGATE instead of CATALOG\n\ and where <action> is:\n\ \040 -a|--add <centralized> <ordinary>: \t Declare ordinary catalog in the centralized catalog\n\ \040 -r|--remove <centralized> <ordinary>:\t Remove ordinary catalog from the centralized catalog\n\ \040 -h, --help: \t\t\t\t Print this help message and exit\n\ \040 -v, --version: \t\t\t Print the version number and exit\n" # Set version message SGML_VERSION_MESSAGE="sgml-common version @VERSION@ (install-catalog version 1.0)" # Set type of pointer SGML_POINTER="CATALOG" # Set action to be performed SGML_ACTION="" # Set catalogs SGML_CENTRALIZED="" SGML_ORDINARY="" # Default ROOT value (usually defined by portage) [ -z "$ROOT" ] && ROOT="/" [[ $ROOT == */ ]] || ROOT="${ROOT}/" EPREFIX="@GENTOO_PORTAGE_EPREFIX@" EROOT=${ROOT%/}${EPREFIX}/ # Process options case $1 in -d|--delegate) SGML_POINTER="DELEGATE" shift 1 ;; esac # Process actions case $1 in -a|--add) SGML_ACTION="addition" SGML_CENTRALIZED=$2 SGML_ORDINARY=$3 ;; -r|--remove) if [ -z "$3" -o "$3" = "--version" ] then echo "install-catalog: Old syntax; doing nothing" exit 0 fi SGML_ACTION="removal" SGML_CENTRALIZED=$2 SGML_ORDINARY=$3 ;; -h|--help) echo -e $SGML_HELP_MESSAGE exit 0 ;; -v|--version) echo -e $SGML_VERSION_MESSAGE exit 0 ;; --install) echo "install-catalog: Old syntax; doing nothing" exit 0 ;; *) echo -e $SGML_HELP_MESSAGE >&2 exit 1 ;; esac # The arguments to this program should always be relative to $ROOT. Here we # declare some extra variables to distingish between the absolute and # relative paths. SGML_ROOT_CENTRALIZED="${ROOT%/}${SGML_CENTRALIZED}" SGML_ROOT_ORDINARY="${ROOT%/}${SGML_ORDINARY}" # Check that the super catalog can be created and changed and deleted if [ ! -w "${EROOT}etc/sgml" ] then echo "`basename $0`: unable to write in ${EROOT}etc/sgml." >&2 exit 2 fi case $SGML_ACTION in addition) if [ -e "${EROOT}etc/sgml/catalog" -a ! -w "${EROOT}etc/sgml/catalog" ] then echo "`basename $0`: can not modify \"${EROOT}etc/sgml/catalog\"." >&2 exit 2 fi ;; removal) if [ ! -w "${EROOT}etc/sgml/catalog" ] then echo "`basename $0`: can not modify \"${EROOT}etc/sgml/catalog\"." >&2 exit 2 fi ;; esac # Check that the centralized catalog can be created, changed and deleted if [ -z "$SGML_ROOT_CENTRALIZED" ] then echo -e $SGML_HELP_MESSAGE >&2 exit 1 fi case $SGML_ACTION in addition) if [ -e "$SGML_ROOT_CENTRALIZED" -a ! -w "$SGML_ROOT_CENTRALIZED" ] then echo "`basename $0`: can not modify \"$SGML_ROOT_CENTRALIZED\"." >&2 exit 2 fi ;; removal) if [ ! -w "$SGML_ROOT_CENTRALIZED" ] then echo "`basename $0`: can not modify \"$SGML_ROOT_CENTRALIZED\"." >&2 exit 2 fi ;; esac # Check that we have at least one ordinary package to process if [ -z "$SGML_ROOT_ORDINARY" ] then echo -e $SGML_HELP_MESSAGE >&2 exit 1 fi case $SGML_ACTION in addition) if [ ! -s "$SGML_ROOT_ORDINARY" ] then echo "`basename $0`: \"$SGML_ROOT_ORDINARY\" does not exist or is empty." >&2 exit 2 fi ;; esac # Installation or removal of pointers case $SGML_ACTION in addition) echo "`basename $0`: addition of $SGML_ORDINARY in $SGML_CENTRALIZED" if grep -q "$SGML_ORDINARY" "$SGML_ROOT_CENTRALIZED" 2>/dev/null then echo "Warning: $SGML_ORDINARY is already installed in the centralized catalog $SGML_CENTRALIZED" >&2 else echo "$SGML_POINTER \"$SGML_ORDINARY\"" >> "$SGML_ROOT_CENTRALIZED" fi grep -q "$SGML_CENTRALIZED" "${EROOT}etc/sgml/catalog" 2>/dev/null if [ $? -ne 0 ] then echo "`basename $0`: addition of $SGML_CENTRALIZED in ${EROOT}etc/sgml/catalog" echo "$SGML_POINTER \"$SGML_CENTRALIZED\"" >> "${EROOT}etc/sgml/catalog" fi ;; removal) echo "`basename $0`: removal of $SGML_ORDINARY from $SGML_CENTRALIZED" if grep -q "$SGML_ORDINARY" "$SGML_ROOT_CENTRALIZED" 2>/dev/null then sed -e "\:$SGML_POINTER \"$SGML_ORDINARY\":d" < \ "$SGML_ROOT_CENTRALIZED" > "${SGML_ROOT_CENTRALIZED}.new" mv "${SGML_ROOT_CENTRALIZED}.new" "$SGML_ROOT_CENTRALIZED" else echo "Warning: $SGML_ORDINARY was not found in the centralized catalog $SGML_CENTRALIZED" >&2 fi if [ ! -s "$SGML_ROOT_CENTRALIZED" ] then rm "$SGML_ROOT_CENTRALIZED" echo "`basename $0`: removal of $SGML_CENTRALIZED from ${EROOT}etc/sgml/catalog" sed -e "\:$SGML_POINTER \"$SGML_CENTRALIZED\":d" < "${EROOT}etc/sgml/catalog" > "${EROOT}etc/sgml/catalog.new" mv "${EROOT}etc/sgml/catalog.new" "${EROOT}etc/sgml/catalog" fi ;; esac exit 0