[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bug (???) in NetCDF
- Subject: Bug (???) in NetCDF
- Date: Thu, 3 Feb 1994 19:59:13 +1030 (CST)
Hi!
I have just finished downloading netcdf and am having problems compiling it.
I editted CUSTOMIZE to setup CC as gcc -traditional and did a 'setenv CPPFLAGS'.
I then ran configure which made no complaints in producing any of the makefiles.
However, a 'make all' did produce some problems. The file in question was
fortran/jackets.c
I include the log of the make session as well as jackets.c below. Looking at
jackets.c it is incomplete. I realise it is made from jackets.src using the
script in fortc. I will have a bit more of a look at this and see if I can
generate jackets.c manually, although I am loathe to mess with code that I
really don't have any idea about. Even if that works I still felt I should
report the bug.
The machine this was being done on is a Sparc10 running SunOS 4.1.3
If you would like to see any of the other files that were generated by configure
then I will be happy to email them to you.
Thanks.
- Greg
----------------------------------make.log--------------------------------------
making `all' in directory /usr/local/disks/three/glewis/spectral/netcdf/src/port
gcc -traditional -O -c -I. -Dconst= -DNO_STRERROR -O uddummy.c
ar rcuv libudport.a uddummy.o
a - uddummy.o
ranlib libudport.a
returning to directory /usr/local/disks/three/glewis/spectral/netcdf/src
making `all' in directory /usr/local/disks/three/glewis/spectral/netcdf/src/xdr
returning to directory /usr/local/disks/three/glewis/spectral/netcdf/src
making `all' in directory
/usr/local/disks/three/glewis/spectral/netcdf/src/libsrc
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O array.c
In file included from local_nc.h:14,
from array.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O attr.c
In file included from local_nc.h:14,
from attr.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O cdf.c
In file included from local_nc.h:14,
from cdf.c:7:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O dim.c
In file included from local_nc.h:14,
from dim.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O file.c
In file included from local_nc.h:14,
from file.c:12:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O iarray.c
In file included from local_nc.h:14,
from iarray.c:7:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O error.c
In file included from local_nc.h:14,
from error.c:15:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O globdef.c
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O putget.c
In file included from local_nc.h:14,
from putget.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O putgetg.c
In file included from local_nc.h:14,
from putgetg.c:14:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O sharray.c
In file included from local_nc.h:14,
from sharray.c:7:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O string.c
In file included from local_nc.h:14,
from string.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O var.c
In file included from local_nc.h:14,
from var.c:8:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
gcc -traditional -O -c -Dconst= -DNO_STRERROR -O xdrposix.c
In file included from local_nc.h:14,
from xdrposix.c:50:
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stdio.h:38: warning:
`NULL' redefined
/local/gcc/lib/gcc-lib/sparc-sun-sunos4.1.3/2.5.6/include/stddef.h:215:
warning: this is the location of the previous definition
ar rcuv libnetcdf.a array.o attr.o cdf.o dim.o file.o iarray.o error.o
globdef.o putget.o putgetg.o sharray.o string.o var.o xdrposix.o
a - array.o
a - attr.o
a - cdf.o
a - dim.o
a - file.o
a - iarray.o
a - error.o
a - globdef.o
a - putget.o
a - putgetg.o
a - sharray.o
a - string.o
a - var.o
a - xdrposix.o
ranlib libnetcdf.a
returning to directory /usr/local/disks/three/glewis/spectral/netcdf/src
making `all' in directory
/usr/local/disks/three/glewis/spectral/netcdf/src/fortran
./fortc -L . -O sunos common.inc > netcdf.inc
./fortc -L . -O sunos jackets.src > jackets.c
gcc -traditional -O -c -I../libsrc -Dconst= -DNO_STRERROR -O jackets.c
jackets.c:414: unterminated `#if' conditional
*** Error code 1
make: Fatal error: Command failed for target `jackets.o'
Current working directory
/usr/local/disks/three/glewis/spectral/netcdf/src/fortran
*** Error code 1
make: Fatal error: Command failed for target `all'
Current working directory
/usr/local/disks/three/glewis/spectral/netcdf/src/fortran
*** Error code 1
make: Fatal error: Command failed for target `fortran/all'
------------------------------end make.log--------------------------------------
-------------------------------jackets.c----------------------------------------
/*
* Copyright 1990, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*/
/* $Header: /upc/new/netcdf/src/fortran/RCS/jackets.src,v 1.27 1993/06/08
19:28:38 steve Exp $ */
/*
* OVERVIEW
*
* This file contains jacket routines written in C for interfacing Fortran
* netCDF function calls to the actual C binding for the NetCDF. This code
* is written explicitly for Sun. In general, these functions handle
* character-string parameter conventions, convert between
* column-major-order arrays and row-major-order arrays, and map between
* array indices beginning at one and array indices beginning at zero.
*
*/
/* LINTLIBRARY */
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "netcdf.h"
#if !NC_OLD_FILLVALUES
struct ncfils { /* This will be a common block from Fortran */
double dd;
#ifdef __alpha
int ll;
#else
long ll;
#endif
float ff;
short ss;
char cc;
char bb;
} ncfils_ = {
FILL_DOUBLE,
FILL_LONG,
FILL_FLOAT,
FILL_SHORT,
FILL_CHAR,
FILL_BYTE
};
#else /* NC_OLD_FILLVALUES below */
/*
* This section is provided for backward compatibility only. Using
* XDR infinities for floating-point fill values has caused more problems
* than it has solved. We encourage you to define your own data-specific
* fill values rather than use default ones.
* If, however, you *must* use default fill values, then you should use
* the above fill values rather than the ones in this section.
*/
struct ncfils { /* This will be a common block from Fortran */
double dd;
#ifdef __alpha
int ll;
#else
long ll;
#endif
float ff;
short ss;
char cc;
char bb;
} ncfils_ = {
XDR_D_INFINITY, /* You may have to insert a constant here */
FILL_LONG,
XDR_F_INFINITY, /* You may have to insert a constant here */
FILL_SHORT,
FILL_CHAR,
FILL_BYTE
};
#endif /* NC_OLD_FILLVALUES above */
/*
* global integer used for suppressing error messages and determining
* the fatality of errors.
*/
extern int ncopts; /* default is (NC_FATAL | NC_VERBOSE) */
/* global integer that contains a netCDF-specific error code */
extern int ncerr;
/* blank fill C string to make FORTRAN string */
static void
fcdcpy (fstring, fslen, sstring)
char *fstring; /* output string to be blank-filled */
int fslen; /* length of output string */
char *sstring; /* input string, null-terminated */
{
int i, len = strlen(sstring);
for (i = 0; i < len; i++)
*(fstring + i) = *(sstring + i);
for (i = len; i < fslen; i++)
*(fstring + i) = ' ';
}
static void
reverse (array, length)
int array[]; /* array to be reversed */
int length; /* length of array */
{
int temp, i, j;
for (i = 0, j = length - 1; i < j; i++, j--) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
static void
revlongs (array, length)
long array[]; /* array to be reversed */
int length; /* length of array */
{
int i, j;
long temp;
for (i = 0, j = length - 1; i < j; i++, j--) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
/* error handling function */
static void
handle_err (pname, rcode)
char *pname; /* procedure name */
int rcode; /* error return */
{
extern void NCadvise();
extern char *cdf_routine_name; /* routine name in error messages */
cdf_routine_name = pname;
NCadvise(rcode, "string won't fit in CHARACTER variable provided");
}
/* copy function used to copy strings with embedded blanks */
static void
fstrncpy (target, source, maxlen)
char *target; /* space to be copied into */
char *source; /* string to be copied */
int maxlen; /* maximum length of *source */
{
while (maxlen-- && *source != '\0')
*target++ = *source++;
*target = '\0';
}
/* copy function used to copy strings terminated with blanks */
static void
nstrncpy (target, source, maxlen)
char *target; /* space to be copied into */
char *source; /* string to be copied */
int maxlen; /* maximum length of *source */
{
while (maxlen-- && *source != ' ')
*target++ = *source++;
*target = '\0';
}
/*
* Compute product of dimensions.
*/
static long
dimprod (dims, ndims)
long *dims; /* list of dimensions */
int ndims; /* number of dimensions in list */
{
long *ip;
long prod = 1;
for (ip = dims; ip < &dims[ndims]; ip++)
prod *= *ip;
return prod;
}
#ifdef FORTRAN_HAS_NO_BYTE
/*
* Convert multi-dimensional array of bytes stored in ints to packed array of
* bytes, in malloc'ed space. Returns pointer to bytes or NULL if malloc
* failed.
*/
static char *
itob(ints, dims, ndims)
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims); /* product of dimensions */
char *bytes = (char *) malloc (iocount * sizeof (char));
int *ip;
char *bp = bytes;
if (bytes != NULL)
for (ip = ints; iocount > 0; iocount--)
*bp++ = (char) *ip++;
return bytes;
}
/*
* Convert a generalized multi-dimensional array of bytes stored in ints to
* packed array of bytes, in malloc'ed space. Returns pointer to bytes or
* NULL if malloc failed.
*/
static char *
itobg(ints, dims, basis, ndims)
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
long *basis; /* memory access basis vector */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims); /* product of dimensions */
char *bytes = (char *) malloc (iocount * sizeof (char));
if (bytes != NULL && iocount > 0) {
int idim;
char *bp = bytes;
char *ip = (char*)ints;
long length[MAX_NC_DIMS];
long coords[MAX_NC_DIMS];
for (idim = 0; idim < ndims; ++idim) {
length[idim] = dims[idim]*basis[idim];
coords[idim] = 0;
}
for (;;) {
*bp++ = (char)*(int*)ip;
idim = ndims - 1;
carry:
ip += basis[idim];
if (++coords[idim] >= dims[idim]) {
coords[idim] = 0;
ip -= length[idim];
if (--idim < 0)
break;
goto carry;
}
}
}
return bytes;
}
/*
* Convert a packed array of bytes into a generalized multi-dimensional array
* of ints.
*/
static void
btoig(bytes, ints, dims, basis, ndims)
char *bytes; /* packed array of bytes */
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
long *basis; /* memory access basis vector */
int ndims; /* number of dimensions in list */
{
if (dimprod (dims, ndims) > 0) {
int idim;
char *bp = bytes;
char *ip = (char*)ints;
long length[MAX_NC_DIMS];
long coords[MAX_NC_DIMS];
for (idim = 0; idim < ndims; ++idim) {
length[idim] = dims[idim]*basis[idim];
coords[idim] = 0;
}
for (;;) {
*(int*)ip = *bp++;
idim = ndims - 1;
carry:
ip += basis[idim];
if (++coords[idim] >= dims[idim]) {
coords[idim] = 0;
ip -= length[idim];
if (--idim < 0)
break;
goto carry;
}
}
}
}
#endif /* FORTRAN_HAS_NO_BYTE */
#ifdef FORTRAN_HAS_NO_SHORT
/*
* Convert multi-dimensional array of shorts stored in ints to packed array of
* shorts, in malloc'ed space. Returns pointer to shorts or NULL if malloc
* failed.
*/
static short *
itos(ints, dims, ndims)
int *ints; /* multi-dimensional array of ints */
long *dims; /* list of dimensions */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims); /* product of dimensions */
short *shorts = (short *) malloc (iocount * sizeof (short));
int *ip;
short *sp = shorts;
if (shorts != NULL)
for (ip = ints; iocount > 0; iocount--)
*sp++ = (short) *ip++;
return shorts;
}
/*
* Convert a generalized multi-dimensional array of shorts stored in ints to
* packed array of shorts, in malloc'ed space. Returns pointer to shorts or
* NULL if malloc failed.
*/
static short *
itosg(ints, dims, basis, ndims)
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
long *basis; /* memory access basis vector */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims); /* product of dimensions */
short *shorts = (short *) malloc (iocount * sizeof (short));
if (shorts != NULL && iocount > 0) {
int idim;
char *ip = (char*)ints;
short *sp = shorts;
long length[MAX_NC_DIMS];
long coords[MAX_NC_DIMS];
for (idim = 0; idim < ndims; ++idim) {
length[idim] = dims[idim]*basis[idim];
coords[idim] = 0;
}
for (;;) {
*sp++ = (short)*(int*)ip;
idim = ndims - 1;
carry:
ip += basis[idim];
if (++coords[idim] >= dims[idim]) {
coords[idim] = 0;
ip -= length[idim];
if (--idim < 0)
break;
goto carry;
}
}
}
return shorts;
}
/*
* Convert a packed array of shorts into a generalized multi-dimensional array
* of ints.
*/
static void
stoig(shorts, ints, dims, basis, ndims)
short *shorts; /* packed array of shorts */
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
long *basis; /* memory access basis vector */
int ndims; /* number of dimensions in list */
{
if (dimprod (dims, ndims) > 0) {
int idim;
short *sp = shorts;
char *ip = (char*)ints;
long length[MAX_NC_DIMS];
long coords[MAX_NC_DIMS];
for (idim = 0; idim < ndims; ++idim) {
length[idim] = dims[idim]*basis[idim];
coords[idim] = 0;
}
for (;;) {
*(int*)ip = *sp++;
idim = ndims - 1;
carry:
ip += basis[idim];
if (++coords[idim] >= dims[idim]) {
coords[idim] = 0;
ip -= length[idim];
if (--idim < 0)
break;
goto carry;
}
}
}
}
#endif /* FORTRAN_HAS_NO_SHORT */
#ifdef __alpha
/*
* Convert multi-dimensional array of NCLONGs stored in ints to packed
* array of longs, in malloc'ed space. Returns pointer to longs or NULL
* if malloc failed.
*/
static long *
itol(ints, dims, ndims)
int *ints; /* multi-dimensional array of ints */
long *dims; /* list of dimensions */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims);
long *longs = (long *) malloc (iocount * sizeof (long));
int *ip;
long *lp = longs;
if (longs != NULL)
for (ip = ints; iocount > 0; iocount--)
*lp++ = (long) *ip++;
return longs;
}
/*
* Convert a generalized multi-dimensional array of longs stored in ints to
* packed array of longs, in malloc'ed space. Returns pointer to longs or
* NULL if malloc failed.
*/
static long *
itolg(ints, dims, imap, ndims)
int *ints; /* multi-dimensional array of integers */
long *dims; /* list of dimensions */
long *imap; /* memory access index mapping vector */
int ndims; /* number of dimensions in list */
{
long iocount = dimprod (dims, ndims);
long *longs = (long *) malloc (iocount * sizeof (long));
if (longs != NULL && iocount > 0) {
int idim;
char *ip = (char*)ints;
long *lp = longs;
long length[MAX_NC_DIMS];
long coords[MAX_NC_DIMS];
for (idim = 0; idim < ndims; ++idim) {
length[idim] = dims[idim]*imap[idim];
coords[idim] = 0;
}
for (;;) {
*lp++ = (long)*(int*)ip;
idim = ndims - 1;
carry:
ip += imap[idim];
if (++coords[idim] >= dims[idim]) {
coords[idim] = 0;
ip -= length[idim];
if (--idim < 0)
break;
goto carry;
}
}
}
return longs;
}
/*
* Convert a packed array of longs into a generalized multi-dimensional array
* of ints.
*/
static void
ltoig(longs, ints, dims, imap, ndims)
long *longs; /* packed array
-----------------------end of jackets.c that I get------------------------------
>From address@hidden Fri Feb 4 06:56:41 1994
It seems that generating jackets.c by hand works.
I have no idea why it works when one types the command by hand rather than
the makefile doing it...
Anyway, sorry to bother you.
I did get another bug in trying to make ncgentab.c in the ncgen directory
Output as follows
gcc -traditional -O -c -I../libsrc -Dconst= -DNO_STRERROR -O ncgentab.c
In file included from ncgentab.c:14:
/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.1/2.2.2/include/stdlib.h:29: conflicti
ng types for `malloc'
ncgentab.c:1: previous declaration of `malloc'
/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.1/2.2.2/include/stdlib.h:33: conflicti
ng types for `realloc'
ncgentab.c:1: previous declaration of `realloc'
*** Error code 1
make: Fatal error: Command failed for target `ncgentab.o'
Current working directory /usr/local/disks/three/glewis/spectral/netcdf/src/ncge
*** Error code 1
make: Fatal error: Command failed for target `ncgen/all'
This was fixed by simply commenting out the declaration at the head of
ncgentab.c
- Greg