Robert, can you try the attached patch?

Jean-Louis

McGraw, Robert P wrote:
As a followup, I ran amoverview and removed the WARNINGS messages and it seems 
to be working correctly.

Here is a snippet"

         date                           NM TO 08 08 08 08 08 08 08 08 08 08 08 
08 08 08 08 08 09 09 09 09 09 09 09 09 09 09 09 09
host     disk                           L0 GO 16 17 18 19 20 21 22 23 24 25 26 
27 28 29 30 31 01 02 03 04 05 06 07 08 09 10 11 12

banach   /                               9 22  3  0  0  1  2  2  2  0 E1  0  0  
1  1  1  2  0  1  0  1     2  3  0  0     1  2  2
banach   /boot                           6 21  1  0  1  1  1  0  1  1  1  0  1  
1  1  1  0  1 E0  1  1     1  1  0  1     1     1
bers     /                               7 24  0  1  1  0  1  1  1  1  0  1  1  
1  1  1  0  1  0  1  1     1  1  0  1     1  0  1
bessel   /                               7 24  0  1  1  0  1  1  1  1  0  1  1  
1  1  1  0  1  0  1  1     1  0  1  1     1  0  1
bohr     /                               7 24  0  1  1  0  1  1  1  1  0  1  1  
1  1  1  0  1  0  1  1     1  0  1  1     1  0  1
conon    /                               6 21  0  1  1  1  1  0  1  1  1  0  1  
1  1  1  0  1  0  1  1     1  1  0  1     1     1

Robert


-----Original Message-----
From: McGraw, Robert P
Sent: Monday, September 13, 2010 11:40 AM
To: McGraw, Robert P
Subject: RE: amoverview under 3.1.2

As a followup, I ran amoverview and removed the WARNINGS and it seems
to be working correctly.

Robert


-----Original Message-----
From: owner-amanda-us...@amanda.org [mailto:owner-amanda-
us...@amanda.org] On Behalf Of McGraw, Robert P
Sent: Monday, September 13, 2010 11:24 AM
To: 'amanda-users@amanda.org'
Subject: amoverview under 3.1.2



I have compiled and installed amanda 3.1.2

My dumps ran ok over the weekend with no errors.

But I am getting the following warnings in amoverview.


Robert


** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.


** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.


         date                 08 08 08 08 08 08 08 08 08 08 08 08 08
08
08 08 09 09 09 09 09 09 09 09 09 09 09 09
host     disk                 16 17 18 19 20 21 22 23 24 25 26 27 28
29
30 31 01 02 03 04 05 06 07 08 09 10 11 12

banach   /                     3  0  0  1  2  2  2  0 E1  0  0  1  1
1
2  0  1  0  1     2  3  0  0     1  2  2

** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.


** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.


** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.

banach   /boot                 1  0  1  1  1  0  1  1  1  0  1  1  1
1
0  1 E0  1  1     1  1  0  1     1     1

** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.


_____________________________________________________________________
Robert P. McGraw, Jr.
Manager, Computer System                    EMAIL: rmcg...@purdue.edu
Purdue University                            ROOM: MATH-807
Department of Mathematics                   PHONE: (765) 494-6055
150 N. University Street
West Lafayette, IN 47907-2067






diff --git a/perl/Amanda/Tapelist.swg b/perl/Amanda/Tapelist.swg
index e1e029d..6e39d08 100644
--- a/perl/Amanda/Tapelist.swg
+++ b/perl/Amanda/Tapelist.swg
@@ -35,6 +35,29 @@ use File::Copy;
 
 ## package functions
 
+sub new {
+    my ($filename, $lock ) = @_;
+    my $self = {
+	filename => $filename,
+	lock     => $lock,
+    };
+    bless $self, "Amanda::Tapelist";
+
+    # let C read the file
+    C_read_tapelist($filename);
+
+    # and then read it ourselves
+    open(my $fh, "<", $filename) or return $self;
+    $self->{'fh'} = $fh;
+
+    if ($lock) {
+	flock($lock, LOCK_EX);
+    }
+
+    $self->_read_tapelist_fh();
+    return $self;
+}
+
 sub read_tapelist {
     my ($filename) = @_;
     my $self = {
@@ -134,24 +157,35 @@ sub write {
 
     my $new_tapelist_file = $filename . "-new-" . time();
 
-    open(my $fh, ">", $new_tapelist_file) or die("Could not open '$new_tapelist_file' for writing: $!");
+    open(my $fhn, ">", $new_tapelist_file) or die("Could not open '$new_tapelist_file' for writing: $!");
     for my $tle (@{$self->{tles}}) {
 	my $datestamp = $tle->{'datestamp'};
 	my $label = $tle->{'label'};
 	my $reuse = $tle->{'reuse'} ? 'reuse' : 'no-reuse';
 	my $comment = (defined $tle->{'comment'})? (" #" . $tle->{'comment'}) : '';
-	print $fh "$datestamp $label $reuse$comment\n";
+	print $fhn "$datestamp $label $reuse$comment\n";
     }
-    close($fh);
+    close($fhn);
     unless (move($new_tapelist_file, $filename)) {
 	die ("failed to rename '$new_tapelist_file' to '$filename': $!");
     }
 
+    $self->close();
+
     # re-read from the C side to synchronize
     C_read_tapelist($filename);
     return undef;
 }
 
+sub close {
+    my $self = shift;
+
+    return if !exists $self->{'fh'};
+
+    close ($self->{'fh'});
+    delete $self->{'fh'}
+}
+
 ## private methods
 
 sub _read_tapelist {
diff --git a/server-src/amoverview.pl b/server-src/amoverview.pl
index 4f721e5..5dbd625 100644
--- a/server-src/amoverview.pl
+++ b/server-src/amoverview.pl
@@ -195,13 +195,13 @@ my $top_format = "format TOP =\n\n" .
     join(' ', map((/......(..)/)[0], sort keys %dates)) . "\n" .
     "\n.\n";
 
-+ local ($::thishost,$::thisdisk);
+local ($::thishost,$::thisdisk);
 my $out_format = "format STDOUT =\n" .
     "@" . "<" x ($opt_hostwidth - 1) . ' ' .
     "@" . "<" x ($opt_diskwidth - 1) . ' ' .
     '@> ' x scalar(keys %dates) . "\n" .
     join(', ', '$::thishost', '$::thisdisk',
-       map("substr(\$level{\$::thishost}{\$::thisdisk}{'$_'},-2)", sort keys %dates)) . "\n" .
+       map("defined(\$level{\$::thishost}{\$::thisdisk}{'$_'})?substr(\$level{\$::thishost}{\$::thisdisk}{'$_'},-2):'  '", sort keys %dates)) . "\n" .
     ".\n";
 
 eval $top_format;

Reply via email to