Added guestfish(1) manpage.
[libguestfs.git] / src / generator.ml
index d598975..427c9df 100755 (executable)
@@ -733,7 +733,10 @@ and generate_client_actions () =
           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 ->
@@ -1246,6 +1249,22 @@ FTP."
   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)
@@ -1352,4 +1371,8 @@ let () =
 
   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 ()