[LON-CAPA-cvs] cvs: doc /help rebuildLabelHash.pl

albertel lon-capa-cvs-allow@mail.lon-capa.org
Tue, 07 Aug 2007 21:02:59 -0000


albertel		Tue Aug  7 17:02:59 2007 EDT

  Modified files:              
    /doc/help	rebuildLabelHash.pl 
  Log:
  - does more error checking on the .tex files and their labels (BUG#5352)
  
  
Index: doc/help/rebuildLabelHash.pl
diff -u doc/help/rebuildLabelHash.pl:1.6 doc/help/rebuildLabelHash.pl:1.7
--- doc/help/rebuildLabelHash.pl:1.6	Mon Mar 31 22:20:01 2003
+++ doc/help/rebuildLabelHash.pl	Tue Aug  7 17:02:58 2007
@@ -33,47 +33,56 @@
 
 # I had to chdir, because neither glob nor bsd_glob accept globs
 # with ".." in them... sucky.
-chdir "../../loncom/html/adm/help/";
+chdir("../../loncom/html/adm/help/");
 
 # if the topic hash exists, kill it
-unlink 'fragmentLabels.gdbm' if ( -e 'fragmentLabels.gdbm' );
-print "Wiped old fragmentLabels.gdbm.\n";
+unlink('fragmentLabels.gdbm') if ( -e 'fragmentLabels.gdbm' );
+print("Wiped old fragmentLabels.gdbm.\n");
 
 tie (my %fragmentLabels, 'GDBM_File', 'fragmentLabels.gdbm', &GDBM_WRCREAT(), 0660);
 my $error = 0;
 
-chdir "tex";
+chdir("tex");
 
-foreach my $file ( glob("*.tex") ) 
-{
-    open F, $file;
-    if ( index($file, "/") != "/" )
-    {
+foreach my $file ( glob("*.tex") ) {
+    open(F, $file);
+    if ( index($file, "/") != "/" ) {
 	$file = substr($file, index($file, "/") + 1);
     } 
     my $contents = join("\n", <F>);
     my $label;
-    
+
+    my $found=0;
+    my $found_me=0;
     # Search for labels, of the form '\label{labelname}'
-    foreach $label ( $contents =~ /\\label\{([^}]*)\}/g )
-    {
-	if (exists $fragmentLabels{$label} )
-	{
-	    print "***ERROR: '$label' in both $fragmentLabels{$label} " .
-	          "and $file. \n";
-	    $error = 1;
+    foreach $label ( $contents =~ /\\label\{([^\}]*)\}/g ) {
+	$found = 1;
+	if ($file eq "$label.tex") {
+	    $found_me = 1;
+	}
+	if (exists $fragmentLabels{$label} ) {
+	    print("***ERROR: '$label' in both $fragmentLabels{$label} " .
+		  "and $file. \n");
+	    $error++;
 	}
 	$fragmentLabels{$label} = $file;
     }
+    if (!$found) {
+	$error++;
+	print("***ERROR: no labels in '$file'. \n");
+    }
+    if (!$found_me) {
+	$error++;
+	my ($needed_label) = ($file =~ m/(.*)\.tex/);
+	print("***ERROR: no labels for $needed_label in '$file'. \n");
+    }
 }
 
-if ($error == 0)
-{
-    print "There were no duplicate labels. Database rebuilt.\n";
-}
-else
-{
-    print "There were errors. You must correct the duplicate labels.\n";
+if ($error == 0) {
+    print("There were no duplicate labels. Database rebuilt.\n");
+} else {
+    print("There were $error errors. You must correct the duplicate labels.\n");
+    exit(-1);
 }
 
-untie %fragmentLabels;
+untie(%fragmentLabels);