#!/bin/bash
# Copyright (C) 2002 by SuSE Linux AG.
# Author: Karl Eichwalder <ke@suse.de>, 2002.
# This program is under GPL license. See COPYING file for details.
# In part based on a script by Eric Bischoff <eric@caldera.de>

# Set help message
SGML_HELP_MESSAGE="Usage: `basename $0` [<option>] <action>\n\
where <option> is:\n\
  -d, --delegate               Use DELEGATE instead of CATALOG\n\
and where <action> is:\n\
  -a, --add <CATALOG>          Declare ordinary catalog in the centralized catalog\n\
  -r, --remove <CATALOG>       Remove ordinary catalog from the centralized catalog\n\
  -h, --help                   Print this help message and exit\n\
  -v, --version                Print the version number and exit\n"

# Set version message
SGML_VERSION_MESSAGE="${0##*/} (sgml-skel version 0.7.1)"

# Set type of pointer
SGML_POINTER="CATALOG"

# Set action to be performed
SGML_ACTION=""

# Set catalogs
# SGML_CENTRALIZED=""
SGML_ORDINARY=""

# 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=$2 ;;
  -r|--remove)	SGML_ACTION="removal"
    # SGML_CENTRALIZED=$2
    SGML_ORDINARY=$2 ;;
  -h|--help)	echo -e $SGML_HELP_MESSAGE ; exit 0 ;;
  -v|--version) echo -e $SGML_VERSION_MESSAGE ; exit 0 ;;
  *) echo -e $SGML_HELP_MESSAGE >&2 ; exit 1 ;;
esac

# Check that the super catalog can be created and changed and deleted
if [ ! -w /etc/sgml ]; then
  echo "`basename $0`: unable to write in /etc/sgml." >&2
  exit 2
fi
case $SGML_ACTION in
  addition)
    if [ -e /etc/sgml/catalog -a ! -w /etc/sgml/catalog ]; then
      echo "`basename $0`: can not modify \"/etc/sgml/catalog\"." >&2
      exit 2
    fi
    ;;
  removal)
    if [ ! -w /etc/sgml/catalog ]; then
      echo "`basename $0`: can not modify \"/etc/sgml/catalog\"." >&2
      exit 2
    fi
    ;;
esac

# # Check that the centralized catalog can be created, changed and deleted
# if [ -z "$SGML_CENTRALIZED" ]
# then
#   echo -e $SGML_HELP_MESSAGE >&2
#   exit 1
# fi
# case $SGML_ACTION in
#    addition)
# 	if [ -e $SGML_CENTRALIZED -a ! -w $SGML_CENTRALIZED ]
# 	then
# 	  echo "`basename $0`: can not modify \"$SGML_CENTRALIZED\"." >&2
# 	  exit 2
# 	fi
# 	;;
#    removal)
# 	if [ ! -w $SGML_CENTRALIZED ]
# 	then
# 	  echo "`basename $0`: can not modify \"$SGML_CENTRALIZED\"." >&2
# 	  exit 2
# 	fi
# 	;;
# esac

# Check that we have at least one ordinary package to process
if [ -z "$SGML_ORDINARY" ]; then
  echo -e $SGML_HELP_MESSAGE >&2 ; exit 1
fi
case $SGML_ACTION in
  addition)
    if [ ! -s $SGML_ORDINARY ]; then
      echo "`basename $0`: \"$SGML_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_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_CENTRALIZED
    # fi
    grep -q -e "$SGML_ORDINARY\"\?[ 	]*$" /etc/sgml/catalog 2>/dev/null
    if [ $? -ne 0 ]; then
      echo "`basename $0`: addition of $SGML_ORDINARY in /etc/sgml/catalog"
      echo "$SGML_POINTER \"$SGML_ORDINARY\"" >> /etc/sgml/catalog
    fi
    ;;
  removal)
    # echo "`basename $0`: removal of $SGML_ORDINARY from $SGML_CENTRALIZED"
    # if grep -q $SGML_ORDINARY $SGML_CENTRALIZED 2>/dev/null
    #   then
    #   sed -e "\:$SGML_POINTER $SGML_ORDINARY:d" < $SGML_CENTRALIZED > ${SGML_CENTRALIZED}.new
    #   mv ${SGML_CENTRALIZED}.new $SGML_CENTRALIZED
    # else
    #   echo "Warning: $SGML_ORDINARY was not found in the centralized catalog $SGML_CENTRALIZED" >&2
    # fi
    # set -x
      # rm $SGML_ORDINARY
    echo "`basename $0`: removal of $SGML_ORDINARY from /etc/sgml/catalog"
    sed -e "\:$SGML_POINTER \+\"\?$SGML_ORDINARY\"\?[ 	]*$:d" /etc/sgml/catalog \
      > /etc/sgml/catalog.new
    mv /etc/sgml/catalog.new /etc/sgml/catalog
    ;;
esac

exit 0
