From c9f9dd2dd2344e45cf7b95d064338d97f08f1fb8 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Fri, 18 Dec 1998 19:07:29 +0000 Subject: [PATCH] add sym_test --- bin/tests/.cvsignore | 1 + bin/tests/Makefile.in | 4 ++ bin/tests/sym_test.c | 93 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 bin/tests/sym_test.c diff --git a/bin/tests/.cvsignore b/bin/tests/.cvsignore index 22f13bb63e..6f581d1788 100644 --- a/bin/tests/.cvsignore +++ b/bin/tests/.cvsignore @@ -3,5 +3,6 @@ name_test rwlock_test mem_test sock_test +sym_test task_test timer_test diff --git a/bin/tests/Makefile.in b/bin/tests/Makefile.in index dc7be82735..c9db98bd63 100644 --- a/bin/tests/Makefile.in +++ b/bin/tests/Makefile.in @@ -17,6 +17,7 @@ LIBS = ../../lib/dns/libdns.a \ TARGETS = name_test \ rwlock_test \ sock_test \ + sym_test \ task_test \ timer_test @@ -31,6 +32,9 @@ rwlock_test: rwlock_test.o ../../lib/isc/libisc.a ../../lib/dns/libdns.a sock_test: sock_test.o ../../lib/isc/libisc.a ../../lib/dns/libdns.a ${CC} -o $@ sock_test.o ${LIBS} +sym_test: sym_test.o ../../lib/isc/libisc.a + ${CC} -o $@ sym_test.o ${LIBS} + task_test: task_test.o ../../lib/isc/libisc.a ../../lib/dns/libdns.a ${CC} -o $@ task_test.o ${LIBS} diff --git a/bin/tests/sym_test.c b/bin/tests/sym_test.c new file mode 100644 index 0000000000..cae1612329 --- /dev/null +++ b/bin/tests/sym_test.c @@ -0,0 +1,93 @@ +/* + * Copyright (C) 1998 Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +#include +#include +#include + +#include +#include +#include + +isc_mem_t *mctx; +isc_symtab_t *st; + +int +main(int argc, char *argv[]) { + char s[1000], *cp, *key; + size_t len; + isc_result_t result; + isc_symvalue_t value; + int trace = 0; + int c; + + INSIST(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS); + INSIST(isc_symtab_create(mctx, 691, &st) == ISC_R_SUCCESS); + + while ((c = getopt(argc, argv, "t")) != -1) { + switch (c) { + case 't': + trace = 1; + break; + } + } + + while (gets(s) != NULL) { + len = strlen(s); + + cp = s; + + if (cp[0] == '!') { + cp++; + result = isc_symtab_undefine(st, cp, 0); + if (trace || result != ISC_R_SUCCESS) + printf("undefine('%s'): %s\n", cp, + isc_result_totext(result)); + } else { + key = cp; + while (*cp != '\0' && *cp != ' ' && *cp != '\t') + cp++; + if (*cp == '\0') { + result = isc_symtab_lookup(st, key, 0, &value); + if (trace || result != ISC_R_SUCCESS) { + printf("lookup('%s'): %s", key, + isc_result_totext(result)); + if (result == ISC_R_SUCCESS) { + cp = value.as_pointer; + printf(", value == '%s'", cp); + } + printf("\n"); + } + } else { + *cp++ = '\0'; + key = strdup(key); + value.as_pointer = strdup(cp); + result = isc_symtab_define(st, key, 0, value); + if (trace || result != ISC_R_SUCCESS) + printf("define('%s', '%s'): %s\n", + key, cp, + isc_result_totext(result)); + } + } + } + + isc_symtab_destroy(&st); + isc_mem_stats(mctx, stdout); + isc_mem_destroy(&mctx); + + return (0); +}