Page tree









Determines whether an HDF5 path is valid and, optionally, whether the path resolves to an HDF5 object


H5LT_PATH_VALID (loc_id, path, check_object_valid)


htri_t H5LTpath_valid ( hid_t loc_id, const char *path, hbool_t check_object_valid)

SUBROUTINE h5ltpath_valid_f(loc_id, path, check_object_valid, path_valid, &
   INTEGER(HID_T)  , INTENT(IN)  :: loc_id       ! An identifier of an object 
                                                 ! in the file
   CHARACTER(LEN=*), INTENT(IN)  :: path         ! Path to the object to check, 
                                                 ! relative to loc_id
   LOGICAL         , INTENT(IN)  :: check_object_valid  
                                                 ! Indicates whether to determine 
                                                 ! whether final component of path
                                                 ! resolves to an object 
   LOGICAL         , INTENT(OUT) :: path_valid   ! Object status
   INTEGER         , INTENT(OUT) :: errcode      ! Error code: 0 on success 
                                                 ! and -1 on failure
END SUBROUTINE h5ltpath_valid_f

hid_t loc_idIN: An identifier of an object in the file
const char *pathIN: The path to the object to check 
Links in path may be of any type
hbool_t check_object_valid   IN: If TRUE, determine whether the final component of path resolves to an object; if FALSE, do not check


H5LT_PATH_VALID checks the validity of path relative to the identifier of an object, loc_id. Optionally, check_object_valid can be set to determine whether the final component of path resolves to an HDF5 object; if not, the final component is a dangling link.

The meaning of the function’s return value depends on the value of check_object_valid: 
If check_object_valid is set to FALSE  H5LT_PATH_VALID will check all links in path to verify that they exist. If all the links in path exist, the function will return TRUE; otherwise the function will return FALSE.

If check_object_valid is set to TRUE,   H5LT_PATH_VALID will first check the links in path, as described above. If all the links exist, check_object_valid will then determine whether the final component of path resolves to an actual HDF5 object. H5LT_PATH_VALID will return TRUE if all the links in path exist and the final component resolves to an actual object; otherwise, it will return FALSE.

path can be any one of the following:

  • An absolute path, which starts with a slash ( / ) indicating the file’s root group, followed by the members
  • A relative path with respect to loc_id
  • A dot ( . ), if loc_id is the object identifier for the object itself

If path is an absolute path, then loc_id can be an identifier for any object in the file as it is used only to identify the file. If path is a relative path, then loc_id must be a file or a group identifier.

Note on Behavior Change:

The behavior of  H5LT_PATH_VALID was changed in the 1.10.0 release in the case where the root group, “/”, is the value of path. This change is described below: 

  1. Let loc_id denote a valid HDF5 file identifier, and let check_object_valid be set to true or false. A call to  H5LT_PATH_VALID with arguments loc_id, “/”, and check_object_valid returns a positive value; in other words,H5LTpath_valid(loc_id, "/", check_object_valid) returns a positive value. In HDF5 version 1.8.16, this function returns 0.
    Let ‘root’ denote a valid HDF5 group identifier that refers to the root group of an HDF5 file, and let check_object_valid be set to true or false. A call to H5LT_PATH_VALID with arguments ‘root’, “/”, and check_object_valid returns a positive value; in other words, H5LTpath_valid(root, "/", check_object_valid)returns a postive value. In HDF5 version 1.8.16, this function returns 0.


Upon success:

If check_object_valid is set to FALSE

Returns TRUE if the path is valid; otherwise returns FALSE.

If check_object_valid is set to TRUE

Returns TRUE if the path is valid and resolves to an HDF5 object; otherwise returns FALSE.

Upon error, returns a negative value.


hl / test / test_lite.c [2089:2090]
 1.10/master  HDFFV/hdf5  Copy
  if( (path_valid = H5LTpath_valid(file_id, "/G1/G2/G5", TRUE)) != TRUE)
    goto out;

hl / fortran / test / tstlite.F90 [1569:1573]
 1.10/master  HDFFV/hdf5  Copy
    CALL h5ltpath_valid_f(file_id, chr_exact, .TRUE., path_valid, errcode)
       PRINT *, 'error in h5ltpath_valid_f'

Release    Change
1.10.0Function behavior changed in this release. See the “Note on Behavior Change” section above.

--- Last Modified: January 10, 2020 | 11:46 AM