The tipidee-config-preprocess internal program
tipidee-config-preprocess is a tool that reads a line-based configuration file like tipidee.conf containing !include, !includedir and !included: directives, and preprocesses it, replacing the lines where these directive appear with the full contents of included files where appropriate.
tipidee-config-preprocess is not supposed to be invoked directly by the user. It is automatically invoked by the tipidee-config program.
Interface
tipidee-config-preprocess file
- tipidee-config-preprocess reads file and writes its contents to stdout.
- If file contains a line starting with !included:, this line is not printed.
- If file contains a line starting with !include or !includedir, this line is replaced with the contents of appropriately included files.
- tipidee-config-preprocess then exits 0.
Exit codes
If tipidee-config-preprocess exits nonzero, tipidee-config will immediately exit with the same error code.
- 0
- success
- 1
- syntax error
- 2
- invalid inclusion (cycle or unauthorized duplicate)
- 100
- wrong usage
- 111
- system call failed
Detailed operation
- tipidee-config-preprocess reads file, looking for lines that start with a ! (bang). It prints other lines as is to its stdout.
- A line that starts with ! is not printed. Instead, it is parsed for an !include, !includedir or !included: directive.
- !included: directives immediately inform the file currently being preprocessed.
- !include foo and !includedir bar directives cause tipidee-config-preprocess to immediately start preprocessing file foo or all files in directory bar; this can happen recursively. When it's done preprocessing foo or bar, tipidee-config-preprocess resumes its current file where it had left it.
- Around inclusions, tipidee-config-preprocess prints special lines starting with a single ! (bang) and containing line and file information. This helps tipidee-config track which file the data it's reading comes from and accurately report errors.
Notes
- tipidee-config-preprocess does not know anything about the /etc/tipidee.conf file format. It was purposefully written to be generic: it only reads lines and includes files based on !include information, and inserts ! lines into the output stream to help with error reporting. It can be used as a preprocessor for other tools.
