xref: /dflybsd-src/usr.sbin/installer/libdfui/dump.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
1*86d7f5d3SJohn Marino /*
2*86d7f5d3SJohn Marino  * Copyright (c)2004 Cat's Eye Technologies.  All rights reserved.
3*86d7f5d3SJohn Marino  *
4*86d7f5d3SJohn Marino  * Redistribution and use in source and binary forms, with or without
5*86d7f5d3SJohn Marino  * modification, are permitted provided that the following conditions
6*86d7f5d3SJohn Marino  * are met:
7*86d7f5d3SJohn Marino  *
8*86d7f5d3SJohn Marino  *   Redistributions of source code must retain the above copyright
9*86d7f5d3SJohn Marino  *   notice, this list of conditions and the following disclaimer.
10*86d7f5d3SJohn Marino  *
11*86d7f5d3SJohn Marino  *   Redistributions in binary form must reproduce the above copyright
12*86d7f5d3SJohn Marino  *   notice, this list of conditions and the following disclaimer in
13*86d7f5d3SJohn Marino  *   the documentation and/or other materials provided with the
14*86d7f5d3SJohn Marino  *   distribution.
15*86d7f5d3SJohn Marino  *
16*86d7f5d3SJohn Marino  *   Neither the name of Cat's Eye Technologies nor the names of its
17*86d7f5d3SJohn Marino  *   contributors may be used to endorse or promote products derived
18*86d7f5d3SJohn Marino  *   from this software without specific prior written permission.
19*86d7f5d3SJohn Marino  *
20*86d7f5d3SJohn Marino  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21*86d7f5d3SJohn Marino  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*86d7f5d3SJohn Marino  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*86d7f5d3SJohn Marino  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24*86d7f5d3SJohn Marino  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25*86d7f5d3SJohn Marino  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26*86d7f5d3SJohn Marino  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27*86d7f5d3SJohn Marino  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28*86d7f5d3SJohn Marino  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29*86d7f5d3SJohn Marino  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30*86d7f5d3SJohn Marino  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31*86d7f5d3SJohn Marino  * OF THE POSSIBILITY OF SUCH DAMAGE.
32*86d7f5d3SJohn Marino  */
33*86d7f5d3SJohn Marino 
34*86d7f5d3SJohn Marino /*
35*86d7f5d3SJohn Marino  * dump.c
36*86d7f5d3SJohn Marino  * $Id: dump.c,v 1.5 2005/02/06 19:53:19 cpressey Exp $
37*86d7f5d3SJohn Marino  * Debugging functions for libdfui.
38*86d7f5d3SJohn Marino  * These functions are just stubs when libdfui is built without DEBUG.
39*86d7f5d3SJohn Marino  */
40*86d7f5d3SJohn Marino 
41*86d7f5d3SJohn Marino #include <stdarg.h>
42*86d7f5d3SJohn Marino #include <stdio.h>
43*86d7f5d3SJohn Marino #include <stdlib.h>
44*86d7f5d3SJohn Marino 
45*86d7f5d3SJohn Marino #define NEEDS_DFUI_STRUCTURE_DEFINITIONS
46*86d7f5d3SJohn Marino #include "dfui.h"
47*86d7f5d3SJohn Marino #undef NEEDS_DFUI_STRUCTURE_DEFINITIONS
48*86d7f5d3SJohn Marino #include "dump.h"
49*86d7f5d3SJohn Marino 
50*86d7f5d3SJohn Marino FILE *dfui_debug_file;
51*86d7f5d3SJohn Marino 
52*86d7f5d3SJohn Marino #ifdef DEBUG
53*86d7f5d3SJohn Marino #define __debug_only
54*86d7f5d3SJohn Marino #else
55*86d7f5d3SJohn Marino #define __debug_only __unused
56*86d7f5d3SJohn Marino #endif
57*86d7f5d3SJohn Marino 
58*86d7f5d3SJohn Marino void
dfui_info_dump(const struct dfui_info * info __debug_only)59*86d7f5d3SJohn Marino dfui_info_dump(const struct dfui_info *info __debug_only)
60*86d7f5d3SJohn Marino {
61*86d7f5d3SJohn Marino #ifdef DEBUG
62*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "+ INFO:\n");
63*86d7f5d3SJohn Marino 	if (info == NULL) {
64*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "  *NULL*");
65*86d7f5d3SJohn Marino 		return;
66*86d7f5d3SJohn Marino 	}
67*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "  name:       %s\n", info->name);
68*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "  short_desc: %s\n", info->short_desc);
69*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "  long_desc:  %s\n", info->long_desc);
70*86d7f5d3SJohn Marino #endif
71*86d7f5d3SJohn Marino }
72*86d7f5d3SJohn Marino 
73*86d7f5d3SJohn Marino void
dfui_option_dump(const struct dfui_option * o __debug_only)74*86d7f5d3SJohn Marino dfui_option_dump(const struct dfui_option *o __debug_only)
75*86d7f5d3SJohn Marino {
76*86d7f5d3SJohn Marino #ifdef DEBUG
77*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "+ OPTION:\n");
78*86d7f5d3SJohn Marino 	if (o == NULL) {
79*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "  *NULL*");
80*86d7f5d3SJohn Marino 		return;
81*86d7f5d3SJohn Marino 	}
82*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "value: %s\n", o->value);
83*86d7f5d3SJohn Marino #endif
84*86d7f5d3SJohn Marino }
85*86d7f5d3SJohn Marino 
86*86d7f5d3SJohn Marino void
dfui_field_dump(const struct dfui_field * fi __debug_only)87*86d7f5d3SJohn Marino dfui_field_dump(const struct dfui_field *fi __debug_only)
88*86d7f5d3SJohn Marino {
89*86d7f5d3SJohn Marino #ifdef DEBUG
90*86d7f5d3SJohn Marino 	struct dfui_option *o;
91*86d7f5d3SJohn Marino 
92*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "+ FIELD:\n");
93*86d7f5d3SJohn Marino 	if (fi == NULL) {
94*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "  *NULL*");
95*86d7f5d3SJohn Marino 		return;
96*86d7f5d3SJohn Marino 	}
97*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "id: %s\n", fi->id);
98*86d7f5d3SJohn Marino 	dfui_info_dump(fi->info);
99*86d7f5d3SJohn Marino 	for (o = fi->option_head; o != NULL; o = o->next) {
100*86d7f5d3SJohn Marino 		dfui_option_dump(o);
101*86d7f5d3SJohn Marino 	}
102*86d7f5d3SJohn Marino #endif
103*86d7f5d3SJohn Marino }
104*86d7f5d3SJohn Marino 
105*86d7f5d3SJohn Marino void
dfui_action_dump(const struct dfui_action * a __debug_only)106*86d7f5d3SJohn Marino dfui_action_dump(const struct dfui_action *a __debug_only)
107*86d7f5d3SJohn Marino {
108*86d7f5d3SJohn Marino #ifdef DEBUG
109*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "+ ACTION:\n");
110*86d7f5d3SJohn Marino 	if (a == NULL) {
111*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "  *NULL*");
112*86d7f5d3SJohn Marino 		return;
113*86d7f5d3SJohn Marino 	}
114*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "id: %s\n", a->id);
115*86d7f5d3SJohn Marino 	dfui_info_dump(a->info);
116*86d7f5d3SJohn Marino 	/* parameters */
117*86d7f5d3SJohn Marino #endif
118*86d7f5d3SJohn Marino }
119*86d7f5d3SJohn Marino 
120*86d7f5d3SJohn Marino void
dfui_celldata_dump(const struct dfui_celldata * c __debug_only)121*86d7f5d3SJohn Marino dfui_celldata_dump(const struct dfui_celldata *c __debug_only)
122*86d7f5d3SJohn Marino {
123*86d7f5d3SJohn Marino #ifdef DEBUG
124*86d7f5d3SJohn Marino 	if (c == NULL) {
125*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "*NULL* ");
126*86d7f5d3SJohn Marino 		return;
127*86d7f5d3SJohn Marino 	}
128*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "{%s = %s}", c->field_id, c->value);
129*86d7f5d3SJohn Marino #endif
130*86d7f5d3SJohn Marino }
131*86d7f5d3SJohn Marino 
132*86d7f5d3SJohn Marino void
dfui_dataset_dump(const struct dfui_dataset * ds __debug_only)133*86d7f5d3SJohn Marino dfui_dataset_dump(const struct dfui_dataset *ds __debug_only)
134*86d7f5d3SJohn Marino {
135*86d7f5d3SJohn Marino #ifdef DEBUG
136*86d7f5d3SJohn Marino 	struct dfui_celldata *c;
137*86d7f5d3SJohn Marino 
138*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "+ DATASET:\n");
139*86d7f5d3SJohn Marino 	if (ds == NULL) {
140*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "  *NULL*");
141*86d7f5d3SJohn Marino 		return;
142*86d7f5d3SJohn Marino 	}
143*86d7f5d3SJohn Marino 
144*86d7f5d3SJohn Marino 	for (c = ds->celldata_head; c != NULL; c = c->next) {
145*86d7f5d3SJohn Marino 		dfui_celldata_dump(c);
146*86d7f5d3SJohn Marino 	}
147*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "\n");
148*86d7f5d3SJohn Marino #endif
149*86d7f5d3SJohn Marino }
150*86d7f5d3SJohn Marino 
151*86d7f5d3SJohn Marino 
152*86d7f5d3SJohn Marino void
dfui_form_dump(const struct dfui_form * f __debug_only)153*86d7f5d3SJohn Marino dfui_form_dump(const struct dfui_form *f __debug_only)
154*86d7f5d3SJohn Marino {
155*86d7f5d3SJohn Marino #ifdef DEBUG
156*86d7f5d3SJohn Marino 	struct dfui_field *fi;
157*86d7f5d3SJohn Marino 	struct dfui_action *a;
158*86d7f5d3SJohn Marino 	struct dfui_dataset *ds;
159*86d7f5d3SJohn Marino 
160*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "FORM ------\n");
161*86d7f5d3SJohn Marino 	if (f == NULL) {
162*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "*NULL*");
163*86d7f5d3SJohn Marino 		return;
164*86d7f5d3SJohn Marino 	}
165*86d7f5d3SJohn Marino 
166*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "id: %s\n", f->id);
167*86d7f5d3SJohn Marino 	dfui_info_dump(f->info);
168*86d7f5d3SJohn Marino 
169*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "multiple: %d\n", f->multiple);
170*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "extensible: %d\n", f->extensible);
171*86d7f5d3SJohn Marino 
172*86d7f5d3SJohn Marino 	for (fi = f->field_head; fi != NULL; fi = fi->next) {
173*86d7f5d3SJohn Marino 		dfui_field_dump(fi);
174*86d7f5d3SJohn Marino 	}
175*86d7f5d3SJohn Marino 	for (a = f->action_head; a != NULL; a = a->next) {
176*86d7f5d3SJohn Marino 		dfui_action_dump(a);
177*86d7f5d3SJohn Marino 	}
178*86d7f5d3SJohn Marino 	for (ds = f->dataset_head; ds != NULL; ds = ds->next) {
179*86d7f5d3SJohn Marino 		dfui_dataset_dump(ds);
180*86d7f5d3SJohn Marino 	}
181*86d7f5d3SJohn Marino #endif
182*86d7f5d3SJohn Marino }
183*86d7f5d3SJohn Marino 
184*86d7f5d3SJohn Marino void
dfui_response_dump(const struct dfui_response * r __debug_only)185*86d7f5d3SJohn Marino dfui_response_dump(const struct dfui_response *r __debug_only)
186*86d7f5d3SJohn Marino {
187*86d7f5d3SJohn Marino #ifdef DEBUG
188*86d7f5d3SJohn Marino 	struct dfui_dataset *ds;
189*86d7f5d3SJohn Marino 
190*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "RESPONSE ------\n");
191*86d7f5d3SJohn Marino 	if (r == NULL) {
192*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "*NULL*");
193*86d7f5d3SJohn Marino 		return;
194*86d7f5d3SJohn Marino 	}
195*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "form id: %s\n", r->form_id);
196*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "action id: %s\n", r->action_id);
197*86d7f5d3SJohn Marino 
198*86d7f5d3SJohn Marino 	for (ds = r->dataset_head; ds != NULL; ds = ds->next) {
199*86d7f5d3SJohn Marino 		dfui_dataset_dump(ds);
200*86d7f5d3SJohn Marino 	}
201*86d7f5d3SJohn Marino #endif
202*86d7f5d3SJohn Marino }
203*86d7f5d3SJohn Marino 
204*86d7f5d3SJohn Marino void
dfui_progress_dump(const struct dfui_progress * pr __debug_only)205*86d7f5d3SJohn Marino dfui_progress_dump(const struct dfui_progress *pr __debug_only)
206*86d7f5d3SJohn Marino {
207*86d7f5d3SJohn Marino #ifdef DEBUG
208*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "PROGRESS ------\n");
209*86d7f5d3SJohn Marino 	if (pr == NULL) {
210*86d7f5d3SJohn Marino 		fprintf(dfui_debug_file, "*NULL*");
211*86d7f5d3SJohn Marino 		return;
212*86d7f5d3SJohn Marino 	}
213*86d7f5d3SJohn Marino 
214*86d7f5d3SJohn Marino 	/* fprintf(dfui_debug_file, "id: %s\n", pr->id); */
215*86d7f5d3SJohn Marino 	dfui_info_dump(pr->info);
216*86d7f5d3SJohn Marino 
217*86d7f5d3SJohn Marino 	fprintf(dfui_debug_file, "amount: %d\n", pr->amount);
218*86d7f5d3SJohn Marino #endif
219*86d7f5d3SJohn Marino }
220*86d7f5d3SJohn Marino 
221*86d7f5d3SJohn Marino void
dfui_debug(const char * fmt __debug_only,...)222*86d7f5d3SJohn Marino dfui_debug(const char *fmt __debug_only, ...)
223*86d7f5d3SJohn Marino {
224*86d7f5d3SJohn Marino #ifdef DEBUG
225*86d7f5d3SJohn Marino 	va_list args;
226*86d7f5d3SJohn Marino 
227*86d7f5d3SJohn Marino 	va_start(args, fmt);
228*86d7f5d3SJohn Marino 	vfprintf(dfui_debug_file, fmt, args);
229*86d7f5d3SJohn Marino 	va_end(args);
230*86d7f5d3SJohn Marino #endif
231*86d7f5d3SJohn Marino }
232