diff options
author | Albert Cheng <acheng@hdfgroup.org> | 1998-02-09 19:37:40 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 1998-02-09 19:37:40 (GMT) |
commit | 7e8e3eec42254a6988b2739b621b1412963d590c (patch) | |
tree | cc7d01adda3675d67d35c8cb2edaf7a1dc469f40 /src/H5Ffamily.c | |
parent | 35e7a062e26c1a65e571202a6fda0b475e42da00 (diff) | |
download | hdf5-7e8e3eec42254a6988b2739b621b1412963d590c.zip hdf5-7e8e3eec42254a6988b2739b621b1412963d590c.tar.gz hdf5-7e8e3eec42254a6988b2739b621b1412963d590c.tar.bz2 |
[svn-r230] Changes were actually made by Robb. I am commiting them for him
while he is visiting LLNL. I changed the default creation template
offset and length to 4. Will fix the problem later.
Changes since 19980205
----------------------
./src/H5H.c
./src/H5Hprivate.h
./src/H5O.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Olayout.c
./src/H5Oname.c
./src/H5Onull.c
./src/H5Oprivate.h
./src/H5Odspace.c
./src/H5Ostab.c
./src/debug.c
./html/H5.format.html
Added an extra 4-byte field after the heap magic number for
alignment on the DEC alpha. Changed object header message
alignment to 8-bytes.
./src/H5F.c
./src/H5Farray.c
./src/H5Ffamily.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fprivate.h
./src/H5Fsec2.c
./src/H5Fstdio.c
./src/H5Gnode.c
./src/H5O.c
./src/H5Odtype.c
./src/H5P.c
./src/H5Pprivate.h
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tpublic.h
./src/H5V.c
./src/H5detect.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/hyperslab.c
./test/istore.c
./test/th5p.c
./test/theap.c
Fixed a few irix64 warnings regarding size_t vs. int,
variables set but not used, printf formats
./config/irix64
Added `-woff 1196' to get rid of errors about __vfork() being
implicitly defined in a system header file.
./src/H5B.c
Fixed a stack alignment problem.
Diffstat (limited to 'src/H5Ffamily.c')
-rw-r--r-- | src/H5Ffamily.c | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/src/H5Ffamily.c b/src/H5Ffamily.c index a72f6bf..025039c 100644 --- a/src/H5Ffamily.c +++ b/src/H5Ffamily.c @@ -41,29 +41,28 @@ static hbool_t interface_initialize_g = FALSE; #define H5F_FAM_DFLT_NBITS 26u /*64MB */ #define H5F_FAM_MASK(N) (((uint64)1<<(N))-1) -#define H5F_FAM_OFFSET(ADDR,N) ((ADDR)->offset & H5F_FAM_MASK(N)) -#define H5F_FAM_MEMBNO(ADDR,N) ((ADDR)->offset >> N) - -static hbool_t H5F_fam_access(const char *name, int mode, H5F_search_t *key); -static H5F_low_t *H5F_fam_open(const char *name, uintn flags, H5F_search_t *); -static herr_t H5F_fam_close(H5F_low_t *lf); -static herr_t H5F_fam_read(H5F_low_t *lf, const haddr_t *addr, size_t size, - uint8 *buf); -static herr_t H5F_fam_write(H5F_low_t *lf, const haddr_t *addr, size_t size, - const uint8 *buf); -static herr_t H5F_fam_flush(H5F_low_t *lf); - -const H5F_low_class_t H5F_LOW_FAM[1] = -{ - { - H5F_fam_access, /* access method */ - H5F_fam_open, /* open method */ - H5F_fam_close, /* close method */ - H5F_fam_read, /* read method */ - H5F_fam_write, /* write method */ - H5F_fam_flush, /* flush method */ - NULL, /* extend method */ - }}; +#define H5F_FAM_OFFSET(ADDR,N) ((off_t)((ADDR)->offset & H5F_FAM_MASK(N))) +#define H5F_FAM_MEMBNO(ADDR,N) ((intn)((ADDR)->offset >> N)) + +static hbool_t H5F_fam_access(const char *name, int mode, H5F_search_t *key); +static H5F_low_t *H5F_fam_open(const char *name, uintn flags, H5F_search_t *); +static herr_t H5F_fam_close(H5F_low_t *lf); +static herr_t H5F_fam_read(H5F_low_t *lf, const haddr_t *addr, size_t size, + uint8 *buf); +static herr_t H5F_fam_write(H5F_low_t *lf, const haddr_t *addr, size_t size, + const uint8 *buf); +static herr_t H5F_fam_flush(H5F_low_t *lf); + +const H5F_low_class_t H5F_LOW_FAM[1] = {{ + H5F_fam_access, /* access method */ + H5F_fam_open, /* open method */ + H5F_fam_close, /* close method */ + H5F_fam_read, /* read method */ + H5F_fam_write, /* write method */ + H5F_fam_flush, /* flush method */ + NULL, /* extend method */ +}}; + /*------------------------------------------------------------------------- * Function: H5F_fam_open @@ -495,13 +494,14 @@ H5F_fam_flush(H5F_low_t *lf) static hbool_t H5F_fam_access(const char *name, int mode, H5F_search_t *key /*out */ ) { - intn membno; - char member_name[4096]; - hbool_t status; + intn membno; + char member_name[4096]; + hbool_t status; + hbool_t ret_value = FALSE; FUNC_ENTER(H5F_fam_access, FAIL); - for (membno = 0; /*void */ ; membno++) { + for (membno=0; /*void*/; membno++) { sprintf(member_name, name, membno); status = H5F_low_access(H5F_LOW_DFLT, member_name, mode, 0 == membno ? key : NULL); @@ -513,18 +513,23 @@ H5F_fam_access(const char *name, int mode, H5F_search_t *key /*out */ ) * of the family. As long as we found the first member(s) the * family exists. */ - HRETURN(membno > 0 ? TRUE : FALSE); + ret_value = membno > 0 ? TRUE : FALSE; + break; + } else if (H5F_low_access(H5F_LOW_DFLT, member_name, F_OK, NULL)) { /* * The file exists but didn't have the write access permissions. */ - HRETURN(FALSE); + ret_value = FALSE; + break; + } else { /* * The file doesn't exist because we got to the end of the * family. */ - HRETURN(TRUE); + ret_value = TRUE; + break; } } if (status < 0) { @@ -533,5 +538,5 @@ H5F_fam_access(const char *name, int mode, H5F_search_t *key /*out */ ) } } - FUNC_LEAVE(TRUE); + FUNC_LEAVE(ret_value); } |