automake: Limitations on File Names
1
1 27.4 Limitations on File Names
1 ==============================
1
1 Automake attempts to support all kinds of file names, even those that
1 contain unusual characters or are unusually long. However, some
1 limitations are imposed by the underlying operating system and tools.
1
1 Most operating systems prohibit the use of the null byte in file
1 names, and reserve ‘/’ as a directory separator. Also, they require
1 that file names are properly encoded for the user’s locale. Automake is
1 subject to these limits.
1
1 Portable packages should limit themselves to POSIX file names. These
1 can contain ASCII letters and digits, ‘_’, ‘.’, and ‘-’. File names
1 consist of components separated by ‘/’. File name components cannot
1 begin with ‘-’.
1
1 Portable POSIX file names cannot contain components that exceed a
1 14-byte limit, but nowadays it’s normally safe to assume the
1 more-generous XOPEN limit of 255 bytes. POSIX limits file names to 255
1 bytes (XOPEN allows 1023 bytes), but you may want to limit a source
1 tarball to file names of 99 bytes to avoid interoperability problems
1 with old versions of ‘tar’.
1
1 If you depart from these rules (e.g., by using non-ASCII characters
1 in file names, or by using lengthy file names), your installers may have
1 problems for reasons unrelated to Automake. However, if this does not
1 concern you, you should know about the limitations imposed by Automake
1 itself. These limitations are undesirable, but some of them seem to be
1 inherent to underlying tools like Autoconf, Make, M4, and the shell.
1 They fall into three categories: install directories, build directories,
1 and file names.
1
1 The following characters:
1
1 newline " # $ ' `
1
1 should not appear in the names of install directories. For example,
1 the operand of ‘configure’’s ‘--prefix’ option should not contain these
1 characters.
1
1 Build directories suffer the same limitations as install directories,
1 and in addition should not contain the following characters:
1
1 & @ \
1
1 For example, the full name of the directory containing the source
1 files should not contain these characters.
1
1 Source and installation file names like ‘main.c’ are limited even
1 further: they should conform to the POSIX/XOPEN rules described above.
1 In addition, if you plan to port to non-POSIX environments, you should
1 avoid file names that differ only in case (e.g., ‘makefile’ and
1 ‘Makefile’). Nowadays it is no longer worth worrying about the 8.3
1 limits of DOS file systems.
1