This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
> I built 3.3.1 on my SGI here, no problem. But an attempt to ncdump > a 2.4GB Cray file failed: > > ncdump: /archive/jps/tmpdir/ab.nc: Not a netCDF file John: I finally got access to a system with 64 bit off_t's and enough space to debug the problem. Turns out I was doing some intermediate calculatation at 'size_t' precision, which truncated the result on n32 SGI's. (On these platforms, sizeof(off_t) == 8 && sizeof(size_t) == 4.) A patch to src/libsrc/putget.m4 is attached. This will be included in the next general release. Thanks for pointing out this problem, and thanks to Dan Packman for providing the disk space. -glenn
Index: putget.m4
===================================================================
RCS file: /upc/share/CVS/netcdf-3/libsrc/putget.m4,v
retrieving revision 2.40
retrieving revision 2.41
diff -c -r2.40 -r2.41
*** putget.m4 1997/06/04 18:17:19 2.40
--- putget.m4 1997/07/22 16:41:26 2.41
***************
*** 12,18 ****
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*/
! /* $Id: putget.m4,v 2.40 1997/06/04 18:17:19 davis Exp $ */
#include "nc.h"
#include <string.h>
--- 12,18 ----
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
*/
! /* $Id: putget.m4,v 2.41 1997/07/22 16:41:26 davis Exp $ */
#include "nc.h"
#include <string.h>
***************
*** 200,206 ****
offset = varp->begin;
if(IS_RECVAR(varp))
{
! offset += (off_t)(ncp->recsize * recno);
}
assert(remaining > 0);
--- 200,206 ----
offset = varp->begin;
if(IS_RECVAR(varp))
{
! offset += (off_t)ncp->recsize * recno;
}
assert(remaining > 0);
***************
*** 435,447 ****
if(varp->ndims == 1)
{
if(IS_RECVAR(varp))
! return varp->begin + (off_t)(*coord * ncp->recsize);
/* else */
! return varp->begin + (off_t)(*coord * varp->xsz);
}
/* else */
{
! size_t lcoord = coord[varp->ndims -1];
size_t *up = varp->dsizes +1;
const size_t *ip = coord;
--- 435,447 ----
if(varp->ndims == 1)
{
if(IS_RECVAR(varp))
! return varp->begin + (off_t)(*coord) * ncp->recsize;
/* else */
! return varp->begin + (off_t)(*coord) * varp->xsz;
}
/* else */
{
! off_t lcoord = coord[varp->ndims -1];
size_t *up = varp->dsizes +1;
const size_t *ip = coord;
***************
*** 456,465 ****
lcoord *= varp->xsz;
if(IS_RECVAR(varp))
! lcoord += *coord * ncp->recsize;
lcoord += varp->begin;
! return (off_t) lcoord;
}
}
--- 456,465 ----
lcoord *= varp->xsz;
if(IS_RECVAR(varp))
! lcoord += (off_t)(*coord) * ncp->recsize;
lcoord += varp->begin;
! return lcoord;
}
}