xref: /onnv-gate/usr/src/lib/libdhcpsvc/tests/test_confopt.c (revision 0:68f95e015346)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright (c) 2001 by Sun Microsystems, Inc.
24  * All rights reserved.
25  */
26 
27 #pragma ident	"%Z%%M%	%I%	%E% SMI"
28 
29 #include <stdio.h>
30 #include <stdlib.h>
31 #include <alloca.h>
32 #include <string.h>
33 #include <errno.h>
34 #include <dhcp_svc_confopt.h>
35 
36 int
main(void)37 main(void)
38 {
39 	int		i;
40 	dhcp_confopt_t	*dsp;
41 
42 	if (read_dsvc_conf(&dsp) < 0) {
43 		if (errno != ENOENT) {
44 			perror("Read failed");
45 			return (1);
46 		} else {
47 			(void) fprintf(stderr,
48 			    "Read failed because file does not exist\n");
49 			/*
50 			 * Make one.
51 			 */
52 			dsp = alloca(4 * sizeof (dhcp_confopt_t));
53 			dsp[0].co_type	  = DHCP_COMMENT;
54 			dsp[0].co_comment = " Generated by test_confopt";
55 			dsp[1].co_type    = DHCP_KEY;
56 			dsp[1].co_key     = "RESOURCE";
57 			dsp[1].co_value   = "files";
58 			dsp[2].co_type    = DHCP_KEY;
59 			dsp[2].co_key     = "PATH";
60 			dsp[2].co_value   = "/var/dhcp";
61 			dsp[3].co_type    = DHCP_END;
62 		}
63 	} else {
64 		(void) printf("Read worked\n");
65 
66 		for (i = 0; dsp[i].co_type != DHCP_END; i++) {
67 			if (dsp[i].co_type == DHCP_KEY) {
68 				(void) printf("Key: %s, Value: %s\n",
69 				    dsp[i].co_key, dsp[i].co_value);
70 				if (strcmp(dsp[i].co_key, "RESOURCE") == 0) {
71 					free(dsp[i].co_value);
72 					dsp[i].co_value = strdup("nisplus");
73 				}
74 			} else {
75 				(void) printf("Comment: %s\n",
76 				    dsp[i].co_comment);
77 			}
78 		}
79 	}
80 
81 	if (write_dsvc_conf(dsp, 0644) < 0) {
82 		perror("Write failed");
83 		return (1);
84 	} else
85 		(void) printf("Write worked\n");
86 
87 	free_dsvc_conf(dsp);
88 	return (0);
89 }
90