X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=generator%2Fgenerator_actions.ml;h=c9890a67cdad691d58b1175dbdbff0e4f1b369e6;hb=37e0c30d9075a35780a945a462913165d973c372;hp=d01871f289295d95aded3ebd4b52962d9d6c204c;hpb=0003ea2c3dbaa7e22f4f616539136821d80694b8;p=libguestfs.git diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index d01871f..c9890a6 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -4190,7 +4190,7 @@ bytes of the file, starting at C, from file C. This may read fewer bytes than requested. For further details see the L system call. -See also C."); +See also C, C."); ("part_init", (RErr, [Device "device"; String "parttype"]), 208, [], [InitEmpty, Always, TestRun ( @@ -4812,7 +4812,7 @@ return value is the number of bytes that were actually written to the file. This could even be 0, although short writes are unlikely for regular files in ordinary circumstances. -See also C."); +See also C, C."); ("resize2fs_size", (RErr, [Device "device"; Int64 "size"]), 248, [], [], @@ -5117,6 +5117,85 @@ removes the partition number, returning the device name The named partition must exist, for example as a string returned from C."); + ("upload_offset", (RErr, [FileIn "filename"; Dev_or_Path "remotefilename"; Int64 "offset"]), 273, [], + (let md5 = Digest.to_hex (Digest.file "COPYING.LIB") in + [InitBasicFS, Always, TestOutput ( + [["upload_offset"; "../COPYING.LIB"; "/COPYING.LIB"; "0"]; + ["checksum"; "md5"; "/COPYING.LIB"]], md5)]), + "upload a file from the local machine with offset", + "\ +Upload local file C to C on the +filesystem. + +C is overwritten starting at the byte C +specified. The intention is to overwrite parts of existing +files or devices, although if a non-existant file is specified +then it is created with a \"hole\" before C. The +size of the data written is implicit in the size of the +source C. + +Note that there is no limit on the amount of data that +can be uploaded with this call, unlike with C, +and this call always writes the full amount unless an +error occurs. + +See also C, C."); + + ("download_offset", (RErr, [Dev_or_Path "remotefilename"; FileOut "filename"; Int64 "offset"; Int64 "size"]), 274, [Progress], + (let md5 = Digest.to_hex (Digest.file "COPYING.LIB") in + let offset = string_of_int 100 in + let size = string_of_int ((Unix.stat "COPYING.LIB").Unix.st_size - 100) in + [InitBasicFS, Always, TestOutput ( + (* Pick a file from cwd which isn't likely to change. *) + [["upload"; "../COPYING.LIB"; "/COPYING.LIB"]; + ["download_offset"; "/COPYING.LIB"; "testdownload.tmp"; offset; size]; + ["upload_offset"; "testdownload.tmp"; "/COPYING.LIB"; offset]; + ["checksum"; "md5"; "/COPYING.LIB"]], md5)]), + "download a file to the local machine with offset and size", + "\ +Download file C and save it as C +on the local machine. + +C is read for C bytes starting at C +(this region must be within the file or device). + +Note that there is no limit on the amount of data that +can be downloaded with this call, unlike with C, +and this call always reads the full amount unless an +error occurs. + +See also C, C."); + + ("pwrite_device", (RInt "nbytes", [Device "device"; BufferIn "content"; Int64 "offset"]), 275, [ProtocolLimitWarning], + [InitPartition, Always, TestOutputList ( + [["pwrite_device"; "/dev/sda"; "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"; "446"]; + ["blockdev_rereadpt"; "/dev/sda"]; + ["list_partitions"]], [])], + "write to part of a device", + "\ +This command writes to part of a device. It writes the data +buffer C to C starting at offset C. + +This command implements the L system call, and like +that system call it may not write the full data requested +(although short writes to disk devices and partitions are +probably impossible with standard Linux kernels). + +See also C."); + + ("pread_device", (RBufferOut "content", [Device "device"; Int "count"; Int64 "offset"]), 276, [ProtocolLimitWarning], + [InitEmpty, Always, TestOutputBuffer ( + [["pread_device"; "/dev/sdd"; "8"; "32768"]], "\001CD001\001\000")], + "read part of a device", + "\ +This command lets you read part of a file. It reads C +bytes of C, starting at C. + +This may read fewer bytes than requested. For further details +see the L system call. + +See also C."); + ] let all_functions = non_daemon_functions @ daemon_functions @@ -5221,6 +5300,42 @@ repeatedly on each matching path. See L."); + ("hexedit", (RErr,[]), -1, [], [], + "edit with a hex editor", + " hexedit + hexedit + hexedit + +Use hexedit (a hex editor) to edit all or part of a binary file +or block device. + +This command works by downloading potentially the whole file or +device, editing it locally, then uploading it. If the file or +device is large, you have to specify which part you wish to edit +by using C and/or C C parameters. +C and C are specified in bytes, with the usual +modifiers allowed such as C<1M> (1 megabyte). + +For example to edit the first few sectors of a disk you +might do: + + hexedit /dev/sda 1M + +which would allow you to edit anywhere within the first megabyte +of the disk. + +To edit the superblock of an ext2 filesystem on C, do: + + hexedit /dev/sda1 0x400 0x400 + +(assuming the superblock is in the standard location). + +This command requires the external L program. You +can specify another program to use by setting the C +environment variable. + +See also L."); + ("lcd", (RErr,[]), -1, [], [], "change working directory", " lcd directory