gettext-tiny
gettext-tiny copied to clipboard
`autopoint` doesn't handle unquoted aux dirs correctly
Elizafox/tre-regex-sys#1 has led me to a curious thing:
AC_CONFIG_AUX_DIR(utils)
will break gettext-tiny's autopoint:
awilcox on gwyn ~/Code/contrib/tre-regex-sys/tre % find . -name config.rpath
./AC_CONFIG_AUX_DIR(utils)/config.rpath
because it doesn't have the bracket quotes that autopoint is expecting:
if [ "${line##*AC_CONFIG_AUX_DIR}" != "$line" ]; then
dirprefix="${line##*([}"
dirprefix="${dirprefix%%])*}"
mkdir -p "${dirprefix}"
fi
Trying to see if we can find an easy fix.
If we can do something like dirname $line? But that depends on coreutils.
If we can do something like
dirname $line? But that depends on coreutils.
dirname is POSIX, but:
elizabeth@ember:~ % dirname "AC_CONFIG_AUX_DIR(utils)"
.
That won't work.
The best thing to do imo is use sed:
dirprefix="$(echo "$line" | sed -E 's#\[|\]##g;s#.*\((.*)\)#\1#')"
Example:
elizabeth@ember:~ % echo "AC_CONFIG_AUX_DIR([utils])" | sed -E 's#\[|\]##g;s#.*\((.*)\)#\1#'
utils
The reason for the two regexes is that for some reason I cannot fathom, [^\]\)] does not work in a capturing group, so they have to be stripped first. You could do:
dirprefix="$(echo "$line" | sed -E 's#\[|\]##g)"
dirprefix="${dirprefix##*(}"
dirprefix="${dirprefix%%)*}"
Or some such, but I see little to no benefit.
or pipe through awk, which is probably way less cryptic to the reader. anyone working on a patch ?
awilfox's suggested one-line fix:
The fix is pretty simple: replace
AC_CONFIG_AUX_DIR(utils)withAC_CONFIG_AUX_DIR([utils])inconfigure.ac.
has been commited to laurikari/tre if you want to use the latest.