/* * Initialize a database from filename. */ static int rbt_init(char *filename, dns_rbt_t **rbt, isc_mem_t *mctx) { int rval; isc_result_t dns_result; char *p; FILE *fp; fp = fopen(filename, "r"); if (fp == NULL) { t_info("No such file %s\n", filename); return(1); } dns_result = dns_rbt_create(mctx, delete_name, mctx, rbt); if (dns_result != ISC_R_SUCCESS) { t_info("dns_rbt_create failed %s\n", dns_result_totext(dns_result)); fclose(fp); return(1); } while ((p = t_fgetbs(fp)) != NULL) { /* * Skip any comment lines. */ if ((*p == '#') || (*p == '\0') || (*p == ' ')) { (void)free(p); continue; } if (T_debug) t_info("adding name %s to the rbt\n", p); rval = t1_add(p, *rbt, mctx, &dns_result); if ((rval != 0) || (dns_result != ISC_R_SUCCESS)) { t_info("add of %s failed\n", p); dns_rbt_destroy(rbt); fclose(fp); return(1); } (void) free(p); } fclose(fp); return(0); }
static int test_master_x(const char *filename) { FILE *fp; char *p; int line; int cnt; int result; result = T_UNRESOLVED; fp = fopen(filename, "r"); if (fp != NULL) { line = 0; while ((p = t_fgetbs(fp)) != NULL) { ++line; /* * Skip comment lines. */ if ((isspace(*p & 0xff)) || (*p == '#')) { (void)free(p); continue; } /* * Name of data file, origin, zclass, expected result. */ cnt = t_bustline(p, Tokens); if (cnt == 4) { result = test_master(Tokens[0], Tokens[1], Tokens[2], t_dns_result_fromtext(Tokens[3])); } else { t_info("bad format in %s at line %d\n", filename, line); } (void)free(p); } (void)fclose(fp); } else { t_info("Missing datafile %s\n", filename); } return(result); }
static int test_dns_rbtnodechain_init(const char *filename) { FILE *fp; char *p; int line; int cnt; int result; int nfails; int nprobs; nfails = 0; nprobs = 0; fp = fopen(filename, "r"); if (fp != NULL) { line = 0; while ((p = t_fgetbs(fp)) != NULL) { ++line; /* * Skip comment lines. */ if ((isspace((unsigned char)*p)) || (*p == '#')) { (void)free(p); continue; } cnt = t_bustline(p, Tokens); if (cnt == 10) { result = t_dns_rbtnodechain_init( Tokens[0], /* dbfile */ Tokens[1], /* startname */ Tokens[2], /* nextname */ Tokens[3], /* nextorigin */ Tokens[4], /* prevname */ Tokens[5], /* prevorigin */ Tokens[6], /* firstname */ Tokens[7], /* firstorigin */ Tokens[8], /* lastname */ Tokens[9]); /* lastorigin */ if (result != T_PASS) { if (result == T_FAIL) ++nfails; else ++nprobs; } } else { t_info("bad format in %s at line %d\n", filename, line); ++nprobs; } (void)free(p); } (void)fclose(fp); } else { t_info("Missing datafile %s\n", filename); ++nprobs; } result = T_UNRESOLVED; if ((nfails == 0) && (nprobs == 0)) result = T_PASS; else if (nfails) result = T_FAIL; return(result); }
static int test_dns_rbt_x(const char *filename) { FILE *fp; char *p; int line; int cnt; int result; int nfails; int nprobs; nfails = 0; nprobs = 0; fp = fopen(filename, "r"); if (fp != NULL) { line = 0; while ((p = t_fgetbs(fp)) != NULL) { ++line; /* * Skip comment lines. */ if ((isspace((unsigned char)*p)) || (*p == '#')) { (void)free(p); continue; } /* * Name of db file, command, testname, * expected result. */ cnt = t_bustline(p, Tokens); if (cnt == 4) { result = test_rbt_gen(Tokens[0], Tokens[1], Tokens[2], t_dns_result_fromtext(Tokens[3])); if (result != T_PASS) ++nfails; } else { t_info("bad format in %s at line %d\n", filename, line); ++nprobs; } (void)free(p); } (void)fclose(fp); } else { t_info("Missing datafile %s\n", filename); ++nprobs; } result = T_UNRESOLVED; if ((nfails == 0) && (nprobs == 0)) result = T_PASS; else if (nfails) result = T_FAIL; return(result); }