# US 6,725,367 B2 · Methods and systems for constructing and interpreting hierarchical configuration files

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 6,725,367 B2
- Document ID: US6725367B2
- Status: Granted
- Kind: B2
- Application number: 09/772,037
- Filed: 2001-01-29
- Published: 2002-08-01
- Granted: 2004-04-20
- Earliest claimed: 2001-01-29
- Assignees: Microsoft Corporation
- Inventors: Conor P. Morrison; Sivaprasad V. Padisetty
- Web page: https://patentgrep.com/patent/US6725367B2

## CPC

- G06F 9/44505: {Configuring for program initiating, e.g. using registry, configuration files}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A configuration system is disclosed that applies rules of precedence to evaluate parameters in the context of multiple sections within a configuration file and in the context of multiple configuration files. The system brings together multiple sections and multiple files into a unified whole. The precedential order of sections and files is set by a user and special section names can be used to override default precedential rules. If a parameter is set multiple times at different levels in the hierarchy of belonging, its final value reflects the value set at the level most closely concerned with the setting of the parameter. The value of a parameter can be set from an environmental variable or from the value of another parameter. If a parameter's value depends upon the value of another parameter, that second parameter is recursively evaluated using the same precedential rules.

## Claims

### Claim 1

A method for setting a first parameter's value based on at least one initialization file, the at least one initialization file containing sections, at least one of the sections containing a parameter/value pair, the method comprising:
selecting sections of the at least one initialization file;
specifying an order of precedence among the selected sections of the at least one initialization file; and
setting the first parameter's value to a value in a parameter/value pair in a selected section having the highest specified precedence of those selected sections that contain a parameter/value pair containing the first parameter.

### Claim 2 (depends on 1)

The method of claim 1 wherein selecting comprises selecting at least one section of the at least one initialization file based on a name of the at least one section.

### Claim 3 (depends on 1)

The method of claim 1 wherein specifying the order of precedence of at least one selected section is based on a name of the at least one selected section.

### Claim 4 (depends on 1)

The method of claim 1 wherein specifying the order of precedence of at least one selected section is based on a location in the at least one initialization file of the at least one selected section.

### Claim 5 (depends on 1)

The method of claim 1 wherein a value in at least one parameter/value pair comprises a name of an environmental variable.

### Claim 6 (depends on 1)

The method of claim 1 wherein a value in at least one parameter/value pair comprises a name of a second parameter.

### Claim 7 (depends on 6)

The method of claim 6 wherein the first parameter is set to a value that comprises the name of the second parameter, the method further comprising:
setting a value of the second parameter to a value in a parameter/value pair in a selected section having the highest specified precedence of those selected sections that contain a parameter/value pair containing the second parameter; and
substituting the value of the second parameter for the name of the second parameter in the value of the first parameter.

### Claim 8

A computer-readable medium containing instructions for performing a method for setting a first parameter's value based on at least one initialization file, the at least one initialization file containing sections, at least one of the sections containing a parameter/value pair, the method comprising:
selecting sections of the at least one initialization file;
specifying an order of precedence among the selected sections of the at least one initialization file; and
setting the first parameter's value to a value in a parameter/value pair in a selected section having the highest specified precedence of those selected sections that contain a parameter/value pair containing the first parameter.

### Claim 9

A system for setting a first parameter's value, the system comprising:
at least one initialization file, the at least one initialization file containing sections, at least one of the sections containing a parameter/value pair;
a first rule selecting sections of the at least one initialization file;
a second rule specifying an order of precedence among the selected sections of the at least one initialization file; and
a processing system that applies the second rule to sections selected by the first rule to set the first parameter's value to a value in a parameter/value pair in a selected section having the highest specified precedence of those selected sections that contain a parameter/value pair containing the first parameter.

### Claim 10 (depends on 9)

The system of claim 9 wherein the first rule selects at least one section of the at least one initialization file based on a name of the at least one section.

### Claim 11 (depends on 9)

The system of claim 9 wherein the second rule specifies the order of precedence of at least one selected section based on a name of the at least one selected section.

### Claim 12 (depends on 9)

The system of claim 9 wherein the second rule specifies the order of precedence of at least one selected section based on a location in the at least one initialization file of the at least one selected section.

### Claim 13 (depends on 9)

The system of claim 9 wherein a value in at least one parameter/value pair comprises a name of an environmental variable.

### Claim 14 (depends on 9)

The system of claim 9 wherein a value in at least one parameter/value pair comprises a name of a second parameter.

### Claim 15

