summaryrefslogtreecommitdiffstats
path: root/src/H5I.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5I.c')
-rw-r--r--src/H5I.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/H5I.c b/src/H5I.c
index 1973354..954a86b 100644
--- a/src/H5I.c
+++ b/src/H5I.c
@@ -925,9 +925,11 @@ done:
ssize_t
H5Iget_name(hid_t id, char *name /*out*/, size_t size)
{
- H5VL_object_t * vol_obj = NULL; /* Object stored in ID */
- H5VL_loc_params_t loc_params;
- ssize_t ret_value = -1; /* Return value */
+ H5VL_object_t * vol_obj = NULL; /* Object stored in ID */
+ H5VL_object_get_args_t vol_cb_args; /* Arguments to VOL callback */
+ H5VL_loc_params_t loc_params;
+ size_t obj_name_len = 0; /* Length of object's name */
+ ssize_t ret_value = -1; /* Return value */
FUNC_ENTER_API((-1))
H5TRACE3("Zs", "ixz", id, name, size);
@@ -940,11 +942,19 @@ H5Iget_name(hid_t id, char *name /*out*/, size_t size)
loc_params.type = H5VL_OBJECT_BY_SELF;
loc_params.obj_type = H5I_get_type(id);
+ /* Set up VOL callback arguments */
+ vol_cb_args.op_type = H5VL_OBJECT_GET_NAME;
+ vol_cb_args.args.get_name.buf_size = size;
+ vol_cb_args.args.get_name.buf = name;
+ vol_cb_args.args.get_name.name_len = &obj_name_len;
+
/* Retrieve object's name */
- if (H5VL_object_get(vol_obj, &loc_params, H5VL_OBJECT_GET_NAME, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL,
- &ret_value, name, size) < 0)
+ if (H5VL_object_get(vol_obj, &loc_params, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
HGOTO_ERROR(H5E_ID, H5E_CANTGET, (-1), "can't retrieve object name")
+ /* Set return value */
+ ret_value = (ssize_t)obj_name_len;
+
done:
FUNC_LEAVE_API(ret_value)
} /* end H5Iget_name() */