--- loncom/configuration/Checksumming.pm 2013/02/02 00:22:43 1.1 +++ loncom/configuration/Checksumming.pm 2013/06/29 16:59:09 1.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Checksum installed LON-CAPA modules and some configuration files # -# $Id: Checksumming.pm,v 1.1 2013/02/02 00:22:43 raeburn Exp $ +# $Id: Checksumming.pm,v 1.6 2013/06/29 16:59:09 raeburn Exp $ # # The LearningOnline Network with CAPA # @@ -85,7 +85,7 @@ sub get_checksums { } if (@paths) { my $pathstr = join (' ',@paths); - if (open($dirh,"grep '$revtag' $pathstr |")) { + if (open($dirh,"grep '$revtag' $pathstr 2>&1 |")) { while (my $line=<$dirh>) { if ($line =~ m{^([^#]+):#\s\\s[\w.]+,v\s([\d.]+)\s}) { $versions{$1} = $2; @@ -124,7 +124,15 @@ sub get_checksums { sub compare_checksums { my ($target,$lonhost,$version,$serversums,$serverversions) = @_; - my ($message,$numchg); + my ($message,$numchg,$linefeed); + if ($target eq 'web') { + $linefeed = '
'; + } else { + $linefeed = "\n"; + } + if (!$Apache::lonlocal::lh) { + &Apache::lonlocal::get_language_handle(); + } if ((ref($serversums) eq 'HASH') && (keys(%{$serversums}))) { my $checksums = &Apache::lonnet::fetch_dns_checksums(); my (%extra,%missing,%diffs,%stdsums,%stdversions); @@ -143,8 +151,10 @@ sub compare_checksums { $numchg ++; } } else { - $missing{$key} = 1; - $numchg ++; + unless ((-e $key) && (-B $key)) { + $missing{$key} = 1; + $numchg ++; + } } } foreach my $key (keys(%{$serversums})) { @@ -155,11 +165,11 @@ sub compare_checksums { } } if ($numchg) { - $message = + $message = &Apache::lonlocal::mt('[quant,_1,difference was,differences were] found'. - ' between LON-CAPA modules installed on your server ([_2])'. - ' and those expected for the LON-CAPA version ([_3])'. - ' which you are running.',$numchg,$lonhost,$version); + ' between LON-CAPA modules installed on your server [_2]'. + ' and those expected for the LON-CAPA version you are'. + ' currently running.',$numchg,"($lonhost)$linefeed"); if ($target eq 'web') { $message = '

'.$message.'

'; } else { @@ -175,8 +185,8 @@ sub compare_checksums { } } if (@diffversion > 0) { - my $text = - &Apache::lonlocal::mt('The following [quant,_1,local file is a,local files are]'. + my $text = + &Apache::lonlocal::mt('The following [quant,_1,file is a,files are]'. ' different version(s) from that expected for LON-CAPA [_2]:', scalar(@diffversion),$version); if ($target eq 'web') { @@ -194,7 +204,7 @@ sub compare_checksums { my $revnum = $stdversions{$file}; if ($target eq 'web') { $message .= &Apache::loncommon::start_data_table_row(). - ''.$file.''."\n". + ''.$file.''."\n". ''.$serverversions->{$file}.''."\n". ''.$revnum.''."\n". &Apache::loncommon::end_data_table_row()."\n"; @@ -210,9 +220,14 @@ sub compare_checksums { $message .= "\n"; } } + if ($target eq 'web') { + $message .= &Apache::loncommon::end_data_table().'
'; + } else { + $message .= "\n"; + } } if (@modified > 0) { - my $text = + my $text = &Apache::lonlocal::mt('The following [quant,_1,file appears,files appear]'. ' to have been modified locally:',scalar(@modified)); if ($target eq 'web') { @@ -238,6 +253,11 @@ sub compare_checksums { "\n"; } } + if ($target eq 'web') { + $message .= &Apache::loncommon::end_data_table().'
'; + } else { + $message .= "\n"; + } } } if (keys(%missing) > 0) { @@ -257,7 +277,8 @@ sub compare_checksums { foreach my $file (sort(keys(%missing))) { my $revnum = $stdversions{$file}; if ($target eq 'web') { - $message .= ''.$file.''."\n". + $message .= &Apache::loncommon::start_data_table_row()."\n". + ''.$file.''."\n". ''.$revnum.''."\n". &Apache::loncommon::end_data_table_row()."\n"; } else { @@ -270,6 +291,11 @@ sub compare_checksums { $message .= "\n"; } } + if ($target eq 'web') { + $message .= &Apache::loncommon::end_data_table(); + } else { + $message .= "\n"; + } } if (keys(%extra) > 0) { my $text = @@ -288,7 +314,8 @@ sub compare_checksums { } foreach my $file (sort(keys(%extra))) { if ($target eq 'web') { - $message .= ''.$file.''."\n". + $message .= &Apache::loncommon::start_data_table_row()."\n". + ''.$file.''."\n". ''.$serverversions->{$file}.''."\n". &Apache::loncommon::end_data_table_row()."\n"; } else { @@ -298,6 +325,11 @@ sub compare_checksums { "\n"; } } + if ($target eq 'web') { + $message .= &Apache::loncommon::end_data_table().'
'; + } else { + $message .= "\n"; + } } } else { $message = &Apache::lonlocal::mt('No differences detected between installed files and files expected for LON-CAPA [_1]',$version);