X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=generator%2Fgenerator_xdr.ml;h=c6d8a4d01c6e935e4b51e54c4e3bed4c8d1af9a1;hp=7f2e6eb92fc4a77bbd3751148a50e45d52b1f005;hb=692f127447d399db21c2e93026d4d2b0ac1839d1;hpb=04d8209077d2227eb1d42695ba71147f78987050;ds=sidebyside diff --git a/generator/generator_xdr.ml b/generator/generator_xdr.ml index 7f2e6eb..c6d8a4d 100644 --- a/generator/generator_xdr.ml +++ b/generator/generator_xdr.ml @@ -64,10 +64,13 @@ let generate_xdr () = ) structs; List.iter ( - fun (shortname, style, _, _, _, _, _) -> + fun (shortname, (ret, args, optargs), _, _, _, _, _) -> + if optargs <> [] then + failwithf "optional arguments not supported in XDR yet"; + let name = "guestfs_" ^ shortname in - (match snd style with + (match args with | [] -> () | args -> pr "struct %s_args {\n" name; @@ -83,10 +86,11 @@ let generate_xdr () = | BufferIn n -> pr " opaque %s<>;\n" n | FileIn _ | FileOut _ -> () + | Pointer _ -> assert false ) args; pr "};\n\n" ); - (match fst style with + (match ret with | RErr -> () | RInt n -> pr "struct %s_ret {\n" name; @@ -154,7 +158,7 @@ let generate_xdr () = */ const GUESTFS_PROGRAM = 0x2000F5F5; -const GUESTFS_PROTOCOL_VERSION = 2; +const GUESTFS_PROTOCOL_VERSION = 3; /* These constants must be larger than any possible message length. */ const GUESTFS_LAUNCH_FLAG = 0xf5f55ff5; @@ -178,7 +182,8 @@ enum guestfs_message_status { pr "\ struct guestfs_message_error { - int linux_errno; /* Linux errno if available. */ + string errno_string<32>; /* errno eg. \"EINVAL\", empty string + if errno not available */ string error_message; };