pr "#include <string.h>\n";
pr "#include <inttypes.h>\n";
pr "\n";
- pr "#include <guestfs.h>\n";
pr "#include \"c-ctype.h\"\n";
pr "#include \"full-write.h\"\n";
pr "#include \"xstrtol.h\"\n";
+ pr "\n";
+ pr "#include <guestfs.h>\n";
pr "#include \"fish.h\"\n";
+ pr "#include \"fish-cmds.h\"\n";
pr "#include \"options.h\"\n";
pr "#include \"cmds_gperf.h\"\n";
pr "\n";
"The Int type in the generator is a signed 31 bit int." in
Some (min, max, comment) in
let expr = sprintf "&argv[i][%d]" (len+1) in
- parse_integer expr "xstrtoll" "long long" "int" range name
+ parse_integer expr "xstrtoll" "long long" "int" range
+ (sprintf "optargs_s.%s" n)
| Int64 n ->
let expr = sprintf "&argv[i][%d]" (len+1) in
- parse_integer expr "xstrtoll" "long long" "int64_t" None name
+ parse_integer expr "xstrtoll" "long long" "int64_t" None
+ (sprintf "optargs_s.%s" n)
| String n ->
pr " optargs_s.%s = &argv[i][%d];\n" n (len+1);
| _ -> assert false
pr " }\n";
pr "}\n"
+and generate_fish_cmds_h () =
+ generate_header CStyle GPLv2plus;
+
+ pr "#ifndef FISH_CMDS_H\n";
+ pr "#define FISH_CMDS_H\n";
+ pr "\n";
+
+ List.iter (
+ fun (shortname, _, _, _, _, _, _) ->
+ pr "extern int run_%s (const char *cmd, size_t argc, char *argv[]);\n"
+ shortname
+ ) fish_commands;
+
+ pr "\n";
+ pr "#endif /* FISH_CMDS_H */\n"
+
(* gperf code to do fast lookups of commands. *)
and generate_fish_cmds_gperf () =
generate_header CStyle GPLv2plus;