diff options
Diffstat (limited to 'src/H5Fcore.c')
-rw-r--r-- | src/H5Fcore.c | 280 |
1 files changed, 136 insertions, 144 deletions
diff --git a/src/H5Fcore.c b/src/H5Fcore.c index 0a8797f..9069df5 100644 --- a/src/H5Fcore.c +++ b/src/H5Fcore.c @@ -6,12 +6,12 @@ * Wednesday, October 22, 1997 * * Purpose: This file implements an in-core temporary file. It's intended - * for storing small temporary files such as wrappers generated - * on the fly. + * for storing small temporary files such as wrappers generated + * on the fly. * * Note: This is mostly an exercise to help clean up parts of the H5F - * package since this driver is quite different than the other - * low level drivers we have so far. + * package since this driver is quite different than the other + * low level drivers we have so far. * */ #include <H5private.h> @@ -19,45 +19,46 @@ #include <H5Fprivate.h> #include <H5MMprivate.h> -#define H5F_CORE_INC 10240 /*amount by which to grow file */ -#define H5F_CORE_DEV 0xffff /*pseudo dev for core until we fix things*/ +#define H5F_CORE_INC 10240 /*amount by which to grow file */ +#define H5F_CORE_DEV 0xffff /*pseudo dev for core until we fix things */ -#define PABLO_MASK H5F_core -static hbool_t interface_initialize_g = FALSE; +#define PABLO_MASK H5F_core +static hbool_t interface_initialize_g = FALSE; #define INTERFACE_INIT NULL -static hbool_t H5F_core_access (const char *name, int mode, H5F_search_t *key); -static H5F_low_t *H5F_core_open (const char *name, uintn flags, H5F_search_t*); -static herr_t H5F_core_close (H5F_low_t *lf); -static herr_t H5F_core_read (H5F_low_t *lf, const haddr_t *addr, size_t size, - uint8 *buf); -static herr_t H5F_core_write (H5F_low_t *lf, const haddr_t *addr, size_t size, - const uint8 *buf); - -const H5F_low_class_t H5F_LOW_CORE[1] = {{ - H5F_core_access, /* access method */ - H5F_core_open, /* open method */ - H5F_core_close, /* close method */ - H5F_core_read, /* read method */ - H5F_core_write, /* write method */ - NULL, /* flush method */ - NULL, /* extend method */ -}}; +static hbool_t H5F_core_access(const char *name, int mode, H5F_search_t *key); +static H5F_low_t *H5F_core_open(const char *name, uintn flags, H5F_search_t *); +static herr_t H5F_core_close(H5F_low_t *lf); +static herr_t H5F_core_read(H5F_low_t *lf, const haddr_t *addr, size_t size, + uint8 *buf); +static herr_t H5F_core_write(H5F_low_t *lf, const haddr_t *addr, size_t size, + const uint8 *buf); +const H5F_low_class_t H5F_LOW_CORE[1] = +{ + { + H5F_core_access, /* access method */ + H5F_core_open, /* open method */ + H5F_core_close, /* close method */ + H5F_core_read, /* read method */ + H5F_core_write, /* write method */ + NULL, /* flush method */ + NULL, /* extend method */ + }}; /*------------------------------------------------------------------------- - * Function: H5F_core_access + * Function: H5F_core_access * - * Purpose: Determines if the specified file already exists. This driver - * doesn't use names, so every call to H5F_core_open() would - * create a new file. Therefore, this function always returns - * false and KEY is never initialized. + * Purpose: Determines if the specified file already exists. This driver + * doesn't use names, so every call to H5F_core_open() would + * create a new file. Therefore, this function always returns + * false and KEY is never initialized. * - * Return: Success: FALSE + * Return: Success: FALSE * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Friday, October 24, 1997 * * Modifications: @@ -65,74 +66,70 @@ const H5F_low_class_t H5F_LOW_CORE[1] = {{ *------------------------------------------------------------------------- */ static hbool_t -H5F_core_access (const char *name, int mode, H5F_search_t *key/*out*/) +H5F_core_access(const char *name, int mode, H5F_search_t *key /*out */ ) { - FUNC_ENTER (H5F_core_access, FAIL); - FUNC_LEAVE (FALSE); + FUNC_ENTER(H5F_core_access, FAIL); + FUNC_LEAVE(FALSE); } - /*------------------------------------------------------------------------- - * Function: H5F_core_open + * Function: H5F_core_open * - * Purpose: Opens a temporary file which will exist only in memory. The - * NAME argument is unused. The FLAGS are a bit field with - * the possible values defined in H5F_low_open(). + * Purpose: Opens a temporary file which will exist only in memory. The + * NAME argument is unused. The FLAGS are a bit field with + * the possible values defined in H5F_low_open(). * * Errors: - * IO CANTOPENFILE Must creat file with write access. + * IO CANTOPENFILE Must creat file with write access. * - * Return: Success: Low-level file pointer + * Return: Success: Low-level file pointer * - * Failure: NULL + * Failure: NULL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Wednesday, October 22, 1997 * * Modifications: * *------------------------------------------------------------------------- */ -static H5F_low_t * -H5F_core_open (const char *name, uintn flags, H5F_search_t *key) +static H5F_low_t * +H5F_core_open(const char *name, uintn flags, H5F_search_t *key) { - H5F_low_t *lf = NULL; - static ino_t ino=0; - - FUNC_ENTER (H5F_core_open, NULL); - - if (0==(flags & H5F_ACC_WRITE) || 0==(flags & H5F_ACC_CREAT)) { - HRETURN_ERROR (H5E_IO, H5E_CANTOPENFILE, NULL, - "must creat file with write access"); - } - - lf = H5MM_xcalloc (1, sizeof(H5F_low_t)); - lf->u.core.mem = H5MM_xmalloc (H5F_CORE_INC); - lf->u.core.alloc = H5F_CORE_INC; - lf->u.core.size = 0; - H5F_addr_reset (&(lf->eof)); - - if (key) { - key->dev = H5F_CORE_DEV; - key->ino = ino++; - } - - FUNC_LEAVE (lf); + H5F_low_t *lf = NULL; + static ino_t ino = 0; + + FUNC_ENTER(H5F_core_open, NULL); + + if (0 == (flags & H5F_ACC_WRITE) || 0 == (flags & H5F_ACC_CREAT)) { + HRETURN_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, + "must creat file with write access"); + } + lf = H5MM_xcalloc(1, sizeof(H5F_low_t)); + lf->u.core.mem = H5MM_xmalloc(H5F_CORE_INC); + lf->u.core.alloc = H5F_CORE_INC; + lf->u.core.size = 0; + H5F_addr_reset(&(lf->eof)); + + if (key) { + key->dev = H5F_CORE_DEV; + key->ino = ino++; + } + FUNC_LEAVE(lf); } - /*------------------------------------------------------------------------- - * Function: H5F_core_close + * Function: H5F_core_close * - * Purpose: Closes a file. + * Purpose: Closes a file. * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Wednesday, October 22, 1997 * * Modifications: @@ -140,32 +137,31 @@ H5F_core_open (const char *name, uintn flags, H5F_search_t *key) *------------------------------------------------------------------------- */ static herr_t -H5F_core_close (H5F_low_t *lf) +H5F_core_close(H5F_low_t *lf) { - FUNC_ENTER (H5F_core_close, FAIL); + FUNC_ENTER(H5F_core_close, FAIL); - lf->u.core.mem = H5MM_xfree (lf->u.core.mem); - lf->u.core.size = 0; - lf->u.core.alloc = 0; + lf->u.core.mem = H5MM_xfree(lf->u.core.mem); + lf->u.core.size = 0; + lf->u.core.alloc = 0; - FUNC_LEAVE (SUCCEED); + FUNC_LEAVE(SUCCEED); } - /*------------------------------------------------------------------------- - * Function: H5F_core_read + * Function: H5F_core_read * - * Purpose: Reads SIZE bytes beginning at address ADDR in file LF and - * places them in buffer BUF. Reading past the logical or - * physical end of the file returns zeros instead of failing. + * Purpose: Reads SIZE bytes beginning at address ADDR in file LF and + * places them in buffer BUF. Reading past the logical or + * physical end of the file returns zeros instead of failing. * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Wednesday, October 22, 1997 * * Modifications: @@ -173,46 +169,44 @@ H5F_core_close (H5F_low_t *lf) *------------------------------------------------------------------------- */ static herr_t -H5F_core_read (H5F_low_t *lf, const haddr_t *addr, size_t size, uint8 *buf) +H5F_core_read(H5F_low_t *lf, const haddr_t *addr, size_t size, uint8 *buf) { - size_t n; - size_t eof; - - FUNC_ENTER (H5F_core_read, FAIL); - - assert (lf); - assert (addr && H5F_addr_defined (addr)); - assert (buf); - - eof = MIN (lf->eof.offset, lf->u.core.size); - - if (addr->offset>=eof) { - HDmemset (buf, 0, size); - } else { - n = MIN (size, eof - addr->offset); - HDmemcpy (buf, lf->u.core.mem + addr->offset, n); - HDmemset (buf+n, 0, size-n); - } - - FUNC_LEAVE (SUCCEED); -} + size_t n; + size_t eof; + FUNC_ENTER(H5F_core_read, FAIL); + assert(lf); + assert(addr && H5F_addr_defined(addr)); + assert(buf); + + eof = MIN(lf->eof.offset, lf->u.core.size); + + if (addr->offset >= eof) { + HDmemset(buf, 0, size); + } else { + n = MIN(size, eof - addr->offset); + HDmemcpy(buf, lf->u.core.mem + addr->offset, n); + HDmemset(buf + n, 0, size - n); + } + + FUNC_LEAVE(SUCCEED); +} /*------------------------------------------------------------------------- - * Function: H5F_core_write + * Function: H5F_core_write * - * Purpose: Writes SIZE bytes from the beginning of BUF into file LF at - * file address ADDR. The file is extended as necessary to - * accommodate the new data. + * Purpose: Writes SIZE bytes from the beginning of BUF into file LF at + * file address ADDR. The file is extended as necessary to + * accommodate the new data. * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Wednesday, October 22, 1997 * * Modifications: @@ -220,31 +214,29 @@ H5F_core_read (H5F_low_t *lf, const haddr_t *addr, size_t size, uint8 *buf) *------------------------------------------------------------------------- */ static herr_t -H5F_core_write (H5F_low_t *lf, const haddr_t *addr, size_t size, - const uint8 *buf) +H5F_core_write(H5F_low_t *lf, const haddr_t *addr, size_t size, + const uint8 *buf) { - size_t inc_amount; - - FUNC_ENTER (H5F_core_write, FAIL); - - assert (lf); - assert (addr && H5F_addr_defined (addr)); - assert (buf); - - /* Allocate more space */ - if (addr->offset+size>lf->u.core.alloc) { - inc_amount = MAX (addr->offset+size-lf->u.core.alloc, H5F_CORE_INC); - lf->u.core.alloc = lf->u.core.alloc + inc_amount; - lf->u.core.mem = H5MM_xrealloc (lf->u.core.mem, lf->u.core.alloc); - } - - /* Move the physical EOF marker */ - if (addr->offset+size>lf->u.core.size) { - lf->u.core.size = addr->offset + size; - } - - /* Copy data */ - HDmemcpy (lf->u.core.mem+addr->offset, buf, size); - - FUNC_LEAVE (SUCCEED); + size_t inc_amount; + + FUNC_ENTER(H5F_core_write, FAIL); + + assert(lf); + assert(addr && H5F_addr_defined(addr)); + assert(buf); + + /* Allocate more space */ + if (addr->offset + size > lf->u.core.alloc) { + inc_amount = MAX(addr->offset + size - lf->u.core.alloc, H5F_CORE_INC); + lf->u.core.alloc = lf->u.core.alloc + inc_amount; + lf->u.core.mem = H5MM_xrealloc(lf->u.core.mem, lf->u.core.alloc); + } + /* Move the physical EOF marker */ + if (addr->offset + size > lf->u.core.size) { + lf->u.core.size = addr->offset + size; + } + /* Copy data */ + HDmemcpy(lf->u.core.mem + addr->offset, buf, size); + + FUNC_LEAVE(SUCCEED); } |