diff options
author | Allen Byrne <50328838+byrnHDF@users.noreply.github.com> | 2023-08-02 16:28:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-02 16:28:08 (GMT) |
commit | 89b4afd4b317c5131cbc8607c99d21b369d050eb (patch) | |
tree | fb2e6c99d110a7c6e40e0671aa2f24d5e96a7060 /src/H5PLint.c | |
parent | b78729638bf69dca9e0dd86eddd530d5fc1aef40 (diff) | |
download | hdf5-89b4afd4b317c5131cbc8607c99d21b369d050eb.zip hdf5-89b4afd4b317c5131cbc8607c99d21b369d050eb.tar.gz hdf5-89b4afd4b317c5131cbc8607c99d21b369d050eb.tar.bz2 |
Fix loading plugin fails with missing directory GH issue #3248 (#3324)
Diffstat (limited to 'src/H5PLint.c')
-rw-r--r-- | src/H5PLint.c | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/H5PLint.c b/src/H5PLint.c index e29bc10..1b58be1 100644 --- a/src/H5PLint.c +++ b/src/H5PLint.c @@ -258,11 +258,17 @@ H5PL_load(H5PL_type_t type, const H5PL_key_t *key) /* If not found, try iterating through the path table to find an appropriate plugin */ if (!found) if (H5PL__find_plugin_in_path_table(&search_params, &found, &plugin_info) < 0) - HGOTO_ERROR(H5E_PLUGIN, H5E_CANTGET, NULL, "search in path table failed") + HGOTO_ERROR(H5E_PLUGIN, H5E_CANTGET, NULL, + "can't find plugin in the paths either set by HDF5_PLUGIN_PATH, or default location, " + "or set by H5PLxxx functions") /* Set the return value we found the plugin */ if (found) ret_value = plugin_info; + else + HGOTO_ERROR(H5E_PLUGIN, H5E_NOTFOUND, NULL, + "can't find plugin. Check either HDF5_PLUGIN_PATH, default location, " + "or path set by H5PLxxx functions") done: FUNC_LEAVE_NOAPI(ret_value) @@ -273,9 +279,31 @@ done: * * Purpose: Opens a plugin. * - * The success parameter will be set to TRUE and the plugin_info - * parameter will be filled in on success. Otherwise, they - * will be FALSE and NULL, respectively. + * `path` specifies the path to the plugin library file. + * + * `type` specifies the type of plugin being searched for and + * will be used to verify that a loaded plugin matches the + * type requested. H5PL_TYPE_NONE may be passed, in which case + * no plugin type verification is performed. This is most + * useful when iterating over available plugins without regard + * to their types. + * + * `key` specifies the information that will be used to find a + * specific plugin. For filter plugins, this is typically an + * integer identifier. For VOL connectors, this + * is typically either an integer identifier or a name string. + * After a plugin has been opened, this information will be + * compared against the relevant information provided by the + * plugin to ensure that the plugin is a match. If + * H5PL_TYPE_NONE is provided for `type`, then `key` should be + * NULL. + * + * On successful open of a plugin, the `success` parameter + * will be set to TRUE and the `plugin_type` and `plugin_info` + * parameters will be filled appropriately. On failure, the + * `success` parameter will be set to FALSE, the `plugin_type` + * parameter will be set to H5PL_TYPE_ERROR and the + * `plugin_info` parameter will be set to NULL. * * Return: SUCCEED/FAIL * |