X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=generator%2Fgenerator_c.ml;h=a2f40da30c107fd2b138e86428383e14e893ab19;hp=28cecdba47367183b8619ceeff6a0f94735c7630;hb=4ada0a7815075c9cbe9d8b00da791c105ae739a9;hpb=6283982e36eeb3d19940618dc0aec88da08c7516 diff --git a/generator/generator_c.ml b/generator/generator_c.ml index 28cecdb..a2f40da 100644 --- a/generator/generator_c.ml +++ b/generator/generator_c.ml @@ -116,6 +116,9 @@ let rec generate_prototype ?(extern = true) ?(static = false) 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 ( @@ -255,8 +258,10 @@ L for more information.\n\n"; | 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 ( @@ -534,7 +539,8 @@ check_state (guestfs_h *g, const char *caller) | 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; @@ -637,6 +643,8 @@ check_state (guestfs_h *g, const char *caller) | 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. *) @@ -768,6 +776,7 @@ check_state (guestfs_h *g, const char *caller) 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);