aboutsummaryrefslogtreecommitdiffstats
tipidee: the tipidee-config-preprocess internal program

tipidee
Software
skarnet.org

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.