Improve xdt-autogen
At first, I modified this script locally to be able to build when paths contain whitespaces.
Then, I tried to make these changes cleaner (keeping a strictly posix script, which seems to be a constraint here), and finally, this led me to do a fairly complete review of the script:
- quoting;
- backticks ->
$() - do not use subshells when unneeded;
-
tr | sedorsed | tr->sed; - some defensive programming techniques (some from shellcheck);
- readability.
So I decided to share this, even if xdt-autogen.in appears in .gitignore (actually, it is still tracked: a forgotten git rm --cached scripts/xdt-autogen.in?)
Apart the case of paths containing whitespaces, the only modification that should change the behavior of the script is the following:
tr '\\n\\t\\\\' ' ' changed to sed 's|\\[\\nt]| |g'
This is not the same, and I think the first code is wrong, due to a misunderstanding of how tr works (hope it is not a misunderstanding on my part!
Regarding whitespaces (and more generally special characters in filenames), I changed the filename separator from ' ' to '\1' in lookup_configure_ac_*(), and I used a permutation of the value of the IFS special variable around for loops.
It is almost sufficient, except for running $XDT_PROG_ACLOCAL, where one has to define two new variables ACLOCAL_DIR_? and use conditional parameter expansion to properly build the command line.