diff -ur shapelib-1.2.10/Makefile shapelib-1.2.10-tm/Makefile --- shapelib-1.2.10/Makefile 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/Makefile 2007-05-17 10:51:27.000000000 +1200 @@ -1,6 +1,7 @@ - -#LINKOPT = /usr/local/lib/libdbmalloc.a -CFLAGS = -g +CC = cc +LD = ld +PREFIX = /usr/arm-softfloat-linux-gnu +CFLAGS = -g -Wall default: all @@ -99,25 +100,25 @@ LIBSHP_VERSION=1.0.1 # still once to be changed manually (see for 1:1:0), sorry lib: - /bin/sh ./libtool --mode=compile gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c shpopen.c - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c -fPIC -DPIC shpopen.c -o .libs/shpopen.lo - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c shpopen.c -o shpopen.o >/dev/null 2>&1 + /bin/sh ./libtool --mode=compile $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c shpopen.c + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c -fPIC -DPIC shpopen.c -o .libs/shpopen.lo + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c shpopen.c -o shpopen.o >/dev/null 2>&1 mv -f .libs/shpopen.lo shpopen.lo - /bin/sh ./libtool --mode=compile gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c shptree.c + /bin/sh ./libtool --mode=compile $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c shptree.c rm -f .libs/shptree.lo - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c -fPIC -DPIC shptree.c -o .libs/shptree.lo - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c shptree.c -o shptree.o >/dev/null 2>&1 + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c -fPIC -DPIC shptree.c -o .libs/shptree.lo + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c shptree.c -o shptree.o >/dev/null 2>&1 mv -f .libs/shptree.lo shptree.lo - /bin/sh ./libtool --mode=compile gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c dbfopen.c + /bin/sh ./libtool --mode=compile $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c dbfopen.c rm -f .libs/dbfopen.lo - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c -fPIC -DPIC dbfopen.c -o .libs/dbfopen.lo - gcc -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I/usr/local/include -g -O2 -c dbfopen.c -o dbfopen.o >/dev/null 2>&1 + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c -fPIC -DPIC dbfopen.c -o .libs/dbfopen.lo + $(CC) -DPACKAGE=\"libshp\" -DVERSION=\"$(SHPLIB_VERSION)\" -DSTDC_HEADERS=1 -I. -I. -I$(PREFIX)/include -g -O2 -c dbfopen.c -o dbfopen.o >/dev/null 2>&1 mv -f .libs/dbfopen.lo dbfopen.lo - /bin/sh ./libtool --mode=link gcc -g -O2 -o libshp.la -rpath /usr/local/lib -version-info 1:1:0 shpopen.lo shptree.lo dbfopen.lo + /bin/sh ./libtool --mode=link $(CC) -g -O2 -o libshp.la -rpath $(PREFIX)/lib -version-info 1:1:0 shpopen.lo shptree.lo dbfopen.lo rm -fr .libs/libshp.la .libs/libshp.* .libs/libshp.* rm -fr .libs/libshp.lax mkdir .libs/libshp.lax - /usr/bin/ld -G -h libshp.so.1 -o .libs/libshp.so.$(LIBSHP_VERSION) shpopen.lo shptree.lo dbfopen.lo -lc + $(LD) -G -h libshp.so.1 -o .libs/libshp.so.$(LIBSHP_VERSION) shpopen.lo shptree.lo dbfopen.lo -lc (cd .libs && rm -f libshp.so.1 && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so.1) (cd .libs && rm -f libshp.so && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so) @@ -128,15 +129,15 @@ lib_install: cp .libs/libshp.la .libs/libshp.lai - /bin/sh ./mkinstalldirs /usr/local/lib - /bin/sh ./libtool --mode=install /usr/bin/install -c libshp.la /usr/local/lib/libshp.la - /usr/bin/install -c .libs/libshp.so.$(LIBSHP_VERSION) /usr/local/lib/libshp.so.$(LIBSHP_VERSION) - (cd /usr/local/lib && rm -f libshp.so.1 && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so.1) - (cd /usr/local/lib && rm -f libshp.so && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so) - chmod +x /usr/local/lib/libshp.so.$(LIBSHP_VERSION) - /usr/bin/install -c .libs/libshp.la /usr/local/lib/libshp.la - /usr/bin/install -c .libs/libshp.a /usr/local/lib/libshp.a - ranlib /usr/local/lib/libshp.a - chmod 644 /usr/local/lib/libshp.a - /bin/sh ./mkinstalldirs /usr/local/include/libshp - /usr/bin/install -c -m 644 shapefil.h /usr/local/include/libshp/shapefil.h + /bin/sh ./mkinstalldirs $(PREFIX)/lib + /bin/sh ./libtool --mode=install /usr/bin/install -c libshp.la $(PREFIX)/lib/libshp.la + /usr/bin/install -c .libs/libshp.so.$(LIBSHP_VERSION) $(PREFIX)/lib/libshp.so.$(LIBSHP_VERSION) + (cd $(PREFIX)/lib && rm -f libshp.so.1 && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so.1) + (cd $(PREFIX)/lib && rm -f libshp.so && ln -s libshp.so.$(LIBSHP_VERSION) libshp.so) + chmod +x $(PREFIX)/lib/libshp.so.$(LIBSHP_VERSION) + /usr/bin/install -c .libs/libshp.la $(PREFIX)/lib/libshp.la + /usr/bin/install -c .libs/libshp.a $(PREFIX)/lib/libshp.a + ranlib $(PREFIX)/lib/libshp.a + chmod 644 $(PREFIX)/lib/libshp.a + /bin/sh ./mkinstalldirs $(PREFIX)/include/libshp + /usr/bin/install -c -m 644 shapefil.h $(PREFIX)/include/libshp/shapefil.h diff -ur shapelib-1.2.10/dbfadd.c shapelib-1.2.10-tm/dbfadd.c --- shapelib-1.2.10/dbfadd.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/dbfadd.c 2007-05-17 08:53:59.000000000 +1200 @@ -54,12 +54,13 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: dbfadd.c,v 1.7 2002/01/15 14:36:07 warmerda Exp $"; #include "shapefil.h" #include #include +#include int main( int argc, char ** argv ) diff -ur shapelib-1.2.10/dbfcreate.c shapelib-1.2.10-tm/dbfcreate.c --- shapelib-1.2.10/dbfcreate.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/dbfcreate.c 2007-05-17 08:53:30.000000000 +1200 @@ -51,7 +51,7 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: dbfcreate.c,v 1.6 2002/01/15 14:36:07 warmerda Exp $"; #include diff -ur shapelib-1.2.10/dbfdump.c shapelib-1.2.10-tm/dbfdump.c --- shapelib-1.2.10/dbfdump.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/dbfdump.c 2007-05-17 08:54:16.000000000 +1200 @@ -60,7 +60,7 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: dbfdump.c,v 1.9 2002/01/15 14:36:07 warmerda Exp $"; #include diff -ur shapelib-1.2.10/dbfopen.c shapelib-1.2.10-tm/dbfopen.c --- shapelib-1.2.10/dbfopen.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/dbfopen.c 2007-05-17 08:53:20.000000000 +1200 @@ -182,7 +182,7 @@ * Added header. */ -static char rcsid[] = +static const char rcsid[] = "$Id: dbfopen.c,v 1.48 2003/03/10 14:51:27 warmerda Exp $"; #include "shapefil.h" diff -ur shapelib-1.2.10/shpadd.c shapelib-1.2.10-tm/shpadd.c --- shapelib-1.2.10/shpadd.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shpadd.c 2007-05-17 08:48:51.000000000 +1200 @@ -72,7 +72,7 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: shpadd.c,v 1.13 2002/01/15 14:36:07 warmerda Exp $"; #include diff -ur shapelib-1.2.10/shpcreate.c shapelib-1.2.10-tm/shpcreate.c --- shapelib-1.2.10/shpcreate.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shpcreate.c 2007-05-17 08:48:36.000000000 +1200 @@ -48,7 +48,10 @@ * */ -static char rcsid[] = +#include +#include + +static const char rcsid[] = "$Id: shpcreate.c,v 1.5 2002/01/15 14:36:07 warmerda Exp $"; #include "shapefil.h" diff -ur shapelib-1.2.10/shpdump.c shapelib-1.2.10-tm/shpdump.c --- shapelib-1.2.10/shpdump.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shpdump.c 2007-05-17 08:49:22.000000000 +1200 @@ -64,7 +64,10 @@ * */ -static char rcsid[] = +#include +#include + +static const char rcsid[] = "$Id: shpdump.c,v 1.10 2002/04/10 16:59:29 warmerda Exp $"; #include "shapefil.h" diff -ur shapelib-1.2.10/shpopen.c shapelib-1.2.10-tm/shpopen.c --- shapelib-1.2.10/shpopen.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shpopen.c 2007-05-17 10:51:09.000000000 +1200 @@ -158,7 +158,7 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: shpopen.c,v 1.39 2002/08/26 06:46:56 warmerda Exp $"; #include "shapefil.h" @@ -189,7 +189,7 @@ #endif static int bBigEndian; - +static int bSwapFPWords; /************************************************************************/ /* SwapWord() */ @@ -212,6 +212,64 @@ } /************************************************************************/ +/* TranslateDouble() */ +/* */ +/* Convert a double-precision floating point value to/from machine */ +/* representation. */ +/************************************************************************/ + +static void TranslateDouble(int length, void *data) +{ + if (bBigEndian) SwapWord(length, data); + + if (bSwapFPWords) { + unsigned int *udata = (unsigned int *)data; + unsigned int temp = udata[1]; + + udata[1] = udata[0]; + udata[0] = temp; + } +} + +/************************************************************************/ +/* CheckByteOrdering() */ +/* */ +/* Figure out the rules for byte ordering on this machine. */ +/************************************************************************/ + +static void CheckByteOrdering() +{ + int i; + + union { + double dValue; + unsigned char bytes[8]; + } fptest; + + i = 1; + if( *((uchar *) &i) == 1 ) + bBigEndian = FALSE; + else + bBigEndian = TRUE; + + /* 1.0 = 3F F0 00 00 00 00 00 00 + * + * This is what bytes[] should look like after converting to big-endian + * byte order. On arm-softfloat-*-gnu though, we get this instead: + * + * 00 00 00 00 3F F0 00 00 + * + * So we need to swap high and low words as well. + */ + + fptest.dValue = 1.0; + if (!bBigEndian) SwapWord(8, fptest.bytes); + + if (fptest.bytes[0]) bSwapFPWords = FALSE; + else bSwapFPWords = TRUE; +} + +/************************************************************************/ /* SfRealloc() */ /* */ /* A realloc cover function that will access a NULL pointer as */ @@ -266,35 +324,35 @@ dValue = psSHP->adBoundsMin[0]; /* set bounds */ ByteCopy( &dValue, abyHeader+36, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+36 ); + TranslateDouble( 8, abyHeader+36 ); dValue = psSHP->adBoundsMin[1]; ByteCopy( &dValue, abyHeader+44, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+44 ); + TranslateDouble( 8, abyHeader+44 ); dValue = psSHP->adBoundsMax[0]; ByteCopy( &dValue, abyHeader+52, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+52 ); + TranslateDouble( 8, abyHeader+52 ); dValue = psSHP->adBoundsMax[1]; ByteCopy( &dValue, abyHeader+60, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+60 ); + TranslateDouble( 8, abyHeader+60 ); dValue = psSHP->adBoundsMin[2]; /* z */ ByteCopy( &dValue, abyHeader+68, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+68 ); + TranslateDouble( 8, abyHeader+68 ); dValue = psSHP->adBoundsMax[2]; ByteCopy( &dValue, abyHeader+76, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+76 ); + TranslateDouble( 8, abyHeader+76 ); dValue = psSHP->adBoundsMin[3]; /* m */ ByteCopy( &dValue, abyHeader+84, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+84 ); + TranslateDouble( 8, abyHeader+84 ); dValue = psSHP->adBoundsMax[3]; ByteCopy( &dValue, abyHeader+92, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+92 ); + TranslateDouble( 8, abyHeader+92 ); /* -------------------------------------------------------------------- */ /* Write .shp file header. */ @@ -362,11 +420,7 @@ /* -------------------------------------------------------------------- */ /* Establish the byte order on this machine. */ /* -------------------------------------------------------------------- */ - i = 1; - if( *((uchar *) &i) == 1 ) - bBigEndian = FALSE; - else - bBigEndian = TRUE; + CheckByteOrdering(); /* -------------------------------------------------------------------- */ /* Initialize the info structure. */ @@ -477,35 +531,35 @@ /* -------------------------------------------------------------------- */ /* Read the bounds. */ /* -------------------------------------------------------------------- */ - if( bBigEndian ) SwapWord( 8, pabyBuf+36 ); + TranslateDouble( 8, pabyBuf+36 ); memcpy( &dValue, pabyBuf+36, 8 ); psSHP->adBoundsMin[0] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+44 ); + TranslateDouble( 8, pabyBuf+44 ); memcpy( &dValue, pabyBuf+44, 8 ); psSHP->adBoundsMin[1] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+52 ); + TranslateDouble( 8, pabyBuf+52 ); memcpy( &dValue, pabyBuf+52, 8 ); psSHP->adBoundsMax[0] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+60 ); + TranslateDouble( 8, pabyBuf+60 ); memcpy( &dValue, pabyBuf+60, 8 ); psSHP->adBoundsMax[1] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+68 ); /* z */ + TranslateDouble( 8, pabyBuf+68 ); /* z */ memcpy( &dValue, pabyBuf+68, 8 ); psSHP->adBoundsMin[2] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+76 ); + TranslateDouble( 8, pabyBuf+76 ); memcpy( &dValue, pabyBuf+76, 8 ); psSHP->adBoundsMax[2] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+84 ); /* z */ + TranslateDouble( 8, pabyBuf+84 ); /* z */ memcpy( &dValue, pabyBuf+84, 8 ); psSHP->adBoundsMin[3] = dValue; - if( bBigEndian ) SwapWord( 8, pabyBuf+92 ); + TranslateDouble( 8, pabyBuf+92 ); memcpy( &dValue, pabyBuf+92, 8 ); psSHP->adBoundsMax[3] = dValue; @@ -627,11 +681,7 @@ /* -------------------------------------------------------------------- */ /* Establish the byte order on this system. */ /* -------------------------------------------------------------------- */ - i = 1; - if( *((uchar *) &i) == 1 ) - bBigEndian = FALSE; - else - bBigEndian = TRUE; + CheckByteOrdering(); /* -------------------------------------------------------------------- */ /* Compute the base (layer) name. If there is any extension */ @@ -729,13 +779,10 @@ ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 ); ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 ); - if( bBigEndian ) - { - SwapWord( 8, pabyRec + 0 ); - SwapWord( 8, pabyRec + 8 ); - SwapWord( 8, pabyRec + 16 ); - SwapWord( 8, pabyRec + 24 ); - } + TranslateDouble( 8, pabyRec + 0 ); + TranslateDouble( 8, pabyRec + 8 ); + TranslateDouble( 8, pabyRec + 16 ); + TranslateDouble( 8, pabyRec + 24 ); } /************************************************************************/ @@ -1017,11 +1064,8 @@ ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 ); ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 ); - if( bBigEndian ) - SwapWord( 8, pabyRec + nRecordSize ); - - if( bBigEndian ) - SwapWord( 8, pabyRec + nRecordSize + 8 ); + TranslateDouble( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize + 8 ); nRecordSize += 2 * 8; } @@ -1034,17 +1078,17 @@ || psObject->nSHPType == SHPT_MULTIPATCH ) { ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } @@ -1061,17 +1105,17 @@ || psObject->nSHPType == SHPT_ARCZ ) { ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } @@ -1099,8 +1143,8 @@ ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 ); ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 ); + TranslateDouble( 8, pabyRec + 48 + i*16 ); + TranslateDouble( 8, pabyRec + 48 + i*16 + 8 ); } nRecordSize = 48 + 16 * psObject->nVertices; @@ -1108,17 +1152,17 @@ if( psObject->nSHPType == SHPT_MULTIPOINTZ ) { ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } @@ -1127,17 +1171,17 @@ || psObject->nSHPType == SHPT_MULTIPOINTM ) { ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; for( i = 0; i < psObject->nVertices; i++ ) { ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } @@ -1153,15 +1197,15 @@ ByteCopy( psObject->padfX, pabyRec + 12, 8 ); ByteCopy( psObject->padfY, pabyRec + 20, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 12 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 20 ); + TranslateDouble( 8, pabyRec + 12 ); + TranslateDouble( 8, pabyRec + 20 ); nRecordSize = 28; if( psObject->nSHPType == SHPT_POINTZ ) { ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } @@ -1169,7 +1213,7 @@ || psObject->nSHPType == SHPT_POINTM ) { ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); + TranslateDouble( 8, pabyRec + nRecordSize ); nRecordSize += 8; } } @@ -1329,10 +1373,10 @@ memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); + TranslateDouble( 8, &(psShape->dfXMin) ); + TranslateDouble( 8, &(psShape->dfYMin) ); + TranslateDouble( 8, &(psShape->dfXMax) ); + TranslateDouble( 8, &(psShape->dfYMax) ); /* -------------------------------------------------------------------- */ /* Extract part/point count, and build vertex and part arrays */ @@ -1395,8 +1439,8 @@ psSHP->pabyRec + nOffset + i * 16 + 8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); - if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); + TranslateDouble( 8, psShape->padfX + i ); + TranslateDouble( 8, psShape->padfY + i ); } nOffset += 16*nPoints; @@ -1411,14 +1455,14 @@ memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); + TranslateDouble( 8, &(psShape->dfZMin) ); + TranslateDouble( 8, &(psShape->dfZMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfZ + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); + TranslateDouble( 8, psShape->padfZ + i ); } nOffset += 16 + 8*nPoints; @@ -1435,14 +1479,14 @@ memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); + TranslateDouble( 8, &(psShape->dfMMin) ); + TranslateDouble( 8, &(psShape->dfMMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfM + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); + TranslateDouble( 8, psShape->padfM + i ); } } @@ -1472,8 +1516,8 @@ memcpy(psShape->padfX+i, psSHP->pabyRec + 48 + 16 * i, 8 ); memcpy(psShape->padfY+i, psSHP->pabyRec + 48 + 16 * i + 8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); - if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); + TranslateDouble( 8, psShape->padfX + i ); + TranslateDouble( 8, psShape->padfY + i ); } nOffset = 48 + 16*nPoints; @@ -1486,10 +1530,10 @@ memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 ); memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); + TranslateDouble( 8, &(psShape->dfXMin) ); + TranslateDouble( 8, &(psShape->dfYMin) ); + TranslateDouble( 8, &(psShape->dfXMax) ); + TranslateDouble( 8, &(psShape->dfYMax) ); /* -------------------------------------------------------------------- */ /* If we have a Z coordinate, collect that now. */ @@ -1499,14 +1543,14 @@ memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); + TranslateDouble( 8, &(psShape->dfZMin) ); + TranslateDouble( 8, &(psShape->dfZMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfZ + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); + TranslateDouble( 8, psShape->padfZ + i ); } nOffset += 16 + 8*nPoints; @@ -1523,14 +1567,14 @@ memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 ); memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); + TranslateDouble( 8, &(psShape->dfMMin) ); + TranslateDouble( 8, &(psShape->dfMMax) ); for( i = 0; i < nPoints; i++ ) { memcpy( psShape->padfM + i, psSHP->pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); + TranslateDouble( 8, psShape->padfM + i ); } } } @@ -1553,8 +1597,8 @@ memcpy( psShape->padfX, psSHP->pabyRec + 12, 8 ); memcpy( psShape->padfY, psSHP->pabyRec + 20, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfX ); - if( bBigEndian ) SwapWord( 8, psShape->padfY ); + TranslateDouble( 8, psShape->padfX ); + TranslateDouble( 8, psShape->padfY ); nOffset = 20 + 8; @@ -1565,7 +1609,7 @@ { memcpy( psShape->padfZ, psSHP->pabyRec + nOffset, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfZ ); + TranslateDouble( 8, psShape->padfZ ); nOffset += 8; } @@ -1580,7 +1624,7 @@ { memcpy( psShape->padfM, psSHP->pabyRec + nOffset, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfM ); + TranslateDouble( 8, psShape->padfM ); } /* -------------------------------------------------------------------- */ Files shapelib-1.2.10/shprewind and shapelib-1.2.10-tm/shprewind differ diff -ur shapelib-1.2.10/shprewind.c shapelib-1.2.10-tm/shprewind.c --- shapelib-1.2.10/shprewind.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shprewind.c 2007-05-17 08:53:08.000000000 +1200 @@ -43,6 +43,7 @@ * */ +#include #include "shapefil.h" int main( int argc, char ** argv ) @@ -90,7 +91,6 @@ /* -------------------------------------------------------------------- */ for( i = 0; i < nEntities; i++ ) { - int j; SHPObject *psShape; psShape = SHPReadObject( hSHP, i ); diff -ur shapelib-1.2.10/shptest.c shapelib-1.2.10-tm/shptest.c --- shapelib-1.2.10/shptest.c 2003-04-08 01:03:22.000000000 +1200 +++ shapelib-1.2.10-tm/shptest.c 2007-05-17 08:54:24.000000000 +1200 @@ -55,7 +55,7 @@ * */ -static char rcsid[] = +static const char rcsid[] = "$Id: shptest.c,v 1.6 2002/01/15 14:36:07 warmerda Exp $"; #include