Jump to content

Filename mangling

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by McGeddon (talk | contribs) at 10:16, 22 November 2016 (split examples out into prose paragraphs; add some filename examples for clarity). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The process of filename mangling, in computing, involves a re-writing 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.

Probably the best-known example of name mangling occurs on VFAT file systems on versions of Windows from Windows 95 onwards. The VFAT specification allows Long File Names (LFNs). 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 (i.e.: an eight-letter filename, a dot and a three-letter extension, such as autoexec.bat), files with LFNs get stored on disk in 8.3 format (longfilename.txt becoming longfi~1.txt), 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 (for example) Program Files into PROGRA~1. This tradition continues 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 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 (although Samba administrators can configure this behavior in the config file).[1]

macOS'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.

References

  1. ^ Eckstein, Robert; David Collier-Brown; Peter Kelly (November 1999). "5.4 Name Mangling and Case". Using Samba (1st ed.). O'Reilly & Associates, Inc. Retrieved 2009-10-23. {{cite book}}: Cite has empty unknown parameters: |lastn=, |laydate=, |separator=, |editorn-link=, |nopp=, |editorn-last=, |trans_title=, |laysummary=, |editorn-first=, |authorn-link=, |trans_chapter=, |chapterurl=, |editorn=, |lastauthoramp=, and |firstn= (help)