chiark / gitweb /
tolerate pcf2bdf crashing
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 25 Jan 2012 21:51:03 +0000 (21:51 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 25 Jan 2012 23:04:37 +0000 (23:04 +0000)
debian/changelog
update-xfonts-traditional
update-xfonts-traditional.8

index 44d29138f1072c6fa93a3c51b6b230152c6e0e3b..98aebcc5261a6222d87b02bf347fbca4c655f7e0 100644 (file)
@@ -1,5 +1,6 @@
 xfonts-traditional (1.3) unstable; urgency=low
 
+  * Tolerate fonts which make pcf2bdf crash (by default).
   * Process multiple fonts in parallel.
   * General improvements to handling of errors and unprocessed fonts.
 
index 2e8c0d7888b628307175ad867f09f23822cd6e9f..63e9040d4a5572a8e14ba842526a48644c0a0621 100755 (executable)
@@ -23,6 +23,7 @@ our $verbose=0;
 our $reportfh;
 our $foundryinfo;
 our %props;
+our $tolerate_bad_fonts=1;
 our $wanted_parallel;
 
 sub reportloaded {
@@ -259,6 +260,15 @@ sub processpcfgz ($$$$) {
        return !$st || $ch->{SigOK}{($st & ~128)};
     };
 
+    if ($tolerate_bad_fonts &&
+       $r eq 'no bdf data' &&
+       $st_isok->($ch{'gunzip'}) &&
+       ($ch{'pcf2bdf'}{St} & ~128) == 6)
+    {
+       $r = "pcf2bdf failed ($ch{'pcf2bdf'}{St})";
+       print STDERR "warning: $r: skipping $inpcfgz\n";
+       $ch{'pcf2bdf'}{SigOK}{6} = 1;
+    }
     foreach my $ch (@children) {
        if (!$st_isok->($ch)) {
            die "update-xfonts-traditional:".
@@ -443,6 +453,7 @@ our (@options)=(
     'share-dir=s' => \$sharedir,
     'verbose|v+' => \$verbose,
     'j|parallel=i' => \$wanted_parallel,
+    'tolerate-bad-fonts!' => \$tolerate_bad_fonts,
     );
 
 sub define_mode ($$) {
index 54c5cae5eebabbcdf0374c6e9123743b33e94de6..5da104c1c1ff05a226974cb8014ef54d88ebd253 100644 (file)
@@ -60,6 +60,11 @@ instead of
 Use up to
 .I cpus
 cores for processing fonts.  The default is all the cpus available.
+.TP
+\fB--no-tolerate-bad-fonts
+Treat bad input fonts (eg, ones for which pcf2bdf crashes, or ones
+with other problems) as a fatal error.  Normally they just produce
+a warning.
 .SH FILES
 .TP
 .B xfonts-traditional.done