getconfig is a programmatic
interface that is used by the XFree86 server to get configuration information
about video hardware when operating without an XF86Config file.

This implementation
of getconfig is written in perl. It processes rules from meta-configuration
files. All meta-configuration files have a .cfg suffix.

Lines starting with
a pound-sign (#) are comments, and are ignored. Blank lines that consist
only of white space are also treated as comments and ignored.

The first
non-comment line must be a signature string followed by the file format
version number. The signature string is

"XFree86 Project getconfig rules file. Version: "

The currently defined version is "1.0". Files that do not have the correct
signature string are ignored.

The remaining non-comment lines define rules.
The start of a new rule is indicated by a line with no leading white space.
Subsequent lines making up a rule must be indented with white space. Logical
lines within a rule may be split over multiple physical lines by using
the usual continuation convention ('\' at the end of the line). The first
logical line of each rule is a perl expression. It may be any valid perl
expression whose evaluated (with 'eval') result may be used as the argument
to a perl 'if' statement. The second logical line should be the name of the
XFree86 video driver to use when the rule is true, and subsequent logical
lines of each rule, if present, are additional configuration output for
the video device's XF86ConfigDevice section. The driver name and additional
lines of configuration information are written to standard output when
the rule is chosen as the successful rule.

Pseudo rules consisting of perl
expressions may be present in the file for the purpose of defining custom
perl variables or setting the weight to use for the following rules. Pseudo
rules are rules that consist of a single logical line only, and they are
never candidates themselves for the successful rule.

Several perl variables
are pre-defined, and may be used within rules. They include:

The $weight variable determines the weight of the rules as they are processed.
The weight for subsequent rules may be set with a pseudo rule that sets
or changes the value of $weight. The default weight, and the weight used
for built-in rules is 500. The meta-configuration files are processed in
an unpredictable order. The weighting of the rules is used to determine
their relative priority

After processing all of the rules, both built-in
and those read from the meta-configuration files, the getconfig program
chooses as the successful rule the last and highest weighted rule that
evaluates to true.