cprint
cprint(1, " { ");
cprint(1, " { \"%s\" },\n", a->u.value);
cprint(0, "\n");
cprint(1, "opt.%s = %s;\n", name, defval->u.value);
cprint(1, "opt.%s = 0;\n", name);
cprint(1, "opt.%s = %s;\n", name, defval->u.value);
cprint(1, "opt.%s = 1;\n", name);
cprint(1, "opt.%s = (char *)(unsigned long)\"%s\";\n", name, defval->u.value);
cprint(1, "opt.%s = NULL;\n", name);
cprint(1, "opt.%s.num_strings = 0;\n", name);
cprint(1, "opt.%s.strings = NULL;\n", name);
cprint(1, "free_getarg_strings (&opt.%s);\n", name);
cprint(1, "struct %s_options opt;\n", n);
cprint(1, "int ret;\n");
cprint(1, "int optidx = 0;\n");
cprint(1, "struct getargs args[] = {\n");
cprint(2, "{ ");
cprint(2, "{ \"help\", 'h', arg_flag, NULL, NULL, NULL }\n");
cprint(1, "};\n");
cprint(1, "int help_flag = 0;\n");
cprint(1, "args[%d].value = &opt.%s;\n", nargs++, s);
cprint(1, "args[%d].value = &help_flag;\n", nargs++);
cprint(1, "if(getarg(args, %d, argc, argv, &optidx))\n", nargs);
cprint(2, "goto usage;\n");
cprint(1, "if(argc - optidx != %d) {\n",
cprint(2, "fprintf(stderr, \"Need exactly %u parameters (%%u given).\\n\\n\", argc - optidx);\n", min_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(argc - optidx > %d) {\n", max_args);
cprint(2, "fprintf(stderr, \"Arguments given (%%u) are more than expected (%u).\\n\\n\", argc - optidx);\n", max_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(argc - optidx < %d) {\n", min_args);
cprint(2, "fprintf(stderr, \"Arguments given (%%u) are less than expected (%u).\\n\\n\", argc - optidx);\n", min_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(help_flag)\n");
cprint(2, "goto usage;\n");
cprint(1, "ret = %s(%s, argc - optidx, argv + optidx);\n",
cprint(1, "return ret;\n");
cprint(0, "usage:\n");
cprint(1, "arg_printusage (args, %d, \"%s\", \"%s\");\n", nargs,
cprint(1, "return 0;\n");
cprint(0, "}\n");
cprint(0, "\n");
cprint(0, "#include <stdio.h>\n");
cprint(0, "#include <getarg.h>\n");
cprint(0, "#include <sl.h>\n");
cprint(0, "#include \"%s\"\n\n", hname);
cprint(0, "SL_cmd commands[] = {\n");
cprint(1, "{ NULL }\n");
cprint(0, "};\n");
cprint(1, " { ");
cprint(1, " { \"%s\" },\n", a->u.value);
cprint(0, "\n");
cprint(1, "opt.%s = %s;\n", name, defval->u.value);
cprint(1, "opt.%s = 0;\n", name);
cprint(1, "opt.%s = %s;\n", name, defval->u.value);
cprint(1, "opt.%s = 1;\n", name);
cprint(1, "opt.%s = (char *)(unsigned long)\"%s\";\n", name, defval->u.value);
cprint(1, "opt.%s = NULL;\n", name);
cprint(1, "opt.%s.num_strings = 0;\n", name);
cprint(1, "opt.%s.strings = NULL;\n", name);
cprint(1, "free_getarg_strings (&opt.%s);\n", name);
cprint(1, "struct %s_options opt;\n", n);
cprint(1, "int ret;\n");
cprint(1, "int optidx = 0;\n");
cprint(1, "struct getargs args[] = {\n");
cprint(2, "{ ");
cprint(2, "{ \"help\", 'h', arg_flag, NULL, NULL, NULL }\n");
cprint(1, "};\n");
cprint(1, "int help_flag = 0;\n");
cprint(1, "args[%d].value = &opt.%s;\n", nargs++, s);
cprint(1, "args[%d].value = &help_flag;\n", nargs++);
cprint(1, "if(getarg(args, %d, argc, argv, &optidx))\n", nargs);
cprint(2, "goto usage;\n");
cprint(1, "if(argc - optidx != %d) {\n",
cprint(2, "fprintf(stderr, \"Need exactly %u parameters (%%u given).\\n\\n\", argc - optidx);\n", min_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(argc - optidx > %d) {\n", max_args);
cprint(2, "fprintf(stderr, \"Arguments given (%%u) are more than expected (%u).\\n\\n\", argc - optidx);\n", max_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(argc - optidx < %d) {\n", min_args);
cprint(2, "fprintf(stderr, \"Arguments given (%%u) are less than expected (%u).\\n\\n\", argc - optidx);\n", min_args);
cprint(2, "goto usage;\n");
cprint(1, "}\n");
cprint(1, "if(help_flag)\n");
cprint(2, "goto usage;\n");
cprint(1, "ret = %s(%s, argc - optidx, argv + optidx);\n",
cprint(1, "return ret;\n");
cprint(0, "usage:\n");
cprint(1, "arg_printusage (args, %d, \"%s\", \"%s\");\n", nargs,
cprint(1, "return 0;\n");
cprint(0, "}\n");
cprint(0, "\n");
cprint(0, "#include <stdio.h>\n");
cprint(0, "#include <getarg.h>\n");
cprint(0, "#include <sl.h>\n");
cprint(0, "#include \"%s\"\n\n", hname);
cprint(0, "SL_cmd commands[] = {\n");
cprint(1, "{ NULL }\n");
cprint(0, "};\n");
cprint(1); cprint(2); cprint(3); cprint(4);
cprint(5); cprint(6); cprint(7); cprint(8);
cprint(9); cprint(10); cprint(11); cprint(12);
cprint(13); cprint(14); cprint(15); cprint(16);