summaryrefslogtreecommitdiffstats
path: root/src/H5FDwindows.c
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2011-09-12 14:02:44 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2011-09-12 14:02:44 (GMT)
commit9115bab9e36d72bb395820e38b6bee4c99dcd78c (patch)
tree2fa4450bca7e33a1466fa2be8afb59a9370b8b64 /src/H5FDwindows.c
parentee039a03b9fca394251bd1b543df3aa819b13d51 (diff)
downloadhdf5-9115bab9e36d72bb395820e38b6bee4c99dcd78c.zip
hdf5-9115bab9e36d72bb395820e38b6bee4c99dcd78c.tar.gz
hdf5-9115bab9e36d72bb395820e38b6bee4c99dcd78c.tar.bz2
[svn-r21376] JIRA-HDFFV-2748: Relplace WIN32 macros in source. New H5_HAVE_WIN32_API and H5_HAVE_VISUAL_STUDIO defines only need to be set on windows. Autotools configure is not affected.
Trunk passed for a week and cmake branch has been in place > 3 weeks. Tested: local linux
Diffstat (limited to 'src/H5FDwindows.c')
-rw-r--r--src/H5FDwindows.c544
1 files changed, 272 insertions, 272 deletions
diff --git a/src/H5FDwindows.c b/src/H5FDwindows.c
index 47c7f2d..ba5bd9b 100644
--- a/src/H5FDwindows.c
+++ b/src/H5FDwindows.c
@@ -15,32 +15,32 @@
/*
* Programmer: Scott Wegner <swegner@hdfgroup.org>
- * Based on code by Robb Matzke
- * May 24, 2007
- *
- * Purpose: We would like to create a driver specifically for Windows
- * to utilize the Win32 API, and reduce the maintenence demands
- * for the other file drivers. Our other motivation is that
- * the Windows system calls of the existing sec2 driver differ
- * from those on other platforms, and are not 64-bit compatible.
- * From the start, this will have the structure very similar
- * to our sec2 driver, but make system calls more similar to
- * our stdio driver.
+ * Based on code by Robb Matzke
+ * May 24, 2007
+ *
+ * Purpose: We would like to create a driver specifically for Windows
+ * to utilize the Win32 API, and reduce the maintenence demands
+ * for the other file drivers. Our other motivation is that
+ * the Windows system calls of the existing sec2 driver differ
+ * from those on other platforms, and are not 64-bit compatible.
+ * From the start, this will have the structure very similar
+ * to our sec2 driver, but make system calls more similar to
+ * our stdio driver.
*/
/* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC H5FD_windows_init_interface
+#define H5_INTERFACE_INIT_FUNC H5FD_windows_init_interface
-#include "H5private.h" /* Generic Functions */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5Fprivate.h" /* File access */
-#include "H5FDprivate.h" /* File drivers */
-#include "H5FDwindows.h" /* Windows file driver */
-#include "H5FLprivate.h" /* Free Lists */
-#include "H5Iprivate.h" /* IDs */
-#include "H5MMprivate.h" /* Memory management */
-#include "H5Pprivate.h" /* Property lists */
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDwindows.h" /* Windows file driver */
+#include "H5FLprivate.h" /* Free Lists */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef H5_HAVE_WINDOWS
@@ -48,9 +48,9 @@
static hid_t H5FD_WINDOWS_g = 0;
/* File operations */
-#define OP_UNKNOWN 0
-#define OP_READ 1
-#define OP_WRITE 2
+#define OP_UNKNOWN 0
+#define OP_READ 1
+#define OP_WRITE 2
/*
* The description of a file belonging to this driver. The `eoa' and `eof'
@@ -65,23 +65,23 @@ static hid_t H5FD_WINDOWS_g = 0;
* occurs), and `op' will be set to H5F_OP_UNKNOWN.
*/
typedef struct H5FD_windows_t {
- H5FD_t pub; /*public stuff, must be first */
- /*
- * .NET doesn't support our 64-bit safe stdio functions,
- * so we will use io.h functions instead.
+ H5FD_t pub; /*public stuff, must be first */
+ /*
+ * .NET doesn't support our 64-bit safe stdio functions,
+ * so we will use io.h functions instead.
*/
#ifndef WINDOWS_USE_STDIO
- int fd; /*the file descriptor */
+ int fd; /*the file descriptor */
#else
- FILE *fp; /*the file handle */
+ FILE *fp; /*the file handle */
#endif /*MSC_VER */
- haddr_t eoa; /*end of allocated region */
- haddr_t eof; /*end of file; current file size*/
- haddr_t pos; /*current file I/O position */
- int op; /*last operation */
- unsigned write_access; /*flag to indicate the file was opened with write access */
+ haddr_t eoa; /*end of allocated region */
+ haddr_t eof; /*end of file; current file size*/
+ haddr_t pos; /*current file I/O position */
+ int op; /*last operation */
+ unsigned write_access; /*flag to indicate the file was opened with write access */
/*
- * On _WIN32 the low-order word of a unique identifier associated with the
+ * On H5_HAVE_WIN32_API the low-order word of a unique identifier associated with the
* file and the volume serial number uniquely identify a file. This number
* may change when the system is restarted or when the
* file is opened. After a process opens a file, the identifier is
@@ -100,83 +100,83 @@ typedef struct H5FD_windows_t {
/* These are used by the macros below */
-#define file_offset_t __int64
-#define fseek_offset_t __int64
+#define file_offset_t __int64
+#define fseek_offset_t __int64
/*
* These macros check for overflow of various quantities. These macros
* assume that fseek_offset_t is signed and haddr_t and size_t are unsigned.
*
- * ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
- * is too large to be represented by the second argument
- * of the file seek function.
+ * ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
+ * is too large to be represented by the second argument
+ * of the file seek function.
*
- * SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
- * large to be represented by the `size_t' type.
+ * SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
+ * large to be represented by the `size_t' type.
*
- * REGION_OVERFLOW: Checks whether an address and size pair describe data
- * which can be addressed entirely by the second
- * argument of the file seek function.
+ * REGION_OVERFLOW: Checks whether an address and size pair describe data
+ * which can be addressed entirely by the second
+ * argument of the file seek function.
*/
#define MAXADDR (((haddr_t)1<<(8*sizeof(file_offset_t)-1))-1)
-#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || \
- ((A) & ~(haddr_t)MAXADDR))
-#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
-#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
- HADDR_UNDEF==(A)+(Z) || \
- (fseek_offset_t)((A)+(Z))<(fseek_offset_t)(A))
+#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || \
+ ((A) & ~(haddr_t)MAXADDR))
+#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
+#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
+ HADDR_UNDEF==(A)+(Z) || \
+ (fseek_offset_t)((A)+(Z))<(fseek_offset_t)(A))
/* Prototypes */
static H5FD_t *H5FD_windows_open(const char *name, unsigned flags, hid_t fapl_id,
- haddr_t maxaddr);
+ haddr_t maxaddr);
static herr_t H5FD_windows_close(H5FD_t *_file);
static int H5FD_windows_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
static herr_t H5FD_windows_query(const H5FD_t *_f1, unsigned long *flags);
static haddr_t H5FD_windows_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id,
- hsize_t size);
+ hsize_t size);
static haddr_t H5FD_windows_get_eoa(const H5FD_t *_file, H5FD_mem_t type);
static herr_t H5FD_windows_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
static haddr_t H5FD_windows_get_eof(const H5FD_t *_file);
static herr_t H5FD_windows_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
static herr_t H5FD_windows_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
- size_t size, void *buf);
+ size_t size, void *buf);
static herr_t H5FD_windows_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
- size_t size, const void *buf);
+ size_t size, const void *buf);
static herr_t H5FD_windows_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing);
static herr_t H5FD_windows_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
static const H5FD_class_t H5FD_windows_g = {
- "windows", /*name */
- MAXADDR, /*maxaddr */
- H5F_CLOSE_WEAK, /* fc_degree */
- NULL, /*sb_size */
- NULL, /*sb_encode */
- NULL, /*sb_decode */
- 0, /*fapl_size */
- NULL, /*fapl_get */
- NULL, /*fapl_copy */
- NULL, /*fapl_free */
- 0, /*dxpl_size */
- NULL, /*dxpl_copy */
- NULL, /*dxpl_free */
- H5FD_windows_open, /*open */
- H5FD_windows_close, /*close */
- H5FD_windows_cmp, /*cmp */
- H5FD_windows_query, /*query */
- NULL, /*get_type_map */
- NULL, /*alloc */
- NULL, /*free */
- H5FD_windows_get_eoa, /*get_eoa */
- H5FD_windows_set_eoa, /*set_eoa */
- H5FD_windows_get_eof, /*get_eof */
- H5FD_windows_get_handle, /*get_handle */
- H5FD_windows_read, /*read */
- H5FD_windows_write, /*write */
- H5FD_windows_flush, /*flush */
- H5FD_windows_truncate, /*truncate */
- NULL, /*lock */
- NULL, /*unlock */
- H5FD_FLMAP_SINGLE /*fl_map */
+ "windows", /*name */
+ MAXADDR, /*maxaddr */
+ H5F_CLOSE_WEAK, /* fc_degree */
+ NULL, /*sb_size */
+ NULL, /*sb_encode */
+ NULL, /*sb_decode */
+ 0, /*fapl_size */
+ NULL, /*fapl_get */
+ NULL, /*fapl_copy */
+ NULL, /*fapl_free */
+ 0, /*dxpl_size */
+ NULL, /*dxpl_copy */
+ NULL, /*dxpl_free */
+ H5FD_windows_open, /*open */
+ H5FD_windows_close, /*close */
+ H5FD_windows_cmp, /*cmp */
+ H5FD_windows_query, /*query */
+ NULL, /*get_type_map */
+ NULL, /*alloc */
+ NULL, /*free */
+ H5FD_windows_get_eoa, /*get_eoa */
+ H5FD_windows_set_eoa, /*set_eoa */
+ H5FD_windows_get_eof, /*get_eof */
+ H5FD_windows_get_handle, /*get_handle */
+ H5FD_windows_read, /*read */
+ H5FD_windows_write, /*write */
+ H5FD_windows_flush, /*flush */
+ H5FD_windows_truncate, /*truncate */
+ NULL, /*lock */
+ NULL, /*unlock */
+ H5FD_FLMAP_SINGLE /*fl_map */
};
/* Declare a free list to manage the H5FD_windows_t struct */
@@ -204,16 +204,16 @@ H5FD_windows_init_interface(void)
} /* H5FD_windows_init_interface() */
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_init
+ * Function: H5FD_windows_init
*
- * Purpose: Initialize this driver by registering the driver with the
- * library.
+ * Purpose: Initialize this driver by registering the driver with the
+ * library.
*
- * Return: Success: The driver ID for the windows driver.
- * Failure: Negative.
+ * Return: Success: The driver ID for the windows driver.
+ * Failure: Negative.
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24, 2007
*
*-------------------------------------------------------------------------
@@ -236,14 +236,14 @@ done:
} /* end H5FD_windows_init() */
/*---------------------------------------------------------------------------
- * Function: H5FD_windows_term
+ * Function: H5FD_windows_term
*
- * Purpose: Shut down the VFD
+ * Purpose: Shut down the VFD
*
- * Return: <none>
+ * Return: <none>
*
* Programmer: Scott Wegner
- * Based on code by Quincey Koziol
+ * Based on code by Quincey Koziol
* Thursday, May 24 2007
*
* Modification:
@@ -262,17 +262,17 @@ H5FD_windows_term(void)
} /* end H5FD_windows_term() */
/*-------------------------------------------------------------------------
- * Function: H5Pset_fapl_windows
+ * Function: H5Pset_fapl_windows
*
- * Purpose: Modify the file access property list to use the H5FD_WINDOWS
- * driver defined in this source file. There are no driver
- * specific properties.
+ * Purpose: Modify the file access property list to use the H5FD_WINDOWS
+ * driver defined in this source file. There are no driver
+ * specific properties.
*
- * Return: Non-negative on success/Negative on failure
+ * Return: Non-negative on success/Negative on failure
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
- * Thursday, May 24 2007
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
+ * Thursday, May 24 2007
*
* Modifications:
*
@@ -297,18 +297,18 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_open
+ * Function: H5FD_windows_open
*
- * Purpose: Create and/or opens a Windows file as an HDF5 file.
+ * Purpose: Create and/or opens a Windows file as an HDF5 file.
*
- * Return: Success: A pointer to a new file data structure. The
- * public fields will be initialized by the
- * caller, which is always H5FD_open().
+ * Return: Success: A pointer to a new file data structure. The
+ * public fields will be initialized by the
+ * caller, which is always H5FD_open().
*
- * Failure: NULL
+ * Failure: NULL
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -318,19 +318,19 @@ done:
/* ARGSUSED */
static H5FD_t *
H5FD_windows_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
- haddr_t maxaddr)
+ haddr_t maxaddr)
{
int fd = -1;
- FILE *f = NULL;
- H5FD_windows_t *file = NULL;
- HANDLE filehandle;
+ FILE *f = NULL;
+ H5FD_windows_t *file = NULL;
+ HANDLE filehandle;
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
- H5FD_t *ret_value;
+ H5FD_t *ret_value;
struct _stati64 sb;
#ifndef WINDOWS_USE_STDIO
int o_flags;
#else
- unsigned write_access = 0;
+ unsigned write_access = 0;
#endif /* WINDOWS_USE_STDIO */
FUNC_ENTER_NOAPI(H5FD_windows_open, NULL)
@@ -352,8 +352,8 @@ H5FD_windows_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
if (H5F_ACC_TRUNC & flags) o_flags |= O_TRUNC;
if (H5F_ACC_CREAT & flags) o_flags |= O_CREAT;
if (H5F_ACC_EXCL & flags) o_flags |= O_EXCL;
- /* Windows needs O_BINARY to correctly handle eol characters */
- o_flags |= O_BINARY;
+ /* Windows needs O_BINARY to correctly handle eol characters */
+ o_flags |= O_BINARY;
/* Open the file */
if ((fd=_open(name, o_flags, 0666))<0)
@@ -362,33 +362,33 @@ H5FD_windows_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
#else /* WINDOWS_USE_STDIO */
- /* Translate our flags into a mode, and open the file */
+ /* Translate our flags into a mode, and open the file */
if (_access_s(name, F_OK)) {
if ((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_RDWR)) {
f = fopen(name, "wb+");
write_access=1; /* Note the write access */
}
else
- HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "file doesn't exist and CREAT wasn't specified")
+ HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "file doesn't exist and CREAT wasn't specified")
} else if ((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_EXCL)) {
- HSYS_GOTO_ERROR(H5E_FILE, H5E_FILEEXISTS, NULL, "file exists but CREAT and EXCL were specified")
+ HSYS_GOTO_ERROR(H5E_FILE, H5E_FILEEXISTS, NULL, "file exists but CREAT and EXCL were specified")
} else if (flags & H5F_ACC_RDWR) {
- if (flags & H5F_ACC_TRUNC)
+ if (flags & H5F_ACC_TRUNC)
f = fopen(name, "wb+");
- else
+ else
f = fopen(name, "rb+");
write_access=1; /* Note the write access */
} else
f = fopen(name, "rb");
if (!f)
- HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "fsopen failed")
+ HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "fsopen failed")
if (_stati64(name, &sb) == -1)
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to stat file")
#endif /* WINDOWS_USE_STDIO */
- /* Create the new file struct */
+ /* Create the new file struct */
if (NULL==(file=H5FL_CALLOC(H5FD_windows_t)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
@@ -400,8 +400,8 @@ H5FD_windows_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
file->fd = fd;
#else
file->fp = f;
- if((fd = _fileno(f)) == -1)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get file descriptor for file")
+ if((fd = _fileno(f)) == -1)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get file descriptor for file")
file->write_access=write_access; /* Note the write_access for later */
#endif /* WINDOWS_USE_STDIO */
@@ -441,7 +441,7 @@ done:
_close(fd);
#else
if(f)
- fclose(file->fp);
+ fclose(file->fp);
#endif /* WINDOWS_USE_STDIO */
} /* end if */
@@ -449,16 +449,16 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_close
+ * Function: H5FD_windows_close
*
- * Purpose: Closes a Windows file.
+ * Purpose: Closes a Windows file.
*
- * Return: Success: 0
+ * Return: Success: 0
*
- * Failure: -1, file not closed.
+ * Failure: -1, file not closed.
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -468,8 +468,8 @@ done:
static herr_t
H5FD_windows_close(H5FD_t *_file)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
- herr_t ret_value=SUCCEED; /* Return value */
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_close, FAIL)
@@ -487,18 +487,18 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_cmp
+ * Function: H5FD_windows_cmp
*
- * Purpose: Compares two files belonging to this driver using an
- * arbitrary (but consistent) ordering.
+ * Purpose: Compares two files belonging to this driver using an
+ * arbitrary (but consistent) ordering.
*
- * Return: Success: A value like strcmp()
+ * Return: Success: A value like strcmp()
*
- * Failure: never fails (arguments were checked by the
- * caller).
+ * Failure: never fails (arguments were checked by the
+ * caller).
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -508,14 +508,14 @@ done:
static int
H5FD_windows_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
{
- const H5FD_windows_t *f1 = (const H5FD_windows_t*)_f1;
- const H5FD_windows_t *f2 = (const H5FD_windows_t*)_f2;
+ const H5FD_windows_t *f1 = (const H5FD_windows_t*)_f1;
+ const H5FD_windows_t *f2 = (const H5FD_windows_t*)_f2;
int ret_value=0;
FUNC_ENTER_NOAPI(H5FD_windows_cmp, H5FD_VFD_DEFAULT)
- if (f1->volumeserialnumber < f2->volumeserialnumber) HGOTO_DONE(-1)
- if (f1->volumeserialnumber > f2->volumeserialnumber) HGOTO_DONE(1)
+ if (f1->volumeserialnumber < f2->volumeserialnumber) HGOTO_DONE(-1)
+ if (f1->volumeserialnumber > f2->volumeserialnumber) HGOTO_DONE(1)
if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)
@@ -529,17 +529,17 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_query
+ * Function: H5FD_windows_query
*
- * Purpose: Set the flags that this VFL driver is capable of supporting.
+ * Purpose: Set the flags that this VFL driver is capable of supporting.
* (listed in H5FDpublic.h)
*
- * Return: Success: non-negative
+ * Return: Success: non-negative
*
- * Failure: negative
+ * Failure: negative
*
- * Programmer: Scott Wegner
- Based on code by Quincey Koziol
+ * Programmer: Scott Wegner
+ Based on code by Quincey Koziol
* Thursday, May 24 2007
*
*-------------------------------------------------------------------------
@@ -554,10 +554,10 @@ H5FD_windows_query(const H5FD_t *_file, unsigned long *flags /* out */)
/* Set the VFL feature flags that this driver supports */
if(flags) {
*flags = 0;
- *flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
- *flags|=H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
- *flags|=H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
- *flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
+ *flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
+ *flags|=H5FD_FEAT_ACCUMULATE_METADATA; /* OK to accumulate metadata for faster writes */
+ *flags|=H5FD_FEAT_DATA_SIEVE; /* OK to perform data sieving for faster raw data reads & writes */
+ *flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
/* Check for flags that are set by h5repart */
if(file->fam_to_sec2)
@@ -569,18 +569,18 @@ done:
} /* end H5FD_windows_query() */
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_get_eoa
+ * Function: H5FD_windows_get_eoa
*
- * Purpose: Gets the end-of-address marker for the file. The EOA marker
- * is the first address past the last byte allocated in the
- * format address space.
+ * Purpose: Gets the end-of-address marker for the file. The EOA marker
+ * is the first address past the last byte allocated in the
+ * format address space.
*
- * Return: Success: The end-of-address marker.
+ * Return: Success: The end-of-address marker.
*
- * Failure: HADDR_UNDEF
+ * Failure: HADDR_UNDEF
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -590,7 +590,7 @@ done:
static haddr_t
H5FD_windows_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
{
- const H5FD_windows_t *file = (const H5FD_windows_t*)_file;
+ const H5FD_windows_t *file = (const H5FD_windows_t*)_file;
haddr_t ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_get_eoa, HADDR_UNDEF)
@@ -604,18 +604,18 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_set_eoa
+ * Function: H5FD_windows_set_eoa
*
- * Purpose: Set the end-of-address marker for the file. This function is
- * called shortly after an existing HDF5 file is opened in order
- * to tell the driver where the end of the HDF5 data is located.
+ * Purpose: Set the end-of-address marker for the file. This function is
+ * called shortly after an existing HDF5 file is opened in order
+ * to tell the driver where the end of the HDF5 data is located.
*
- * Return: Success: 0
+ * Return: Success: 0
*
- * Failure: -1
+ * Failure: -1
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, July 29, 1999
*
* Modifications:
@@ -625,7 +625,7 @@ done:
static herr_t
H5FD_windows_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_set_eoa, FAIL)
@@ -637,20 +637,20 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_get_eof
+ * Function: H5FD_windows_get_eof
*
- * Purpose: Returns the end-of-file marker, which is the greater of
- * either the Windows end-of-file or the HDF5 end-of-address
- * markers.
+ * Purpose: Returns the end-of-file marker, which is the greater of
+ * either the Windows end-of-file or the HDF5 end-of-address
+ * markers.
*
- * Return: Success: End of file address, the first address past
- * the end of the "file", either the Unix file
- * or the HDF5 file.
+ * Return: Success: End of file address, the first address past
+ * the end of the "file", either the Unix file
+ * or the HDF5 file.
*
- * Failure: HADDR_UNDEF
+ * Failure: HADDR_UNDEF
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -660,7 +660,7 @@ done:
static haddr_t
H5FD_windows_get_eof(const H5FD_t *_file)
{
- const H5FD_windows_t *file = (const H5FD_windows_t*)_file;
+ const H5FD_windows_t *file = (const H5FD_windows_t*)_file;
haddr_t ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_get_eof, HADDR_UNDEF)
@@ -674,15 +674,15 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_get_handle
+ * Function: H5FD_windows_get_handle
*
- * Purpose: Returns the file handle of windows file driver.
+ * Purpose: Returns the file handle of windows file driver.
*
- * Returns: Non-negative if succeed or negative if fails.
+ * Returns: Non-negative if succeed or negative if fails.
*
- * Programmer: Scott Wegner
- Based on code by Raymond Lu
- * Thursday, May 24 2007
+ * Programmer: Scott Wegner
+ Based on code by Raymond Lu
+ * Thursday, May 24 2007
*
* Modifications:
*
@@ -704,7 +704,7 @@ H5FD_windows_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
#else
*file_handle = &(file->fp);
#endif /* WINDOWS_USE_STDIO */
- if(*file_handle==NULL)
+ if(*file_handle==NULL)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "get handle failed")
@@ -713,16 +713,16 @@ done:
}
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_alloc
+ * Function: H5FD_windows_alloc
*
- * Purpose: Allocates file memory.
+ * Purpose: Allocates file memory.
*
- * Return: Success: Address of new memory
+ * Return: Success: Address of new memory
*
- * Failure: HADDR_UNDEF
+ * Failure: HADDR_UNDEF
*
- * Programmer: Scott Wegner
- Based on code by Raymond Lu
+ * Programmer: Scott Wegner
+ Based on code by Raymond Lu
* Thursday, May 24 2007
*
* Modifications:
@@ -732,8 +732,8 @@ done:
static haddr_t
H5FD_windows_alloc(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hsize_t size)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
- haddr_t addr;
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ haddr_t addr;
haddr_t ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_alloc, HADDR_UNDEF)
@@ -761,19 +761,19 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_read
+ * Function: H5FD_windows_read
*
- * Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
- * into buffer BUF according to data transfer properties in
- * DXPL_ID.
+ * Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
+ * into buffer BUF according to data transfer properties in
+ * DXPL_ID.
*
- * Return: Success: Zero. Result is stored in caller-supplied
- * buffer BUF.
+ * Return: Success: Zero. Result is stored in caller-supplied
+ * buffer BUF.
*
- * Failure: -1, Contents of buffer BUF are undefined.
+ * Failure: -1, Contents of buffer BUF are undefined.
*
- * Programmer: Scott Wegner
- Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -783,11 +783,11 @@ done:
/* ARGSUSED */
static herr_t
H5FD_windows_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
- size_t size, void *buf/*out*/)
+ size_t size, void *buf/*out*/)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
- int nbytes;
- herr_t ret_value=SUCCEED; /* Return value */
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ int nbytes;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_read, FAIL)
@@ -805,14 +805,14 @@ H5FD_windows_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, h
/* Seek to the correct location */
if ((addr!=file->pos || OP_READ!=file->op))
#ifndef WINDOWS_USE_STDIO
- if (_lseeki64(file->fd, addr, SEEK_SET) == -1) {
+ if (_lseeki64(file->fd, addr, SEEK_SET) == -1) {
#else
if (_fseeki64(file->fp, addr, SEEK_SET) == -1) {
#endif /* WINDOWS_USE_STDIO */
file->op = OP_UNKNOWN;
file->pos = HADDR_UNDEF;
- HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
- }
+ HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+ }
/*
* Read data, being careful of interrupted system calls, partial results,
@@ -821,7 +821,7 @@ H5FD_windows_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, h
while (size>0) {
#ifndef WINDOWS_USE_STDIO
do {
- nbytes = _read(file->fd, buf, (unsigned)(size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF));
+ nbytes = _read(file->fd, buf, (unsigned)(size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF));
} while (-1==nbytes && EINTR==errno);
if (-1==nbytes) /* error */
HSYS_GOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
@@ -834,15 +834,15 @@ H5FD_windows_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, h
do {
nbytes = fread(buf,(size_t)1,(size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF),file->fp);
} while (!nbytes && EINTR==errno);
- if(!nbytes) {
+ if(!nbytes) {
if (ferror(file->fp)) /* error */
HSYS_GOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
- if (feof(file->fp)) {
- /* end of file but not end of format address space */
- HDmemset(buf, 0, size);
- break;
- }
- }
+ if (feof(file->fp)) {
+ /* end of file but not end of format address space */
+ HDmemset(buf, 0, size);
+ break;
+ }
+ }
#endif /* WINDOWS_USE_STDIO */
assert(nbytes>=0);
assert((size_t)nbytes<=size);
@@ -869,18 +869,18 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_write
+ * Function: H5FD_windows_write
*
- * Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
- * from buffer BUF according to data transfer properties in
- * DXPL_ID.
+ * Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
+ * from buffer BUF according to data transfer properties in
+ * DXPL_ID.
*
- * Return: Success: Zero
+ * Return: Success: Zero
*
- * Failure: -1
+ * Failure: -1
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
* Modifications:
@@ -890,10 +890,10 @@ done:
/* ARGSUSED */
static herr_t
H5FD_windows_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
- size_t size, const void *buf)
+ size_t size, const void *buf)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
- ssize_t nbytes;
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_write, FAIL)
@@ -911,23 +911,23 @@ H5FD_windows_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
/* Seek to the correct location */
if ((addr!=file->pos || OP_WRITE!=file->op))
- {
+ {
#ifndef WINDOWS_USE_STDIO
- if (_lseeki64(file->fd, addr, SEEK_SET) == -1) {
+ if (_lseeki64(file->fd, addr, SEEK_SET) == -1) {
#else
if (_fseeki64(file->fp, addr, SEEK_SET) == -1) {
#endif /* WINDOWS_USE_STDIO */
file->op = OP_UNKNOWN;
file->pos = HADDR_UNDEF;
- HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
- }
- }
+ HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
+ }
+ }
/*
* Write the data, being careful of interrupted system calls and partial
* results
*/
- while (size>0) {
+ while (size>0) {
do {
#ifndef WINDOWS_USE_STDIO
nbytes = _write(file->fd, buf, (unsigned)(size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF));
@@ -936,9 +936,9 @@ H5FD_windows_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
#else
- /* Write 1GB or less at a time */
- nbytes = fwrite(buf, 1, (size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF),file->fp);
- } while (!nbytes && EINTR==errno);
+ /* Write 1GB or less at a time */
+ nbytes = fwrite(buf, 1, (size <= WINDOWS_MAX_BUF ? size: WINDOWS_MAX_BUF),file->fp);
+ } while (!nbytes && EINTR==errno);
if (!nbytes) /* error */
#endif /* WINDOWS_USE_STDIO */
HSYS_GOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
@@ -949,7 +949,7 @@ H5FD_windows_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
H5_CHECK_OVERFLOW(nbytes,ssize_t,haddr_t);
addr += (haddr_t)nbytes;
buf = (const char*)buf + nbytes;
- }
+ }
/* Update current position and eof */
file->pos = addr;
@@ -969,16 +969,16 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_flush
+ * Function: H5FD_windows_flush
*
- * Purpose: Makes sure that the true file size is the same (or larger)
- * than the end-of-address.
+ * Purpose: Makes sure that the true file size is the same (or larger)
+ * than the end-of-address.
*
- * Return: Success: Non-negative
- * Failure: Negative
+ * Return: Success: Non-negative
+ * Failure: Negative
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
*-------------------------------------------------------------------------
@@ -987,8 +987,8 @@ done:
static herr_t
H5FD_windows_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_flush, FAIL)
@@ -1015,16 +1015,16 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5FD_windows_truncate
+ * Function: H5FD_windows_truncate
*
- * Purpose: Makes sure that the true file size is the same (or larger)
- * than the end-of-address.
+ * Purpose: Makes sure that the true file size is the same (or larger)
+ * than the end-of-address.
*
- * Return: Success: Non-negative
- * Failure: Negative
+ * Return: Success: Non-negative
+ * Failure: Negative
*
- * Programmer: Scott Wegner
- * Based on code by Robb Matzke
+ * Programmer: Scott Wegner
+ * Based on code by Robb Matzke
* Thursday, May 24 2007
*
*-------------------------------------------------------------------------
@@ -1033,14 +1033,14 @@ done:
static herr_t
H5FD_windows_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
{
- H5FD_windows_t *file = (H5FD_windows_t*)_file;
+ H5FD_windows_t *file = (H5FD_windows_t*)_file;
#ifndef WINDOWS_USE_STDIO
- LARGE_INTEGER li;
- HANDLE filehandle;
+ LARGE_INTEGER li;
+ HANDLE filehandle;
#else
- int fd;
+ int fd;
#endif /* WINDOWS_USE_STDIO */
- herr_t ret_value = SUCCEED; /* Return value */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5FD_windows_truncate, FAIL)