---
name: "rel2abs"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/rel2abs"
---

# rel2abs(3)

make an absolute path name from a relative path name

## NAME

**rel2abs** – make an absolute path name from a relative path name

## SYNOPSIS

library “libpathconv”

*char \**\

**rel2abs**(*const char \*path*, *const char \*base*, *char \*result*, *size\_t size*);

## DESCRIPTION

The **rel2abs**() function makes an absolute path name from a relative path name *path* based on a directory *base* and copies the resulting path name into the memory referenced by *result*. The *result* argument must refer to a buffer capable of storing at least *size* character

The resulting path name may include symbolic links. **abs2rel**() doesn't check whether or not any path exists.

## RETURN VALUES

The **rel2abs**() function returns absolute path name on success. If an error occurs, it returns NULL.

## EXAMPLES

    char result\[MAXPATHLEN\];\
     char \*path = rel2abs("../../src/sys", "/usr/local/lib", result, MAXPATHLEN);

yields:

    path == "/usr/src/sys"

Similarly,

    path1 = rel2abs("src/sys", "/usr", result, MAXPATHLEN);\
     path2 = rel2abs(".", "/usr/src/sys", result, MAXPATHLEN);

yields:

    path1 == "/usr/src/sys"\
     path2 == "/usr/src/sys"

## ERRORS

The **rel2abs**() function may fail and set the external variable *errno* to indicate the error.

- \[EINVAL\]

  The *base* directory isn't an absolute path name or the *size* argument is zero.

- \[ERANGE\]

  The *size* argument is greater than zero but smaller than the length of the pathname plus 1

## SEE ALSO

[abs2rel(3)](/abs2rel/3.md)

## AUTHORS

Shigio Yamaguchi ⟨*shigio@tamacom.com*⟩
