The initial file name is determined by the name of the unit that the file
contains. The name is formed by taking the full expanded name of the
unit and replacing the separating dots with hyphens and
for all letters, except that a hyphen in the second character position is
replaced by a tilde if the first character is
a, i, g, or s.
The extension is
.ads for a
.adb for a body.
Krunching does not affect the extension, but the file name is shortened to
the specified length by following these rules:
As an example, consider the krunching of
our-strings-wide_fixed.adb to fit the name into 8 characters as required by some operating systems.
our-strings-wide_fixed 22 our strings wide fixed 19 our string wide fixed 18 our strin wide fixed 17 our stri wide fixed 16 our stri wide fixe 15 our str wide fixe 14 our str wid fixe 13 our str wid fix 12 ou str wid fix 11 ou st wid fix 10 ou st wi fix 9 ou st wi fi 8 Final file name: oustwifi.adb
These system files have a hyphen in the second character position. That is why normal user files replace such a character with a tilde, to avoid confusion with system file names.
As an example of this special rule, consider
ada-strings-wide_fixed.adb, which gets krunched as follows:
ada-strings-wide_fixed 22 a- strings wide fixed 18 a- string wide fixed 17 a- strin wide fixed 16 a- stri wide fixed 15 a- stri wide fixe 14 a- str wide fixe 13 a- str wid fixe 12 a- str wid fix 11 a- st wid fix 10 a- st wi fix 9 a- st wi fi 8 Final file name: a-stwifi.adb
Of course no file shortening algorithm can guarantee uniqueness over all
possible unit names, and if file name krunching is used then it is your
responsibility to ensure that no name clashes occur. The utility
gnatkr is supplied for conveniently determining the
krunched name of a file.