#! /bin/sh
#                           -*- Mode: Sh -*-
# postinst ---
# Author           : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com )
# Created On       : Fri Nov 14 11:25:07 2003
# Created On Node  : glaurung.green-gryphon.com
# Last Modified By : Manoj Srivastava
# Last Modified On : Mon Dec  1 21:50:09 2003
# Last Machine Used: glaurung.green-gryphon.com
# Update Count     : 27
# Status           : Unknown, Use with caution!
# HISTORY          :
# Description      :
#
# arch-tag: 5401e9ef-39cc-4aee-96a4-61dfb8f32cf7
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#

# Abort if any command returns an error value
set -e

package_name=dist;

if [ -z "$package_name" ]; then
    print >&2 "Internal Error. Please report a bug."
    exit 1;
fi

# This script is called as the last step of the installation of the
# package.  All the package's files are in place, dpkg has already done
# its automatic conffile handling, and all the packages we depend of
# are already fully installed and configured.
# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
# quoting from the policy:
#     Any necessary prompting should almost always be confined to the
#     post-installation script, and should be protected with a conditional
#     so that unnecessary prompting doesn't happen if a package's
#     installation fails and the `postinst' is called with `abort-upgrade',
#     `abort-remove' or `abort-deconfigure'.

# The following idempotent stuff doesn't generally need protecting
# against being run in the abort-* cases.

# Install info files into the dir file
##: install-info --quiet --section "section pattern" "Section Title" \
##:              --description="Name of the document" /usr/info/${package_name}.info

# Create stub directories under /usr/local
##: if test ! -d /usr/local/lib/${package_name}; then
##:   if test ! -d /usr/local/lib; then
##:     if mkdir /usr/local/lib; then
##:       chown root.staff /usr/local/lib || true
##:       chmod 2775 /usr/local/lib || true
##:     fi
##:   fi
##:   if mkdir /usr/local/lib/${package_name}; then
##:     chown root.staff /usr/local/lib/${package_name} || true
##:     chmod 2775 /usr/local/lib/${package_name} || true
##:   fi
##: fi

# Ensure the menu system is updated
##: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus

# Arrange for a daemon to be started at system boot time
##: update-rc.d ${package_name} default >/dev/null

