Last modified: 11 January 2010
Name: H5Lunpack_elink_val
Signature:
  herr_t `H5Lunpack_elink_val`( char *`ext_linkval`, size_t `link_size`, unsigned *`flags`, const char **`filename`, const char **`obj_path` )

Purpose:
  Decodes external link information.

Description:
  `H5Lunpack_elink_val` decodes the external link information returned by `H5Lget_val` in the `ext_linkval` buffer.

  `ext_linkval` should be the buffer set by `H5Lget_val` and will consist of two NULL-terminated strings, the filename and object path, one after the other.

  Given this buffer, `H5Lunpack_elink_val` creates pointers to the filename and object path within the buffer and returns them in `filename` and `obj_path`, unless they are passed in as NULL.

  `H5Lunpack_elink_val` requires that `ext_linkval` contain a concatenated pair of null-terminated strings, so use of this function on a string that is not an external link `udata` buffer may result in a segmentation fault. This failure can be avoided by adhering to the following procedure:

  1. Call `H5Lget_info` to get the link type and the size of the link value.
  2. Verify that the link is an external link, i.e., that its link type is `H5L_TYPE_EXTERNAL`.
  3. Call `H5Lget_val` to get the link value.
  4. Call `H5Lunpack_elink_val` to unpack that value.

Parameters:

  const char *`ext_linkval` | IN: Buffer containing external link information
  size_t `link_size` | IN: Size, in bytes, of the `ext_linkval` buffer
  unsigned *`flags` | OUT: External link flags, packed as a bitmap (Reserved as a bitmap for flags; no flags are currently defined, so the only valid value is 0.)
  const char **`filename` | OUT: Returned filename
  const char **`obj_path` | OUT: Returned object path, relative to `filename`

Returns:
  Returns a non-negative value if successful; otherwise returns a negative value.

Fortran90 Interface:
  None.

History:

  Release | C
  1.8.0 | Function introduced in this release.