Lines Matching refs:stream

10 c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)  in generate_c_source()  argument
15 stream << "/*"; in generate_c_source()
16 stream << "\n"; in generate_c_source()
17 stream << indent_str; in generate_c_source()
18 stream << " File autogenerated by gengetopt "; in generate_c_source()
19 generate_string (generator_version, stream, indent + indent_str.length ()); in generate_c_source()
20 stream << "\n"; in generate_c_source()
21 stream << indent_str; in generate_c_source()
22 stream << " generated with the following command:"; in generate_c_source()
23 stream << "\n"; in generate_c_source()
24 stream << indent_str; in generate_c_source()
26 stream << " "; in generate_c_source()
27 generate_string (command_line, stream, indent + indent_str.length ()); in generate_c_source()
29 stream << "\n"; in generate_c_source()
30 stream << indent_str; in generate_c_source()
31 stream << "\n"; in generate_c_source()
32 stream << indent_str; in generate_c_source()
33 stream << " The developers of gengetopt consider the fixed text that goes in all"; in generate_c_source()
34 stream << "\n"; in generate_c_source()
35 stream << indent_str; in generate_c_source()
36 stream << " gengetopt output files to be in the public domain:"; in generate_c_source()
37 stream << "\n"; in generate_c_source()
38 stream << indent_str; in generate_c_source()
39 stream << " we make no copyright claims on it."; in generate_c_source()
40 stream << "\n"; in generate_c_source()
41 stream << indent_str; in generate_c_source()
42 stream << "*/"; in generate_c_source()
43 stream << "\n"; in generate_c_source()
44 stream << indent_str; in generate_c_source()
45 stream << "\n"; in generate_c_source()
46 stream << indent_str; in generate_c_source()
47 stream << "/* If we use autoconf. */"; in generate_c_source()
48 stream << "\n"; in generate_c_source()
49 stream << indent_str; in generate_c_source()
50 stream << "#ifdef HAVE_CONFIG_H"; in generate_c_source()
51 stream << "\n"; in generate_c_source()
52 stream << indent_str; in generate_c_source()
53 stream << "#include \"config.h\""; in generate_c_source()
54 stream << "\n"; in generate_c_source()
55 stream << indent_str; in generate_c_source()
56 stream << "#endif"; in generate_c_source()
57 stream << "\n"; in generate_c_source()
58 stream << indent_str; in generate_c_source()
59 stream << "\n"; in generate_c_source()
60 stream << indent_str; in generate_c_source()
61 stream << "#include <stdio.h>"; in generate_c_source()
62 stream << "\n"; in generate_c_source()
63 stream << indent_str; in generate_c_source()
64 stream << "#include <stdlib.h>"; in generate_c_source()
65 stream << "\n"; in generate_c_source()
66 stream << indent_str; in generate_c_source()
67 stream << "#include <string.h>"; in generate_c_source()
68 stream << "\n"; in generate_c_source()
69 stream << indent_str; in generate_c_source()
70 stream << "\n"; in generate_c_source()
71 stream << indent_str; in generate_c_source()
72 stream << "#ifndef FIX_UNUSED"; in generate_c_source()
73 stream << "\n"; in generate_c_source()
74 stream << indent_str; in generate_c_source()
75 stream << "#define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */"; in generate_c_source()
76 stream << "\n"; in generate_c_source()
77 stream << indent_str; in generate_c_source()
78 stream << "#endif"; in generate_c_source()
79 stream << "\n"; in generate_c_source()
80 stream << indent_str; in generate_c_source()
81 stream << "\n"; in generate_c_source()
82 stream << indent_str; in generate_c_source()
85 stream << "#include <getopt.h>"; in generate_c_source()
86 stream << "\n"; in generate_c_source()
87 stream << indent_str; in generate_c_source()
89 stream << "\n"; in generate_c_source()
90 stream << indent_str; in generate_c_source()
91 stream << "#include \""; in generate_c_source()
92 generate_string (source_name, stream, indent + indent_str.length ()); in generate_c_source()
93 stream << "."; in generate_c_source()
94 generate_string (header_file_ext, stream, indent + indent_str.length ()); in generate_c_source()
95 stream << "\""; in generate_c_source()
96 stream << "\n"; in generate_c_source()
97 stream << indent_str; in generate_c_source()
98 stream << "\n"; in generate_c_source()
99 stream << indent_str; in generate_c_source()
100 stream << "const char *"; in generate_c_source()
101 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
102 stream << "_purpose = \""; in generate_c_source()
103 generate_string (purpose, stream, indent + indent_str.length ()); in generate_c_source()
104 stream << "\";"; in generate_c_source()
105 stream << "\n"; in generate_c_source()
106 stream << indent_str; in generate_c_source()
107 stream << "\n"; in generate_c_source()
108 stream << indent_str; in generate_c_source()
109 stream << "const char *"; in generate_c_source()
110 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
111 stream << "_usage = \"Usage: "; in generate_c_source()
114 stream << "\" "; in generate_c_source()
115 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
116 stream << " \""; in generate_c_source()
118 generate_string (usage_string, stream, indent + indent_str.length ()); in generate_c_source()
119 stream << "\";"; in generate_c_source()
120 stream << "\n"; in generate_c_source()
121 stream << indent_str; in generate_c_source()
122 stream << "\n"; in generate_c_source()
123 stream << indent_str; in generate_c_source()
124 stream << "const char *"; in generate_c_source()
125 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
126 stream << "_versiontext = \""; in generate_c_source()
127 generate_string (versiontext, stream, indent + indent_str.length ()); in generate_c_source()
128 stream << "\";"; in generate_c_source()
129 stream << "\n"; in generate_c_source()
130 stream << indent_str; in generate_c_source()
131 stream << "\n"; in generate_c_source()
132 stream << indent_str; in generate_c_source()
133 stream << "const char *"; in generate_c_source()
134 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
135 stream << "_description = \""; in generate_c_source()
136 generate_string (description, stream, indent + indent_str.length ()); in generate_c_source()
137 stream << "\";"; in generate_c_source()
138 stream << "\n"; in generate_c_source()
139 stream << indent_str; in generate_c_source()
140 stream << "\n"; in generate_c_source()
141 stream << indent_str; in generate_c_source()
146 stream << "const char *"; in generate_c_source()
147 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
148 stream << "_detailed_help[] = {"; in generate_c_source()
149 stream << "\n"; in generate_c_source()
150 stream << indent_str; in generate_c_source()
152 stream << " "; in generate_c_source()
154 generate_string (detailed_help_option_print, stream, indent + indent_str.length ()); in generate_c_source()
156 generate_detailed_help_option_print (stream, indent + indent_str.length ()); in generate_c_source()
157 stream << " 0"; in generate_c_source()
159 stream << "\n"; in generate_c_source()
160 stream << indent_str; in generate_c_source()
161 stream << "};"; in generate_c_source()
162 stream << "\n"; in generate_c_source()
163 stream << indent_str; in generate_c_source()
166 stream << "static void"; in generate_c_source()
167 stream << "\n"; in generate_c_source()
168 stream << indent_str; in generate_c_source()
169 stream << "init_full_help_array(void)"; in generate_c_source()
170 stream << "\n"; in generate_c_source()
171 stream << indent_str; in generate_c_source()
172 stream << "{"; in generate_c_source()
173 stream << "\n"; in generate_c_source()
174 stream << indent_str; in generate_c_source()
176 stream << " "; in generate_c_source()
178 generate_string (full_help_option_print, stream, indent + indent_str.length ()); in generate_c_source()
180 generate_full_help_option_print (stream, indent + indent_str.length ()); in generate_c_source()
182 stream << "\n"; in generate_c_source()
183 stream << indent_str; in generate_c_source()
184 stream << "}"; in generate_c_source()
185 stream << "\n"; in generate_c_source()
186 stream << indent_str; in generate_c_source()
187 stream << "\n"; in generate_c_source()
188 stream << indent_str; in generate_c_source()
189 stream << "const char *"; in generate_c_source()
190 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
191 stream << "_full_help["; in generate_c_source()
192 generate_string (help_string_num, stream, indent + indent_str.length ()); in generate_c_source()
193 stream << "];"; in generate_c_source()
194 stream << "\n"; in generate_c_source()
195 stream << indent_str; in generate_c_source()
202 stream << "const char *"; in generate_c_source()
203 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
204 stream << "_full_help[] = {"; in generate_c_source()
205 stream << "\n"; in generate_c_source()
206 stream << indent_str; in generate_c_source()
208 stream << " "; in generate_c_source()
210 generate_string (full_help_option_print, stream, indent + indent_str.length ()); in generate_c_source()
212 generate_full_help_option_print (stream, indent + indent_str.length ()); in generate_c_source()
213 stream << " 0"; in generate_c_source()
215 stream << "\n"; in generate_c_source()
216 stream << indent_str; in generate_c_source()
217 stream << "};"; in generate_c_source()
218 stream << "\n"; in generate_c_source()
219 stream << indent_str; in generate_c_source()
222 stream << "\n"; in generate_c_source()
223 stream << indent_str; in generate_c_source()
224 stream << "static void"; in generate_c_source()
225 stream << "\n"; in generate_c_source()
226 stream << indent_str; in generate_c_source()
227 stream << "init_help_array(void)"; in generate_c_source()
228 stream << "\n"; in generate_c_source()
229 stream << indent_str; in generate_c_source()
230 stream << "{"; in generate_c_source()
231 stream << "\n"; in generate_c_source()
232 stream << indent_str; in generate_c_source()
234 stream << " "; in generate_c_source()
236 generate_string (help_option_print, stream, indent + indent_str.length ()); in generate_c_source()
238 generate_help_option_print (stream, indent + indent_str.length ()); in generate_c_source()
240 stream << "\n"; in generate_c_source()
241 stream << indent_str; in generate_c_source()
242 stream << "}"; in generate_c_source()
243 stream << "\n"; in generate_c_source()
244 stream << indent_str; in generate_c_source()
245 stream << "\n"; in generate_c_source()
246 stream << indent_str; in generate_c_source()
247 stream << "const char *"; in generate_c_source()
248 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
249 stream << "_help["; in generate_c_source()
250 generate_string (help_string_num, stream, indent + indent_str.length ()); in generate_c_source()
251 stream << "];"; in generate_c_source()
252 stream << "\n"; in generate_c_source()
253 stream << indent_str; in generate_c_source()
257 stream << "const char *"; in generate_c_source()
258 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
259 stream << "_help[] = {"; in generate_c_source()
260 stream << "\n"; in generate_c_source()
261 stream << indent_str; in generate_c_source()
263 stream << " "; in generate_c_source()
265 generate_string (help_option_print, stream, indent + indent_str.length ()); in generate_c_source()
267 generate_help_option_print (stream, indent + indent_str.length ()); in generate_c_source()
268 stream << " 0"; in generate_c_source()
270 stream << "\n"; in generate_c_source()
271 stream << indent_str; in generate_c_source()
272 stream << "};"; in generate_c_source()
273 stream << "\n"; in generate_c_source()
274 stream << indent_str; in generate_c_source()
276 stream << "\n"; in generate_c_source()
277 stream << indent_str; in generate_c_source()
278 stream << "typedef enum {ARG_NO"; in generate_c_source()
279 stream << "\n"; in generate_c_source()
280 stream << indent_str; in generate_c_source()
283 stream << " , ARG_FLAG"; in generate_c_source()
284 stream << "\n"; in generate_c_source()
285 stream << indent_str; in generate_c_source()
289 stream << " , ARG_STRING"; in generate_c_source()
290 stream << "\n"; in generate_c_source()
291 stream << indent_str; in generate_c_source()
295 stream << " , ARG_INT"; in generate_c_source()
296 stream << "\n"; in generate_c_source()
297 stream << indent_str; in generate_c_source()
301 stream << " , ARG_SHORT"; in generate_c_source()
302 stream << "\n"; in generate_c_source()
303 stream << indent_str; in generate_c_source()
307 stream << " , ARG_LONG"; in generate_c_source()
308 stream << "\n"; in generate_c_source()
309 stream << indent_str; in generate_c_source()
313 stream << " , ARG_FLOAT"; in generate_c_source()
314 stream << "\n"; in generate_c_source()
315 stream << indent_str; in generate_c_source()
319 stream << " , ARG_DOUBLE"; in generate_c_source()
320 stream << "\n"; in generate_c_source()
321 stream << indent_str; in generate_c_source()
325 stream << " , ARG_LONGDOUBLE"; in generate_c_source()
326 stream << "\n"; in generate_c_source()
327 stream << indent_str; in generate_c_source()
331 stream << " , ARG_LONGLONG"; in generate_c_source()
332 stream << "\n"; in generate_c_source()
333 stream << indent_str; in generate_c_source()
337 stream << " , ARG_ENUM"; in generate_c_source()
338 stream << "\n"; in generate_c_source()
339 stream << indent_str; in generate_c_source()
341 stream << "} "; in generate_c_source()
342 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
343 stream << "_arg_type;"; in generate_c_source()
344 stream << "\n"; in generate_c_source()
345 stream << indent_str; in generate_c_source()
346 stream << "\n"; in generate_c_source()
347 stream << indent_str; in generate_c_source()
348 stream << "static"; in generate_c_source()
349 stream << "\n"; in generate_c_source()
350 stream << indent_str; in generate_c_source()
351 stream << "void clear_given (struct "; in generate_c_source()
352 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
353 stream << " *args_info);"; in generate_c_source()
354 stream << "\n"; in generate_c_source()
355 stream << indent_str; in generate_c_source()
356 stream << "static"; in generate_c_source()
357 stream << "\n"; in generate_c_source()
358 stream << indent_str; in generate_c_source()
359 stream << "void clear_args (struct "; in generate_c_source()
360 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
361 stream << " *args_info);"; in generate_c_source()
362 stream << "\n"; in generate_c_source()
363 stream << indent_str; in generate_c_source()
364 stream << "\n"; in generate_c_source()
365 stream << indent_str; in generate_c_source()
366 stream << "static int"; in generate_c_source()
367 stream << "\n"; in generate_c_source()
368 stream << indent_str; in generate_c_source()
369 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
370 stream << "_internal (int argc, char **argv, struct "; in generate_c_source()
371 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
372 stream << " *args_info,"; in generate_c_source()
373 stream << "\n"; in generate_c_source()
374 stream << indent_str; in generate_c_source()
375 stream << " struct "; in generate_c_source()
376 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
377 stream << "_params *params, const char *additional_error);"; in generate_c_source()
378 stream << "\n"; in generate_c_source()
379 stream << indent_str; in generate_c_source()
380 stream << "\n"; in generate_c_source()
381 stream << indent_str; in generate_c_source()
384 stream << "static int"; in generate_c_source()
385 stream << "\n"; in generate_c_source()
386 stream << indent_str; in generate_c_source()
387 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
388 stream << "_required2 (struct "; in generate_c_source()
389 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
390 stream << " *args_info, const char *prog_name, const char *additional_error);"; in generate_c_source()
391 stream << "\n"; in generate_c_source()
392 stream << indent_str; in generate_c_source()
396 stream << "struct line_list"; in generate_c_source()
397 stream << "\n"; in generate_c_source()
398 stream << indent_str; in generate_c_source()
399 stream << "{"; in generate_c_source()
400 stream << "\n"; in generate_c_source()
401 stream << indent_str; in generate_c_source()
402 stream << " char * string_arg;"; in generate_c_source()
403 stream << "\n"; in generate_c_source()
404 stream << indent_str; in generate_c_source()
405 stream << " struct line_list * next;"; in generate_c_source()
406 stream << "\n"; in generate_c_source()
407 stream << indent_str; in generate_c_source()
408 stream << "};"; in generate_c_source()
409 stream << "\n"; in generate_c_source()
410 stream << indent_str; in generate_c_source()
411 stream << "\n"; in generate_c_source()
412 stream << indent_str; in generate_c_source()
413 stream << "static struct line_list *cmd_line_list = 0;"; in generate_c_source()
414 stream << "\n"; in generate_c_source()
415 stream << indent_str; in generate_c_source()
416 stream << "static struct line_list *cmd_line_list_tmp = 0;"; in generate_c_source()
417 stream << "\n"; in generate_c_source()
418 stream << indent_str; in generate_c_source()
419 stream << "\n"; in generate_c_source()
420 stream << indent_str; in generate_c_source()
421 stream << "static void"; in generate_c_source()
422 stream << "\n"; in generate_c_source()
423 stream << indent_str; in generate_c_source()
424 stream << "free_cmd_list(void)"; in generate_c_source()
425 stream << "\n"; in generate_c_source()
426 stream << indent_str; in generate_c_source()
427 stream << "{"; in generate_c_source()
428 stream << "\n"; in generate_c_source()
429 stream << indent_str; in generate_c_source()
430 stream << " /* free the list of a previous call */"; in generate_c_source()
431 stream << "\n"; in generate_c_source()
432 stream << indent_str; in generate_c_source()
433 stream << " if (cmd_line_list)"; in generate_c_source()
434 stream << "\n"; in generate_c_source()
435 stream << indent_str; in generate_c_source()
436 stream << " {"; in generate_c_source()
437 stream << "\n"; in generate_c_source()
438 stream << indent_str; in generate_c_source()
439 stream << " while (cmd_line_list) {"; in generate_c_source()
440 stream << "\n"; in generate_c_source()
441 stream << indent_str; in generate_c_source()
442 stream << " cmd_line_list_tmp = cmd_line_list;"; in generate_c_source()
443 stream << "\n"; in generate_c_source()
444 stream << indent_str; in generate_c_source()
445 stream << " cmd_line_list = cmd_line_list->next;"; in generate_c_source()
446 stream << "\n"; in generate_c_source()
447 stream << indent_str; in generate_c_source()
448 stream << " free (cmd_line_list_tmp->string_arg);"; in generate_c_source()
449 stream << "\n"; in generate_c_source()
450 stream << indent_str; in generate_c_source()
451 stream << " free (cmd_line_list_tmp);"; in generate_c_source()
452 stream << "\n"; in generate_c_source()
453 stream << indent_str; in generate_c_source()
454 stream << " }"; in generate_c_source()
455 stream << "\n"; in generate_c_source()
456 stream << indent_str; in generate_c_source()
457 stream << " }"; in generate_c_source()
458 stream << "\n"; in generate_c_source()
459 stream << indent_str; in generate_c_source()
460 stream << "}"; in generate_c_source()
461 stream << "\n"; in generate_c_source()
462 stream << indent_str; in generate_c_source()
463 stream << "\n"; in generate_c_source()
464 stream << indent_str; in generate_c_source()
466 stream << "\n"; in generate_c_source()
467 stream << indent_str; in generate_c_source()
469 generate_string (option_values, stream, indent + indent_str.length ()); in generate_c_source()
471 generate_option_values (stream, indent + indent_str.length ()); in generate_c_source()
472 stream << indent_str; in generate_c_source()
475 stream << "static char *"; in generate_c_source()
476 stream << "\n"; in generate_c_source()
477 stream << indent_str; in generate_c_source()
478 stream << "gengetopt_strdup (const char *s);"; in generate_c_source()
479 stream << "\n"; in generate_c_source()
480 stream << indent_str; in generate_c_source()
481 stream << "\n"; in generate_c_source()
482 stream << indent_str; in generate_c_source()
484 stream << "static"; in generate_c_source()
485 stream << "\n"; in generate_c_source()
486 stream << indent_str; in generate_c_source()
487 stream << "void clear_given (struct "; in generate_c_source()
488 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
489 stream << " *args_info)"; in generate_c_source()
490 stream << "\n"; in generate_c_source()
491 stream << indent_str; in generate_c_source()
492 stream << "{"; in generate_c_source()
493 stream << "\n"; in generate_c_source()
494 stream << indent_str; in generate_c_source()
497 generate_string (given_init, stream, indent + indent_str.length ()); in generate_c_source()
499 generate_given_init (stream, indent + indent_str.length ()); in generate_c_source()
501 stream << indent_str; in generate_c_source()
502 stream << "}"; in generate_c_source()
503 stream << "\n"; in generate_c_source()
504 stream << indent_str; in generate_c_source()
505 stream << "\n"; in generate_c_source()
506 stream << indent_str; in generate_c_source()
507 stream << "static"; in generate_c_source()
508 stream << "\n"; in generate_c_source()
509 stream << indent_str; in generate_c_source()
510 stream << "void clear_args (struct "; in generate_c_source()
511 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
512 stream << " *args_info)"; in generate_c_source()
513 stream << "\n"; in generate_c_source()
514 stream << indent_str; in generate_c_source()
515 stream << "{"; in generate_c_source()
516 stream << "\n"; in generate_c_source()
517 stream << indent_str; in generate_c_source()
518 stream << " FIX_UNUSED (args_info);"; in generate_c_source()
519 stream << "\n"; in generate_c_source()
520 stream << indent_str; in generate_c_source()
522 stream << " "; in generate_c_source()
524 generate_string (clear_arg, stream, indent + indent_str.length ()); in generate_c_source()
526 generate_clear_arg (stream, indent + indent_str.length ()); in generate_c_source()
528 stream << "\n"; in generate_c_source()
529 stream << indent_str; in generate_c_source()
530 stream << "}"; in generate_c_source()
531 stream << "\n"; in generate_c_source()
532 stream << indent_str; in generate_c_source()
533 stream << "\n"; in generate_c_source()
534 stream << indent_str; in generate_c_source()
535 stream << "static"; in generate_c_source()
536 stream << "\n"; in generate_c_source()
537 stream << indent_str; in generate_c_source()
538 stream << "void init_args_info(struct "; in generate_c_source()
539 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
540 stream << " *args_info)"; in generate_c_source()
541 stream << "\n"; in generate_c_source()
542 stream << indent_str; in generate_c_source()
543 stream << "{"; in generate_c_source()
544 stream << "\n"; in generate_c_source()
545 stream << indent_str; in generate_c_source()
548 stream << " init_full_help_array(); "; in generate_c_source()
550 stream << "\n"; in generate_c_source()
551 stream << indent_str; in generate_c_source()
554 stream << " init_help_array(); "; in generate_c_source()
556 stream << "\n"; in generate_c_source()
557 stream << indent_str; in generate_c_source()
559 stream << " "; in generate_c_source()
561 generate_string (init_args_info, stream, indent + indent_str.length ()); in generate_c_source()
563 generate_init_args_info (stream, indent + indent_str.length ()); in generate_c_source()
565 stream << "\n"; in generate_c_source()
566 stream << indent_str; in generate_c_source()
567 stream << "}"; in generate_c_source()
568 stream << "\n"; in generate_c_source()
569 stream << indent_str; in generate_c_source()
570 stream << "\n"; in generate_c_source()
571 stream << indent_str; in generate_c_source()
572 stream << "void"; in generate_c_source()
573 stream << "\n"; in generate_c_source()
574 stream << indent_str; in generate_c_source()
575 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
576 stream << "_print_version (void)"; in generate_c_source()
577 stream << "\n"; in generate_c_source()
578 stream << indent_str; in generate_c_source()
579 stream << "{"; in generate_c_source()
580 stream << "\n"; in generate_c_source()
581 stream << indent_str; in generate_c_source()
582 stream << " printf (\"%s %s\\n\","; in generate_c_source()
583 stream << "\n"; in generate_c_source()
584 stream << indent_str; in generate_c_source()
585 stream << " (strlen("; in generate_c_source()
586 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
587 stream << "_NAME) ? "; in generate_c_source()
588 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
589 stream << "_NAME : "; in generate_c_source()
590 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
591 stream << "),"; in generate_c_source()
592 stream << "\n"; in generate_c_source()
593 stream << indent_str; in generate_c_source()
595 stream << " "; in generate_c_source()
596 generate_string (version_var_name, stream, indent + indent_str.length ()); in generate_c_source()
597 stream << ");"; in generate_c_source()
599 stream << "\n"; in generate_c_source()
600 stream << indent_str; in generate_c_source()
601 stream << "\n"; in generate_c_source()
602 stream << indent_str; in generate_c_source()
603 stream << " if (strlen("; in generate_c_source()
604 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
605 stream << "_versiontext) > 0)"; in generate_c_source()
606 stream << "\n"; in generate_c_source()
607 stream << indent_str; in generate_c_source()
608 stream << " printf(\"\\n%s\\n\", "; in generate_c_source()
609 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
610 stream << "_versiontext);"; in generate_c_source()
611 stream << "\n"; in generate_c_source()
612 stream << indent_str; in generate_c_source()
613 stream << "}"; in generate_c_source()
614 stream << "\n"; in generate_c_source()
615 stream << indent_str; in generate_c_source()
616 stream << "\n"; in generate_c_source()
617 stream << indent_str; in generate_c_source()
618 stream << "static void print_help_common(void)"; in generate_c_source()
619 stream << "\n"; in generate_c_source()
620 stream << indent_str; in generate_c_source()
621 stream << "{"; in generate_c_source()
622 stream << "\n"; in generate_c_source()
623 stream << indent_str; in generate_c_source()
624 stream << " size_t len_purpose = strlen("; in generate_c_source()
625 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
626 stream << "_purpose);"; in generate_c_source()
627 stream << "\n"; in generate_c_source()
628 stream << indent_str; in generate_c_source()
629 stream << " size_t len_usage = strlen("; in generate_c_source()
630 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
631 stream << "_usage);"; in generate_c_source()
632 stream << "\n"; in generate_c_source()
633 stream << indent_str; in generate_c_source()
634 stream << "\n"; in generate_c_source()
635 stream << indent_str; in generate_c_source()
636 stream << " if (len_usage > 0) {"; in generate_c_source()
637 stream << "\n"; in generate_c_source()
638 stream << indent_str; in generate_c_source()
639 stream << " printf(\"%s\\n\", "; in generate_c_source()
640 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
641 stream << "_usage);"; in generate_c_source()
642 stream << "\n"; in generate_c_source()
643 stream << indent_str; in generate_c_source()
644 stream << " }"; in generate_c_source()
645 stream << "\n"; in generate_c_source()
646 stream << indent_str; in generate_c_source()
647 stream << " if (len_purpose > 0) {"; in generate_c_source()
648 stream << "\n"; in generate_c_source()
649 stream << indent_str; in generate_c_source()
650 stream << " printf(\"%s\\n\", "; in generate_c_source()
651 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
652 stream << "_purpose);"; in generate_c_source()
653 stream << "\n"; in generate_c_source()
654 stream << indent_str; in generate_c_source()
655 stream << " }"; in generate_c_source()
656 stream << "\n"; in generate_c_source()
657 stream << indent_str; in generate_c_source()
658 stream << "\n"; in generate_c_source()
659 stream << indent_str; in generate_c_source()
660 stream << " if (len_usage || len_purpose) {"; in generate_c_source()
661 stream << "\n"; in generate_c_source()
662 stream << indent_str; in generate_c_source()
663 stream << " printf(\"\\n\");"; in generate_c_source()
664 stream << "\n"; in generate_c_source()
665 stream << indent_str; in generate_c_source()
666 stream << " }"; in generate_c_source()
667 stream << "\n"; in generate_c_source()
668 stream << indent_str; in generate_c_source()
669 stream << "\n"; in generate_c_source()
670 stream << indent_str; in generate_c_source()
671 stream << " if (strlen("; in generate_c_source()
672 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
673 stream << "_description) > 0) {"; in generate_c_source()
674 stream << "\n"; in generate_c_source()
675 stream << indent_str; in generate_c_source()
676 stream << " printf(\"%s\\n\\n\", "; in generate_c_source()
677 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
678 stream << "_description);"; in generate_c_source()
679 stream << "\n"; in generate_c_source()
680 stream << indent_str; in generate_c_source()
681 stream << " }"; in generate_c_source()
682 stream << "\n"; in generate_c_source()
683 stream << indent_str; in generate_c_source()
684 stream << "}"; in generate_c_source()
685 stream << "\n"; in generate_c_source()
686 stream << indent_str; in generate_c_source()
687 stream << "\n"; in generate_c_source()
688 stream << indent_str; in generate_c_source()
689 stream << "void"; in generate_c_source()
690 stream << "\n"; in generate_c_source()
691 stream << indent_str; in generate_c_source()
692 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
693 stream << "_print_help (void)"; in generate_c_source()
694 stream << "\n"; in generate_c_source()
695 stream << indent_str; in generate_c_source()
696 stream << "{"; in generate_c_source()
697 stream << "\n"; in generate_c_source()
698 stream << indent_str; in generate_c_source()
699 stream << " int i = 0;"; in generate_c_source()
700 stream << "\n"; in generate_c_source()
701 stream << indent_str; in generate_c_source()
702 stream << " print_help_common();"; in generate_c_source()
703 stream << "\n"; in generate_c_source()
704 stream << indent_str; in generate_c_source()
705 stream << " while ("; in generate_c_source()
706 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
707 stream << "_help[i])"; in generate_c_source()
708 stream << "\n"; in generate_c_source()
709 stream << indent_str; in generate_c_source()
710 stream << " printf(\"%s\\n\", "; in generate_c_source()
711 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
712 stream << "_help[i++]);"; in generate_c_source()
713 stream << "\n"; in generate_c_source()
714 stream << indent_str; in generate_c_source()
715 stream << "}"; in generate_c_source()
716 stream << "\n"; in generate_c_source()
717 stream << indent_str; in generate_c_source()
718 stream << "\n"; in generate_c_source()
719 stream << indent_str; in generate_c_source()
722 stream << "void"; in generate_c_source()
723 stream << "\n"; in generate_c_source()
724 stream << indent_str; in generate_c_source()
725 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
726 stream << "_print_full_help (void)"; in generate_c_source()
727 stream << "\n"; in generate_c_source()
728 stream << indent_str; in generate_c_source()
729 stream << "{"; in generate_c_source()
730 stream << "\n"; in generate_c_source()
731 stream << indent_str; in generate_c_source()
732 stream << " int i = 0;"; in generate_c_source()
733 stream << "\n"; in generate_c_source()
734 stream << indent_str; in generate_c_source()
735 stream << " print_help_common();"; in generate_c_source()
736 stream << "\n"; in generate_c_source()
737 stream << indent_str; in generate_c_source()
738 stream << " while ("; in generate_c_source()
739 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
740 stream << "_full_help[i])"; in generate_c_source()
741 stream << "\n"; in generate_c_source()
742 stream << indent_str; in generate_c_source()
743 stream << " printf(\"%s\\n\", "; in generate_c_source()
744 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
745 stream << "_full_help[i++]);"; in generate_c_source()
746 stream << "\n"; in generate_c_source()
747 stream << indent_str; in generate_c_source()
748 stream << "}"; in generate_c_source()
749 stream << "\n"; in generate_c_source()
750 stream << indent_str; in generate_c_source()
751 stream << "\n"; in generate_c_source()
752 stream << indent_str; in generate_c_source()
756 stream << "void"; in generate_c_source()
757 stream << "\n"; in generate_c_source()
758 stream << indent_str; in generate_c_source()
759 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
760 stream << "_print_detailed_help (void)"; in generate_c_source()
761 stream << "\n"; in generate_c_source()
762 stream << indent_str; in generate_c_source()
763 stream << "{"; in generate_c_source()
764 stream << "\n"; in generate_c_source()
765 stream << indent_str; in generate_c_source()
766 stream << " int i = 0;"; in generate_c_source()
767 stream << "\n"; in generate_c_source()
768 stream << indent_str; in generate_c_source()
769 stream << " print_help_common();"; in generate_c_source()
770 stream << "\n"; in generate_c_source()
771 stream << indent_str; in generate_c_source()
772 stream << " while ("; in generate_c_source()
773 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
774 stream << "_detailed_help[i])"; in generate_c_source()
775 stream << "\n"; in generate_c_source()
776 stream << indent_str; in generate_c_source()
777 stream << " printf(\"%s\\n\", "; in generate_c_source()
778 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
779 stream << "_detailed_help[i++]);"; in generate_c_source()
780 stream << "\n"; in generate_c_source()
781 stream << indent_str; in generate_c_source()
782 stream << "}"; in generate_c_source()
783 stream << "\n"; in generate_c_source()
784 stream << indent_str; in generate_c_source()
785 stream << "\n"; in generate_c_source()
786 stream << indent_str; in generate_c_source()
788 stream << "void"; in generate_c_source()
789 stream << "\n"; in generate_c_source()
790 stream << indent_str; in generate_c_source()
791 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
792 stream << "_init (struct "; in generate_c_source()
793 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
794 stream << " *args_info)"; in generate_c_source()
795 stream << "\n"; in generate_c_source()
796 stream << indent_str; in generate_c_source()
797 stream << "{"; in generate_c_source()
798 stream << "\n"; in generate_c_source()
799 stream << indent_str; in generate_c_source()
800 stream << " clear_given (args_info);"; in generate_c_source()
801 stream << "\n"; in generate_c_source()
802 stream << indent_str; in generate_c_source()
803 stream << " clear_args (args_info);"; in generate_c_source()
804 stream << "\n"; in generate_c_source()
805 stream << indent_str; in generate_c_source()
806 stream << " init_args_info (args_info);"; in generate_c_source()
807 stream << "\n"; in generate_c_source()
808 stream << indent_str; in generate_c_source()
811 stream << "\n"; in generate_c_source()
812 stream << indent_str; in generate_c_source()
813 stream << " args_info->inputs = 0;"; in generate_c_source()
814 stream << "\n"; in generate_c_source()
815 stream << indent_str; in generate_c_source()
816 stream << " args_info->inputs_num = 0;"; in generate_c_source()
817 stream << "\n"; in generate_c_source()
818 stream << indent_str; in generate_c_source()
820 stream << "}"; in generate_c_source()
821 stream << "\n"; in generate_c_source()
822 stream << indent_str; in generate_c_source()
823 stream << "\n"; in generate_c_source()
824 stream << indent_str; in generate_c_source()
825 stream << "void"; in generate_c_source()
826 stream << "\n"; in generate_c_source()
827 stream << indent_str; in generate_c_source()
828 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
829 stream << "_params_init(struct "; in generate_c_source()
830 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
831 stream << "_params *params)"; in generate_c_source()
832 stream << "\n"; in generate_c_source()
833 stream << indent_str; in generate_c_source()
834 stream << "{"; in generate_c_source()
835 stream << "\n"; in generate_c_source()
836 stream << indent_str; in generate_c_source()
837 stream << " if (params)"; in generate_c_source()
838 stream << "\n"; in generate_c_source()
839 stream << indent_str; in generate_c_source()
840 stream << " { "; in generate_c_source()
841 stream << "\n"; in generate_c_source()
842 stream << indent_str; in generate_c_source()
843 stream << " params->override = 0;"; in generate_c_source()
844 stream << "\n"; in generate_c_source()
845 stream << indent_str; in generate_c_source()
846 stream << " params->initialize = 1;"; in generate_c_source()
847 stream << "\n"; in generate_c_source()
848 stream << indent_str; in generate_c_source()
849 stream << " params->check_required = 1;"; in generate_c_source()
850 stream << "\n"; in generate_c_source()
851 stream << indent_str; in generate_c_source()
852 stream << " params->check_ambiguity = 0;"; in generate_c_source()
853 stream << "\n"; in generate_c_source()
854 stream << indent_str; in generate_c_source()
855 stream << " params->print_errors = 1;"; in generate_c_source()
856 stream << "\n"; in generate_c_source()
857 stream << indent_str; in generate_c_source()
858 stream << " }"; in generate_c_source()
859 stream << "\n"; in generate_c_source()
860 stream << indent_str; in generate_c_source()
861 stream << "}"; in generate_c_source()
862 stream << "\n"; in generate_c_source()
863 stream << indent_str; in generate_c_source()
864 stream << "\n"; in generate_c_source()
865 stream << indent_str; in generate_c_source()
866 stream << "struct "; in generate_c_source()
867 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
868 stream << "_params *"; in generate_c_source()
869 stream << "\n"; in generate_c_source()
870 stream << indent_str; in generate_c_source()
871 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
872 stream << "_params_create(void)"; in generate_c_source()
873 stream << "\n"; in generate_c_source()
874 stream << indent_str; in generate_c_source()
875 stream << "{"; in generate_c_source()
876 stream << "\n"; in generate_c_source()
877 stream << indent_str; in generate_c_source()
878 stream << " struct "; in generate_c_source()
879 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
880 stream << "_params *params = "; in generate_c_source()
881 stream << "\n"; in generate_c_source()
882 stream << indent_str; in generate_c_source()
883 stream << " (struct "; in generate_c_source()
884 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
885 stream << "_params *)malloc(sizeof(struct "; in generate_c_source()
886 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
887 stream << "_params));"; in generate_c_source()
888 stream << "\n"; in generate_c_source()
889 stream << indent_str; in generate_c_source()
891 stream << " "; in generate_c_source()
892 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
893 stream << "_params_init(params); "; in generate_c_source()
895 stream << "\n"; in generate_c_source()
896 stream << indent_str; in generate_c_source()
897 stream << " return params;"; in generate_c_source()
898 stream << "\n"; in generate_c_source()
899 stream << indent_str; in generate_c_source()
900 stream << "}"; in generate_c_source()
901 stream << "\n"; in generate_c_source()
902 stream << indent_str; in generate_c_source()
903 stream << "\n"; in generate_c_source()
904 stream << indent_str; in generate_c_source()
907 stream << "static void"; in generate_c_source()
908 stream << "\n"; in generate_c_source()
909 stream << indent_str; in generate_c_source()
910 stream << "free_string_field (char **s)"; in generate_c_source()
911 stream << "\n"; in generate_c_source()
912 stream << indent_str; in generate_c_source()
913 stream << "{"; in generate_c_source()
914 stream << "\n"; in generate_c_source()
915 stream << indent_str; in generate_c_source()
916 stream << " if (*s)"; in generate_c_source()
917 stream << "\n"; in generate_c_source()
918 stream << indent_str; in generate_c_source()
919 stream << " {"; in generate_c_source()
920 stream << "\n"; in generate_c_source()
921 stream << indent_str; in generate_c_source()
922 stream << " free (*s);"; in generate_c_source()
923 stream << "\n"; in generate_c_source()
924 stream << indent_str; in generate_c_source()
925 stream << " *s = 0;"; in generate_c_source()
926 stream << "\n"; in generate_c_source()
927 stream << indent_str; in generate_c_source()
928 stream << " }"; in generate_c_source()
929 stream << "\n"; in generate_c_source()
930 stream << indent_str; in generate_c_source()
931 stream << "}"; in generate_c_source()
932 stream << "\n"; in generate_c_source()
933 stream << indent_str; in generate_c_source()
935 stream << "\n"; in generate_c_source()
936 stream << indent_str; in generate_c_source()
939 stream << "/** "; in generate_c_source()
940 stream << "@"; in generate_c_source()
941 stream << "brief generic value variable */"; in generate_c_source()
942 stream << "\n"; in generate_c_source()
943 stream << indent_str; in generate_c_source()
944 stream << "union generic_value {"; in generate_c_source()
945 stream << "\n"; in generate_c_source()
946 stream << indent_str; in generate_c_source()
949 stream << " int int_arg;"; in generate_c_source()
950 stream << "\n"; in generate_c_source()
951 stream << indent_str; in generate_c_source()
955 stream << " short short_arg;"; in generate_c_source()
956 stream << "\n"; in generate_c_source()
957 stream << indent_str; in generate_c_source()
961 stream << " long long_arg;"; in generate_c_source()
962 stream << "\n"; in generate_c_source()
963 stream << indent_str; in generate_c_source()
967 stream << " float float_arg;"; in generate_c_source()
968 stream << "\n"; in generate_c_source()
969 stream << indent_str; in generate_c_source()
973 stream << " double double_arg;"; in generate_c_source()
974 stream << "\n"; in generate_c_source()
975 stream << indent_str; in generate_c_source()
979 stream << " long double longdouble_arg;"; in generate_c_source()
980 stream << "\n"; in generate_c_source()
981 stream << indent_str; in generate_c_source()
985 stream << "#if defined(HAVE_LONG_LONG) || defined(HAVE_LONG_LONG_INT)"; in generate_c_source()
986 stream << "\n"; in generate_c_source()
987 stream << indent_str; in generate_c_source()
988 stream << " long long int longlong_arg;"; in generate_c_source()
989 stream << "\n"; in generate_c_source()
990 stream << indent_str; in generate_c_source()
991 stream << "#else"; in generate_c_source()
992 stream << "\n"; in generate_c_source()
993 stream << indent_str; in generate_c_source()
994 stream << " long longlong_arg;"; in generate_c_source()
995 stream << "\n"; in generate_c_source()
996 stream << indent_str; in generate_c_source()
997 stream << "#endif"; in generate_c_source()
998 stream << "\n"; in generate_c_source()
999 stream << indent_str; in generate_c_source()
1001 stream << " char *string_arg;"; in generate_c_source()
1002 stream << "\n"; in generate_c_source()
1003 stream << indent_str; in generate_c_source()
1004 stream << " const char *default_string_arg;"; in generate_c_source()
1005 stream << "\n"; in generate_c_source()
1006 stream << indent_str; in generate_c_source()
1007 stream << "};"; in generate_c_source()
1008 stream << "\n"; in generate_c_source()
1009 stream << indent_str; in generate_c_source()
1010 stream << "\n"; in generate_c_source()
1011 stream << indent_str; in generate_c_source()
1012 stream << "/** "; in generate_c_source()
1013 stream << "@"; in generate_c_source()
1014 stream << "brief holds temporary values for multiple options */"; in generate_c_source()
1015 stream << "\n"; in generate_c_source()
1016 stream << indent_str; in generate_c_source()
1017 stream << "struct generic_list"; in generate_c_source()
1018 stream << "\n"; in generate_c_source()
1019 stream << indent_str; in generate_c_source()
1020 stream << "{"; in generate_c_source()
1021 stream << "\n"; in generate_c_source()
1022 stream << indent_str; in generate_c_source()
1023 stream << " union generic_value arg;"; in generate_c_source()
1024 stream << "\n"; in generate_c_source()
1025 stream << indent_str; in generate_c_source()
1026 stream << " char *orig;"; in generate_c_source()
1027 stream << "\n"; in generate_c_source()
1028 stream << indent_str; in generate_c_source()
1029 stream << " struct generic_list *next;"; in generate_c_source()
1030 stream << "\n"; in generate_c_source()
1031 stream << indent_str; in generate_c_source()
1032 stream << "};"; in generate_c_source()
1033 stream << "\n"; in generate_c_source()
1034 stream << indent_str; in generate_c_source()
1035 stream << "\n"; in generate_c_source()
1036 stream << indent_str; in generate_c_source()
1037 stream << "/**"; in generate_c_source()
1038 stream << "\n"; in generate_c_source()
1039 stream << indent_str; in generate_c_source()
1040 stream << " * "; in generate_c_source()
1041 stream << "@"; in generate_c_source()
1042 stream << "brief add a node at the head of the list "; in generate_c_source()
1043 stream << "\n"; in generate_c_source()
1044 stream << indent_str; in generate_c_source()
1045 stream << " */"; in generate_c_source()
1046 stream << "\n"; in generate_c_source()
1047 stream << indent_str; in generate_c_source()
1048 stream << "static void add_node(struct generic_list **list) {"; in generate_c_source()
1049 stream << "\n"; in generate_c_source()
1050 stream << indent_str; in generate_c_source()
1051stream << " struct generic_list *new_node = (struct generic_list *) malloc (sizeof (struct generi… in generate_c_source()
1052 stream << "\n"; in generate_c_source()
1053 stream << indent_str; in generate_c_source()
1054 stream << " new_node->next = *list;"; in generate_c_source()
1055 stream << "\n"; in generate_c_source()
1056 stream << indent_str; in generate_c_source()
1057 stream << " *list = new_node;"; in generate_c_source()
1058 stream << "\n"; in generate_c_source()
1059 stream << indent_str; in generate_c_source()
1060 stream << " new_node->arg.string_arg = 0;"; in generate_c_source()
1061 stream << "\n"; in generate_c_source()
1062 stream << indent_str; in generate_c_source()
1063 stream << " new_node->orig = 0;"; in generate_c_source()
1064 stream << "\n"; in generate_c_source()
1065 stream << indent_str; in generate_c_source()
1066 stream << "}"; in generate_c_source()
1067 stream << "\n"; in generate_c_source()
1068 stream << indent_str; in generate_c_source()
1069 stream << "\n"; in generate_c_source()
1070 stream << indent_str; in generate_c_source()
1073 stream << "/**"; in generate_c_source()
1074 stream << "\n"; in generate_c_source()
1075 stream << indent_str; in generate_c_source()
1076 stream << " * The passed arg parameter is NOT set to 0 from this function"; in generate_c_source()
1077 stream << "\n"; in generate_c_source()
1078 stream << indent_str; in generate_c_source()
1079 stream << " */"; in generate_c_source()
1080 stream << "\n"; in generate_c_source()
1081 stream << indent_str; in generate_c_source()
1082 stream << "static void"; in generate_c_source()
1083 stream << "\n"; in generate_c_source()
1084 stream << indent_str; in generate_c_source()
1085 stream << "free_multiple_field(unsigned int len, void *arg, char ***orig)"; in generate_c_source()
1086 stream << "\n"; in generate_c_source()
1087 stream << indent_str; in generate_c_source()
1088 stream << "{"; in generate_c_source()
1089 stream << "\n"; in generate_c_source()
1090 stream << indent_str; in generate_c_source()
1091 stream << " unsigned int i;"; in generate_c_source()
1092 stream << "\n"; in generate_c_source()
1093 stream << indent_str; in generate_c_source()
1094 stream << " if (arg) {"; in generate_c_source()
1095 stream << "\n"; in generate_c_source()
1096 stream << indent_str; in generate_c_source()
1097 stream << " for (i = 0; i < len; ++i)"; in generate_c_source()
1098 stream << "\n"; in generate_c_source()
1099 stream << indent_str; in generate_c_source()
1100 stream << " {"; in generate_c_source()
1101 stream << "\n"; in generate_c_source()
1102 stream << indent_str; in generate_c_source()
1103 stream << " free_string_field(&((*orig)[i]));"; in generate_c_source()
1104 stream << "\n"; in generate_c_source()
1105 stream << indent_str; in generate_c_source()
1106 stream << " }"; in generate_c_source()
1107 stream << "\n"; in generate_c_source()
1108 stream << indent_str; in generate_c_source()
1109 stream << "\n"; in generate_c_source()
1110 stream << indent_str; in generate_c_source()
1111 stream << " free (arg);"; in generate_c_source()
1112 stream << "\n"; in generate_c_source()
1113 stream << indent_str; in generate_c_source()
1114 stream << " free (*orig);"; in generate_c_source()
1115 stream << "\n"; in generate_c_source()
1116 stream << indent_str; in generate_c_source()
1117 stream << " *orig = 0;"; in generate_c_source()
1118 stream << "\n"; in generate_c_source()
1119 stream << indent_str; in generate_c_source()
1120 stream << " }"; in generate_c_source()
1121 stream << "\n"; in generate_c_source()
1122 stream << indent_str; in generate_c_source()
1123 stream << "}"; in generate_c_source()
1124 stream << "\n"; in generate_c_source()
1125 stream << indent_str; in generate_c_source()
1127 stream << "\n"; in generate_c_source()
1128 stream << indent_str; in generate_c_source()
1131 stream << "static void"; in generate_c_source()
1132 stream << "\n"; in generate_c_source()
1133 stream << indent_str; in generate_c_source()
1134 stream << "free_multiple_string_field(unsigned int len, char ***arg, char ***orig)"; in generate_c_source()
1135 stream << "\n"; in generate_c_source()
1136 stream << indent_str; in generate_c_source()
1137 stream << "{"; in generate_c_source()
1138 stream << "\n"; in generate_c_source()
1139 stream << indent_str; in generate_c_source()
1140 stream << " unsigned int i;"; in generate_c_source()
1141 stream << "\n"; in generate_c_source()
1142 stream << indent_str; in generate_c_source()
1143 stream << " if (*arg) {"; in generate_c_source()
1144 stream << "\n"; in generate_c_source()
1145 stream << indent_str; in generate_c_source()
1146 stream << " for (i = 0; i < len; ++i)"; in generate_c_source()
1147 stream << "\n"; in generate_c_source()
1148 stream << indent_str; in generate_c_source()
1149 stream << " {"; in generate_c_source()
1150 stream << "\n"; in generate_c_source()
1151 stream << indent_str; in generate_c_source()
1152 stream << " free_string_field(&((*arg)[i]));"; in generate_c_source()
1153 stream << "\n"; in generate_c_source()
1154 stream << indent_str; in generate_c_source()
1155 stream << " free_string_field(&((*orig)[i]));"; in generate_c_source()
1156 stream << "\n"; in generate_c_source()
1157 stream << indent_str; in generate_c_source()
1158 stream << " }"; in generate_c_source()
1159 stream << "\n"; in generate_c_source()
1160 stream << indent_str; in generate_c_source()
1161 stream << " free_string_field(&((*arg)[0])); /* free default string */"; in generate_c_source()
1162 stream << "\n"; in generate_c_source()
1163 stream << indent_str; in generate_c_source()
1164 stream << "\n"; in generate_c_source()
1165 stream << indent_str; in generate_c_source()
1166 stream << " free (*arg);"; in generate_c_source()
1167 stream << "\n"; in generate_c_source()
1168 stream << indent_str; in generate_c_source()
1169 stream << " *arg = 0;"; in generate_c_source()
1170 stream << "\n"; in generate_c_source()
1171 stream << indent_str; in generate_c_source()
1172 stream << " free (*orig);"; in generate_c_source()
1173 stream << "\n"; in generate_c_source()
1174 stream << indent_str; in generate_c_source()
1175 stream << " *orig = 0;"; in generate_c_source()
1176 stream << "\n"; in generate_c_source()
1177 stream << indent_str; in generate_c_source()
1178 stream << " }"; in generate_c_source()
1179 stream << "\n"; in generate_c_source()
1180 stream << indent_str; in generate_c_source()
1181 stream << "}"; in generate_c_source()
1182 stream << "\n"; in generate_c_source()
1183 stream << indent_str; in generate_c_source()
1186 stream << "\n"; in generate_c_source()
1187 stream << indent_str; in generate_c_source()
1188 stream << "static void"; in generate_c_source()
1189 stream << "\n"; in generate_c_source()
1190 stream << indent_str; in generate_c_source()
1191 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1192 stream << "_release (struct "; in generate_c_source()
1193 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
1194 stream << " *args_info)"; in generate_c_source()
1195 stream << "\n"; in generate_c_source()
1196 stream << indent_str; in generate_c_source()
1197 stream << "{"; in generate_c_source()
1198 stream << "\n"; in generate_c_source()
1199 stream << indent_str; in generate_c_source()
1202 stream << " unsigned int i;"; in generate_c_source()
1204 stream << "\n"; in generate_c_source()
1205 stream << indent_str; in generate_c_source()
1207 stream << " "; in generate_c_source()
1209 generate_string (free, stream, indent + indent_str.length ()); in generate_c_source()
1211 generate_free (stream, indent + indent_str.length ()); in generate_c_source()
1213 stream << "\n"; in generate_c_source()
1214 stream << indent_str; in generate_c_source()
1216 stream << " "; in generate_c_source()
1218 stream << "\n"; in generate_c_source()
1219 stream << indent_str; in generate_c_source()
1222 stream << " for (i = 0; i < args_info->inputs_num; ++i)"; in generate_c_source()
1223 stream << "\n"; in generate_c_source()
1224 stream << indent_str; in generate_c_source()
1225 stream << " free (args_info->inputs [i]);"; in generate_c_source()
1226 stream << "\n"; in generate_c_source()
1227 stream << indent_str; in generate_c_source()
1228 stream << "\n"; in generate_c_source()
1229 stream << indent_str; in generate_c_source()
1230 stream << " if (args_info->inputs_num)"; in generate_c_source()
1231 stream << "\n"; in generate_c_source()
1232 stream << indent_str; in generate_c_source()
1233 stream << " free (args_info->inputs);"; in generate_c_source()
1234 stream << "\n"; in generate_c_source()
1235 stream << indent_str; in generate_c_source()
1237 stream << "\n"; in generate_c_source()
1238 stream << indent_str; in generate_c_source()
1239 stream << " clear_given (args_info);"; in generate_c_source()
1240 stream << "\n"; in generate_c_source()
1241 stream << indent_str; in generate_c_source()
1242 stream << "}"; in generate_c_source()
1243 stream << "\n"; in generate_c_source()
1244 stream << indent_str; in generate_c_source()
1245 stream << "\n"; in generate_c_source()
1246 stream << indent_str; in generate_c_source()
1249 stream << "/**"; in generate_c_source()
1250 stream << "\n"; in generate_c_source()
1251 stream << indent_str; in generate_c_source()
1252 stream << " * "; in generate_c_source()
1253 stream << "@"; in generate_c_source()
1254 stream << "param val the value to check"; in generate_c_source()
1255 stream << "\n"; in generate_c_source()
1256 stream << indent_str; in generate_c_source()
1257 stream << " * "; in generate_c_source()
1258 stream << "@"; in generate_c_source()
1259 stream << "param values the possible values"; in generate_c_source()
1260 stream << "\n"; in generate_c_source()
1261 stream << indent_str; in generate_c_source()
1262 stream << " * "; in generate_c_source()
1263 stream << "@"; in generate_c_source()
1264 stream << "return the index of the matched value:"; in generate_c_source()
1265 stream << "\n"; in generate_c_source()
1266 stream << indent_str; in generate_c_source()
1267 stream << " * -1 if no value matched,"; in generate_c_source()
1268 stream << "\n"; in generate_c_source()
1269 stream << indent_str; in generate_c_source()
1270 stream << " * -2 if more than one value has matched"; in generate_c_source()
1271 stream << "\n"; in generate_c_source()
1272 stream << indent_str; in generate_c_source()
1273 stream << " */"; in generate_c_source()
1274 stream << "\n"; in generate_c_source()
1275 stream << indent_str; in generate_c_source()
1276 stream << "static int"; in generate_c_source()
1277 stream << "\n"; in generate_c_source()
1278 stream << indent_str; in generate_c_source()
1279 stream << "check_possible_values(const char *val, const char *values[])"; in generate_c_source()
1280 stream << "\n"; in generate_c_source()
1281 stream << indent_str; in generate_c_source()
1282 stream << "{"; in generate_c_source()
1283 stream << "\n"; in generate_c_source()
1284 stream << indent_str; in generate_c_source()
1285 stream << " int i, found, last;"; in generate_c_source()
1286 stream << "\n"; in generate_c_source()
1287 stream << indent_str; in generate_c_source()
1288 stream << " size_t len;"; in generate_c_source()
1289 stream << "\n"; in generate_c_source()
1290 stream << indent_str; in generate_c_source()
1291 stream << "\n"; in generate_c_source()
1292 stream << indent_str; in generate_c_source()
1293 stream << " if (!val) /* otherwise strlen() crashes below */"; in generate_c_source()
1294 stream << "\n"; in generate_c_source()
1295 stream << indent_str; in generate_c_source()
1296 stream << " return -1; /* -1 means no argument for the option */"; in generate_c_source()
1297 stream << "\n"; in generate_c_source()
1298 stream << indent_str; in generate_c_source()
1299 stream << "\n"; in generate_c_source()
1300 stream << indent_str; in generate_c_source()
1301 stream << " found = last = 0;"; in generate_c_source()
1302 stream << "\n"; in generate_c_source()
1303 stream << indent_str; in generate_c_source()
1304 stream << "\n"; in generate_c_source()
1305 stream << indent_str; in generate_c_source()
1306 stream << " for (i = 0, len = strlen(val); values[i]; ++i)"; in generate_c_source()
1307 stream << "\n"; in generate_c_source()
1308 stream << indent_str; in generate_c_source()
1309 stream << " {"; in generate_c_source()
1310 stream << "\n"; in generate_c_source()
1311 stream << indent_str; in generate_c_source()
1312 stream << " if (strncmp(val, values[i], len) == 0)"; in generate_c_source()
1313 stream << "\n"; in generate_c_source()
1314 stream << indent_str; in generate_c_source()
1315 stream << " {"; in generate_c_source()
1316 stream << "\n"; in generate_c_source()
1317 stream << indent_str; in generate_c_source()
1318 stream << " ++found;"; in generate_c_source()
1319 stream << "\n"; in generate_c_source()
1320 stream << indent_str; in generate_c_source()
1321 stream << " last = i;"; in generate_c_source()
1322 stream << "\n"; in generate_c_source()
1323 stream << indent_str; in generate_c_source()
1324 stream << " if (strlen(values[i]) == len)"; in generate_c_source()
1325 stream << "\n"; in generate_c_source()
1326 stream << indent_str; in generate_c_source()
1327 stream << " return i; /* exact macth no need to check more */"; in generate_c_source()
1328 stream << "\n"; in generate_c_source()
1329 stream << indent_str; in generate_c_source()
1330 stream << " }"; in generate_c_source()
1331 stream << "\n"; in generate_c_source()
1332 stream << indent_str; in generate_c_source()
1333 stream << " }"; in generate_c_source()
1334 stream << "\n"; in generate_c_source()
1335 stream << indent_str; in generate_c_source()
1336 stream << "\n"; in generate_c_source()
1337 stream << indent_str; in generate_c_source()
1338 stream << " if (found == 1) /* one match: OK */"; in generate_c_source()
1339 stream << "\n"; in generate_c_source()
1340 stream << indent_str; in generate_c_source()
1341 stream << " return last;"; in generate_c_source()
1342 stream << "\n"; in generate_c_source()
1343 stream << indent_str; in generate_c_source()
1344 stream << "\n"; in generate_c_source()
1345 stream << indent_str; in generate_c_source()
1346 stream << " return (found ? -2 : -1); /* return many values or none matched */"; in generate_c_source()
1347 stream << "\n"; in generate_c_source()
1348 stream << indent_str; in generate_c_source()
1349 stream << "}"; in generate_c_source()
1350 stream << "\n"; in generate_c_source()
1351 stream << indent_str; in generate_c_source()
1352 stream << "\n"; in generate_c_source()
1353 stream << indent_str; in generate_c_source()
1355 stream << "\n"; in generate_c_source()
1356 stream << indent_str; in generate_c_source()
1357 stream << "static void"; in generate_c_source()
1358 stream << "\n"; in generate_c_source()
1359 stream << indent_str; in generate_c_source()
1360stream << "write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])"; in generate_c_source()
1361 stream << "\n"; in generate_c_source()
1362 stream << indent_str; in generate_c_source()
1363 stream << "{"; in generate_c_source()
1364 stream << "\n"; in generate_c_source()
1365 stream << indent_str; in generate_c_source()
1368 stream << " int found = -1;"; in generate_c_source()
1369 stream << "\n"; in generate_c_source()
1370 stream << indent_str; in generate_c_source()
1374 stream << " FIX_UNUSED (values);"; in generate_c_source()
1375 stream << "\n"; in generate_c_source()
1376 stream << indent_str; in generate_c_source()
1378 stream << " if (arg) {"; in generate_c_source()
1379 stream << "\n"; in generate_c_source()
1380 stream << indent_str; in generate_c_source()
1383 stream << " if (values) {"; in generate_c_source()
1384 stream << "\n"; in generate_c_source()
1385 stream << indent_str; in generate_c_source()
1386 stream << " found = check_possible_values(arg, values); "; in generate_c_source()
1387 stream << "\n"; in generate_c_source()
1388 stream << indent_str; in generate_c_source()
1389 stream << " }"; in generate_c_source()
1390 stream << "\n"; in generate_c_source()
1391 stream << indent_str; in generate_c_source()
1392 stream << " if (found >= 0)"; in generate_c_source()
1393 stream << "\n"; in generate_c_source()
1394 stream << indent_str; in generate_c_source()
1395 stream << " fprintf(outfile, \"%s=\\\"%s\\\" # %s\\n\", opt, arg, values[found]);"; in generate_c_source()
1396 stream << "\n"; in generate_c_source()
1397 stream << indent_str; in generate_c_source()
1398 stream << " else"; in generate_c_source()
1399 stream << "\n"; in generate_c_source()
1400 stream << indent_str; in generate_c_source()
1401 stream << " fprintf(outfile, \"%s=\\\"%s\\\"\\n\", opt, arg);"; in generate_c_source()
1402 stream << "\n"; in generate_c_source()
1403 stream << indent_str; in generate_c_source()
1407 stream << " fprintf(outfile, \"%s=\\\"%s\\\"\\n\", opt, arg);"; in generate_c_source()
1408 stream << "\n"; in generate_c_source()
1409 stream << indent_str; in generate_c_source()
1411 stream << " } else {"; in generate_c_source()
1412 stream << "\n"; in generate_c_source()
1413 stream << indent_str; in generate_c_source()
1414 stream << " fprintf(outfile, \"%s\\n\", opt);"; in generate_c_source()
1415 stream << "\n"; in generate_c_source()
1416 stream << indent_str; in generate_c_source()
1417 stream << " }"; in generate_c_source()
1418 stream << "\n"; in generate_c_source()
1419 stream << indent_str; in generate_c_source()
1420 stream << "}"; in generate_c_source()
1421 stream << "\n"; in generate_c_source()
1422 stream << indent_str; in generate_c_source()
1423 stream << "\n"; in generate_c_source()
1424 stream << indent_str; in generate_c_source()
1427 stream << "static void"; in generate_c_source()
1428 stream << "\n"; in generate_c_source()
1429 stream << indent_str; in generate_c_source()
1430stream << "write_multiple_into_file(FILE *outfile, int len, const char *opt, char **arg, const cha… in generate_c_source()
1431 stream << "\n"; in generate_c_source()
1432 stream << indent_str; in generate_c_source()
1433 stream << "{"; in generate_c_source()
1434 stream << "\n"; in generate_c_source()
1435 stream << indent_str; in generate_c_source()
1436 stream << " int i;"; in generate_c_source()
1437 stream << "\n"; in generate_c_source()
1438 stream << indent_str; in generate_c_source()
1440 stream << " "; in generate_c_source()
1442 stream << "\n"; in generate_c_source()
1443 stream << indent_str; in generate_c_source()
1444 stream << " for (i = 0; i < len; ++i)"; in generate_c_source()
1445 stream << "\n"; in generate_c_source()
1446 stream << indent_str; in generate_c_source()
1447 stream << " write_into_file(outfile, opt, (arg ? arg[i] : 0), values);"; in generate_c_source()
1448 stream << "\n"; in generate_c_source()
1449 stream << indent_str; in generate_c_source()
1450 stream << "}"; in generate_c_source()
1451 stream << "\n"; in generate_c_source()
1452 stream << indent_str; in generate_c_source()
1454 stream << "\n"; in generate_c_source()
1455 stream << indent_str; in generate_c_source()
1456 stream << "int"; in generate_c_source()
1457 stream << "\n"; in generate_c_source()
1458 stream << indent_str; in generate_c_source()
1459 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1460 stream << "_dump(FILE *outfile, struct "; in generate_c_source()
1461 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
1462 stream << " *args_info)"; in generate_c_source()
1463 stream << "\n"; in generate_c_source()
1464 stream << indent_str; in generate_c_source()
1465 stream << "{"; in generate_c_source()
1466 stream << "\n"; in generate_c_source()
1467 stream << indent_str; in generate_c_source()
1468 stream << " int i = 0;"; in generate_c_source()
1469 stream << "\n"; in generate_c_source()
1470 stream << indent_str; in generate_c_source()
1471 stream << "\n"; in generate_c_source()
1472 stream << indent_str; in generate_c_source()
1473 stream << " if (!outfile)"; in generate_c_source()
1474 stream << "\n"; in generate_c_source()
1475 stream << indent_str; in generate_c_source()
1476 stream << " {"; in generate_c_source()
1477 stream << "\n"; in generate_c_source()
1478 stream << indent_str; in generate_c_source()
1479 stream << " fprintf (stderr, \"%s: cannot dump options to stream\\n\", "; in generate_c_source()
1480 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
1481 stream << ");"; in generate_c_source()
1482 stream << "\n"; in generate_c_source()
1483 stream << indent_str; in generate_c_source()
1484 stream << " return EXIT_FAILURE;"; in generate_c_source()
1485 stream << "\n"; in generate_c_source()
1486 stream << indent_str; in generate_c_source()
1487 stream << " }"; in generate_c_source()
1488 stream << "\n"; in generate_c_source()
1489 stream << indent_str; in generate_c_source()
1490 stream << "\n"; in generate_c_source()
1491 stream << indent_str; in generate_c_source()
1493 stream << " "; in generate_c_source()
1495 generate_string (file_save_loop, stream, indent + indent_str.length ()); in generate_c_source()
1497 generate_file_save_loop (stream, indent + indent_str.length ()); in generate_c_source()
1499 stream << "\n"; in generate_c_source()
1500 stream << indent_str; in generate_c_source()
1501 stream << "\n"; in generate_c_source()
1502 stream << indent_str; in generate_c_source()
1503 stream << " i = EXIT_SUCCESS;"; in generate_c_source()
1504 stream << "\n"; in generate_c_source()
1505 stream << indent_str; in generate_c_source()
1506 stream << " return i;"; in generate_c_source()
1507 stream << "\n"; in generate_c_source()
1508 stream << indent_str; in generate_c_source()
1509 stream << "}"; in generate_c_source()
1510 stream << "\n"; in generate_c_source()
1511 stream << indent_str; in generate_c_source()
1512 stream << "\n"; in generate_c_source()
1513 stream << indent_str; in generate_c_source()
1514 stream << "int"; in generate_c_source()
1515 stream << "\n"; in generate_c_source()
1516 stream << indent_str; in generate_c_source()
1517 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1518 stream << "_file_save(const char *filename, struct "; in generate_c_source()
1519 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
1520 stream << " *args_info)"; in generate_c_source()
1521 stream << "\n"; in generate_c_source()
1522 stream << indent_str; in generate_c_source()
1523 stream << "{"; in generate_c_source()
1524 stream << "\n"; in generate_c_source()
1525 stream << indent_str; in generate_c_source()
1526 stream << " FILE *outfile;"; in generate_c_source()
1527 stream << "\n"; in generate_c_source()
1528 stream << indent_str; in generate_c_source()
1529 stream << " int i = 0;"; in generate_c_source()
1530 stream << "\n"; in generate_c_source()
1531 stream << indent_str; in generate_c_source()
1532 stream << "\n"; in generate_c_source()
1533 stream << indent_str; in generate_c_source()
1534 stream << " outfile = fopen(filename, \"w\");"; in generate_c_source()
1535 stream << "\n"; in generate_c_source()
1536 stream << indent_str; in generate_c_source()
1537 stream << "\n"; in generate_c_source()
1538 stream << indent_str; in generate_c_source()
1539 stream << " if (!outfile)"; in generate_c_source()
1540 stream << "\n"; in generate_c_source()
1541 stream << indent_str; in generate_c_source()
1542 stream << " {"; in generate_c_source()
1543 stream << "\n"; in generate_c_source()
1544 stream << indent_str; in generate_c_source()
1545 stream << " fprintf (stderr, \"%s: cannot open file for writing: %s\\n\", "; in generate_c_source()
1546 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
1547 stream << ", filename);"; in generate_c_source()
1548 stream << "\n"; in generate_c_source()
1549 stream << indent_str; in generate_c_source()
1550 stream << " return EXIT_FAILURE;"; in generate_c_source()
1551 stream << "\n"; in generate_c_source()
1552 stream << indent_str; in generate_c_source()
1553 stream << " }"; in generate_c_source()
1554 stream << "\n"; in generate_c_source()
1555 stream << indent_str; in generate_c_source()
1556 stream << "\n"; in generate_c_source()
1557 stream << indent_str; in generate_c_source()
1558 stream << " i = "; in generate_c_source()
1559 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1560 stream << "_dump(outfile, args_info);"; in generate_c_source()
1561 stream << "\n"; in generate_c_source()
1562 stream << indent_str; in generate_c_source()
1563 stream << " fclose (outfile);"; in generate_c_source()
1564 stream << "\n"; in generate_c_source()
1565 stream << indent_str; in generate_c_source()
1566 stream << "\n"; in generate_c_source()
1567 stream << indent_str; in generate_c_source()
1568 stream << " return i;"; in generate_c_source()
1569 stream << "\n"; in generate_c_source()
1570 stream << indent_str; in generate_c_source()
1571 stream << "}"; in generate_c_source()
1572 stream << "\n"; in generate_c_source()
1573 stream << indent_str; in generate_c_source()
1574 stream << "\n"; in generate_c_source()
1575 stream << indent_str; in generate_c_source()
1576 stream << "void"; in generate_c_source()
1577 stream << "\n"; in generate_c_source()
1578 stream << indent_str; in generate_c_source()
1579 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1580 stream << "_free (struct "; in generate_c_source()
1581 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
1582 stream << " *args_info)"; in generate_c_source()
1583 stream << "\n"; in generate_c_source()
1584 stream << indent_str; in generate_c_source()
1585 stream << "{"; in generate_c_source()
1586 stream << "\n"; in generate_c_source()
1587 stream << indent_str; in generate_c_source()
1589 stream << " "; in generate_c_source()
1590 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
1591 stream << "_release (args_info);"; in generate_c_source()
1593 stream << "\n"; in generate_c_source()
1594 stream << indent_str; in generate_c_source()
1595 stream << "}"; in generate_c_source()
1596 stream << "\n"; in generate_c_source()
1597 stream << indent_str; in generate_c_source()
1598 stream << "\n"; in generate_c_source()
1599 stream << indent_str; in generate_c_source()
1602 stream << "/** "; in generate_c_source()
1603 stream << "@"; in generate_c_source()
1604 stream << "brief replacement of strdup, which is not standard */"; in generate_c_source()
1605 stream << "\n"; in generate_c_source()
1606 stream << indent_str; in generate_c_source()
1607 stream << "char *"; in generate_c_source()
1608 stream << "\n"; in generate_c_source()
1609 stream << indent_str; in generate_c_source()
1610 stream << "gengetopt_strdup (const char *s)"; in generate_c_source()
1611 stream << "\n"; in generate_c_source()
1612 stream << indent_str; in generate_c_source()
1613 stream << "{"; in generate_c_source()
1614 stream << "\n"; in generate_c_source()
1615 stream << indent_str; in generate_c_source()
1616 stream << " char *result = 0;"; in generate_c_source()
1617 stream << "\n"; in generate_c_source()
1618 stream << indent_str; in generate_c_source()
1619 stream << " if (!s)"; in generate_c_source()
1620 stream << "\n"; in generate_c_source()
1621 stream << indent_str; in generate_c_source()
1622 stream << " return result;"; in generate_c_source()
1623 stream << "\n"; in generate_c_source()
1624 stream << indent_str; in generate_c_source()
1625 stream << "\n"; in generate_c_source()
1626 stream << indent_str; in generate_c_source()
1627 stream << " result = (char*)malloc(strlen(s) + 1);"; in generate_c_source()
1628 stream << "\n"; in generate_c_source()
1629 stream << indent_str; in generate_c_source()
1630 stream << " if (result == (char*)0)"; in generate_c_source()
1631 stream << "\n"; in generate_c_source()
1632 stream << indent_str; in generate_c_source()
1633 stream << " return (char*)0;"; in generate_c_source()
1634 stream << "\n"; in generate_c_source()
1635 stream << indent_str; in generate_c_source()
1636 stream << " strcpy(result, s);"; in generate_c_source()
1637 stream << "\n"; in generate_c_source()
1638 stream << indent_str; in generate_c_source()
1639 stream << " return result;"; in generate_c_source()
1640 stream << "\n"; in generate_c_source()
1641 stream << indent_str; in generate_c_source()
1642 stream << "}"; in generate_c_source()
1643 stream << "\n"; in generate_c_source()
1644 stream << indent_str; in generate_c_source()
1645 stream << "\n"; in generate_c_source()
1646 stream << indent_str; in generate_c_source()
1650 stream << "static char *"; in generate_c_source()
1651 stream << "\n"; in generate_c_source()
1652 stream << indent_str; in generate_c_source()
1653 stream << "get_multiple_arg_token(const char *arg)"; in generate_c_source()
1654 stream << "\n"; in generate_c_source()
1655 stream << indent_str; in generate_c_source()
1656 stream << "{"; in generate_c_source()
1657 stream << "\n"; in generate_c_source()
1658 stream << indent_str; in generate_c_source()
1659 stream << " const char *tok;"; in generate_c_source()
1660 stream << "\n"; in generate_c_source()
1661 stream << indent_str; in generate_c_source()
1662 stream << " char *ret;"; in generate_c_source()
1663 stream << "\n"; in generate_c_source()
1664 stream << indent_str; in generate_c_source()
1665 stream << " size_t len, num_of_escape, i, j;"; in generate_c_source()
1666 stream << "\n"; in generate_c_source()
1667 stream << indent_str; in generate_c_source()
1668 stream << "\n"; in generate_c_source()
1669 stream << indent_str; in generate_c_source()
1670 stream << " if (!arg)"; in generate_c_source()
1671 stream << "\n"; in generate_c_source()
1672 stream << indent_str; in generate_c_source()
1673 stream << " return 0;"; in generate_c_source()
1674 stream << "\n"; in generate_c_source()
1675 stream << indent_str; in generate_c_source()
1676 stream << "\n"; in generate_c_source()
1677 stream << indent_str; in generate_c_source()
1678 stream << " tok = strchr (arg, ',');"; in generate_c_source()
1679 stream << "\n"; in generate_c_source()
1680 stream << indent_str; in generate_c_source()
1681 stream << " num_of_escape = 0;"; in generate_c_source()
1682 stream << "\n"; in generate_c_source()
1683 stream << indent_str; in generate_c_source()
1684 stream << "\n"; in generate_c_source()
1685 stream << indent_str; in generate_c_source()
1686 stream << " /* make sure it is not escaped */"; in generate_c_source()
1687 stream << "\n"; in generate_c_source()
1688 stream << indent_str; in generate_c_source()
1689 stream << " while (tok)"; in generate_c_source()
1690 stream << "\n"; in generate_c_source()
1691 stream << indent_str; in generate_c_source()
1692 stream << " {"; in generate_c_source()
1693 stream << "\n"; in generate_c_source()
1694 stream << indent_str; in generate_c_source()
1695 stream << " if (*(tok-1) == '\\\\')"; in generate_c_source()
1696 stream << "\n"; in generate_c_source()
1697 stream << indent_str; in generate_c_source()
1698 stream << " {"; in generate_c_source()
1699 stream << "\n"; in generate_c_source()
1700 stream << indent_str; in generate_c_source()
1701 stream << " /* find the next one */"; in generate_c_source()
1702 stream << "\n"; in generate_c_source()
1703 stream << indent_str; in generate_c_source()
1704 stream << " tok = strchr (tok+1, ',');"; in generate_c_source()
1705 stream << "\n"; in generate_c_source()
1706 stream << indent_str; in generate_c_source()
1707 stream << " ++num_of_escape;"; in generate_c_source()
1708 stream << "\n"; in generate_c_source()
1709 stream << indent_str; in generate_c_source()
1710 stream << " }"; in generate_c_source()
1711 stream << "\n"; in generate_c_source()
1712 stream << indent_str; in generate_c_source()
1713 stream << " else"; in generate_c_source()
1714 stream << "\n"; in generate_c_source()
1715 stream << indent_str; in generate_c_source()
1716 stream << " break;"; in generate_c_source()
1717 stream << "\n"; in generate_c_source()
1718 stream << indent_str; in generate_c_source()
1719 stream << " }"; in generate_c_source()
1720 stream << "\n"; in generate_c_source()
1721 stream << indent_str; in generate_c_source()
1722 stream << "\n"; in generate_c_source()
1723 stream << indent_str; in generate_c_source()
1724 stream << " if (tok)"; in generate_c_source()
1725 stream << "\n"; in generate_c_source()
1726 stream << indent_str; in generate_c_source()
1727 stream << " len = (size_t)(tok - arg + 1);"; in generate_c_source()
1728 stream << "\n"; in generate_c_source()
1729 stream << indent_str; in generate_c_source()
1730 stream << " else"; in generate_c_source()
1731 stream << "\n"; in generate_c_source()
1732 stream << indent_str; in generate_c_source()
1733 stream << " len = strlen (arg) + 1;"; in generate_c_source()
1734 stream << "\n"; in generate_c_source()
1735 stream << indent_str; in generate_c_source()
1736 stream << "\n"; in generate_c_source()
1737 stream << indent_str; in generate_c_source()
1738 stream << " len -= num_of_escape;"; in generate_c_source()
1739 stream << "\n"; in generate_c_source()
1740 stream << indent_str; in generate_c_source()
1741 stream << "\n"; in generate_c_source()
1742 stream << indent_str; in generate_c_source()
1743 stream << " ret = (char *) malloc (len);"; in generate_c_source()
1744 stream << "\n"; in generate_c_source()
1745 stream << indent_str; in generate_c_source()
1746 stream << "\n"; in generate_c_source()
1747 stream << indent_str; in generate_c_source()
1748 stream << " i = 0;"; in generate_c_source()
1749 stream << "\n"; in generate_c_source()
1750 stream << indent_str; in generate_c_source()
1751 stream << " j = 0;"; in generate_c_source()
1752 stream << "\n"; in generate_c_source()
1753 stream << indent_str; in generate_c_source()
1754 stream << " while (arg[i] && (j < len-1))"; in generate_c_source()
1755 stream << "\n"; in generate_c_source()
1756 stream << indent_str; in generate_c_source()
1757 stream << " {"; in generate_c_source()
1758 stream << "\n"; in generate_c_source()
1759 stream << indent_str; in generate_c_source()
1760 stream << " if (arg[i] == '\\\\' && "; in generate_c_source()
1761 stream << "\n"; in generate_c_source()
1762 stream << indent_str; in generate_c_source()
1763 stream << " arg[ i + 1 ] && "; in generate_c_source()
1764 stream << "\n"; in generate_c_source()
1765 stream << indent_str; in generate_c_source()
1766 stream << " arg[ i + 1 ] == ',')"; in generate_c_source()
1767 stream << "\n"; in generate_c_source()
1768 stream << indent_str; in generate_c_source()
1769 stream << " ++i;"; in generate_c_source()
1770 stream << "\n"; in generate_c_source()
1771 stream << indent_str; in generate_c_source()
1772 stream << "\n"; in generate_c_source()
1773 stream << indent_str; in generate_c_source()
1774 stream << " ret[j++] = arg[i++];"; in generate_c_source()
1775 stream << "\n"; in generate_c_source()
1776 stream << indent_str; in generate_c_source()
1777 stream << " }"; in generate_c_source()
1778 stream << "\n"; in generate_c_source()
1779 stream << indent_str; in generate_c_source()
1780 stream << "\n"; in generate_c_source()
1781 stream << indent_str; in generate_c_source()
1782 stream << " ret[len-1] = '\\0';"; in generate_c_source()
1783 stream << "\n"; in generate_c_source()
1784 stream << indent_str; in generate_c_source()
1785 stream << "\n"; in generate_c_source()
1786 stream << indent_str; in generate_c_source()
1787 stream << " return ret;"; in generate_c_source()
1788 stream << "\n"; in generate_c_source()
1789 stream << indent_str; in generate_c_source()
1790 stream << "}"; in generate_c_source()
1791 stream << "\n"; in generate_c_source()
1792 stream << indent_str; in generate_c_source()
1793 stream << "\n"; in generate_c_source()
1794 stream << indent_str; in generate_c_source()
1795 stream << "static const char *"; in generate_c_source()
1796 stream << "\n"; in generate_c_source()
1797 stream << indent_str; in generate_c_source()
1798 stream << "get_multiple_arg_token_next(const char *arg)"; in generate_c_source()
1799 stream << "\n"; in generate_c_source()
1800 stream << indent_str; in generate_c_source()
1801 stream << "{"; in generate_c_source()
1802 stream << "\n"; in generate_c_source()
1803 stream << indent_str; in generate_c_source()
1804 stream << " const char *tok;"; in generate_c_source()
1805 stream << "\n"; in generate_c_source()
1806 stream << indent_str; in generate_c_source()
1807 stream << "\n"; in generate_c_source()
1808 stream << indent_str; in generate_c_source()
1809 stream << " if (!arg)"; in generate_c_source()
1810 stream << "\n"; in generate_c_source()
1811 stream << indent_str; in generate_c_source()
1812 stream << " return 0;"; in generate_c_source()
1813 stream << "\n"; in generate_c_source()
1814 stream << indent_str; in generate_c_source()
1815 stream << "\n"; in generate_c_source()
1816 stream << indent_str; in generate_c_source()
1817 stream << " tok = strchr (arg, ',');"; in generate_c_source()
1818 stream << "\n"; in generate_c_source()
1819 stream << indent_str; in generate_c_source()
1820 stream << "\n"; in generate_c_source()
1821 stream << indent_str; in generate_c_source()
1822 stream << " /* make sure it is not escaped */"; in generate_c_source()
1823 stream << "\n"; in generate_c_source()
1824 stream << indent_str; in generate_c_source()
1825 stream << " while (tok)"; in generate_c_source()
1826 stream << "\n"; in generate_c_source()
1827 stream << indent_str; in generate_c_source()
1828 stream << " {"; in generate_c_source()
1829 stream << "\n"; in generate_c_source()
1830 stream << indent_str; in generate_c_source()
1831 stream << " if (*(tok-1) == '\\\\')"; in generate_c_source()
1832 stream << "\n"; in generate_c_source()
1833 stream << indent_str; in generate_c_source()
1834 stream << " {"; in generate_c_source()
1835 stream << "\n"; in generate_c_source()
1836 stream << indent_str; in generate_c_source()
1837 stream << " /* find the next one */"; in generate_c_source()
1838 stream << "\n"; in generate_c_source()
1839 stream << indent_str; in generate_c_source()
1840 stream << " tok = strchr (tok+1, ',');"; in generate_c_source()
1841 stream << "\n"; in generate_c_source()
1842 stream << indent_str; in generate_c_source()
1843 stream << " }"; in generate_c_source()
1844 stream << "\n"; in generate_c_source()
1845 stream << indent_str; in generate_c_source()
1846 stream << " else"; in generate_c_source()
1847 stream << "\n"; in generate_c_source()
1848 stream << indent_str; in generate_c_source()
1849 stream << " break;"; in generate_c_source()
1850 stream << "\n"; in generate_c_source()
1851 stream << indent_str; in generate_c_source()
1852 stream << " }"; in generate_c_source()
1853 stream << "\n"; in generate_c_source()
1854 stream << indent_str; in generate_c_source()
1855 stream << "\n"; in generate_c_source()
1856 stream << indent_str; in generate_c_source()
1857 stream << " if (! tok || strlen(tok) == 1)"; in generate_c_source()
1858 stream << "\n"; in generate_c_source()
1859 stream << indent_str; in generate_c_source()
1860 stream << " return 0;"; in generate_c_source()
1861 stream << "\n"; in generate_c_source()
1862 stream << indent_str; in generate_c_source()
1863 stream << "\n"; in generate_c_source()
1864 stream << indent_str; in generate_c_source()
1865 stream << " return tok+1;"; in generate_c_source()
1866 stream << "\n"; in generate_c_source()
1867 stream << indent_str; in generate_c_source()
1868 stream << "}"; in generate_c_source()
1869 stream << "\n"; in generate_c_source()
1870 stream << indent_str; in generate_c_source()
1871 stream << "\n"; in generate_c_source()
1872 stream << indent_str; in generate_c_source()
1876 stream << "static int"; in generate_c_source()
1877 stream << "\n"; in generate_c_source()
1878 stream << indent_str; in generate_c_source()
1879stream << "check_multiple_option_occurrences(const char *prog_name, unsigned int option_given, uns… in generate_c_source()
1880 stream << "\n"; in generate_c_source()
1881 stream << indent_str; in generate_c_source()
1882 stream << "\n"; in generate_c_source()
1883 stream << indent_str; in generate_c_source()
1884 stream << "int"; in generate_c_source()
1885 stream << "\n"; in generate_c_source()
1886 stream << indent_str; in generate_c_source()
1887stream << "check_multiple_option_occurrences(const char *prog_name, unsigned int option_given, uns… in generate_c_source()
1888 stream << "\n"; in generate_c_source()
1889 stream << indent_str; in generate_c_source()
1890 stream << "{"; in generate_c_source()
1891 stream << "\n"; in generate_c_source()
1892 stream << indent_str; in generate_c_source()
1893 stream << " int error_occurred = 0;"; in generate_c_source()
1894 stream << "\n"; in generate_c_source()
1895 stream << indent_str; in generate_c_source()
1896 stream << "\n"; in generate_c_source()
1897 stream << indent_str; in generate_c_source()
1898 stream << " if (option_given && (min > 0 || max > 0))"; in generate_c_source()
1899 stream << "\n"; in generate_c_source()
1900 stream << indent_str; in generate_c_source()
1901 stream << " {"; in generate_c_source()
1902 stream << "\n"; in generate_c_source()
1903 stream << indent_str; in generate_c_source()
1904 stream << " if (min > 0 && max > 0)"; in generate_c_source()
1905 stream << "\n"; in generate_c_source()
1906 stream << indent_str; in generate_c_source()
1907 stream << " {"; in generate_c_source()
1908 stream << "\n"; in generate_c_source()
1909 stream << indent_str; in generate_c_source()
1910 stream << " if (min == max)"; in generate_c_source()
1911 stream << "\n"; in generate_c_source()
1912 stream << indent_str; in generate_c_source()
1913 stream << " {"; in generate_c_source()
1914 stream << "\n"; in generate_c_source()
1915 stream << indent_str; in generate_c_source()
1916 stream << " /* specific occurrences */"; in generate_c_source()
1917 stream << "\n"; in generate_c_source()
1918 stream << indent_str; in generate_c_source()
1919 stream << " if (option_given != (unsigned int) min)"; in generate_c_source()
1920 stream << "\n"; in generate_c_source()
1921 stream << indent_str; in generate_c_source()
1922 stream << " {"; in generate_c_source()
1923 stream << "\n"; in generate_c_source()
1924 stream << indent_str; in generate_c_source()
1925 stream << " fprintf (stderr, \"%s: %s option occurrences must be %d\\n\","; in generate_c_source()
1926 stream << "\n"; in generate_c_source()
1927 stream << indent_str; in generate_c_source()
1928 stream << " prog_name, option_desc, min);"; in generate_c_source()
1929 stream << "\n"; in generate_c_source()
1930 stream << indent_str; in generate_c_source()
1931 stream << " error_occurred = 1;"; in generate_c_source()
1932 stream << "\n"; in generate_c_source()
1933 stream << indent_str; in generate_c_source()
1934 stream << " }"; in generate_c_source()
1935 stream << "\n"; in generate_c_source()
1936 stream << indent_str; in generate_c_source()
1937 stream << " }"; in generate_c_source()
1938 stream << "\n"; in generate_c_source()
1939 stream << indent_str; in generate_c_source()
1940 stream << " else if (option_given < (unsigned int) min"; in generate_c_source()
1941 stream << "\n"; in generate_c_source()
1942 stream << indent_str; in generate_c_source()
1943 stream << " || option_given > (unsigned int) max)"; in generate_c_source()
1944 stream << "\n"; in generate_c_source()
1945 stream << indent_str; in generate_c_source()
1946 stream << " {"; in generate_c_source()
1947 stream << "\n"; in generate_c_source()
1948 stream << indent_str; in generate_c_source()
1949 stream << " /* range occurrences */"; in generate_c_source()
1950 stream << "\n"; in generate_c_source()
1951 stream << indent_str; in generate_c_source()
1952stream << " fprintf (stderr, \"%s: %s option occurrences must be between %d and %d\\n… in generate_c_source()
1953 stream << "\n"; in generate_c_source()
1954 stream << indent_str; in generate_c_source()
1955 stream << " prog_name, option_desc, min, max);"; in generate_c_source()
1956 stream << "\n"; in generate_c_source()
1957 stream << indent_str; in generate_c_source()
1958 stream << " error_occurred = 1;"; in generate_c_source()
1959 stream << "\n"; in generate_c_source()
1960 stream << indent_str; in generate_c_source()
1961 stream << " }"; in generate_c_source()
1962 stream << "\n"; in generate_c_source()
1963 stream << indent_str; in generate_c_source()
1964 stream << " }"; in generate_c_source()
1965 stream << "\n"; in generate_c_source()
1966 stream << indent_str; in generate_c_source()
1967 stream << " else if (min > 0)"; in generate_c_source()
1968 stream << "\n"; in generate_c_source()
1969 stream << indent_str; in generate_c_source()
1970 stream << " {"; in generate_c_source()
1971 stream << "\n"; in generate_c_source()
1972 stream << indent_str; in generate_c_source()
1973 stream << " /* at least check */"; in generate_c_source()
1974 stream << "\n"; in generate_c_source()
1975 stream << indent_str; in generate_c_source()
1976 stream << " if (option_given < min)"; in generate_c_source()
1977 stream << "\n"; in generate_c_source()
1978 stream << indent_str; in generate_c_source()
1979 stream << " {"; in generate_c_source()
1980 stream << "\n"; in generate_c_source()
1981 stream << indent_str; in generate_c_source()
1982stream << " fprintf (stderr, \"%s: %s option occurrences must be at least %d\\n\","; in generate_c_source()
1983 stream << "\n"; in generate_c_source()
1984 stream << indent_str; in generate_c_source()
1985 stream << " prog_name, option_desc, min);"; in generate_c_source()
1986 stream << "\n"; in generate_c_source()
1987 stream << indent_str; in generate_c_source()
1988 stream << " error_occurred = 1;"; in generate_c_source()
1989 stream << "\n"; in generate_c_source()
1990 stream << indent_str; in generate_c_source()
1991 stream << " }"; in generate_c_source()
1992 stream << "\n"; in generate_c_source()
1993 stream << indent_str; in generate_c_source()
1994 stream << " }"; in generate_c_source()
1995 stream << "\n"; in generate_c_source()
1996 stream << indent_str; in generate_c_source()
1997 stream << " else if (max > 0)"; in generate_c_source()
1998 stream << "\n"; in generate_c_source()
1999 stream << indent_str; in generate_c_source()
2000 stream << " {"; in generate_c_source()
2001 stream << "\n"; in generate_c_source()
2002 stream << indent_str; in generate_c_source()
2003 stream << " /* at most check */"; in generate_c_source()
2004 stream << "\n"; in generate_c_source()
2005 stream << indent_str; in generate_c_source()
2006 stream << " if (option_given > max)"; in generate_c_source()
2007 stream << "\n"; in generate_c_source()
2008 stream << indent_str; in generate_c_source()
2009 stream << " {"; in generate_c_source()
2010 stream << "\n"; in generate_c_source()
2011 stream << indent_str; in generate_c_source()
2012stream << " fprintf (stderr, \"%s: %s option occurrences must be at most %d\\n\","; in generate_c_source()
2013 stream << "\n"; in generate_c_source()
2014 stream << indent_str; in generate_c_source()
2015 stream << " prog_name, option_desc, max);"; in generate_c_source()
2016 stream << "\n"; in generate_c_source()
2017 stream << indent_str; in generate_c_source()
2018 stream << " error_occurred = 1;"; in generate_c_source()
2019 stream << "\n"; in generate_c_source()
2020 stream << indent_str; in generate_c_source()
2021 stream << " }"; in generate_c_source()
2022 stream << "\n"; in generate_c_source()
2023 stream << indent_str; in generate_c_source()
2024 stream << " }"; in generate_c_source()
2025 stream << "\n"; in generate_c_source()
2026 stream << indent_str; in generate_c_source()
2027 stream << " }"; in generate_c_source()
2028 stream << "\n"; in generate_c_source()
2029 stream << indent_str; in generate_c_source()
2031 stream << " "; in generate_c_source()
2033 stream << "\n"; in generate_c_source()
2034 stream << indent_str; in generate_c_source()
2035 stream << " return error_occurred;"; in generate_c_source()
2036 stream << "\n"; in generate_c_source()
2037 stream << indent_str; in generate_c_source()
2038 stream << "}"; in generate_c_source()
2039 stream << "\n"; in generate_c_source()
2040 stream << indent_str; in generate_c_source()
2043 generate_string (reset_groups, stream, indent + indent_str.length ()); in generate_c_source()
2045 generate_reset_groups (stream, indent + indent_str.length ()); in generate_c_source()
2046 stream << indent_str; in generate_c_source()
2047 stream << "int"; in generate_c_source()
2048 stream << "\n"; in generate_c_source()
2049 stream << indent_str; in generate_c_source()
2050 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2051 stream << " (int argc, char **argv, struct "; in generate_c_source()
2052 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
2053 stream << " *args_info)"; in generate_c_source()
2054 stream << "\n"; in generate_c_source()
2055 stream << indent_str; in generate_c_source()
2056 stream << "{"; in generate_c_source()
2057 stream << "\n"; in generate_c_source()
2058 stream << indent_str; in generate_c_source()
2059 stream << " return "; in generate_c_source()
2060 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2061 stream << "2 (argc, argv, args_info, 0, 1, 1);"; in generate_c_source()
2062 stream << "\n"; in generate_c_source()
2063 stream << indent_str; in generate_c_source()
2064 stream << "}"; in generate_c_source()
2065 stream << "\n"; in generate_c_source()
2066 stream << indent_str; in generate_c_source()
2067 stream << "\n"; in generate_c_source()
2068 stream << indent_str; in generate_c_source()
2069 stream << "int"; in generate_c_source()
2070 stream << "\n"; in generate_c_source()
2071 stream << indent_str; in generate_c_source()
2072 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2073 stream << "_ext (int argc, char **argv, struct "; in generate_c_source()
2074 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
2075 stream << " *args_info,"; in generate_c_source()
2076 stream << "\n"; in generate_c_source()
2077 stream << indent_str; in generate_c_source()
2078 stream << " struct "; in generate_c_source()
2079 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2080 stream << "_params *params)"; in generate_c_source()
2081 stream << "\n"; in generate_c_source()
2082 stream << indent_str; in generate_c_source()
2083 stream << "{"; in generate_c_source()
2084 stream << "\n"; in generate_c_source()
2085 stream << indent_str; in generate_c_source()
2086 stream << " int result;"; in generate_c_source()
2087 stream << "\n"; in generate_c_source()
2088 stream << indent_str; in generate_c_source()
2089 stream << " result = "; in generate_c_source()
2090 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2091 stream << "_internal (argc, argv, args_info, params, 0);"; in generate_c_source()
2092 stream << "\n"; in generate_c_source()
2093 stream << indent_str; in generate_c_source()
2094 stream << "\n"; in generate_c_source()
2095 stream << indent_str; in generate_c_source()
2097 stream << " "; in generate_c_source()
2098 generate_string (final_exit, stream, indent + indent_str.length ()); in generate_c_source()
2100 stream << "\n"; in generate_c_source()
2101 stream << indent_str; in generate_c_source()
2102 stream << "}"; in generate_c_source()
2103 stream << "\n"; in generate_c_source()
2104 stream << indent_str; in generate_c_source()
2105 stream << "\n"; in generate_c_source()
2106 stream << indent_str; in generate_c_source()
2107 stream << "int"; in generate_c_source()
2108 stream << "\n"; in generate_c_source()
2109 stream << indent_str; in generate_c_source()
2110 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2111 stream << "2 (int argc, char **argv, struct "; in generate_c_source()
2112 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
2113 stream << " *args_info, int override, int initialize, int check_required)"; in generate_c_source()
2114 stream << "\n"; in generate_c_source()
2115 stream << indent_str; in generate_c_source()
2116 stream << "{"; in generate_c_source()
2117 stream << "\n"; in generate_c_source()
2118 stream << indent_str; in generate_c_source()
2119 stream << " int result;"; in generate_c_source()
2120 stream << "\n"; in generate_c_source()
2121 stream << indent_str; in generate_c_source()
2122 stream << " struct "; in generate_c_source()
2123 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2124 stream << "_params params;"; in generate_c_source()
2125 stream << "\n"; in generate_c_source()
2126 stream << indent_str; in generate_c_source()
2128 stream << " "; in generate_c_source()
2130 stream << "\n"; in generate_c_source()
2131 stream << indent_str; in generate_c_source()
2132 stream << " params.override = override;"; in generate_c_source()
2133 stream << "\n"; in generate_c_source()
2134 stream << indent_str; in generate_c_source()
2135 stream << " params.initialize = initialize;"; in generate_c_source()
2136 stream << "\n"; in generate_c_source()
2137 stream << indent_str; in generate_c_source()
2138 stream << " params.check_required = check_required;"; in generate_c_source()
2139 stream << "\n"; in generate_c_source()
2140 stream << indent_str; in generate_c_source()
2141 stream << " params.check_ambiguity = 0;"; in generate_c_source()
2142 stream << "\n"; in generate_c_source()
2143 stream << indent_str; in generate_c_source()
2144 stream << " params.print_errors = 1;"; in generate_c_source()
2145 stream << "\n"; in generate_c_source()
2146 stream << indent_str; in generate_c_source()
2147 stream << "\n"; in generate_c_source()
2148 stream << indent_str; in generate_c_source()
2149 stream << " result = "; in generate_c_source()
2150 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2151 stream << "_internal (argc, argv, args_info, &params, 0);"; in generate_c_source()
2152 stream << "\n"; in generate_c_source()
2153 stream << indent_str; in generate_c_source()
2154 stream << "\n"; in generate_c_source()
2155 stream << indent_str; in generate_c_source()
2157 stream << " "; in generate_c_source()
2158 generate_string (final_exit, stream, indent + indent_str.length ()); in generate_c_source()
2160 stream << "\n"; in generate_c_source()
2161 stream << indent_str; in generate_c_source()
2162 stream << "}"; in generate_c_source()
2163 stream << "\n"; in generate_c_source()
2164 stream << indent_str; in generate_c_source()
2165 stream << "\n"; in generate_c_source()
2166 stream << indent_str; in generate_c_source()
2167 stream << "int"; in generate_c_source()
2168 stream << "\n"; in generate_c_source()
2169 stream << indent_str; in generate_c_source()
2170 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2171 stream << "_required (struct "; in generate_c_source()
2172 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
2173 stream << " *args_info, const char *prog_name)"; in generate_c_source()
2174 stream << "\n"; in generate_c_source()
2175 stream << indent_str; in generate_c_source()
2176 stream << "{"; in generate_c_source()
2177 stream << "\n"; in generate_c_source()
2178 stream << indent_str; in generate_c_source()
2181 stream << " int result = EXIT_SUCCESS;"; in generate_c_source()
2182 stream << "\n"; in generate_c_source()
2183 stream << indent_str; in generate_c_source()
2184 stream << "\n"; in generate_c_source()
2185 stream << indent_str; in generate_c_source()
2186 stream << " if ("; in generate_c_source()
2187 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2188 stream << "_required2(args_info, prog_name, 0) > 0)"; in generate_c_source()
2189 stream << "\n"; in generate_c_source()
2190 stream << indent_str; in generate_c_source()
2191 stream << " result = EXIT_FAILURE;"; in generate_c_source()
2192 stream << "\n"; in generate_c_source()
2193 stream << indent_str; in generate_c_source()
2194 stream << "\n"; in generate_c_source()
2195 stream << indent_str; in generate_c_source()
2197 stream << " "; in generate_c_source()
2198 generate_string (final_exit, stream, indent + indent_str.length ()); in generate_c_source()
2200 stream << "\n"; in generate_c_source()
2201 stream << indent_str; in generate_c_source()
2205 stream << " FIX_UNUSED (args_info);"; in generate_c_source()
2206 stream << "\n"; in generate_c_source()
2207 stream << indent_str; in generate_c_source()
2208 stream << " FIX_UNUSED (prog_name);"; in generate_c_source()
2209 stream << "\n"; in generate_c_source()
2210 stream << indent_str; in generate_c_source()
2211 stream << " return EXIT_SUCCESS;"; in generate_c_source()
2212 stream << "\n"; in generate_c_source()
2213 stream << indent_str; in generate_c_source()
2215 stream << "}"; in generate_c_source()
2216 stream << "\n"; in generate_c_source()
2217 stream << indent_str; in generate_c_source()
2218 stream << "\n"; in generate_c_source()
2219 stream << indent_str; in generate_c_source()
2222 stream << "int"; in generate_c_source()
2223 stream << "\n"; in generate_c_source()
2224 stream << indent_str; in generate_c_source()
2225 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2226 stream << "_required2 (struct "; in generate_c_source()
2227 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
2228 stream << " *args_info, const char *prog_name, const char *additional_error)"; in generate_c_source()
2229 stream << "\n"; in generate_c_source()
2230 stream << indent_str; in generate_c_source()
2231 stream << "{"; in generate_c_source()
2232 stream << "\n"; in generate_c_source()
2233 stream << indent_str; in generate_c_source()
2234 stream << " int error_occurred = 0;"; in generate_c_source()
2235 stream << "\n"; in generate_c_source()
2236 stream << indent_str; in generate_c_source()
2237 stream << " FIX_UNUSED (additional_error);"; in generate_c_source()
2238 stream << "\n"; in generate_c_source()
2239 stream << indent_str; in generate_c_source()
2240 stream << "\n"; in generate_c_source()
2241 stream << indent_str; in generate_c_source()
2242 stream << " /* checks for required options */"; in generate_c_source()
2243 stream << "\n"; in generate_c_source()
2244 stream << indent_str; in generate_c_source()
2246 stream << " "; in generate_c_source()
2248 generate_string (handle_required, stream, indent + indent_str.length ()); in generate_c_source()
2250 generate_handle_required (stream, indent + indent_str.length ()); in generate_c_source()
2252 stream << "\n"; in generate_c_source()
2253 stream << indent_str; in generate_c_source()
2254 stream << " /* checks for dependences among options */"; in generate_c_source()
2255 stream << "\n"; in generate_c_source()
2256 stream << indent_str; in generate_c_source()
2259 generate_string (handle_dependencies, stream, indent + indent_str.length ()); in generate_c_source()
2261 generate_handle_dependencies (stream, indent + indent_str.length ()); in generate_c_source()
2263 stream << indent_str; in generate_c_source()
2264 stream << "\n"; in generate_c_source()
2265 stream << indent_str; in generate_c_source()
2266 stream << " return error_occurred;"; in generate_c_source()
2267 stream << "\n"; in generate_c_source()
2268 stream << indent_str; in generate_c_source()
2269 stream << "}"; in generate_c_source()
2270 stream << "\n"; in generate_c_source()
2271 stream << indent_str; in generate_c_source()
2272 stream << "\n"; in generate_c_source()
2273 stream << indent_str; in generate_c_source()
2278 generate_string (custom_getopt, stream, indent + indent_str.length ()); in generate_c_source()
2280 generate_custom_getopt (stream, indent + indent_str.length ()); in generate_c_source()
2281 stream << "\n"; in generate_c_source()
2282 stream << indent_str; in generate_c_source()
2284 stream << "\n"; in generate_c_source()
2285 stream << indent_str; in generate_c_source()
2286 stream << "static char *package_name = 0;"; in generate_c_source()
2287 stream << "\n"; in generate_c_source()
2288 stream << indent_str; in generate_c_source()
2289 stream << "\n"; in generate_c_source()
2290 stream << indent_str; in generate_c_source()
2293 stream << "/**"; in generate_c_source()
2294 stream << "\n"; in generate_c_source()
2295 stream << indent_str; in generate_c_source()
2296 stream << " * "; in generate_c_source()
2297 stream << "@"; in generate_c_source()
2298 stream << "brief updates an option"; in generate_c_source()
2299 stream << "\n"; in generate_c_source()
2300 stream << indent_str; in generate_c_source()
2301 stream << " * "; in generate_c_source()
2302 stream << "@"; in generate_c_source()
2303 stream << "param field the generic pointer to the field to update"; in generate_c_source()
2304 stream << "\n"; in generate_c_source()
2305 stream << indent_str; in generate_c_source()
2306 stream << " * "; in generate_c_source()
2307 stream << "@"; in generate_c_source()
2308 stream << "param orig_field the pointer to the orig field"; in generate_c_source()
2309 stream << "\n"; in generate_c_source()
2310 stream << indent_str; in generate_c_source()
2311 stream << " * "; in generate_c_source()
2312 stream << "@"; in generate_c_source()
2313 stream << "param field_given the pointer to the number of occurrence of this option"; in generate_c_source()
2314 stream << "\n"; in generate_c_source()
2315 stream << indent_str; in generate_c_source()
2316 stream << " * "; in generate_c_source()
2317 stream << "@"; in generate_c_source()
2318 stream << "param prev_given the pointer to the number of occurrence already seen"; in generate_c_source()
2319 stream << "\n"; in generate_c_source()
2320 stream << indent_str; in generate_c_source()
2321 stream << " * "; in generate_c_source()
2322 stream << "@"; in generate_c_source()
2323 stream << "param value the argument for this option (if null no arg was specified)"; in generate_c_source()
2324 stream << "\n"; in generate_c_source()
2325 stream << indent_str; in generate_c_source()
2326 stream << " * "; in generate_c_source()
2327 stream << "@"; in generate_c_source()
2328 stream << "param possible_values the possible values for this option (if specified)"; in generate_c_source()
2329 stream << "\n"; in generate_c_source()
2330 stream << indent_str; in generate_c_source()
2331 stream << " * "; in generate_c_source()
2332 stream << "@"; in generate_c_source()
2333stream << "param default_value the default value (in case the option only accepts fixed values)"; in generate_c_source()
2334 stream << "\n"; in generate_c_source()
2335 stream << indent_str; in generate_c_source()
2336 stream << " * "; in generate_c_source()
2337 stream << "@"; in generate_c_source()
2338 stream << "param arg_type the type of this option"; in generate_c_source()
2339 stream << "\n"; in generate_c_source()
2340 stream << indent_str; in generate_c_source()
2341 stream << " * "; in generate_c_source()
2342 stream << "@"; in generate_c_source()
2343 stream << "param check_ambiguity "; in generate_c_source()
2344 stream << "@"; in generate_c_source()
2345 stream << "see "; in generate_c_source()
2346 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2347 stream << "_params.check_ambiguity"; in generate_c_source()
2348 stream << "\n"; in generate_c_source()
2349 stream << indent_str; in generate_c_source()
2350 stream << " * "; in generate_c_source()
2351 stream << "@"; in generate_c_source()
2352 stream << "param override "; in generate_c_source()
2353 stream << "@"; in generate_c_source()
2354 stream << "see "; in generate_c_source()
2355 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2356 stream << "_params.override"; in generate_c_source()
2357 stream << "\n"; in generate_c_source()
2358 stream << indent_str; in generate_c_source()
2359 stream << " * "; in generate_c_source()
2360 stream << "@"; in generate_c_source()
2361 stream << "param no_free whether to free a possible previous value"; in generate_c_source()
2362 stream << "\n"; in generate_c_source()
2363 stream << indent_str; in generate_c_source()
2364 stream << " * "; in generate_c_source()
2365 stream << "@"; in generate_c_source()
2366 stream << "param multiple_option whether this is a multiple option"; in generate_c_source()
2367 stream << "\n"; in generate_c_source()
2368 stream << indent_str; in generate_c_source()
2369 stream << " * "; in generate_c_source()
2370 stream << "@"; in generate_c_source()
2371 stream << "param long_opt the corresponding long option"; in generate_c_source()
2372 stream << "\n"; in generate_c_source()
2373 stream << indent_str; in generate_c_source()
2374 stream << " * "; in generate_c_source()
2375 stream << "@"; in generate_c_source()
2376 stream << "param short_opt the corresponding short option (or '-' if none)"; in generate_c_source()
2377 stream << "\n"; in generate_c_source()
2378 stream << indent_str; in generate_c_source()
2379 stream << " * "; in generate_c_source()
2380 stream << "@"; in generate_c_source()
2381 stream << "param additional_error possible further error specification"; in generate_c_source()
2382 stream << "\n"; in generate_c_source()
2383 stream << indent_str; in generate_c_source()
2384 stream << " */"; in generate_c_source()
2385 stream << "\n"; in generate_c_source()
2386 stream << indent_str; in generate_c_source()
2387 stream << "static"; in generate_c_source()
2388 stream << "\n"; in generate_c_source()
2389 stream << indent_str; in generate_c_source()
2390 stream << "int update_arg(void *field, char **orig_field,"; in generate_c_source()
2391 stream << "\n"; in generate_c_source()
2392 stream << indent_str; in generate_c_source()
2393 stream << " unsigned int *field_given, unsigned int *prev_given, "; in generate_c_source()
2394 stream << "\n"; in generate_c_source()
2395 stream << indent_str; in generate_c_source()
2396 stream << " char *value, const char *possible_values[],"; in generate_c_source()
2397 stream << "\n"; in generate_c_source()
2398 stream << indent_str; in generate_c_source()
2399 stream << " const char *default_value,"; in generate_c_source()
2400 stream << "\n"; in generate_c_source()
2401 stream << indent_str; in generate_c_source()
2403 stream << " "; in generate_c_source()
2404 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2405 stream << "_arg_type arg_type,"; in generate_c_source()
2407 stream << "\n"; in generate_c_source()
2408 stream << indent_str; in generate_c_source()
2409 stream << " int check_ambiguity, int override,"; in generate_c_source()
2410 stream << "\n"; in generate_c_source()
2411 stream << indent_str; in generate_c_source()
2412 stream << " int no_free, int multiple_option,"; in generate_c_source()
2413 stream << "\n"; in generate_c_source()
2414 stream << indent_str; in generate_c_source()
2415 stream << " const char *long_opt, char short_opt,"; in generate_c_source()
2416 stream << "\n"; in generate_c_source()
2417 stream << indent_str; in generate_c_source()
2418 stream << " const char *additional_error)"; in generate_c_source()
2419 stream << "\n"; in generate_c_source()
2420 stream << indent_str; in generate_c_source()
2421 stream << "{"; in generate_c_source()
2422 stream << "\n"; in generate_c_source()
2423 stream << indent_str; in generate_c_source()
2424 stream << " char *stop_char = 0;"; in generate_c_source()
2425 stream << "\n"; in generate_c_source()
2426 stream << indent_str; in generate_c_source()
2427 stream << " const char *val = value;"; in generate_c_source()
2428 stream << "\n"; in generate_c_source()
2429 stream << indent_str; in generate_c_source()
2430 stream << " int found;"; in generate_c_source()
2431 stream << "\n"; in generate_c_source()
2432 stream << indent_str; in generate_c_source()
2435 stream << " char **string_field;"; in generate_c_source()
2436 stream << "\n"; in generate_c_source()
2437 stream << indent_str; in generate_c_source()
2439 stream << " FIX_UNUSED (field);"; in generate_c_source()
2440 stream << "\n"; in generate_c_source()
2441 stream << indent_str; in generate_c_source()
2442 stream << "\n"; in generate_c_source()
2443 stream << indent_str; in generate_c_source()
2444 stream << " stop_char = 0;"; in generate_c_source()
2445 stream << "\n"; in generate_c_source()
2446 stream << indent_str; in generate_c_source()
2447 stream << " found = 0;"; in generate_c_source()
2448 stream << "\n"; in generate_c_source()
2449 stream << indent_str; in generate_c_source()
2450 stream << "\n"; in generate_c_source()
2451 stream << indent_str; in generate_c_source()
2452stream << " if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_give… in generate_c_source()
2453 stream << "\n"; in generate_c_source()
2454 stream << indent_str; in generate_c_source()
2455 stream << " {"; in generate_c_source()
2456 stream << "\n"; in generate_c_source()
2457 stream << indent_str; in generate_c_source()
2458 stream << " if (short_opt != '-')"; in generate_c_source()
2459 stream << "\n"; in generate_c_source()
2460 stream << indent_str; in generate_c_source()
2461stream << " fprintf (stderr, \"%s: `--%s' (`-%c') option given more than once%s\\n\", "; in generate_c_source()
2462 stream << "\n"; in generate_c_source()
2463 stream << indent_str; in generate_c_source()
2464 stream << " package_name, long_opt, short_opt,"; in generate_c_source()
2465 stream << "\n"; in generate_c_source()
2466 stream << indent_str; in generate_c_source()
2467 stream << " (additional_error ? additional_error : \"\"));"; in generate_c_source()
2468 stream << "\n"; in generate_c_source()
2469 stream << indent_str; in generate_c_source()
2470 stream << " else"; in generate_c_source()
2471 stream << "\n"; in generate_c_source()
2472 stream << indent_str; in generate_c_source()
2473 stream << " fprintf (stderr, \"%s: `--%s' option given more than once%s\\n\", "; in generate_c_source()
2474 stream << "\n"; in generate_c_source()
2475 stream << indent_str; in generate_c_source()
2476 stream << " package_name, long_opt,"; in generate_c_source()
2477 stream << "\n"; in generate_c_source()
2478 stream << indent_str; in generate_c_source()
2479 stream << " (additional_error ? additional_error : \"\"));"; in generate_c_source()
2480 stream << "\n"; in generate_c_source()
2481 stream << indent_str; in generate_c_source()
2482 stream << " return 1; /* failure */"; in generate_c_source()
2483 stream << "\n"; in generate_c_source()
2484 stream << indent_str; in generate_c_source()
2485 stream << " }"; in generate_c_source()
2486 stream << "\n"; in generate_c_source()
2487 stream << indent_str; in generate_c_source()
2488 stream << "\n"; in generate_c_source()
2489 stream << indent_str; in generate_c_source()
2492stream << " if (possible_values && (found = check_possible_values((value ? value : default_value)… in generate_c_source()
2493 stream << "\n"; in generate_c_source()
2494 stream << indent_str; in generate_c_source()
2495 stream << " {"; in generate_c_source()
2496 stream << "\n"; in generate_c_source()
2497 stream << indent_str; in generate_c_source()
2498 stream << " if (short_opt != '-')"; in generate_c_source()
2499 stream << "\n"; in generate_c_source()
2500 stream << indent_str; in generate_c_source()
2501stream << " fprintf (stderr, \"%s: %s argument, \\\"%s\\\", for option `--%s' (`-%c')%s\\n\… in generate_c_source()
2502 stream << "\n"; in generate_c_source()
2503 stream << indent_str; in generate_c_source()
2504stream << " package_name, (found == -2) ? \"ambiguous\" : \"invalid\", value, long_opt, s… in generate_c_source()
2505 stream << "\n"; in generate_c_source()
2506 stream << indent_str; in generate_c_source()
2507 stream << " (additional_error ? additional_error : \"\"));"; in generate_c_source()
2508 stream << "\n"; in generate_c_source()
2509 stream << indent_str; in generate_c_source()
2510 stream << " else"; in generate_c_source()
2511 stream << "\n"; in generate_c_source()
2512 stream << indent_str; in generate_c_source()
2513stream << " fprintf (stderr, \"%s: %s argument, \\\"%s\\\", for option `--%s'%s\\n\", "; in generate_c_source()
2514 stream << "\n"; in generate_c_source()
2515 stream << indent_str; in generate_c_source()
2516stream << " package_name, (found == -2) ? \"ambiguous\" : \"invalid\", value, long_opt,"; in generate_c_source()
2517 stream << "\n"; in generate_c_source()
2518 stream << indent_str; in generate_c_source()
2519 stream << " (additional_error ? additional_error : \"\"));"; in generate_c_source()
2520 stream << "\n"; in generate_c_source()
2521 stream << indent_str; in generate_c_source()
2522 stream << " return 1; /* failure */"; in generate_c_source()
2523 stream << "\n"; in generate_c_source()
2524 stream << indent_str; in generate_c_source()
2525 stream << " }"; in generate_c_source()
2526 stream << "\n"; in generate_c_source()
2527 stream << indent_str; in generate_c_source()
2531 stream << " FIX_UNUSED (default_value);"; in generate_c_source()
2532 stream << "\n"; in generate_c_source()
2533 stream << indent_str; in generate_c_source()
2535 stream << " "; in generate_c_source()
2536 stream << "\n"; in generate_c_source()
2537 stream << indent_str; in generate_c_source()
2538 stream << " if (field_given && *field_given && ! override)"; in generate_c_source()
2539 stream << "\n"; in generate_c_source()
2540 stream << indent_str; in generate_c_source()
2541 stream << " return 0;"; in generate_c_source()
2542 stream << "\n"; in generate_c_source()
2543 stream << indent_str; in generate_c_source()
2544 stream << " if (prev_given)"; in generate_c_source()
2545 stream << "\n"; in generate_c_source()
2546 stream << indent_str; in generate_c_source()
2547 stream << " (*prev_given)++;"; in generate_c_source()
2548 stream << "\n"; in generate_c_source()
2549 stream << indent_str; in generate_c_source()
2550 stream << " if (field_given)"; in generate_c_source()
2551 stream << "\n"; in generate_c_source()
2552 stream << indent_str; in generate_c_source()
2553 stream << " (*field_given)++;"; in generate_c_source()
2554 stream << "\n"; in generate_c_source()
2555 stream << indent_str; in generate_c_source()
2556 stream << " if (possible_values)"; in generate_c_source()
2557 stream << "\n"; in generate_c_source()
2558 stream << indent_str; in generate_c_source()
2559 stream << " val = possible_values[found];"; in generate_c_source()
2560 stream << "\n"; in generate_c_source()
2561 stream << indent_str; in generate_c_source()
2562 stream << "\n"; in generate_c_source()
2563 stream << indent_str; in generate_c_source()
2564 stream << " switch(arg_type) {"; in generate_c_source()
2565 stream << "\n"; in generate_c_source()
2566 stream << indent_str; in generate_c_source()
2569 stream << " case ARG_FLAG:"; in generate_c_source()
2570 stream << "\n"; in generate_c_source()
2571 stream << indent_str; in generate_c_source()
2572 stream << " *((int *)field) = !*((int *)field);"; in generate_c_source()
2573 stream << "\n"; in generate_c_source()
2574 stream << indent_str; in generate_c_source()
2575 stream << " break;"; in generate_c_source()
2576 stream << "\n"; in generate_c_source()
2577 stream << indent_str; in generate_c_source()
2581 stream << " case ARG_INT:"; in generate_c_source()
2582 stream << "\n"; in generate_c_source()
2583 stream << indent_str; in generate_c_source()
2584 stream << " if (val) *((int *)field) = strtol (val, &stop_char, 0);"; in generate_c_source()
2585 stream << "\n"; in generate_c_source()
2586 stream << indent_str; in generate_c_source()
2587 stream << " break;"; in generate_c_source()
2588 stream << "\n"; in generate_c_source()
2589 stream << indent_str; in generate_c_source()
2593 stream << " case ARG_SHORT:"; in generate_c_source()
2594 stream << "\n"; in generate_c_source()
2595 stream << indent_str; in generate_c_source()
2596 stream << " if (val) *((short *)field) = (short)strtol (val, &stop_char, 0);"; in generate_c_source()
2597 stream << "\n"; in generate_c_source()
2598 stream << indent_str; in generate_c_source()
2599 stream << " break;"; in generate_c_source()
2600 stream << "\n"; in generate_c_source()
2601 stream << indent_str; in generate_c_source()
2605 stream << " case ARG_LONG:"; in generate_c_source()
2606 stream << "\n"; in generate_c_source()
2607 stream << indent_str; in generate_c_source()
2608 stream << " if (val) *((long *)field) = (long)strtol (val, &stop_char, 0);"; in generate_c_source()
2609 stream << "\n"; in generate_c_source()
2610 stream << indent_str; in generate_c_source()
2611 stream << " break;"; in generate_c_source()
2612 stream << "\n"; in generate_c_source()
2613 stream << indent_str; in generate_c_source()
2617 stream << " case ARG_FLOAT:"; in generate_c_source()
2618 stream << "\n"; in generate_c_source()
2619 stream << indent_str; in generate_c_source()
2620 stream << " if (val) *((float *)field) = (float)strtod (val, &stop_char);"; in generate_c_source()
2621 stream << "\n"; in generate_c_source()
2622 stream << indent_str; in generate_c_source()
2623 stream << " break;"; in generate_c_source()
2624 stream << "\n"; in generate_c_source()
2625 stream << indent_str; in generate_c_source()
2629 stream << " case ARG_DOUBLE:"; in generate_c_source()
2630 stream << "\n"; in generate_c_source()
2631 stream << indent_str; in generate_c_source()
2632 stream << " if (val) *((double *)field) = strtod (val, &stop_char);"; in generate_c_source()
2633 stream << "\n"; in generate_c_source()
2634 stream << indent_str; in generate_c_source()
2635 stream << " break;"; in generate_c_source()
2636 stream << "\n"; in generate_c_source()
2637 stream << indent_str; in generate_c_source()
2641 stream << " case ARG_LONGDOUBLE:"; in generate_c_source()
2642 stream << "\n"; in generate_c_source()
2643 stream << indent_str; in generate_c_source()
2644 stream << " if (val) *((long double *)field) = (long double)strtod (val, &stop_char);"; in generate_c_source()
2645 stream << "\n"; in generate_c_source()
2646 stream << indent_str; in generate_c_source()
2647 stream << " break;"; in generate_c_source()
2648 stream << "\n"; in generate_c_source()
2649 stream << indent_str; in generate_c_source()
2653 stream << " case ARG_LONGLONG:"; in generate_c_source()
2654 stream << "\n"; in generate_c_source()
2655 stream << indent_str; in generate_c_source()
2656 stream << "#if defined(HAVE_LONG_LONG) || defined(HAVE_LONG_LONG_INT)"; in generate_c_source()
2657 stream << "\n"; in generate_c_source()
2658 stream << indent_str; in generate_c_source()
2659stream << " if (val) *((long long int*)field) = (long long int) strtoll (val, &stop_char, 0);"; in generate_c_source()
2660 stream << "\n"; in generate_c_source()
2661 stream << indent_str; in generate_c_source()
2662 stream << "#else"; in generate_c_source()
2663 stream << "\n"; in generate_c_source()
2664 stream << indent_str; in generate_c_source()
2665 stream << " if (val) *((long *)field) = (long)strtol (val, &stop_char, 0);"; in generate_c_source()
2666 stream << "\n"; in generate_c_source()
2667 stream << indent_str; in generate_c_source()
2668 stream << "#endif"; in generate_c_source()
2669 stream << "\n"; in generate_c_source()
2670 stream << indent_str; in generate_c_source()
2671 stream << " break;"; in generate_c_source()
2672 stream << "\n"; in generate_c_source()
2673 stream << indent_str; in generate_c_source()
2677 stream << " case ARG_ENUM:"; in generate_c_source()
2678 stream << "\n"; in generate_c_source()
2679 stream << indent_str; in generate_c_source()
2680 stream << " if (val) *((int *)field) = found;"; in generate_c_source()
2681 stream << "\n"; in generate_c_source()
2682 stream << indent_str; in generate_c_source()
2683 stream << " break;"; in generate_c_source()
2684 stream << "\n"; in generate_c_source()
2685 stream << indent_str; in generate_c_source()
2689 stream << " case ARG_STRING:"; in generate_c_source()
2690 stream << "\n"; in generate_c_source()
2691 stream << indent_str; in generate_c_source()
2692 stream << " if (val) {"; in generate_c_source()
2693 stream << "\n"; in generate_c_source()
2694 stream << indent_str; in generate_c_source()
2695 stream << " string_field = (char **)field;"; in generate_c_source()
2696 stream << "\n"; in generate_c_source()
2697 stream << indent_str; in generate_c_source()
2698 stream << " if (!no_free && *string_field)"; in generate_c_source()
2699 stream << "\n"; in generate_c_source()
2700 stream << indent_str; in generate_c_source()
2701 stream << " free (*string_field); /* free previous string */"; in generate_c_source()
2702 stream << "\n"; in generate_c_source()
2703 stream << indent_str; in generate_c_source()
2704 stream << " *string_field = gengetopt_strdup (val);"; in generate_c_source()
2705 stream << "\n"; in generate_c_source()
2706 stream << indent_str; in generate_c_source()
2707 stream << " }"; in generate_c_source()
2708 stream << "\n"; in generate_c_source()
2709 stream << indent_str; in generate_c_source()
2710 stream << " break;"; in generate_c_source()
2711 stream << "\n"; in generate_c_source()
2712 stream << indent_str; in generate_c_source()
2714 stream << " default:"; in generate_c_source()
2715 stream << "\n"; in generate_c_source()
2716 stream << indent_str; in generate_c_source()
2717 stream << " break;"; in generate_c_source()
2718 stream << "\n"; in generate_c_source()
2719 stream << indent_str; in generate_c_source()
2720 stream << " };"; in generate_c_source()
2721 stream << "\n"; in generate_c_source()
2722 stream << indent_str; in generate_c_source()
2723 stream << "\n"; in generate_c_source()
2724 stream << indent_str; in generate_c_source()
2727 stream << " /* check numeric conversion */"; in generate_c_source()
2728 stream << "\n"; in generate_c_source()
2729 stream << indent_str; in generate_c_source()
2730 stream << " switch(arg_type) {"; in generate_c_source()
2731 stream << "\n"; in generate_c_source()
2732 stream << indent_str; in generate_c_source()
2735 stream << " case ARG_INT:"; in generate_c_source()
2736 stream << "\n"; in generate_c_source()
2737 stream << indent_str; in generate_c_source()
2741 stream << " case ARG_SHORT:"; in generate_c_source()
2742 stream << "\n"; in generate_c_source()
2743 stream << indent_str; in generate_c_source()
2747 stream << " case ARG_LONG:"; in generate_c_source()
2748 stream << "\n"; in generate_c_source()
2749 stream << indent_str; in generate_c_source()
2753 stream << " case ARG_FLOAT:"; in generate_c_source()
2754 stream << "\n"; in generate_c_source()
2755 stream << indent_str; in generate_c_source()
2759 stream << " case ARG_DOUBLE:"; in generate_c_source()
2760 stream << "\n"; in generate_c_source()
2761 stream << indent_str; in generate_c_source()
2765 stream << " case ARG_LONGDOUBLE:"; in generate_c_source()
2766 stream << "\n"; in generate_c_source()
2767 stream << indent_str; in generate_c_source()
2771 stream << " case ARG_LONGLONG:"; in generate_c_source()
2772 stream << "\n"; in generate_c_source()
2773 stream << indent_str; in generate_c_source()
2775 stream << " if (val && !(stop_char && *stop_char == '\\0')) {"; in generate_c_source()
2776 stream << "\n"; in generate_c_source()
2777 stream << indent_str; in generate_c_source()
2778stream << " fprintf(stderr, \"%s: invalid numeric value: %s\\n\", package_name, val);"; in generate_c_source()
2779 stream << "\n"; in generate_c_source()
2780 stream << indent_str; in generate_c_source()
2781 stream << " return 1; /* failure */"; in generate_c_source()
2782 stream << "\n"; in generate_c_source()
2783 stream << indent_str; in generate_c_source()
2784 stream << " }"; in generate_c_source()
2785 stream << "\n"; in generate_c_source()
2786 stream << indent_str; in generate_c_source()
2787 stream << " break;"; in generate_c_source()
2788 stream << "\n"; in generate_c_source()
2789 stream << indent_str; in generate_c_source()
2790 stream << " default:"; in generate_c_source()
2791 stream << "\n"; in generate_c_source()
2792 stream << indent_str; in generate_c_source()
2793 stream << " ;"; in generate_c_source()
2794 stream << "\n"; in generate_c_source()
2795 stream << indent_str; in generate_c_source()
2796 stream << " };"; in generate_c_source()
2797 stream << "\n"; in generate_c_source()
2798 stream << indent_str; in generate_c_source()
2802 stream << " FIX_UNUSED(stop_char);"; in generate_c_source()
2803 stream << "\n"; in generate_c_source()
2804 stream << indent_str; in generate_c_source()
2805 stream << " "; in generate_c_source()
2808 stream << " FIX_UNUSED(val);"; in generate_c_source()
2809 stream << "\n"; in generate_c_source()
2810 stream << indent_str; in generate_c_source()
2811 stream << " "; in generate_c_source()
2814 stream << "\n"; in generate_c_source()
2815 stream << indent_str; in generate_c_source()
2816 stream << " /* store the original value */"; in generate_c_source()
2817 stream << "\n"; in generate_c_source()
2818 stream << indent_str; in generate_c_source()
2819 stream << " switch(arg_type) {"; in generate_c_source()
2820 stream << "\n"; in generate_c_source()
2821 stream << indent_str; in generate_c_source()
2822 stream << " case ARG_NO:"; in generate_c_source()
2823 stream << "\n"; in generate_c_source()
2824 stream << indent_str; in generate_c_source()
2827 stream << " case ARG_FLAG:"; in generate_c_source()
2828 stream << "\n"; in generate_c_source()
2829 stream << indent_str; in generate_c_source()
2831 stream << " break;"; in generate_c_source()
2832 stream << "\n"; in generate_c_source()
2833 stream << indent_str; in generate_c_source()
2834 stream << " default:"; in generate_c_source()
2835 stream << "\n"; in generate_c_source()
2836 stream << indent_str; in generate_c_source()
2837 stream << " if (value && orig_field) {"; in generate_c_source()
2838 stream << "\n"; in generate_c_source()
2839 stream << indent_str; in generate_c_source()
2840 stream << " if (no_free) {"; in generate_c_source()
2841 stream << "\n"; in generate_c_source()
2842 stream << indent_str; in generate_c_source()
2843 stream << " *orig_field = value;"; in generate_c_source()
2844 stream << "\n"; in generate_c_source()
2845 stream << indent_str; in generate_c_source()
2846 stream << " } else {"; in generate_c_source()
2847 stream << "\n"; in generate_c_source()
2848 stream << indent_str; in generate_c_source()
2849 stream << " if (*orig_field)"; in generate_c_source()
2850 stream << "\n"; in generate_c_source()
2851 stream << indent_str; in generate_c_source()
2852 stream << " free (*orig_field); /* free previous string */"; in generate_c_source()
2853 stream << "\n"; in generate_c_source()
2854 stream << indent_str; in generate_c_source()
2855 stream << " *orig_field = gengetopt_strdup (value);"; in generate_c_source()
2856 stream << "\n"; in generate_c_source()
2857 stream << indent_str; in generate_c_source()
2858 stream << " }"; in generate_c_source()
2859 stream << "\n"; in generate_c_source()
2860 stream << indent_str; in generate_c_source()
2861 stream << " }"; in generate_c_source()
2862 stream << "\n"; in generate_c_source()
2863 stream << indent_str; in generate_c_source()
2864 stream << " };"; in generate_c_source()
2865 stream << "\n"; in generate_c_source()
2866 stream << indent_str; in generate_c_source()
2867 stream << "\n"; in generate_c_source()
2868 stream << indent_str; in generate_c_source()
2869 stream << " return 0; /* OK */"; in generate_c_source()
2870 stream << "\n"; in generate_c_source()
2871 stream << indent_str; in generate_c_source()
2872 stream << "}"; in generate_c_source()
2873 stream << "\n"; in generate_c_source()
2874 stream << indent_str; in generate_c_source()
2876 stream << "\n"; in generate_c_source()
2877 stream << indent_str; in generate_c_source()
2880 stream << "/**"; in generate_c_source()
2881 stream << "\n"; in generate_c_source()
2882 stream << indent_str; in generate_c_source()
2883 stream << " * "; in generate_c_source()
2884 stream << "@"; in generate_c_source()
2885 stream << "brief store information about a multiple option in a temporary list"; in generate_c_source()
2886 stream << "\n"; in generate_c_source()
2887 stream << indent_str; in generate_c_source()
2888 stream << " * "; in generate_c_source()
2889 stream << "@"; in generate_c_source()
2890 stream << "param list where to (temporarily) store multiple options"; in generate_c_source()
2891 stream << "\n"; in generate_c_source()
2892 stream << indent_str; in generate_c_source()
2893 stream << " */"; in generate_c_source()
2894 stream << "\n"; in generate_c_source()
2895 stream << indent_str; in generate_c_source()
2896 stream << "static"; in generate_c_source()
2897 stream << "\n"; in generate_c_source()
2898 stream << indent_str; in generate_c_source()
2899 stream << "int update_multiple_arg_temp(struct generic_list **list,"; in generate_c_source()
2900 stream << "\n"; in generate_c_source()
2901 stream << indent_str; in generate_c_source()
2902 stream << " unsigned int *prev_given, const char *val,"; in generate_c_source()
2903 stream << "\n"; in generate_c_source()
2904 stream << indent_str; in generate_c_source()
2905 stream << " const char *possible_values[], const char *default_value,"; in generate_c_source()
2906 stream << "\n"; in generate_c_source()
2907 stream << indent_str; in generate_c_source()
2909 stream << " "; in generate_c_source()
2910 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
2911 stream << "_arg_type arg_type,"; in generate_c_source()
2913 stream << "\n"; in generate_c_source()
2914 stream << indent_str; in generate_c_source()
2915 stream << " const char *long_opt, char short_opt,"; in generate_c_source()
2916 stream << "\n"; in generate_c_source()
2917 stream << indent_str; in generate_c_source()
2918 stream << " const char *additional_error)"; in generate_c_source()
2919 stream << "\n"; in generate_c_source()
2920 stream << indent_str; in generate_c_source()
2921 stream << "{"; in generate_c_source()
2922 stream << "\n"; in generate_c_source()
2923 stream << indent_str; in generate_c_source()
2924 stream << " /* store single arguments */"; in generate_c_source()
2925 stream << "\n"; in generate_c_source()
2926 stream << indent_str; in generate_c_source()
2927 stream << " char *multi_token;"; in generate_c_source()
2928 stream << "\n"; in generate_c_source()
2929 stream << indent_str; in generate_c_source()
2930 stream << " const char *multi_next;"; in generate_c_source()
2931 stream << "\n"; in generate_c_source()
2932 stream << indent_str; in generate_c_source()
2933 stream << "\n"; in generate_c_source()
2934 stream << indent_str; in generate_c_source()
2935 stream << " if (arg_type == ARG_NO) {"; in generate_c_source()
2936 stream << "\n"; in generate_c_source()
2937 stream << indent_str; in generate_c_source()
2938 stream << " (*prev_given)++;"; in generate_c_source()
2939 stream << "\n"; in generate_c_source()
2940 stream << indent_str; in generate_c_source()
2941 stream << " return 0; /* OK */"; in generate_c_source()
2942 stream << "\n"; in generate_c_source()
2943 stream << indent_str; in generate_c_source()
2944 stream << " }"; in generate_c_source()
2945 stream << "\n"; in generate_c_source()
2946 stream << indent_str; in generate_c_source()
2947 stream << "\n"; in generate_c_source()
2948 stream << indent_str; in generate_c_source()
2949 stream << " multi_token = get_multiple_arg_token(val);"; in generate_c_source()
2950 stream << "\n"; in generate_c_source()
2951 stream << indent_str; in generate_c_source()
2952 stream << " multi_next = get_multiple_arg_token_next (val);"; in generate_c_source()
2953 stream << "\n"; in generate_c_source()
2954 stream << indent_str; in generate_c_source()
2955 stream << "\n"; in generate_c_source()
2956 stream << indent_str; in generate_c_source()
2957 stream << " while (1)"; in generate_c_source()
2958 stream << "\n"; in generate_c_source()
2959 stream << indent_str; in generate_c_source()
2960 stream << " {"; in generate_c_source()
2961 stream << "\n"; in generate_c_source()
2962 stream << indent_str; in generate_c_source()
2963 stream << " add_node (list);"; in generate_c_source()
2964 stream << "\n"; in generate_c_source()
2965 stream << indent_str; in generate_c_source()
2966 stream << " if (update_arg((void *)&((*list)->arg), &((*list)->orig), 0,"; in generate_c_source()
2967 stream << "\n"; in generate_c_source()
2968 stream << indent_str; in generate_c_source()
2969 stream << " prev_given, multi_token, possible_values, default_value, "; in generate_c_source()
2970 stream << "\n"; in generate_c_source()
2971 stream << indent_str; in generate_c_source()
2972 stream << " arg_type, 0, 1, 1, 1, long_opt, short_opt, additional_error)) {"; in generate_c_source()
2973 stream << "\n"; in generate_c_source()
2974 stream << indent_str; in generate_c_source()
2975 stream << " if (multi_token) free(multi_token);"; in generate_c_source()
2976 stream << "\n"; in generate_c_source()
2977 stream << indent_str; in generate_c_source()
2978 stream << " return 1; /* failure */"; in generate_c_source()
2979 stream << "\n"; in generate_c_source()
2980 stream << indent_str; in generate_c_source()
2981 stream << " }"; in generate_c_source()
2982 stream << "\n"; in generate_c_source()
2983 stream << indent_str; in generate_c_source()
2984 stream << "\n"; in generate_c_source()
2985 stream << indent_str; in generate_c_source()
2986 stream << " if (multi_next)"; in generate_c_source()
2987 stream << "\n"; in generate_c_source()
2988 stream << indent_str; in generate_c_source()
2989 stream << " {"; in generate_c_source()
2990 stream << "\n"; in generate_c_source()
2991 stream << indent_str; in generate_c_source()
2992 stream << " multi_token = get_multiple_arg_token(multi_next);"; in generate_c_source()
2993 stream << "\n"; in generate_c_source()
2994 stream << indent_str; in generate_c_source()
2995 stream << " multi_next = get_multiple_arg_token_next (multi_next);"; in generate_c_source()
2996 stream << "\n"; in generate_c_source()
2997 stream << indent_str; in generate_c_source()
2998 stream << " }"; in generate_c_source()
2999 stream << "\n"; in generate_c_source()
3000 stream << indent_str; in generate_c_source()
3001 stream << " else"; in generate_c_source()
3002 stream << "\n"; in generate_c_source()
3003 stream << indent_str; in generate_c_source()
3004 stream << " break;"; in generate_c_source()
3005 stream << "\n"; in generate_c_source()
3006 stream << indent_str; in generate_c_source()
3007 stream << " }"; in generate_c_source()
3008 stream << "\n"; in generate_c_source()
3009 stream << indent_str; in generate_c_source()
3010 stream << "\n"; in generate_c_source()
3011 stream << indent_str; in generate_c_source()
3012 stream << " return 0; /* OK */"; in generate_c_source()
3013 stream << "\n"; in generate_c_source()
3014 stream << indent_str; in generate_c_source()
3015 stream << "}"; in generate_c_source()
3016 stream << "\n"; in generate_c_source()
3017 stream << indent_str; in generate_c_source()
3018 stream << "\n"; in generate_c_source()
3019 stream << indent_str; in generate_c_source()
3020 stream << "/**"; in generate_c_source()
3021 stream << "\n"; in generate_c_source()
3022 stream << indent_str; in generate_c_source()
3023 stream << " * "; in generate_c_source()
3024 stream << "@"; in generate_c_source()
3025 stream << "brief free the passed list (including possible string argument)"; in generate_c_source()
3026 stream << "\n"; in generate_c_source()
3027 stream << indent_str; in generate_c_source()
3028 stream << " */"; in generate_c_source()
3029 stream << "\n"; in generate_c_source()
3030 stream << indent_str; in generate_c_source()
3031 stream << "static"; in generate_c_source()
3032 stream << "\n"; in generate_c_source()
3033 stream << indent_str; in generate_c_source()
3034 stream << "void free_list(struct generic_list *list, short string_arg)"; in generate_c_source()
3035 stream << "\n"; in generate_c_source()
3036 stream << indent_str; in generate_c_source()
3037 stream << "{"; in generate_c_source()
3038 stream << "\n"; in generate_c_source()
3039 stream << indent_str; in generate_c_source()
3040 stream << " if (list) {"; in generate_c_source()
3041 stream << "\n"; in generate_c_source()
3042 stream << indent_str; in generate_c_source()
3043 stream << " struct generic_list *tmp;"; in generate_c_source()
3044 stream << "\n"; in generate_c_source()
3045 stream << indent_str; in generate_c_source()
3046 stream << " while (list)"; in generate_c_source()
3047 stream << "\n"; in generate_c_source()
3048 stream << indent_str; in generate_c_source()
3049 stream << " {"; in generate_c_source()
3050 stream << "\n"; in generate_c_source()
3051 stream << indent_str; in generate_c_source()
3052 stream << " tmp = list;"; in generate_c_source()
3053 stream << "\n"; in generate_c_source()
3054 stream << indent_str; in generate_c_source()
3055 stream << " if (string_arg && list->arg.string_arg)"; in generate_c_source()
3056 stream << "\n"; in generate_c_source()
3057 stream << indent_str; in generate_c_source()
3058 stream << " free (list->arg.string_arg);"; in generate_c_source()
3059 stream << "\n"; in generate_c_source()
3060 stream << indent_str; in generate_c_source()
3061 stream << " if (list->orig)"; in generate_c_source()
3062 stream << "\n"; in generate_c_source()
3063 stream << indent_str; in generate_c_source()
3064 stream << " free (list->orig);"; in generate_c_source()
3065 stream << "\n"; in generate_c_source()
3066 stream << indent_str; in generate_c_source()
3067 stream << " list = list->next;"; in generate_c_source()
3068 stream << "\n"; in generate_c_source()
3069 stream << indent_str; in generate_c_source()
3070 stream << " free (tmp);"; in generate_c_source()
3071 stream << "\n"; in generate_c_source()
3072 stream << indent_str; in generate_c_source()
3073 stream << " }"; in generate_c_source()
3074 stream << "\n"; in generate_c_source()
3075 stream << indent_str; in generate_c_source()
3076 stream << " }"; in generate_c_source()
3077 stream << "\n"; in generate_c_source()
3078 stream << indent_str; in generate_c_source()
3079 stream << "}"; in generate_c_source()
3080 stream << "\n"; in generate_c_source()
3081 stream << indent_str; in generate_c_source()
3082 stream << "\n"; in generate_c_source()
3083 stream << indent_str; in generate_c_source()
3084 stream << "/**"; in generate_c_source()
3085 stream << "\n"; in generate_c_source()
3086 stream << indent_str; in generate_c_source()
3087 stream << " * "; in generate_c_source()
3088 stream << "@"; in generate_c_source()
3089 stream << "brief updates a multiple option starting from the passed list"; in generate_c_source()
3090 stream << "\n"; in generate_c_source()
3091 stream << indent_str; in generate_c_source()
3092 stream << " */"; in generate_c_source()
3093 stream << "\n"; in generate_c_source()
3094 stream << indent_str; in generate_c_source()
3095 stream << "static"; in generate_c_source()
3096 stream << "\n"; in generate_c_source()
3097 stream << indent_str; in generate_c_source()
3098 stream << "void update_multiple_arg(void *field, char ***orig_field,"; in generate_c_source()
3099 stream << "\n"; in generate_c_source()
3100 stream << indent_str; in generate_c_source()
3101stream << " unsigned int field_given, unsigned int prev_given, union generic_value *… in generate_c_source()
3102 stream << "\n"; in generate_c_source()
3103 stream << indent_str; in generate_c_source()
3105 stream << " "; in generate_c_source()
3106 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
3107 stream << "_arg_type arg_type,"; in generate_c_source()
3109 stream << "\n"; in generate_c_source()
3110 stream << indent_str; in generate_c_source()
3111 stream << " struct generic_list *list)"; in generate_c_source()
3112 stream << "\n"; in generate_c_source()
3113 stream << indent_str; in generate_c_source()
3114 stream << "{"; in generate_c_source()
3115 stream << "\n"; in generate_c_source()
3116 stream << indent_str; in generate_c_source()
3117 stream << " int i;"; in generate_c_source()
3118 stream << "\n"; in generate_c_source()
3119 stream << indent_str; in generate_c_source()
3120 stream << " struct generic_list *tmp;"; in generate_c_source()
3121 stream << "\n"; in generate_c_source()
3122 stream << indent_str; in generate_c_source()
3123 stream << "\n"; in generate_c_source()
3124 stream << indent_str; in generate_c_source()
3125 stream << " if (prev_given && list) {"; in generate_c_source()
3126 stream << "\n"; in generate_c_source()
3127 stream << indent_str; in generate_c_source()
3128stream << " *orig_field = (char **) realloc (*orig_field, (field_given + prev_given) * sizeof (… in generate_c_source()
3129 stream << "\n"; in generate_c_source()
3130 stream << indent_str; in generate_c_source()
3131 stream << "\n"; in generate_c_source()
3132 stream << indent_str; in generate_c_source()
3133 stream << " switch(arg_type) {"; in generate_c_source()
3134 stream << "\n"; in generate_c_source()
3135 stream << indent_str; in generate_c_source()
3140 stream << " case ARG_INT:"; in generate_c_source()
3141 stream << "\n"; in generate_c_source()
3142 stream << indent_str; in generate_c_source()
3146 stream << " case ARG_ENUM:"; in generate_c_source()
3147 stream << "\n"; in generate_c_source()
3148 stream << indent_str; in generate_c_source()
3150stream << " *((int **)field) = (int *)realloc (*((int **)field), (field_given + prev_given) *… in generate_c_source()
3151 stream << "\n"; in generate_c_source()
3152 stream << indent_str; in generate_c_source()
3156 stream << " case ARG_SHORT:"; in generate_c_source()
3157 stream << "\n"; in generate_c_source()
3158 stream << indent_str; in generate_c_source()
3159stream << " *((short **)field) = (short *)realloc (*((short **)field), (field_given + prev_gi… in generate_c_source()
3160 stream << "\n"; in generate_c_source()
3161 stream << indent_str; in generate_c_source()
3165 stream << " case ARG_LONG:"; in generate_c_source()
3166 stream << "\n"; in generate_c_source()
3167 stream << indent_str; in generate_c_source()
3168stream << " *((long **)field) = (long *)realloc (*((long **)field), (field_given + prev_given… in generate_c_source()
3169 stream << "\n"; in generate_c_source()
3170 stream << indent_str; in generate_c_source()
3174 stream << " case ARG_FLOAT:"; in generate_c_source()
3175 stream << "\n"; in generate_c_source()
3176 stream << indent_str; in generate_c_source()
3177stream << " *((float **)field) = (float *)realloc (*((float **)field), (field_given + prev_gi… in generate_c_source()
3178 stream << "\n"; in generate_c_source()
3179 stream << indent_str; in generate_c_source()
3183 stream << " case ARG_DOUBLE:"; in generate_c_source()
3184 stream << "\n"; in generate_c_source()
3185 stream << indent_str; in generate_c_source()
3186stream << " *((double **)field) = (double *)realloc (*((double **)field), (field_given + prev… in generate_c_source()
3187 stream << "\n"; in generate_c_source()
3188 stream << indent_str; in generate_c_source()
3192 stream << " case ARG_LONGDOUBLE:"; in generate_c_source()
3193 stream << "\n"; in generate_c_source()
3194 stream << indent_str; in generate_c_source()
3195stream << " *((long double **)field) = (long double *)realloc (*((long double **)field), (fie… in generate_c_source()
3196 stream << "\n"; in generate_c_source()
3197 stream << indent_str; in generate_c_source()
3201 stream << " case ARG_LONGLONG:"; in generate_c_source()
3202 stream << "\n"; in generate_c_source()
3203 stream << indent_str; in generate_c_source()
3204 stream << "#if defined(HAVE_LONG_LONG) || defined(HAVE_LONG_LONG_INT)"; in generate_c_source()
3205 stream << "\n"; in generate_c_source()
3206 stream << indent_str; in generate_c_source()
3207stream << " *((long long int **)field) = (long long int *)realloc (*((long long int **)field)… in generate_c_source()
3208 stream << "\n"; in generate_c_source()
3209 stream << indent_str; in generate_c_source()
3210 stream << "#else"; in generate_c_source()
3211 stream << "\n"; in generate_c_source()
3212 stream << indent_str; in generate_c_source()
3213stream << " *((long **)field) = (long *)realloc (*((long **)field), (field_given + prev_given… in generate_c_source()
3214 stream << "\n"; in generate_c_source()
3215 stream << indent_str; in generate_c_source()
3216 stream << "#endif"; in generate_c_source()
3217 stream << "\n"; in generate_c_source()
3218 stream << indent_str; in generate_c_source()
3222 stream << " case ARG_STRING:"; in generate_c_source()
3223 stream << "\n"; in generate_c_source()
3224 stream << indent_str; in generate_c_source()
3225stream << " *((char ***)field) = (char **)realloc (*((char ***)field), (field_given + prev_gi… in generate_c_source()
3226 stream << "\n"; in generate_c_source()
3227 stream << indent_str; in generate_c_source()
3229 stream << " default:"; in generate_c_source()
3230 stream << "\n"; in generate_c_source()
3231 stream << indent_str; in generate_c_source()
3232 stream << " break;"; in generate_c_source()
3233 stream << "\n"; in generate_c_source()
3234 stream << indent_str; in generate_c_source()
3235 stream << " };"; in generate_c_source()
3236 stream << "\n"; in generate_c_source()
3237 stream << indent_str; in generate_c_source()
3239 stream << " "; in generate_c_source()
3241 stream << "\n"; in generate_c_source()
3242 stream << indent_str; in generate_c_source()
3243 stream << " for (i = (prev_given - 1); i >= 0; --i)"; in generate_c_source()
3244 stream << "\n"; in generate_c_source()
3245 stream << indent_str; in generate_c_source()
3246 stream << " {"; in generate_c_source()
3247 stream << "\n"; in generate_c_source()
3248 stream << indent_str; in generate_c_source()
3249 stream << " tmp = list;"; in generate_c_source()
3250 stream << "\n"; in generate_c_source()
3251 stream << indent_str; in generate_c_source()
3253 stream << " "; in generate_c_source()
3255 stream << "\n"; in generate_c_source()
3256 stream << indent_str; in generate_c_source()
3257 stream << " switch(arg_type) {"; in generate_c_source()
3258 stream << "\n"; in generate_c_source()
3259 stream << indent_str; in generate_c_source()
3262 stream << " case ARG_INT:"; in generate_c_source()
3263 stream << "\n"; in generate_c_source()
3264 stream << indent_str; in generate_c_source()
3265 stream << " (*((int **)field))[i + field_given] = tmp->arg.int_arg; break;"; in generate_c_source()
3266 stream << "\n"; in generate_c_source()
3267 stream << indent_str; in generate_c_source()
3271 stream << " case ARG_SHORT:"; in generate_c_source()
3272 stream << "\n"; in generate_c_source()
3273 stream << indent_str; in generate_c_source()
3274 stream << " (*((short **)field))[i + field_given] = tmp->arg.short_arg; break;"; in generate_c_source()
3275 stream << "\n"; in generate_c_source()
3276 stream << indent_str; in generate_c_source()
3280 stream << " case ARG_LONG:"; in generate_c_source()
3281 stream << "\n"; in generate_c_source()
3282 stream << indent_str; in generate_c_source()
3283 stream << " (*((long **)field))[i + field_given] = tmp->arg.long_arg; break;"; in generate_c_source()
3284 stream << "\n"; in generate_c_source()
3285 stream << indent_str; in generate_c_source()
3289 stream << " case ARG_FLOAT:"; in generate_c_source()
3290 stream << "\n"; in generate_c_source()
3291 stream << indent_str; in generate_c_source()
3292 stream << " (*((float **)field))[i + field_given] = tmp->arg.float_arg; break;"; in generate_c_source()
3293 stream << "\n"; in generate_c_source()
3294 stream << indent_str; in generate_c_source()
3298 stream << " case ARG_DOUBLE:"; in generate_c_source()
3299 stream << "\n"; in generate_c_source()
3300 stream << indent_str; in generate_c_source()
3301stream << " (*((double **)field))[i + field_given] = tmp->arg.double_arg; break;"; in generate_c_source()
3302 stream << "\n"; in generate_c_source()
3303 stream << indent_str; in generate_c_source()
3307 stream << " case ARG_LONGDOUBLE:"; in generate_c_source()
3308 stream << "\n"; in generate_c_source()
3309 stream << indent_str; in generate_c_source()
3310stream << " (*((long double **)field))[i + field_given] = tmp->arg.longdouble_arg; break;… in generate_c_source()
3311 stream << "\n"; in generate_c_source()
3312 stream << indent_str; in generate_c_source()
3316 stream << " case ARG_LONGLONG:"; in generate_c_source()
3317 stream << "\n"; in generate_c_source()
3318 stream << indent_str; in generate_c_source()
3319 stream << "#if defined(HAVE_LONG_LONG) || defined(HAVE_LONG_LONG_INT)"; in generate_c_source()
3320 stream << "\n"; in generate_c_source()
3321 stream << indent_str; in generate_c_source()
3322stream << " (*((long long int **)field))[i + field_given] = tmp->arg.longlong_arg; break;… in generate_c_source()
3323 stream << "\n"; in generate_c_source()
3324 stream << indent_str; in generate_c_source()
3325 stream << "#else"; in generate_c_source()
3326 stream << "\n"; in generate_c_source()
3327 stream << indent_str; in generate_c_source()
3328stream << " (*((long **)field))[i + field_given] = tmp->arg.longlong_arg; break;"; in generate_c_source()
3329 stream << "\n"; in generate_c_source()
3330 stream << indent_str; in generate_c_source()
3331 stream << "#endif"; in generate_c_source()
3332 stream << "\n"; in generate_c_source()
3333 stream << indent_str; in generate_c_source()
3337 stream << " case ARG_ENUM:"; in generate_c_source()
3338 stream << "\n"; in generate_c_source()
3339 stream << indent_str; in generate_c_source()
3340 stream << " (*((int **)field))[i + field_given] = tmp->arg.int_arg; break;"; in generate_c_source()
3341 stream << "\n"; in generate_c_source()
3342 stream << indent_str; in generate_c_source()
3346 stream << " case ARG_STRING:"; in generate_c_source()
3347 stream << "\n"; in generate_c_source()
3348 stream << indent_str; in generate_c_source()
3349 stream << " (*((char ***)field))[i + field_given] = tmp->arg.string_arg; break;"; in generate_c_source()
3350 stream << "\n"; in generate_c_source()
3351 stream << indent_str; in generate_c_source()
3353 stream << " default:"; in generate_c_source()
3354 stream << "\n"; in generate_c_source()
3355 stream << indent_str; in generate_c_source()
3356 stream << " break;"; in generate_c_source()
3357 stream << "\n"; in generate_c_source()
3358 stream << indent_str; in generate_c_source()
3359 stream << " } "; in generate_c_source()
3360 stream << "\n"; in generate_c_source()
3361 stream << indent_str; in generate_c_source()
3362 stream << " (*orig_field) [i + field_given] = list->orig;"; in generate_c_source()
3363 stream << "\n"; in generate_c_source()
3364 stream << indent_str; in generate_c_source()
3365 stream << " list = list->next;"; in generate_c_source()
3366 stream << "\n"; in generate_c_source()
3367 stream << indent_str; in generate_c_source()
3368 stream << " free (tmp);"; in generate_c_source()
3369 stream << "\n"; in generate_c_source()
3370 stream << indent_str; in generate_c_source()
3371 stream << " }"; in generate_c_source()
3372 stream << "\n"; in generate_c_source()
3373 stream << indent_str; in generate_c_source()
3374 stream << " } else { /* set the default value */"; in generate_c_source()
3375 stream << "\n"; in generate_c_source()
3376 stream << indent_str; in generate_c_source()
3377 stream << " if (default_value && ! field_given) {"; in generate_c_source()
3378 stream << "\n"; in generate_c_source()
3379 stream << indent_str; in generate_c_source()
3380 stream << " switch(arg_type) {"; in generate_c_source()
3381 stream << "\n"; in generate_c_source()
3382 stream << indent_str; in generate_c_source()
3387 stream << " case ARG_INT:"; in generate_c_source()
3388 stream << "\n"; in generate_c_source()
3389 stream << indent_str; in generate_c_source()
3393 stream << " case ARG_ENUM:"; in generate_c_source()
3394 stream << "\n"; in generate_c_source()
3395 stream << indent_str; in generate_c_source()
3397 stream << " if (! *((int **)field)) {"; in generate_c_source()
3398 stream << "\n"; in generate_c_source()
3399 stream << indent_str; in generate_c_source()
3400 stream << " *((int **)field) = (int *)malloc (sizeof (int));"; in generate_c_source()
3401 stream << "\n"; in generate_c_source()
3402 stream << indent_str; in generate_c_source()
3403 stream << " (*((int **)field))[0] = default_value->int_arg; "; in generate_c_source()
3404 stream << "\n"; in generate_c_source()
3405 stream << indent_str; in generate_c_source()
3406 stream << " }"; in generate_c_source()
3407 stream << "\n"; in generate_c_source()
3408 stream << indent_str; in generate_c_source()
3409 stream << " break;"; in generate_c_source()
3410 stream << "\n"; in generate_c_source()
3411 stream << indent_str; in generate_c_source()
3415 stream << " case ARG_SHORT:"; in generate_c_source()
3416 stream << "\n"; in generate_c_source()
3417 stream << indent_str; in generate_c_source()
3418 stream << " if (! *((short **)field)) {"; in generate_c_source()
3419 stream << "\n"; in generate_c_source()
3420 stream << indent_str; in generate_c_source()
3421 stream << " *((short **)field) = (short *)malloc (sizeof (short));"; in generate_c_source()
3422 stream << "\n"; in generate_c_source()
3423 stream << indent_str; in generate_c_source()
3424 stream << " (*((short **)field))[0] = default_value->short_arg;"; in generate_c_source()
3425 stream << "\n"; in generate_c_source()
3426 stream << indent_str; in generate_c_source()
3427 stream << " }"; in generate_c_source()
3428 stream << "\n"; in generate_c_source()
3429 stream << indent_str; in generate_c_source()
3430 stream << " break;"; in generate_c_source()
3431 stream << "\n"; in generate_c_source()
3432 stream << indent_str; in generate_c_source()
3436 stream << " case ARG_LONG:"; in generate_c_source()
3437 stream << "\n"; in generate_c_source()
3438 stream << indent_str; in generate_c_source()
3439 stream << " if (! *((long **)field)) {"; in generate_c_source()
3440 stream << "\n"; in generate_c_source()
3441 stream << indent_str; in generate_c_source()
3442 stream << " *((long **)field) = (long *)malloc (sizeof (long));"; in generate_c_source()
3443 stream << "\n"; in generate_c_source()
3444 stream << indent_str; in generate_c_source()
3445 stream << " (*((long **)field))[0] = default_value->long_arg;"; in generate_c_source()
3446 stream << "\n"; in generate_c_source()
3447 stream << indent_str; in generate_c_source()
3448 stream << " }"; in generate_c_source()
3449 stream << "\n"; in generate_c_source()
3450 stream << indent_str; in generate_c_source()
3451 stream << " break;"; in generate_c_source()
3452 stream << "\n"; in generate_c_source()
3453 stream << indent_str; in generate_c_source()
3457 stream << " case ARG_FLOAT:"; in generate_c_source()
3458 stream << "\n"; in generate_c_source()
3459 stream << indent_str; in generate_c_source()
3460 stream << " if (! *((float **)field)) {"; in generate_c_source()
3461 stream << "\n"; in generate_c_source()
3462 stream << indent_str; in generate_c_source()
3463 stream << " *((float **)field) = (float *)malloc (sizeof (float));"; in generate_c_source()
3464 stream << "\n"; in generate_c_source()
3465 stream << indent_str; in generate_c_source()
3466 stream << " (*((float **)field))[0] = default_value->float_arg;"; in generate_c_source()
3467 stream << "\n"; in generate_c_source()
3468 stream << indent_str; in generate_c_source()
3469 stream << " }"; in generate_c_source()
3470 stream << "\n"; in generate_c_source()
3471 stream << indent_str; in generate_c_source()
3472 stream << " break;"; in generate_c_source()
3473 stream << "\n"; in generate_c_source()
3474 stream << indent_str; in generate_c_source()
3478 stream << " case ARG_DOUBLE:"; in generate_c_source()
3479 stream << "\n"; in generate_c_source()
3480 stream << indent_str; in generate_c_source()
3481 stream << " if (! *((double **)field)) {"; in generate_c_source()
3482 stream << "\n"; in generate_c_source()
3483 stream << indent_str; in generate_c_source()
3484 stream << " *((double **)field) = (double *)malloc (sizeof (double));"; in generate_c_source()
3485 stream << "\n"; in generate_c_source()
3486 stream << indent_str; in generate_c_source()
3487 stream << " (*((double **)field))[0] = default_value->double_arg;"; in generate_c_source()
3488 stream << "\n"; in generate_c_source()
3489 stream << indent_str; in generate_c_source()
3490 stream << " }"; in generate_c_source()
3491 stream << "\n"; in generate_c_source()
3492 stream << indent_str; in generate_c_source()
3493 stream << " break;"; in generate_c_source()
3494 stream << "\n"; in generate_c_source()
3495 stream << indent_str; in generate_c_source()
3499 stream << " case ARG_LONGDOUBLE:"; in generate_c_source()
3500 stream << "\n"; in generate_c_source()
3501 stream << indent_str; in generate_c_source()
3502 stream << " if (! *((long double **)field)) {"; in generate_c_source()
3503 stream << "\n"; in generate_c_source()
3504 stream << indent_str; in generate_c_source()
3505stream << " *((long double **)field) = (long double *)malloc (sizeof (long double));"; in generate_c_source()
3506 stream << "\n"; in generate_c_source()
3507 stream << indent_str; in generate_c_source()
3508 stream << " (*((long double **)field))[0] = default_value->longdouble_arg;"; in generate_c_source()
3509 stream << "\n"; in generate_c_source()
3510 stream << indent_str; in generate_c_source()
3511 stream << " }"; in generate_c_source()
3512 stream << "\n"; in generate_c_source()
3513 stream << indent_str; in generate_c_source()
3514 stream << " break;"; in generate_c_source()
3515 stream << "\n"; in generate_c_source()
3516 stream << indent_str; in generate_c_source()
3520 stream << " case ARG_LONGLONG:"; in generate_c_source()
3521 stream << "\n"; in generate_c_source()
3522 stream << indent_str; in generate_c_source()
3523 stream << "#if defined(HAVE_LONG_LONG) || defined(HAVE_LONG_LONG_INT)"; in generate_c_source()
3524 stream << "\n"; in generate_c_source()
3525 stream << indent_str; in generate_c_source()
3526 stream << " if (! *((long long int **)field)) {"; in generate_c_source()
3527 stream << "\n"; in generate_c_source()
3528 stream << indent_str; in generate_c_source()
3529stream << " *((long long int **)field) = (long long int *)malloc (sizeof (long long int))… in generate_c_source()
3530 stream << "\n"; in generate_c_source()
3531 stream << indent_str; in generate_c_source()
3532 stream << " (*((long long int **)field))[0] = default_value->longlong_arg;"; in generate_c_source()
3533 stream << "\n"; in generate_c_source()
3534 stream << indent_str; in generate_c_source()
3535 stream << " }"; in generate_c_source()
3536 stream << "\n"; in generate_c_source()
3537 stream << indent_str; in generate_c_source()
3538 stream << "#else"; in generate_c_source()
3539 stream << "\n"; in generate_c_source()
3540 stream << indent_str; in generate_c_source()
3541 stream << " if (! *((long **)field)) {"; in generate_c_source()
3542 stream << "\n"; in generate_c_source()
3543 stream << indent_str; in generate_c_source()
3544 stream << " *((long **)field) = (long *)malloc (sizeof (long));"; in generate_c_source()
3545 stream << "\n"; in generate_c_source()
3546 stream << indent_str; in generate_c_source()
3547 stream << " (*((long **)field))[0] = default_value->longlong_arg;"; in generate_c_source()
3548 stream << "\n"; in generate_c_source()
3549 stream << indent_str; in generate_c_source()
3550 stream << " }"; in generate_c_source()
3551 stream << "\n"; in generate_c_source()
3552 stream << indent_str; in generate_c_source()
3553 stream << "#endif"; in generate_c_source()
3554 stream << "\n"; in generate_c_source()
3555 stream << indent_str; in generate_c_source()
3556 stream << " break;"; in generate_c_source()
3557 stream << "\n"; in generate_c_source()
3558 stream << indent_str; in generate_c_source()
3562 stream << " case ARG_STRING:"; in generate_c_source()
3563 stream << "\n"; in generate_c_source()
3564 stream << indent_str; in generate_c_source()
3565 stream << " if (! *((char ***)field)) {"; in generate_c_source()
3566 stream << "\n"; in generate_c_source()
3567 stream << indent_str; in generate_c_source()
3568 stream << " *((char ***)field) = (char **)malloc (sizeof (char *));"; in generate_c_source()
3569 stream << "\n"; in generate_c_source()
3570 stream << indent_str; in generate_c_source()
3571stream << " (*((char ***)field))[0] = gengetopt_strdup(default_value->string_arg);"; in generate_c_source()
3572 stream << "\n"; in generate_c_source()
3573 stream << indent_str; in generate_c_source()
3574 stream << " }"; in generate_c_source()
3575 stream << "\n"; in generate_c_source()
3576 stream << indent_str; in generate_c_source()
3577 stream << " break;"; in generate_c_source()
3578 stream << "\n"; in generate_c_source()
3579 stream << indent_str; in generate_c_source()
3581 stream << " default: break;"; in generate_c_source()
3582 stream << "\n"; in generate_c_source()
3583 stream << indent_str; in generate_c_source()
3584 stream << " }"; in generate_c_source()
3585 stream << "\n"; in generate_c_source()
3586 stream << indent_str; in generate_c_source()
3587 stream << " if (!(*orig_field)) {"; in generate_c_source()
3588 stream << "\n"; in generate_c_source()
3589 stream << indent_str; in generate_c_source()
3590 stream << " *orig_field = (char **) malloc (sizeof (char *));"; in generate_c_source()
3591 stream << "\n"; in generate_c_source()
3592 stream << indent_str; in generate_c_source()
3593 stream << " (*orig_field)[0] = 0;"; in generate_c_source()
3594 stream << "\n"; in generate_c_source()
3595 stream << indent_str; in generate_c_source()
3596 stream << " }"; in generate_c_source()
3597 stream << "\n"; in generate_c_source()
3598 stream << indent_str; in generate_c_source()
3599 stream << " }"; in generate_c_source()
3600 stream << "\n"; in generate_c_source()
3601 stream << indent_str; in generate_c_source()
3602 stream << " }"; in generate_c_source()
3603 stream << "\n"; in generate_c_source()
3604 stream << indent_str; in generate_c_source()
3605 stream << "}"; in generate_c_source()
3606 stream << "\n"; in generate_c_source()
3607 stream << indent_str; in generate_c_source()
3611 stream << "\n"; in generate_c_source()
3612 stream << indent_str; in generate_c_source()
3613 stream << "static int check_modes("; in generate_c_source()
3614 stream << "\n"; in generate_c_source()
3615 stream << indent_str; in generate_c_source()
3616 stream << " int given1[], const char *options1[],"; in generate_c_source()
3617 stream << "\n"; in generate_c_source()
3618 stream << indent_str; in generate_c_source()
3619 stream << " int given2[], const char *options2[])"; in generate_c_source()
3620 stream << "\n"; in generate_c_source()
3621 stream << indent_str; in generate_c_source()
3622 stream << "{"; in generate_c_source()
3623 stream << "\n"; in generate_c_source()
3624 stream << indent_str; in generate_c_source()
3625 stream << " int i = 0, j = 0, errors = 0;"; in generate_c_source()
3626 stream << "\n"; in generate_c_source()
3627 stream << indent_str; in generate_c_source()
3629 stream << " "; in generate_c_source()
3631 stream << "\n"; in generate_c_source()
3632 stream << indent_str; in generate_c_source()
3633 stream << " while (given1[i] >= 0) {"; in generate_c_source()
3634 stream << "\n"; in generate_c_source()
3635 stream << indent_str; in generate_c_source()
3636 stream << " if (given1[i]) {"; in generate_c_source()
3637 stream << "\n"; in generate_c_source()
3638 stream << indent_str; in generate_c_source()
3639 stream << " while (given2[j] >= 0) {"; in generate_c_source()
3640 stream << "\n"; in generate_c_source()
3641 stream << indent_str; in generate_c_source()
3642 stream << " if (given2[j]) {"; in generate_c_source()
3643 stream << "\n"; in generate_c_source()
3644 stream << indent_str; in generate_c_source()
3645 stream << " ++errors;"; in generate_c_source()
3646 stream << "\n"; in generate_c_source()
3647 stream << indent_str; in generate_c_source()
3648 stream << " fprintf(stderr, \"%s: option %s conflicts with option %s\\n\","; in generate_c_source()
3649 stream << "\n"; in generate_c_source()
3650 stream << indent_str; in generate_c_source()
3651 stream << " package_name, options1[i], options2[j]);"; in generate_c_source()
3652 stream << "\n"; in generate_c_source()
3653 stream << indent_str; in generate_c_source()
3654 stream << " }"; in generate_c_source()
3655 stream << "\n"; in generate_c_source()
3656 stream << indent_str; in generate_c_source()
3657 stream << " ++j;"; in generate_c_source()
3658 stream << "\n"; in generate_c_source()
3659 stream << indent_str; in generate_c_source()
3660 stream << " }"; in generate_c_source()
3661 stream << "\n"; in generate_c_source()
3662 stream << indent_str; in generate_c_source()
3663 stream << " }"; in generate_c_source()
3664 stream << "\n"; in generate_c_source()
3665 stream << indent_str; in generate_c_source()
3666 stream << " ++i;"; in generate_c_source()
3667 stream << "\n"; in generate_c_source()
3668 stream << indent_str; in generate_c_source()
3669 stream << " }"; in generate_c_source()
3670 stream << "\n"; in generate_c_source()
3671 stream << indent_str; in generate_c_source()
3673 stream << " "; in generate_c_source()
3675 stream << "\n"; in generate_c_source()
3676 stream << indent_str; in generate_c_source()
3677 stream << " return errors;"; in generate_c_source()
3678 stream << "\n"; in generate_c_source()
3679 stream << indent_str; in generate_c_source()
3680 stream << "}"; in generate_c_source()
3681 stream << "\n"; in generate_c_source()
3682 stream << indent_str; in generate_c_source()
3684 stream << "\n"; in generate_c_source()
3685 stream << indent_str; in generate_c_source()
3686 stream << "int"; in generate_c_source()
3687 stream << "\n"; in generate_c_source()
3688 stream << indent_str; in generate_c_source()
3689 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
3690 stream << "_internal ("; in generate_c_source()
3691 stream << "\n"; in generate_c_source()
3692 stream << indent_str; in generate_c_source()
3693 stream << " int argc, char **argv, struct "; in generate_c_source()
3694 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
3695 stream << " *args_info,"; in generate_c_source()
3696 stream << "\n"; in generate_c_source()
3697 stream << indent_str; in generate_c_source()
3698 stream << " struct "; in generate_c_source()
3699 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
3700 stream << "_params *params, const char *additional_error)"; in generate_c_source()
3701 stream << "\n"; in generate_c_source()
3702 stream << indent_str; in generate_c_source()
3703 stream << "{"; in generate_c_source()
3704 stream << "\n"; in generate_c_source()
3705 stream << indent_str; in generate_c_source()
3706 stream << " int c; /* Character of the parsed option. */"; in generate_c_source()
3707 stream << "\n"; in generate_c_source()
3708 stream << indent_str; in generate_c_source()
3711 stream << " union generic_value multiple_default_value;"; in generate_c_source()
3712 stream << "\n"; in generate_c_source()
3713 stream << indent_str; in generate_c_source()
3715 stream << "\n"; in generate_c_source()
3716 stream << indent_str; in generate_c_source()
3719 generate_string (list_def, stream, indent + indent_str.length ()); in generate_c_source()
3721 generate_list_def (stream, indent + indent_str.length ()); in generate_c_source()
3723 stream << indent_str; in generate_c_source()
3724 stream << " int error_occurred = 0;"; in generate_c_source()
3725 stream << "\n"; in generate_c_source()
3726 stream << indent_str; in generate_c_source()
3727 stream << " struct "; in generate_c_source()
3728 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
3729 stream << " local_args_info;"; in generate_c_source()
3730 stream << "\n"; in generate_c_source()
3731 stream << indent_str; in generate_c_source()
3733 stream << " "; in generate_c_source()
3735 stream << "\n"; in generate_c_source()
3736 stream << indent_str; in generate_c_source()
3737 stream << " int override;"; in generate_c_source()
3738 stream << "\n"; in generate_c_source()
3739 stream << indent_str; in generate_c_source()
3740 stream << " int initialize;"; in generate_c_source()
3741 stream << "\n"; in generate_c_source()
3742 stream << indent_str; in generate_c_source()
3743 stream << " int check_required;"; in generate_c_source()
3744 stream << "\n"; in generate_c_source()
3745 stream << indent_str; in generate_c_source()
3746 stream << " int check_ambiguity;"; in generate_c_source()
3747 stream << "\n"; in generate_c_source()
3748 stream << indent_str; in generate_c_source()
3751 stream << "\n"; in generate_c_source()
3752 stream << indent_str; in generate_c_source()
3753 stream << " char *optarg;"; in generate_c_source()
3754 stream << "\n"; in generate_c_source()
3755 stream << indent_str; in generate_c_source()
3756 stream << " int optind;"; in generate_c_source()
3757 stream << "\n"; in generate_c_source()
3758 stream << indent_str; in generate_c_source()
3759 stream << " int opterr;"; in generate_c_source()
3760 stream << "\n"; in generate_c_source()
3761 stream << indent_str; in generate_c_source()
3762 stream << " int optopt;"; in generate_c_source()
3763 stream << "\n"; in generate_c_source()
3764 stream << indent_str; in generate_c_source()
3766 stream << " "; in generate_c_source()
3767 stream << "\n"; in generate_c_source()
3768 stream << indent_str; in generate_c_source()
3769 stream << " package_name = argv[0];"; in generate_c_source()
3770 stream << "\n"; in generate_c_source()
3771 stream << indent_str; in generate_c_source()
3773 stream << " "; in generate_c_source()
3775 stream << "\n"; in generate_c_source()
3776 stream << indent_str; in generate_c_source()
3777 stream << " /* TODO: Why is this here? It is not used anywhere. */"; in generate_c_source()
3778 stream << "\n"; in generate_c_source()
3779 stream << indent_str; in generate_c_source()
3780 stream << " override = params->override;"; in generate_c_source()
3781 stream << "\n"; in generate_c_source()
3782 stream << indent_str; in generate_c_source()
3783 stream << " FIX_UNUSED(override);"; in generate_c_source()
3784 stream << "\n"; in generate_c_source()
3785 stream << indent_str; in generate_c_source()
3786 stream << "\n"; in generate_c_source()
3787 stream << indent_str; in generate_c_source()
3788 stream << " initialize = params->initialize;"; in generate_c_source()
3789 stream << "\n"; in generate_c_source()
3790 stream << indent_str; in generate_c_source()
3791 stream << " check_required = params->check_required;"; in generate_c_source()
3792 stream << "\n"; in generate_c_source()
3793 stream << indent_str; in generate_c_source()
3794 stream << "\n"; in generate_c_source()
3795 stream << indent_str; in generate_c_source()
3796 stream << " /* TODO: Why is this here? It is not used anywhere. */"; in generate_c_source()
3797 stream << "\n"; in generate_c_source()
3798 stream << indent_str; in generate_c_source()
3799 stream << " check_ambiguity = params->check_ambiguity;"; in generate_c_source()
3800 stream << "\n"; in generate_c_source()
3801 stream << indent_str; in generate_c_source()
3802 stream << " FIX_UNUSED(check_ambiguity);"; in generate_c_source()
3803 stream << "\n"; in generate_c_source()
3804 stream << indent_str; in generate_c_source()
3805 stream << "\n"; in generate_c_source()
3806 stream << indent_str; in generate_c_source()
3807 stream << " if (initialize)"; in generate_c_source()
3808 stream << "\n"; in generate_c_source()
3809 stream << indent_str; in generate_c_source()
3811 stream << " "; in generate_c_source()
3812 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
3813 stream << "_init (args_info);"; in generate_c_source()
3815 stream << "\n"; in generate_c_source()
3816 stream << indent_str; in generate_c_source()
3817 stream << "\n"; in generate_c_source()
3818 stream << indent_str; in generate_c_source()
3820 stream << " "; in generate_c_source()
3821 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
3822 stream << "_init (&local_args_info);"; in generate_c_source()
3824 stream << "\n"; in generate_c_source()
3825 stream << indent_str; in generate_c_source()
3826 stream << "\n"; in generate_c_source()
3827 stream << indent_str; in generate_c_source()
3828 stream << " optarg = 0;"; in generate_c_source()
3829 stream << "\n"; in generate_c_source()
3830 stream << indent_str; in generate_c_source()
3831 stream << " optind = 0;"; in generate_c_source()
3832 stream << "\n"; in generate_c_source()
3833 stream << indent_str; in generate_c_source()
3834 stream << " opterr = params->print_errors;"; in generate_c_source()
3835 stream << "\n"; in generate_c_source()
3836 stream << indent_str; in generate_c_source()
3837 stream << " optopt = '?';"; in generate_c_source()
3838 stream << "\n"; in generate_c_source()
3839 stream << indent_str; in generate_c_source()
3840 stream << "\n"; in generate_c_source()
3841 stream << indent_str; in generate_c_source()
3842 stream << " while (1)"; in generate_c_source()
3843 stream << "\n"; in generate_c_source()
3844 stream << indent_str; in generate_c_source()
3845 stream << " {"; in generate_c_source()
3846 stream << "\n"; in generate_c_source()
3847 stream << indent_str; in generate_c_source()
3848 stream << " int option_index = 0;"; in generate_c_source()
3849 stream << "\n"; in generate_c_source()
3850 stream << indent_str; in generate_c_source()
3851 stream << "\n"; in generate_c_source()
3852 stream << indent_str; in generate_c_source()
3853 stream << " static struct option long_options[] = {"; in generate_c_source()
3854 stream << "\n"; in generate_c_source()
3855 stream << indent_str; in generate_c_source()
3858 generate_string (long_option_struct, stream, indent + indent_str.length ()); in generate_c_source()
3860 generate_long_option_struct (stream, indent + indent_str.length ()); in generate_c_source()
3862 stream << indent_str; in generate_c_source()
3863 stream << " { 0, 0, 0, 0 }"; in generate_c_source()
3864 stream << "\n"; in generate_c_source()
3865 stream << indent_str; in generate_c_source()
3866 stream << " };"; in generate_c_source()
3867 stream << "\n"; in generate_c_source()
3868 stream << indent_str; in generate_c_source()
3869 stream << "\n"; in generate_c_source()
3870 stream << indent_str; in generate_c_source()
3873 stream << " custom_optarg = optarg;"; in generate_c_source()
3874 stream << "\n"; in generate_c_source()
3875 stream << indent_str; in generate_c_source()
3876 stream << " custom_optind = optind;"; in generate_c_source()
3877 stream << "\n"; in generate_c_source()
3878 stream << indent_str; in generate_c_source()
3879 stream << " custom_opterr = opterr;"; in generate_c_source()
3880 stream << "\n"; in generate_c_source()
3881 stream << indent_str; in generate_c_source()
3882 stream << " custom_optopt = optopt;"; in generate_c_source()
3883 stream << "\n"; in generate_c_source()
3884 stream << indent_str; in generate_c_source()
3885 stream << "\n"; in generate_c_source()
3886 stream << indent_str; in generate_c_source()
3887 stream << " c = custom_getopt_long (argc, argv, \""; in generate_c_source()
3888 generate_string (getopt_string, stream, indent + indent_str.length ()); in generate_c_source()
3889 stream << "\", long_options, &option_index);"; in generate_c_source()
3890 stream << "\n"; in generate_c_source()
3891 stream << indent_str; in generate_c_source()
3892 stream << "\n"; in generate_c_source()
3893 stream << indent_str; in generate_c_source()
3894 stream << " optarg = custom_optarg;"; in generate_c_source()
3895 stream << "\n"; in generate_c_source()
3896 stream << indent_str; in generate_c_source()
3897 stream << " optind = custom_optind;"; in generate_c_source()
3898 stream << "\n"; in generate_c_source()
3899 stream << indent_str; in generate_c_source()
3900 stream << " opterr = custom_opterr;"; in generate_c_source()
3901 stream << "\n"; in generate_c_source()
3902 stream << indent_str; in generate_c_source()
3903 stream << " optopt = custom_optopt;"; in generate_c_source()
3904 stream << "\n"; in generate_c_source()
3905 stream << indent_str; in generate_c_source()
3909 stream << " c = getopt_long (argc, argv, \""; in generate_c_source()
3910 generate_string (getopt_string, stream, indent + indent_str.length ()); in generate_c_source()
3911 stream << "\", long_options, &option_index);"; in generate_c_source()
3912 stream << "\n"; in generate_c_source()
3913 stream << indent_str; in generate_c_source()
3915 stream << "\n"; in generate_c_source()
3916 stream << indent_str; in generate_c_source()
3917 stream << " if (c == -1) break; /* Exit from `while (1)' loop. */"; in generate_c_source()
3918 stream << "\n"; in generate_c_source()
3919 stream << indent_str; in generate_c_source()
3920 stream << "\n"; in generate_c_source()
3921 stream << indent_str; in generate_c_source()
3922 stream << " switch (c)"; in generate_c_source()
3923 stream << "\n"; in generate_c_source()
3924 stream << indent_str; in generate_c_source()
3925 stream << " {"; in generate_c_source()
3926 stream << "\n"; in generate_c_source()
3927 stream << indent_str; in generate_c_source()
3930 generate_string (handle_option, stream, indent + indent_str.length ()); in generate_c_source()
3932 generate_handle_option (stream, indent + indent_str.length ()); in generate_c_source()
3934 stream << indent_str; in generate_c_source()
3935 stream << "\n"; in generate_c_source()
3936 stream << indent_str; in generate_c_source()
3937 stream << " case 0: /* Long option with no short option */"; in generate_c_source()
3938 stream << "\n"; in generate_c_source()
3939 stream << indent_str; in generate_c_source()
3942 generate_string (handle_no_short_option, stream, indent + indent_str.length ()); in generate_c_source()
3944 generate_handle_no_short_option (stream, indent + indent_str.length ()); in generate_c_source()
3946 stream << indent_str; in generate_c_source()
3949 stream << " case '?': /* Invalid option. */"; in generate_c_source()
3950 stream << "\n"; in generate_c_source()
3951 stream << indent_str; in generate_c_source()
3952 stream << " /* `getopt_long' already printed an error message. */"; in generate_c_source()
3953 stream << "\n"; in generate_c_source()
3954 stream << indent_str; in generate_c_source()
3955 stream << " goto failure;"; in generate_c_source()
3956 stream << "\n"; in generate_c_source()
3957 stream << indent_str; in generate_c_source()
3959 stream << "\n"; in generate_c_source()
3960 stream << indent_str; in generate_c_source()
3961 stream << " default: /* bug: option not considered. */"; in generate_c_source()
3962 stream << "\n"; in generate_c_source()
3963 stream << indent_str; in generate_c_source()
3964 stream << " fprintf (stderr, \"%s: option unknown: %c%s\\n\", "; in generate_c_source()
3965 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
3966 stream << ", c, (additional_error ? additional_error : \"\"));"; in generate_c_source()
3967 stream << "\n"; in generate_c_source()
3968 stream << indent_str; in generate_c_source()
3969 stream << " abort ();"; in generate_c_source()
3970 stream << "\n"; in generate_c_source()
3971 stream << indent_str; in generate_c_source()
3972 stream << " } /* switch */"; in generate_c_source()
3973 stream << "\n"; in generate_c_source()
3974 stream << indent_str; in generate_c_source()
3975 stream << " } /* while */"; in generate_c_source()
3976 stream << "\n"; in generate_c_source()
3977 stream << indent_str; in generate_c_source()
3978 stream << "\n"; in generate_c_source()
3979 stream << indent_str; in generate_c_source()
3982 generate_string (handle_group, stream, indent + indent_str.length ()); in generate_c_source()
3984 generate_handle_group (stream, indent + indent_str.length ()); in generate_c_source()
3986 stream << indent_str; in generate_c_source()
3987 stream << "\n"; in generate_c_source()
3988 stream << indent_str; in generate_c_source()
3991 generate_string (multiple_fill_array, stream, indent + indent_str.length ()); in generate_c_source()
3993 generate_multiple_fill_array (stream, indent + indent_str.length ()); in generate_c_source()
3995 stream << indent_str; in generate_c_source()
3998 generate_string (update_multiple_given, stream, indent + indent_str.length ()); in generate_c_source()
4000 generate_update_multiple_given (stream, indent + indent_str.length ()); in generate_c_source()
4002 stream << indent_str; in generate_c_source()
4005 generate_string (check_modes, stream, indent + indent_str.length ()); in generate_c_source()
4007 generate_check_modes (stream, indent + indent_str.length ()); in generate_c_source()
4009 stream << indent_str; in generate_c_source()
4010 stream << "\n"; in generate_c_source()
4011 stream << indent_str; in generate_c_source()
4014 stream << " if (check_required)"; in generate_c_source()
4015 stream << "\n"; in generate_c_source()
4016 stream << indent_str; in generate_c_source()
4017 stream << " {"; in generate_c_source()
4018 stream << "\n"; in generate_c_source()
4019 stream << indent_str; in generate_c_source()
4020 stream << " error_occurred += "; in generate_c_source()
4021 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4022 stream << "_required2 (args_info, argv[0], additional_error);"; in generate_c_source()
4023 stream << "\n"; in generate_c_source()
4024 stream << indent_str; in generate_c_source()
4025 stream << " }"; in generate_c_source()
4026 stream << "\n"; in generate_c_source()
4027 stream << indent_str; in generate_c_source()
4031 stream << " FIX_UNUSED(check_required);"; in generate_c_source()
4032 stream << "\n"; in generate_c_source()
4033 stream << indent_str; in generate_c_source()
4035 stream << "\n"; in generate_c_source()
4036 stream << indent_str; in generate_c_source()
4038 stream << " "; in generate_c_source()
4039 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4040 stream << "_release (&local_args_info);"; in generate_c_source()
4042 stream << "\n"; in generate_c_source()
4043 stream << indent_str; in generate_c_source()
4044 stream << "\n"; in generate_c_source()
4045 stream << indent_str; in generate_c_source()
4046 stream << " if ( error_occurred )"; in generate_c_source()
4047 stream << "\n"; in generate_c_source()
4048 stream << indent_str; in generate_c_source()
4049 stream << " return (EXIT_FAILURE);"; in generate_c_source()
4050 stream << "\n"; in generate_c_source()
4051 stream << indent_str; in generate_c_source()
4052 stream << "\n"; in generate_c_source()
4053 stream << indent_str; in generate_c_source()
4056 stream << " if (optind < argc)"; in generate_c_source()
4057 stream << "\n"; in generate_c_source()
4058 stream << indent_str; in generate_c_source()
4059 stream << " {"; in generate_c_source()
4060 stream << "\n"; in generate_c_source()
4061 stream << indent_str; in generate_c_source()
4062 stream << " int i = 0 ;"; in generate_c_source()
4063 stream << "\n"; in generate_c_source()
4064 stream << indent_str; in generate_c_source()
4065 stream << " int found_prog_name = 0;"; in generate_c_source()
4066 stream << "\n"; in generate_c_source()
4067 stream << indent_str; in generate_c_source()
4068 stream << " /* whether program name, i.e., argv[0], is in the remaining args"; in generate_c_source()
4069 stream << "\n"; in generate_c_source()
4070 stream << indent_str; in generate_c_source()
4071 stream << " (this may happen with some implementations of getopt,"; in generate_c_source()
4072 stream << "\n"; in generate_c_source()
4073 stream << indent_str; in generate_c_source()
4074 stream << " but surely not with the one included by gengetopt) */"; in generate_c_source()
4075 stream << "\n"; in generate_c_source()
4076 stream << indent_str; in generate_c_source()
4077 stream << "\n"; in generate_c_source()
4078 stream << indent_str; in generate_c_source()
4086 stream << " i = optind;"; in generate_c_source()
4087 stream << "\n"; in generate_c_source()
4088 stream << indent_str; in generate_c_source()
4089 stream << " while (i < argc)"; in generate_c_source()
4090 stream << "\n"; in generate_c_source()
4091 stream << indent_str; in generate_c_source()
4092 stream << " if (argv[i++] == argv[0]) {"; in generate_c_source()
4093 stream << "\n"; in generate_c_source()
4094 stream << indent_str; in generate_c_source()
4095 stream << " found_prog_name = 1;"; in generate_c_source()
4096 stream << "\n"; in generate_c_source()
4097 stream << indent_str; in generate_c_source()
4098 stream << " break;"; in generate_c_source()
4099 stream << "\n"; in generate_c_source()
4100 stream << indent_str; in generate_c_source()
4101 stream << " }"; in generate_c_source()
4102 stream << "\n"; in generate_c_source()
4103 stream << indent_str; in generate_c_source()
4104 stream << " i = 0;"; in generate_c_source()
4105 stream << "\n"; in generate_c_source()
4106 stream << indent_str; in generate_c_source()
4108 stream << "\n"; in generate_c_source()
4109 stream << indent_str; in generate_c_source()
4110 stream << " args_info->inputs_num = argc - optind - found_prog_name;"; in generate_c_source()
4111 stream << "\n"; in generate_c_source()
4112 stream << indent_str; in generate_c_source()
4113 stream << " args_info->inputs ="; in generate_c_source()
4114 stream << "\n"; in generate_c_source()
4115 stream << indent_str; in generate_c_source()
4116 stream << " (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;"; in generate_c_source()
4117 stream << "\n"; in generate_c_source()
4118 stream << indent_str; in generate_c_source()
4119 stream << " while (optind < argc)"; in generate_c_source()
4120 stream << "\n"; in generate_c_source()
4121 stream << indent_str; in generate_c_source()
4124 stream << " args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind++]) ;"; in generate_c_source()
4125 stream << "\n"; in generate_c_source()
4126 stream << indent_str; in generate_c_source()
4130 stream << " if (argv[optind++] != argv[0])"; in generate_c_source()
4131 stream << "\n"; in generate_c_source()
4132 stream << indent_str; in generate_c_source()
4133 stream << " args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;"; in generate_c_source()
4134 stream << "\n"; in generate_c_source()
4135 stream << indent_str; in generate_c_source()
4137 stream << " }"; in generate_c_source()
4138 stream << "\n"; in generate_c_source()
4139 stream << indent_str; in generate_c_source()
4140 stream << "\n"; in generate_c_source()
4141 stream << indent_str; in generate_c_source()
4143 stream << " return 0;"; in generate_c_source()
4144 stream << "\n"; in generate_c_source()
4145 stream << indent_str; in generate_c_source()
4146 stream << "\n"; in generate_c_source()
4147 stream << indent_str; in generate_c_source()
4148 stream << "failure:"; in generate_c_source()
4149 stream << "\n"; in generate_c_source()
4150 stream << indent_str; in generate_c_source()
4152 stream << " "; in generate_c_source()
4154 generate_string (list_free, stream, indent + indent_str.length ()); in generate_c_source()
4156 generate_list_free (stream, indent + indent_str.length ()); in generate_c_source()
4158 stream << "\n"; in generate_c_source()
4159 stream << indent_str; in generate_c_source()
4161 stream << " "; in generate_c_source()
4162 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4163 stream << "_release (&local_args_info);"; in generate_c_source()
4165 stream << "\n"; in generate_c_source()
4166 stream << indent_str; in generate_c_source()
4167 stream << " return (EXIT_FAILURE);"; in generate_c_source()
4168 stream << "\n"; in generate_c_source()
4169 stream << indent_str; in generate_c_source()
4170 stream << "}"; in generate_c_source()
4171 stream << "\n"; in generate_c_source()
4172 stream << indent_str; in generate_c_source()
4175 stream << "\n"; in generate_c_source()
4176 stream << indent_str; in generate_c_source()
4177 stream << "#ifndef CONFIG_FILE_LINE_SIZE"; in generate_c_source()
4178 stream << "\n"; in generate_c_source()
4179 stream << indent_str; in generate_c_source()
4180 stream << "#define CONFIG_FILE_LINE_SIZE 2048"; in generate_c_source()
4181 stream << "\n"; in generate_c_source()
4182 stream << indent_str; in generate_c_source()
4183 stream << "#endif"; in generate_c_source()
4184 stream << "\n"; in generate_c_source()
4185 stream << indent_str; in generate_c_source()
4186 stream << "#define ADDITIONAL_ERROR \" in configuration file \""; in generate_c_source()
4187 stream << "\n"; in generate_c_source()
4188 stream << indent_str; in generate_c_source()
4189 stream << "\n"; in generate_c_source()
4190 stream << indent_str; in generate_c_source()
4191 stream << "#define CONFIG_FILE_LINE_BUFFER_SIZE (CONFIG_FILE_LINE_SIZE+3)"; in generate_c_source()
4192 stream << "\n"; in generate_c_source()
4193 stream << indent_str; in generate_c_source()
4194 stream << "/* 3 is for \"--\" and \"=\" */"; in generate_c_source()
4195 stream << "\n"; in generate_c_source()
4196 stream << indent_str; in generate_c_source()
4197 stream << "\n"; in generate_c_source()
4198 stream << indent_str; in generate_c_source()
4199 stream << "static int"; in generate_c_source()
4200 stream << "\n"; in generate_c_source()
4201 stream << indent_str; in generate_c_source()
4202 stream << "_"; in generate_c_source()
4203 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4204 stream << "_configfile (const char *filename, int *my_argc)"; in generate_c_source()
4205 stream << "\n"; in generate_c_source()
4206 stream << indent_str; in generate_c_source()
4207 stream << "{"; in generate_c_source()
4208 stream << "\n"; in generate_c_source()
4209 stream << indent_str; in generate_c_source()
4210 stream << " FILE* file;"; in generate_c_source()
4211 stream << "\n"; in generate_c_source()
4212 stream << indent_str; in generate_c_source()
4213 stream << " char my_argv[CONFIG_FILE_LINE_BUFFER_SIZE+1];"; in generate_c_source()
4214 stream << "\n"; in generate_c_source()
4215 stream << indent_str; in generate_c_source()
4216 stream << " char linebuf[CONFIG_FILE_LINE_SIZE];"; in generate_c_source()
4217 stream << "\n"; in generate_c_source()
4218 stream << indent_str; in generate_c_source()
4219 stream << " int line_num = 0;"; in generate_c_source()
4220 stream << "\n"; in generate_c_source()
4221 stream << indent_str; in generate_c_source()
4222 stream << " int result = 0, equal;"; in generate_c_source()
4223 stream << "\n"; in generate_c_source()
4224 stream << indent_str; in generate_c_source()
4225 stream << " char *fopt, *farg;"; in generate_c_source()
4226 stream << "\n"; in generate_c_source()
4227 stream << indent_str; in generate_c_source()
4228 stream << " char *str_index;"; in generate_c_source()
4229 stream << "\n"; in generate_c_source()
4230 stream << indent_str; in generate_c_source()
4231 stream << " size_t len, next_token;"; in generate_c_source()
4232 stream << "\n"; in generate_c_source()
4233 stream << indent_str; in generate_c_source()
4234 stream << " char delimiter;"; in generate_c_source()
4235 stream << "\n"; in generate_c_source()
4236 stream << indent_str; in generate_c_source()
4237 stream << "\n"; in generate_c_source()
4238 stream << indent_str; in generate_c_source()
4239 stream << " if ((file = fopen(filename, \"r\")) == 0)"; in generate_c_source()
4240 stream << "\n"; in generate_c_source()
4241 stream << indent_str; in generate_c_source()
4242 stream << " {"; in generate_c_source()
4243 stream << "\n"; in generate_c_source()
4244 stream << indent_str; in generate_c_source()
4245 stream << " fprintf (stderr, \"%s: Error opening configuration file '%s'\\n\","; in generate_c_source()
4246 stream << "\n"; in generate_c_source()
4247 stream << indent_str; in generate_c_source()
4249 stream << " "; in generate_c_source()
4250 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4251 stream << ", filename);"; in generate_c_source()
4253 stream << "\n"; in generate_c_source()
4254 stream << indent_str; in generate_c_source()
4255 stream << " return EXIT_FAILURE;"; in generate_c_source()
4256 stream << "\n"; in generate_c_source()
4257 stream << indent_str; in generate_c_source()
4258 stream << " }"; in generate_c_source()
4259 stream << "\n"; in generate_c_source()
4260 stream << indent_str; in generate_c_source()
4261 stream << "\n"; in generate_c_source()
4262 stream << indent_str; in generate_c_source()
4263 stream << " while ((fgets(linebuf, CONFIG_FILE_LINE_SIZE, file)) != 0)"; in generate_c_source()
4264 stream << "\n"; in generate_c_source()
4265 stream << indent_str; in generate_c_source()
4266 stream << " {"; in generate_c_source()
4267 stream << "\n"; in generate_c_source()
4268 stream << indent_str; in generate_c_source()
4269 stream << " ++line_num;"; in generate_c_source()
4270 stream << "\n"; in generate_c_source()
4271 stream << indent_str; in generate_c_source()
4272 stream << " my_argv[0] = '\\0';"; in generate_c_source()
4273 stream << "\n"; in generate_c_source()
4274 stream << indent_str; in generate_c_source()
4275 stream << " len = strlen(linebuf);"; in generate_c_source()
4276 stream << "\n"; in generate_c_source()
4277 stream << indent_str; in generate_c_source()
4278 stream << " if (len > (CONFIG_FILE_LINE_BUFFER_SIZE-1))"; in generate_c_source()
4279 stream << "\n"; in generate_c_source()
4280 stream << indent_str; in generate_c_source()
4281 stream << " {"; in generate_c_source()
4282 stream << "\n"; in generate_c_source()
4283 stream << indent_str; in generate_c_source()
4284 stream << " fprintf (stderr, \"%s:%s:%d: Line too long in configuration file\\n\","; in generate_c_source()
4285 stream << "\n"; in generate_c_source()
4286 stream << indent_str; in generate_c_source()
4288 stream << " "; in generate_c_source()
4289 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4290 stream << ", filename, line_num);"; in generate_c_source()
4292 stream << "\n"; in generate_c_source()
4293 stream << indent_str; in generate_c_source()
4294 stream << " result = EXIT_FAILURE;"; in generate_c_source()
4295 stream << "\n"; in generate_c_source()
4296 stream << indent_str; in generate_c_source()
4297 stream << " break;"; in generate_c_source()
4298 stream << "\n"; in generate_c_source()
4299 stream << indent_str; in generate_c_source()
4300 stream << " }"; in generate_c_source()
4301 stream << "\n"; in generate_c_source()
4302 stream << indent_str; in generate_c_source()
4303 stream << "\n"; in generate_c_source()
4304 stream << indent_str; in generate_c_source()
4305 stream << " /* find first non-whitespace character in the line */"; in generate_c_source()
4306 stream << "\n"; in generate_c_source()
4307 stream << indent_str; in generate_c_source()
4308 stream << " next_token = strspn (linebuf, \" \\t\\r\\n\");"; in generate_c_source()
4309 stream << "\n"; in generate_c_source()
4310 stream << indent_str; in generate_c_source()
4311 stream << " str_index = linebuf + next_token;"; in generate_c_source()
4312 stream << "\n"; in generate_c_source()
4313 stream << indent_str; in generate_c_source()
4314 stream << "\n"; in generate_c_source()
4315 stream << indent_str; in generate_c_source()
4316 stream << " if ( str_index[0] == '\\0' || str_index[0] == '#')"; in generate_c_source()
4317 stream << "\n"; in generate_c_source()
4318 stream << indent_str; in generate_c_source()
4319 stream << " continue; /* empty line or comment line is skipped */"; in generate_c_source()
4320 stream << "\n"; in generate_c_source()
4321 stream << indent_str; in generate_c_source()
4322 stream << "\n"; in generate_c_source()
4323 stream << indent_str; in generate_c_source()
4324 stream << " fopt = str_index;"; in generate_c_source()
4325 stream << "\n"; in generate_c_source()
4326 stream << indent_str; in generate_c_source()
4327 stream << "\n"; in generate_c_source()
4328 stream << indent_str; in generate_c_source()
4329 stream << " /* truncate fopt at the end of the first non-valid character */"; in generate_c_source()
4330 stream << "\n"; in generate_c_source()
4331 stream << indent_str; in generate_c_source()
4332 stream << " next_token = strcspn (fopt, \" \\t\\r\\n=\");"; in generate_c_source()
4333 stream << "\n"; in generate_c_source()
4334 stream << indent_str; in generate_c_source()
4335 stream << "\n"; in generate_c_source()
4336 stream << indent_str; in generate_c_source()
4337 stream << " if (fopt[next_token] == '\\0') /* the line is over */"; in generate_c_source()
4338 stream << "\n"; in generate_c_source()
4339 stream << indent_str; in generate_c_source()
4340 stream << " {"; in generate_c_source()
4341 stream << "\n"; in generate_c_source()
4342 stream << indent_str; in generate_c_source()
4343 stream << " farg = 0;"; in generate_c_source()
4344 stream << "\n"; in generate_c_source()
4345 stream << indent_str; in generate_c_source()
4346 stream << " equal = 0;"; in generate_c_source()
4347 stream << "\n"; in generate_c_source()
4348 stream << indent_str; in generate_c_source()
4349 stream << " goto noarg;"; in generate_c_source()
4350 stream << "\n"; in generate_c_source()
4351 stream << indent_str; in generate_c_source()
4352 stream << " }"; in generate_c_source()
4353 stream << "\n"; in generate_c_source()
4354 stream << indent_str; in generate_c_source()
4355 stream << "\n"; in generate_c_source()
4356 stream << indent_str; in generate_c_source()
4357 stream << " /* remember if equal sign is present */"; in generate_c_source()
4358 stream << "\n"; in generate_c_source()
4359 stream << indent_str; in generate_c_source()
4360 stream << " equal = (fopt[next_token] == '=');"; in generate_c_source()
4361 stream << "\n"; in generate_c_source()
4362 stream << indent_str; in generate_c_source()
4363 stream << " fopt[next_token++] = '\\0';"; in generate_c_source()
4364 stream << "\n"; in generate_c_source()
4365 stream << indent_str; in generate_c_source()
4366 stream << "\n"; in generate_c_source()
4367 stream << indent_str; in generate_c_source()
4368 stream << " /* advance pointers to the next token after the end of fopt */"; in generate_c_source()
4369 stream << "\n"; in generate_c_source()
4370 stream << indent_str; in generate_c_source()
4371 stream << " next_token += strspn (fopt + next_token, \" \\t\\r\\n\");"; in generate_c_source()
4372 stream << "\n"; in generate_c_source()
4373 stream << indent_str; in generate_c_source()
4374 stream << "\n"; in generate_c_source()
4375 stream << indent_str; in generate_c_source()
4376 stream << " /* check for the presence of equal sign, and if so, skip it */"; in generate_c_source()
4377 stream << "\n"; in generate_c_source()
4378 stream << indent_str; in generate_c_source()
4379 stream << " if ( !equal )"; in generate_c_source()
4380 stream << "\n"; in generate_c_source()
4381 stream << indent_str; in generate_c_source()
4382 stream << " if ((equal = (fopt[next_token] == '=')))"; in generate_c_source()
4383 stream << "\n"; in generate_c_source()
4384 stream << indent_str; in generate_c_source()
4385 stream << " {"; in generate_c_source()
4386 stream << "\n"; in generate_c_source()
4387 stream << indent_str; in generate_c_source()
4388 stream << " next_token++;"; in generate_c_source()
4389 stream << "\n"; in generate_c_source()
4390 stream << indent_str; in generate_c_source()
4391 stream << " next_token += strspn (fopt + next_token, \" \\t\\r\\n\");"; in generate_c_source()
4392 stream << "\n"; in generate_c_source()
4393 stream << indent_str; in generate_c_source()
4394 stream << " }"; in generate_c_source()
4395 stream << "\n"; in generate_c_source()
4396 stream << indent_str; in generate_c_source()
4397 stream << " str_index += next_token;"; in generate_c_source()
4398 stream << "\n"; in generate_c_source()
4399 stream << indent_str; in generate_c_source()
4400 stream << "\n"; in generate_c_source()
4401 stream << indent_str; in generate_c_source()
4402 stream << " /* find argument */"; in generate_c_source()
4403 stream << "\n"; in generate_c_source()
4404 stream << indent_str; in generate_c_source()
4405 stream << " farg = str_index;"; in generate_c_source()
4406 stream << "\n"; in generate_c_source()
4407 stream << indent_str; in generate_c_source()
4408 stream << " if ( farg[0] == '\\\"' || farg[0] == '\\'' )"; in generate_c_source()
4409 stream << "\n"; in generate_c_source()
4410 stream << indent_str; in generate_c_source()
4411 stream << " { /* quoted argument */"; in generate_c_source()
4412 stream << "\n"; in generate_c_source()
4413 stream << indent_str; in generate_c_source()
4414 stream << " str_index = strchr (++farg, str_index[0] ); /* skip opening quote */"; in generate_c_source()
4415 stream << "\n"; in generate_c_source()
4416 stream << indent_str; in generate_c_source()
4417 stream << " if (! str_index)"; in generate_c_source()
4418 stream << "\n"; in generate_c_source()
4419 stream << indent_str; in generate_c_source()
4420 stream << " {"; in generate_c_source()
4421 stream << "\n"; in generate_c_source()
4422 stream << indent_str; in generate_c_source()
4423 stream << " fprintf"; in generate_c_source()
4424 stream << "\n"; in generate_c_source()
4425 stream << indent_str; in generate_c_source()
4426 stream << " (stderr,"; in generate_c_source()
4427 stream << "\n"; in generate_c_source()
4428 stream << indent_str; in generate_c_source()
4429 stream << " \"%s:%s:%d: unterminated string in configuration file\\n\","; in generate_c_source()
4430 stream << "\n"; in generate_c_source()
4431 stream << indent_str; in generate_c_source()
4433 stream << " "; in generate_c_source()
4434 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4435 stream << ", filename, line_num);"; in generate_c_source()
4437 stream << "\n"; in generate_c_source()
4438 stream << indent_str; in generate_c_source()
4439 stream << " result = EXIT_FAILURE;"; in generate_c_source()
4440 stream << "\n"; in generate_c_source()
4441 stream << indent_str; in generate_c_source()
4442 stream << " break;"; in generate_c_source()
4443 stream << "\n"; in generate_c_source()
4444 stream << indent_str; in generate_c_source()
4445 stream << " }"; in generate_c_source()
4446 stream << "\n"; in generate_c_source()
4447 stream << indent_str; in generate_c_source()
4448 stream << " }"; in generate_c_source()
4449 stream << "\n"; in generate_c_source()
4450 stream << indent_str; in generate_c_source()
4451 stream << " else"; in generate_c_source()
4452 stream << "\n"; in generate_c_source()
4453 stream << indent_str; in generate_c_source()
4454 stream << " { /* read up the remaining part up to a delimiter */"; in generate_c_source()
4455 stream << "\n"; in generate_c_source()
4456 stream << indent_str; in generate_c_source()
4457 stream << " next_token = strcspn (farg, \" \\t\\r\\n#\\'\\\"\");"; in generate_c_source()
4458 stream << "\n"; in generate_c_source()
4459 stream << indent_str; in generate_c_source()
4460 stream << " str_index += next_token;"; in generate_c_source()
4461 stream << "\n"; in generate_c_source()
4462 stream << indent_str; in generate_c_source()
4463 stream << " }"; in generate_c_source()
4464 stream << "\n"; in generate_c_source()
4465 stream << indent_str; in generate_c_source()
4466 stream << "\n"; in generate_c_source()
4467 stream << indent_str; in generate_c_source()
4468 stream << " /* truncate farg at the delimiter and store it for further check */"; in generate_c_source()
4469 stream << "\n"; in generate_c_source()
4470 stream << indent_str; in generate_c_source()
4471 stream << " delimiter = *str_index, *str_index++ = '\\0';"; in generate_c_source()
4472 stream << "\n"; in generate_c_source()
4473 stream << indent_str; in generate_c_source()
4474 stream << "\n"; in generate_c_source()
4475 stream << indent_str; in generate_c_source()
4476 stream << " /* everything but comment is illegal at the end of line */"; in generate_c_source()
4477 stream << "\n"; in generate_c_source()
4478 stream << indent_str; in generate_c_source()
4479 stream << " if (delimiter != '\\0' && delimiter != '#')"; in generate_c_source()
4480 stream << "\n"; in generate_c_source()
4481 stream << indent_str; in generate_c_source()
4482 stream << " {"; in generate_c_source()
4483 stream << "\n"; in generate_c_source()
4484 stream << indent_str; in generate_c_source()
4485 stream << " str_index += strspn(str_index, \" \\t\\r\\n\");"; in generate_c_source()
4486 stream << "\n"; in generate_c_source()
4487 stream << indent_str; in generate_c_source()
4488 stream << " if (*str_index != '\\0' && *str_index != '#')"; in generate_c_source()
4489 stream << "\n"; in generate_c_source()
4490 stream << indent_str; in generate_c_source()
4491 stream << " {"; in generate_c_source()
4492 stream << "\n"; in generate_c_source()
4493 stream << indent_str; in generate_c_source()
4494 stream << " fprintf"; in generate_c_source()
4495 stream << "\n"; in generate_c_source()
4496 stream << indent_str; in generate_c_source()
4497 stream << " (stderr,"; in generate_c_source()
4498 stream << "\n"; in generate_c_source()
4499 stream << indent_str; in generate_c_source()
4500 stream << " \"%s:%s:%d: malformed string in configuration file\\n\","; in generate_c_source()
4501 stream << "\n"; in generate_c_source()
4502 stream << indent_str; in generate_c_source()
4504 stream << " "; in generate_c_source()
4505 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4506 stream << ", filename, line_num);"; in generate_c_source()
4508 stream << "\n"; in generate_c_source()
4509 stream << indent_str; in generate_c_source()
4510 stream << " result = EXIT_FAILURE;"; in generate_c_source()
4511 stream << "\n"; in generate_c_source()
4512 stream << indent_str; in generate_c_source()
4513 stream << " break;"; in generate_c_source()
4514 stream << "\n"; in generate_c_source()
4515 stream << indent_str; in generate_c_source()
4516 stream << " }"; in generate_c_source()
4517 stream << "\n"; in generate_c_source()
4518 stream << indent_str; in generate_c_source()
4519 stream << " }"; in generate_c_source()
4520 stream << "\n"; in generate_c_source()
4521 stream << indent_str; in generate_c_source()
4522 stream << "\n"; in generate_c_source()
4523 stream << indent_str; in generate_c_source()
4524 stream << " noarg:"; in generate_c_source()
4525 stream << "\n"; in generate_c_source()
4526 stream << indent_str; in generate_c_source()
4527 stream << " if (!strcmp(fopt,\"include\")) {"; in generate_c_source()
4528 stream << "\n"; in generate_c_source()
4529 stream << indent_str; in generate_c_source()
4530 stream << " if (farg && *farg) {"; in generate_c_source()
4531 stream << "\n"; in generate_c_source()
4532 stream << indent_str; in generate_c_source()
4533 stream << " result = _"; in generate_c_source()
4534 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4535 stream << "_configfile(farg, my_argc);"; in generate_c_source()
4536 stream << "\n"; in generate_c_source()
4537 stream << indent_str; in generate_c_source()
4538 stream << " } else {"; in generate_c_source()
4539 stream << "\n"; in generate_c_source()
4540 stream << indent_str; in generate_c_source()
4541 stream << " fprintf(stderr, \"%s:%s:%d: include requires a filename argument.\\n\","; in generate_c_source()
4542 stream << "\n"; in generate_c_source()
4543 stream << indent_str; in generate_c_source()
4545 stream << " "; in generate_c_source()
4546 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4547 stream << ", filename, line_num);"; in generate_c_source()
4549 stream << "\n"; in generate_c_source()
4550 stream << indent_str; in generate_c_source()
4551 stream << " }"; in generate_c_source()
4552 stream << "\n"; in generate_c_source()
4553 stream << indent_str; in generate_c_source()
4554 stream << " continue;"; in generate_c_source()
4555 stream << "\n"; in generate_c_source()
4556 stream << indent_str; in generate_c_source()
4557 stream << " }"; in generate_c_source()
4558 stream << "\n"; in generate_c_source()
4559 stream << indent_str; in generate_c_source()
4560 stream << " len = strlen(fopt);"; in generate_c_source()
4561 stream << "\n"; in generate_c_source()
4562 stream << indent_str; in generate_c_source()
4563 stream << " strcat (my_argv, len > 1 ? \"--\" : \"-\");"; in generate_c_source()
4564 stream << "\n"; in generate_c_source()
4565 stream << indent_str; in generate_c_source()
4566 stream << " strcat (my_argv, fopt);"; in generate_c_source()
4567 stream << "\n"; in generate_c_source()
4568 stream << indent_str; in generate_c_source()
4569 stream << " if (len > 1 && ((farg && *farg) || equal))"; in generate_c_source()
4570 stream << "\n"; in generate_c_source()
4571 stream << indent_str; in generate_c_source()
4572 stream << " strcat (my_argv, \"=\");"; in generate_c_source()
4573 stream << "\n"; in generate_c_source()
4574 stream << indent_str; in generate_c_source()
4575 stream << " if (farg && *farg)"; in generate_c_source()
4576 stream << "\n"; in generate_c_source()
4577 stream << indent_str; in generate_c_source()
4578 stream << " strcat (my_argv, farg);"; in generate_c_source()
4579 stream << "\n"; in generate_c_source()
4580 stream << indent_str; in generate_c_source()
4581 stream << " ++(*my_argc);"; in generate_c_source()
4582 stream << "\n"; in generate_c_source()
4583 stream << indent_str; in generate_c_source()
4584 stream << "\n"; in generate_c_source()
4585 stream << indent_str; in generate_c_source()
4586stream << " cmd_line_list_tmp = (struct line_list *) malloc (sizeof (struct line_list));"; in generate_c_source()
4587 stream << "\n"; in generate_c_source()
4588 stream << indent_str; in generate_c_source()
4589 stream << " cmd_line_list_tmp->next = cmd_line_list;"; in generate_c_source()
4590 stream << "\n"; in generate_c_source()
4591 stream << indent_str; in generate_c_source()
4592 stream << " cmd_line_list = cmd_line_list_tmp;"; in generate_c_source()
4593 stream << "\n"; in generate_c_source()
4594 stream << indent_str; in generate_c_source()
4595 stream << " cmd_line_list->string_arg = gengetopt_strdup(my_argv);"; in generate_c_source()
4596 stream << "\n"; in generate_c_source()
4597 stream << indent_str; in generate_c_source()
4598 stream << " } /* while */"; in generate_c_source()
4599 stream << "\n"; in generate_c_source()
4600 stream << indent_str; in generate_c_source()
4601 stream << "\n"; in generate_c_source()
4602 stream << indent_str; in generate_c_source()
4603 stream << " if (file)"; in generate_c_source()
4604 stream << "\n"; in generate_c_source()
4605 stream << indent_str; in generate_c_source()
4606 stream << " fclose(file);"; in generate_c_source()
4607 stream << "\n"; in generate_c_source()
4608 stream << indent_str; in generate_c_source()
4609 stream << " return result;"; in generate_c_source()
4610 stream << "\n"; in generate_c_source()
4611 stream << indent_str; in generate_c_source()
4612 stream << "}"; in generate_c_source()
4613 stream << "\n"; in generate_c_source()
4614 stream << indent_str; in generate_c_source()
4615 stream << "\n"; in generate_c_source()
4616 stream << indent_str; in generate_c_source()
4617 stream << "int"; in generate_c_source()
4618 stream << "\n"; in generate_c_source()
4619 stream << indent_str; in generate_c_source()
4620 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4621 stream << "_configfile ("; in generate_c_source()
4622 stream << "\n"; in generate_c_source()
4623 stream << indent_str; in generate_c_source()
4624 stream << " const char *filename,"; in generate_c_source()
4625 stream << "\n"; in generate_c_source()
4626 stream << indent_str; in generate_c_source()
4627 stream << " struct "; in generate_c_source()
4628 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
4629 stream << " *args_info,"; in generate_c_source()
4630 stream << "\n"; in generate_c_source()
4631 stream << indent_str; in generate_c_source()
4632 stream << " int override, int initialize, int check_required)"; in generate_c_source()
4633 stream << "\n"; in generate_c_source()
4634 stream << indent_str; in generate_c_source()
4635 stream << "{"; in generate_c_source()
4636 stream << "\n"; in generate_c_source()
4637 stream << indent_str; in generate_c_source()
4638 stream << " struct "; in generate_c_source()
4639 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4640 stream << "_params params;"; in generate_c_source()
4641 stream << "\n"; in generate_c_source()
4642 stream << indent_str; in generate_c_source()
4643 stream << "\n"; in generate_c_source()
4644 stream << indent_str; in generate_c_source()
4645 stream << " params.override = override;"; in generate_c_source()
4646 stream << "\n"; in generate_c_source()
4647 stream << indent_str; in generate_c_source()
4648 stream << " params.initialize = initialize;"; in generate_c_source()
4649 stream << "\n"; in generate_c_source()
4650 stream << indent_str; in generate_c_source()
4651 stream << " params.check_required = check_required;"; in generate_c_source()
4652 stream << "\n"; in generate_c_source()
4653 stream << indent_str; in generate_c_source()
4654 stream << " params.check_ambiguity = 0;"; in generate_c_source()
4655 stream << "\n"; in generate_c_source()
4656 stream << indent_str; in generate_c_source()
4657 stream << " params.print_errors = 1;"; in generate_c_source()
4658 stream << "\n"; in generate_c_source()
4659 stream << indent_str; in generate_c_source()
4661 stream << " "; in generate_c_source()
4663 stream << "\n"; in generate_c_source()
4664 stream << indent_str; in generate_c_source()
4665 stream << " return "; in generate_c_source()
4666 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4667 stream << "_config_file (filename, args_info, &params);"; in generate_c_source()
4668 stream << "\n"; in generate_c_source()
4669 stream << indent_str; in generate_c_source()
4670 stream << "}"; in generate_c_source()
4671 stream << "\n"; in generate_c_source()
4672 stream << indent_str; in generate_c_source()
4673 stream << "\n"; in generate_c_source()
4674 stream << indent_str; in generate_c_source()
4675 stream << "int"; in generate_c_source()
4676 stream << "\n"; in generate_c_source()
4677 stream << indent_str; in generate_c_source()
4678 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4679 stream << "_config_file (const char *filename,"; in generate_c_source()
4680 stream << "\n"; in generate_c_source()
4681 stream << indent_str; in generate_c_source()
4682 stream << " struct "; in generate_c_source()
4683 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
4684 stream << " *args_info,"; in generate_c_source()
4685 stream << "\n"; in generate_c_source()
4686 stream << indent_str; in generate_c_source()
4687 stream << " struct "; in generate_c_source()
4688 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4689 stream << "_params *params)"; in generate_c_source()
4690 stream << "\n"; in generate_c_source()
4691 stream << indent_str; in generate_c_source()
4692 stream << "{"; in generate_c_source()
4693 stream << "\n"; in generate_c_source()
4694 stream << indent_str; in generate_c_source()
4695 stream << " int i, result;"; in generate_c_source()
4696 stream << "\n"; in generate_c_source()
4697 stream << indent_str; in generate_c_source()
4698 stream << " int my_argc = 1;"; in generate_c_source()
4699 stream << "\n"; in generate_c_source()
4700 stream << indent_str; in generate_c_source()
4701 stream << " char **my_argv_arg;"; in generate_c_source()
4702 stream << "\n"; in generate_c_source()
4703 stream << indent_str; in generate_c_source()
4704 stream << " char *additional_error;"; in generate_c_source()
4705 stream << "\n"; in generate_c_source()
4706 stream << indent_str; in generate_c_source()
4707 stream << "\n"; in generate_c_source()
4708 stream << indent_str; in generate_c_source()
4709 stream << " /* store the program name */"; in generate_c_source()
4710 stream << "\n"; in generate_c_source()
4711 stream << indent_str; in generate_c_source()
4712 stream << " cmd_line_list_tmp = (struct line_list *) malloc (sizeof (struct line_list));"; in generate_c_source()
4713 stream << "\n"; in generate_c_source()
4714 stream << indent_str; in generate_c_source()
4715 stream << " cmd_line_list_tmp->next = cmd_line_list;"; in generate_c_source()
4716 stream << "\n"; in generate_c_source()
4717 stream << indent_str; in generate_c_source()
4718 stream << " cmd_line_list = cmd_line_list_tmp;"; in generate_c_source()
4719 stream << "\n"; in generate_c_source()
4720 stream << indent_str; in generate_c_source()
4721 stream << " cmd_line_list->string_arg = gengetopt_strdup ("; in generate_c_source()
4722 generate_string (package_var_name, stream, indent + indent_str.length ()); in generate_c_source()
4723 stream << ");"; in generate_c_source()
4724 stream << "\n"; in generate_c_source()
4725 stream << indent_str; in generate_c_source()
4726 stream << "\n"; in generate_c_source()
4727 stream << indent_str; in generate_c_source()
4728 stream << " result = _"; in generate_c_source()
4729 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4730 stream << "_configfile(filename, &my_argc);"; in generate_c_source()
4731 stream << "\n"; in generate_c_source()
4732 stream << indent_str; in generate_c_source()
4733 stream << "\n"; in generate_c_source()
4734 stream << indent_str; in generate_c_source()
4735 stream << " if (result != EXIT_FAILURE) {"; in generate_c_source()
4736 stream << "\n"; in generate_c_source()
4737 stream << indent_str; in generate_c_source()
4738 stream << " my_argv_arg = (char **) malloc((my_argc+1) * sizeof(char *));"; in generate_c_source()
4739 stream << "\n"; in generate_c_source()
4740 stream << indent_str; in generate_c_source()
4741 stream << " cmd_line_list_tmp = cmd_line_list;"; in generate_c_source()
4742 stream << "\n"; in generate_c_source()
4743 stream << indent_str; in generate_c_source()
4744 stream << "\n"; in generate_c_source()
4745 stream << indent_str; in generate_c_source()
4746 stream << " for (i = my_argc - 1; i >= 0; --i) {"; in generate_c_source()
4747 stream << "\n"; in generate_c_source()
4748 stream << indent_str; in generate_c_source()
4749 stream << " my_argv_arg[i] = cmd_line_list_tmp->string_arg;"; in generate_c_source()
4750 stream << "\n"; in generate_c_source()
4751 stream << indent_str; in generate_c_source()
4752 stream << " cmd_line_list_tmp = cmd_line_list_tmp->next;"; in generate_c_source()
4753 stream << "\n"; in generate_c_source()
4754 stream << indent_str; in generate_c_source()
4755 stream << " }"; in generate_c_source()
4756 stream << "\n"; in generate_c_source()
4757 stream << indent_str; in generate_c_source()
4758 stream << "\n"; in generate_c_source()
4759 stream << indent_str; in generate_c_source()
4760 stream << " my_argv_arg[my_argc] = 0;"; in generate_c_source()
4761 stream << "\n"; in generate_c_source()
4762 stream << indent_str; in generate_c_source()
4763 stream << "\n"; in generate_c_source()
4764 stream << indent_str; in generate_c_source()
4765stream << " additional_error = (char *)malloc(strlen(filename) + strlen(ADDITIONAL_ERROR) + 1);… in generate_c_source()
4766 stream << "\n"; in generate_c_source()
4767 stream << indent_str; in generate_c_source()
4768 stream << " strcpy (additional_error, ADDITIONAL_ERROR);"; in generate_c_source()
4769 stream << "\n"; in generate_c_source()
4770 stream << indent_str; in generate_c_source()
4771 stream << " strcat (additional_error, filename);"; in generate_c_source()
4772 stream << "\n"; in generate_c_source()
4773 stream << indent_str; in generate_c_source()
4774 stream << " result ="; in generate_c_source()
4775 stream << "\n"; in generate_c_source()
4776 stream << indent_str; in generate_c_source()
4778 stream << " "; in generate_c_source()
4779 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4780 stream << "_internal (my_argc, my_argv_arg, args_info,"; in generate_c_source()
4782 stream << "\n"; in generate_c_source()
4783 stream << indent_str; in generate_c_source()
4784 stream << " params,"; in generate_c_source()
4785 stream << "\n"; in generate_c_source()
4786 stream << indent_str; in generate_c_source()
4787 stream << " additional_error);"; in generate_c_source()
4788 stream << "\n"; in generate_c_source()
4789 stream << indent_str; in generate_c_source()
4790 stream << "\n"; in generate_c_source()
4791 stream << indent_str; in generate_c_source()
4792 stream << " free (additional_error);"; in generate_c_source()
4793 stream << "\n"; in generate_c_source()
4794 stream << indent_str; in generate_c_source()
4795 stream << " free (my_argv_arg);"; in generate_c_source()
4796 stream << "\n"; in generate_c_source()
4797 stream << indent_str; in generate_c_source()
4798 stream << " }"; in generate_c_source()
4799 stream << "\n"; in generate_c_source()
4800 stream << indent_str; in generate_c_source()
4801 stream << "\n"; in generate_c_source()
4802 stream << indent_str; in generate_c_source()
4803 stream << " free_cmd_list();"; in generate_c_source()
4804 stream << "\n"; in generate_c_source()
4805 stream << indent_str; in generate_c_source()
4807 stream << " "; in generate_c_source()
4808 generate_string (final_exit, stream, indent + indent_str.length ()); in generate_c_source()
4810 stream << "\n"; in generate_c_source()
4811 stream << indent_str; in generate_c_source()
4812 stream << "}"; in generate_c_source()
4813 stream << "\n"; in generate_c_source()
4814 stream << indent_str; in generate_c_source()
4818 stream << "\n"; in generate_c_source()
4819 stream << indent_str; in generate_c_source()
4820 stream << "static unsigned int"; in generate_c_source()
4821 stream << "\n"; in generate_c_source()
4822 stream << indent_str; in generate_c_source()
4823 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4824 stream << "_create_argv(const char *cmdline_, char ***argv_ptr, const char *prog_name)"; in generate_c_source()
4825 stream << "\n"; in generate_c_source()
4826 stream << indent_str; in generate_c_source()
4827 stream << "{"; in generate_c_source()
4828 stream << "\n"; in generate_c_source()
4829 stream << indent_str; in generate_c_source()
4830 stream << " char *cmdline, *p;"; in generate_c_source()
4831 stream << "\n"; in generate_c_source()
4832 stream << indent_str; in generate_c_source()
4833 stream << " size_t n = 0, j;"; in generate_c_source()
4834 stream << "\n"; in generate_c_source()
4835 stream << indent_str; in generate_c_source()
4836 stream << " int i;"; in generate_c_source()
4837 stream << "\n"; in generate_c_source()
4838 stream << indent_str; in generate_c_source()
4839 stream << "\n"; in generate_c_source()
4840 stream << indent_str; in generate_c_source()
4841 stream << " if (prog_name) {"; in generate_c_source()
4842 stream << "\n"; in generate_c_source()
4843 stream << indent_str; in generate_c_source()
4844 stream << " cmd_line_list_tmp = (struct line_list *) malloc (sizeof (struct line_list));"; in generate_c_source()
4845 stream << "\n"; in generate_c_source()
4846 stream << indent_str; in generate_c_source()
4847 stream << " cmd_line_list_tmp->next = cmd_line_list;"; in generate_c_source()
4848 stream << "\n"; in generate_c_source()
4849 stream << indent_str; in generate_c_source()
4850 stream << " cmd_line_list = cmd_line_list_tmp;"; in generate_c_source()
4851 stream << "\n"; in generate_c_source()
4852 stream << indent_str; in generate_c_source()
4853 stream << " cmd_line_list->string_arg = gengetopt_strdup (prog_name);"; in generate_c_source()
4854 stream << "\n"; in generate_c_source()
4855 stream << indent_str; in generate_c_source()
4856 stream << "\n"; in generate_c_source()
4857 stream << indent_str; in generate_c_source()
4858 stream << " ++n;"; in generate_c_source()
4859 stream << "\n"; in generate_c_source()
4860 stream << indent_str; in generate_c_source()
4861 stream << " }"; in generate_c_source()
4862 stream << "\n"; in generate_c_source()
4863 stream << indent_str; in generate_c_source()
4864 stream << "\n"; in generate_c_source()
4865 stream << indent_str; in generate_c_source()
4866 stream << " cmdline = gengetopt_strdup(cmdline_);"; in generate_c_source()
4867 stream << "\n"; in generate_c_source()
4868 stream << indent_str; in generate_c_source()
4869 stream << " p = cmdline;"; in generate_c_source()
4870 stream << "\n"; in generate_c_source()
4871 stream << indent_str; in generate_c_source()
4872 stream << "\n"; in generate_c_source()
4873 stream << indent_str; in generate_c_source()
4874 stream << " while (p && strlen(p))"; in generate_c_source()
4875 stream << "\n"; in generate_c_source()
4876 stream << indent_str; in generate_c_source()
4877 stream << " {"; in generate_c_source()
4878 stream << "\n"; in generate_c_source()
4879 stream << indent_str; in generate_c_source()
4880 stream << " j = strcspn(p, \" \\t\");"; in generate_c_source()
4881 stream << "\n"; in generate_c_source()
4882 stream << indent_str; in generate_c_source()
4883 stream << " ++n;"; in generate_c_source()
4884 stream << "\n"; in generate_c_source()
4885 stream << indent_str; in generate_c_source()
4886 stream << " if (j && j < strlen(p))"; in generate_c_source()
4887 stream << "\n"; in generate_c_source()
4888 stream << indent_str; in generate_c_source()
4889 stream << " {"; in generate_c_source()
4890 stream << "\n"; in generate_c_source()
4891 stream << indent_str; in generate_c_source()
4892 stream << " p[j] = '\\0';"; in generate_c_source()
4893 stream << "\n"; in generate_c_source()
4894 stream << indent_str; in generate_c_source()
4895 stream << "\n"; in generate_c_source()
4896 stream << indent_str; in generate_c_source()
4897stream << " cmd_line_list_tmp = (struct line_list *) malloc (sizeof (struct line_list));"; in generate_c_source()
4898 stream << "\n"; in generate_c_source()
4899 stream << indent_str; in generate_c_source()
4900 stream << " cmd_line_list_tmp->next = cmd_line_list;"; in generate_c_source()
4901 stream << "\n"; in generate_c_source()
4902 stream << indent_str; in generate_c_source()
4903 stream << " cmd_line_list = cmd_line_list_tmp;"; in generate_c_source()
4904 stream << "\n"; in generate_c_source()
4905 stream << indent_str; in generate_c_source()
4906 stream << " cmd_line_list->string_arg = gengetopt_strdup (p);"; in generate_c_source()
4907 stream << "\n"; in generate_c_source()
4908 stream << indent_str; in generate_c_source()
4909 stream << "\n"; in generate_c_source()
4910 stream << indent_str; in generate_c_source()
4911 stream << " p += (j+1);"; in generate_c_source()
4912 stream << "\n"; in generate_c_source()
4913 stream << indent_str; in generate_c_source()
4914 stream << " p += strspn(p, \" \\t\");"; in generate_c_source()
4915 stream << "\n"; in generate_c_source()
4916 stream << indent_str; in generate_c_source()
4917 stream << " }"; in generate_c_source()
4918 stream << "\n"; in generate_c_source()
4919 stream << indent_str; in generate_c_source()
4920 stream << " else"; in generate_c_source()
4921 stream << "\n"; in generate_c_source()
4922 stream << indent_str; in generate_c_source()
4923 stream << " {"; in generate_c_source()
4924 stream << "\n"; in generate_c_source()
4925 stream << indent_str; in generate_c_source()
4926stream << " cmd_line_list_tmp = (struct line_list *) malloc (sizeof (struct line_list));"; in generate_c_source()
4927 stream << "\n"; in generate_c_source()
4928 stream << indent_str; in generate_c_source()
4929 stream << " cmd_line_list_tmp->next = cmd_line_list;"; in generate_c_source()
4930 stream << "\n"; in generate_c_source()
4931 stream << indent_str; in generate_c_source()
4932 stream << " cmd_line_list = cmd_line_list_tmp;"; in generate_c_source()
4933 stream << "\n"; in generate_c_source()
4934 stream << indent_str; in generate_c_source()
4935 stream << " cmd_line_list->string_arg = gengetopt_strdup (p);"; in generate_c_source()
4936 stream << "\n"; in generate_c_source()
4937 stream << indent_str; in generate_c_source()
4938 stream << "\n"; in generate_c_source()
4939 stream << indent_str; in generate_c_source()
4940 stream << " break;"; in generate_c_source()
4941 stream << "\n"; in generate_c_source()
4942 stream << indent_str; in generate_c_source()
4943 stream << " }"; in generate_c_source()
4944 stream << "\n"; in generate_c_source()
4945 stream << indent_str; in generate_c_source()
4946 stream << " }"; in generate_c_source()
4947 stream << "\n"; in generate_c_source()
4948 stream << indent_str; in generate_c_source()
4949 stream << "\n"; in generate_c_source()
4950 stream << indent_str; in generate_c_source()
4951 stream << " *argv_ptr = (char **) malloc((n + 1) * sizeof(char *));"; in generate_c_source()
4952 stream << "\n"; in generate_c_source()
4953 stream << indent_str; in generate_c_source()
4954 stream << " cmd_line_list_tmp = cmd_line_list;"; in generate_c_source()
4955 stream << "\n"; in generate_c_source()
4956 stream << indent_str; in generate_c_source()
4957 stream << " for (i = (n-1); i >= 0; --i)"; in generate_c_source()
4958 stream << "\n"; in generate_c_source()
4959 stream << indent_str; in generate_c_source()
4960 stream << " {"; in generate_c_source()
4961 stream << "\n"; in generate_c_source()
4962 stream << indent_str; in generate_c_source()
4963 stream << " (*argv_ptr)[i] = cmd_line_list_tmp->string_arg;"; in generate_c_source()
4964 stream << "\n"; in generate_c_source()
4965 stream << indent_str; in generate_c_source()
4966 stream << " cmd_line_list_tmp = cmd_line_list_tmp->next;"; in generate_c_source()
4967 stream << "\n"; in generate_c_source()
4968 stream << indent_str; in generate_c_source()
4969 stream << " }"; in generate_c_source()
4970 stream << "\n"; in generate_c_source()
4971 stream << indent_str; in generate_c_source()
4972 stream << "\n"; in generate_c_source()
4973 stream << indent_str; in generate_c_source()
4974 stream << " (*argv_ptr)[n] = 0;"; in generate_c_source()
4975 stream << "\n"; in generate_c_source()
4976 stream << indent_str; in generate_c_source()
4977 stream << "\n"; in generate_c_source()
4978 stream << indent_str; in generate_c_source()
4979 stream << " free(cmdline);"; in generate_c_source()
4980 stream << "\n"; in generate_c_source()
4981 stream << indent_str; in generate_c_source()
4982 stream << " return n;"; in generate_c_source()
4983 stream << "\n"; in generate_c_source()
4984 stream << indent_str; in generate_c_source()
4985 stream << "}"; in generate_c_source()
4986 stream << "\n"; in generate_c_source()
4987 stream << indent_str; in generate_c_source()
4988 stream << "\n"; in generate_c_source()
4989 stream << indent_str; in generate_c_source()
4990 stream << "int"; in generate_c_source()
4991 stream << "\n"; in generate_c_source()
4992 stream << indent_str; in generate_c_source()
4993 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
4994 stream << "_string(const char *cmdline, struct "; in generate_c_source()
4995 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
4996 stream << " *args_info, const char *prog_name)"; in generate_c_source()
4997 stream << "\n"; in generate_c_source()
4998 stream << indent_str; in generate_c_source()
4999 stream << "{"; in generate_c_source()
5000 stream << "\n"; in generate_c_source()
5001 stream << indent_str; in generate_c_source()
5002 stream << " return "; in generate_c_source()
5003 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5004 stream << "_string2(cmdline, args_info, prog_name, 0, 1, 1);"; in generate_c_source()
5005 stream << "\n"; in generate_c_source()
5006 stream << indent_str; in generate_c_source()
5007 stream << "}"; in generate_c_source()
5008 stream << "\n"; in generate_c_source()
5009 stream << indent_str; in generate_c_source()
5010 stream << "\n"; in generate_c_source()
5011 stream << indent_str; in generate_c_source()
5012 stream << "int"; in generate_c_source()
5013 stream << "\n"; in generate_c_source()
5014 stream << indent_str; in generate_c_source()
5015 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5016 stream << "_string2(const char *cmdline, struct "; in generate_c_source()
5017 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
5018 stream << " *args_info, const char *prog_name,"; in generate_c_source()
5019 stream << "\n"; in generate_c_source()
5020 stream << indent_str; in generate_c_source()
5021 stream << " int override, int initialize, int check_required)"; in generate_c_source()
5022 stream << "\n"; in generate_c_source()
5023 stream << indent_str; in generate_c_source()
5024 stream << "{"; in generate_c_source()
5025 stream << "\n"; in generate_c_source()
5026 stream << indent_str; in generate_c_source()
5027 stream << " struct "; in generate_c_source()
5028 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5029 stream << "_params params;"; in generate_c_source()
5030 stream << "\n"; in generate_c_source()
5031 stream << indent_str; in generate_c_source()
5032 stream << "\n"; in generate_c_source()
5033 stream << indent_str; in generate_c_source()
5034 stream << " params.override = override;"; in generate_c_source()
5035 stream << "\n"; in generate_c_source()
5036 stream << indent_str; in generate_c_source()
5037 stream << " params.initialize = initialize;"; in generate_c_source()
5038 stream << "\n"; in generate_c_source()
5039 stream << indent_str; in generate_c_source()
5040 stream << " params.check_required = check_required;"; in generate_c_source()
5041 stream << "\n"; in generate_c_source()
5042 stream << indent_str; in generate_c_source()
5043 stream << " params.check_ambiguity = 0;"; in generate_c_source()
5044 stream << "\n"; in generate_c_source()
5045 stream << indent_str; in generate_c_source()
5046 stream << " params.print_errors = 1;"; in generate_c_source()
5047 stream << "\n"; in generate_c_source()
5048 stream << indent_str; in generate_c_source()
5049 stream << "\n"; in generate_c_source()
5050 stream << indent_str; in generate_c_source()
5051 stream << " return "; in generate_c_source()
5052 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5053 stream << "_string_ext(cmdline, args_info, prog_name, &params);"; in generate_c_source()
5054 stream << "\n"; in generate_c_source()
5055 stream << indent_str; in generate_c_source()
5056 stream << "}"; in generate_c_source()
5057 stream << "\n"; in generate_c_source()
5058 stream << indent_str; in generate_c_source()
5059 stream << "\n"; in generate_c_source()
5060 stream << indent_str; in generate_c_source()
5061 stream << "int"; in generate_c_source()
5062 stream << "\n"; in generate_c_source()
5063 stream << indent_str; in generate_c_source()
5064 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5065 stream << "_string_ext(const char *cmdline, struct "; in generate_c_source()
5066 generate_string (args_info, stream, indent + indent_str.length ()); in generate_c_source()
5067 stream << " *args_info, const char *prog_name,"; in generate_c_source()
5068 stream << "\n"; in generate_c_source()
5069 stream << indent_str; in generate_c_source()
5070 stream << " struct "; in generate_c_source()
5071 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5072 stream << "_params *params)"; in generate_c_source()
5073 stream << "\n"; in generate_c_source()
5074 stream << indent_str; in generate_c_source()
5075 stream << "{"; in generate_c_source()
5076 stream << "\n"; in generate_c_source()
5077 stream << indent_str; in generate_c_source()
5078 stream << " char **argv_ptr = 0;"; in generate_c_source()
5079 stream << "\n"; in generate_c_source()
5080 stream << indent_str; in generate_c_source()
5081 stream << " int result;"; in generate_c_source()
5082 stream << "\n"; in generate_c_source()
5083 stream << indent_str; in generate_c_source()
5084 stream << " unsigned int argc;"; in generate_c_source()
5085 stream << "\n"; in generate_c_source()
5086 stream << indent_str; in generate_c_source()
5088 stream << " "; in generate_c_source()
5090 stream << "\n"; in generate_c_source()
5091 stream << indent_str; in generate_c_source()
5092 stream << " argc = "; in generate_c_source()
5093 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5094 stream << "_create_argv(cmdline, &argv_ptr, prog_name);"; in generate_c_source()
5095 stream << "\n"; in generate_c_source()
5096 stream << indent_str; in generate_c_source()
5098 stream << " "; in generate_c_source()
5100 stream << "\n"; in generate_c_source()
5101 stream << indent_str; in generate_c_source()
5102 stream << " result ="; in generate_c_source()
5103 stream << "\n"; in generate_c_source()
5104 stream << indent_str; in generate_c_source()
5106 stream << " "; in generate_c_source()
5107 generate_string (parser_name, stream, indent + indent_str.length ()); in generate_c_source()
5108 stream << "_internal (argc, argv_ptr, args_info, params, 0);"; in generate_c_source()
5110 stream << "\n"; in generate_c_source()
5111 stream << indent_str; in generate_c_source()
5113 stream << " "; in generate_c_source()
5115 stream << "\n"; in generate_c_source()
5116 stream << indent_str; in generate_c_source()
5117 stream << " if (argv_ptr)"; in generate_c_source()
5118 stream << "\n"; in generate_c_source()
5119 stream << indent_str; in generate_c_source()
5120 stream << " {"; in generate_c_source()
5121 stream << "\n"; in generate_c_source()
5122 stream << indent_str; in generate_c_source()
5123 stream << " free (argv_ptr);"; in generate_c_source()
5124 stream << "\n"; in generate_c_source()
5125 stream << indent_str; in generate_c_source()
5126 stream << " }"; in generate_c_source()
5127 stream << "\n"; in generate_c_source()
5128 stream << indent_str; in generate_c_source()
5129 stream << "\n"; in generate_c_source()
5130 stream << indent_str; in generate_c_source()
5131 stream << " free_cmd_list();"; in generate_c_source()
5132 stream << "\n"; in generate_c_source()
5133 stream << indent_str; in generate_c_source()
5135 stream << " "; in generate_c_source()
5137 stream << "\n"; in generate_c_source()
5138 stream << indent_str; in generate_c_source()
5140 stream << " "; in generate_c_source()
5141 generate_string (final_exit, stream, indent + indent_str.length ()); in generate_c_source()
5143 stream << "\n"; in generate_c_source()
5144 stream << indent_str; in generate_c_source()
5145 stream << "}"; in generate_c_source()
5146 stream << "\n"; in generate_c_source()
5147 stream << indent_str; in generate_c_source()
5148 stream << "\n"; in generate_c_source()
5149 stream << indent_str; in generate_c_source()
5151 stream << "/* vim: set ft=c noet ts=8 sts=8 sw=8 tw=80 nojs spell : */"; in generate_c_source()
5152 stream << "\n"; in generate_c_source()
5153 stream << indent_str; in generate_c_source()