diff options
Diffstat (limited to 'extension/testext.c')
-rw-r--r-- | extension/testext.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/extension/testext.c b/extension/testext.c index 6629296a..b911ec93 100644 --- a/extension/testext.c +++ b/extension/testext.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013, 2014, 2015, 2018 + * Copyright (C) 2012, 2013, 2014, 2015, 2017, 2018 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -1034,6 +1034,17 @@ static void at_exit2(void *data, int exit_status) printf(" exit_status = %d\n", exit_status); } +/* do_test_function --- test function for test namespace */ + +static awk_value_t * +do_test_function(int nargs, awk_value_t *result, struct awk_ext_func *unused) +{ + printf("test::test_function() called.\n"); + fflush(stdout); + + return make_number(0.0, result); +} + static awk_ext_func_t func_table[] = { { "dump_array_and_delete", dump_array_and_delete, 2, 2, awk_false, NULL }, { "try_modify_environ", try_modify_environ, 0, 0, awk_false, NULL }, @@ -1051,6 +1062,10 @@ static awk_ext_func_t func_table[] = { { "get_file", do_get_file, 4, 4, awk_false, NULL }, }; +static awk_ext_func_t ns_test_func = { + "test_function", do_test_function, 0, 0, awk_false, NULL +}; + /* init_testext --- additional initialization function */ static awk_bool_t init_testext(void) @@ -1058,6 +1073,7 @@ static awk_bool_t init_testext(void) awk_value_t value; static const char message[] = "hello, world"; /* of course */ static const char message2[] = "i am a scalar"; + static const char message3[] = "in namespace test"; /* This is used by the getfile test */ if (sym_lookup("TESTEXT_QUIET", AWK_NUMBER, & value)) @@ -1075,6 +1091,9 @@ BEGIN { for (i in new_array) printf("new_array[\"%s\"] = \"%s\"\n", i, new_array[i]) print "" + printf("test::testval = %s\n", test::testval) + test::test_function() + print "" } */ @@ -1092,6 +1111,13 @@ BEGIN { create_new_array(); + if (! sym_update_ns("test", "testval", + make_const_string(message3, strlen(message3), & value))) + printf("testext: sym_update_ns(\"test\", \"testval\") failed!\n"); + + if (! add_ext_func("test", & ns_test_func)) + printf("testext: add_ext_func(\"test\", ns_test_func) failed!\n"); + return awk_true; } |