Blame install.sh

Packit 6d14d2
#!/bin/bash
Packit 6d14d2
Packit 6d14d2
# install.sh - Set up user environment for a XML/XSLT distribution
Packit 6d14d2
Packit 6d14d2
# This is as an interactive installer for updating your
Packit 6d14d2
# environment to use an XML/XSLT distribution such as the DocBook
Packit 6d14d2
# XSL Stylesheets. Its main purpose is to configure your
Packit 6d14d2
# environment with XML catalog data and schema "locating rules"
Packit 6d14d2
# data provided in the XML/XSLT distribution.
Packit 6d14d2
#
Packit 6d14d2
# Although this installer was created for the DocBook project, it
Packit 6d14d2
# is a general-purpose tool that can be used with any XML/XSLT
Packit 6d14d2
# distribution that provides XML/SGML catalogs and locating rules.
Packit 6d14d2
#
Packit 6d14d2
# This script is mainly intended to make things easier for you if
Packit 6d14d2
# you want to install a particular XML/XSLT distribution that has
Packit 6d14d2
# not (yet) been packaged for your OS distro (Debian, Fedora,
Packit 6d14d2
# whatever), or to use "snapshot" or development releases 
Packit 6d14d2
#
Packit 6d14d2
# It works by updating your shell startup file (e.g., .bashrc and
Packit 6d14d2
# .cshrc) and .emacs file and by finding or creating a writable
Packit 6d14d2
# CatalogManager.properties file to update.
Packit 6d14d2
#
Packit 6d14d2
# It makes backup copies of any files it touches, and also
Packit 6d14d2
# generates a uninstall.sh script for reverting its changes.
Packit 6d14d2
#
Packit 6d14d2
# In the same directory where it is located, it expects to find
Packit 6d14d2
# the following four files:
Packit 6d14d2
#   - locatingrules.xml
Packit 6d14d2
#   - catalog.xml
Packit 6d14d2
#   - catalog
Packit 6d14d2
#   - .urilist
Packit 6d14d2
# And if it's unable to locate a CatalogManager.properties file in
Packit 6d14d2
# your environment, it expects to find an "example" one in the
Packit 6d14d2
# same directory as itself, which it copies over to your
Packit 6d14d2
# ~/.resolver directory.
Packit 6d14d2
#
Packit 6d14d2
# If the distribution contains any executables, change the value
Packit 6d14d2
# of the thisBinDir to a colon-separated list of the pathnames of
Packit 6d14d2
# the directories that contain those executables.
Packit 6d14d2
Packit 6d14d2
# mydir is the "canonical" absolute pathname for install.sh
Packit 6d14d2
mydir=$(cd -P $(dirname $0) && pwd -P) || exit 1
Packit 6d14d2
Packit 6d14d2
thisLocatingRules=$mydir/locatingrules.xml
Packit 6d14d2
thisXmlCatalog=$mydir/catalog.xml
Packit 6d14d2
thisSgmlCatalog=$mydir/catalog
Packit 6d14d2
Packit 6d14d2
# .urilist file contains a list of pairs of local pathnames and
Packit 6d14d2
# URIs to test for catalog resolution
Packit 6d14d2
thisUriList=$mydir/.urilist
Packit 6d14d2
exampleCatalogManager=$mydir/.CatalogManager.properties.example
Packit 6d14d2
thisCatalogManager=$HOME/.resolver/CatalogManager.properties
Packit 6d14d2
Packit 6d14d2
# thisBinDir directory is a colon-separated list of the pathnames
Packit 6d14d2
# to all directories that contain executables provided with the
Packit 6d14d2
# distribution (for example, the DocBook XSL Stylesheets
Packit 6d14d2
# distribution contains a "docbook-xsl-update" convenience script
Packit 6d14d2
# for rsync'ing up to the latest docbook-xsl snapshot). The
Packit 6d14d2
# install.sh script adds the value of thisBinDir to your PATH
Packit 6d14d2
# environment variable
Packit 6d14d2
thisBinDir=$mydir/tools/bin
Packit 6d14d2
Packit 6d14d2
emit_message() {
Packit 6d14d2
  echo "$1" 1>&2
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
if [ ! "${*#--batch}" = "$*" ]; then
Packit 6d14d2
  batchmode="Yes";
Packit 6d14d2
else
Packit 6d14d2
  batchmode="No";
Packit 6d14d2
  emit_message
Packit 6d14d2
  if [ ! "$1" = "--test" ]; then 
Packit 6d14d2
    emit_message "NOTE: For non-interactive installs/uninstalls, use --batch"
Packit 6d14d2
    if [ ! "$1" = "--uninstall" ]; then
Packit 6d14d2
      emit_message
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
fi
Packit 6d14d2
Packit 6d14d2
osName="Unidentified"
Packit 6d14d2
if uname -s | grep -qi "cygwin"; then
Packit 6d14d2
  osName="Cygwin"
Packit 6d14d2
fi
Packit 6d14d2
Packit 6d14d2
classPathSeparator=":"
Packit 6d14d2
if [ "$osName" = "Cygwin" ]; then
Packit 6d14d2
  thisJavaXmlCatalog=$(cygpath -m $thisXmlCatalog)
Packit 6d14d2
  classPathSeparator=";"
Packit 6d14d2
else
Packit 6d14d2
  thisJavaXmlCatalog=$thisXmlCatalog
Packit 6d14d2
fi
Packit 6d14d2
Packit 6d14d2
main() {
Packit 6d14d2
  removeOldFiles
Packit 6d14d2
  checkRoot
Packit 6d14d2
  updateCatalogManager
Packit 6d14d2
  checkForResolver
Packit 6d14d2
  writeDotFiles
Packit 6d14d2
  updateUserStartupFiles
Packit 6d14d2
  updateUserDotEmacs
Packit 6d14d2
  writeUninstallFile
Packit 6d14d2
  writeTestFile
Packit 6d14d2
  printExitMessage
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
removeOldFiles() {
Packit 6d14d2
  rm -f $mydir/.profile.incl
Packit 6d14d2
  rm -f $mydir/.cshrc.incl
Packit 6d14d2
  rm -f $mydir/.emacs.el
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
checkRoot() {
Packit 6d14d2
  if [ $(id -u)  == "0" ]; then
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
WARNING: This install script is meant to be run as a non-root
Packit 6d14d2
         user, but you are running it as root.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
    read -s -n1 -p "Are you sure you want to continue? [No] "
Packit 6d14d2
    emit_message "$REPLY"
Packit 6d14d2
    case $REPLY in
Packit 6d14d2
      [yY])
Packit 6d14d2
      emit_message
Packit 6d14d2
      ;;
Packit 6d14d2
      *) emit_message "OK, exiting without making changes."
Packit 6d14d2
      exit
Packit 6d14d2
      ;;
Packit 6d14d2
    esac
Packit 6d14d2
  fi
Packit 6d14d2
  return 0
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
updateCatalogManager() {
Packit 6d14d2
Packit 6d14d2
  #  - finds or creates a writable CatalogManager.properties file
Packit 6d14d2
  #
Packit 6d14d2
  #  - adds the catalog.xml file for this distribution to the
Packit 6d14d2
  #    CatalogManager.properties file found
Packit 6d14d2
Packit 6d14d2
  if [ -z "$CLASSPATH" ]; then
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: There is no CLASSPATH variable set in your environment.
Packit 6d14d2
      No attempt was made to find a CatalogManager.properties
Packit 6d14d2
      file.  Using $thisCatalogManager instead
Packit 6d14d2
EOF
Packit 6d14d2
  else
Packit 6d14d2
    # split CLASSPATH in a list of pathnames by replacing all separator
Packit 6d14d2
    # characters with spaces
Packit 6d14d2
    if [ "$osName" = "Cygwin" ]; then
Packit 6d14d2
      pathnames=$(echo $CLASSPATH | tr ";" " ")
Packit 6d14d2
    else
Packit 6d14d2
      pathnames=$(echo $CLASSPATH | tr ":" " ")
Packit 6d14d2
    fi
Packit 6d14d2
    for path in $pathnames; do
Packit 6d14d2
    if [ "$osName" = "Cygwin" ]; then
Packit 6d14d2
      path=$(cygpath -u $path)
Packit 6d14d2
    fi
Packit 6d14d2
      # strip out trailing slash from pathname
Packit 6d14d2
      path=$(echo $path | sed 's/\/$//')
Packit 6d14d2
      # find CatalogManager.properties file
Packit 6d14d2
      if [ -f $path/CatalogManager.properties ];
Packit 6d14d2
      then
Packit 6d14d2
        existingCatalogManager=$path/CatalogManager.properties
Packit 6d14d2
        break
Packit 6d14d2
      fi
Packit 6d14d2
    done
Packit 6d14d2
  fi
Packit 6d14d2
  # end of CLASSPATH check
Packit 6d14d2
Packit 6d14d2
  if [ -w "$existingCatalogManager" ]; then
Packit 6d14d2
    # existing CatalogManager.properties was found and it is
Packit 6d14d2
    # writable, so use it
Packit 6d14d2
    myCatalogManager=$existingCatalogManager
Packit 6d14d2
  else
Packit 6d14d2
    if [ -f "$existingCatalogManager" ]; then
Packit 6d14d2
      # a non-writable CatalogManager.properties exists, so emit a
Packit 6d14d2
      # note saying that it won't be used
Packit 6d14d2
      cat 1>&2 <
Packit 6d14d2
NOTE: $existingCatalogManager file found,
Packit 6d14d2
      but you don't have permission to write to it.
Packit 6d14d2
      Will instead use:
Packit 6d14d2
      $thisCatalogManager
Packit 6d14d2
EOF
Packit 6d14d2
    else
Packit 6d14d2
      # CLASSPATH is set, but no CatalogManager.properties found
Packit 6d14d2
      if [ -n "$CLASSPATH" ]; then
Packit 6d14d2
        cat 1>&2 <
Packit 6d14d2
NOTE: No CatalogManager.properties found from CLASSPATH.
Packit 6d14d2
      Will instead use:
Packit 6d14d2
      $thisCatalogManager
Packit 6d14d2
EOF
Packit 6d14d2
      fi
Packit 6d14d2
    fi
Packit 6d14d2
    if [ "$batchmode" = "Yes" ]; then
Packit 6d14d2
      emit_message
Packit 6d14d2
    fi
Packit 6d14d2
    # end of check for existing writable CatalogManager.properties
Packit 6d14d2
Packit 6d14d2
    if [ -f $thisCatalogManager ]; then
Packit 6d14d2
      myCatalogManager=$thisCatalogManager
Packit 6d14d2
    else
Packit 6d14d2
      REPLY=""
Packit 6d14d2
      if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
        emit_message
Packit 6d14d2
        read -s -n1 -p "Create $thisCatalogManager file? [Yes] "
Packit 6d14d2
        emit_message "$REPLY"
Packit 6d14d2
        emit_message
Packit 6d14d2
      fi
Packit 6d14d2
      case $REPLY in
Packit 6d14d2
        [nNqQ])
Packit 6d14d2
        emitNoChangeMsg
Packit 6d14d2
        ;;
Packit 6d14d2
        *)
Packit 6d14d2
        if [ ! -d "${thisCatalogManager%/*}" ]; then
Packit 6d14d2
          mkdir -p ${thisCatalogManager%/*}
Packit 6d14d2
        fi
Packit 6d14d2
        cp $mydir/.CatalogManager.properties.example $thisCatalogManager || exit 1
Packit 6d14d2
        emit_message "NOTE: Created the following file:"
Packit 6d14d2
        emit_message "      $thisCatalogManager"
Packit 6d14d2
        myCatalogManager=$thisCatalogManager
Packit 6d14d2
        ;;
Packit 6d14d2
      esac
Packit 6d14d2
      # end of creating "private" CatalogManager.properties
Packit 6d14d2
    fi
Packit 6d14d2
    # end of check for "private" CatalogManager.properties
Packit 6d14d2
  fi
Packit 6d14d2
  # end of check finding/creating writable CatalogManager.properties
Packit 6d14d2
Packit 6d14d2
  if [ -n "$myCatalogManager" ]; then
Packit 6d14d2
    etcXmlCatalog=
Packit 6d14d2
    catalogsLine=$(grep "^catalogs=" $myCatalogManager)
Packit 6d14d2
    if [ -f /etc/xml/catalog ] && [ "$osName" != "Cygwin" ] \
Packit 6d14d2
      && [ "${catalogsLine#*/etc/xml/catalog*}" = "$catalogsLine" ]; then
Packit 6d14d2
      cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
WARNING: /etc/xml/catalog exists but was not found in:
Packit 6d14d2
         $myCatalogManager
Packit 6d14d2
         If /etc/xml/catalog file has content, you probably
Packit 6d14d2
         should reference it in:
Packit 6d14d2
         $myCatalogManager
Packit 6d14d2
         This installer can automatically add it for you,
Packit 6d14d2
         but BE WARNED that once it has been added, the
Packit 6d14d2
         uninstaller for this distribution CANNOT REMOVE IT
Packit 6d14d2
         automatically during uninstall. If you no longer want
Packit 6d14d2
         it included, you will need to remove it manually.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
      REPLY=""
Packit 6d14d2
      if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
        read -s -n1 -p "Add /etc/xml/catalog to $myCatalogManager? [Yes] "
Packit 6d14d2
        emit_message "$REPLY"
Packit 6d14d2
      fi
Packit 6d14d2
      case $REPLY in
Packit 6d14d2
        [nNqQ])
