Add error context callback when tokenizing authentication files
authorMichael Paquier <michael@paquier.xyz>
Mon, 14 Nov 2022 02:58:10 +0000 (11:58 +0900)
committerMichael Paquier <michael@paquier.xyz>
Mon, 14 Nov 2022 02:58:10 +0000 (11:58 +0900)
commitad6c52846f13e4e86daa247c1369ed85558830e7
tree89b7b9b90f88e04efc923eb818268f5f734422ca
parent783e8c69cbcd2b7d6fce1f0c5b568b1c8b686d54
Add error context callback when tokenizing authentication files

The parsing of the authentication files for HBA and ident entries
happens in two phases:
- Tokenization of the files, creating a list of TokenizedAuthLines.
- Validation of the HBA and ident entries, building a set of HbaLines or
IdentLines.

The second phase doing the validation provides already some error
context about the configuration file and the line where a problem
happens, but there is no such information in the first phase when
tokenizing the files.  This commit adds an ErrorContextCallback in
tokenize_auth_file(), with a context made of the line number and the
configuration file name involved in a problem.  This is useful for files
included in an HBA file for user and database lists, and it will become
much more handy to track problems for files included via a potential
@include[_dir,_if_exists].

The error context is registered so as the full chain of events is
reported when using cascaded inclusions when for example
tokenize_auth_file() recurses over itself on new files, displaying one
context line for each file gone through when tokenizing things.

Author: Michael Paquier
Reviewed-by: Julien Rouhaud
Discussion: https://postgr.es/m/Y2xUBJ+S+Z0zbxRW@paquier.xyz
src/backend/libpq/hba.c
src/tools/pgindent/typedefs.list