---
name: "make_relative_filename"
section: "3alleg4"
platform: "linux"
package: "allegro4-doc"
version: "2:4.4.3.1-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/make_relative_filename/3alleg4"
---

# make\_relative\_filename(3alleg4)

Tries to make a relative filename from absolute path and filename. Allegro game programming library.

## NAME

make\_relative\_filename - Tries to make a relative filename from absolute path and filename. Allegro game programming library.

## SYNOPSIS

**#include \<allegro.h\>**

**char \*make\_relative\_filename(char \*dest, const char \*path, const char \*filename, int size);**

## DESCRIPTION

Attempts to make a relative filename from an absolute path and an absolute filename, storing at most \`size' bytes into the \`dest' buffer. This function won't work if the paths are not canonical under the current platform (see canonicalize\_filename()). Also, \`dest' cannot be used as input value for \`path' or \`filename'. Example:

```
   char base[] = "/long/absolute/path/program.exe";
   char user_input[] = "/nice/and/short.txt";
   ...
   make_relative_filename(buf, base, user_input, sizeof(buf));
   /* Under Unix buf would contain:
      ../../../nice/and/short.txt */
```

## RETURN VALUE

Returns a copy of the \`dest' parameter if it succeeds or NULL if it fails (eg. under DOS, one path starts with "C:\\" and another with "A:\\").

## SEE ALSO

**make\_absolute\_filename**(3alleg4), **is\_relative\_filename**(3alleg4), **canonicalize\_filename**(3alleg4)
