diff options
author | Gary V. Vaughan <gary@gnu.org> | 2013-09-22 17:22:40 +0700 |
---|---|---|
committer | Gary V. Vaughan <gary@gnu.org> | 2013-09-22 17:22:40 +0700 |
commit | 25f5825272d2e2aa17c0c626026c5b7ba6dbd6f5 (patch) | |
tree | ff33c8683e84b978e395b90b04fcde3ca411a4eb /tests/import.c | |
parent | 22b46f4ab25c345937d656a91adfe0c2a433a1f0 (diff) | |
download | m4-25f5825272d2e2aa17c0c626026c5b7ba6dbd6f5.tar.gz |
configury: separate installed modules from test only modules.
* modulues/import.c, modules/modtest.c, modules/shadow.c: Move
from here...
* tests/import.c, tests/modtest.c, tests/shadow.c: ...to here.
* Makefile.am: Adjust.
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Diffstat (limited to 'tests/import.c')
-rw-r--r-- | tests/import.c | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/import.c b/tests/import.c new file mode 100644 index 00000000..9f03493c --- /dev/null +++ b/tests/import.c @@ -0,0 +1,110 @@ +/* GNU m4 -- A simple macro processor + Copyright (C) 2003, 2006-2008, 2010, 2013 Free Software Foundation, + Inc. + + This file is part of GNU M4. + + GNU M4 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + GNU M4 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <config.h> + +/* Build using only the exported interfaces, unless NDEBUG is set, in + which case use private symbols to speed things up as much as possible. */ +#ifndef NDEBUG +# include <m4/m4module.h> +#else +# include "m4private.h" +#endif + +/* function macros blind side minargs maxargs */ +#define builtin_functions \ + BUILTIN (import, false, false, false, 0, 1) \ + BUILTIN (symbol_fail, false, false, false, 0, 1) \ + BUILTIN (module_fail, false, false, false, 0, 1) \ + +#define BUILTIN(handler, macros, blind, side, min, max) M4BUILTIN (handler) + builtin_functions +#undef BUILTIN + +static const m4_builtin m4_builtin_table[] = +{ +#define BUILTIN(handler, macros, blind, side, min, max) \ + M4BUILTIN_ENTRY (handler, #handler, macros, blind, side, min, max) + + builtin_functions +#undef BUILTIN + + { NULL, NULL, 0, 0, 0 }, +}; + + +void +include_import (m4 *context, m4_module *module, m4_obstack *obs) +{ + m4_install_builtins (context, module, m4_builtin_table); +} + + + +typedef bool export_test_func (const char *); +typedef bool no_such_func (const char *); + +/** + * import() + **/ +M4BUILTIN_HANDLER (import) +{ + M4_MODULE_IMPORT (modtest, export_test); + + const char *s = "`import'::`import' called."; + + assert (obs != 0); + obstack_grow (obs, s, strlen(s)); + + if (export_test && export_test (M4ARG (1))) + fputs ("TRUE\n", stderr); +} + +/** + * symbol_fail() + **/ +M4BUILTIN_HANDLER (symbol_fail) +{ + M4_MODULE_IMPORT (modtest, no_such); + + const char *s = "`import'::`symbol_fail' called."; + + assert (obs != 0); + obstack_grow (obs, s, strlen(s)); + + if (no_such && no_such (M4ARG (1))) + fputs ("TRUE\n", stderr); +} + +/** + * module_fail() + **/ +M4BUILTIN_HANDLER (module_fail) +{ + M4_MODULE_IMPORT (no_such, no_such); + + const char *s = "`import'::`module_fail' called."; + + assert (obs != 0); + obstack_grow (obs, s, strlen(s)); + + if (no_such && no_such (M4ARG (1))) + fputs ("TRUE\n", stderr); +} |