diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-09-28 00:06:51 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-09-28 00:06:51 +0200 |
commit | 4c3837ae2cb4dcecfcfc54ed3d590b94ad685d22 (patch) | |
tree | 10439c2449e5d15e27b3351118596e30da018fb9 /tools | |
parent | af2756ee01fa6b1921c6bcb581817e64c30beb48 (diff) | |
download | liberty-4c3837ae2cb4dcecfcfc54ed3d590b94ad685d22.tar.gz liberty-4c3837ae2cb4dcecfcfc54ed3d590b94ad685d22.tar.xz liberty-4c3837ae2cb4dcecfcfc54ed3d590b94ad685d22.zip |
cmake-parser: clean up
Diffstat (limited to 'tools')
-rw-r--r-- | tools/cmake-parser.awk | 72 |
1 files changed, 37 insertions, 35 deletions
diff --git a/tools/cmake-parser.awk b/tools/cmake-parser.awk index 7651cd1..43c5f2c 100644 --- a/tools/cmake-parser.awk +++ b/tools/cmake-parser.awk @@ -133,6 +133,15 @@ function quoted_argument( v, unescaped) { return v } +function finalize_quoted(expanded, v) { + while (match(expanded, /\\./)) { + v = v substr(expanded, 1, RSTART - 1) \ + substr(expanded, RSTART + 1, 1) + expanded = substr(expanded, RSTART + RLENGTH) + } + Args[++N] = v expanded +} + function unquoted_argument( v, unescaped) { while (1) { if (match($0, /^[^[:space:]()#"\\]+/)) { @@ -151,43 +160,36 @@ function unquoted_argument( v, unescaped) { } } -# Note that we keep and reprocess some escape sequences in here. -function argument( arg, expanded, v) { - if (regexp("\\[=*\\[")) { - Args[++N] = unbracket(RLENGTH - 2) - return 1 - } - if ((arg = quoted_argument()) || arg == "") { - expanded = expand(arg) - while (match(expanded, /\\./)) { - v = v substr(expanded, 1, RSTART - 1) \ - substr(expanded, RSTART + 1, 1) - expanded = substr(expanded, RSTART + RLENGTH) - } - Args[++N] = v expanded - return 1 - } - if ((arg = unquoted_argument())) { - expanded = expand(arg) - while (expanded) { - if (expanded ~ /^;/) { - if (v) - Args[++N] = v - v = "" - expanded = substr(expanded, 2) - } else if (expanded ~ /^\\./) { - v = v substr(expanded, 2, 1) - expanded = substr(expanded, 3) - } else { - v = v substr(expanded, 1, 1) - expanded = substr(expanded, 2) - } +function finalize_unquoted(expanded, v) { + while (expanded) { + if (expanded ~ /^;/) { + if (v) + Args[++N] = v + v = "" + expanded = substr(expanded, 2) + } else if (expanded ~ /^\\./) { + v = v substr(expanded, 2, 1) + expanded = substr(expanded, 3) + } else { + v = v substr(expanded, 1, 1) + expanded = substr(expanded, 2) } - if (v) - Args[++N] = v - return 1 } - return 0 + if (v) + Args[++N] = v +} + +# We keep and reprocess some escape sequences in here. +function argument( arg, expanded, v) { + if (regexp("\\[=*\\[")) + Args[++N] = unbracket(RLENGTH - 2) + else if ((arg = quoted_argument()) || arg == "") + finalize_quoted(expand(arg)) + else if ((arg = unquoted_argument())) + finalize_unquoted(expand(arg)) + else + return 0 + return 1 } # ------------------------------------------------------------------------------ |