X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fgenerator.ml;h=d2be559e810162b9b1eb2397213935bab57ec863;hb=713283f4a67b3a1960ca96ce6608d046fc202d2d;hp=7ea2806a783a67787399abf4a38b649fdeb8fbcc;hpb=7f818fa00c3d019146c7178f152408038d4a4d52;p=libguestfs.git diff --git a/src/generator.ml b/src/generator.ml index 7ea2806..d2be559 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -33,6 +33,7 @@ *) #load "unix.cma";; +#load "str.cma";; open Printf @@ -284,6 +285,32 @@ The first character of C string must be a C<-> (dash). C can be NULL."); + ("set_qemu", (RErr, [String "qemu"]), -1, [FishAlias "qemu"], + [], + "set the qemu binary", + "\ +Set the qemu binary that we will use. + +The default is chosen when the library was compiled by the +configure script. + +You can also override this by setting the C +environment variable. + +The string C is stashed in the libguestfs handle, so the caller +must make sure it remains valid for the lifetime of the handle. + +Setting C to C restores the default qemu binary."); + + ("get_qemu", (RConstString "qemu", []), -1, [], + [], + "get the qemu binary", + "\ +Return the current qemu binary. + +This is always non-NULL. If it wasn't set already, then this will +return the default qemu binary name."); + ("set_path", (RErr, [String "path"]), -1, [FishAlias "path"], [], "set the search path", @@ -1409,6 +1436,49 @@ it to local file C. To download an uncompressed tarball, use C."); + ("mount_ro", (RErr, [String "device"; String "mountpoint"]), 73, [], + [InitBasicFS, TestLastFail ( + [["umount"; "/"]; + ["mount_ro"; "/dev/sda1"; "/"]; + ["touch"; "/new"]]); + InitBasicFS, TestOutput ( + [["write_file"; "/new"; "data"; "0"]; + ["umount"; "/"]; + ["mount_ro"; "/dev/sda1"; "/"]; + ["cat"; "/new"]], "data")], + "mount a guest disk, read-only", + "\ +This is the same as the C command, but it +mounts the filesystem with the read-only (I<-o ro>) flag."); + + ("mount_options", (RErr, [String "options"; String "device"; String "mountpoint"]), 74, [], + [], + "mount a guest disk with mount options", + "\ +This is the same as the C command, but it +allows you to set the mount options as for the +L I<-o> flag."); + + ("mount_vfs", (RErr, [String "options"; String "vfstype"; String "device"; String "mountpoint"]), 75, [], + [], + "mount a guest disk with mount options and vfstype", + "\ +This is the same as the C command, but it +allows you to set both the mount options and the vfstype +as for the L I<-o> and I<-t> flags."); + + ("debug", (RString "result", [String "subcmd"; StringList "extraargs"]), 76, [], + [], + "debugging and internals", + "\ +The C command exposes some internals of +C (the guestfs daemon) that runs inside the +qemu subprocess. + +There is no comprehensive help for this command. You have +to look at the file C in the libguestfs source +to find out what you can do."); + ] let all_functions = non_daemon_functions @ daemon_functions @@ -3752,9 +3822,19 @@ and generate_fish_actions_pod () = fun (_, _, _, flags, _, _, _) -> not (List.mem NotInFish flags) ) all_functions_sorted in + let rex = Str.regexp "C]+\\)>" in + List.iter ( fun (name, style, _, flags, _, _, longdesc) -> - let longdesc = replace_str longdesc "C + let sub = + try Str.matched_group 1 s + with Not_found -> + failwithf "error substituting C in longdesc of function %s" name in + "C<" ^ replace_char sub '_' '-' ^ ">" + ) longdesc in let name = replace_char name '_' '-' in let alias = try find_map (function FishAlias n -> Some n | _ -> None) flags @@ -3770,7 +3850,7 @@ and generate_fish_actions_pod () = function | String n -> pr " %s" n | OptString n -> pr " %s" n - | StringList n -> pr " %s,..." n + | StringList n -> pr " '%s ...'" n | Bool _ -> pr " true|false" | Int n -> pr " %s" n | FileIn n | FileOut n -> pr " (%s|-)" n @@ -4080,6 +4160,8 @@ copy_table (char * const * argv) pr "{\n"; (match params with + | [p1; p2; p3; p4; p5] -> + pr " CAMLparam5 (%s);\n" (String.concat ", " params) | p1 :: p2 :: p3 :: p4 :: p5 :: rest -> pr " CAMLparam5 (%s);\n" (String.concat ", " [p1; p2; p3; p4; p5]); pr " CAMLxparam%d (%s);\n" @@ -5710,14 +5792,14 @@ Java_com_redhat_et_libguestfs_GuestFS__1create return 0; } guestfs_set_error_handler (g, NULL, NULL); - return (jlong) g; + return (jlong) (long) g; } JNIEXPORT void JNICALL Java_com_redhat_et_libguestfs_GuestFS__1close (JNIEnv *env, jobject obj, jlong jg) { - guestfs_h *g = (guestfs_h *) jg; + guestfs_h *g = (guestfs_h *) (long) jg; guestfs_close (g); } @@ -5738,7 +5820,7 @@ Java_com_redhat_et_libguestfs_GuestFS__1close pr "jobjectArray "; ); pr "JNICALL\n"; - pr "Java_com_redhat_et_libguestfs_"; + pr "Java_com_redhat_et_libguestfs_GuestFS_"; pr "%s" (replace_str ("_" ^ name) "_" "_1"); pr "\n"; pr " (JNIEnv *env, jobject obj, jlong jg"; @@ -5758,7 +5840,7 @@ Java_com_redhat_et_libguestfs_GuestFS__1close ) (snd style); pr ")\n"; pr "{\n"; - pr " guestfs_h *g = (guestfs_h *) jg;\n"; + pr " guestfs_h *g = (guestfs_h *) (long) jg;\n"; let error_code, no_ret = match fst style with | RErr -> pr " int r;\n"; "-1", ""