#!/usr/bin/perl

###############################################################################
#                                                                             #
#               Dimke SetDate - Setzen von Datum und Uhrzeit von Dateien      #
#               SetDate ist das komplementaere Gegenstueck zu Dimke GetDate.  #
#                                                                             #
#               Alle Rechte vorbehalten. Copyright (C) 2007                   #
#               Dipl.-Ing. Markus Robert Kessler                              #
#               Bad Schussenried, Germany                                     #
#                                                                             #
###############################################################################
#                                                                             #
#               Anwendung:                                                    #
#                                                                             #
#               setdate Dateiliste [ -i : optional interaktiver Betrieb ]     #
#                                                                             #
###############################################################################

$datei=$ARGV[0];
$interaktiv=$ARGV[1];

if ( $datei eq "" || $datei eq "-i" ) {
    print stderr "Dimke SetDate - Parameterformat fehlerhaft.\n";
    print stderr "Aufruf: setdate Dateiliste [-i]\n";
    print stderr "Option: -i Interaktiv.\n";
    print stderr "NOT OK.\n";
    exit ( -1 );
}

if ( !( -f $datei ) ) {
    print stderr "Dimke SetDate - Fataler Fehler:\n";
    print stderr "Datei $datei existiert nicht - Abbruch.\n";
    print stderr "NOT OK.\n";
    exit ( -1 );
}

$test = `grep -c '[;|\`]' $datei`; chomp ( $test );

if ( $test ne '0' ) {
    print stderr "Dimke SetDate - Fataler Fehler:\n";
    print stderr "Datei $datei enthaelt Sonderzeichen.\n";
    print stderr "Dies ist ein Sicherheitsrisiko - Abbruch.\n";
    print stderr "NOT OK.\n";
    exit ( -1 );
}

open ( DATEI , $datei );
    @zeilen = <DATEI>;
close(DATEI);

foreach $zeile (@zeilen) {
    chomp ( $zeile );
    $anweisung="touch -c -t $zeile";
    print stderr "$anweisung\n";
    if ( $interaktiv eq '-i' ) {
        print stderr "Abarbeiten j/n? ";
        $antwort = <STDIN>; chomp ( $antwort );
        if ( $antwort eq 'j' ) {
            system ( $anweisung );
        }
    }
    else {
        system ( $anweisung );
    }
}

exit;
