summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritchyny <itchyny@cybozu.co.jp>2023-06-27 07:33:21 +0900
committerGitHub <noreply@github.com>2023-06-27 07:33:21 +0900
commit98835eec241ccad7098f221db55cc9de3556acf2 (patch)
treef8d41c552d67aff757f52724f25a8b5355a5410b
parente468eaa39659640db15c60e48c0a0e85e4ca1a84 (diff)
Fix halt_error to print message without prefix in raw mode (fix #1902) (#2632)
-rw-r--r--src/main.c6
-rwxr-xr-xtests/shtest12
2 files changed, 14 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index 2d202bd6..1cc65425 100644
--- a/src/main.c
+++ b/src/main.c
@@ -216,12 +216,14 @@ static int process(jq_state *jq, jv value, int flags, int dumpopts) {
jv_free(exit_code);
jv error_message = jq_get_error_message(jq);
if (jv_get_kind(error_message) == JV_KIND_STRING) {
- fprintf(stderr, "jq: error: %s", jv_string_value(error_message));
+ // No prefix should be added to the output of `halt_error`.
+ fwrite(jv_string_value(error_message), 1,
+ jv_string_length_bytes(jv_copy(error_message)), stderr);
} else if (jv_get_kind(error_message) == JV_KIND_NULL) {
// Halt with no output
} else if (jv_is_valid(error_message)) {
error_message = jv_dump_string(jv_copy(error_message), 0);
- fprintf(stderr, "jq: error: %s\n", jv_string_value(error_message));
+ fprintf(stderr, "%s\n", jv_string_value(error_message));
} // else no message on stderr; use --debug-trace to see a message
fflush(stderr);
jv_free(error_message);
diff --git a/tests/shtest b/tests/shtest
index 2606e176..4a4f855a 100755
--- a/tests/shtest
+++ b/tests/shtest
@@ -275,11 +275,19 @@ if [ -n "$($VALGRIND $Q $JQ -n 'halt_error(1)' 2>&1)" ]; then
echo "jq halt_error(1) had unexpected output" 1>&2
exit 1
fi
-if [ -n "$($VALGRIND $Q $JQ -n '"xyz\n"|halt_error(1)' 2>/dev/null)" ]; then
+if [ -n "$($VALGRIND $Q $JQ -n '"xyz\n" | halt_error(1)' 2>/dev/null)" ]; then
echo "jq halt_error(1) had unexpected output on stdout" 1>&2
exit 1
fi
-if [ "$($VALGRIND $Q $JQ -n '"xyz\n"|halt_error(1)' 2>&1)" != "jq: error: xyz" ]; then
+if [ "$($VALGRIND $Q $JQ -n '"xy" | halt_error(1)' 2>&1 || echo "z")" != "xyz" ]; then
+ echo "jq halt_error(1) had unexpected output" 1>&2
+ exit 1
+fi
+if [ "$($VALGRIND $Q $JQ -n '"x\u0000y\u0000z" | halt_error(1)' 2>&1 | tr '\0' '.')" != "x.y.z" ]; then
+ echo "jq halt_error(1) had unexpected output" 1>&2
+ exit 1
+fi
+if [ "$($VALGRIND $Q $JQ -n '{"a":"xyz"} | halt_error(1)' 2>&1)" != '{"a":"xyz"}' ]; then
echo "jq halt_error(1) had unexpected output" 1>&2
exit 1
fi