diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-04-14 16:44:46 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-04-14 16:44:46 (GMT) |
commit | b6fc6ede10fee24e9ef0a21df81cc181f6d7fec0 (patch) | |
tree | 66321165e4bd58a9fe3722a1a3baee2f835d0544 /src/H5Gstab.c | |
parent | 3f571b6b4499e09aa6db29cb389e1121624a081d (diff) | |
download | hdf5-b6fc6ede10fee24e9ef0a21df81cc181f6d7fec0.zip hdf5-b6fc6ede10fee24e9ef0a21df81cc181f6d7fec0.tar.gz hdf5-b6fc6ede10fee24e9ef0a21df81cc181f6d7fec0.tar.bz2 |
[svn-r346] Changes since 19980410
----------------------
./html/H5.format.html
./src/H5E.c
./src/H5Epublic.h
./src/H5F.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5Gprivate.h
./src/h5ls.c
./test/Makefile.in
Symbolic links are now supported. The ./test/links program
will create a `links.h5' file that demonstrates hard links,
soft links, dangling links, and recursive links. A symbolic
link is a symbol table entity and doesn't have an object
header. It's format is described in H5.format.hml.
./src/H5G.c
./src/H5Gpublic.h
./src/h5ls.c
Implemented H5Gstat() and H5Gget_linkval() as documented by
Quincey. The `H5G_type_t type' field of `H5G_stat_t' was
changed to `int type' because H5G_type_t was already used and
the `type' data type should be open-ended.
./src/H5Ffamily.c
Removed an incorrect diagnostic message.
./test/big.c
Added read/write calls to test partial I/O to big contiguous
datasets. With no arguments it writes to a dataset and prints
the list of points written which should be redirected to a
file. With an argument (the name of a file containing the
stdout of a run with no arguments) values are read from the
dataset. One would typically say `big >x && big x'.
Diffstat (limited to 'src/H5Gstab.c')
-rw-r--r-- | src/H5Gstab.c | 117 |
1 files changed, 60 insertions, 57 deletions
diff --git a/src/H5Gstab.c b/src/H5Gstab.c index be43215..b2fa9d2 100644 --- a/src/H5Gstab.c +++ b/src/H5Gstab.c @@ -1,9 +1,9 @@ /* * Copyright (C) 1997 National Center for Supercomputing Applications - * All rights reserved. + * All rights reserved. * * Programmer: Robb Matzke <matzke@llnl.gov> - * Friday, September 19, 1997 + * Friday, September 19, 1997 * */ #define H5G_PACKAGE @@ -16,31 +16,31 @@ #include <H5MMprivate.h> #include <H5Oprivate.h> -#define PABLO_MASK H5G_stab_mask -static hbool_t interface_initialize_g = FALSE; -#define INTERFACE_INIT NULL +#define PABLO_MASK H5G_stab_mask +static hbool_t interface_initialize_g = FALSE; +#define INTERFACE_INIT NULL /*------------------------------------------------------------------------- - * Function: H5G_stab_create + * Function: H5G_stab_create * - * Purpose: Creates a new empty symbol table (object header, name heap, - * and B-tree). The caller can specify an initial size for the - * name heap. The object header of the group is opened for - * write access. + * Purpose: Creates a new empty symbol table (object header, name heap, + * and B-tree). The caller can specify an initial size for the + * name heap. The object header of the group is opened for + * write access. * - * In order for the B-tree to operate correctly, the first - * item in the heap is the empty string, and must appear at - * heap offset zero. + * In order for the B-tree to operate correctly, the first + * item in the heap is the empty string, and must appear at + * heap offset zero. * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke - * matzke@llnl.gov - * Aug 1 1997 + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 1 1997 * * Modifications: * @@ -49,8 +49,8 @@ static hbool_t interface_initialize_g = FALSE; herr_t H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) { - size_t name; /*offset of "" name */ - H5O_stab_t stab; /*symbol table message */ + size_t name; /*offset of "" name */ + H5O_stab_t stab; /*symbol table message */ FUNC_ENTER(H5G_stab_create, FAIL); @@ -63,11 +63,11 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) /* Create symbol table private heap */ if (H5HL_create(f, init, &(stab.heap_addr)/*out*/)<0) { - HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create heap"); + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create heap"); } name = H5HL_insert(f, &(stab.heap_addr), 1, ""); if ((size_t)(-1)==name) { - HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't initialize heap"); + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't initialize heap"); } /* @@ -78,23 +78,25 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) /* Create the B-tree */ if (H5B_create(f, H5B_SNODE, NULL, &(stab.btree_addr) /*out */ ) < 0) { - HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create B-tree"); + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create B-tree"); } + /* * Create symbol table object header. It has a zero link count - * since nothing refers to it yet. The link count will be + * since nothing refers to it yet. The link count will be * incremented if the object is added to the group directed graph. */ if (H5O_create(f, 4 + 2 * H5F_SIZEOF_ADDR(f), self /*out */ ) < 0) { - HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create header"); + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create header"); } + /* * Insert the symbol table message into the object header and the symbol * table entry. */ - if (H5O_modify(self, H5O_STAB, H5O_NEW_MESG, H5O_FLAG_CONSTANT, &stab) < 0) { - H5O_close(self); - HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message"); + if (H5O_modify(self, H5O_STAB, H5O_NEW_MESG, H5O_FLAG_CONSTANT, &stab)<0) { + H5O_close(self); + HRETURN_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message"); } self->cache.stab.btree_addr = stab.btree_addr; self->cache.stab.heap_addr = stab.heap_addr; @@ -102,23 +104,24 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) FUNC_LEAVE(SUCCEED); } + /*------------------------------------------------------------------------- - * Function: H5G_stab_find + * Function: H5G_stab_find * - * Purpose: Finds a symbol named NAME in the symbol table whose - * description is stored in GRP_ENT in file F and returns its - * symbol table entry through OBJ_ENT (which is optional). + * Purpose: Finds a symbol named NAME in the symbol table whose + * description is stored in GRP_ENT in file F and returns its + * symbol table entry through OBJ_ENT (which is optional). * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke - * matzke@llnl.gov - * Aug 1 1997 + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 1 1997 * * Modifications: * @@ -126,10 +129,10 @@ H5G_stab_create(H5F_t *f, size_t init, H5G_entry_t *self/*out*/) */ herr_t H5G_stab_find(H5G_entry_t *grp_ent, const char *name, - H5G_entry_t *obj_ent /*out */ ) + H5G_entry_t *obj_ent/*out*/) { - H5G_bt_ud1_t udata; /*data to pass through B-tree */ - H5O_stab_t stab; /*symbol table message */ + H5G_bt_ud1_t udata; /*data to pass through B-tree */ + H5O_stab_t stab; /*symbol table message */ FUNC_ENTER(H5G_stab_find, FAIL); @@ -140,7 +143,7 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, /* set up the udata */ if (NULL == H5O_read(grp_ent, H5O_STAB, 0, &stab)) { - HRETURN_ERROR(H5E_SYM, H5E_BADMESG, FAIL, "can't read message"); + HRETURN_ERROR(H5E_SYM, H5E_BADMESG, FAIL, "can't read message"); } udata.operation = H5G_OPER_FIND; udata.name = name; @@ -148,29 +151,28 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, /* search the B-tree */ if (H5B_find(grp_ent->file, H5B_SNODE, &(stab.btree_addr), &udata) < 0) { - HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "not found"); + HRETURN_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "not found"); } - if (obj_ent) - *obj_ent = udata.ent; + if (obj_ent) *obj_ent = udata.ent; FUNC_LEAVE(SUCCEED); } /*------------------------------------------------------------------------- - * Function: H5G_stab_insert + * Function: H5G_stab_insert * - * Purpose: Insert a new symbol into the table described by GRP_ENT in - * file F. The name of the new symbol is NAME and its symbol - * table entry is OBJ_ENT. + * Purpose: Insert a new symbol into the table described by GRP_ENT in + * file F. The name of the new symbol is NAME and its symbol + * table entry is OBJ_ENT. * * Errors: * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke - * matzke@llnl.gov - * Aug 1 1997 + * Programmer: Robb Matzke + * matzke@llnl.gov + * Aug 1 1997 * * Modifications: * @@ -179,8 +181,8 @@ H5G_stab_find(H5G_entry_t *grp_ent, const char *name, herr_t H5G_stab_insert(H5G_entry_t *grp_ent, const char *name, H5G_entry_t *obj_ent) { - H5O_stab_t stab; /*symbol table message */ - H5G_bt_ud1_t udata; /*data to pass through B-tree */ + H5O_stab_t stab; /*symbol table message */ + H5G_bt_ud1_t udata; /*data to pass through B-tree */ FUNC_ENTER(H5G_stab_insert, FAIL); @@ -192,7 +194,7 @@ H5G_stab_insert(H5G_entry_t *grp_ent, const char *name, H5G_entry_t *obj_ent) /* initialize data to pass through B-tree */ if (NULL == H5O_read(grp_ent, H5O_STAB, 0, &stab)) { - HRETURN_ERROR(H5E_SYM, H5E_BADMESG, FAIL, "not a symbol table"); + HRETURN_ERROR(H5E_SYM, H5E_BADMESG, FAIL, "not a symbol table"); } udata.operation = H5G_OPER_INSERT; udata.name = name; @@ -201,8 +203,9 @@ H5G_stab_insert(H5G_entry_t *grp_ent, const char *name, H5G_entry_t *obj_ent) /* insert */ if (H5B_insert(grp_ent->file, H5B_SNODE, &(stab.btree_addr), &udata) < 0) { - HRETURN_ERROR(H5E_SYM, H5E_CANTINSERT, FAIL, "can't insert entry"); + HRETURN_ERROR(H5E_SYM, H5E_CANTINSERT, FAIL, "can't insert entry"); } + /* update the name offset in the entry */ obj_ent->name_off = udata.ent.name_off; FUNC_LEAVE(SUCCEED); |