Filename mangling


The process of filename mangling, in computing, involves a translation of the file name for compatibility at the operating system level. It occurs when a filename on a filesystem appears in a form incompatible with the operating system accessing it. Such mangling occurs, for example, on computer networks when a Windows machine attempts to access a file on a Unix server and that file has a filename which includes characters not valid in Windows.

FAT Derivative Filesystem

Legacy support under VFAT

A common example of name mangling occurs on VFAT file systems on versions of Windows from Windows 95 onwards. The VFAT specification allows Long File Names. For backwards-compatibility with MS-DOS and older Windows software, which recognizes filenames of a maximum of 11 characters in length with 8.3 format, files with LFNs get stored on disk in 8.3 format, with the long file name stored elsewhere on the disk.
Normally, when using compatible Windows programs which use standard Windows methods of reading the disk, the I/O subsystem returns the long filename to the program — however, if an old DOS application or an old Windows application tries to address the file, it will use the older, 8.3-only APIs, or work at a lower level and perform its own disk access, which results in the return of an 8.3 filename. In this case, the filenames become mangled by taking the first six non-space characters in the filename and adding a tilde and then a number to ensure the uniqueness of the 8.3 filename on the disk. This mangling scheme can turn Program Files into PROGRA~1. This technique persists today when people use DOSBox to play classic DOS games or use Windows 3.1 in conjunction to play Win16 games on 64-bit Windows.

Unix Filesystems

Unix file names can contain colons or backslashes, whereas Windows interprets such characters in other ways. Accordingly, software could mangle the Unix file "Notes: 11\04\03" as "Notes_ 11-04-03" to enable Windows software to remotely access the file. Other Unix-like systems, such as Samba on Unix, use different mangling systems to map long filenames to DOS-compatible filenames.

Mac OS

's Finder displays instances of ":" in file and directory names with a "/". This is because the classic Mac OS used the ":" character internally as a path separator. Listing these files or directories using a terminal emulator displays a ":" rather than the "/" character, though.