ask_organization () {
    if [ -e /usr/share/debconf/confmodule ]; then
	. /usr/share/debconf/confmodule
	db_capb
	ok=''
         # See if the old shared question still exists.
	if db_get share/news/organization; then
	    if [ "X$RET" != "X" ]; then
		orgname="$RET"
		db_fget share/news/organization seen
		if [ "$RET" = true ]; then
		    if [ "$orgname" = "--none--" ]; then
			orgname=""
		    fi
		else
		    orgname=""
		fi
		# I no longer claim this question.
		db_unregister share/news/organization
	    fi
	else
	    # Good. The old question is gone.
	    if ! db_get shared/news/organization; then
		while [ ! "$ok" ]; do
		    retval=$(db_input low  shared/news/organization) || true
		    if [ "$retval" = "30 question skipped" ]; then
			ok=1
		    fi
		    db_go || true
		    db_get shared/news/organization
		    if [ "X$RET" != "X" ]; then
			ok=1
			break
		    fi
		done
	    fi
	    db_fget shared/news/organization seen
	    if [ "$RET" = true ]; then
	         # The user saw and answered the question using debconf.
		db_get shared/news/organization
		if [ "$RET" = "--none--" ]; then
		    orgname=""
		else
		    orgname="$RET"
		fi
	    else
	         # Debconf did not display the question to the user.
		orgname=""
	    fi
	fi
    else
         # Debconf is not available so ask the question by hand.
	echo ""
	/bin/cat << 'EOH'

	Please type the name of your organization as you want it to
	appear on the Organization line of outgoing articles/patches.
	This information is stored in the configuration file
	/etc/news/organization. (It is nice if this also specifies
	your location.  Your city name is probably sufficient if well
	known.) For example:

	    University of Southern North Dakota, Hoople
         type in "--none--" if you do not want to specify one.
         However, you shall be asked again on the next upgrade if
         /etc/news/organization does not exist.

EOH

	orgname=""
	while test "X$orgname" = "X"; do
	    rp='Organization:'
	    xxxm=$dflt
	    case "$xxxm" in
		'')  echo -n "$rp " ;;
		*)   case "$rp" in
		    '') echo -n "[$xxxm] ";;
		*)
		    if test `echo "$rp [$xxxm]  " | wc -c` -ge 80; then
			echo "$rp"
			echo -n "[$xxxm] "
		    else
			echo -n "$rp [$xxxm] "
		    fi
		    ;;
	    esac;;
	    esac
	    ans='!'
	    while expr "X$ans" : "X!" >/dev/null; do
		read answ
		set x $xxxm
		shift
		aok=''; eval "ans=\"$answ\"" && aok=y
		case  "$answ" in
		    "$ans")
			case "$ans" in
			    "!")
				sh
				echo " "
				case "$xxxm" in
				    '') echo -n "$rp " ;;
				    *)   case "$rp" in
					'') echo -n "[$xxxm] ";;
				    *)
					if test `echo "$rp [$xxxm]  " | wc -c` -ge 80; then
					    echo "$rp"
					    echo -n "[$xxxm] "
					else
					    echo -n "$rp [$xxxm] "
					fi
					;;
				esac;;
			esac
			;;
		    !*)
			set x `expr "X$ans" : "X!\(.*\)$"`
			shift
			sh -c "$*"
			echo " "
			case "$xxxm" in
			    '')   echo -n "$rp ";;
			    *)   case "$rp" in
				'') echo -n "[$xxxm] ";;
			    *)
				if test `echo "$rp [$xxxm]  " | wc -c` -ge 80; then
				    echo "$rp"
				    echo -n "[$xxxm] "
				else
				    echo -n "$rp [$xxxm] "
				fi
				;;
			esac;;
		esac
		;;
		esac;;
		*)
		case "$aok" in
		    y)
			echo "*** Substitution done -- please confirm."
			xxxm="$ans"
			ans=`echo -n "$ans" | tr '\012' ' '`
			xxxm="$ans"
			ans=!
			;;
		    *)
			echo "*** Error -- try again."
			ans=!
			;;
		esac
		case "$xxxm" in
		    '')   echo -n "$rp " ;;
		    *)   case "$rp" in
			'') echo -n "[$xxxm] ";;
		    *)
			if test `echo "$rp [$xxxm]  " | wc -c` -ge 80; then
			    echo "$rp"
			    echo -n "[$xxxm] "
			else
			    echo -n "$rp [$xxxm] "
			fi
			;;
		esac;;
		esac
		;;
		esac
		case "$ans$xxxm$nostick" in
		    '')
			ans=!
			case "$xxxm" in
			    '')   echo -n "$rp " ;;
			    *)   case "$rp" in
				'') echo -n "[$xxxm] ";;
			    *)
				if test `echo "$rp [$xxxm]  " | wc -c` -ge 80; then
				    echo "$rp"
				    echo -n "[$xxxm] "
				else
				    echo -n "$rp [$xxxm] "
				fi
				;;
			esac;;
		esac
		;;
		esac
	    done
	    case "$ans" in
		'') ans="$xxxm";;
	    esac
	    orgname="$ans"
	done
	if [ "$ans" = "--none--" ]; then
	    orgname=""
	fi
    fi

}

set_org_perms () {
    chown root /etc/news/organization
    if grep news /etc/group 2>&1 >/dev/null ; then
	chgrp news /etc/news/organization
    else
	chgrp root /etc/news/organization
    fi
    chmod 0644 /etc/news/organization
}