A computer-readable medium containing instructions for implementing a system for setting a first parameter's value, the system comprising:
at least one initialization file, the at least one initialization file containing sections, at least one of the sections containing a parameter/value pair;
a first rule selecting sections of the at least one initialization file;
a second rule specifying an order of precedence among the selected sections of the at least one initialization file; and
a processing system that applies the second rule to sections selected by the first rule to set the first parameter's value to a value in a parameter/value pair in a selected section having the highest specified precedence of those selected sections that contain a parameter/value pair containing the first parameter.

### Claim 16

A method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files;
copying an input initialization file of the at least two input initialization files into the resultant initialization file; and
for each input initialization file of the at least two input initialization files other than the input initialization file copied to the resultant initialization file,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair in a corresponding section in an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into a corresponding section in the resultant initialization file and, if the parameter in the parameter/value pair corresponds to a parameter in another parameter/value pair in the corresponding section in the resultant initialization file, deleting the other parameter/value pair.

### Claim 17 (depends on 16)

The method of claim 16 wherein the order of precedence is specified in accordance with each input initialization file's level in a hierarchy of belonging of a configurable entity.

### Claim 18 (depends on 17)

The method of claim 17 wherein the configurable entity is in the set: computer operating system, application program.

### Claim 19 (depends on 17)

The method of claim 17 wherein at least one level in the configurable entity's hierarchy of belonging is in the set: global, network domain, cluster, user, machine, application run.

### Claim 20 (depends on 16)

The method of claim 16 wherein copying copies the input initialization file with the highest precedence of the input initialization files.

### Claim 21

A computer-readable medium containing instructions for performing a method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files;
copying an input initialization file of the at least two input initialization files into the resultant initialization file; and
for each input initialization file of the at least two input initialization files other than the input initialization file copied to the resultant initialization file,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair in a corresponding section in an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into a corresponding section in the resultant initialization file and, if the parameter in the parameter/value pair corresponds to a parameter in another parameter/value pair in the corresponding section in the resultant initialization file, deleting the other parameter/value pair.

### Claim 22

A method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files;
copying an input initialization file of the at least two input initialization files into the resultant initialization file; and
for each input initialization file of the at least two input initialization files other than the input initialization file copied to the resultant initialization file,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair copied into a corresponding section of the resultant initialization file from an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into the corresponding section in the resultant initialization file and, if the parameter in the parameter/value pair corresponds to a parameter in another parameter/value pair in the corresponding section in the resultant initialization file, deleting the other parameter/value pair.

### Claim 23 (depends on 22)

The method of claim 22 wherein the order of precedence is specified in accordance with each input initialization file's level in a hierarchy of belonging of a configurable entity.

### Claim 24 (depends on 23)

The method of claim 23 wherein the configurable entity is in the set: computer operating system, application program.

### Claim 25 (depends on 23)

The method of claim 23 wherein at least one level in the configurable entity's hierarchy of belonging is in the set: global, network domain, cluster, user, machine, application run.

### Claim 26 (depends on 22)

The method of claim 22 wherein copying copies the input initialization file with the highest precedence of the input initialization files.

### Claim 27

A computer-readable medium containing instructions for performing a method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files;
copying an input initialization file of the at least two input initialization files into the resultant initialization file; and
for each input initialization file of the at least two input initialization files other than the input initialization file copied to the resultant initialization file,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair copied into a corresponding section of the resultant initialization file from an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into the corresponding section in the resultant initialization file and, if the parameter in the parameter/value pair corresponds to a parameter in another parameter/value pair in the corresponding section in the resultant initialization file, deleting the other parameter/value pair.

### Claim 28

A method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files; and
for each input initialization file of the at least two input initialization files,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair in a corresponding section in an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into a corresponding section in the resultant initialization file.

### Claim 29 (depends on 28)

The method of claim 28 wherein the order of precedence is specified in accordance with each input initialization file's level in a hierarchy of belonging of a configurable entity.

### Claim 30 (depends on 29)

The method of claim 29 wherein the configurable entity is in the set: computer operating system, application program.

### Claim 31 (depends on 29)

The method of claim 29 wherein at least one level in the configurable entity's hierarchy of belonging is in the set: global, network domain, cluster, user, machine, application run.

### Claim 32

A computer-readable medium containing instructions for performing a method for producing a resultant initialization file from at least two input initialization files, the input initialization files each containing at least one section containing at least one parameter/value pair, the sections having names, the method comprising:
specifying an order of precedence of the at least two input initialization files; and
for each input initialization file of the at least two input initialization files,
for each section in the input initialization file whose name does not correspond to a name of a section in the resultant initialization file, creating a section in the resultant initialization file with a name corresponding to the name of the section; and
for each parameter/value pair in a section in the input initialization file whose parameter does not correspond to a parameter in a parameter/value pair in a corresponding section in an input initialization file with precedence higher than that of the input initialization file, copying the parameter/value pair into a corresponding section in the resultant initialization file.
