--- /dev/null
+# Template-File for Translations
+# Copyright (C) 2006 Frank Brehm
+# This file is distributed under the same license as the test-gettext package.
+# Frank Brehm <brehm@strato.de>, 2006.
+#
+# $Id$
+# $URL$
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Datei-Sicherungs-Script 1.1\n"
+"Report-Msgid-Bugs-To: <brehm@strato.de>\n"
+"POT-Creation-Date: 2006-12-28 15:00+0100\n"
+"PO-Revision-Date: 2006-12-28 15:00+0100\n"
+"Last-Translator: Frank Brehm <brehm@strato>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# #: test-gettext.pl:29
+# #, perl-format
+# msgid "Current location of localisation files: '%s'\n"
+# msgstr "Aktuelle Lage der Lokalisierungs-Dateien: '%s'\n"
+
+# #: test-gettext.pl:31
+# msgid "Welcome to my program."
+# msgstr "Willkommen zu meinem Programm."
+
+# #: test-gettext.pl:33
+# #, perl-format
+# msgid "Today: UNIX-Timestamp %d, local time: %s\n"
+# msgstr "Lokale Uhrzeit: %2$s, Heute: UNIX-Timestamp %1$d\n"
+
+# #: test-gettext.pl:36
+# #, perl-format
+# msgid "I've count one man\n"
+# msgid_plural "I've count %d men\n"
+# msgstr[0] "Ich habe einen Mann gezählt.\n"
+# msgstr[1] "Ich habe %d Männer gezählt.\n"
+
+# Die Sprachbezeichnungen
+msgid "german"
+msgstr "deutsch"
+
+# Die Sprachbezeichnungen
+msgid "english"
+msgstr "englisch"
+
+
=head1 SYNOPSIS
- sicher.pl [-c <configfile>] [-t] [-v[ -v...]] [-D <debuglevel>] [<Datei1> [Datei2] usw.]
+ sicher.pl [-t] [-v[ -v...]] [-D <debuglevel>] [-o <oldirname>] [<Datei1> [Datei2] usw.]
sicher.pl -h
sicher.pl -V
=over 4
-=item B<--configfile I<configfile>>
-
-=item B<--conf I<configfile>>
-
-=item B<-c I<configfile>> - Konfigurationsdatei
-
-Wenn nicht angegeben, wird C</etc/sicher.conf> bzw., wenn vorhanden, die Datei C<$HOME/.sicher.conf> verwendet.
-
=item B<--verbose>
=item B<-v> - Verbose-Level (Debug-Level)
Die Parameter C<-v> und C<-D> wirken sich gleich aus.
Wenn beide angegeben werden, wird der hoehere von beiden verwendet.
+=item B<--olddir oldirname>
+
+=item B<--old oldirname>
+
+=item B<-o olddirname>
+
+Gibt den Namen des Verzeichnisses an, in dem Sicherheitskopien abgelegt werden.
+
+Wenn nicht angegeben, wird C<.old> verwendet.
+
=item B<--test>
=item B<-t> - Testmodus
=back
+=head1 ENVIRONMENT
+
+=over 4
+
+=item B<OLDDIR>
+
+Gibt den Namen des Verzeichnisses an, in dem Sicherheitskopien abgelegt werden. Wird
+von der Kommandozeilenoption C<-o> overruled.
+
+Wenn nicht angegeben, wird C<.old> verwendet.
+
+=back
+
=cut
use Data::Dumper;
use Getopt::Long;
use Pod::Usage;
-use Time::HiRes qw( gettimeofday tv_interval );
+# use Time::HiRes qw( gettimeofday tv_interval );
+use File::Basename;
+use File::Spec::Functions;
+use Locale::gettext;
+use POSIX qw(setlocale LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME);
$| = 1;
$Revis =~ s/^.*:\s*(\S+)\s*\$.*/$1/s;
our $VERSION = "1." . $Revis;
-my ( $cfgfile, $test_mode, $help, $cmdline_verbose, $show_version, $DebugLevel );
+my ( $olddir, $test_mode, $help, $cmdline_verbose, $show_version, $DebugLevel );
unless (
GetOptions(
- "configfile|conf|c=s" => \$cfgfile,
+ "olddir|old|o=s" => \$olddir,
"test|t" => \$test_mode,
"help|h|?" => \$help,
"verbose|v+" => \$cmdline_verbose,
exit 0;
}
+$olddir ||= $ENV{'OLDDIR'} || '.old';
+
+print "OldDir-Name: '" . $olddir . "'\n" if $verbose;
+print "Test-Modus: " . ( $test_mode ? "ON" : "OFF" ) . "\n" if $verbose or $test_mode;
+if ($verbose) {
+ print "Verbose-Level: " . $verbose . "\n";
+}
+
+print "\nInitialisiere Locales ....\n" if $verbose > 1;
+my $l = Locale::gettext->domain_raw('sicher');
+unless ( $l ) {
+ die "Konnte Locale::gettext nicht initialisieren.\n";
+}
+$l->codeset('utf-8');
+
+my $locale_dir = catdir( dirname($0), "locale" );
+$l->dir($locale_dir);
+_debug( 5, "Locale-Objekt: ", $l );
+_debug( 2, "Locale-Verzeichnis: ", $locale_dir );
+
+
+exit 0;
+
+
+#################################################################################################################
+
+=head1 Funktionen
+
+die halt mal so begraucht werden...
+
+#---------------------------------------------------------------------------
+
+=head2 _debug( $debug_level, @messages )
+
+Logroutine fuer Debug-Logging ...
+
+=cut
+
+sub _debug {
+
+ my $debug_level = shift;
+
+ # Debug-Level richtig setzen
+ $debug_level = to_int($debug_level);
+ $debug_level = 1 unless defined $debug_level;
+
+ return undef if $debug_level > $verbose;
+
+ # Zuerst die Messages zurechtstutzen...
+ my @Out = ();
+
+ for (@_) {
+ my $msg = defined $_ ? $_ : "";
+ chomp $msg;
+ $msg = Dumper($msg) if ref($msg);
+ push @Out, $msg;
+ }
+
+ my $out = join( " ", @Out );
+ @Out = ();
+
+ # Datum zu Meldung dazu ...
+ $out = "[" . localtime() . "] debug-" . $debug_level . ": " . $out . "\n";
+
+ # Ausgabe auf Stdout
+ print $out;
+
+ return 1;
+
+}
+
+#---------------------------------------------------------------------------
+
+=head2 _error( $error_level, @messages )
+
+Fehler-Ausgabefunktion
+
+=cut
+
+sub _error {
+
+ my $error_level = shift;
+
+ # Zuerst die Messages zurechtstutzen...
+ my @Out = ();
+
+ for (@_) {
+ my $msg = defined $_ ? $_ : "";
+ chomp $msg;
+ $msg = Dumper($msg) if ref($msg);
+ push @Out, $msg;
+ }
+
+ my $out = join( " ", @Out );
+ @Out = ();
+
+ $error_level = 'notice' unless defined $error_level;
+ if ( $error_level =~ /^\s*(emerg|alert|crit|err|warning|notice|info)\s*$/i ) {
+ $error_level = lc($1);
+ }
+ elsif ( $error_level =~ /^\s*error\s*$/i ) {
+ $error_level = 'err';
+ }
+ elsif ( $error_level =~ /^\s*warn\s*$/i ) {
+ $error_level = 'warning';
+ }
+ else {
+ $error_level = 'notice';
+ }
+
+ # Datum + Error-level zu Meldung dazu ...
+ $out = "[" . localtime() . "] " . $error_level . ": " . $out . "\n";
+ warn $out;
+
+ return 1;
+
+}
+
+#------------------------------------------------------------------------------------------
+
+=head2 to_int( $wert, $signed )
+
+Wandelt den uebergebenen Wert sicher in eine Integer-Zahl um.
+
+Dabei legt der optionale logische Parameter $signed fest, ob auch
+vorzeichenbehaftete Werte zulaessig sind.
+
+Wenn keine gueltige Zahl uebergeben wird, wird undef zurueckgegeben.
+
+=cut
+
+sub to_int {
+
+ my $val = shift;
+ my $signed = shift;
+
+ return undef unless defined $val;
+ unless ( $val =~ /\d/ ) {
+ return undef;
+ }
+
+ if ($signed) {
+ $val =~ /^[^\d-]*(?:(-)\s*)?(\d+)/;
+ $val = ( defined $1 ? $1 : '' ) . $2;
+ }
+ else {
+ $val =~ /^\D*(\d+)/;
+ $val = $1;
+ }
+
+ return $val + 0;
+
+} ## end sub to_int
+
+#------------------------------------------------------------------------------
+
+__END__