From eb165459aae82f0b5d25bc6e5132db501fa9e148 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Sat, 30 Nov 2013 02:05:42 -0600 Subject: Add callback interface for errors Printing to stderr is not the right answer for a library. --- builtin.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'builtin.c') diff --git a/builtin.c b/builtin.c index e90dd2cf..3c3ac5bd 100644 --- a/builtin.c +++ b/builtin.c @@ -677,9 +677,9 @@ static const char* const jq_builtins[] = { }; -int builtins_bind_one(block* bb, const char* code) { +static int builtins_bind_one(jq_state *jq, block* bb, const char* code) { struct locfile src; - locfile_init(&src, code, strlen(code)); + locfile_init(&src, jq, code, strlen(code)); block funcs; int nerrors = jq_parse_library(&src, &funcs); if (nerrors == 0) { @@ -689,14 +689,14 @@ int builtins_bind_one(block* bb, const char* code) { return nerrors; } -int slurp_lib(block* bb) { +static int slurp_lib(jq_state *jq, block* bb) { int nerrors = 0; char* home = getenv("HOME"); if (home) { // silently ignore no $HOME jv filename = jv_string_append_str(jv_string(home), "/.jq"); jv data = jv_load_file(jv_string_value(filename), 1); if (jv_is_valid(data)) { - nerrors = builtins_bind_one(bb, jv_string_value(data) ); + nerrors = builtins_bind_one(jq, bb, jv_string_value(data) ); } jv_free(filename); jv_free(data); @@ -704,14 +704,14 @@ int slurp_lib(block* bb) { return nerrors; } -int builtins_bind(block* bb) { - int nerrors = slurp_lib(bb); +int builtins_bind(jq_state *jq, block* bb) { + int nerrors = slurp_lib(jq, bb); if (nerrors) { block_free(*bb); return nerrors; } for (int i=(int)(sizeof(jq_builtins)/sizeof(jq_builtins[0]))-1; i>=0; i--) { - nerrors = builtins_bind_one(bb, jq_builtins[i]); + nerrors = builtins_bind_one(jq, bb, jq_builtins[i]); assert(!nerrors); } *bb = bind_bytecoded_builtins(*bb); -- cgit v1.2.3