+#: ../src/guestfs.pod:1553 ../src/guestfs-actions.pod:11
+#: ../src/guestfs-actions.pod:1844 ../fish/guestfish-actions.pod:9
+#: ../fish/guestfish-actions.pod:1255 ../tools/virt-win-reg.pl:532
+msgid "Notes:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1559
+msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1564
+msgid "You do not need to fill in all fields of the structure."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1568
+msgid ""
+"There must be a one-to-one correspondence between fields of the structure "
+"that are filled in, and bits set in the bitmask."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1573
+msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1575
+msgid ""
+"In other languages, optional arguments are expressed in the way that is "
+"natural for that language. We refer you to the language-specific "
+"documentation for more details on that."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1579
+msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1581
+msgid "SETTING CALLBACKS TO HANDLE EVENTS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1583
+msgid ""
+"The child process generates events in some situations. Current events "
+"include: receiving a log message, the child process exits."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1586
+msgid ""
+"Use the C<guestfs_set_*_callback> functions to set a callback for different "
+"types of events."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1589
+msgid ""
+"Only I<one callback of each type> can be registered for each handle. "
+"Calling C<guestfs_set_*_callback> again overwrites the previous callback of "
+"that type. Cancel all callbacks of this type by calling this function with "
+"C<cb> set to C<NULL>."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1594
+msgid "guestfs_set_log_message_callback"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1596
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque,\n"
+" char *buf, int len);\n"
+" void guestfs_set_log_message_callback (guestfs_h *g,\n"
+" guestfs_log_message_cb cb,\n"
+" void *opaque);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1602
+msgid ""
+"The callback function C<cb> will be called whenever qemu or the guest writes "
+"anything to the console."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1605
+msgid "Use this function to capture kernel messages and similar."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1607
+msgid ""
+"Normally there is no log message handler, and log messages are just "
+"discarded."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1610
+msgid "guestfs_set_subprocess_quit_callback"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1612
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);\n"
+" void guestfs_set_subprocess_quit_callback (guestfs_h *g,\n"
+" guestfs_subprocess_quit_cb cb,\n"
+" void *opaque);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1617
+msgid ""
+"The callback function C<cb> will be called when the child process quits, "
+"either asynchronously or if killed by L</guestfs_kill_subprocess>. (This "
+"corresponds to a transition from any state to the CONFIG state)."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1622
+msgid "guestfs_set_launch_done_callback"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1624
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);\n"
+" void guestfs_set_launch_done_callback (guestfs_h *g,\n"
+" guestfs_launch_done_cb cb,\n"
+" void *opaque);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1629
+msgid ""
+"The callback function C<cb> will be called when the child process becomes "
+"ready first time after it has been launched. (This corresponds to a "
+"transition from LAUNCHING to the READY state)."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1633
+msgid "guestfs_set_close_callback"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1635
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);\n"
+" void guestfs_set_close_callback (guestfs_h *g,\n"
+" guestfs_close_cb cb,\n"
+" void *opaque);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1640
+msgid ""
+"The callback function C<cb> will be called while the handle is being closed "
+"(synchronously from L</guestfs_close>)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1643
+msgid ""
+"Note that libguestfs installs an L<atexit(3)> handler to try to clean up "
+"handles that are open when the program exits. This means that this callback "
+"might be called indirectly from L<exit(3)>, which can cause unexpected "
+"problems in higher-level languages (eg. if your HLL interpreter has already "
+"been cleaned up by the time this is called, and if your callback then jumps "
+"into some HLL function)."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1651
+msgid "guestfs_set_progress_callback"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1653
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque,\n"
+" int proc_nr, int serial,\n"
+" uint64_t position, uint64_t total);\n"
+" void guestfs_set_progress_callback (guestfs_h *g,\n"
+" guestfs_progress_cb cb,\n"
+" void *opaque);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1660
+msgid ""
+"Some long-running operations can generate progress messages. If this "
+"callback is registered, then it will be called each time a progress message "
+"is generated (usually two seconds after the operation started, and three "
+"times per second thereafter until it completes, although the frequency may "
+"change in future versions)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1666
+msgid ""
+"The callback receives two numbers: C<position> and C<total>. The units of "
+"C<total> are not defined, although for some operations C<total> may relate "
+"in some way to the amount of data to be transferred (eg. in bytes or "
+"megabytes), and C<position> may be the portion which has been transferred."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1672
+msgid "The only defined and stable parts of the API are:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1678
+msgid ""
+"The callback can display to the user some type of progress bar or indicator "
+"which shows the ratio of C<position>:C<total>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1683
+msgid "0 E<lt>= C<position> E<lt>= C<total>"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1687
+msgid ""
+"If any progress notification is sent during a call, then a final progress "
+"notification is always sent when C<position> = C<total>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1690
+msgid ""
+"This is to simplify caller code, so callers can easily set the progress "
+"indicator to \"100%\" at the end of the operation, without requiring special "
+"code to detect this case."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1696
+msgid ""
+"The callback also receives the procedure number and serial number of the "
+"call. These are only useful for debugging protocol issues, and the callback "
+"can normally ignore them. The callback may want to print these numbers in "
+"error messages or debugging messages."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:1701
+msgid "PRIVATE DATA AREA"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1703
+msgid ""
+"You can attach named pieces of private data to the libguestfs handle, and "
+"fetch them by name for the lifetime of the handle. This is called the "
+"private data area and is only available from the C API."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1707
+msgid "To attach a named piece of data, use the following call:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1709
+#, no-wrap
+msgid ""
+" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1711
+msgid ""
+"C<key> is the name to associate with this data, and C<data> is an arbitrary "
+"pointer (which can be C<NULL>). Any previous item with the same name is "
+"overwritten."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1715
+msgid ""
+"You can use any C<key> you want, but names beginning with an underscore "
+"character are reserved for internal libguestfs purposes (for implementing "
+"language bindings). It is recommended to prefix the name with some unique "
+"string to avoid collisions with other users."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1720
+msgid "To retrieve the pointer, use:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1722
+#, no-wrap
+msgid ""
+" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1724
+msgid ""
+"This function returns C<NULL> if either no data is found associated with "
+"C<key>, or if the user previously set the C<key>'s C<data> pointer to "
+"C<NULL>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1728
+msgid ""
+"Libguestfs does not try to look at or interpret the C<data> pointer in any "
+"way. As far as libguestfs is concerned, it need not be a valid pointer at "
+"all. In particular, libguestfs does I<not> try to free the data when the "
+"handle is closed. If the data must be freed, then the caller must either "
+"free it before calling L</guestfs_close> or must set up a close callback to "
+"do it (see L</guestfs_set_close_callback>, and note that only one callback "
+"can be registered for a handle)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1736
+msgid ""
+"The private data area is implemented using a hash table, and should be "
+"reasonably efficient for moderate numbers of keys."
+msgstr ""
+
+# type: =end
+#: ../src/guestfs.pod:1739 ../src/guestfs.pod:1744
+msgid "html"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1741
+msgid ""
+"<!-- old anchor for the next section --> <a name="
+"\"state_machine_and_low_level_event_api\"/>"
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:1746
+msgid "ARCHITECTURE"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1748
+msgid ""
+"Internally, libguestfs is implemented by running an appliance (a special "
+"type of small virtual machine) using L<qemu(1)>. Qemu runs as a child "
+"process of the main program."
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1752
+#, no-wrap
+msgid ""
+" ___________________\n"
+" / \\\n"
+" | main program |\n"
+" | |\n"
+" | | child process / appliance\n"
+" | | __________________________\n"
+" | | / qemu \\\n"
+" +-------------------+ RPC | +-----------------+ |\n"
+" | libguestfs <--------------------> guestfsd | |\n"
+" | | | +-----------------+ |\n"
+" \\___________________/ | | Linux kernel | |\n"
+" | +--^--------------+ |\n"
+" \\_________|________________/\n"
+" |\n"
+" _______v______\n"
+" / \\\n"
+" | Device or |\n"
+" | disk image |\n"
+" \\______________/\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1772
+msgid ""
+"The library, linked to the main program, creates the child process and hence "
+"the appliance in the L</guestfs_launch> function."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1775
+msgid ""
+"Inside the appliance is a Linux kernel and a complete stack of userspace "
+"tools (such as LVM and ext2 programs) and a small controlling daemon called "
+"L</guestfsd>. The library talks to L</guestfsd> using remote procedure "
+"calls (RPC). There is a mostly one-to-one correspondence between libguestfs "
+"API calls and RPC calls to the daemon. Lastly the disk image(s) are "
+"attached to the qemu process which translates device access by the "
+"appliance's Linux kernel into accesses to the image."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1784
+msgid ""
+"A common misunderstanding is that the appliance \"is\" the virtual machine. "
+"Although the disk image you are attached to might also be used by some "
+"virtual machine, libguestfs doesn't know or care about this. (But you will "
+"care if both libguestfs's qemu process and your virtual machine are trying "
+"to update the disk image at the same time, since these usually results in "
+"massive disk corruption)."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:1791
+msgid "STATE MACHINE"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1793
+msgid "libguestfs uses a state machine to model the child process:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1795
+#, no-wrap
+msgid ""
+" |\n"
+" guestfs_create\n"
+" |\n"
+" |\n"
+" ____V_____\n"
+" / \\\n"
+" | CONFIG |\n"
+" \\__________/\n"
+" ^ ^ ^ \\\n"
+" / | \\ \\ guestfs_launch\n"
+" / | _\\__V______\n"
+" / | / \\\n"
+" / | | LAUNCHING |\n"
+" / | \\___________/\n"
+" / | /\n"
+" / | guestfs_launch\n"
+" / | /\n"
+" ______ / __|____V\n"
+" / \\ ------> / \\\n"
+" | BUSY | | READY |\n"
+" \\______/ <------ \\________/\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1817
+msgid ""
+"The normal transitions are (1) CONFIG (when the handle is created, but there "
+"is no child process), (2) LAUNCHING (when the child process is booting up), "
+"(3) alternating between READY and BUSY as commands are issued to, and "
+"carried out by, the child process."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1822
+msgid ""
+"The guest may be killed by L</guestfs_kill_subprocess>, or may die "
+"asynchronously at any time (eg. due to some internal error), and that causes "
+"the state to transition back to CONFIG."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1826
+msgid ""
+"Configuration commands for qemu such as L</guestfs_add_drive> can only be "
+"issued when in the CONFIG state."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1829
+msgid ""
+"The API offers one call that goes from CONFIG through LAUNCHING to READY. "
+"L</guestfs_launch> blocks until the child process is READY to accept "
+"commands (or until some failure or timeout). L</guestfs_launch> internally "
+"moves the state from CONFIG to LAUNCHING while it is running."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1835
+msgid ""
+"API actions such as L</guestfs_mount> can only be issued when in the READY "
+"state. These API calls block waiting for the command to be carried out (ie. "
+"the state to transition to BUSY and then back to READY). There are no non-"
+"blocking versions, and no way to issue more than one command per handle at "
+"the same time."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1841
+msgid ""
+"Finally, the child process sends asynchronous messages back to the main "
+"program, such as kernel log messages. You can register a callback to "
+"receive these messages."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:1845
+msgid "INTERNALS"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:1847
+msgid "COMMUNICATION PROTOCOL"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1849
+msgid ""
+"Don't rely on using this protocol directly. This section documents how it "
+"currently works, but it may change at any time."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1852
+msgid ""
+"The protocol used to talk between the library and the daemon running inside "
+"the qemu virtual machine is a simple RPC mechanism built on top of XDR (RFC "
+"1014, RFC 1832, RFC 4506)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1856
+msgid ""
+"The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
+"this file is automatically generated)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1859
+msgid ""
+"There are two broad cases, ordinary functions that don't have any C<FileIn> "
+"and C<FileOut> parameters, which are handled with very simple request/reply "
+"messages. Then there are functions that have any C<FileIn> or C<FileOut> "
+"parameters, which use the same request and reply messages, but they may also "
+"be followed by files sent using a chunked encoding."
+msgstr ""
+
+# type: =head3
+#: ../src/guestfs.pod:1866
+msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1868
+msgid "For ordinary functions, the request message is:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1870
+#, no-wrap
+msgid ""
+" total length (header + arguments,\n"
+" but not including the length word itself)\n"
+" struct guestfs_message_header (encoded as XDR)\n"
+" struct guestfs_<foo>_args (encoded as XDR)\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1875
+msgid ""
+"The total length field allows the daemon to allocate a fixed size buffer "
+"into which it slurps the rest of the message. As a result, the total length "
+"is limited to C<GUESTFS_MESSAGE_MAX> bytes (currently 4MB), which means the "
+"effective size of any request is limited to somewhere under this size."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1881
+msgid ""
+"Note also that many functions don't take any arguments, in which case the "
+"C<guestfs_I<foo>_args> is completely omitted."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1884
+msgid ""
+"The header contains the procedure number (C<guestfs_proc>) which is how the "
+"receiver knows what type of args structure to expect, or none at all."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1888
+msgid ""
+"For functions that take optional arguments, the optional arguments are "
+"encoded in the C<guestfs_I<foo>_args> structure in the same way as ordinary "
+"arguments. A bitmask in the header indicates which optional arguments are "
+"meaningful. The bitmask is also checked to see if it contains bits set "
+"which the daemon does not know about (eg. if more optional arguments were "
+"added in a later version of the library), and this causes the call to be "
+"rejected."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1896
+msgid "The reply message for ordinary functions is:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1898
+#, no-wrap
+msgid ""
+" total length (header + ret,\n"
+" but not including the length word itself)\n"
+" struct guestfs_message_header (encoded as XDR)\n"
+" struct guestfs_<foo>_ret (encoded as XDR)\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1903
+msgid ""
+"As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
+"functions that return no formal return values."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1906
+msgid ""
+"As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1909
+msgid ""
+"In the case of an error, a flag is set in the header, and the reply message "
+"is slightly changed:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1912
+#, no-wrap
+msgid ""
+" total length (header + error,\n"
+" but not including the length word itself)\n"
+" struct guestfs_message_header (encoded as XDR)\n"
+" struct guestfs_message_error (encoded as XDR)\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1917
+msgid ""
+"The C<guestfs_message_error> structure contains the error message as a "
+"string."
+msgstr ""
+
+# type: =head3
+#: ../src/guestfs.pod:1920
+msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1922
+msgid ""
+"A C<FileIn> parameter indicates that we transfer a file I<into> the guest. "
+"The normal request message is sent (see above). However this is followed by "
+"a sequence of file chunks."
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1926
+#, no-wrap
+msgid ""
+" total length (header + arguments,\n"
+" but not including the length word itself,\n"
+" and not including the chunks)\n"
+" struct guestfs_message_header (encoded as XDR)\n"
+" struct guestfs_<foo>_args (encoded as XDR)\n"
+" sequence of chunks for FileIn param #0\n"
+" sequence of chunks for FileIn param #1 etc.\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1934
+msgid "The \"sequence of chunks\" is:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1936
+#, no-wrap
+msgid ""
+" length of chunk (not including length word itself)\n"
+" struct guestfs_chunk (encoded as XDR)\n"
+" length of chunk\n"
+" struct guestfs_chunk (encoded as XDR)\n"
+" ...\n"
+" length of chunk\n"
+" struct guestfs_chunk (with data.data_len == 0)\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1944
+msgid ""
+"The final chunk has the C<data_len> field set to zero. Additionally a flag "
+"is set in the final chunk to indicate either successful completion or early "
+"cancellation."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1948
+msgid ""
+"At time of writing there are no functions that have more than one FileIn "
+"parameter. However this is (theoretically) supported, by sending the "
+"sequence of chunks for each FileIn parameter one after another (from left to "
+"right)."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1953
+msgid ""
+"Both the library (sender) I<and> the daemon (receiver) may cancel the "
+"transfer. The library does this by sending a chunk with a special flag set "
+"to indicate cancellation. When the daemon sees this, it cancels the whole "
+"RPC, does I<not> send any reply, and goes back to reading the next request."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1959
+msgid ""
+"The daemon may also cancel. It does this by writing a special word "
+"C<GUESTFS_CANCEL_FLAG> to the socket. The library listens for this during "
+"the transfer, and if it gets it, it will cancel the transfer (it sends a "
+"cancel chunk). The special word is chosen so that even if cancellation "
+"happens right at the end of the transfer (after the library has finished "
+"writing and has started listening for the reply), the \"spurious\" cancel "
+"flag will not be confused with the reply message."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1968
+msgid ""
+"This protocol allows the transfer of arbitrary sized files (no 32 bit "
+"limit), and also files where the size is not known in advance (eg. from "
+"pipes or sockets). However the chunks are rather small "
+"(C<GUESTFS_MAX_CHUNK_SIZE>), so that neither the library nor the daemon need "
+"to keep much in memory."
+msgstr ""
+
+# type: =head3
+#: ../src/guestfs.pod:1974
+msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1976
+msgid ""
+"The protocol for FileOut parameters is exactly the same as for FileIn "
+"parameters, but with the roles of daemon and library reversed."
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:1979
+#, no-wrap
+msgid ""
+" total length (header + ret,\n"
+" but not including the length word itself,\n"
+" and not including the chunks)\n"
+" struct guestfs_message_header (encoded as XDR)\n"
+" struct guestfs_<foo>_ret (encoded as XDR)\n"
+" sequence of chunks for FileOut param #0\n"
+" sequence of chunks for FileOut param #1 etc.\n"
+"\n"
+msgstr ""
+
+# type: =head3
+#: ../src/guestfs.pod:1987
+msgid "INITIAL MESSAGE"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1989
+msgid ""
+"When the daemon launches it sends an initial word (C<GUESTFS_LAUNCH_FLAG>) "
+"which indicates that the guest and daemon is alive. This is what L</"
+"guestfs_launch> waits for."
+msgstr ""
+
+# type: =head3
+#: ../src/guestfs.pod:1993
+msgid "PROGRESS NOTIFICATION MESSAGES"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1995
+msgid ""
+"The daemon may send progress notification messages at any time. These are "
+"distinguished by the normal length word being replaced by "
+"C<GUESTFS_PROGRESS_FLAG>, followed by a fixed size progress message."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:1999
+msgid ""
+"The library turns them into progress callbacks (see "
+"C<guestfs_set_progress_callback>) if there is a callback registered, or "
+"discards them if not."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2003
+msgid ""
+"The daemon self-limits the frequency of progress messages it sends (see "
+"C<daemon/proto.c:notify_progress>). Not all calls generate progress "
+"messages."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2007
+msgid "LIBGUESTFS VERSION NUMBERS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2009
+msgid ""
+"Since April 2010, libguestfs has started to make separate development and "
+"stable releases, along with corresponding branches in our git repository. "
+"These separate releases can be identified by version number:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:2014
+#, no-wrap
+msgid ""
+" even numbers for stable: 1.2.x, 1.4.x, ...\n"
+" .-------- odd numbers for development: 1.3.x, 1.5.x, ...\n"
+" |\n"
+" v\n"
+" 1 . 3 . 5\n"
+" ^ ^\n"
+" | |\n"
+" | `-------- sub-version\n"
+" |\n"
+" `------ always '1' because we don't change the ABI\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2025
+msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2027
+msgid ""
+"As time passes we cherry pick fixes from the development branch and backport "
+"those into the stable branch, the effect being that the stable branch should "
+"get more stable and less buggy over time. So the stable releases are ideal "
+"for people who don't need new features but would just like the software to "
+"work."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2033
+msgid "Our criteria for backporting changes are:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2039
+msgid ""
+"Documentation changes which don't affect any code are backported unless the "
+"documentation refers to a future feature which is not in stable."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2045
+msgid ""
+"Bug fixes which are not controversial, fix obvious problems, and have been "
+"well tested are backported."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2050
+msgid ""
+"Simple rearrangements of code which shouldn't affect how it works get "
+"backported. This is so that the code in the two branches doesn't get too "
+"far out of step, allowing us to backport future fixes more easily."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2056
+msgid ""
+"We I<don't> backport new features, new APIs, new tools etc, except in one "
+"exceptional case: the new feature is required in order to implement an "
+"important bug fix."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2062
+msgid ""
+"A new stable branch starts when we think the new features in development are "
+"substantial and compelling enough over the current stable branch to warrant "
+"it. When that happens we create new stable and development versions 1.N.0 "
+"and 1.(N+1).0 [N is even]. The new dot-oh release won't necessarily be so "
+"stable at this point, but by backporting fixes from development, that branch "
+"will stabilize over time."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2070 ../fish/guestfish.pod:965
+#: ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
+msgid "ENVIRONMENT VARIABLES"
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2074 ../fish/guestfish.pod:991
+msgid "LIBGUESTFS_APPEND"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2076 ../fish/guestfish.pod:993
+msgid "Pass additional options to the guest kernel."
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2078 ../fish/guestfish.pod:995
+msgid "LIBGUESTFS_DEBUG"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2080
+msgid ""
+"Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages. This has the same "
+"effect as calling C<guestfs_set_verbose (g, 1)>."
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2083 ../fish/guestfish.pod:1000
+msgid "LIBGUESTFS_MEMSIZE"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2085 ../fish/guestfish.pod:1002
+msgid ""
+"Set the memory allocated to the qemu process, in megabytes. For example:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:2088 ../fish/guestfish.pod:1005
+#, no-wrap
+msgid ""
+" LIBGUESTFS_MEMSIZE=700\n"
+"\n"
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2090 ../fish/guestfish.pod:1007
+msgid "LIBGUESTFS_PATH"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2092
+msgid ""
+"Set the path that libguestfs uses to search for kernel and initrd.img. See "
+"the discussion of paths in section PATH above."
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2095 ../fish/guestfish.pod:1012
+msgid "LIBGUESTFS_QEMU"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2097 ../fish/guestfish.pod:1014
+msgid ""
+"Set the default qemu binary that libguestfs uses. If not set, then the qemu "
+"which was found at compile time by the configure script is used."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2101
+msgid "See also L</QEMU WRAPPERS> above."
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2103 ../fish/guestfish.pod:1018
+msgid "LIBGUESTFS_TRACE"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2105
+msgid ""
+"Set C<LIBGUESTFS_TRACE=1> to enable command traces. This has the same "
+"effect as calling C<guestfs_set_trace (g, 1)>."
+msgstr ""
+
+# type: =item
+#: ../src/guestfs.pod:2108 ../fish/guestfish.pod:1027
+msgid "TMPDIR"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2110 ../fish/guestfish.pod:1029
+msgid "Location of temporary directory, defaults to C</tmp>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2112 ../fish/guestfish.pod:1031
+msgid ""
+"If libguestfs was compiled to use the supermin appliance then the real "
+"appliance is cached in this directory, shared between all handles belonging "
+"to the same EUID. You can use C<$TMPDIR> to configure another directory to "
+"use in case C</tmp> is not large enough."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2120 ../fish/guestfish.pod:1089
+#: ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:233
+#: ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572
+#: ../tools/virt-resize.pl:1483 ../tools/virt-list-filesystems.pl:189
+#: ../tools/virt-tar.pl:281 ../tools/virt-make-fs.pl:534
+#: ../tools/virt-list-partitions.pl:257
+msgid "SEE ALSO"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2122
+msgid ""
+"L<guestfs-examples(3)>, L<guestfs-ocaml(3)>, L<guestfs-python(3)>, L<guestfs-"
+"ruby(3)>, L<guestfish(1)>, L<guestmount(1)>, L<virt-cat(1)>, L<virt-df(1)>, "
+"L<virt-edit(1)>, L<virt-filesystems(1)>, L<virt-inspector(1)>, L<virt-list-"
+"filesystems(1)>, L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)"
+">, L<virt-rescue(1)>, L<virt-tar(1)>, L<virt-win-reg(1)>, L<qemu(1)>, "
+"L<febootstrap(1)>, L<hivex(3)>, L<http://libguestfs.org/>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2145
+msgid ""
+"Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
+"(8)>, L<disktype(1)>."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2152 ../tools/virt-win-reg.pl:587
+#: ../tools/virt-make-fs.pl:548
+msgid "BUGS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2154
+msgid "To get a list of bugs against libguestfs use this link:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2156
+msgid ""
+"L<https://bugzilla.redhat.com/buglist.cgi?"
+"component=libguestfs&product=Virtualization+Tools>"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2158
+msgid "To report a new bug against libguestfs use this link:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2160
+msgid ""
+"L<https://bugzilla.redhat.com/enter_bug.cgi?"
+"component=libguestfs&product=Virtualization+Tools>"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2162
+msgid "When reporting a bug, please check:"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2168
+msgid "That the bug hasn't been reported already."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2172
+msgid "That you are testing a recent version."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2176
+msgid "Describe the bug accurately, and give a way to reproduce it."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2180
+msgid ""
+"Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
+"bug report."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2185 ../fish/guestfish.pod:1108
+#: ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:244
+msgid "AUTHORS"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2187 ../fish/guestfish.pod:1110
+#: ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:246
+msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:2189 ../fish/guestfish.pod:1112
+#: ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:248
+#: ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:602
+#: ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206
+#: ../tools/virt-tar.pl:296 ../tools/virt-make-fs.pl:563
+#: ../tools/virt-list-partitions.pl:273
+msgid "COPYRIGHT"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2191 ../fish/guestfish.pod:1114
+#: ../fuse/guestmount.pod:250
+msgid "Copyright (C) 2009-2010 Red Hat Inc. L<http://libguestfs.org/>"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2194
+msgid ""
+"This library is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU Lesser General Public License as published by the "
+"Free Software Foundation; either version 2 of the License, or (at your "
+"option) any later version."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2199
+msgid ""
+"This library is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License "
+"for more details."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:2204
+msgid ""
+"You should have received a copy of the GNU Lesser General Public License "
+"along with this library; if not, write to the Free Software Foundation, "
+"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:1
+msgid "guestfs_add_cdrom"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:3
+#, no-wrap
+msgid ""
+" int\n"
+" guestfs_add_cdrom (guestfs_h *g,\n"
+" const char *filename);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:7 ../fish/guestfish-actions.pod:5
+msgid "This function adds a virtual CD-ROM disk image to the guest."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:9 ../fish/guestfish-actions.pod:7
+msgid "This is equivalent to the qemu parameter C<-cdrom filename>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:17
+msgid ""
+"This call checks for the existence of C<filename>. This stops you from "
+"specifying other types of drive which are supported by qemu such as C<nbd:> "
+"and C<http:> URLs. To specify those, use the general C<guestfs_config> call "
+"instead."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:24
+msgid ""
+"If you just want to add an ISO file (often you use this as an efficient way "
+"to transfer large files into the guest), then you should probably use "
+"C<guestfs_add_drive_ro> instead."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:30 ../src/guestfs-actions.pod:128
+#: ../src/guestfs-actions.pod:189 ../src/guestfs-actions.pod:226
+#: ../src/guestfs-actions.pod:240 ../src/guestfs-actions.pod:261
+#: ../src/guestfs-actions.pod:281 ../src/guestfs-actions.pod:295
+#: ../src/guestfs-actions.pod:410 ../src/guestfs-actions.pod:430
+#: ../src/guestfs-actions.pod:444 ../src/guestfs-actions.pod:489
+#: ../src/guestfs-actions.pod:517 ../src/guestfs-actions.pod:535
+#: ../src/guestfs-actions.pod:602 ../src/guestfs-actions.pod:635
+#: ../src/guestfs-actions.pod:649 ../src/guestfs-actions.pod:664
+#: ../src/guestfs-actions.pod:763 ../src/guestfs-actions.pod:781
+#: ../src/guestfs-actions.pod:795 ../src/guestfs-actions.pod:809
+#: ../src/guestfs-actions.pod:970 ../src/guestfs-actions.pod:990
+#: ../src/guestfs-actions.pod:1008 ../src/guestfs-actions.pod:1092
+#: ../src/guestfs-actions.pod:1110 ../src/guestfs-actions.pod:1129
+#: ../src/guestfs-actions.pod:1143 ../src/guestfs-actions.pod:1163
+#: ../src/guestfs-actions.pod:1233 ../src/guestfs-actions.pod:1264
+#: ../src/guestfs-actions.pod:1289 ../src/guestfs-actions.pod:1326
+#: ../src/guestfs-actions.pod:1432 ../src/guestfs-actions.pod:1466
+#: ../src/guestfs-actions.pod:1684 ../src/guestfs-actions.pod:1706
+#: ../src/guestfs-actions.pod:1793 ../src/guestfs-actions.pod:2243
+#: ../src/guestfs-actions.pod:2387 ../src/guestfs-actions.pod:2448
+#: ../src/guestfs-actions.pod:2483 ../src/guestfs-actions.pod:3222
+#: ../src/guestfs-actions.pod:3237 ../src/guestfs-actions.pod:3257
+#: ../src/guestfs-actions.pod:3410 ../src/guestfs-actions.pod:3424
+#: ../src/guestfs-actions.pod:3437 ../src/guestfs-actions.pod:3451
+#: ../src/guestfs-actions.pod:3466 ../src/guestfs-actions.pod:3502
+#: ../src/guestfs-actions.pod:3574 ../src/guestfs-actions.pod:3594
+#: ../src/guestfs-actions.pod:3611 ../src/guestfs-actions.pod:3634
+#: ../src/guestfs-actions.pod:3657 ../src/guestfs-actions.pod:3689
+#: ../src/guestfs-actions.pod:3708 ../src/guestfs-actions.pod:3727
+#: ../src/guestfs-actions.pod:3762 ../src/guestfs-actions.pod:3774
+#: ../src/guestfs-actions.pod:3810 ../src/guestfs-actions.pod:3826
+#: ../src/guestfs-actions.pod:3839 ../src/guestfs-actions.pod:3854
+#: ../src/guestfs-actions.pod:3871 ../src/guestfs-actions.pod:3964
+#: ../src/guestfs-actions.pod:3984 ../src/guestfs-actions.pod:3997
+#: ../src/guestfs-actions.pod:4048 ../src/guestfs-actions.pod:4066
+#: ../src/guestfs-actions.pod:4084 ../src/guestfs-actions.pod:4100
+#: ../src/guestfs-actions.pod:4114 ../src/guestfs-actions.pod:4128
+#: ../src/guestfs-actions.pod:4145 ../src/guestfs-actions.pod:4160
+#: ../src/guestfs-actions.pod:4180 ../src/guestfs-actions.pod:4224
+#: ../src/guestfs-actions.pod:4295 ../src/guestfs-actions.pod:4326
+#: ../src/guestfs-actions.pod:4345 ../src/guestfs-actions.pod:4364
+#: ../src/guestfs-actions.pod:4376 ../src/guestfs-actions.pod:4393
+#: ../src/guestfs-actions.pod:4406 ../src/guestfs-actions.pod:4421
+#: ../src/guestfs-actions.pod:4436 ../src/guestfs-actions.pod:4471
+#: ../src/guestfs-actions.pod:4486 ../src/guestfs-actions.pod:4506
+#: ../src/guestfs-actions.pod:4520 ../src/guestfs-actions.pod:4537
+#: ../src/guestfs-actions.pod:4586 ../src/guestfs-actions.pod:4623
+#: ../src/guestfs-actions.pod:4637 ../src/guestfs-actions.pod:4665
+#: ../src/guestfs-actions.pod:4682 ../src/guestfs-actions.pod:4700
+#: ../src/guestfs-actions.pod:4834 ../src/guestfs-actions.pod:4891
+#: ../src/guestfs-actions.pod:4913 ../src/guestfs-actions.pod:4931
+#: ../src/guestfs-actions.pod:4963 ../src/guestfs-actions.pod:5029
+#: ../src/guestfs-actions.pod:5046 ../src/guestfs-actions.pod:5059
+#: ../src/guestfs-actions.pod:5073 ../src/guestfs-actions.pod:5362
+#: ../src/guestfs-actions.pod:5381 ../src/guestfs-actions.pod:5395
+#: ../src/guestfs-actions.pod:5407 ../src/guestfs-actions.pod:5421
+#: ../src/guestfs-actions.pod:5433 ../src/guestfs-actions.pod:5447
+#: ../src/guestfs-actions.pod:5463 ../src/guestfs-actions.pod:5484
+#: ../src/guestfs-actions.pod:5503 ../src/guestfs-actions.pod:5522
+#: ../src/guestfs-actions.pod:5540 ../src/guestfs-actions.pod:5563
+#: ../src/guestfs-actions.pod:5581 ../src/guestfs-actions.pod:5600
+#: ../src/guestfs-actions.pod:5621 ../src/guestfs-actions.pod:5640
+#: ../src/guestfs-actions.pod:5657 ../src/guestfs-actions.pod:5685
+#: ../src/guestfs-actions.pod:5709 ../src/guestfs-actions.pod:5728
+#: ../src/guestfs-actions.pod:5752 ../src/guestfs-actions.pod:5767
+#: ../src/guestfs-actions.pod:5782 ../src/guestfs-actions.pod:5801
+#: ../src/guestfs-actions.pod:5838 ../src/guestfs-actions.pod:5861
+#: ../src/guestfs-actions.pod:5887 ../src/guestfs-actions.pod:5995
+#: ../src/guestfs-actions.pod:6116 ../src/guestfs-actions.pod:6128
+#: ../src/guestfs-actions.pod:6141 ../src/guestfs-actions.pod:6154
+#: ../src/guestfs-actions.pod:6176 ../src/guestfs-actions.pod:6189
+#: ../src/guestfs-actions.pod:6202 ../src/guestfs-actions.pod:6215
+#: ../src/guestfs-actions.pod:6230 ../src/guestfs-actions.pod:6289
+#: ../src/guestfs-actions.pod:6306 ../src/guestfs-actions.pod:6322
+#: ../src/guestfs-actions.pod:6338 ../src/guestfs-actions.pod:6355
+#: ../src/guestfs-actions.pod:6368 ../src/guestfs-actions.pod:6388
+#: ../src/guestfs-actions.pod:6424 ../src/guestfs-actions.pod:6438
+#: ../src/guestfs-actions.pod:6479 ../src/guestfs-actions.pod:6492
+#: ../src/guestfs-actions.pod:6510 ../src/guestfs-actions.pod:6544
+#: ../src/guestfs-actions.pod:6580 ../src/guestfs-actions.pod:6699
+#: ../src/guestfs-actions.pod:6717 ../src/guestfs-actions.pod:6731
+#: ../src/guestfs-actions.pod:6786 ../src/guestfs-actions.pod:6799
+#: ../src/guestfs-actions.pod:6844 ../src/guestfs-actions.pod:6877
+#: ../src/guestfs-actions.pod:6931 ../src/guestfs-actions.pod:6957
+#: ../src/guestfs-actions.pod:7023 ../src/guestfs-actions.pod:7042
+#: ../src/guestfs-actions.pod:7071
+msgid "This function returns 0 on success or -1 on error."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:32 ../src/guestfs-actions.pod:242
+#: ../src/guestfs-actions.pod:263 ../fish/guestfish-actions.pod:28
+#: ../fish/guestfish-actions.pod:153 ../fish/guestfish-actions.pod:167
+msgid ""
+"This function is deprecated. In new code, use the C<add_drive_opts> call "
+"instead."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:35 ../src/guestfs-actions.pod:245
+#: ../src/guestfs-actions.pod:266 ../src/guestfs-actions.pod:1437
+#: ../src/guestfs-actions.pod:1923 ../src/guestfs-actions.pod:1944
+#: ../src/guestfs-actions.pod:4185 ../src/guestfs-actions.pod:6965
+#: ../src/guestfs-actions.pod:7134 ../fish/guestfish-actions.pod:31
+#: ../fish/guestfish-actions.pod:156 ../fish/guestfish-actions.pod:170
+#: ../fish/guestfish-actions.pod:951 ../fish/guestfish-actions.pod:1308
+#: ../fish/guestfish-actions.pod:1322 ../fish/guestfish-actions.pod:2818
+#: ../fish/guestfish-actions.pod:4620 ../fish/guestfish-actions.pod:4717
+msgid ""
+"Deprecated functions will not be removed from the API, but the fact that "
+"they are deprecated indicates that there are problems with correct use of "
+"these functions."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:39 ../src/guestfs-actions.pod:130
+#: ../src/guestfs-actions.pod:1094 ../src/guestfs-actions.pod:1895
+#: ../src/guestfs-actions.pod:1993 ../src/guestfs-actions.pod:2096
+#: ../src/guestfs-actions.pod:3224 ../src/guestfs-actions.pod:3239
+#: ../src/guestfs-actions.pod:4473 ../src/guestfs-actions.pod:5542
+#: ../src/guestfs-actions.pod:5659 ../src/guestfs-actions.pod:5769
+#: ../src/guestfs-actions.pod:6232 ../src/guestfs-actions.pod:6357
+#: ../src/guestfs-actions.pod:6879
+msgid "(Added in 0.3)"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:41
+msgid "guestfs_add_domain"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:43
+#, no-wrap
+msgid ""
+" int\n"
+" guestfs_add_domain (guestfs_h *g,\n"
+" const char *dom,\n"
+" ...);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:48 ../src/guestfs-actions.pod:139
+#: ../src/guestfs-actions.pod:4199
+msgid ""
+"You may supply a list of optional arguments to this call. Use zero or more "
+"of the following pairs of parameters, and terminate the list with C<-1> on "
+"its own. See L</CALLS WITH OPTIONAL ARGUMENTS>."
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:53
+#, no-wrap
+msgid ""
+" GUESTFS_ADD_DOMAIN_LIBVIRTURI, const char *libvirturi,\n"
+" GUESTFS_ADD_DOMAIN_READONLY, int readonly,\n"
+" GUESTFS_ADD_DOMAIN_IFACE, const char *iface,\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:57
+msgid ""
+"This function adds the disk(s) attached to the named libvirt domain C<dom>. "
+"It works by connecting to libvirt, requesting the domain and domain XML from "
+"libvirt, parsing it for disks, and calling C<guestfs_add_drive_opts> on each "
+"one."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:62 ../fish/guestfish-actions.pod:46
+msgid ""
+"The number of disks added is returned. This operation is atomic: if an "
+"error is returned, then no disks are added."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:65 ../fish/guestfish-actions.pod:49
+msgid ""
+"This function does some minimal checks to make sure the libvirt domain is "
+"not running (unless C<readonly> is true). In a future version we will try "
+"to acquire the libvirt lock on each disk."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:69 ../fish/guestfish-actions.pod:53
+msgid ""
+"Disks must be accessible locally. This often means that adding disks from a "
+"remote libvirt connection (see L<http://libvirt.org/remote.html>) will fail "
+"unless those disks are accessible via the same device path locally too."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:74
+msgid ""
+"The optional C<libvirturi> parameter sets the libvirt URI (see L<http://"
+"libvirt.org/uri.html>). If this is not set then we connect to the default "
+"libvirt URI (or one set through an environment variable, see the libvirt "
+"documentation for full details). If you are using the C API directly then "
+"it is more flexible to create the libvirt connection object yourself, get "
+"the domain object, and call C<guestfs_add_libvirt_dom>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:82
+msgid ""
+"The other optional parameters are passed directly through to "
+"C<guestfs_add_drive_opts>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:85 ../src/guestfs-actions.pod:338
+#: ../src/guestfs-actions.pod:503 ../src/guestfs-actions.pod:681
+#: ../src/guestfs-actions.pod:712 ../src/guestfs-actions.pod:730
+#: ../src/guestfs-actions.pod:749 ../src/guestfs-actions.pod:1309
+#: ../src/guestfs-actions.pod:1663 ../src/guestfs-actions.pod:1866
+#: ../src/guestfs-actions.pod:1965 ../src/guestfs-actions.pod:2005
+#: ../src/guestfs-actions.pod:2060 ../src/guestfs-actions.pod:2083
+#: ../src/guestfs-actions.pod:2374 ../src/guestfs-actions.pod:2662
+#: ../src/guestfs-actions.pod:2683 ../src/guestfs-actions.pod:4609
+#: ../src/guestfs-actions.pod:4737 ../src/guestfs-actions.pod:5143
+#: ../src/guestfs-actions.pod:5169 ../src/guestfs-actions.pod:6465
+#: ../src/guestfs-actions.pod:6890 ../src/guestfs-actions.pod:6903
+#: ../src/guestfs-actions.pod:6916
+msgid "On error this function returns -1."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:87
+msgid "(Added in 1.7.4)"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:89
+msgid "guestfs_add_domain_va"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:91
+#, no-wrap
+msgid ""
+" int\n"
+" guestfs_add_domain_va (guestfs_h *g,\n"
+" const char *dom,\n"
+" va_list args);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:96
+msgid "This is the \"va_list variant\" of L</guestfs_add_domain>."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:98 ../src/guestfs-actions.pod:109
+#: ../src/guestfs-actions.pod:202 ../src/guestfs-actions.pod:213
+#: ../src/guestfs-actions.pod:4236 ../src/guestfs-actions.pod:4248
+msgid "See L</CALLS WITH OPTIONAL ARGUMENTS>."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:100
+msgid "guestfs_add_domain_argv"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:102
+#, no-wrap
+msgid ""
+" int\n"
+" guestfs_add_domain_argv (guestfs_h *g,\n"
+" const char *dom,\n"
+" const struct guestfs_add_domain_argv *optargs);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:107
+msgid "This is the \"argv variant\" of L</guestfs_add_domain>."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:111
+msgid "guestfs_add_drive"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs-actions.pod:113
+#, no-wrap
+msgid ""
+" int\n"
+" guestfs_add_drive (guestfs_h *g,\n"
+" const char *filename);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:117
+msgid ""
+"This function is the equivalent of calling C<guestfs_add_drive_opts> with no "
+"optional parameters, so the disk is added writable, with the format being "
+"detected automatically."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs-actions.pod:121
+msgid ""
+"Automatic detection of the format opens you up to a potential security hole "
+"when dealing with untrusted raw-format images. See CVE-2010-3851 and "
+"RHBZ#642934. Specifying the format closes this security hole. Therefore "
+"you should think about replacing calls to this function with calls to "
+"C<guestfs_add_drive_opts>, and specifying the format."
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs-actions.pod:132
+msgid "guestfs_add_drive_opts"