From 1cefcca2d2391f4e25b28f26c34324af4417d11a Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Tue, 11 Apr 2006 14:03:20 +0000 Subject: [PATCH] Bugfixing beim Creating --- LogRotate.pm | 33 ++++++++++++++++++--------------- LogRotate/Conf.pm | 31 +++++++++++++++---------------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/LogRotate.pm b/LogRotate.pm index 10caf5d..2f4f2f6 100644 --- a/LogRotate.pm +++ b/LogRotate.pm @@ -853,11 +853,11 @@ sub compress_file_zlib($$) { =head2 create_olddir ( $logfile ) Checkt das Vorhandensein von $self-E{'c'}{'logfiles'}{$logfile}{'olddir'}, vorher werden aber die -POSIX-Datumsersetzungen daran gemacht und in $self-E{'c'}{'logfiles'}{$logfile}{'olddir'}{'expanded'} zurückgespeichert. +POSIX-Datumsersetzungen daran gemacht und in $self-E{'c'}{'logfiles'}{$logfile}{'olddir'}{'expanded'} zurueckgespeichert. -Wenn es kein Testfall ist, wird dieses Verzeichnis auch tatsächlich angelegt. +Wenn es kein Testfall ist, wird dieses Verzeichnis auch tatsaechlich angelegt. -Gibt den Erfolg als Wahrheitswert zurück. +Gibt den Erfolg als Wahrheitswert zurueck. =cut @@ -973,7 +973,7 @@ sub create_olddir($$) { print $p . "Erstelle Verzeichnis $adir ...\n"; # Ermittlung effektive Permissions + Ownership # wenn in config-file gegeben, diese, - # ansonsten die vom übergeordneten Verzeichnis. + # ansonsten die vom uebergeordneten Verzeichnis. $mode = defined $o->{'mode'} ? $o->{'mode'} : $pmode; $owner = defined $o->{'owner'} ? $o->{'owner'} : $puid; $group = defined $o->{'group'} ? $o->{'group'} : $pgid; @@ -1152,7 +1152,7 @@ sub find_rotatings($$$) { =head2 get_logfile_target ( $file ) -Legt das Ziel des Rotierens für das übergebene Logfile fest und gibt dieses zurück. +Legt das Ziel des Rotierens fuer das uebergebene Logfile fest und gibt dieses zurueck. =cut @@ -1364,7 +1364,7 @@ sub rotate($) { =head2 rotate_file ( $file ) -Rotiert (bedingungslos) die in $file übergebene Datei. +Rotiert (bedingungslos) die in $file uebergebene Datei. Hinterher steht in $self->{'c'}{'logfiles'}{$file}{'rotated'} der Dateiname der rotierten Datei und in %{$self->{'c'}{'logfiles'}{$file}{'oldfiles'}} ist @@ -1467,7 +1467,7 @@ sub rotate_file($$) { } } - # gewünschte Permissions setzen + # gewuenschte Permissions setzen print $p . "Setze Permissions von '$to'.\n" if verbose(); unless ( $self->{'test'} ) { unless ( chmod $omode, $to ) { @@ -1475,7 +1475,7 @@ sub rotate_file($$) { } } - # gewünschte Besitzer stzen + # gewuenschte Besitzer stzen print $p . "Setze Besitzer von '$to'.\n" if verbose(); unless ( $self->{'test'} ) { unless ( chown $ouid, $ogid, $to ) { @@ -1493,6 +1493,9 @@ sub rotate_file($$) { } else { + # alte Permissions und Besitzer ermitteln + @Stats = stat $from; + print $p . "Benenne um bzw. verschiebe '$from' nach '$to' ...\n"; unless ( $self->{'test'} ) { unless ( move $from, $to ) { @@ -1513,17 +1516,17 @@ sub rotate_file($$) { } } + # gewuenschte Permissions und Besitzer ermitteln + $nmode = defined $f->{'create'}{'mode'} ? $f->{'create'}{'mode'} : $Stats[2]; + $nuid = defined $f->{'create'}{'owner'} ? $f->{'create'}{'owner'} : $Stats[4]; + $ngid = defined $f->{'create'}{'group'} ? $f->{'create'}{'group'} : $Stats[5]; + # alte Permissions und Besitzer der neu angelegten Datei ermitteln @Stats = stat $from; - ( $omode, $ouid, $ogid ) = @Stats[ 2, 4, 5 ]; - # gewünschte Permissions und Besitzer ermittel - $nmode = $f->{'create'}{'mode'} || 0644; - $nuid = $f->{'create'}{'owner'}; - $ngid = $f->{'create'}{'group'}; if ( $nmode != $omode ) { - # gewünschte Permissions setzen + # gewuenschte Permissions setzen print $p . "Setze Permissions von '$from'.\n" if verbose(); unless ( $self->{'test'} ) { unless ( chmod $nmode, $from ) { @@ -1533,7 +1536,7 @@ sub rotate_file($$) { } if ( $ouid != $nuid or $ogid != $ngid ) { - # gewünschte Besitzer stzen + # gewuenschte Besitzer stzen print $p . "Setze Besitzer von '$from'.\n" if verbose(); unless ( $self->{'test'} ) { unless ( chown $nuid, $ngid, $from ) { diff --git a/LogRotate/Conf.pm b/LogRotate/Conf.pm index 212655c..8700159 100644 --- a/LogRotate/Conf.pm +++ b/LogRotate/Conf.pm @@ -961,7 +961,7 @@ sub directive($$$$$) { if ( $directive =~ /^(not?)?($pattern)$/i ) { $negated = $1; $key = lc($2); - print $p . "Untersuche boolsche Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche boolsche Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( defined $val and $val ne "" ) { warn $p . "Wert '$val' hinter logischer Direktive $directive gefunden (Datei '$f', Zeile $linenr)\n"; } @@ -980,7 +980,7 @@ sub directive($$$$$) { if ( $directive =~ /^(not?)?($pattern)$/i ) { $negated = $1; $key = lc($2); - print $p . "Untersuche Integer-Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche Integer-Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $DirectivesWithValues{$key} ) { print $p . "Direktive '$key' muss einen Wert haben.\n" if verbose() > 5; unless ( defined $val and $val !~ /^\s*$/ ) { @@ -1010,7 +1010,7 @@ sub directive($$$$$) { if ( $directive =~ /^($pattern)$/i ) { $negated = $1; $key = lc($2); - print $p . "Untersuche String-Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche String-Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $DirectivesWithValues{$key} ) { print $p . "Direktive '$key' muss einen Wert haben.\n" if verbose() > 5; unless ( defined $val and $val !~ /^\s*$/ ) { @@ -1030,7 +1030,7 @@ sub directive($$$$$) { $pattern = join( "|", keys %GlobalDirectives ); if ( $directive =~ /^($pattern)$/i ) { $key = lc($1); - print $p . "Untersuche globale Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche globale Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $in_fd ) { warn $p . "Direktive '$key' ist nicht innerhalb von Logdatei-Definitionen erlaubt (Datei '$f', Zeile $linenr).\n"; return 1; @@ -1068,7 +1068,7 @@ sub directive($$$$$) { if ( $directive =~ /^($pattern)$/i ) { $key = lc($1); - print $p . "Untersuche Rotations-Perioden-Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche Rotations-Perioden-Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $ValidPeriods{$key} ) { warn $p . "Direktive '$key' darf keine Argumente haben ( '$val' in Datei '$f', Zeile $linenr).\n" @@ -1095,7 +1095,7 @@ sub directive($$$$$) { if ( $directive =~ /^(not?)?maxage$/ ) { $negated = $1; - print $p . "Untersuche Direktive 'maxage' ...\n" if verbose() > 5; + print $p . "Untersuche Direktive 'maxage' (" . __LINE__ . ") ...\n" if verbose() > 5; $negated = 1 if not defined($val) or $val =~ /^\s*$/; if ( $negated ) { @@ -1117,7 +1117,7 @@ sub directive($$$$$) { if ( $directive =~ /^(no)?dateext$/ ) { $negated = $1; - print $p . "Untersuche Direktive 'dateext' ...\n" if verbose() > 5; + print $p . "Untersuche Direktive 'dateext' (" . __LINE__ . ") ...\n" if verbose() > 5; @Values = $val ? parts( $val ) : (); if ( $negated ) { @@ -1152,9 +1152,10 @@ sub directive($$$$$) { # Erstellungs-Modi festlegen if ( $directive eq 'create' ) { - print $p . "Untersuche Direktive 'create' ...\n" if verbose() > 5; + print $p . "Untersuche Direktive 'create' (" . __LINE__ . ") ...\n" if verbose() > 5; @Values = $val ? parts( $val ) : (); $self->{$wo}{'copytruncate'} = 0; + print $p . "Ermittelte Werte fuer 'create': " . Dumper(\@Values) if verbose() > 5; # Mode (Permission) definition if ( defined $Values[0] ) { @@ -1193,7 +1194,7 @@ sub directive($$$$$) { $negated = $1; $directive = 'olddir'; - print $p . "Untersuche Direktive 'olddir' ...\n" if verbose() > 5; + print $p . "Untersuche Direktive 'olddir' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $negated ) { print $p . "Direktive 'olddir' wird in '$wo' enfernt.\n" if verbose() > 5; @@ -1250,7 +1251,7 @@ sub directive($$$$$) { if ( $line =~ /^size(?:\s*(?:=|\s)\s*(.*)?)?$/i ) { $directive = 'size'; $val = $1; - print $p . "Untersuche Direktive 'size' mit Groesse '" . (defined $val ? $val : "") . "' ...\n" if verbose() > 5; + print $p . "Untersuche Direktive 'size' (" . __LINE__ . ") mit Groesse '" . (defined $val ? $val : "") . "' ...\n" if verbose() > 5; unless ( defined $val ) { warn $p . "Ungueltige Groessen-Definition (Datei '$f', Zeile $linenr).\n"; return 1; @@ -1269,7 +1270,7 @@ sub directive($$$$$) { if ( $directive =~ /^taboo(ext|file|prefix)$/ ) { $key = lc($1); - print $p . "Untersuche globale Direktive '$key' ...\n" if verbose() > 5; + print $p . "Untersuche globale Direktive '$key' (" . __LINE__ . ") ...\n" if verbose() > 5; if ( $in_fd ) { warn $p . "Direktive '$directive' ist nicht innerhalb von Logdatei-Definitionen erlaubt (Datei '$f', Zeile $linenr).\n"; @@ -1819,8 +1820,6 @@ sub reset_defaults($) { my $self = shift; my $p = verbose() ? __PACKAGE__ . "::reset_defaults(): " : ""; - my $uid = $>; - my ( $gid ) = $) =~ /^(\d+)/; print $p . "Setze \$self->{'defaults'} auf Vorgabewerte zurueck.\n" if verbose() > 3; @@ -1828,9 +1827,9 @@ sub reset_defaults($) { 'compress' => undef, 'copytruncate' => undef, 'create' => { - 'mode' => 0644, - 'owner' => $uid, - 'group' => $gid, + 'mode' => undef, + 'owner' => undef, + 'group' => undef, }, 'period' => 7, 'dateext' => undef, -- 2.39.5