#!/bin/sh

#
# SPDsoft, Wed Mar 31 13:18:55 MET DST 1999
# Thu May 12 13:24:08 CEST 2005
# Tue Dec 13 11:07:38 MET 2005
# Fri May 18 10:41:51 MEST 2007
#
# Elimina la basura del usuario


PATH=/bin:/usr/bin:/usr/ucb
export PATH


ECHO=echo
DO=echo

CMDLINE="$*"

usage()
{
    echo Use: $0 [options] directory
    cat <<++
    -y    do it
    -n    echo only, do nothing (default)
    -v    verbose (default)
    -q    quiet
    -u    user (requires root privileges)
    -C    Clean Caches only
    -H    Clean History only
    -B    Clean Backup only
    -G    Clean GreatSPN only
    -T    Clean Trash only
    -L    Clean LaTeX only
    -P    Clean core and object files only
    -A    Clean All
    -V    version
++

    exit 1
}


clean_cache()
{
	$ECHO "#### Cleaning Caches"
	$ECHO "# cleaning Netscape"
	$DO rm -rf .netscape/cache/*
	$ECHO "# cleaning Mosaic"
	$DO rm -rf .mosaic-cc* .mosaicpid
	$ECHO "# cleaning Mozilla"
	for f in .mozilla/*/*.slt .mozilla/firefox/*/
	do
		$DO rm -f "$f"/Cache/*
		$DO rm -rf "$f"/Cache.Trash
	done
	$ECHO "# cleaning Nautilus"
	$DO rm -rf .nautilus/MozillaProfile/Cache/*
	$ECHO "# cleaning Galeon"
	$DO rm -rf .galeon/mozilla/galeon/Cache/*
	$ECHO "# cleaning misc"
	$DO rm -f .xftpcache
}

clean_history()
{
	$ECHO "#### Cleaning history and logs"
	$DO rm -f .netscape/newsgroups-*
	$DO rm -f .netscape/history.db
	$DO rm -rf .mosaic-global-history
	for f in .mozilla/*/*.slt
	do
		$DO rm -f "$f"/history*
	done
	$DO rm -f .xsession-errors .pine-debug*
	$DO rm -f .viminfo* .twm*
	$DO rm -f .lsof_*
	$DO rm -rf .ncftp/history .ncftp/log .ncftp/trace*
	$DO rm -rf .desktop-*/ozPanelLayout-*/*_*
	$DO rm -rf .dt/sessionlogs/* .dt/startlog*
}

clean_tex()
{
	$ECHO "#### Cleaning TeX logs and PS files"
	for f in `find . \( -name '*.dvi' -o -name '*.log' -o -name '*.blg' \
        -o -name '*.aux' \) \
        -type f -print`
	do
        DIR=`dirname $f`
        PS=`basename $f`.dvi
        if [ -f $DIR/$PS ]
        then
                if head -10 $DIR/$PS | egrep -e '^%%Creator: dvipsk'
                then
                        $DO rm -f $DIR/$PS
                fi
        fi
        $DO rm -f $f
	done
}


clean_backup()
{
	$ECHO "#### Cleaning backup files"
	find . \( -name '*.bak' -o -name '#*#' -o -name '*~' -o -name '*%'  \
			-o -name '.*.bak' -o -name '.*~' -o -name '.*%'  \
			\) \
		-type f -exec $DO rm '{}' \;
}

clean_trash()
{
	$ECHO "#### Cleaning Trash files"
	$DO rm -rf 'Network Trash Folder'
	$DO rm -rf .hh
	$DO rm -f nsmail/Trash
	$DO rm -rf .wastebasket
	$DO rm -rf .dt/Trash
	for f in dumpster .dt/Trash .wastebasket
	do
	if [ -d $f ]
	then
		$DO rm -rf $f; umask 077; $DO mkdir $f
	fi
	done
	$DO touch dumpster/.dumpster 2>/dev/null
}

clean_gspn()
{
	$ECHO "#### Cleaning GreatSPN temporary files"
find nets .gspn/nets \( -name '*.aecs' -o -name '*.bnd' -o -name '*.cc' \
-o -name '*.crgr'  -o -name '*.ctrs'  -o -name '*.ecs'  \
-o -name '*.gmt'  -o -name '*.grg'  -o -name '*.me'  \
-o -name '*.pin'  -o -name '*.sc' -o -name '*.doubles' \
-o -name '*.mpd' -o -name '*.emc' -o -name '*.gst' \
-o -name '*.rgr_aux' -o -name '*.sta' -o -name '*.sub' \
-o -name '*.epd' -o -name '*.tpd' -o -name '*.livlck' \
-o -name '*.liveness' -o -name '*.tin' \) \
-type f -exec $DO rm {} \;
}


clean_program()
{
	$ECHO "#### Cleaning core and object files"
	find . \( -name '*.ali' -o -name core -o -name '*.o'  \) \
		-type f -exec $DO rm {} \;

}




CACHES=false
HISTORY=false
BACKUP=false
GSPN=false
LATEX=false
TRASH=false
PROGRAM=false
USER=""


set -- `getopt nyvhu:CHBGLTPA $*`
if [ $? != 0 ]
then
	 usage
fi


for i in $*
do
	case $i in
	-y) DO= ; shift;;
	-n) DO=echo ; shift;;
	-v) ECHO=echo ; shift;;
	-q) ECHO=: ; shift;;
	-u) USER=$2 ; shift ; shift;;
	-C) CACHES=: ; shift;;
	-H) HISTORY=: ; shift;;
	-B) BACKUP=: ; shift;;
	-G) GSPN=: ; shift;;
	-L) LATEX=: ; shift;;
	-T) TRASH=: ; shift;;
	-P) PROGRAM=: ; shift;;
	-A)
		CACHES=:
		HISTORY=:
		BACKUP=:
		GSPN=:
		LATEX=:
		PROGRAM=:
		shift;;
	-V) echo "$0 v 1.0.1, Dec 16 2005"; shift;;
	-h) usage; shift;;
	--) shift; break;;
	esac
done

export DO
export ECHO

if [ -z "$1" ]
then
	echo Use: $0 directory >&2
	exit 1
fi

if [ -d "$1" ]
then
	START_Q=`quota -v $USER`
	$CACHES && clean_cache
	$HISTORY && clean_history
	$LATEX && clean_tex
	$BACKUP && clean_backup
	$TRASH && clean_trash
	$GSPN && clean_gspn
	$PROGRAM && clean_program

	END_Q=`quota -v $USER`
	(
	$ECHO "$START_Q"
	$ECHO "$END_Q"
	) | sed -e 's/^/# /'

	if [ "_$DO" = "_echo" ]
	then
		cat >&2 <<-EOF

		WARNING!

		No files have been deleted. Review the above output and,
		if you like what you see, execute the same command adding
		the "-y" option and without any "-n" option.

		Otherwise, execute "/usr/local/etc/clean_home -h" to learn how to be
		more selective about what will be deleted.

		EOF
	fi

else
	echo Use: $0 directory. \"$1\" is not a directory >&2
	exit 1
fi

