From 51f90e94e4dcea187628175b50217bc525570b55 Mon Sep 17 00:00:00 2001 From: James Brister Date: Fri, 16 Jun 2000 20:45:26 +0000 Subject: [PATCH] Ugly, but necessary, macros for creating definitions used in new perl interface to dns_c_* library. --- conftools/perllib/dnsconf/DNSConf-macros.h | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 conftools/perllib/dnsconf/DNSConf-macros.h diff --git a/conftools/perllib/dnsconf/DNSConf-macros.h b/conftools/perllib/dnsconf/DNSConf-macros.h new file mode 100644 index 0000000000..2f9551fdcd --- /dev/null +++ b/conftools/perllib/dnsconf/DNSConf-macros.h @@ -0,0 +1,39 @@ +#define CONCAT(a,b) a ## b +#define DNSCONF_SET_STRING(FIELD) \ +void CONCAT(DNSConf_set, FIELD)(DNSConf *cfg, const char *arg) { \ + \ + DBGPRINT("inside DNSConf_set" #FIELD "\n"); \ + \ + if (!DNSConf_initctx(cfg)) \ + return; \ + \ + if (arg == NULL) { \ + DBGPRINT("null pointer\n"); \ + CONCAT(dns_c_ctx_unset, FIELD)(cfg->confctx); \ + } else if (*arg == '\0') { \ + DBGPRINT("empty string\n"); \ + CONCAT(dns_c_ctx_unset, FIELD)(cfg->confctx); \ + } else \ + CONCAT(dns_c_ctx_set, FIELD)(cfg->confctx, arg); \ +} + +#define DNSCONF_GET_STRING(FIELD) \ +char * CONCAT(DNSConf_get, FIELD)(DNSConf *cfg) { \ + char *result = NULL; \ + isc_result_t tmpres; \ + \ + if (cfg == NULL || cfg->confctx == NULL) \ + return NULL; \ + \ + tmpres = CONCAT(dns_c_ctx_get, FIELD)(cfg->confctx, &result); \ + if (tmpres == ISC_R_NOTFOUND) \ + return NULL; \ + \ + return result; \ +} \ + + +#define STRING_FIELD_DEFS(FIELD) \ + DNSCONF_GET_STRING(FIELD) DNSCONF_SET_STRING(FIELD) + +#define INT_FIELD_DEFS(FIELD)