[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11. File Name Krunching Using gnatkr

This chapter discusses the method used by the compiler to shorten the default file names chosen for Ada units so that they do not exceed the maximum length permitted. It also describes the gnatkr utility that can be used to determine the result of applying this shortening.

11.1 About gnatkr  
11.2 Using gnatkr  
11.3 Krunching Method  
11.4 Examples of gnatkr Usage  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.1 About gnatkr

The default file naming rule in GNAT is that the file name must be derived from the unit name. The exact default rule is as follows:

The reason for this exception is to avoid clashes with the standard names for children of System, Ada, Interfaces, and GNAT, which use the prefixes s- a- i- and g- respectively.

The -gnatknn switch of the compiler activates a "krunching" circuit that limits file names to nn characters (where nn is a decimal integer). For example, using OpenVMS, where the maximum file name length is 39, the value of nn is usually set to 39, but if you want to generate a set of files that would be usable if ported to a system with some different maximum file length, then a different value can be specified. The default value of 39 for OpenVMS need not be specified.

The gnatkr utility can be used to determine the krunched name for a given file, when krunched to a specified maximum length.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2 Using gnatkr

The gnatkr command has the form

 
   $ gnatkr name [length]

name can be an Ada name with dots or the GNAT name of the unit, where the dots representing child units or subunit are replaced by hyphens. The only confusion arises if a name ends in .ads or .adb. gnatkr takes this to be an extension if there are no other dots in the name and the whole name is in lowercase.

length represents the length of the krunched name. The default when no argument is given is 8 characters. A length of zero stands for unlimited, in other words do not chop except for system files which are always 8.

The output is the krunched name. The output has an extension only if the original argument was a file name with an extension.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.3 Krunching Method

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 using lowercase 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 specification and .adb for a body. Krunching does not affect the extension, but the file name is shortened to the specified length by following these rules:

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 program gnatkr is supplied for conveniently determining the krunched name of a file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.4 Examples of gnatkr Usage

 
   $ gnatkr very_long_unit_name.ads      --> velounna.ads
   $ gnatkr grandparent-parent-child.ads --> grparchi.ads
   $ gnatkr Grandparent.Parent.Child     --> grparchi
   $ gnatkr very_long_unit_name.ads/count=6    --> vlunna.ads
   $ gnatkr very_long_unit_name.ads/count=0    --> very_long_unit_name.ads


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Tom Bennet on August, 25 2000 using texi2html