#!/bin/bash
#======================================================================
# Copyright (c) 1997-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.
#======================================================================
# ricicla <file>...
#
# Crea una directory transitoria nella quale sposta i dati da eliminare.
# In seguito potranno essere eliminati definitivamente utilizzando
# ``rm''.
#======================================================================

#======================================================================
# Variabili.
#======================================================================

    #------------------------------------------------------------------
    # Il nome del punto di inizio del sistema di riciclaggio.
    #------------------------------------------------------------------
    CESTINO="$HOME/.riciclaggio"
    #------------------------------------------------------------------
    # Questa variabile contiene un nome composto dall'anno, il mese,
    # il giorno, le ore, i minuti e i secondi del momento in cui
    # si esegue lo script.
    # Questo nome verr utilizzato per ottenere una directory
    # che funga da contenitore dei file da riciclare.
    #------------------------------------------------------------------
    RICICLO=$(date +%Y%m%d%H%M%S)

#======================================================================
# Inizio.
#======================================================================

    #------------------------------------------------------------------
    # Verifica se esiste la directory di partenza del sistema di
    # riciclaggio.
    #------------------------------------------------------------------
    if [ -e $CESTINO ]
    then
        #--------------------------------------------------------------
        # Qualcosa con il nome del cestino esiste gi.
        # Si deve verificare che si tratti di una directory.
        #--------------------------------------------------------------
        if [ ! -d $CESTINO ]
        then
            #----------------------------------------------------------
            # Non si tratta di una directory.
            # Non si pu procedere con il riciclaggio.
            #----------------------------------------------------------
            echo "Non  possibile procedere con il riciclaggio"
            echo "perch $CESTINO esiste e non  una directory."
            #----------------------------------------------------------
            # Lo script termina restituendo un valore corrispondente
	    # a falso.
            #----------------------------------------------------------
            exit 1
        fi
    else
        #--------------------------------------------------------------
        # La directory non esiste.
        # Si tenta di crearla.
        #--------------------------------------------------------------
	if ! mkdir $CESTINO
        then
            #----------------------------------------------------------
            # Non  stato possibile creare il cestino: forse
            # ci sono problemi di permessi.
            #----------------------------------------------------------
            echo "Non  possibile creare la directory"
            echo "$CESTINO"
            #----------------------------------------------------------
            # Lo script termina restituendo un valore corrispondente
	    # a falso.
            #----------------------------------------------------------
            exit 1
        fi
    fi
    #------------------------------------------------------------------
    # Giunti a questo punto, dovrebbe esistere la directory
    # $CESTINO. Si passa a creare la sottodirectory usata per
    # questa particolare operazione di riciclaggio.
    #------------------------------------------------------------------
    if ! mkdir $CESTINO/$RICICLO
    then
        #--------------------------------------------------------------
        # Non  stato possibile creare il cestino: forse
        # ci sono problemi di permessi.
        #--------------------------------------------------------------
        echo "Non  possibile creare la directory"
        echo "$CESTINO/$RICICLO"
        #--------------------------------------------------------------
        # Lo script termina restituendo un valore falso.
        #--------------------------------------------------------------
        exit 1
    fi
    #------------------------------------------------------------------
    # A questo punto sono stati superati tutti gli ostacoli.
    # Si procede con il trasferimento dei dati da eliminare.
    # Se lo spostamento con mv non funziona, si tratta di un
    # tentativo di spostare directory attraverso filesystem differenti.
    #------------------------------------------------------------------
    if ! mv $* $CESTINO/$RICICLO 2> /dev/null
    then
        #--------------------------------------------------------------
        # Essendo fallito lo spostamento, almeno in parte, si procede
        # con la copia.
        # La copia viene fatta mantenendo i collegamenti simbolici
	# come tali.
        #--------------------------------------------------------------
        if cp -dpR $* $CESTINO/$RICICLO 2> /dev/null
        then
            #----------------------------------------------------------
            # La copia ha funzionato, si procede a eliminare l'origine.
            #----------------------------------------------------------
            rm -r $*
        fi
    fi
    #------------------------------------------------------------------
    # Si conclude con un resoconto.
    #------------------------------------------------------------------
    echo "I file seguenti sono stati trasferiti in $CESTINO/$RICICLO"
    ls "$CESTINO/$RICICLO"

#======================================================================
# Fine.
#======================================================================
