xref: /minix3/external/bsd/bind/dist/bin/tests/master_test.c (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: master_test.c,v 1.6 2014/12/10 04:37:53 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004, 2007, 2009  Internet Systems Consortium, Inc. ("ISC")
5*00b67f09SDavid van Moolenbroek  * Copyright (C) 1999-2001  Internet Software Consortium.
6*00b67f09SDavid van Moolenbroek  *
7*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
8*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
9*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
10*00b67f09SDavid van Moolenbroek  *
11*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
18*00b67f09SDavid van Moolenbroek  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /* Id: master_test.c,v 1.32 2009/09/02 23:48:01 tbox Exp  */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek #include <config.h>
23*00b67f09SDavid van Moolenbroek 
24*00b67f09SDavid van Moolenbroek #include <stdlib.h>
25*00b67f09SDavid van Moolenbroek #include <string.h>
26*00b67f09SDavid van Moolenbroek 
27*00b67f09SDavid van Moolenbroek #include <isc/buffer.h>
28*00b67f09SDavid van Moolenbroek #include <isc/mem.h>
29*00b67f09SDavid van Moolenbroek #include <isc/util.h>
30*00b67f09SDavid van Moolenbroek 
31*00b67f09SDavid van Moolenbroek #include <dns/callbacks.h>
32*00b67f09SDavid van Moolenbroek #include <dns/master.h>
33*00b67f09SDavid van Moolenbroek #include <dns/name.h>
34*00b67f09SDavid van Moolenbroek #include <dns/rdataset.h>
35*00b67f09SDavid van Moolenbroek #include <dns/result.h>
36*00b67f09SDavid van Moolenbroek 
37*00b67f09SDavid van Moolenbroek isc_mem_t *mctx;
38*00b67f09SDavid van Moolenbroek 
39*00b67f09SDavid van Moolenbroek static isc_result_t
print_dataset(void * arg,dns_name_t * owner,dns_rdataset_t * dataset)40*00b67f09SDavid van Moolenbroek print_dataset(void *arg, dns_name_t *owner, dns_rdataset_t *dataset) {
41*00b67f09SDavid van Moolenbroek 	char buf[64*1024];
42*00b67f09SDavid van Moolenbroek 	isc_buffer_t target;
43*00b67f09SDavid van Moolenbroek 	isc_result_t result;
44*00b67f09SDavid van Moolenbroek 
45*00b67f09SDavid van Moolenbroek 	UNUSED(arg);
46*00b67f09SDavid van Moolenbroek 
47*00b67f09SDavid van Moolenbroek 	isc_buffer_init(&target, buf, 64*1024);
48*00b67f09SDavid van Moolenbroek 	result = dns_rdataset_totext(dataset, owner, ISC_FALSE, ISC_FALSE,
49*00b67f09SDavid van Moolenbroek 				     &target);
50*00b67f09SDavid van Moolenbroek 	if (result == ISC_R_SUCCESS)
51*00b67f09SDavid van Moolenbroek 		fprintf(stdout, "%.*s\n", (int)target.used,
52*00b67f09SDavid van Moolenbroek 					  (char*)target.base);
53*00b67f09SDavid van Moolenbroek 	else
54*00b67f09SDavid van Moolenbroek 		fprintf(stdout, "dns_rdataset_totext: %s\n",
55*00b67f09SDavid van Moolenbroek 			dns_result_totext(result));
56*00b67f09SDavid van Moolenbroek 
57*00b67f09SDavid van Moolenbroek 	return (ISC_R_SUCCESS);
58*00b67f09SDavid van Moolenbroek }
59*00b67f09SDavid van Moolenbroek 
60*00b67f09SDavid van Moolenbroek int
main(int argc,char * argv[])61*00b67f09SDavid van Moolenbroek main(int argc, char *argv[]) {
62*00b67f09SDavid van Moolenbroek 	isc_result_t result;
63*00b67f09SDavid van Moolenbroek 	dns_name_t origin;
64*00b67f09SDavid van Moolenbroek 	isc_buffer_t source;
65*00b67f09SDavid van Moolenbroek 	isc_buffer_t target;
66*00b67f09SDavid van Moolenbroek 	unsigned char name_buf[255];
67*00b67f09SDavid van Moolenbroek 	dns_rdatacallbacks_t callbacks;
68*00b67f09SDavid van Moolenbroek 
69*00b67f09SDavid van Moolenbroek 	UNUSED(argc);
70*00b67f09SDavid van Moolenbroek 
71*00b67f09SDavid van Moolenbroek 	RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
72*00b67f09SDavid van Moolenbroek 
73*00b67f09SDavid van Moolenbroek 	if (argv[1]) {
74*00b67f09SDavid van Moolenbroek 		isc_buffer_init(&source, argv[1], strlen(argv[1]));
75*00b67f09SDavid van Moolenbroek 		isc_buffer_add(&source, strlen(argv[1]));
76*00b67f09SDavid van Moolenbroek 		isc_buffer_setactive(&source, strlen(argv[1]));
77*00b67f09SDavid van Moolenbroek 		isc_buffer_init(&target, name_buf, 255);
78*00b67f09SDavid van Moolenbroek 		dns_name_init(&origin, NULL);
79*00b67f09SDavid van Moolenbroek 		result = dns_name_fromtext(&origin, &source, dns_rootname,
80*00b67f09SDavid van Moolenbroek 					   0, &target);
81*00b67f09SDavid van Moolenbroek 		if (result != ISC_R_SUCCESS) {
82*00b67f09SDavid van Moolenbroek 			fprintf(stdout, "dns_name_fromtext: %s\n",
83*00b67f09SDavid van Moolenbroek 				dns_result_totext(result));
84*00b67f09SDavid van Moolenbroek 			exit(1);
85*00b67f09SDavid van Moolenbroek 		}
86*00b67f09SDavid van Moolenbroek 
87*00b67f09SDavid van Moolenbroek 		dns_rdatacallbacks_init_stdio(&callbacks);
88*00b67f09SDavid van Moolenbroek 		callbacks.add = print_dataset;
89*00b67f09SDavid van Moolenbroek 
90*00b67f09SDavid van Moolenbroek 		result = dns_master_loadfile(argv[1], &origin, &origin,
91*00b67f09SDavid van Moolenbroek 					     dns_rdataclass_in, 0,
92*00b67f09SDavid van Moolenbroek 					     &callbacks, mctx);
93*00b67f09SDavid van Moolenbroek 		fprintf(stdout, "dns_master_loadfile: %s\n",
94*00b67f09SDavid van Moolenbroek 			dns_result_totext(result));
95*00b67f09SDavid van Moolenbroek 	}
96*00b67f09SDavid van Moolenbroek 	return (0);
97*00b67f09SDavid van Moolenbroek }
98