![]() |
There are three problems with the tiff-3.5-interfaces.patch file as found on the HylaFAX website which causes the patch to crash (review of the rej files makes hand-modification simple, though). The "/* $Id: tiff-3.5-interfaces..." vs. "/* $Id: tif_fax3.h..." problem is confusing to me, but the others were merely whitespace or tabbing errors. This, however, is insufficient, as it does *not* modify ./configure from checking version 3.4 to 3.5. I have made those additions to the patch file. Attached and following is my corrected copy of tiff-3.5-interfaces.patch Thanks. Lee Howard At 05:47 PM 5/10/00 -0600, you wrote: >Robert, when applying the tiff-3.5-interfaces.patch file on my RedHat 6.1 >(updated) system I get the following: > ... # tiff-3.5-interfaces.patch # Robert Colquhoun <rjc@trump.net.au> Wed, 22 Mar 2000 09:57:00 # modified Thurs, 11 May 2000 by Lee Howard <faxguy@deanox.com> # # Attached is a patch so that hylafax works with tiff 3.5. The tiff # maintainers changed a few of the internal interfaces to achieve large # run lengths (from 16 to 32 bits). Hylafax uses one of libtiffs header # files(faxd/tif_fax3.h) for some undocumented macros and interfaces and # was only expecting 16 bits, and broke. # # I successfully sent one fax with this patch and libtiff 3.5...anything # more complicated might or might not work ;-) # # Instructions: From main source directory run command : # patch -bp0 --verbose <tiff-3.5-interfaces.patch --- configure 1999/07/26 08:57:29 +++ configure 2000/05/11 22:03:01 @@ -2865,7 +2865,7 @@ printf("old include files: version %u\n", TIFFLIB_VERSION); exit(-1); } - if (strncmp(TIFFGetVersion(), "LIBTIFF, Version 3.4", 20) != 0) { + if (strncmp(TIFFGetVersion(), "LIBTIFF, Version 3.5", 20) != 0) { printf("old library: version %s\n", TIFFGetVersion()); exit(-1); } else --- faxd/CopyQuality.c++ 1999/09/02 10:16:22 1.4 +++ faxd/CopyQuality.c++ 2000/03/22 12:32:01 @@ -50,7 +50,7 @@ setupDecoder(conf.recvFillOrder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); recvEOLCount = 0; // count of EOL codes --- faxd/G3Decoder.c++ 1999/06/13 07:41:03 1.2 +++ faxd/G3Decoder.c++ 2000/03/22 12:32:04 @@ -41,13 +41,13 @@ DECLARE_STATE_EOL(); \ int a0; /* reference element */ \ int RunLength; /* length of current run */ \ - uint16* pa; /* place to stuff next run */ \ - uint16* thisrun; /* current row's run array */ \ + uint32* pa; /* place to stuff next run */ \ + uint32* thisrun; /* current row's run array */ \ const TIFFFaxTabEnt* TabEnt #define DECLARE_STATE_2D() \ DECLARE_STATE(); \ int b1; /* next change on prev line */ \ - uint16* pb /* next run in reference line */ + uint32* pb /* next run in reference line */ /* * Load any state that may be changed during decoding. */ @@ -113,7 +113,7 @@ } void -G3Decoder::setRuns(uint16* cr, uint16* rr, int w) +G3Decoder::setRuns(uint32* cr, uint32* rr, int w) { curruns = cr; if (refruns = rr) { @@ -134,7 +134,7 @@ { u_int rowbytes = howmany(w, 8); if (curruns == NULL) { - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, w); while (h-- > 0) { decodeRow(raster, w); @@ -235,7 +235,7 @@ _TIFFFax3fillruns((u_char*) scanline, thisrun, pa, lastx); if (is2D) { SETVAL(0); // imaginary change for reference - SWAP(uint16*, curruns, refruns); + SWAP(uint32*, curruns, refruns); } rowref++; UNCACHE_STATE(); --- faxd/G3Decoder.h 1999/06/13 07:41:03 1.2 +++ faxd/G3Decoder.h 2000/03/22 12:32:05 @@ -43,8 +43,8 @@ int RTCrun; // count of consecutive zero-length rows int rowref; // reference count of rows decoded int RTCrow; // row number of start of RTC - uint16* refruns; // runs for reference line - uint16* curruns; // runs for current line + uint32* refruns; // runs for reference line + uint32* curruns; // runs for current line const u_char* bitmap; // bit reversal table protected: G3Decoder(); @@ -68,8 +68,8 @@ virtual ~G3Decoder(); void setupDecoder(u_int fillorder, bool is2D); - void setRuns(uint16*, uint16*, int); - uint16* lastRuns(); + void setRuns(uint32*, uint32*, int); + uint32* lastRuns(); void decode(void* raster, u_int w, u_int h); bool decodeRow(void* scanline, u_int w); @@ -92,7 +92,7 @@ #define EOFraised() (sigsetjmp(jmpEOF, 0) != 0) #define RTCraised() (sigsetjmp(jmpRTC, 0) != 0) -inline uint16* G3Decoder::lastRuns() { return is2D ? refruns : curruns; } +inline uint32* G3Decoder::lastRuns() { return is2D ? refruns : curruns; } inline const u_char* G3Decoder::getBitmap() { return bitmap; } inline int G3Decoder::getPendingBits() const { return bit; } inline bool G3Decoder::seenRTC() const { return (RTCrow != -1); } --- faxd/TagLine.c++ 1999/08/23 11:19:34 1.4 +++ faxd/TagLine.c++ 2000/03/22 12:32:13 @@ -208,7 +208,7 @@ */ TagLineMemoryDecoder dec(buf); dec.setupDecoder(fillorder, params.is2D()); - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows dec.setRuns(runs, runs+2432, w); dec.decode(NULL, w, th); // discard decoded data --- faxd/choptest.c++ 1999/06/13 07:41:05 1.2 +++ faxd/choptest.c++ 2000/03/22 12:32:14 @@ -70,7 +70,7 @@ } static bool -isBlank(uint16* runs, u_int rowpixels) +isBlank(uint32* runs, u_int rowpixels) { u_int x = 0; for (;;) { @@ -89,7 +89,7 @@ { setupDecoder(fillorder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); if (!RTCraised()) { --- faxd/cqtest.c++ 1999/09/02 10:16:22 1.4 +++ faxd/cqtest.c++ 2000/03/22 12:32:16 @@ -144,7 +144,7 @@ setupDecoder(recvFillOrder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); recvEOLCount = 0; // count of EOL codes --- faxd/faxQueueApp.c++ 2000/03/08 13:44:06 1.7 +++ faxd/faxQueueApp.c++ 2000/03/22 12:32:43 @@ -805,7 +805,7 @@ } static bool -isBlank(uint16* runs, u_int rowpixels) +isBlank(uint32* runs, u_int rowpixels) { u_int x = 0; for (;;) { @@ -824,7 +824,7 @@ { setupDecoder(fillorder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); if (!RTCraised()) { --- faxd/tagtest.c++ 1999/08/23 11:19:35 1.4 +++ faxd/tagtest.c++ 2000/03/22 12:32:47 @@ -236,7 +236,7 @@ */ MemoryDecoder dec(buf); dec.setupDecoder(fillorder, params.is2D()); - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows dec.setRuns(runs, runs+2432, w); u_int row; --- faxd/tif_fax3.h 1998/10/12 20:47:49 1.1.1.1 +++ faxd/tif_fax3.h 2000/03/22 12:32:51 @@ -1,8 +1,8 @@ -/* $Id: tif_fax3.h,v 1.1.1.1 1998/10/12 20:47:49 root Exp $ */ +/* $Id: tif_fax3.h,v 1.1.1.1 1998/10/12 20:47:49 root Exp $ */ /* - * Copyright (c) 1990-1996 Sam Leffler - * Copyright (c) 1991-1996 Silicon Graphics, Inc. + * Copyright (c) 1990-1997 Sam Leffler + * Copyright (c) 1991-1997 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided @@ -43,7 +43,7 @@ * The routine must have the type signature given below; * for example: * - * fillruns(unsigned char* buf, uint16* runs, uint16* erun, uint32 lastx) + * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx) * * where buf is place to set the bits, runs is the array of b&w run * lengths (white then black), erun is the last run in the array, and @@ -52,7 +52,7 @@ * data in the run array as needed (e.g. to append zero runs to bring * the count up to a nice multiple). */ -typedef void (*TIFFFaxFillFunc)(unsigned char*, uint16*, uint16*, uint32); +typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32); /* * The default run filler; made external for other decoders. @@ -60,7 +60,7 @@ #if defined(__cplusplus) extern "C" { #endif -extern void _TIFFFax3fillruns(unsigned char*, uint16*, uint16*, uint32); +extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32); #if defined(__cplusplus) } #endif @@ -84,7 +84,7 @@ typedef struct { /* state table entry */ unsigned char State; /* see above */ unsigned char Width; /* width of code in bits */ - uint16 Param; /* unsigned 16-bit run length in bits */ + uint32 Param; /* unsigned 32-bit run length in bits */ } TIFFFaxTabEnt; extern const TIFFFaxTabEnt TIFFFaxMainTable[];
# tiff-3.5-interfaces.patch # Robert Colquhoun <rjc@trump.net.au> Wed, 22 Mar 2000 09:57:00 # modified Thurs, 11 May 2000 by Lee Howard <faxguy@deanox.com> # # Attached is a patch so that hylafax works with tiff 3.5. The tiff # maintainers changed a few of the internal interfaces to achieve large # run lengths (from 16 to 32 bits). Hylafax uses one of libtiffs header # files(faxd/tif_fax3.h) for some undocumented macros and interfaces and # was only expecting 16 bits, and broke. # # I successfully sent one fax with this patch and libtiff 3.5...anything # more complicated might or might not work ;-) # # Instructions: From main source directory run command : # patch -bp0 --verbose <tiff-3.5-interfaces.patch --- configure 1999/07/26 08:57:29 +++ configure 2000/05/11 22:03:01 @@ -2865,7 +2865,7 @@ printf("old include files: version %u\n", TIFFLIB_VERSION); exit(-1); } - if (strncmp(TIFFGetVersion(), "LIBTIFF, Version 3.4", 20) != 0) { + if (strncmp(TIFFGetVersion(), "LIBTIFF, Version 3.5", 20) != 0) { printf("old library: version %s\n", TIFFGetVersion()); exit(-1); } else --- faxd/CopyQuality.c++ 1999/09/02 10:16:22 1.4 +++ faxd/CopyQuality.c++ 2000/03/22 12:32:01 @@ -50,7 +50,7 @@ setupDecoder(conf.recvFillOrder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); recvEOLCount = 0; // count of EOL codes --- faxd/G3Decoder.c++ 1999/06/13 07:41:03 1.2 +++ faxd/G3Decoder.c++ 2000/03/22 12:32:04 @@ -41,13 +41,13 @@ DECLARE_STATE_EOL(); \ int a0; /* reference element */ \ int RunLength; /* length of current run */ \ - uint16* pa; /* place to stuff next run */ \ - uint16* thisrun; /* current row's run array */ \ + uint32* pa; /* place to stuff next run */ \ + uint32* thisrun; /* current row's run array */ \ const TIFFFaxTabEnt* TabEnt #define DECLARE_STATE_2D() \ DECLARE_STATE(); \ int b1; /* next change on prev line */ \ - uint16* pb /* next run in reference line */ + uint32* pb /* next run in reference line */ /* * Load any state that may be changed during decoding. */ @@ -113,7 +113,7 @@ } void -G3Decoder::setRuns(uint16* cr, uint16* rr, int w) +G3Decoder::setRuns(uint32* cr, uint32* rr, int w) { curruns = cr; if (refruns = rr) { @@ -134,7 +134,7 @@ { u_int rowbytes = howmany(w, 8); if (curruns == NULL) { - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, w); while (h-- > 0) { decodeRow(raster, w); @@ -235,7 +235,7 @@ _TIFFFax3fillruns((u_char*) scanline, thisrun, pa, lastx); if (is2D) { SETVAL(0); // imaginary change for reference - SWAP(uint16*, curruns, refruns); + SWAP(uint32*, curruns, refruns); } rowref++; UNCACHE_STATE(); --- faxd/G3Decoder.h 1999/06/13 07:41:03 1.2 +++ faxd/G3Decoder.h 2000/03/22 12:32:05 @@ -43,8 +43,8 @@ int RTCrun; // count of consecutive zero-length rows int rowref; // reference count of rows decoded int RTCrow; // row number of start of RTC - uint16* refruns; // runs for reference line - uint16* curruns; // runs for current line + uint32* refruns; // runs for reference line + uint32* curruns; // runs for current line const u_char* bitmap; // bit reversal table protected: G3Decoder(); @@ -68,8 +68,8 @@ virtual ~G3Decoder(); void setupDecoder(u_int fillorder, bool is2D); - void setRuns(uint16*, uint16*, int); - uint16* lastRuns(); + void setRuns(uint32*, uint32*, int); + uint32* lastRuns(); void decode(void* raster, u_int w, u_int h); bool decodeRow(void* scanline, u_int w); @@ -92,7 +92,7 @@ #define EOFraised() (sigsetjmp(jmpEOF, 0) != 0) #define RTCraised() (sigsetjmp(jmpRTC, 0) != 0) -inline uint16* G3Decoder::lastRuns() { return is2D ? refruns : curruns; } +inline uint32* G3Decoder::lastRuns() { return is2D ? refruns : curruns; } inline const u_char* G3Decoder::getBitmap() { return bitmap; } inline int G3Decoder::getPendingBits() const { return bit; } inline bool G3Decoder::seenRTC() const { return (RTCrow != -1); } --- faxd/TagLine.c++ 1999/08/23 11:19:34 1.4 +++ faxd/TagLine.c++ 2000/03/22 12:32:13 @@ -208,7 +208,7 @@ */ TagLineMemoryDecoder dec(buf); dec.setupDecoder(fillorder, params.is2D()); - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows dec.setRuns(runs, runs+2432, w); dec.decode(NULL, w, th); // discard decoded data --- faxd/choptest.c++ 1999/06/13 07:41:05 1.2 +++ faxd/choptest.c++ 2000/03/22 12:32:14 @@ -70,7 +70,7 @@ } static bool -isBlank(uint16* runs, u_int rowpixels) +isBlank(uint32* runs, u_int rowpixels) { u_int x = 0; for (;;) { @@ -89,7 +89,7 @@ { setupDecoder(fillorder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); if (!RTCraised()) { --- faxd/cqtest.c++ 1999/09/02 10:16:22 1.4 +++ faxd/cqtest.c++ 2000/03/22 12:32:16 @@ -144,7 +144,7 @@ setupDecoder(recvFillOrder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); recvEOLCount = 0; // count of EOL codes --- faxd/faxQueueApp.c++ 2000/03/08 13:44:06 1.7 +++ faxd/faxQueueApp.c++ 2000/03/22 12:32:43 @@ -805,7 +805,7 @@ } static bool -isBlank(uint16* runs, u_int rowpixels) +isBlank(uint32* runs, u_int rowpixels) { u_int x = 0; for (;;) { @@ -824,7 +824,7 @@ { setupDecoder(fillorder, params.is2D()); u_int rowpixels = params.pageWidth(); // NB: assume rowpixels <= 2432 - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows setRuns(runs, runs+2432, rowpixels); if (!RTCraised()) { --- faxd/tagtest.c++ 1999/08/23 11:19:35 1.4 +++ faxd/tagtest.c++ 2000/03/22 12:32:47 @@ -236,7 +236,7 @@ */ MemoryDecoder dec(buf); dec.setupDecoder(fillorder, params.is2D()); - uint16 runs[2*2432]; // run arrays for cur+ref rows + uint32 runs[2*2432]; // run arrays for cur+ref rows dec.setRuns(runs, runs+2432, w); u_int row; --- faxd/tif_fax3.h 1998/10/12 20:47:49 1.1.1.1 +++ faxd/tif_fax3.h 2000/03/22 12:32:51 @@ -1,8 +1,8 @@ -/* $Id: tif_fax3.h,v 1.1.1.1 1998/10/12 20:47:49 root Exp $ */ +/* $Id: tif_fax3.h,v 1.1.1.1 1998/10/12 20:47:49 root Exp $ */ /* - * Copyright (c) 1990-1996 Sam Leffler - * Copyright (c) 1991-1996 Silicon Graphics, Inc. + * Copyright (c) 1990-1997 Sam Leffler + * Copyright (c) 1991-1997 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided @@ -43,7 +43,7 @@ * The routine must have the type signature given below; * for example: * - * fillruns(unsigned char* buf, uint16* runs, uint16* erun, uint32 lastx) + * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx) * * where buf is place to set the bits, runs is the array of b&w run * lengths (white then black), erun is the last run in the array, and @@ -52,7 +52,7 @@ * data in the run array as needed (e.g. to append zero runs to bring * the count up to a nice multiple). */ -typedef void (*TIFFFaxFillFunc)(unsigned char*, uint16*, uint16*, uint32); +typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32); /* * The default run filler; made external for other decoders. @@ -60,7 +60,7 @@ #if defined(__cplusplus) extern "C" { #endif -extern void _TIFFFax3fillruns(unsigned char*, uint16*, uint16*, uint32); +extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32); #if defined(__cplusplus) } #endif @@ -84,7 +84,7 @@ typedef struct { /* state table entry */ unsigned char State; /* see above */ unsigned char Width; /* width of code in bits */ - uint16 Param; /* unsigned 16-bit run length in bits */ + uint32 Param; /* unsigned 32-bit run length in bits */ } TIFFFaxTabEnt; extern const TIFFFaxTabEnt TIFFFaxMainTable[];