---
name: "hxsetdir"
section: "3hdf"
platform: "linux"
package: "libhdf4g-dev"
version: "4.0.2-6"
release: "Debian 2.0 (Hamm)"
platforms: ["linux"]
url: "https://new.carta.tech/hxsetdir"
---

# hxsetdir(3hdf)

- intn HXsetdir(const char \*dir)

  *dir*\
   	IN: directory for locating an external file

- Purpose

  Set the directory variable for locating an external file

- Return value

  Return SUCCEED if no error, else FAIL.

- Description

  HXsetdir sets the directory variable for locating an external file  according to *dir* which may contain multiple directories separated by verticle bars (e.g., "dir1\|dir2"). The content of *dir* is copied into private memory of the HDF library. If *dir* is NULL, the directory variable is unset. If HXsetdir encounters any error, the directory variable is not changed.

  By default, the HDF library locates the external file just like the [open(2)](/open/2.md) call. It also searches for the external file in the directories specified by the user environment variable $HDFEXTDIR (if defined) and the directory variable set by HXsetdir(). The searching precedence is directory variable (if set), then $HDXEXTDIR, then just like open().

  The searching differs if the external filename is an absolute pathname, i.e., starting with a slash (/). HDF will try open() first.  If open() fails and if  $HDFEXTDIR is defined or the directory variable is set via HXsetdir(), HDF will remove all directory components of the absolute pathname (e.g., /usr/groupA/projectB/Data001 becomes Data001) and search for that filename with the strategy noted in the above paragraph.

- Examples

  Assume the following files exist,

  ```
  	/DataVault/ProjectB/datadir/data001.clean
  	Mydata/datadir/data001
  and
  	HXsetdir("/DataVault/ProjectB")
  	$HDFEXTDIR is "Mydata|Mydata/datadir"
  ```

  For each external filename on the left, HDF will open the file on the right,

  | | |
  | --- | --- |
  | External Filename | HDF opens file |
  |  |
  | datadir/data001 | Mydata/datadir/data001 |
  | datadir/data001.clean | /DataVault/ProjectB/datadir/data001.clean |
  | /usr/groupA/ProjectB/data001 | Mydata/datadir/data001 |

- FORTRAN

  integer function hxsdir(dir)\
   character\*(\*)   dir
