]> granicus.if.org Git - jq/commitdiff
Allow resetting of jq err callback
authorNicolas Williams <nico@cryptonector.com>
Tue, 30 Dec 2014 07:02:56 +0000 (01:02 -0600)
committerNicolas Williams <nico@cryptonector.com>
Tue, 30 Dec 2014 16:52:38 +0000 (10:52 -0600)
This will be useful for the upcoming test-erroneous-programs improvement
to --run-tests, so we can switch between the default error reporting
method (print to stderr) to a method internal to --run-tests, and back.

The idea is that when testing programs that are expected to compile (and
link), it'd be nice if errors continue going to stderr, while when
testing programs that must fail to compile (or link), the error has to
be captured so it can be compared to the error expected by the test.

execute.c

index 91c426e3ff8730285806924d4d7a6cd67dc3b18d..67a1629b0bf62c0fe4550054bae5350f4c908e96 100644 (file)
--- a/execute.c
+++ b/execute.c
@@ -854,9 +854,13 @@ jq_state *jq_init(void) {
 }
 
 void jq_set_error_cb(jq_state *jq, jq_err_cb cb, void *data) {
-  assert(cb != NULL);
-  jq->err_cb = cb;
-  jq->err_cb_data = data;
+  if (cb == NULL) {
+    jq->err_cb = default_err_cb;
+    jq->err_cb_data = stderr;
+  } else {
+    jq->err_cb = cb;
+    jq->err_cb_data = data;
+  }
 }
 
 void jq_get_error_cb(jq_state *jq, jq_err_cb *cb, void **data) {