Received: by whizzer.wpd.sgi.com (921026.SGI.NOSTRIP/911001.SGI)
	 id AA17099; Tue, 19 Oct 93 11:18:39 GMT
Received: from sgi.sgi.com by whizzer.wpd.sgi.com via SMTP (921026.SGI.NOSTRIP/911001.SGI)
	for /usr/people/sam/majordomo/wrapper resend -l tiff -h sgi.sgi.com -f tiff-owner -s -m "-oi -odq -om" tiff-list id AA17091; Tue, 19 Oct 93 04:18:35 -0700
Received: from lri.lri.fr by sgi.sgi.com via SMTP (920330.SGI/910110.SGI)
	for tiff-relay@whizzer.wpd.sgi.com id AA21468; Tue, 19 Oct 93 04:18:28 -0700
Received: by lri.lri.fr, Tue, 19 Oct 1993 12:17:28 +0100  (sender-id: jdf@lri.lri.fr)
Date: Tue, 19 Oct 1993 12:17:28 +0100
From: Jean-Daniel Fekete <Jean-Daniel.Fekete@lri.fr>
Message-Id: <199310191117.AA08970@lri.lri.fr>
To: tiff@sgi.sgi.com
Subject: Patches for running v3.3beta003 on DEC Alpha
Sender: tiff-owner@sgi.sgi.com

It seems to work for most files. It needs more testing though.
I had a (maybe bad) idea concerning type checking. Most errors are due
to calls to TIFFGetField with a pointer of the wrong type. Wouldn't it
be possible to use the table described in tif_dirinfo.c and generate a
header file and a c file with properly prototyped functions. These
function would look like:

int TIFFGet<tag name>(TIFF*, <tag type>*);

and the c function would look like:
int TIFFGet<tag name>(TIFF* tiff, <tag type>* t)
{
    return TIFFGetField(tiff, TIFFTAG_<TAG NAME>, t);
}

It would certainly be even more valuable to have a C++ class wrapper
defined this way, using only inline functions of a TIFF class.

Maybe deriving the pointer type from the tiffFieldInfo is not that
easy?

Anyway, here are the diffs.

   ___    0  Jean-Daniel Fekete            uucp  : jdf@lri.lri.fr
  /   \  /   LRI - Bat 490                 bitnet: jdf@FRLRI61.bitnet
 /   _/ /    Universite de Paris-Sud       voice : +33 (1) 69 41 65 91
/__   \/     F-91405 ORSAY Cedex                   +33 (1) 69 41 66 29

/^//-\/-\/|  2001 S.A.
 / | || | |  2, rue de la Renaissance      voice : +33 (1) 46 66 54 54
/_ \_/\_/ |  F-92160 ANTONY                  fax : +33 (1) 46 66 59 50

