#!/bin/sh

# Deleting all locale files on system
# *not* listed in /etc/locale.nopurge

set -e

LOCALEDIR=/usr/share/locale
MANPAGEDIR=/usr/share/man

# Do nothing and report why if no valid configuration file exists:

if [ ! -f /etc/locale.nopurge ]
    then
        echo " No /etc/locale.nopurge file present, exiting ..."
        exit 0
    else
        if [ `grep -x ^NEEDSCONFIGFIRST /etc/locale.nopurge` ]
	    then
	        echo ""
		    echo "    You have to configure \"localepurge\" with the command"
            echo ""
            echo "        dpkg-reconfigure localepurge"
            echo ""
		    echo "    to make $0 actually start to function."
            echo ""
		    echo "    Nothing to be done, exiting ..."
	        echo ""
		exit 0
	fi
fi

# Getting rid of superfluous locale files in $LOCALEDIR:

if [ -d $LOCALEDIR ]; then

    LOCALEBEFORE=`du -s $LOCALEDIR | cut -f1`

    if [ `grep -x ^VERBOSE /etc/locale.nopurge` ]; then
        echo "  localepurge: processing locale files ..."
    fi

    for LOCALE in `/bin/ls $LOCALEDIR`
     do
       if [ ! `grep -x ^$LOCALE /etc/locale.nopurge` ]; then
           if [ -d $LOCALEDIR/$LOCALE/LC_MESSAGES ]; then
               if [ `grep -x ^VERBOSE /etc/locale.nopurge` ]; then
                   echo "     Purging $LOCALEDIR/$LOCALE"
    	       fi
               /bin/rm -rf $LOCALEDIR/$LOCALE
           fi
       fi
     done

    if [ `grep -x ^SHOWFREEDSPACE /etc/locale.nopurge` ]; then
        LOCALEAFTER=`du -s $LOCALEDIR | cut -f1`
        LOCALETOTAL=$(($LOCALEBEFORE - $LOCALEAFTER))
        if [ ! $LOCALEBEFORE = $LOCALEAFTER ]; then
            echo "  localepurge: Disk space freed in $LOCALEDIR: "$LOCALETOTAL"K"
        fi
    fi
fi

# Getting rid of localized man pages in $MANPAGEDIR

if [ -d $MANPAGEDIR ] && [ `grep -x ^MANDELETE /etc/locale.nopurge` ]; then

    MANBEFORE=`du -s $MANPAGEDIR | cut -f1`

    if [ `grep -x ^VERBOSE /etc/locale.nopurge` ]; then
        echo "  localepurge: processing man pages ..."
    fi

    for LOCALE in `/bin/ls $MANPAGEDIR | grep -v ^man[1-9]`
     do
       if [ ! `grep -x ^$LOCALE /etc/locale.nopurge` ]; then
           if [ -d $MANPAGEDIR/$LOCALE ]; then
               if [ `grep -x ^VERBOSE /etc/locale.nopurge` ]; then
                   echo "     Purging $MANPAGEDIR/$LOCALE"
    	       fi
               rm -rf $MANPAGEDIR/$LOCALE
           fi
       fi
     done

    if [ `grep -x ^SHOWFREEDSPACE /etc/locale.nopurge` ]; then
        MANAFTER=`du -s $MANPAGEDIR | cut -f1`
        MANTOTAL=$(($MANBEFORE - $MANAFTER))
        if [ ! $MANBEFORE = $MANAFTER ]; then
            echo "  localepurge: Disk space freed in $MANPAGEDIR: "$MANTOTAL"K"
        fi
    fi
fi

# Calculating and reporting total disk space freed:

if [ `grep -x ^SHOWFREEDSPACE /etc/locale.nopurge` ]; then
    if [ $MANTOTAL ] && [ $LOCALETOTAL ]; then
        if [ ! $MANBEFORE = $MANAFTER ] && [ ! $LOCALEBEFORE = $LOCALEAFTER ]; then
            echo ""
            echo "  Total disk space freed by localepurge: "$(($LOCALETOTAL + $MANTOTAL))"K"
            echo ""
        fi
    fi
fi
