summaryrefslogtreecommitdiffstats
path: root/src/H5Flow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Flow.c')
-rw-r--r--src/H5Flow.c643
1 files changed, 323 insertions, 320 deletions
diff --git a/src/H5Flow.c b/src/H5Flow.c
index f29b7d3..5074815 100644
--- a/src/H5Flow.c
+++ b/src/H5Flow.c
@@ -1,14 +1,14 @@
/*
* Copyright (C) 1997 NCSA
- * All rights reserved.
+ * All rights reserved.
*
* Programmer: Robb Matzke <matzke@viper.llnl.gov>
- * Wednesday, October 22, 1997
+ * Wednesday, October 22, 1997
*
- * Purpose: This file contains virtual functions for the H5F_low
- * class. These are functions that operate on various kinds
- * of files at a level where the file is just a one-dimensional
- * array of bytes.
+ * Purpose: This file contains virtual functions for the H5F_low
+ * class. These are functions that operate on various kinds
+ * of files at a level where the file is just a one-dimensional
+ * array of bytes.
*/
#include <H5private.h>
#include <H5Eprivate.h>
@@ -20,8 +20,8 @@
#define addr_defined(X) (((uint64)(-1)!=(X)->offset) ? TRUE : FALSE)
-#define PABLO_MASK H5F_low
-static hbool_t interface_initialize_g = FALSE;
+#define PABLO_MASK H5F_low
+static hbool_t interface_initialize_g = FALSE;
#define INTERFACE_INIT NULL
@@ -36,7 +36,7 @@ static hbool_t interface_initialize_g = FALSE;
* Failure: NULL
*
* Programmer: Robb Matzke
- * Wednesday, February 18, 1998
+ * Wednesday, February 18, 1998
*
* Modifications:
*
@@ -86,43 +86,43 @@ H5F_low_class (H5F_driver_t driver)
/*-------------------------------------------------------------------------
- * Function: H5F_low_open
+ * Function: H5F_low_open
*
- * Purpose: Opens a file of type TYPE with name NAME according to the
- * field of bit flags FLAGS which are:
- *
- * H5F_ACC_WRITE: The file is open for read/write access.
- * Without this bit set, the file would be open
- * for read-only access.
+ * Purpose: Opens a file of type TYPE with name NAME according to the
+ * field of bit flags FLAGS which are:
+ *
+ * H5F_ACC_WRITE: The file is open for read/write access.
+ * Without this bit set, the file would be open
+ * for read-only access.
*
- * H5F_ACC_CREAT: The file is created if it doesn't already
- * exist. On unix, the file permissions are set
- * to 0666 modified by the umask.
+ * H5F_ACC_CREAT: The file is created if it doesn't already
+ * exist. On unix, the file permissions are set
+ * to 0666 modified by the umask.
*
- * H5F_ACC_EXCL: This function will fail if the file already
- * exists.
+ * H5F_ACC_EXCL: This function will fail if the file already
+ * exists.
*
- * H5F_ACC_TRUNC: Truncate the file to a zero-length file as it
- * is opened. This allows existing files to be
- * overwritten.
+ * H5F_ACC_TRUNC: Truncate the file to a zero-length file as it
+ * is opened. This allows existing files to be
+ * overwritten.
*
- * The KEY argument is initialized with data which is unique to
- * this file. Opening the same file (even by a different name)
- * should return the same key.
+ * The KEY argument is initialized with data which is unique to
+ * this file. Opening the same file (even by a different name)
+ * should return the same key.
*
- * This is a virtual function only; the actual open operation is
- * performed by the subclass. This function will fail if the
- * subclass hasn't defined an open method.
+ * This is a virtual function only; the actual open operation is
+ * performed by the subclass. This function will fail if the
+ * subclass hasn't defined an open method.
*
* Errors:
- * IO CANTOPENFILE Open failed.
+ * IO CANTOPENFILE Open failed.
*
- * Return: Success: Pointer to the new file descriptor.
+ * Return: Success: Pointer to the new file descriptor.
*
- * Failure: NULL
+ * Failure: NULL
*
- * Programmer: Robb Matzke
- * Wednesday, October 22, 1997
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
*
* Modifications:
*
@@ -133,7 +133,7 @@ H5F_low_open(const H5F_low_class_t *type, const char *name,
const H5F_access_t *access_parms, uintn flags,
H5F_search_t *key/*out*/)
{
- H5F_low_t *lf = NULL;
+ H5F_low_t *lf = NULL;
FUNC_ENTER(H5F_low_open, NULL);
@@ -141,7 +141,7 @@ H5F_low_open(const H5F_low_class_t *type, const char *name,
assert(name && *name);
if (NULL == (lf = (type->open) (name, access_parms, flags, key))) {
- HRETURN_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HRETURN_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
}
lf->type = type;
@@ -149,28 +149,28 @@ H5F_low_open(const H5F_low_class_t *type, const char *name,
}
/*-------------------------------------------------------------------------
- * Function: H5F_low_close
+ * Function: H5F_low_close
*
- * Purpose: Closes a low-level file. The subclass should free all
- * resources used by the file descriptor but should not free the
- * file descriptor itself. The close method in the subclass is
- * optional; lack of a close method results in only the file
- * descriptor being freed.
+ * Purpose: Closes a low-level file. The subclass should free all
+ * resources used by the file descriptor but should not free the
+ * file descriptor itself. The close method in the subclass is
+ * optional; lack of a close method results in only the file
+ * descriptor being freed.
*
- * It is safe to call this function with a null pointer for the
- * file descriptor. This function returns a null pointer that
- * the caller can assign to the file descriptor pointer as it's
- * closed like `desc=H5F_low_close(desc)'.
+ * It is safe to call this function with a null pointer for the
+ * file descriptor. This function returns a null pointer that
+ * the caller can assign to the file descriptor pointer as it's
+ * closed like `desc=H5F_low_close(desc)'.
*
* Errors:
- * IO CLOSEERROR Close failed.
+ * IO CLOSEERROR Close failed.
*
- * Return: Success: NULL
+ * Return: Success: NULL
*
- * Failure: NULL
+ * Failure: NULL
*
- * Programmer: Robb Matzke
- * Wednesday, October 22, 1997
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
*
* Modifications:
*
@@ -182,36 +182,36 @@ H5F_low_close(H5F_low_t *lf, const H5F_access_t *access_parms)
FUNC_ENTER(H5F_low_close, NULL);
if (lf) {
- if ((lf->type->close) (lf, access_parms) < 0) {
- H5MM_xfree(lf);
- HRETURN_ERROR(H5E_IO, H5E_CLOSEERROR, NULL, "close failed");
- }
- H5MM_xfree(lf);
+ if ((lf->type->close) (lf, access_parms) < 0) {
+ H5MM_xfree(lf);
+ HRETURN_ERROR(H5E_IO, H5E_CLOSEERROR, NULL, "close failed");
+ }
+ H5MM_xfree(lf);
}
FUNC_LEAVE(NULL);
}
/*-------------------------------------------------------------------------
- * Function: H5F_low_read
+ * Function: H5F_low_read
*
- * Purpose: Reads SIZE bytes of data beginning at address ADDR of the
- * file LF and puts the result in BUF. Behavior when reading
- * past the logical or physical end of file is to return zeros
- * for that part of the request.
+ * Purpose: Reads SIZE bytes of data beginning at address ADDR of the
+ * file LF and puts the result in BUF. Behavior when reading
+ * past the logical or physical end of file is to return zeros
+ * for that part of the request.
*
- * This is only a virtual function; the subclass must define a
- * read method or this function will fail.
+ * This is only a virtual function; the subclass must define a
+ * read method or this function will fail.
*
* Errors:
- * IO READERROR Read failed.
- * IO UNSUPPORTED No read method.
+ * IO READERROR Read failed.
+ * IO UNSUPPORTED No read method.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Wednesday, October 22, 1997
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
*
* Modifications:
*
@@ -221,7 +221,7 @@ herr_t
H5F_low_read(H5F_low_t *lf, const H5F_access_t *access_parms,
const haddr_t *addr, size_t size, uint8 *buf/*out*/)
{
- herr_t ret_value = FAIL;
+ herr_t ret_value = FAIL;
FUNC_ENTER(H5F_low_read, FAIL);
@@ -230,37 +230,37 @@ H5F_low_read(H5F_low_t *lf, const H5F_access_t *access_parms,
assert(buf);
if (lf->type->read) {
- if ((ret_value = (lf->type->read) (lf, access_parms, addr, size,
+ if ((ret_value = (lf->type->read) (lf, access_parms, addr, size,
buf)) < 0) {
- HRETURN_ERROR(H5E_IO, H5E_READERROR, ret_value, "read failed");
- }
+ HRETURN_ERROR(H5E_IO, H5E_READERROR, ret_value, "read failed");
+ }
} else {
- HRETURN_ERROR(H5E_IO, H5E_UNSUPPORTED, FAIL, "no read method");
+ HRETURN_ERROR(H5E_IO, H5E_UNSUPPORTED, FAIL, "no read method");
}
FUNC_LEAVE(ret_value);
}
/*-------------------------------------------------------------------------
- * Function: H5F_low_write
+ * Function: H5F_low_write
*
- * Purpose: Writes SIZE bytes of data from BUF into the file LF beginning
- * at address ADDR of the file. Writing past the logical or
- * physical end of file causes the file to be extended.
+ * Purpose: Writes SIZE bytes of data from BUF into the file LF beginning
+ * at address ADDR of the file. Writing past the logical or
+ * physical end of file causes the file to be extended.
*
- * This is a virtual function only; if the subclass doesn't
- * define a write method then this function will fail.
+ * This is a virtual function only; if the subclass doesn't
+ * define a write method then this function will fail.
*
* Errors:
- * IO UNSUPPORTED No write method.
- * IO WRITEERROR Write failed.
+ * IO UNSUPPORTED No write method.
+ * IO WRITEERROR Write failed.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Wednesday, October 22, 1997
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
*
* Modifications:
*
@@ -270,8 +270,8 @@ herr_t
H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms,
const haddr_t *addr, size_t size, const uint8 *buf)
{
- herr_t ret_value = FAIL;
- haddr_t tmp_addr;
+ herr_t ret_value = FAIL;
+ haddr_t tmp_addr;
FUNC_ENTER(H5F_low_write, FAIL);
@@ -281,43 +281,45 @@ H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms,
/* Extend the file eof marker if we write past it */
tmp_addr = *addr;
- H5F_addr_inc(&tmp_addr, size);
+ H5F_addr_inc(&tmp_addr, (hsize_t)size);
if (H5F_addr_gt(&tmp_addr, &(lf->eof))) {
- fprintf(stderr, "H5F: extending file w/o allocation\n");
- lf->eof = tmp_addr;
+ fprintf(stderr, "H5F: extending file w/o allocation\n");
+ lf->eof = tmp_addr;
}
+
/* Write the data */
if (lf->type->write) {
- if ((ret_value = (lf->type->write) (lf, access_parms, addr, size,
+ if ((ret_value = (lf->type->write) (lf, access_parms, addr, size,
buf)) < 0) {
- HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, ret_value, "write failed");
- }
+ HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, ret_value, "write failed");
+ }
} else {
- HRETURN_ERROR(H5E_IO, H5E_UNSUPPORTED, FAIL, "no write method");
+ HRETURN_ERROR(H5E_IO, H5E_UNSUPPORTED, FAIL, "no write method");
}
FUNC_LEAVE(ret_value);
}
+
/*-------------------------------------------------------------------------
- * Function: H5F_low_flush
+ * Function: H5F_low_flush
*
- * Purpose: Flushes file buffers to disk. For instance, the stdio.h
- * driver would call fflush(). Flushing also insures that the
- * file exists to the current logical EOF (the library maintains
- * a notion of EOF which is independent of the physical EOF) by
- * reading and writing the last byte. On some systems, this
- * allocates a single block at the end of the file while on
- * other systems it allocates all blocks up to the end of the
- * file. Extending the physical file is necessary because
- * H5F_open() checks for truncated files.
+ * Purpose: Flushes file buffers to disk. For instance, the stdio.h
+ * driver would call fflush(). Flushing also insures that the
+ * file exists to the current logical EOF (the library maintains
+ * a notion of EOF which is independent of the physical EOF) by
+ * reading and writing the last byte. On some systems, this
+ * allocates a single block at the end of the file while on
+ * other systems it allocates all blocks up to the end of the
+ * file. Extending the physical file is necessary because
+ * H5F_open() checks for truncated files.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Monday, November 10, 1997
+ * Programmer: Robb Matzke
+ * Monday, November 10, 1997
*
* Modifications:
*
@@ -326,8 +328,8 @@ H5F_low_write(H5F_low_t *lf, const H5F_access_t *access_parms,
herr_t
H5F_low_flush(H5F_low_t *lf, const H5F_access_t *access_parms)
{
- haddr_t last_byte;
- uint8 buf[1];
+ haddr_t last_byte;
+ uint8 buf[1];
FUNC_ENTER(H5F_low_flush, FAIL);
@@ -336,58 +338,59 @@ H5F_low_flush(H5F_low_t *lf, const H5F_access_t *access_parms)
/* Make sure the last block of the file has been allocated on disk */
H5F_addr_reset(&last_byte);
if (addr_defined(&(lf->eof)) && H5F_addr_gt(&(lf->eof), &last_byte)) {
- last_byte = lf->eof;
- last_byte.offset -= 1;
- if (H5F_low_read(lf, access_parms, &last_byte, 1, buf) >= 0) {
- H5F_low_write(lf, access_parms, &last_byte, 1, buf);
- }
+ last_byte = lf->eof;
+ last_byte.offset -= 1;
+ if (H5F_low_read(lf, access_parms, &last_byte, 1, buf) >= 0) {
+ H5F_low_write(lf, access_parms, &last_byte, 1, buf);
+ }
}
/* Invoke the subclass the flush method */
if (lf->type->flush) {
- if ((lf->type->flush) (lf, access_parms) < 0) {
- HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL,
- "low level flush failed");
- }
+ if ((lf->type->flush) (lf, access_parms) < 0) {
+ HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL,
+ "low level flush failed");
+ }
}
FUNC_LEAVE(SUCCEED);
}
+
/*-------------------------------------------------------------------------
- * Function: H5F_low_size
- *
- * Purpose: Returns the current logical size of the file in bytes. This
- * may differ from the physical size of the file (most
- * subclasses extend the physical file size during the write
- * operation instead of the alloc operation).
- *
- * The next absolute file address is returned through the
- * EOF argument. This is the address of the logical end of
- * file (that is, the address of the first byte past the last
- * byte which is logically in the file).
- *
- * Warning: The return value type (size_t) may not be large enough to
- * represent the true size of the file. In such cases, the
- * maximum possible size is returned. It is better to look at
- * the EOF output argument to determine the total size.
+ * Function: H5F_low_size
+ *
+ * Purpose: Returns the current logical size of the file in bytes. This
+ * may differ from the physical size of the file (most
+ * subclasses extend the physical file size during the write
+ * operation instead of the alloc operation).
+ *
+ * The next absolute file address is returned through the
+ * EOF argument. This is the address of the logical end of
+ * file (that is, the address of the first byte past the last
+ * byte which is logically in the file).
+ *
+ * Warning: The return value type may not be large enough to represent
+ * the true size of the file. In such cases, the maximum
+ * possible size is returned. It is better to look at the EOF
+ * output argument to determine the total size.
*
* Errors:
- * IO UNSUPPORTED No size method.
+ * IO UNSUPPORTED No size method.
*
- * Return: Success: Current size of file
+ * Return: Success: Current size of file
*
- * Failure: 0
+ * Failure: 0
*
- * Programmer: Robb Matzke
- * Wednesday, October 22, 1997
+ * Programmer: Robb Matzke
+ * Wednesday, October 22, 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
-size_t
-H5F_low_size(H5F_low_t *lf, haddr_t *eof /*out */ )
+hsize_t
+H5F_low_size(H5F_low_t *lf, haddr_t *eof/*out*/)
{
- size_t size = (size_t) (-1); /*max possible size */
+ hsize_t size = (hsize_t)(-1); /*max possible size */
FUNC_ENTER(H5F_low_size, 0);
@@ -395,41 +398,41 @@ H5F_low_size(H5F_low_t *lf, haddr_t *eof /*out */ )
assert(eof);
*eof = lf->eof;
- if (eof->offset < size)
- size = eof->offset;
+ if (eof->offset < size) size = eof->offset;
FUNC_LEAVE(size);
}
+
/*-------------------------------------------------------------------------
- * Function: H5F_low_access
+ * Function: H5F_low_access
*
- * Purpose: Determines if a file can be accessed in a particular way by a
- * particular subclass. The access modes for a file are the
- * same as those of access(2), namely
+ * Purpose: Determines if a file can be accessed in a particular way by a
+ * particular subclass. The access modes for a file are the
+ * same as those of access(2), namely
*
- * F_OK: determines if the file (or all parts of a multi-part
- * file) exists.
+ * F_OK: determines if the file (or all parts of a multi-part
+ * file) exists.
*
- * R_OK: determines if the file (or all parts of a multi-part
- * file) are readable.
+ * R_OK: determines if the file (or all parts of a multi-part
+ * file) are readable.
*
- * W_OK: determines if the file (or all parts of a multi-part
- * file) are writable.
+ * W_OK: determines if the file (or all parts of a multi-part
+ * file) are writable.
*
- * If a subclass doesn't define an access method, then we treat
- * the name as if it were a local Unix file and test
- * accessibility with the access(2) function. The KEY is
- * returned as a device number and i-node pair.
+ * If a subclass doesn't define an access method, then we treat
+ * the name as if it were a local Unix file and test
+ * accessibility with the access(2) function. The KEY is
+ * returned as a device number and i-node pair.
*
- * Return: Success: TRUE or FALSE. If TRUE, then KEY is
- * initialized with data that makes this file
- * unique (same value as H5F_low_open).
+ * Return: Success: TRUE or FALSE. If TRUE, then KEY is
+ * initialized with data that makes this file
+ * unique (same value as H5F_low_open).
*
- * Failure: FAIL, KEY is undefined.
+ * Failure: FAIL, KEY is undefined.
*
- * Programmer: Robb Matzke
- * Friday, October 24, 1997
+ * Programmer: Robb Matzke
+ * Friday, October 24, 1997
*
* Modifications:
*
@@ -438,45 +441,45 @@ H5F_low_size(H5F_low_t *lf, haddr_t *eof /*out */ )
hbool_t
H5F_low_access(const H5F_low_class_t *type, const char *name,
const H5F_access_t *access_parms, int mode,
- H5F_search_t *key/*out*/)
+ H5F_search_t *key/*out*/)
{
- hbool_t ret_value;
- struct stat sb;
+ hbool_t ret_value;
+ struct stat sb;
FUNC_ENTER(H5F_low_size, FAIL);
assert(type);
if (type->access) {
- ret_value = (type->access) (name, access_parms, mode, key /*out*/);
+ ret_value = (type->access) (name, access_parms, mode, key /*out*/);
} else {
- ret_value = (0 == access(name, mode) ? TRUE : FALSE);
- if (key) {
- stat(name, &sb);
- key->dev = sb.st_dev;
- key->ino = sb.st_ino;
- }
+ ret_value = (0 == access(name, mode) ? TRUE : FALSE);
+ if (key) {
+ stat(name, &sb);
+ key->dev = sb.st_dev;
+ key->ino = sb.st_ino;
+ }
}
FUNC_LEAVE(ret_value);
}
/*-------------------------------------------------------------------------
- * Function: H5F_low_extend
+ * Function: H5F_low_extend
*
- * Purpose: Increases the logical size of a file by moving the logical
- * end of file marker. A subclass can override this function by
- * providing its own allocation method.
+ * Purpose: Increases the logical size of a file by moving the logical
+ * end of file marker. A subclass can override this function by
+ * providing its own allocation method.
*
- * Return: Success: SUCCEED, the address of the old end-of-file
- * is returned through the ADDR argument and the
- * logical size of the file has been extended by
- * SIZE bytes.
+ * Return: Success: SUCCEED, the address of the old end-of-file
+ * is returned through the ADDR argument and the
+ * logical size of the file has been extended by
+ * SIZE bytes.
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Thursday, November 13, 1997
+ * Programmer: Robb Matzke
+ * Thursday, November 13, 1997
*
* Modifications:
*
@@ -484,7 +487,7 @@ H5F_low_access(const H5F_low_class_t *type, const char *name,
*/
herr_t
H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op,
- size_t size, haddr_t *addr/*out*/)
+ hsize_t size, haddr_t *addr/*out*/)
{
FUNC_ENTER(H5F_low_alloc, FAIL);
@@ -493,29 +496,29 @@ H5F_low_extend(H5F_low_t *lf, const H5F_access_t *access_parms, intn op,
assert(addr);
if (lf->type->extend) {
- if ((lf->type->extend) (lf, access_parms, op, size, addr/*out*/) < 0) {
- HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "unable to extend file");
- }
+ if ((lf->type->extend) (lf, access_parms, op, size, addr/*out*/) < 0) {
+ HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
+ "unable to extend file");
+ }
} else {
- *addr = lf->eof;
- H5F_addr_inc(&(lf->eof), size);
+ *addr = lf->eof;
+ H5F_addr_inc(&(lf->eof), size);
}
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
- * Function: H5F_low_seteof
+ * Function: H5F_low_seteof
*
- * Purpose: Sets the logical end-of-file to the specified address.
+ * Purpose: Sets the logical end-of-file to the specified address.
*
- * Return: Success: SUCCEED
+ * Return: Success: SUCCEED
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Thursday, November 13, 1997
+ * Programmer: Robb Matzke
+ * Thursday, November 13, 1997
*
* Modifications:
*
@@ -535,18 +538,18 @@ H5F_low_seteof(H5F_low_t *lf, const haddr_t *addr)
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_cmp
+ * Function: H5F_addr_cmp
*
- * Purpose: Compares two addresses.
+ * Purpose: Compares two addresses.
*
- * Return: Success: <0 if A1<A2
- * =0 if A1=A2
- * >0 if A1>A2
+ * Return: Success: <0 if A1<A2
+ * =0 if A1=A2
+ * >0 if A1>A2
*
- * Failure: never fails
+ * Failure: never fails
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -561,22 +564,22 @@ H5F_addr_cmp(const haddr_t *a1, const haddr_t *a2)
assert(a2 && addr_defined(a2));
if (a1->offset < a2->offset)
- HRETURN(-1);
+ HRETURN(-1);
if (a1->offset > a2->offset)
- HRETURN(1);
+ HRETURN(1);
FUNC_LEAVE(0);
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_undef
+ * Function: H5F_addr_undef
*
- * Purpose: Cause an address to become undefined.
+ * Purpose: Cause an address to become undefined.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -591,16 +594,16 @@ H5F_addr_undef(haddr_t *addr /*out */ )
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_defined
+ * Function: H5F_addr_defined
*
- * Purpose: Determines if an address has a defined value.
+ * Purpose: Determines if an address has a defined value.
*
- * Return: Success: TRUE or FALSE
+ * Return: Success: TRUE or FALSE
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -614,14 +617,14 @@ H5F_addr_defined(const haddr_t *addr)
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_reset
+ * Function: H5F_addr_reset
*
- * Purpose: Reset the address to zero.
+ * Purpose: Reset the address to zero.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -635,16 +638,16 @@ H5F_addr_reset(haddr_t *addr/*out*/)
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_zerop
+ * Function: H5F_addr_zerop
*
- * Purpose: Determines if an address is zero.
+ * Purpose: Determines if an address is zero.
*
- * Return: Success: TRUE or FALSE
+ * Return: Success: TRUE or FALSE
*
- * Failure: FAIL
+ * Failure: FAIL
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -658,16 +661,16 @@ H5F_addr_zerop(const haddr_t *addr)
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_encode
+ * Function: H5F_addr_encode
*
- * Purpose: Encodes an address into the buffer pointed to by *PP and
- * then increments the pointer to the first byte after the
- * address. An undefined value is stored as all 1's.
+ * Purpose: Encodes an address into the buffer pointed to by *PP and
+ * then increments the pointer to the first byte after the
+ * address. An undefined value is stored as all 1's.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -676,42 +679,42 @@ H5F_addr_zerop(const haddr_t *addr)
void
H5F_addr_encode(H5F_t *f, uint8 **pp, const haddr_t *addr)
{
- uint i;
- haddr_t tmp;
+ uint i;
+ haddr_t tmp;
assert(f);
assert(pp && *pp);
assert(addr);
if (addr_defined(addr)) {
- tmp = *addr;
- for (i=0; i<H5F_SIZEOF_ADDR(f); i++) {
- *(*pp)++ = (uint8)(tmp.offset & 0xff);
- tmp.offset >>= 8;
- }
- assert("overflow" && 0 == tmp.offset);
+ tmp = *addr;
+ for (i=0; i<H5F_SIZEOF_ADDR(f); i++) {
+ *(*pp)++ = (uint8)(tmp.offset & 0xff);
+ tmp.offset >>= 8;
+ }
+ assert("overflow" && 0 == tmp.offset);
} else {
- for (i=0; i<H5F_SIZEOF_ADDR(f); i++) {
- *(*pp)++ = 0xff;
- }
+ for (i=0; i<H5F_SIZEOF_ADDR(f); i++) {
+ *(*pp)++ = 0xff;
+ }
}
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_decode
+ * Function: H5F_addr_decode
*
- * Purpose: Decodes an address from the buffer pointed to by *PP and
- * updates the pointer to point to the next byte after the
- * address.
+ * Purpose: Decodes an address from the buffer pointed to by *PP and
+ * updates the pointer to point to the next byte after the
+ * address.
*
- * If the value read is all 1's then the address is returned
- * with an undefined value.
+ * If the value read is all 1's then the address is returned
+ * with an undefined value.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -720,10 +723,10 @@ H5F_addr_encode(H5F_t *f, uint8 **pp, const haddr_t *addr)
void
H5F_addr_decode(H5F_t *f, const uint8 **pp, haddr_t *addr/*out*/)
{
- uint i;
- haddr_t tmp;
- uint8 c;
- hbool_t all_zero = TRUE;
+ uint i;
+ haddr_t tmp;
+ uint8 c;
+ hbool_t all_zero = TRUE;
assert(f);
assert(pp && *pp);
@@ -732,29 +735,29 @@ H5F_addr_decode(H5F_t *f, const uint8 **pp, haddr_t *addr/*out*/)
addr->offset = 0;
for (i=0; i<H5F_SIZEOF_ADDR(f); i++) {
- c = *(*pp)++;
- if (c != 0xff) all_zero = FALSE;
-
- if (i<sizeof(addr->offset)) {
- tmp.offset = c;
- tmp.offset <<= i * 8; /*use tmp to get casting right */
- addr->offset |= tmp.offset;
- } else if (!all_zero) {
- assert(0 == **pp); /*overflow */
- }
+ c = *(*pp)++;
+ if (c != 0xff) all_zero = FALSE;
+
+ if (i<sizeof(addr->offset)) {
+ tmp.offset = c;
+ tmp.offset <<= i * 8; /*use tmp to get casting right */
+ addr->offset |= tmp.offset;
+ } else if (!all_zero) {
+ assert(0 == **pp); /*overflow */
+ }
}
if (all_zero) H5F_addr_undef(addr);
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_print
+ * Function: H5F_addr_print
*
- * Purpose: Print an address
+ * Purpose: Print an address
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -769,35 +772,35 @@ H5F_addr_print(FILE *stream, const haddr_t *addr)
assert(addr);
if (addr_defined(addr)) {
- /*
- * It would be nice if we could use the `%Lu', `%llu', or `%qu', but
- * we don't know which is supported. So we split the address into a
- * low 4-bytes and a high 4-bytes. If the high 4-bytes are non-zero
- * then we print the address in hexadecimal, otherwise we use decimal.
- */
- tmp = *addr;
- tmp.offset >>= 32;
- if (tmp.offset) {
- fprintf(stream, "0x%08lx%08lx",
- (unsigned long) (tmp.offset),
- (unsigned long) (addr->offset & 0xffffffff));
- } else {
- fprintf(stream, "%lu", (unsigned long) (addr->offset));
- }
+ /*
+ * It would be nice if we could use the `%Lu', `%llu', or `%qu', but
+ * we don't know which is supported. So we split the address into a
+ * low 4-bytes and a high 4-bytes. If the high 4-bytes are non-zero
+ * then we print the address in hexadecimal, otherwise we use decimal.
+ */
+ tmp = *addr;
+ tmp.offset >>= 32;
+ if (tmp.offset) {
+ fprintf(stream, "0x%08lx%08lx",
+ (unsigned long) (tmp.offset),
+ (unsigned long) (addr->offset & 0xffffffff));
+ } else {
+ fprintf(stream, "%lu", (unsigned long) (addr->offset));
+ }
} else {
- fprintf(stream, "UNDEF");
+ fprintf(stream, "UNDEF");
}
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_pow2
+ * Function: H5F_addr_pow2
*
- * Purpose: Returns an address which is a power of two.
+ * Purpose: Returns an address which is a power of two.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -814,21 +817,21 @@ H5F_addr_pow2(uintn n, haddr_t *addr /*out */ )
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_inc
+ * Function: H5F_addr_inc
*
- * Purpose: Increments an address by some number of bytes.
+ * Purpose: Increments an address by some number of bytes.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
void
-H5F_addr_inc(haddr_t *addr/*in,out */, size_t inc)
+H5F_addr_inc(haddr_t *addr/*in,out*/, hsize_t inc)
{
assert(addr && addr_defined(addr));
assert(addr->offset <= addr->offset + inc);
@@ -845,14 +848,14 @@ H5F_addr_inc(haddr_t *addr/*in,out */, size_t inc)
* Return: void
*
* Programmer: Robb Matzke
- * Monday, April 6, 1998
+ * Monday, April 6, 1998
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
void
-H5F_addr_adj(haddr_t *addr/*in,out */, ssize_t adj)
+H5F_addr_adj(haddr_t *addr/*in,out */, hssize_t adj)
{
#ifndef NDEBUG
assert(addr && addr_defined(addr));
@@ -868,14 +871,14 @@ H5F_addr_adj(haddr_t *addr/*in,out */, ssize_t adj)
/*-------------------------------------------------------------------------
- * Function: H5F_addr_add
+ * Function: H5F_addr_add
*
- * Purpose: Adds two addresses and puts the result in the first argument.
+ * Purpose: Adds two addresses and puts the result in the first argument.
*
- * Return: void
+ * Return: void
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*
@@ -890,17 +893,17 @@ H5F_addr_add(haddr_t *a1 /*in,out */ , const haddr_t *a2)
}
/*-------------------------------------------------------------------------
- * Function: H5F_addr_hash
+ * Function: H5F_addr_hash
*
- * Purpose: Computes a hash value of an address between 0 and MOD-1,
- * inclusive.
+ * Purpose: Computes a hash value of an address between 0 and MOD-1,
+ * inclusive.
*
- * Return: Success: The hash value
+ * Return: Success: The hash value
*
- * Failure: never fails
+ * Failure: never fails
*
- * Programmer: Robb Matzke
- * Friday, November 7, 1997
+ * Programmer: Robb Matzke
+ * Friday, November 7, 1997
*
* Modifications:
*