Packit 6d14d2
        emit_message
Packit 6d14d2
        ;;
Packit 6d14d2
        *)
Packit 6d14d2
        etcXmlCatalog=/etc/xml/catalog
Packit 6d14d2
        ;;
Packit 6d14d2
      esac
Packit 6d14d2
    fi
Packit 6d14d2
Packit 6d14d2
    catalogBackup="$myCatalogManager.$$.bak"
Packit 6d14d2
    if [ ! -w "${myCatalogManager%/*}" ]; then
Packit 6d14d2
      emit_message
Packit 6d14d2
      emit_message "WARNING: ${myCatalogManager%/*} directory is not writable."
Packit 6d14d2
      emit_message
Packit 6d14d2
      emitNoChangeMsg
Packit 6d14d2
    else
Packit 6d14d2
      REPLY=""
Packit 6d14d2
      if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
        emit_message
Packit 6d14d2
        emit_message "Add $thisJavaXmlCatalog"
Packit 6d14d2
        read -s -n1 -p "to $myCatalogManager file? [Yes] "
Packit 6d14d2
        emit_message "$REPLY"
Packit 6d14d2
        emit_message
Packit 6d14d2
      fi
Packit 6d14d2
      case $REPLY in
Packit 6d14d2
        [nNqQ])
Packit 6d14d2
        emitNoChangeMsg
