File netpbm-use-byrow-when-needed.patch of Package netpbm.32454

Index: netpbm-10.66.3/converter/other/tifftopnm.c
===================================================================
--- netpbm-10.66.3.orig/converter/other/tifftopnm.c
+++ netpbm-10.66.3/converter/other/tifftopnm.c
@@ -1314,7 +1314,7 @@ convertRasterByRows(pnmOut *       const
 
 
 
-static void
+static int
 warnBrokenTiffLibrary(TIFF * const tiffP) {
 
 /* TIFF library bug:
@@ -1344,6 +1344,7 @@ warnBrokenTiffLibrary(TIFF * const tiffP
 
     unsigned short tiffOrientation;
     int present;
+    int broken = false;
     present = TIFFGetField(tiffP, TIFFTAG_ORIENTATION, &tiffOrientation);
     if (present) {
         switch (tiffOrientation) {
@@ -1353,10 +1354,12 @@ warnBrokenTiffLibrary(TIFF * const tiffP
         case ORIENTATION_LEFTBOT:
             pm_message("WARNING: This TIFF image has an orientation that "
                        "most TIFF libraries convert incorrectly.  "
-                       "Use -byrow to circumvent.");
+                       "Using -byrow to circumvent.");
+            broken = true;
             break;
         }
     }
+    return broken;
 }
 
 
@@ -1448,8 +1451,6 @@ convertRasterInMemory(pnmOut *       con
     if (verbose)
         pm_message("Converting in memory ...");
 
-    warnBrokenTiffLibrary(tif);
-
     getTiffDimensions(tif, &cols, &rows);
 
     if (rows == 0 || cols == 0) 
@@ -1560,7 +1561,7 @@ convertImage(TIFF *             const ti
     xelval maxval;
     xel colormap[MAXCOLORS];
     unsigned short fillorder;
-    bool flipOk, noflipOk;
+    bool flipOk, noflipOk, byrow;
     pnmOut pnmOut;
 
     readDirectory(tifP, cmdline.headerdump, &tiffDir);
@@ -1570,15 +1571,21 @@ convertImage(TIFF *             const ti
     analyzeImageType(tifP, tiffDir.bps, tiffDir.spp, tiffDir.photomet, 
                      &maxval, &format, colormap, cmdline.headerdump, cmdline);
 
+    byrow = cmdline.byrow;
+    if (warnBrokenTiffLibrary(tifP)) {
+       /* force byrow true: http://bugzilla.maptools.org/show_bug.cgi?id=2654#c9 */
+       byrow = true;
+    }
+
     pnmOut_init(imageoutFileP, alphaFileP, tiffDir.width, tiffDir.height,
                 tiffDir.orientation, maxval, format, maxval,
-                cmdline.byrow, cmdline.orientraw,
+                byrow, cmdline.orientraw,
                 cmdline.verbose,
                 &flipOk, &noflipOk,
                 &pnmOut);
 
     convertRaster(&pnmOut, tifP, tiffDir, maxval,
-                  fillorder, colormap, cmdline.byrow, flipOk, noflipOk,
+                  fillorder, colormap, byrow, flipOk, noflipOk,
                   cmdline.verbose);
 
     pnmOut_term(&pnmOut, cmdline.verbose);
openSUSE Build Service is sponsored by