case "$1" in
  configure)
    # Configure this package.  If the package must prompt the user for
    # information, do it here.
    # Install emacs lisp files
    ##:if [ -x  /usr/lib/emacsen-common/emacs-package-install ]; then
    ##:    /usr/lib/emacsen-common/emacs-package-install $package_name
    ##:fi


    # Activate menu-methods script
    ##: chmod a+x /etc/menu-methods/${package_name}

    # Update ld.so cache
    ##: ldconfig

    # Make our version of a program available
    ##: update-alternatives \
    ##:       --install /usr/bin/program program /usr/bin/alternative 50 \
    ##:       --slave /usr/man/man1/program.1.gz program.1.gz \
    ##:               /usr/man/man1/alternative.1.gz

    # Tell ucf that the file in /usr/share/foo is the latest
    # maintainer version, and let it handle how to manage the real
    # confuguration file in /etc. This is how a static configuration
    # file can be handled:
    ##:if which ucf >/dev/null 2>&1; then
    ##:  ucf /usr/share/${package_name}/configuration /etc/${package_name}.conf
    ##:fi

    ### We could also do this on the fly. The following is from Tore
    ### Anderson:

    if [ -e /usr/share/debconf/confmodule ]; then
	. /usr/share/debconf/confmodule
    fi


    ### find out what the user answered.
    #  db_get foo/run_on_boot
    #  run_on_boot=$RET
    #  db_stop

    ### safely create a temporary file to generate our suggested
    ### configuration file.
    #    tempfile=`tempfile`
    #    cat << _eof > $tempfile
    ### Configuration file for Foo.

    ### this was answered by you, the user in a debconf dialogue
    #  RUNONBOOT=$run_on_boot

    ### this was not, as it has a sane default value.
    #  COLOUROFSKY=blue

    #_eof

    ### Note that some versions of debconf do not release stdin, so
    ### the following invocation of ucf may not work, since the stdin
    ### is never coneected to ucfr.

    ### now, invoke ucf, which will take care of the rest, and ask
    ### the user if he wants to update his file, if it is modified.
    #ucf $tempfile /etc/foo.conf

    ### done! now we'll just clear up our cruft.
    #rm -f $tempfile



    # There are three sub-cases:
    if test "${2+set}" != set; then
      # We're being installed by an ancient dpkg which doesn't remember
      # which version was most recently configured, or even whether
      # there is a most recently configured version.
      :

    elif test -z "$2" || test "$2" = "<unknown>"; then
      # The package has not ever been configured on this system, or was
      # purged since it was last configured.
      :

    else
      # Version $2 is the most recently configured version of this
      # package.
      :

    fi

    if [ ! -f /etc/news/organization ]; then
	echo ""
	echo "Hmmm.. You don't seem to have an /etc/news/organization file."
	echo "Ususally that contains the name of your organization as "
	echo "you want it to appear on the Organization line of outgoing"
	echo "articles/patches."
	echo ""

	: echo create directory
	if test ! -d /etc/news ; then
	    mkdir /etc/news
	    chown root /etc/news
	    if grep news /etc/group 2>&1 >/dev/null ; then
		chgrp news /etc/news
	    else
		echo "darn, you do not have news in /etc/group"
		chgrp root /etc/news
	    fi
	    chmod 2755 /etc/news
	fi

	# if the organization stuff exists, then copy that over
	if test -f /etc/organization ; then
	    echo "But you do have /etc/organization.  I'll Use that."
	    echo "If that is not right, just edit the /etc/news/organization "
	    echo "after the setup is done. (/etc/organization is deprecated. You"
	    echo "might consider removing it if nothing else uses it)."
	    echo ""
	    cp /etc/organization /etc/news/organization
	    set_org_perms
	else
	    : echo get organization name
	    ask_organization
	    if [ "X$orgname" != "X" ]; then
		echo "$orgname" > /etc/news/organization
		set_org_perms
	    fi
	fi
    fi

    ;;

  abort-upgrade)
    # Back out of an attempt to upgrade this package FROM THIS VERSION
    # to version $2.  Undo the effects of "prerm upgrade $2".
    :

    ;;
  abort-remove)
    if test "$2" != in-favour; then
      echo "$0: undocumented call to \`postinst $*'" 1>&2
      exit 0
    fi
    # Back out of an attempt to remove this package, which was due to
    # a conflict with package $3 (version $4).  Undo the effects of
    # "prerm remove in-favour $3 $4".
    :

    ;;
  abort-deconfigure)
    if test "$2" != in-favour || test "$5" != removing; then
      echo "$0: undocumented call to \`postinst $*'" 1>&2
      exit 0
    fi
    # Back out of an attempt to deconfigure this package, which was
    # due to package $6 (version $7) which we depend on being removed
    # to make way for package $3 (version $4).  Undo the effects of
    # "prerm deconfigure in-favour $3 $4 removing $6 $7".
    :

    ;;
  *) echo "$0: didn't understand being called with \`$1'" 1>&2
     exit 0;;
esac

# Install doc base documentation
##:if which install-docs >/dev/null 2>&1; then
##:  if [ -e /usr/share/doc-base/${package_name} ]; then
##:    install-docs -i /usr/share/doc-base/${package_name}
##:  fi
##:fi

#DEBHELPER#

exit 0
