kamctl: make jsonrpc filter portable 1669/head
authorSebastian Kemper <sebastian_ml@gmx.net>
Sun, 7 Oct 2018 16:54:39 +0000 (18:54 +0200)
committerSebastian Kemper <sebastian_ml@gmx.net>
Sun, 7 Oct 2018 17:03:51 +0000 (19:03 +0200)
The filter has a regex looking for a literal '{' in the beginning of a
line. Some awk implementations interpret this as a meta character, so
the regex is deemed broken. Example with busybox awk (POSIX):

root@hank2:~# kamctl ps
awk: bad regex '^{.+"id"[  ]*:[  ]*[0-9]+[  ]*}$': Invalid contents of {}
root@hank2:~#

To fix this enclose the character in square brackets. This always
matches for a literal '{' and is portable.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
utils/kamctl/kamctl.base

index adeceb7..a776e10 100644 (file)
@@ -715,7 +715,7 @@ filter_json()
        $AWK 'function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
                BEGIN { line=0; IGNORECASE=1; }
                { line++; }
-               NR == 1 && /^{.+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; }
+               NR == 1 && /^[{].+"id"[ \t]*:[ \t]*[0-9]+[ \t]*}$/ { print; next; }
                NR == 1 && /^200 OK/ { next; }
                /^[ \t]*"jsonrpc":[ \t]*"2.0"/ { print; next; }
                /^[ \t]*"result":[ \t]*\[.+/ {