#!/bin/bash
#=======================================================================
# Copyright (c) 1999 Daniele Giacomini daniele@pluto.linux.it
#
# 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., 675 Mass Ave, Cambridge, MA 02139, USA.
#=======================================================================
# debian-doppi
#
# Interviene nella directory *corrente* eliminando i file doppi,
# pi vecchi. Il confronto viene fatto utilizzando:
#
#       dpkg --field <archivio> package
#       dpkg --field <archivio> version
#	dpkg --compare-versions <versione1> eq <versione0>
#	dpkg --compare-versions <versione1> gt <versione0>
#	dpkg --compare-versions <versione1> lt <versione0>
#
#=======================================================================

#-----------------------------------------------------------------------
# Inizializza le variabili di ambiente che servono per accumulare
# i valori per il confronto.
#-----------------------------------------------------------------------
ARCHIVIO0=""
ARCHIVIO1=""

PACCHETTO0=""
PACCHETTO1=""

VERSIONE0=""
VERSIONE1=""

#----------------------------------------------------------------------
# Inizia il ciclo di scansione degli archivi Debian che si trovano
# nella directory corrente.
#----------------------------------------------------------------------
for ARCHIVIO1 in *.deb
do

    #------------------------------------------------------------------
    # Se il nome  *.deb, non ci sono file del genere.
    #------------------------------------------------------------------
    if [ "$ARCHIVIO1" = "*.deb" ]
    then

	#--------------------------------------------------------------
	# Non si fa nulla.
	#--------------------------------------------------------------
	exit
    fi

    #------------------------------------------------------------------
    # Estrae il nome del pacchetto.
    #------------------------------------------------------------------
    PACCHETTO1=`dpkg --field $ARCHIVIO1 package`

    #------------------------------------------------------------------
    # Estrae la versione del pacchetto.
    #------------------------------------------------------------------
    VERSIONE1=`dpkg --field $ARCHIVIO1 version`

    #------------------------------------------------------------------
    # Confronta con il pacchetto precedente.
    #------------------------------------------------------------------
    if [ "$PACCHETTO1" == "$PACCHETTO0" ]
    then

	if dpkg --compare-versions "$VERSIONE1" eq "$VERSIONE0"
	then

	    #----------------------------------------------------------
	    # Si tratta di una anomalia in cui si deve intervenire a
	    # mano.
	    #----------------------------------------------------------
	    echo "Gli archivi seguenti hanno la stessa versione:"
	    echo "    $ARCHIVIO0"
	    echo "    $ARCHIVIO1"
	    echo

	    #----------------------------------------------------------
	    # In questo caso, non occorre spostare i valori nelle
	    # variabili.
	    #----------------------------------------------------------
	    
	elif dpkg --compare-versions "$VERSIONE1" gt "$VERSIONE0"
	then

	    #----------------------------------------------------------
	    # Si elimina l'archivio del pacchetto pi vecchio.
	    #----------------------------------------------------------
	    rm -f "$ARCHIVIO0"
	    echo "Eliminato $ARCHIVIO0"

	    #----------------------------------------------------------
	    # Sposta i valori nelle variabili.
	    #----------------------------------------------------------
	    ARCHIVIO0="$ARCHIVIO1"
	    PACCHETTO0="$PACCHETTO1"
	    VERSIONE0="$VERSIONE1"

	elif dpkg --compare-versions "$VERSIONE1" lt "$VERSIONE0"
	then

	    #----------------------------------------------------------
	    # Si elimina l'archivio del pacchetto pi vecchio.
	    #----------------------------------------------------------
	    rm -f "$ARCHIVIO1"
	    echo "Eliminato $ARCHIVIO1"

	    #----------------------------------------------------------
	    # In questo caso, non occorre spostare i valori nelle
	    # variabili.
	    #----------------------------------------------------------

	else

	    #----------------------------------------------------------
	    # Questo caso non dovrebbe verificarsi.
	    #----------------------------------------------------------
	    echo "C' un errore nel confronto degli archivi seguenti:"
	    echo "    $ARCHIVIO0"
	    echo "    $ARCHIVIO1"
	    echo

	    #----------------------------------------------------------
	    # In questo caso, non occorre spostare i valori nelle
	    # variabili.
	    #----------------------------------------------------------

	fi

    else

	#--------------------------------------------------------------
	# Dal momento che i pacchetti sono differenti, si devono
	# salvare le variabili prima di procedere.
	#--------------------------------------------------------------
	ARCHIVIO0="$ARCHIVIO1"
	PACCHETTO0="$PACCHETTO1"
	VERSIONE0="$VERSIONE1"

    fi

done

#=======================================================================