Packit 6d14d2
        ;;
Packit 6d14d2
        *)
Packit 6d14d2
        if [ "$catalogsLine" ] ; then
Packit 6d14d2
          if [ "${catalogsLine#*$thisJavaXmlCatalog*}" != "$catalogsLine" ]; then
Packit 6d14d2
            emit_message "NOTE: $thisJavaXmlCatalog"
Packit 6d14d2
            emit_message "      already in:"
Packit 6d14d2
            emit_message "      $myCatalogManager"
Packit 6d14d2
          else
Packit 6d14d2
            mv $myCatalogManager $catalogBackup || exit 1
Packit 6d14d2
            sed "s#^catalogs=\(.*\)\$#catalogs=$thisJavaXmlCatalog;\1;$etcXmlCatalog#" $catalogBackup \
Packit 6d14d2
            | sed 's/;\+/;/' | sed 's/;$//' > $myCatalogManager || exit 1
Packit 6d14d2
            emit_message "NOTE: Successfully updated the following file:"
Packit 6d14d2
            emit_message "      $myCatalogManager"
Packit 6d14d2
            emit_message "      Backup written to:"
Packit 6d14d2
            emit_message "      $catalogBackup"
Packit 6d14d2
          fi
Packit 6d14d2
        else
Packit 6d14d2
          mv $myCatalogManager $catalogBackup || exit 1
Packit 6d14d2
          cp $catalogBackup $myCatalogManager
Packit 6d14d2
          echo "catalogs=$thisJavaXmlCatalog;$etcXmlCatalog" \
Packit 6d14d2
          | sed 's/;\+/;/' | sed 's/;$//' >> $myCatalogManager || exit 1
Packit 6d14d2
          emit_message "NOTE: \"catalogs=\" line added to $myCatalogManager."
Packit 6d14d2
          emit_message "      Backup written to $catalogBackup"
Packit 6d14d2
        fi
Packit 6d14d2
        ;;
Packit 6d14d2
      esac
Packit 6d14d2
      # end of backing up and updating CatalogManager.properties
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
  # end of CatalogManager.properties updates
Packit 6d14d2
Packit 6d14d2
  if [ "$osName" = "Cygwin" ]; then
Packit 6d14d2
    myCatalogManager=$(cygpath -m $myCatalogManager)
Packit 6d14d2
  fi
