link-checker commit: Print percentage indicator only when it changes; improves performance

changeset:   219:757d35e348e0
user:        ville
date:        Sun Feb 10 13:29:33 2008 +0000
files:       bin/checklink
description:
Print percentage indicator only when it changes; improves performance
significantly with some terminals and large documents.


diff -r 26464e87e9ca -r 757d35e348e0 bin/checklink
--- a/bin/checklink	Sun Feb 10 13:25:21 2008 +0000
+++ b/bin/checklink	Sun Feb 10 13:29:33 2008 +0000
@@ -5,7 +5,7 @@
 # (c) 1999-2008 World Wide Web Consortium
 # based on Renaud Bruyeron's checklink.pl
 #
-# $Id: checklink,v 4.89 2008-02-10 13:25:21 ville Exp $
+# $Id: checklink,v 4.90 2008-02-10 13:29:33 ville Exp $
 #
 # This program is licensed under the W3C(r) Software License:
 #       http://www.w3.org/Consortium/Legal/copyright-software
@@ -244,7 +244,7 @@
   $PROGRAM     = 'W3C-checklink';
   $VERSION     = '4.3';
   $REVISION    = sprintf('version %s (c) 1999-2008 W3C', $VERSION);
-  my ($cvsver) = q$Revision: 4.89 $ =~ /(\d+[\d\.]*\.\d+)/;
+  my ($cvsver) = q$Revision: 4.90 $ =~ /(\d+[\d\.]*\.\d+)/;
   $AGENT       = sprintf('%s/%s [%s] %s',
                          $PROGRAM, $VERSION, $cvsver, LWP::RobotUA->_agent());
 
@@ -1388,7 +1388,10 @@
                 $self->declaration(substr($_[0], 2, -1));
               }, 'self, text, line');
   # Other stuff
-  $p->handler(default => 'parse_progress', 'self, line') if $Opts{Progress};
+  if ($Opts{Progress}) {
+    $p->handler(default => 'parse_progress', 'self, line');
+    $p->{last_percentage} = 0;
+  }
   $p->handler(end_document => 'end_document', 'self, line');
   # Check <a [..] name="...">?
   $p->{check_name} = 1;
@@ -1434,8 +1437,14 @@
 sub parse_progress
 {
   my ($self, $line) = @_;
-  printf("\r%4d%%", int($line/$self->{Total}*100))
-    if (defined($line) && $line >= 0 && $self->{Total} > 0);
+  return unless defined($line) && $line > 0 && $self->{Total} > 0;
+
+  my $percentage = int($line/$self->{Total}*100);
+  if ($percentage != $self->{last_percentage}) {
+    printf("\r%4d%%", $percentage);
+    $self->{last_percentage} = $percentage;
+  }
+
   return;
 }
 

Received on Thursday, 5 August 2010 14:47:25 UTC