]> git.draconx.ca Git - dxcommon.git/commitdiff
gen-options.awk: Work around busybox regex bug.
authorNick Bowler <nbowler@draconx.ca>
Sun, 8 Jan 2023 04:19:18 +0000 (23:19 -0500)
committerNick Bowler <nbowler@draconx.ca>
Sun, 8 Jan 2023 05:01:03 +0000 (00:01 -0500)
It appears that busybox awk does not recognize \] in a character class,
interpreting the backslash literally and taking the ] as the end of the
character class:

  % printf '%s\n' ']' '\]' | busybox awk '/^[\]]$/ { print; }'
  \]

  % printf '%s\n' ']' '\]' | gawk '/^[\]]$/ { print; }'
  ]

Busybox does accept []] as meaning "] is part of the character class",
but this syntax is not portable to heirloom (and presumably also Solaris
10) awk, which only works with [\]].  GNU awk accepts either form.

So instead, let's avoid this problematic construct entirely by writing
the test in a different way.

scripts/gen-options.awk

index f1dbb1cb2088c135ac00275c4dc7f5de3a648862..a93c47cf95e576d5a723c6101d7d315a13461f49 100755 (executable)
@@ -152,7 +152,7 @@ $0 ~ /^-/ {
   }
 
   # Extract argument name
-  if (work ~ /^\[=[^\] \t]+\]/) {
+  if (work ~ /^\[=[^ \t]+\]/ && sub(/\]/, "&", work) == 1) {
     if (n = index(work, "]")) {
       arg = substr(work, 3, n-3)
       work = substr(work, n+1)