---
name: "canonicalize_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/canonicalize_filename/3alleg4"
---

# canonicalize\_filename(3alleg4)

Converts any filename into its canonical form. Allegro game programming library.

## NAME

canonicalize\_filename - Converts any filename into its canonical form. Allegro game programming library.

## SYNOPSIS

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

**char \*canonicalize\_filename(char \*dest, const char \*filename, int size);**

## DESCRIPTION

Converts any filename into its canonical form, i.e. the minimal absolute filename describing the same file and fixing incorrect forward/backward slashes for the current platform, storing at most \`size' bytes into the \`dest' buffer. You can use the same buffer both as input and output because Allegro internally works on a copy of the input before touching \`dest'. Example:

```
   char buf[256];
   ...
   canonicalize_filename(buf, "~/../s22/..\\t3st///hi.c",
                         sizeof(buf));
   /* Running this under Unix would
      return: /home/t3st/hi.c */
```

Note that this function won't work as expected if the path to canonicalize comes from another platform (eg. a "c:\\something" path will canonicalize into something really wrong under Unix: "/current/path/c:/something").

## RETURN VALUE

Returns a copy of the \`dest' parameter.

## SEE ALSO

**fix\_filename\_case**(3alleg4), **fix\_filename\_slashes**(3alleg4)