Packit 6d14d2
  return 0
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
writeDotFiles() {
Packit 6d14d2
  while read; do
Packit 6d14d2
    echo "$REPLY" >> $mydir/.profile.incl
Packit 6d14d2
  done <
Packit 6d14d2
# $thisBinDir is not in PATH, so add it
Packit 6d14d2
if [ "\${PATH#*$thisBinDir*}" = "\$PATH" ]; then
Packit 6d14d2
  PATH="$thisBinDir:\$PATH"
Packit 6d14d2
  export PATH
Packit 6d14d2
fi
Packit 6d14d2
if [ -z "\$XML_CATALOG_FILES" ]; then
Packit 6d14d2
  XML_CATALOG_FILES="$thisXmlCatalog"
Packit 6d14d2
else
Packit 6d14d2
  # $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
Packit 6d14d2
  if [ "\${XML_CATALOG_FILES#*$thisXmlCatalog*}" = "\$XML_CATALOG_FILES" ]; then
Packit 6d14d2
    XML_CATALOG_FILES="$thisXmlCatalog \$XML_CATALOG_FILES"
Packit 6d14d2
  fi
Packit 6d14d2
fi
Packit 6d14d2
# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
Packit 6d14d2
if [ -f /etc/xml/catalog ] && \
Packit 6d14d2
  [ "\${XML_CATALOG_FILES#*/etc/xml/catalog*}" = "\$XML_CATALOG_FILES" ]; then
Packit 6d14d2
  XML_CATALOG_FILES="\$XML_CATALOG_FILES /etc/xml/catalog"
Packit 6d14d2
fi
Packit 6d14d2
export XML_CATALOG_FILES
Packit 6d14d2
Packit 6d14d2
if [ -z "\$SGML_CATALOG_FILES" ]; then
Packit 6d14d2
  SGML_CATALOG_FILES="$thisSgmlCatalog"
Packit 6d14d2
else
Packit 6d14d2
  # $thisSgmlCatalog is not in SGML_CATALOG_FILES, so add it
Packit 6d14d2
  if [ "\${SGML_CATALOG_FILES#*$thisSgmlCatalog}" = "\$SGML_CATALOG_FILES" ]; then
Packit 6d14d2
    SGML_CATALOG_FILES="$thisSgmlCatalog:\$SGML_CATALOG_FILES"
Packit 6d14d2
  fi
Packit 6d14d2
fi
Packit 6d14d2
# /etc/sgml/catalog exists but is not in SGML_CATALOG_FILES, so add it
Packit 6d14d2
if [ -f /etc/sgml/catalog ] && \
Packit 6d14d2
  [ "\${SGML_CATALOG_FILES#*/etc/sgml/catalog*}" = "\$SGML_CATALOG_FILES" ]; then
Packit 6d14d2
  SGML_CATALOG_FILES="\$SGML_CATALOG_FILES:/etc/sgml/catalog"
Packit 6d14d2
fi
Packit 6d14d2
export SGML_CATALOG_FILES
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
while read; do
Packit 6d14d2
  echo "$REPLY" >> $mydir/.cshrc.incl
Packit 6d14d2
done <
Packit 6d14d2
# $thisBinDir is not in PATH, so add it
Packit 6d14d2
if ( "\\\`echo \$PATH | grep -v $thisBinDir\\\`" != "" ) then
Packit 6d14d2
  setenv PATH "$thisBinDir:\$PATH"
Packit 6d14d2
endif
Packit 6d14d2
if ( ! $\?XML_CATALOG_FILES ) then
Packit 6d14d2
  setenv XML_CATALOG_FILES "$thisXmlCatalog"
Packit 6d14d2
# $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
Packit 6d14d2
else if ( "\\\`echo \$XML_CATALOG_FILES | grep -v $thisXmlCatalog\\\`" != "" ) then
Packit 6d14d2
  setenv XML_CATALOG_FILES "$thisXmlCatalog \$XML_CATALOG_FILES"
Packit 6d14d2
endif
Packit 6d14d2
endif
Packit 6d14d2
# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
Packit 6d14d2
if ( -f /etc/xml/catalog && "\\\`echo \$XML_CATALOG_FILES | grep -v /etc/xml/catalog\\\`" != "" ) then
Packit 6d14d2
  setenv XML_CATALOG_FILES "\$XML_CATALOG_FILES /etc/xml/catalog"
Packit 6d14d2
endif
Packit 6d14d2
Packit 6d14d2
endif
Packit 6d14d2
if ( ! $\?SGML_CATALOG_FILES ) then
Packit 6d14d2
  setenv SGML_CATALOG_FILES "$thisSgmlCatalog"
Packit 6d14d2
else if ( "\\\`echo \$SGML_CATALOG_FILES | grep -v $thisSgmlCatalog\\\`" != "" ) then
Packit 6d14d2
  setenv SGML_CATALOG_FILES "$thisSgmlCatalog:\$SGML_CATALOG_FILES"
Packit 6d14d2
endif
Packit 6d14d2
endif
Packit 6d14d2
# /etc/SGML/catalog exists but is not in SGML_CATALOG_FILES, so add it
Packit 6d14d2
if ( -f /etc/sgml/catalog && "\\\`echo \$SGML_CATALOG_FILES | grep -v /etc/sgml/catalog\\\`" != "" ) then
Packit 6d14d2
  setenv SGML_CATALOG_FILES {\$SGML_CATALOG_FILES}:/etc/sgml/catalog
Packit 6d14d2
endif
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
if [ -n "$myCatalogManager" ]; then
Packit 6d14d2
  myCatalogManagerDir=${myCatalogManager%/*}
Packit 6d14d2
  while read; do
Packit 6d14d2
    echo "$REPLY" >> $mydir/.profile.incl
Packit 6d14d2
  done <
Packit 6d14d2
Packit 6d14d2
Packit 6d14d2
if [ -z "\$CLASSPATH" ]; then
Packit 6d14d2
  CLASSPATH="$myCatalogManagerDir"
Packit 6d14d2
else
Packit 6d14d2
  # $myCatalogManagerDir is not in CLASSPATH, so add it
Packit 6d14d2
  if [ "\${CLASSPATH#*$myCatalogManagerDir*}" = "\$CLASSPATH" ]; then
Packit 6d14d2
    CLASSPATH="$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
Packit 6d14d2
  fi
Packit 6d14d2
fi
Packit 6d14d2
export CLASSPATH
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
  while read; do
Packit 6d14d2
    echo "$REPLY" >> $mydir/.cshrc.incl
Packit 6d14d2
  done <
Packit 6d14d2
Packit 6d14d2
Packit 6d14d2
if ( ! $\?CLASSPATH ) then
Packit 6d14d2
  setenv CLASSPATH "$myCatalogManagerDir"
Packit 6d14d2
# $myCatalogManagerDir is not in CLASSPATH, so add it
Packit 6d14d2
else if ( "\\\`echo \$CLASSPATH | grep -v $myCatalogManagerDir\\\`" != "" ) then
Packit 6d14d2
  setenv CLASSPATH "$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
Packit 6d14d2
endif
Packit 6d14d2
endif
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
fi
Packit 6d14d2
Packit 6d14d2
while read; do
Packit 6d14d2
  echo "$REPLY" >> $mydir/.emacs.el
Packit 6d14d2
done <
Packit 6d14d2
(add-hook
Packit 6d14d2
  'nxml-mode-hook
Packit 6d14d2
  (lambda ()
Packit 6d14d2
    (setq rng-schema-locating-files-default
Packit 6d14d2
          (append '("$thisLocatingRules")
Packit 6d14d2
                  rng-schema-locating-files-default ))))
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
return 0
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
updateUserStartupFiles() {
Packit 6d14d2
  if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
  cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: To source your environment correctly for using the catalog
Packit 6d14d2
      files in this distribution, you need to update one or more
Packit 6d14d2
      of your shell startup files. This installer can
Packit 6d14d2
      automatically make the necessary changes. Or, if you prefer,
Packit 6d14d2
      you can make the changes manually.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
  else
Packit 6d14d2
    emit_message
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  # if running csh or tcsh, target .cshrc and .tcshrc files for
Packit 6d14d2
  # update; otherwise, target .bash_* and .profiles
Packit 6d14d2
Packit 6d14d2
  parent=$(ps -p $PPID | grep "/")
Packit 6d14d2
  if [ "${parent#*csh}" != "$parent" ] || [ "${parent#*tcsh}" != "$parent" ]; then
Packit 6d14d2
    myStartupFiles=".cshrc .tcshrc"
Packit 6d14d2
    appendLine="source $mydir/.cshrc.incl"
Packit 6d14d2
  else
Packit 6d14d2
    myStartupFiles=".bash_profile .bash_login .profile .bashrc"
Packit 6d14d2
    appendLine=". $mydir/.profile.incl"
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  for file in $myStartupFiles; do
Packit 6d14d2
    if [ -f "$HOME/$file" ]; then
Packit 6d14d2
      dotFileBackup=$HOME/$file.$$.bak
Packit 6d14d2
      REPLY=""
Packit 6d14d2
      if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
        read -s -n1 -p "Update $HOME/$file? [Yes] "
Packit 6d14d2
        emit_message "$REPLY"
Packit 6d14d2
      fi
Packit 6d14d2
      case $REPLY in
Packit 6d14d2
        [nNqQ])
Packit 6d14d2
        cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No change made to $HOME/$file. You either need
Packit 6d14d2
      to add the following line to it, or manually source
Packit 6d14d2
      the shell environment for this distribution each
Packit 6d14d2
      time you want use it.
Packit 6d14d2
Packit 6d14d2
$appendLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
        ;;
Packit 6d14d2
        *)
Packit 6d14d2
        lineExists="$(grep "$appendLine" $HOME/$file )"
Packit 6d14d2
        if [ ! "$lineExists" ]; then
Packit 6d14d2
          mv $HOME/$file $dotFileBackup     || exit 1
Packit 6d14d2
          cp $dotFileBackup $HOME/$file     || exit 1
Packit 6d14d2
          echo "$appendLine" >> $HOME/$file || exit 1
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
NOTE: Successfully updated the following file:
Packit 6d14d2
      $HOME/$file 
Packit 6d14d2
      Backup written to:
Packit 6d14d2
      $dotFileBackup
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
        else
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
NOTE: The following file already contains information for this
Packit 6d14d2
      distribution, so I did not update it.
Packit 6d14d2
      $HOME/$file
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
        fi
Packit 6d14d2
        ;;
Packit 6d14d2
      esac
Packit 6d14d2
    fi
Packit 6d14d2
  done
Packit 6d14d2
  if [ -z "$dotFileBackup" ]; then
Packit 6d14d2
    if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
      emit_message
Packit 6d14d2
    fi
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
NOTE: No shell startup files updated. You can source the
Packit 6d14d2
      environment for this distribution manually, each time you
Packit 6d14d2
      want to use it, by typing the following.
Packit 6d14d2
Packit 6d14d2
$appendLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
  fi
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
updateUserDotEmacs() {
Packit 6d14d2
  if [ -f $thisLocatingRules ]; then
Packit 6d14d2
  cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: This distribution includes a "schema locating rules" file
Packit 6d14d2
      for Emacs/nXML.  To use it, you should update either your
Packit 6d14d2
      .emacs or .emacs.el file.  This installer can automatically
Packit 6d14d2
      make the necessary changes. Or, if you prefer, you can make
Packit 6d14d2
      the changes manually.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
Packit 6d14d2
  emacsAppendLine="(load-file \"$mydir/.emacs.el\")"
Packit 6d14d2
  myEmacsFile=
Packit 6d14d2
  for file in .emacs .emacs.el; do
Packit 6d14d2
    if [ -f "$HOME/$file" ]; then
Packit 6d14d2
      myEmacsFile=$HOME/$file
Packit 6d14d2
      break
Packit 6d14d2
    fi
Packit 6d14d2
  done
Packit 6d14d2
  if [ ! -f "$myEmacsFile" ]; then
Packit 6d14d2
    REPLY=""
Packit 6d14d2
    if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
      read -s -n1 -p "No .emacs or .emacs.el file. Create one? [No] "
Packit 6d14d2
      emit_message "$REPLY"
Packit 6d14d2
      emit_message
Packit 6d14d2
    fi
Packit 6d14d2
    case $REPLY in
Packit 6d14d2
      [yY])
Packit 6d14d2
      myEmacsFile=$HOME/.emacs
Packit 6d14d2
      touch $myEmacsFile
Packit 6d14d2
      ;;
Packit 6d14d2
      *)
Packit 6d14d2
      cat 1>&2 <
Packit 6d14d2
NOTE: No Emacs changes made. To use this distribution with,
Packit 6d14d2
      Emacs/nXML, you can create a .emacs file and manually add
Packit 6d14d2
      the following line to it, or you can run it as a command
Packit 6d14d2
      within Emacs.
Packit 6d14d2
Packit 6d14d2
$emacsAppendLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
      ;;
Packit 6d14d2
    esac
Packit 6d14d2
  fi
Packit 6d14d2
  if [ -n "$myEmacsFile" ]; then
Packit 6d14d2
    REPLY=""
Packit 6d14d2
    if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
      read -s -n1 -p  "Update $myEmacsFile? [Yes] "
Packit 6d14d2
      emit_message "$REPLY"
Packit 6d14d2
      emit_message
Packit 6d14d2
    fi
Packit 6d14d2
    case $REPLY in
Packit 6d14d2
      [nNqQ])
Packit 6d14d2
      cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No change made to $myEmacsFile. To use this distribution
Packit 6d14d2
      with Emacs/nXML, you can manually add the following line
Packit 6d14d2
      to your $myEmacsFile, or you can run it as a command
Packit 6d14d2
      within Emacs.
Packit 6d14d2
Packit 6d14d2
$emacsAppendLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
      ;;
Packit 6d14d2
      *)
Packit 6d14d2
      lineExists="$(grep "$emacsAppendLine" $myEmacsFile)"
Packit 6d14d2
      if [ ! "$lineExists" ]; then
Packit 6d14d2
        dotEmacsBackup=$myEmacsFile.$$.bak
Packit 6d14d2
        mv $myEmacsFile $dotEmacsBackup    || exit 1
Packit 6d14d2
        cp $dotEmacsBackup $myEmacsFile    || exit 1
Packit 6d14d2
        echo "$emacsAppendLine" >> $myEmacsFile || exit 1
Packit 6d14d2
        cat 1>&2 <
Packit 6d14d2
NOTE: Successfully updated the following file:
Packit 6d14d2
      $myEmacsFile
Packit 6d14d2
      Backup written to:
Packit 6d14d2
      $dotEmacsBackup
Packit 6d14d2
EOF
Packit 6d14d2
      else
Packit 6d14d2
        cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: The following file already contains information for this
Packit 6d14d2
      distribution, so I did not update it.
Packit 6d14d2
      $myEmacsFile
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
      fi
Packit 6d14d2
      ;;
Packit 6d14d2
    esac
Packit 6d14d2
  fi
Packit 6d14d2
fi
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
uninstall() {
Packit 6d14d2
  if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
  cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: To "uninstall" this distribution, the changes made to your
Packit 6d14d2
      CatalogManagers.properties, startup files, and/or .emacs
Packit 6d14d2
      file need to be reverted. This uninstaller can automatically
Packit 6d14d2
      revert them.  Or, if you prefer, you can revert them manually.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  if [ "$osName" = "Cygwin" ]; then
Packit 6d14d2
    thisXmlCatalog=$thisJavaXmlCatalog
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  # make "escaped" version of PWD to use with sed and grep
Packit 6d14d2
  escapedPwd=$(echo $mydir | sed "s#/#\\\\\/#g")
Packit 6d14d2
Packit 6d14d2
  # check to see if a non-empty value for catalogManager was fed
Packit 6d14d2
  # to uninstaller.
Packit 6d14d2
  if [ -n ${1#--catalogManager=} ]; then
Packit 6d14d2
    myCatalogManager=${1#--catalogManager=}
Packit 6d14d2
    catalogBackup="$myCatalogManager.$$.bak"
Packit 6d14d2
    catalogsLine=$(grep "^catalogs=" $myCatalogManager)
Packit 6d14d2
    if [ "$catalogsLine" ] ; then
Packit 6d14d2
      if [ "${catalogsLine#*$thisXmlCatalog*}" != "$catalogsLine" ]; then
Packit 6d14d2
        REPLY=""
Packit 6d14d2
        if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
          read -s -n1 -p "Revert $myCatalogManager? [Yes] "
Packit 6d14d2
          emit_message "$REPLY"
Packit 6d14d2
        fi
Packit 6d14d2
        case $REPLY in
Packit 6d14d2
          [nNqQ]*)
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No change made to $myCatalogManager. You need to manually
Packit 6d14d2
      remove the following path from the "catalog=" line.
Packit 6d14d2
Packit 6d14d2
          $thisXmlCatalog
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
          *)
Packit 6d14d2
          mv $myCatalogManager $catalogBackup || exit 1
Packit 6d14d2
          sed "s#^catalogs=\(.*\)$thisXmlCatalog\(.*\)\$#catalogs=\1\2#" $catalogBackup \
Packit 6d14d2
          | sed 's/;\+/;/' | sed 's/;$//' | sed 's/=;/=/' > $myCatalogManager || exit 1
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
NOTE: Successfully updated the following file:
Packit 6d14d2
      $myCatalogManager
Packit 6d14d2
      Backup written to:
Packit 6d14d2
      $catalogBackup
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
        esac
Packit 6d14d2
      else
Packit 6d14d2
        emit_message "NOTE: No data for this distribution found in:"
Packit 6d14d2
        emit_message "       $myCatalogManager"
Packit 6d14d2
        emit_message
Packit 6d14d2
      fi
Packit 6d14d2
    else
Packit 6d14d2
      cat 1>&2 <
Packit 6d14d2
NOTE: No data for this distribution was found in the following
Packit 6d14d2
      file, so I did not revert it.
Packit 6d14d2
      $myCatalogManager
Packit 6d14d2
EOF
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  if [ -n "$myEmacsFile" ]; then 
Packit 6d14d2
    # check to see if a non-empty value for --dotEmacs file was fed
Packit 6d14d2
    # to uninstaller.
Packit 6d14d2
    if [ -n ${2#--dotEmacs=} ]; then
Packit 6d14d2
      myEmacsFile=${2#--dotEmacs=}
Packit 6d14d2
      revertLine="(load-file \"$escapedPwd\/\.emacs\.el\")"
Packit 6d14d2
      loadLine="$(grep "$revertLine" "$myEmacsFile")"
Packit 6d14d2
      if [ -n "$loadLine" ]; then
Packit 6d14d2
        emit_message
Packit 6d14d2
        REPLY=""
Packit 6d14d2
        if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
          read -s -n1 -p "Revert $myEmacsFile? [Yes] "
Packit 6d14d2
          emit_message "$REPLY"
Packit 6d14d2
        fi
Packit 6d14d2
        case $REPLY in
Packit 6d14d2
          [nNqQ]*)
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No change made to $myEmacsFile. You need to manually
Packit 6d14d2
remove the following line.
Packit 6d14d2
Packit 6d14d2
(load-file \"$mydir/.emacs.el\")
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
          *)
Packit 6d14d2
          dotEmacsBackup=$myEmacsFile.$$.bak
Packit 6d14d2
          sed -e "/$revertLine/d" -i".$$.bak" $myEmacsFile  || exit 1
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
NOTE: successfully reverted the following file:
Packit 6d14d2
      $myEmacsFile
Packit 6d14d2
      Backup written to:
Packit 6d14d2
      $dotEmacsBackup
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
        esac
Packit 6d14d2
      else
Packit 6d14d2
        emit_message "NOTE: No data for this distribution found in:"
Packit 6d14d2
        emit_message "      $myEmacsFile"
Packit 6d14d2
      fi
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  # check all startup files
Packit 6d14d2
  myStartupFiles=".bash_profile .bash_login .profile .bashrc .cshrc .tcshrc"
Packit 6d14d2
  for file in $myStartupFiles; do
Packit 6d14d2
    if [ -e "$HOME/$file" ]; then
Packit 6d14d2
      case $file in
Packit 6d14d2
        .tcshrc|.cshrc)
Packit 6d14d2
        revertLine="source $mydir/.cshrc.incl"
Packit 6d14d2
        revertLineEsc="source $escapedPwd\/\.cshrc\.incl"
Packit 6d14d2
        ;;
Packit 6d14d2
        *)
Packit 6d14d2
        revertLine=". $mydir/.profile.incl"
Packit 6d14d2
        revertLineEsc="\. $escapedPwd\/\.profile\.incl"
Packit 6d14d2
        ;;
Packit 6d14d2
      esac
Packit 6d14d2
      lineExists="$(grep "$revertLineEsc" $HOME/$file )"
Packit 6d14d2
      if [ "$lineExists" ]; then
Packit 6d14d2
        REPLY=""
Packit 6d14d2
        if [ ! "$batchmode" = "Yes" ]; then
Packit 6d14d2
          read -s -n1 -p "Update $HOME/$file? [Yes] "
Packit 6d14d2
          emit_message "$REPLY"
Packit 6d14d2
        fi
Packit 6d14d2
        case $REPLY in
Packit 6d14d2
          [nNqQ]*)
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No change made to $HOME/$file. You need to manually remove
Packit 6d14d2
      the following line from it.
Packit 6d14d2
Packit 6d14d2
 $revertLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
          *)
Packit 6d14d2
          dotFileBackup=$HOME/$file.$$.bak
Packit 6d14d2
          sed -e "/$revertLineEsc/d" -i".$$.bak" $HOME/$file  || exit 1
Packit 6d14d2
          cat 1>&2 <
Packit 6d14d2
NOTE: Successfully updated the following file:
Packit 6d14d2
      $HOME/$file
Packit 6d14d2
      Backup written to:
Packit 6d14d2
      $dotFileBackup
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
          ;;
Packit 6d14d2
        esac
Packit 6d14d2
      else
Packit 6d14d2
        emit_message "NOTE: No data for this distribution found in:"
Packit 6d14d2
        emit_message "      $HOME/$file"
Packit 6d14d2
        emit_message
Packit 6d14d2
      fi
Packit 6d14d2
    fi
Packit 6d14d2
  done
Packit 6d14d2
  removeOldFiles
Packit 6d14d2
  emit_message "Done. Deleted uninstall.sh file."
Packit 6d14d2
  rm -f $mydir/test.sh      || exit 1
Packit 6d14d2
  rm -f $mydir/uninstall.sh || exit 1
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
writeUninstallFile() {
Packit 6d14d2
  uninstallFile=$mydir/uninstall.sh
Packit 6d14d2
  echo '#!/bin/bash'                               > $uninstallFile || exit 1
Packit 6d14d2
  echo 'mydir=$(cd -P $(dirname $0) && pwd -P)'   >> $uninstallFile || exit 1
Packit 6d14d2
  echo "\$mydir/install.sh \\"                    >> $uninstallFile || exit 1
Packit 6d14d2
  echo "  --uninstall \\"                         >> $uninstallFile || exit 1
Packit 6d14d2
  echo "  --catalogManager=$myCatalogManager \\"  >> $uninstallFile || exit 1
Packit 6d14d2
  echo "  --dotEmacs='$myEmacsFile' \\"           >> $uninstallFile || exit 1
Packit 6d14d2
  echo '  $@'                                     >> $uninstallFile || exit 1
Packit 6d14d2
  chmod 755 $uninstallFile || exit 1
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
writeTestFile() {
Packit 6d14d2
  testFile=$mydir/test.sh
Packit 6d14d2
  echo "#!/bin/bash"                                > $testFile || exit 1
Packit 6d14d2
  echo 'mydir=$(cd -P $(dirname $0) && pwd -P)'    >> $testFile || exit 1
Packit 6d14d2
  echo '$mydir/install.sh --test'                  >> $testFile || exit 1
Packit 6d14d2
  chmod 755 $testFile || exit 1
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
printExitMessage() {
Packit 6d14d2
  cat 1>&2 <
Packit 6d14d2
To source your shell environment for this distribution, type the
Packit 6d14d2
following:
Packit 6d14d2
Packit 6d14d2
$appendLine
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
checkForResolver() {
Packit 6d14d2
  resolverResponse="$(java org.apache.xml.resolver.apps.resolver uri -u foo 2>/dev/null)"
Packit 6d14d2
  if [ -z "$resolverResponse" ]; then
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: Your environment does not seem to contain the Apache XML
Packit 6d14d2
      Commons Resolver; without that, you can't use XML catalogs
Packit 6d14d2
      with Java applications. For more information, see the "How
Packit 6d14d2
      to use a catalog file" section in Bob Stayton's "DocBook
Packit 6d14d2
      XSL: The Complete Guide"
Packit 6d14d2
Packit 6d14d2
      http://sagehill.net/docbookxsl/UseCatalog.html
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
  fi
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
emitNoChangeMsg() {
Packit 6d14d2
  cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
NOTE: No changes were made to CatalogManagers.properties. To
Packit 6d14d2
      provide your Java tools with XML catalog information for
Packit 6d14d2
      this distribution, you will need to make the appropriate
Packit 6d14d2
      changes manually.
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
testCatalogs() {
Packit 6d14d2
  if [ ! -f "$thisXmlCatalog" ]; then
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
FATAL: $thisXmlCatalog file needed but not found. Stopping.
Packit 6d14d2
EOF
Packit 6d14d2
  exit
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  if [ -z "$XML_CATALOG_FILES" ]; then
Packit 6d14d2
    emit_message
Packit 6d14d2
    emit_message "WARNING: XML_CATALOG_FILES not set. Not testing with xmlcatalog."
Packit 6d14d2
  else
Packit 6d14d2
    xmlCatalogResponse="$(xmlcatalog 2>/dev/null)"
Packit 6d14d2
    if [ -z "$xmlCatalogResponse" ]; then
Packit 6d14d2
    cat 1>&2 <
Packit 6d14d2
Packit 6d14d2
WARNING: Cannot locate the "xmlcatalog" command. Make sure that
Packit 6d14d2
         you have libxml2 and its associated utilities installed.
Packit 6d14d2
Packit 6d14d2
         http://xmlsoft.org/
Packit 6d14d2
Packit 6d14d2
EOF
Packit 6d14d2
    else
Packit 6d14d2
      emit_message "Testing with xmlcatalog..."
Packit 6d14d2
      # read in pathname-uri pairs from .urilist file
Packit 6d14d2
      while read pair; do
Packit 6d14d2
        if [ ! "${pair%* *}" = "." ]; then
Packit 6d14d2
          path=$mydir/${pair%* *}
Packit 6d14d2
        else
Packit 6d14d2
          path=$mydir/
Packit 6d14d2
        fi
Packit 6d14d2
        uri=${pair#* *}
Packit 6d14d2
        emit_message
Packit 6d14d2
        emit_message "  Tested: $uri"
Packit 6d14d2
        for catalog in $XML_CATALOG_FILES; do
Packit 6d14d2
          response="$(xmlcatalog $catalog $uri| grep -v "No entry")"
Packit 6d14d2
          if [ -n "$response" ]; then
Packit 6d14d2
            if [ "$response" = "$path" ]; then
Packit 6d14d2
              emit_message "  Result: $path"
Packit 6d14d2
              break
Packit 6d14d2
            else
Packit 6d14d2
              emit_message "  Result: FAILED"
Packit 6d14d2
            fi
Packit 6d14d2
          fi
Packit 6d14d2
        done
Packit 6d14d2
      done < $mydir/.urilist
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
Packit 6d14d2
  if [ -z "$CLASSPATH" ]; then
Packit 6d14d2
    emit_message
Packit 6d14d2
    emit_message "NOTE: CLASSPATH not set. Not testing with Apache XML Commons Resolver."
Packit 6d14d2
  else
Packit 6d14d2
    if [ "$(checkForResolver)" ]; then
Packit 6d14d2
      checkForResolver
Packit 6d14d2
    else
Packit 6d14d2
      emit_message
Packit 6d14d2
      emit_message "Testing with Apache XML Commons Resolver..."
Packit 6d14d2
      # read in pathname-uri pairs from .urilist file
Packit 6d14d2
      while read pair; do
Packit 6d14d2
        if [ ! "${pair%* *}" = "." ]; then
Packit 6d14d2
          path=$mydir/${pair%* *}
Packit 6d14d2
        else
Packit 6d14d2
          path=$mydir/
Packit 6d14d2
        fi
Packit 6d14d2
        uri=${pair#* *}
Packit 6d14d2
        emit_message
Packit 6d14d2
        emit_message "  Tested: $uri"
Packit 6d14d2
        if [ ${uri%.dtd} != $uri ]; then
Packit 6d14d2
          response="$(java org.apache.xml.resolver.apps.resolver system -s $uri | grep "Result")"
Packit 6d14d2
        else
Packit 6d14d2
          response="$(java org.apache.xml.resolver.apps.resolver uri -u $uri | grep "Result")"
Packit 6d14d2
        fi
Packit 6d14d2
        if [ "$response" ]; then
Packit 6d14d2
          if [ "${response#*$path}" != "$response" ]; then
Packit 6d14d2
            emit_message "  Result: $path"
Packit 6d14d2
          else
Packit 6d14d2
            emit_message "  Result: FAILED"
Packit 6d14d2
          fi
Packit 6d14d2
          echo
Packit 6d14d2
        fi
Packit 6d14d2
      done < $mydir/.urilist
Packit 6d14d2
    fi
Packit 6d14d2
  fi
Packit 6d14d2
}
Packit 6d14d2
Packit 6d14d2
# get opts and execute appropriate function
Packit 6d14d2
case $1 in
Packit 6d14d2
  *-uninstall)
Packit 6d14d2
  uninstall $2 $3 $4
Packit 6d14d2
  ;;
Packit 6d14d2
  *-test)
Packit 6d14d2
  testCatalogs
Packit 6d14d2
  ;;
Packit 6d14d2
  *)
Packit 6d14d2
  main
Packit 6d14d2
  ;;
Packit 6d14d2
esac
Packit 6d14d2
Packit 6d14d2
# Copyright
Packit 6d14d2
# ---------
Packit 6d14d2
# Copyright 2005-2007 Michael(tm) Smith <smith@sideshowbarker.net>
Packit 6d14d2
# 
Packit 6d14d2
# Permission is hereby granted, free of charge, to any person
Packit 6d14d2
# obtaining a copy of this software and associated documentation
Packit 6d14d2
# files (the "Software"), to deal in the Software without
Packit 6d14d2
# restriction, including without limitation the rights to use, copy,
Packit 6d14d2
# modify, merge, publish, distribute, sublicense, and/or sell copies
Packit 6d14d2
# of the Software, and to permit persons to whom the Software is
Packit 6d14d2
# furnished to do so, subject to the following conditions:
Packit 6d14d2
# 
Packit 6d14d2
# The above copyright notice and this permission notice shall be
Packit 6d14d2
# included in all copies or substantial portions of the Software.
Packit 6d14d2
# 
Packit 6d14d2
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit 6d14d2
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit 6d14d2
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Packit 6d14d2
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
Packit 6d14d2
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
Packit 6d14d2
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Packit 6d14d2
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
Packit 6d14d2
# DEALINGS IN THE SOFTWARE.
Packit 6d14d2
Packit 6d14d2
# vim: number