pr " return rv.ret.%s; /* caller will free */\n" n
| RStringList n ->
pr " /* caller will free this, but we need to add a NULL entry */\n";
- pr " rv.ret.%s.%s_val = safe_realloc (g, rv.ret.%s.%s_val, rv.ret.%s.%s_len + 1);\n" n n n n n n;
+ pr " rv.ret.%s.%s_val =" n n;
+ pr " safe_realloc (g, rv.ret.%s.%s_val,\n" n n;
+ pr " sizeof (char *) * (rv.ret.%s.%s_len + 1));\n"
+ n n;
pr " rv.ret.%s.%s_val[rv.ret.%s.%s_len] = NULL;\n" n n n n;
pr " return rv.ret.%s.%s_val;\n" n n
| RPVList n ->
pr "}\n";
pr "\n"
+(* Generate the POD documentation for guestfish. *)
+and generate_fish_actions_pod () =
+ List.iter (
+ fun (name, style, _, _, _, longdesc) ->
+ let name = replace name '_' '-' in
+ pr "=head2 %s\n\n" name;
+ pr " %s" name;
+ iter_args (
+ function
+ | String n -> pr " %s" n
+ ) (snd style);
+ pr "\n";
+ pr "\n";
+ pr "%s\n\n" longdesc
+ ) sorted_functions
+
(* Generate a C function prototype. *)
and generate_prototype ?(extern = true) ?(static = false) ?(semicolon = true)
?(single_line = false) ?(newline = false) ?(in_daemon = false)
let close = output_to "guestfs-actions.pod" in
generate_actions_pod ();
+ close ();
+
+ let close = output_to "guestfish-actions.pod" in
+ generate_fish_actions_pod ();
close ()