diff -cr tiff-v3.3beta002.orig/contrib/dbs/xtiff/xtiff.c tiff-v3.3beta002/contrib/dbs/xtiff/xtiff.c
*** tiff-v3.3beta002.orig/contrib/dbs/xtiff/xtiff.c	Fri Feb  7 20:55:51 1992
--- tiff-v3.3beta002/contrib/dbs/xtiff/xtiff.c	Mon Oct 11 14:59:09 1993
***************
*** 454,460 ****
       */
      switch (tfPhotometricInterpretation) {
      case PHOTOMETRIC_RGB:
!         if (!TIFFGetField(tfFile, TIFFTAG_COLORRESPONSECURVE,
                  &redMap, &greenMap, &blueMap)) {
              redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
              greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
--- 454,460 ----
       */
      switch (tfPhotometricInterpretation) {
      case PHOTOMETRIC_RGB:
!         if (!TIFFGetField(tfFile, TIFFTAG_COLORMAP,
                  &redMap, &greenMap, &blueMap)) {
              redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
              greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
diff -cr tiff-v3.3beta002.orig/libtiff/tif_dirwrite.c tiff-v3.3beta002/libtiff/tif_dirwrite.c
*** tiff-v3.3beta002.orig/libtiff/tif_dirwrite.c	Fri Aug 27 03:27:30 1993
--- tiff-v3.3beta002/libtiff/tif_dirwrite.c	Mon Oct 11 14:43:54 1993
***************
*** 148,154 ****
  	if (tif->tif_diroff == 0 && !TIFFLinkDirectory(tif))
  		goto bad;
  	tif->tif_dataoff =
! 	    tif->tif_diroff + sizeof (short) + dirsize + sizeof (long);
  	if (tif->tif_dataoff & 1)
  		tif->tif_dataoff++;
  	(void) TIFFSeekFile(tif, tif->tif_dataoff, L_SET);
--- 148,154 ----
  	if (tif->tif_diroff == 0 && !TIFFLinkDirectory(tif))
  		goto bad;
  	tif->tif_dataoff =
! 	    tif->tif_diroff + sizeof (int16) + dirsize + sizeof (int32);
  	if (tif->tif_dataoff & 1)
  		tif->tif_dataoff++;
  	(void) TIFFSeekFile(tif, tif->tif_dataoff, L_SET);
***************
*** 295,301 ****
  		TIFFError(tif->tif_name, "Error writing directory contents");
  		goto bad;
  	}
! 	if (!WriteOK(tif, &tif->tif_nextdiroff, sizeof (long))) {
  		TIFFError(tif->tif_name, "Error writing directory link");
  		goto bad;
  	}
--- 295,301 ----
  		TIFFError(tif->tif_name, "Error writing directory contents");
  		goto bad;
  	}
! 	if (!WriteOK(tif, &tif->tif_nextdiroff, sizeof (int32))) {
  		TIFFError(tif->tif_name, "Error writing directory link");
  		goto bad;
  	}
diff -cr tiff-v3.3beta002.orig/libtiff/tif_unix.c tiff-v3.3beta002/libtiff/tif_unix.c
*** tiff-v3.3beta002.orig/libtiff/tif_unix.c	Fri Aug 27 03:27:41 1993
--- tiff-v3.3beta002/libtiff/tif_unix.c	Mon Oct 11 14:50:18 1993
***************
*** 46,52 ****
  }
  
  static toff_t
! _tiffSeekProc(thandle_t fd, off_t off, int whence)
  {
  	return ((toff_t) lseek((int) fd, (off_t) off, whence));
  }
--- 46,52 ----
  }
  
  static toff_t
! _tiffSeekProc(thandle_t fd, toff_t off, int whence)
  {
  	return ((toff_t) lseek((int) fd, (off_t) off, whence));
  }
diff -cr tiff-v3.3beta002.orig/libtiff/tif_write.c tiff-v3.3beta002/libtiff/tif_write.c
*** tiff-v3.3beta002.orig/libtiff/tif_write.c	Fri Aug 27 03:27:44 1993
--- tiff-v3.3beta002/libtiff/tif_write.c	Mon Oct 11 14:46:08 1993
***************
*** 561,567 ****
   * appended to the end of the file.
   */
  void
! TIFFSetWriteOffset(TIFF* tif, off_t off)
  {
  	tif->tif_curoff = off;
  }
--- 561,567 ----
   * appended to the end of the file.
   */
  void
! TIFFSetWriteOffset(TIFF* tif, toff_t off)
  {
  	tif->tif_curoff = off;
  }
diff -cr tiff-v3.3beta002.orig/tools/tiff2ps.c tiff-v3.3beta002/tools/tiff2ps.c
*** tiff-v3.3beta002.orig/tools/tiff2ps.c	Fri Aug 27 03:27:55 1993
--- tiff-v3.3beta002/tools/tiff2ps.c	Mon Oct 11 14:52:40 1993
***************
*** 239,245 ****
  	uint32 subfiletype;
  	uint16* sampleinfo;
  	int npages;
! 	long t;
  
  	if (!TIFFGetField(tif, TIFFTAG_XPOSITION, &ox))
  		ox = 0;
--- 239,245 ----
  	uint32 subfiletype;
  	uint16* sampleinfo;
  	int npages;
! 	time_t t;
  
  	if (!TIFFGetField(tif, TIFFTAG_XPOSITION, &ox))
  		ox = 0;
diff -cr tiff-v3.3beta002.orig/tools/tiffcp.c tiff-v3.3beta002/tools/tiffcp.c
*** tiff-v3.3beta002.orig/tools/tiffcp.c	Fri Aug 27 03:27:56 1993
--- tiff-v3.3beta002/tools/tiffcp.c	Mon Oct 11 14:53:09 1993
***************
*** 32,38 ****
--- 32,40 ----
  
  #include "tiffio.h"
  
+ #ifndef __alpha
  typedef	unsigned char u_char;
+ #endif
  
  #if defined(VMS)
  #define unlink delete


