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-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.
If tipidee-config-preprocess exits nonzero,
tipidee-config will immediately exit
with the same error code.
- syntax error
- invalid inclusion (cycle or unauthorized duplicate)
- wrong usage
- system call failed
- tipidee-config-preprocess reads file, looking for lines
that start with a ! (bang). It prints other lines as is to its
- A line that starts with ! is not printed. Instead, it
is parsed for an !include, !includedir or !included:
- !included: directives immediately inform the file currently
- !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
- 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.