From 59b0c7a9505da5a90eddd510d0dcbab7cab2cdc8 Mon Sep 17 00:00:00 2001 From: Neil Fortner Date: Thu, 15 Dec 2016 17:30:25 -0600 Subject: Add support for leading "/" in path names, to denote absolute paths even if the starting object isn't the file or root group. --- src/H5VLdaosm.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/H5VLdaosm.c b/src/H5VLdaosm.c index 0c304b3..88611cd 100644 --- a/src/H5VLdaosm.c +++ b/src/H5VLdaosm.c @@ -1398,16 +1398,25 @@ H5VL_daosm_group_traverse(H5VL_daosm_obj_t *obj, const char *path, HDassert(path); HDassert(obj_name); + /* Initialize obj_name */ + *obj_name = path; + /* Open starting group */ - if(obj->type == H5I_GROUP) - grp = (H5VL_daosm_group_t *)obj; - else + if((*obj_name)[0] == '/') { grp = obj->file->root_grp; + (*obj_name)++; + } /* end if */ + else { + if(obj->type == H5I_GROUP) + grp = (H5VL_daosm_group_t *)obj; + else if(obj->type == H5I_FILE) + grp = obj->file->root_grp; + else + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "obj not a file or group") + } /* end else */ + grp->common.rc++; - /* Initialize obj_name */ - *obj_name = path; - /* Search for '/' */ next_obj = strchr(*obj_name, '/'); @@ -1432,6 +1441,7 @@ H5VL_daosm_group_traverse(H5VL_daosm_obj_t *obj, const char *path, next_obj = strchr(*obj_name, '/'); } /* end while */ + /* Set return value */ ret_value = grp; done: -- cgit v0.12