diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2016-12-15 23:30:25 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2016-12-15 23:30:25 (GMT) |
commit | 59b0c7a9505da5a90eddd510d0dcbab7cab2cdc8 (patch) | |
tree | b06bb76213b0e125605bdf67b403c8e3f96c5afe /src/H5VLdaosm.c | |
parent | 54f7af58851b777e61ecad5e7f5c6e0b468cd665 (diff) | |
download | hdf5-59b0c7a9505da5a90eddd510d0dcbab7cab2cdc8.zip hdf5-59b0c7a9505da5a90eddd510d0dcbab7cab2cdc8.tar.gz hdf5-59b0c7a9505da5a90eddd510d0dcbab7cab2cdc8.tar.bz2 |
Add support for leading "/" in path names, to denote absolute paths even
if the starting object isn't the file or root group.
Diffstat (limited to 'src/H5VLdaosm.c')
-rw-r--r-- | src/H5VLdaosm.c | 22 |
1 files 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: |