diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2001-06-28 21:23:13 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2001-06-28 21:23:13 (GMT) |
commit | bcb587dcc2305763546acd8e3303240530cd20cf (patch) | |
tree | 5a9e89047989e529f38005725b671bd62fa1e9d7 /src | |
parent | 3a925f72d08e3e61602c9e3344c1f67b340057fb (diff) | |
download | hdf5-bcb587dcc2305763546acd8e3303240530cd20cf.zip hdf5-bcb587dcc2305763546acd8e3303240530cd20cf.tar.gz hdf5-bcb587dcc2305763546acd8e3303240530cd20cf.tar.bz2 |
[svn-r4081]
Purpose:
[is this a bug fix? feature? ...]
Description:
[describe the bug, or describe the new feature, etc]
Solution:
[details about the changes, algorithm, etc...]
[Please as detail as you can since your own explanation is
better than others guessing it from the code.]
Platforms tested:
[machines you have tested the changed version. This is absolute
important. Test it out on at least two or three different platforms
such as Big-endian-32bit (SUN/IRIX), little-endian-32(LINUX) and
64-bit (IRIX64/UNICOS/DEC-ALPHA) would be good.]
Diffstat (limited to 'src')
-rw-r--r-- | src/H5.c | 2 | ||||
-rw-r--r-- | src/H5FDdpss.c | 21 | ||||
-rw-r--r-- | src/H5FDgass.c | 19 | ||||
-rw-r--r-- | src/H5FDlog.c | 23 | ||||
-rw-r--r-- | src/H5FDsec2.c | 26 | ||||
-rw-r--r-- | src/H5FDsrb.c | 8 | ||||
-rw-r--r-- | src/H5FDstdio.c | 5 | ||||
-rw-r--r-- | src/H5Oefl.c | 2 | ||||
-rw-r--r-- | src/H5Omtime.c | 4 | ||||
-rw-r--r-- | src/H5Ppublic.h | 3 | ||||
-rw-r--r-- | src/H5private.h | 93 |
11 files changed, 98 insertions, 108 deletions
@@ -36,7 +36,9 @@ #endif /* We need this on Irix64 even though we've included stdio.h as documented */ +#if !defined __MWERKS__ FILE *fdopen(int fd, const char *mode); +#endif #define PABLO_MASK H5_mask diff --git a/src/H5FDdpss.c b/src/H5FDdpss.c index 6edc6c4..31e576e 100644 --- a/src/H5FDdpss.c +++ b/src/H5FDdpss.c @@ -51,26 +51,7 @@ typedef struct H5FD_dpss_t { haddr_t eof; /* end of file; current file size */ } H5FD_dpss_t; - -/*** FIXME: is this really needed here ? ***/ -/* - * This driver supports systems that have the lseek64() function by defining - * some macros here so we don't have to have conditional compilations later - * throughout the code. - * - * file_offset_t: The datatype for file offsets, the second argument of - * the lseek() or lseek64() call. - * - * file_seek: The function which adjusts the current file position, - * either lseek() or lseek64(). - */ -#ifdef H5_HAVE_LSEEK64 -# define file_offset_t off64_t -# define file_seek lseek64 -#else -# define file_offset_t off_t -# define file_seek lseek -#endif + /* * These macros check for overflow of various quantities. These macros diff --git a/src/H5FDgass.c b/src/H5FDgass.c index b72e263..9a31822 100644 --- a/src/H5FDgass.c +++ b/src/H5FDgass.c @@ -53,24 +53,7 @@ typedef struct H5FD_gass_t { } H5FD_gass_t; -/* - * This driver supports systems that have the lseek64() function by defining - * some macros here so we don't have to have conditional compilations later - * throughout the code. - * - * file_offset_t: The datatype for file offsets, the second argument of - * the lseek() or lseek64() call. - * - * file_seek: The function which adjusts the current file position, - * either lseek() or lseek64(). - */ -#ifdef H5_HAVE_LSEEK64 -# define file_offset_t off64_t -# define file_seek lseek64 -#else -# define file_offset_t off_t -# define file_seek lseek -#endif + /* * These macros check for overflow of various quantities. These macros diff --git a/src/H5FDlog.c b/src/H5FDlog.c index 22060e8..6454e24 100644 --- a/src/H5FDlog.c +++ b/src/H5FDlog.c @@ -103,24 +103,7 @@ typedef struct H5FD_log_t { #endif } H5FD_log_t; -/* - * This driver supports systems that have the lseek64() function by defining - * some macros here so we don't have to have conditional compilations later - * throughout the code. - * - * file_offset_t: The datatype for file offsets, the second argument of - * the lseek() or lseek64() call. - * - * file_seek: The function which adjusts the current file position, - * either lseek() or lseek64(). - */ -#ifdef H5_HAVE_LSEEK64 -# define file_offset_t off64_t -# define file_seek lseek64 -#else -# define file_offset_t off_t -# define file_seek lseek -#endif + /* * These macros check for overflow of various quantities. These macros @@ -449,7 +432,7 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, file->op = OP_UNKNOWN; #ifdef WIN32 filehandle = _get_osfhandle(fd); - results = GetFileInformationByHandle(filehandle, &fileinfo); + results = GetFileInformationByHandle((HANDLE)filehandle, &fileinfo); file->fileindexhi = fileinfo.nFileIndexHigh; file->fileindexlo = fileinfo.nFileIndexLow; #else @@ -958,7 +941,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd while (size>0) { do { assert(size==(hsize_t)((size_t)size)); /*check for overflow*/ - nbytes = HDwrite(file->fd, buf, (size_t)size); + nbytes = HDwrite(file->fd, (void*)buf, (size_t)size); } while (-1==nbytes && EINTR==errno); if (-1==nbytes) { /* error */ diff --git a/src/H5FDsec2.c b/src/H5FDsec2.c index 4c9f967..847b8fd 100644 --- a/src/H5FDsec2.c +++ b/src/H5FDsec2.c @@ -75,30 +75,6 @@ typedef struct H5FD_sec2_t { #endif } H5FD_sec2_t; -/* - * This driver supports systems that have the lseek64() function by defining - * some macros here so we don't have to have conditional compilations later - * throughout the code. - * - * file_offset_t: The datatype for file offsets, the second argument of - * the lseek() or lseek64() call. - * - * file_seek: The function which adjusts the current file position, - * either lseek() or lseek64(). - */ -/* adding for windows NT file system support. */ - -#ifdef H5_HAVE_LSEEK64 -# define file_offset_t off64_t -# define file_seek lseek64 -#elif defined WIN32 -# define file_offset_t __int64 -# define file_seek _lseeki64 -#else -# define file_offset_t off_t -# define file_seek lseek -#endif - /* * These macros check for overflow of various quantities. These macros @@ -659,7 +635,7 @@ H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had while (size>0) { do { assert(size==(hsize_t)((size_t)size)); /*check for overflow*/ - nbytes = HDwrite(file->fd, buf, (size_t)size); + nbytes = HDwrite(file->fd, (void*) buf, (size_t)size); } while (-1==nbytes && EINTR==errno); if (-1==nbytes) { /* error */ diff --git a/src/H5FDsrb.c b/src/H5FDsrb.c index ac38b65..a345b39 100644 --- a/src/H5FDsrb.c +++ b/src/H5FDsrb.c @@ -20,13 +20,7 @@ static hid_t H5FD_SRB_g = 0; #ifdef H5_HAVE_SRB -#ifdef H5_HAVE_LSEEK64 -# define file_offset_t off64_t -# define file_seek lseek64 -#else -# define file_offset_t off_t -# define file_seek lseek -#endif + /* * These macros check for overflow of various quantities. These macros diff --git a/src/H5FDstdio.c b/src/H5FDstdio.c index 48784fd..3ed0181 100644 --- a/src/H5FDstdio.c +++ b/src/H5FDstdio.c @@ -17,10 +17,7 @@ #ifdef H5_HAVE_UNISTD_H #include <unistd.h> #endif -#ifdef WIN32 -#include <windows.h> -#include <io.h> -#endif + #include "hdf5.h" diff --git a/src/H5Oefl.c b/src/H5Oefl.c index b16a267..7288ec6 100644 --- a/src/H5Oefl.c +++ b/src/H5Oefl.c @@ -537,7 +537,7 @@ H5O_efl_write (H5F_t UNUSED *f, const H5O_efl_t *efl, haddr_t addr, "unable to seek in external raw data file"); } to_write = MIN(efl->slot[i].size-skip, size); - if ((size_t)HDwrite (fd, buf, to_write)!=to_write) { + if ((size_t)HDwrite (fd, (void*)buf, to_write)!=to_write) { HGOTO_ERROR (H5E_EFL, H5E_READERROR, FAIL, "write error in external raw data file"); } diff --git a/src/H5Omtime.c b/src/H5Omtime.c index 12b5049..632d85b 100644 --- a/src/H5Omtime.c +++ b/src/H5Omtime.c @@ -13,7 +13,7 @@ #include "H5MMprivate.h" #include "H5Oprivate.h" -#if defined WIN32 +#if defined (WIN32) && !defined (__MWERKS__) #include <sys/types.h> #include <sys/timeb.h> #endif @@ -145,7 +145,7 @@ H5O_mtime_decode(H5F_t UNUSED *f, const uint8_t *p, } the_time -= tz.tz_minuteswest*60 - (tm.tm_isdst?3600:0); } -#elif defined WIN32 +#elif defined WIN32 && !defined __MWERKS__ { struct timeb timebuffer; diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index 2ec2ef4..8d5d8da 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -20,6 +20,7 @@ /* Default Template for creation, access, etc. templates */ #define H5P_DEFAULT 0 +#include <H5private.h> /* Public headers needed by this file */ #include "H5public.h" #include "H5Ipublic.h" @@ -226,3 +227,5 @@ __DLL__ herr_t H5Pget_sieve_buf_size(hid_t fapl_id, hsize_t *size/*out*/); } #endif #endif + + diff --git a/src/H5private.h b/src/H5private.h index 7fc963e..256a22c 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -9,6 +9,10 @@ * define common things which are not defined in the HDF5 API. * The configuration constants like H5_HAVE_UNISTD_H etc. are * defined in H5config.h which is included by H5public.h. + * + * Modifications: Pedro Vicente <pvn@ncsa.uiuc.edu>, June 2001 + * WIN32 modifications + * */ #ifndef _H5private_H #define _H5private_H @@ -130,27 +134,93 @@ # include <sys/proc.h> #endif + +#ifdef WIN32 + /* - * Win32 is severely broken when it comes to ANSI-C and Posix.1 compliance. + * we need this from <windows.h> + * HDF5 is currently supported on _X86_ + * including <windows.h> has the side effect of introducing thousands of Windows GUI + * macros and type declarations to the compilation environment, so we don't include it */ -#ifdef H5_HAVE_IO_H -# include <io.h> + +#if !defined(_68K_) && !defined(_MPPC_) && !defined(_PPC_) && !defined(_ALPHA_) && !defined(_MIPS_) && !defined(_X86_) && defined(_M_IX86) +#define _X86_ #endif -#ifdef H5_HAVE_WINDOWS_H -# include <windows.h> + +#include <windef.h> +#include <winbase.h> +#include <io.h> + +/* H5_inline */ + +/* remove any previous defs made by configure in unix */ +#ifdef H5_inline +# undef H5_inline #endif -#ifdef WIN32 -# include <io.h> -# include <process.h> -# include <windows.h> +/* +The inline keywords allows the compiler to insert a copy of +the function body into each place the function is called +inline is now in C but in the C99 standard and not the old C89 version so +MS doesn't recognize it yet (as of April 2001) +*/ +#if defined(__MWERKS__) || defined(__cplusplus) +# define H5_inline inline +# else +# define H5_inline +#endif + +/* Metroworks <sys/types.h> doesn't define off_t. */ +#ifdef __MWERKS__ +typedef long off_t; +/* Metroworks does not define EINTR in <errno.h> */ +# define EINTR 4 #endif +/*__MWERKS__*/ + +#endif +/*WIN32*/ + +/* + * This driver supports systems that have the lseek64() function by defining + * some macros here so we don't have to have conditional compilations later + * throughout the code. + * + * file_offset_t: The datatype for file offsets, the second argument of + * the lseek() or lseek64() call. + * + * file_seek: The function which adjusts the current file position, + * either lseek() or lseek64(). + */ +/* adding for windows NT file system support. */ +/* pvn: added __MWERKS__ support. */ + +#ifdef H5_HAVE_LSEEK64 +# define file_offset_t off64_t +# define file_seek lseek64 +#elif defined (WIN32) +# ifdef __MWERKS__ +# define file_offset_t off_t +# define file_seek lseek +# else /*MSVC*/ +# define file_offset_t __int64 +# define file_seek _lseeki64 +# endif +#else +# define file_offset_t off_t +# define file_seek lseek +#endif + #ifndef F_OK # define F_OK 00 # define W_OK 02 # define R_OK 04 #endif + + + /* * Pablo support files. */ @@ -719,7 +789,7 @@ __DLL__ int64_t HDstrtoll (const char *s, const char **rest, int base); * And now for a couple non-Posix functions... Watch out for systems that * define these in terms of macros. */ -#ifdef WIN32 +#if defined (__MWERKS__) #define HDstrdup(S) _strdup(S) #else @@ -1059,5 +1129,6 @@ __DLL__ intn H5TN_term_interface(void); __DLL__ intn H5T_term_interface(void); __DLL__ intn H5Z_term_interface(void); - #endif + + |