mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-11 16:40:36 +08:00
Merge pull request #632 from wkliao/big_var_on_32bit
large files on 32-bit machines
This commit is contained in:
commit
5e705e85b8
@ -21,6 +21,8 @@
|
|||||||
#ifdef HAVE_SYS_STAT_H
|
#ifdef HAVE_SYS_STAT_H
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <unistd.h> /* lseek() */
|
||||||
|
|
||||||
#include "ncdispatch.h"
|
#include "ncdispatch.h"
|
||||||
#include "netcdf_mem.h"
|
#include "netcdf_mem.h"
|
||||||
#include "ncwinpath.h"
|
#include "ncwinpath.h"
|
||||||
@ -2226,17 +2228,17 @@ openmagic(struct MagicFile* file)
|
|||||||
{status = errno; goto done;}
|
{status = errno; goto done;}
|
||||||
/* Get its length */
|
/* Get its length */
|
||||||
{
|
{
|
||||||
#ifdef _MSC_VER
|
|
||||||
int fd = fileno(file->fp);
|
int fd = fileno(file->fp);
|
||||||
|
#ifdef _MSC_VER
|
||||||
__int64 len64 = _filelengthi64(fd);
|
__int64 len64 = _filelengthi64(fd);
|
||||||
if(len64 < 0)
|
if(len64 < 0)
|
||||||
{status = errno; goto done;}
|
{status = errno; goto done;}
|
||||||
file->filelen = (long long)len64;
|
file->filelen = (long long)len64;
|
||||||
#else
|
#else
|
||||||
long size;
|
off_t size;
|
||||||
if((status = fseek(file->fp, 0L, SEEK_END)) < 0)
|
size = lseek(fd, 0, SEEK_END);
|
||||||
|
if(size == -1)
|
||||||
{status = errno; goto done;}
|
{status = errno; goto done;}
|
||||||
size = ftell(file->fp);
|
|
||||||
file->filelen = (long long)size;
|
file->filelen = (long long)size;
|
||||||
#endif
|
#endif
|
||||||
rewind(file->fp);
|
rewind(file->fp);
|
||||||
@ -2269,12 +2271,8 @@ readmagic(struct MagicFile* file, long pos, char* magic)
|
|||||||
if (file->use_parallel) {
|
if (file->use_parallel) {
|
||||||
MPI_Status mstatus;
|
MPI_Status mstatus;
|
||||||
int retval;
|
int retval;
|
||||||
MPI_Offset offset;
|
if((retval = MPI_File_read_at_all(file->fh, pos, magic,
|
||||||
offset = pos;
|
MAGIC_NUMBER_LEN, MPI_CHAR, &mstatus)) != MPI_SUCCESS)
|
||||||
if((retval = MPI_File_seek(file->fh, offset, MPI_SEEK_SET)) != MPI_SUCCESS)
|
|
||||||
{status = NC_EPARINIT; goto done;}
|
|
||||||
if((retval = MPI_File_read(file->fh, magic, MAGIC_NUMBER_LEN, MPI_CHAR,
|
|
||||||
&mstatus)) != MPI_SUCCESS)
|
|
||||||
{status = NC_EPARINIT; goto done;}
|
{status = NC_EPARINIT; goto done;}
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user