#! /bin/sh
# Copyright (c) 2000-2003 International Business Machines
# Corporation and others. All Rights Reserved.
# postinst script for foo
#
# see: dh_installdeb(1)

set -e

# 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 /usr/share/doc/packaging-manual/
#
# 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'.

# Call ldconfig in a way that makes lintian happy.

if [ "$1" = "configure" ]; then ldconfig; fi

# And now do the rest of the configuration

case "$1" in
    configure)

	# Adjust the current ICU link in /usr/lib/icu

	if [ -d /usr/lib/icu ]
	then

	icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
	cd /usr/lib/icu
	rm -f current
	if test x"$icucurrent" != x
	then
	    ln -s "$icucurrent" current
	    ln -sf current/Makefile.inc .
	fi

	fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 0
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0


