---
name: "make_relative_filename"
section: "3alleg"
platform: "linux"
package: "liballegro-doc"
version: "2:4.2.2-2.2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/make_relative_filename"
---

# make\_relative\_filename(3alleg)

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**(3alleg)](/make_absolute_filename/3alleg.md), [**is\_relative\_filename**(3alleg)](/is_relative_filename/3alleg.md), [**canonicalize\_filename**(3alleg)](/canonicalize_filename/3alleg.md)
