pr "const char *%s" n;
next ();
pr "size_t %s_size" n
+ | Pointer (t, n) ->
+ next ();
+ pr "%s %s" t n
) args;
if is_RBufferOut then (next (); pr "size_t *size_r");
if optargs <> [] then (
| None -> ()
| Some txt -> pr "%s\n\n" txt
);
- let version = lookup_api_version name in
- pr "(Added in %s)\n\n" version;
+ (match lookup_api_version name with
+ | Some version -> pr "(Added in %s)\n\n" version
+ | None -> ()
+ );
(* Handling of optional argument variants. *)
if optargs <> [] then (
| BufferIn n
| StringList n
| DeviceList n
- | Key n ->
+ | Key n
+ | Pointer (_, n) ->
pr " if (%s == NULL) {\n" n;
pr " error (g, \"%%s: %%s: parameter cannot be NULL\",\n";
pr " \"%s\", \"%s\");\n" shortname n;
| BufferIn n -> (* RHBZ#646822 *)
pr " fputc (' ', stderr);\n";
pr " guestfs___print_BufferIn (stderr, %s, %s_size);\n" n n
+ | Pointer (t, n) ->
+ pr " fprintf (stderr, \" (%s)%%p\", %s);\n" t n
) args;
(* Optional arguments. *)
pr " }\n";
pr " args.%s.%s_val = (char *) %s;\n" n n n;
pr " args.%s.%s_len = %s_size;\n" n n n
+ | Pointer _ -> assert false
) args;
pr " serial = guestfs___send (g, GUESTFS_PROC_%s,\n"
(String.uppercase shortname);