summaryrefslogtreecommitdiffstats
path: root/src/H5Lexternal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Lexternal.c')
-rw-r--r--src/H5Lexternal.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/H5Lexternal.c b/src/H5Lexternal.c
index 17bb5e1..ce3ded3 100644
--- a/src/H5Lexternal.c
+++ b/src/H5Lexternal.c
@@ -28,6 +28,7 @@
#include "H5MMprivate.h" /* Memory management */
#include "H5Opublic.h" /* File objects */
#include "H5Pprivate.h" /* Property lists */
+#include "H5VLnative.h" /* Native Plugin */
#include "H5VLprivate.h" /* Virtual Object Layer */
static hid_t H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
@@ -441,6 +442,19 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
if((ext_obj = H5O_open_name(&root_loc, obj_name, lapl_id, FALSE)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
+ /* get the native object from the ID created by the object header and create
+ a "VOL object" ID */
+ {
+ void *temp_obj = NULL;
+ H5I_type_t obj_type;
+ obj_type = H5I_get_type(ext_obj);
+ if(NULL == (temp_obj = H5I_remove(ext_obj)))
+ HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
+ /* Get an atom for the datatype */
+ if((ext_obj = H5VL_native_register(obj_type, temp_obj, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register datatype")
+ }
+
/* Set return value */
ret_value = ext_obj;