Version 1.9.11. 1.9.11
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 15 Mar 2011 21:49:53 +0000 (21:49 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Tue, 15 Mar 2011 22:06:46 +0000 (22:06 +0000)
18 files changed:
AUTHORS
BUGS
configure.ac
po-docs/ja.po
po-docs/libguestfs-docs.pot
po/es.po
po/gu.po
po/hi.po
po/kn.po
po/libguestfs.pot
po/ml.po
po/mr.po
po/nl.po
po/or.po
po/pa.po
po/pl.po
po/ta.po
po/te.po

diff --git a/AUTHORS b/AUTHORS
index d0cf17e..68f42ef 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,4 @@
+Angus Salkeld
 Ani Peter
 Charles Duffy
 Daniel Berrange
diff --git a/BUGS b/BUGS
index 509b97d..c1c74c7 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,5 +1,5 @@
 NOTE: This file is automatically generated from "update-bugs.sh".
-Last updated: 2011-03-08 16:20:41
+Last updated: 2011-03-15 22:06:31
 
 This contains a local list of the bugs that are open against
 libguestfs.  Bugs are tracked in the Red Hat Bugzilla database
@@ -20,9 +20,6 @@ When reporting a new bug, please check:
 --------------------------------------------------
 Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.
 
-672491 NEW https://bugzilla.redhat.com/show_bug.cgi?id=672491
-  RFE: guestfs_last_errno should be exposed in perl bindings
-
 672825 NEW https://bugzilla.redhat.com/show_bug.cgi?id=672825
   libguestfs is not aware of the Windows Recovery Console extra partition
 
@@ -32,6 +29,15 @@ Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.
 676020 NEW https://bugzilla.redhat.com/show_bug.cgi?id=676020
   After using virt-resize with an ntfs partition windows is not booting
 
+684486 NEW https://bugzilla.redhat.com/show_bug.cgi?id=684486
+  Guest fails to boot after virt-resize
+
+684980 NEW https://bugzilla.redhat.com/show_bug.cgi?id=684980
+  calling guestfs_kill_subprocess() then guestfs_close() causes a lockup in some applications
+
+685009 NEW https://bugzilla.redhat.com/show_bug.cgi?id=685009
+  Got error when expanding ntfs filesystem
+
 563450 NEW https://bugzilla.redhat.com/show_bug.cgi?id=563450
   list-devices returns devices of different types out of order
 
@@ -146,9 +152,6 @@ Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.
 664558 NEW https://bugzilla.redhat.com/show_bug.cgi?id=664558
   RFE: Allow to set log callback in Ruby bindings
 
-667610 NEW https://bugzilla.redhat.com/show_bug.cgi?id=667610
-  Multiple bugs, memory leaks in libguestfs ruby bindings
-
 677286 NEW https://bugzilla.redhat.com/show_bug.cgi?id=677286
   libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
 
@@ -158,6 +161,9 @@ Bugs in NEW or ASSIGNED state are open and waiting for someone to fix.
 682980 NEW https://bugzilla.redhat.com/show_bug.cgi?id=682980
   libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
 
+672491 ASSIGNED https://bugzilla.redhat.com/show_bug.cgi?id=672491
+  RFE: guestfs_last_errno should be exposed in perl bindings
+
 576879 ASSIGNED https://bugzilla.redhat.com/show_bug.cgi?id=576879
   libguestfs protocol loses synchronization if you 'upload' before mounting disks
 
@@ -327,8 +333,8 @@ You can help by testing the fixes.
 663407 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=663407
   readlink and readlinklist returns /sysroot/ in some paths
 
-682979 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=682979
-  libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
+667610 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=667610
+  Multiple bugs, memory leaks in libguestfs ruby bindings
 
 --------------------------------------------------
 These bugs are in the VERIFIED state.
index cd78875..1aebdbb 100644 (file)
@@ -18,7 +18,7 @@
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
 m4_define([libguestfs_minor],   [9])
-m4_define([libguestfs_release], [10])
+m4_define([libguestfs_release], [11])
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
index 7d15fc1..1c2d62b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
-"POT-Creation-Date: 2011-03-08 16:20+0000\n"
+"POT-Creation-Date: 2011-03-15 21:45+0000\n"
 "PO-Revision-Date: 2010-09-02 14:46+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -924,10 +924,11 @@ msgstr ""
 #: ../src/guestfs.pod:1158 ../src/guestfs.pod:1162 ../src/guestfs.pod:1166
 #: ../src/guestfs.pod:1170 ../src/guestfs.pod:1174 ../src/guestfs.pod:1178
 #: ../src/guestfs.pod:1660 ../src/guestfs.pod:1665 ../src/guestfs.pod:1669
-#: ../src/guestfs.pod:1779 ../src/guestfs.pod:1784 ../src/guestfs.pod:1788
-#: ../src/guestfs.pod:2140 ../src/guestfs.pod:2146 ../src/guestfs.pod:2151
-#: ../src/guestfs.pod:2157 ../src/guestfs.pod:2622 ../src/guestfs.pod:2626
-#: ../src/guestfs.pod:2630 ../src/guestfs.pod:2634
+#: ../src/guestfs.pod:1770 ../src/guestfs.pod:1775 ../src/guestfs.pod:1779
+#: ../src/guestfs.pod:2008 ../src/guestfs.pod:2013 ../src/guestfs.pod:2019
+#: ../src/guestfs.pod:2027 ../src/guestfs.pod:2381 ../src/guestfs.pod:2387
+#: ../src/guestfs.pod:2392 ../src/guestfs.pod:2398 ../src/guestfs.pod:2863
+#: ../src/guestfs.pod:2867 ../src/guestfs.pod:2871 ../src/guestfs.pod:2875
 #: ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22
 #: ../src/guestfs-actions.pod:577 ../src/guestfs-actions.pod:585
 #: ../src/guestfs-actions.pod:592 ../src/guestfs-actions.pod:599
@@ -1101,7 +1102,7 @@ msgstr ""
 # type: =item
 #. type: =item
 #: ../src/guestfs.pod:469 ../src/guestfs.pod:1281 ../src/guestfs.pod:1412
-#: ../src/guestfs.pod:2185
+#: ../src/guestfs.pod:2426
 msgid "1."
 msgstr ""
 
@@ -1123,7 +1124,7 @@ msgstr ""
 # type: =item
 #. type: =item
 #: ../src/guestfs.pod:475 ../src/guestfs.pod:1285 ../src/guestfs.pod:1416
-#: ../src/guestfs.pod:2210
+#: ../src/guestfs.pod:2451
 msgid "2."
 msgstr ""
 
@@ -3753,277 +3754,508 @@ msgstr ""
 msgid "SETTING CALLBACKS TO HANDLE EVENTS"
 msgstr ""
 
-# type: textblock
 #. type: textblock
 #: ../src/guestfs.pod:1686
 msgid ""
-"The child process generates events in some situations.  Current events "
-"include: receiving a log message, the child process exits."
+"B<Note:> This section documents the generic event mechanism introduced in "
+"libguestfs 1.10, which you should use in new code if possible.  The old "
+"functions C<guestfs_set_log_message_callback>, "
+"C<guestfs_set_subprocess_quit_callback>, "
+"C<guestfs_set_launch_done_callback>, C<guestfs_set_close_callback> and "
+"C<guestfs_set_progress_callback> are no longer documented in this manual "
+"page."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1694
+msgid ""
+"Handles generate events when certain things happen, such as log messages "
+"being generated, progress messages during long-running operations, or the "
+"handle being closed.  The API calls described below let you register a "
+"callback to be called when events happen.  You can register multiple "
+"callbacks (for the same, different or overlapping sets of events), and "
+"individually remove callbacks.  If callbacks are not removed, then they "
+"remain in force until the handle is closed."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1702
+msgid ""
+"In the current implementation, events are only generated synchronously: that "
+"means that events (and hence callbacks) can only happen while you are in the "
+"middle of making another libguestfs call.  The callback is called in the "
+"same thread."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1707
+msgid ""
+"Events may contain a payload, usually nothing (void), an array of 64 bit "
+"unsigned integers, or a message buffer.  Payloads are discussed later on."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1711
+msgid "CLASSES OF EVENTS"
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1715
+msgid "GUESTFS_EVENT_CLOSE (payload type: void)"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1689
+#: ../src/guestfs.pod:1718
 msgid ""
-"Use the C<guestfs_set_*_callback> functions to set a callback for different "
-"types of events."
+"The callback function will be called while the handle is being closed "
+"(synchronously from L</guestfs_close>)."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1692
+#: ../src/guestfs.pod:1721
 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>."
+"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
-#. type: =head2
-#: ../src/guestfs.pod:1697
-msgid "guestfs_set_log_message_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1728
+msgid ""
+"If no callback is registered: the handle is closed without any callback "
+"being invoked."
 msgstr ""
 
-# type: verbatim
-#. type: verbatim
-#: ../src/guestfs.pod:1699
-#, no-wrap
+#. type: =item
+#: ../src/guestfs.pod:1731
+msgid "GUESTFS_EVENT_SUBPROCESS_QUIT (payload type: void)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1734
 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"
+"The callback function 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: textblock
+#: ../src/guestfs.pod:1738 ../src/guestfs.pod:1747
+msgid "If no callback is registered: the event is ignored."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1740
+msgid "GUESTFS_EVENT_LAUNCH_DONE (payload type: void)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1743
+msgid ""
+"The callback function 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: =item
+#: ../src/guestfs.pod:1749
+msgid "GUESTFS_EVENT_PROGRESS (payload type: array of 4 x uint64_t)"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1705
+#: ../src/guestfs.pod:1752
+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:1758
 msgid ""
-"The callback function C<cb> will be called whenever qemu or the guest writes "
-"anything to the console."
+"The callback receives in the payload four unsigned 64 bit numbers which are "
+"(in order): C<proc_nr>, C<serial>, C<position>, C<total>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1761
+msgid ""
+"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
 #. type: textblock
-#: ../src/guestfs.pod:1708
-msgid "Use this function to capture kernel messages and similar."
+#: ../src/guestfs.pod:1766
+msgid "The only defined and stable parts of the API are:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1710
+#: ../src/guestfs.pod:1772
 msgid ""
-"Normally there is no log message handler, and log messages are just "
-"discarded."
+"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: =head2
-#. type: =head2
-#: ../src/guestfs.pod:1713
-msgid "guestfs_set_subprocess_quit_callback"
+# type: textblock
+#. type: textblock
+#: ../src/guestfs.pod:1777
+msgid "0 E<lt>= C<position> E<lt>= C<total>"
 msgstr ""
 
-# type: verbatim
-#. type: verbatim
-#: ../src/guestfs.pod:1715
-#, no-wrap
+# type: textblock
+#. type: textblock
+#: ../src/guestfs.pod:1781
 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"
+"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
 #. type: textblock
-#: ../src/guestfs.pod:1720
+#: ../src/guestfs.pod:1784
 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)."
+"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: =head2
-#. type: =head2
-#: ../src/guestfs.pod:1725
-msgid "guestfs_set_launch_done_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1790
+msgid ""
+"The callback also receives the procedure number (C<proc_nr>) and serial "
+"number (C<serial>) 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: verbatim
-#. type: verbatim
-#: ../src/guestfs.pod:1727
-#, no-wrap
+#. type: textblock
+#: ../src/guestfs.pod:1796
+msgid "If no callback is registered: progress messages are discarded."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1798
+msgid "GUESTFS_EVENT_APPLIANCE (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1801
 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"
+"The callback function is called whenever a log message is generated by qemu, "
+"the appliance kernel, guestfsd (daemon), or utility programs."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1732
+#: ../src/guestfs.pod:1804
 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)."
+"If the verbose flag (L</guestfs_set_verbose>) is set before launch (L</"
+"guestfs_launch>) then additional debug messages are generated."
 msgstr ""
 
-# type: =head2
-#. type: =head2
-#: ../src/guestfs.pod:1736
-msgid "guestfs_set_close_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1807 ../src/guestfs.pod:1821
+msgid ""
+"If no callback is registered: the messages are discarded unless the verbose "
+"flag is set in which case they are sent to stderr.  You can override the "
+"printing of verbose messages to stderr by setting up a callback."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1812
+msgid "GUESTFS_EVENT_LIBRARY (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1815
+msgid ""
+"The callback function is called whenever a log message is generated by the "
+"library part of libguestfs."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1818
+msgid ""
+"If the verbose flag (L</guestfs_set_verbose>) is set then additional debug "
+"messages are generated."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1826
+msgid "GUESTFS_EVENT_TRACE (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1829
+msgid ""
+"The callback function is called whenever a trace message is generated.  This "
+"only applies if the trace flag (L</guestfs_set_trace>) is set."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1832
+msgid ""
+"If no callback is registered: the messages are sent to stderr.  You can "
+"override the printing of trace messages to stderr by setting up a callback."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1838
+msgid "guestfs_set_event_callback"
 msgstr ""
 
-# type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1738
+#: ../src/guestfs.pod:1840
 #, 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"
+" int guestfs_set_event_callback (guestfs_h *g,\n"
+"                                 guestfs_event_callback cb,\n"
+"                                 uint64_t event_bitmask,\n"
+"                                 int flags,\n"
+"                                 void *opaque);\n"
 "\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1743
+#: ../src/guestfs.pod:1846
 msgid ""
-"The callback function C<cb> will be called while the handle is being closed "
-"(synchronously from L</guestfs_close>)."
+"This function registers a callback (C<cb>) for all event classes in the "
+"C<event_bitmask>."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1746
+#: ../src/guestfs.pod:1849
 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)."
+"For example, to register for all log message events, you could call this "
+"function with the bitmask C<GUESTFS_EVENT_APPLIANCE|GUESTFS_EVENT_LIBRARY>.  "
+"To register a single callback for all possible classes of events, use "
+"C<GUESTFS_EVENT_ALL>."
 msgstr ""
 
-# type: =head2
-#. type: =head2
-#: ../src/guestfs.pod:1754
-msgid "guestfs_set_progress_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1855
+msgid "C<flags> should always be passed as 0."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1857
+msgid ""
+"C<opaque> is an opaque pointer which is passed to the callback.  You can use "
+"it for any purpose."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1860
+msgid ""
+"The return value is the event handle (an integer) which you can use to "
+"delete the callback (see below)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1863
+msgid ""
+"If there is an error, this function returns C<-1>, and sets the error in the "
+"handle in the usual way (see L</guestfs_last_error> etc.)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1866
+msgid ""
+"Callbacks remain in effect until they are deleted, or until the handle is "
+"closed."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1869
+msgid ""
+"In the case where multiple callbacks are registered for a particular event "
+"class, all of the callbacks are called.  The order in which multiple "
+"callbacks are called is not defined."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1873
+msgid "guestfs_delete_event_callback"
 msgstr ""
 
-# type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1756
+#: ../src/guestfs.pod:1875
 #, 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"
+" void guestfs_delete_event_callback (guestfs_h *g, int event_handle);\n"
 "\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1763
+#: ../src/guestfs.pod:1877
 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)."
+"Delete a callback that was previously registered.  C<event_handle> should be "
+"the integer that was returned by a previous call to "
+"C<guestfs_set_event_callback> on the same handle."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1881
+msgid "guestfs_event_callback"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1883
+#, no-wrap
+msgid ""
+" typedef void (*guestfs_event_callback) (\n"
+"                  guestfs_h *g,\n"
+"                  void *opaque,\n"
+"                  uint64_t event,\n"
+"                  int event_handle,\n"
+"                  int flags,\n"
+"                  const char *buf, size_t buf_len,\n"
+"                  const uint64_t *array, size_t array_len);\n"
+"\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1769
+#: ../src/guestfs.pod:1892
 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."
+"This is the type of the event callback function that you have to provide."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1775
-msgid "The only defined and stable parts of the API are:"
+#: ../src/guestfs.pod:1895
+msgid ""
+"The basic parameters are: the handle (C<g>), the opaque user pointer "
+"(C<opaque>), the event class (eg. C<GUESTFS_EVENT_PROGRESS>), the event "
+"handle, and C<flags> which in the current API you should ignore."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1781
+#: ../src/guestfs.pod:1899
 msgid ""
-"The callback can display to the user some type of progress bar or indicator "
-"which shows the ratio of C<position>:C<total>."
+"The remaining parameters contain the event payload (if any).  Each event may "
+"contain a payload, which usually relates to the event class, but for future "
+"proofing your code should be written to handle any payload for any event "
+"class."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1786
-msgid "0 E<lt>= C<position> E<lt>= C<total>"
+#: ../src/guestfs.pod:1904
+msgid ""
+"C<buf> and C<buf_len> contain a message buffer (if C<buf_len == 0>, then "
+"there is no message buffer).  Note that this message buffer can contain "
+"arbitrary 8 bit data, including NUL bytes."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1790
+#: ../src/guestfs.pod:1908
 msgid ""
-"If any progress notification is sent during a call, then a final progress "
-"notification is always sent when C<position> = C<total>."
+"C<array> and C<array_len> is an array of 64 bit unsigned integers.  At the "
+"moment this is only used for progress messages."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1911
+msgid "EXAMPLE: CAPTURING LOG MESSAGES"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1793
+#: ../src/guestfs.pod:1913
 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."
+"One motivation for the generic event API was to allow GUI programs to "
+"capture debug and other messages.  In libguestfs E<le> 1.8 these were sent "
+"unconditionally to C<stderr>."
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1799
+#: ../src/guestfs.pod:1917
 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."
+"Events associated with log messages are: C<GUESTFS_EVENT_LIBRARY>, "
+"C<GUESTFS_EVENT_APPLIANCE> and C<GUESTFS_EVENT_TRACE>.  (Note that error "
+"messages are not events; you must capture error messages separately)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1922
+msgid ""
+"Programs have to set up a callback to capture the classes of events of "
+"interest:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1925
+#, no-wrap
+msgid ""
+" int eh =\n"
+"   guestfs_set_event_callback\n"
+"     (g, message_callback,\n"
+"      GUESTFS_EVENT_LIBRARY|GUESTFS_EVENT_APPLIANCE|\n"
+"      GUESTFS_EVENT_TRACE,\n"
+"      0, NULL) == -1)\n"
+" if (eh == -1) {\n"
+"   // handle error in the usual way\n"
+" }\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1935
+msgid ""
+"The callback can then direct messages to the appropriate place.  In this "
+"example, messages are directed to syslog:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1938
+#, no-wrap
+msgid ""
+" static void\n"
+" message_callback (\n"
+"         guestfs_h *g,\n"
+"         void *opaque,\n"
+"         uint64_t event,\n"
+"         int event_handle,\n"
+"         int flags,\n"
+"         const char *buf, size_t buf_len,\n"
+"         const uint64_t *array, size_t array_len)\n"
+" {\n"
+"   const int priority = LOG_USER|LOG_INFO;\n"
+"   if (buf_len > 0)\n"
+"     syslog (priority, \"event 0x%lx: %s\", event, buf);\n"
+" }\n"
+"\n"
 msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:1804
+#: ../src/guestfs.pod:1953
 msgid "PRIVATE DATA AREA"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1806
+#: ../src/guestfs.pod:1955
 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."
+"You can attach named pieces of private data to the libguestfs handle, fetch "
+"them by name, and walk over them, for the lifetime of the handle.  This is "
+"called the private data area and is only available from the C API."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1810
+#: ../src/guestfs.pod:1960
 msgid "To attach a named piece of data, use the following call:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1812
+#: ../src/guestfs.pod:1962
 #, no-wrap
 msgid ""
 " void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
@@ -4032,7 +4264,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1814
+#: ../src/guestfs.pod:1964
 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 "
@@ -4041,7 +4273,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1818
+#: ../src/guestfs.pod:1968
 msgid ""
 "You can use any C<key> you want, but names beginning with an underscore "
 "character are reserved for internal libguestfs purposes (for implementing "
@@ -4051,13 +4283,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1823
+#: ../src/guestfs.pod:1973
 msgid "To retrieve the pointer, use:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1825
+#: ../src/guestfs.pod:1975
 #, no-wrap
 msgid ""
 " void *guestfs_get_private (guestfs_h *g, const char *key);\n"
@@ -4066,43 +4298,198 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1827
+#: ../src/guestfs.pod:1977
 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
 #. type: textblock
-#: ../src/guestfs.pod:1831
+#: ../src/guestfs.pod:1981
 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)."
+"do it (see L</GUESTFS_EVENT_CLOSE>)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1988
+msgid "To walk over all entries, use these two functions:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1990
+#, no-wrap
+msgid ""
+" void *guestfs_first_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1992
+#, no-wrap
+msgid ""
+" void *guestfs_next_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1994
+msgid ""
+"C<guestfs_first_private> returns the first key, pointer pair (\"first\" does "
+"not have any particular meaning -- keys are not returned in any defined "
+"order).  A pointer to the key is returned in C<*key_rtn> and the "
+"corresponding data pointer is returned from the function.  C<NULL> is "
+"returned if there are no keys stored in the handle."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2000
+msgid ""
+"C<guestfs_next_private> returns the next key, pointer pair.  The return "
+"value of this function is also C<NULL> is there are no further entries to "
+"return."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2004
+msgid "Notes about walking over entries:"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2010
+msgid ""
+"You must not call C<guestfs_set_private> while walking over the entries."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2015
+msgid ""
+"The handle maintains an internal iterator which is reset when you call "
+"C<guestfs_first_private>.  This internal iterator is invalidated when you "
+"call C<guestfs_set_private>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2021
+msgid "If you have set the data pointer associated with a key to C<NULL>, ie:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2023
+#, no-wrap
+msgid ""
+" guestfs_set_private (g, key, NULL);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2025
+msgid "then that C<key> is not returned when walking."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2029
+msgid ""
+"C<*key_rtn> is only valid until the next call to C<guestfs_first_private>, "
+"C<guestfs_next_private> or C<guestfs_set_private>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2035
+msgid ""
+"The following example code shows how to print all keys and data pointers "
+"that are associated with the handle C<g>:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2038
+#, no-wrap
+msgid ""
+" const char *key;\n"
+" void *data = guestfs_first_private (g, &key);\n"
+" while (data != NULL)\n"
+"   {\n"
+"     printf (\"key = %s, data = %p\\n\", key, data);\n"
+"     data = guestfs_next_private (g, &key);\n"
+"   }\n"
+"\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1839
+#: ../src/guestfs.pod:2046
+msgid ""
+"More commonly you are only interested in keys that begin with an application-"
+"specific prefix C<foo_>.  Modify the loop like so:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2049
+#, no-wrap
 msgid ""
-"The private data area is implemented using a hash table, and should be "
-"reasonably efficient for moderate numbers of keys."
+" const char *key;\n"
+" void *data = guestfs_first_private (g, &key);\n"
+" while (data != NULL)\n"
+"   {\n"
+"     if (strncmp (key, \"foo_\", strlen (\"foo_\")) == 0)\n"
+"       printf (\"key = %s, data = %p\\n\", key, data);\n"
+"     data = guestfs_next_private (g, &key);\n"
+"   }\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2058
+msgid ""
+"If you need to modify keys while walking, then you have to jump back to the "
+"beginning of the loop.  For example, to delete all keys prefixed with "
+"C<foo_>:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2062
+#, no-wrap
+msgid ""
+"  const char *key;\n"
+"  void *data;\n"
+" again:\n"
+"  data = guestfs_first_private (g, &key);\n"
+"  while (data != NULL)\n"
+"    {\n"
+"      if (strncmp (key, \"foo_\", strlen (\"foo_\")) == 0)\n"
+"        {\n"
+"          guestfs_set_private (g, key, NULL);\n"
+"          /* note that 'key' pointer is now invalid, and so is\n"
+"             the internal iterator */\n"
+"          goto again;\n"
+"        }\n"
+"      data = guestfs_next_private (g, &key);\n"
+"    }\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2078
+msgid ""
+"Note that the above loop is guaranteed to terminate because the keys are "
+"being deleted, but other manipulations of keys within the loop might not "
+"terminate unless you also maintain an indication of which keys have been "
+"visited."
 msgstr ""
 
 # type: =end
 #. type: =end
-#: ../src/guestfs.pod:1842 ../src/guestfs.pod:1847
+#: ../src/guestfs.pod:2083 ../src/guestfs.pod:2088
 msgid "html"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1844
+#: ../src/guestfs.pod:2085
 msgid ""
 "<!-- old anchor for the next section --> <a name="
 "\"state_machine_and_low_level_event_api\"/>"
@@ -4110,13 +4497,13 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:1849
+#: ../src/guestfs.pod:2090
 msgid "ARCHITECTURE"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1851
+#: ../src/guestfs.pod:2092
 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 "
@@ -4125,7 +4512,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1855
+#: ../src/guestfs.pod:2096
 #, no-wrap
 msgid ""
 "  ___________________\n"
@@ -4152,7 +4539,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1875
+#: ../src/guestfs.pod:2116
 msgid ""
 "The library, linked to the main program, creates the child process and hence "
 "the appliance in the L</guestfs_launch> function."
@@ -4160,7 +4547,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1878
+#: ../src/guestfs.pod:2119
 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 "
@@ -4173,7 +4560,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1887
+#: ../src/guestfs.pod:2128
 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 "
@@ -4185,19 +4572,19 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:1894
+#: ../src/guestfs.pod:2135
 msgid "STATE MACHINE"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1896
+#: ../src/guestfs.pod:2137
 msgid "libguestfs uses a state machine to model the child process:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1898
+#: ../src/guestfs.pod:2139
 #, no-wrap
 msgid ""
 "                         |\n"
@@ -4226,7 +4613,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1920
+#: ../src/guestfs.pod:2161
 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), "
@@ -4236,7 +4623,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1925
+#: ../src/guestfs.pod:2166
 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 "
@@ -4245,7 +4632,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1929
+#: ../src/guestfs.pod:2170
 msgid ""
 "Configuration commands for qemu such as L</guestfs_add_drive> can only be "
 "issued when in the CONFIG state."
@@ -4253,7 +4640,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1932
+#: ../src/guestfs.pod:2173
 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 "
@@ -4263,7 +4650,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1938
+#: ../src/guestfs.pod:2179
 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. "
@@ -4274,7 +4661,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1944
+#: ../src/guestfs.pod:2185
 msgid ""
 "Finally, the child process sends asynchronous messages back to the main "
 "program, such as kernel log messages.  You can register a callback to "
@@ -4283,19 +4670,19 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:1948
+#: ../src/guestfs.pod:2189
 msgid "INTERNALS"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs.pod:1950
+#: ../src/guestfs.pod:2191
 msgid "COMMUNICATION PROTOCOL"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1952
+#: ../src/guestfs.pod:2193
 msgid ""
 "Don't rely on using this protocol directly.  This section documents how it "
 "currently works, but it may change at any time."
@@ -4303,7 +4690,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1955
+#: ../src/guestfs.pod:2196
 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 "
@@ -4312,7 +4699,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1959
+#: ../src/guestfs.pod:2200
 msgid ""
 "The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
 "this file is automatically generated)."
@@ -4320,7 +4707,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1962
+#: ../src/guestfs.pod:2203
 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 "
@@ -4331,19 +4718,19 @@ msgstr ""
 
 # type: =head3
 #. type: =head3
-#: ../src/guestfs.pod:1969
+#: ../src/guestfs.pod:2210
 msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1971
+#: ../src/guestfs.pod:2212
 msgid "For ordinary functions, the request message is:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:1973
+#: ../src/guestfs.pod:2214
 #, no-wrap
 msgid ""
 " total length (header + arguments,\n"
@@ -4355,7 +4742,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1978
+#: ../src/guestfs.pod:2219
 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 "
@@ -4365,7 +4752,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1984
+#: ../src/guestfs.pod:2225
 msgid ""
 "Note also that many functions don't take any arguments, in which case the "
 "C<guestfs_I<foo>_args> is completely omitted."
@@ -4373,7 +4760,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1987
+#: ../src/guestfs.pod:2228
 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."
@@ -4381,7 +4768,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1991
+#: ../src/guestfs.pod:2232
 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 "
@@ -4394,13 +4781,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:1999
+#: ../src/guestfs.pod:2240
 msgid "The reply message for ordinary functions is:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2001
+#: ../src/guestfs.pod:2242
 #, no-wrap
 msgid ""
 " total length (header + ret,\n"
@@ -4412,7 +4799,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2006
+#: ../src/guestfs.pod:2247
 msgid ""
 "As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
 "functions that return no formal return values."
@@ -4420,14 +4807,14 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2009
+#: ../src/guestfs.pod:2250
 msgid ""
 "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2012
+#: ../src/guestfs.pod:2253
 msgid ""
 "In the case of an error, a flag is set in the header, and the reply message "
 "is slightly changed:"
@@ -4435,7 +4822,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2015
+#: ../src/guestfs.pod:2256
 #, no-wrap
 msgid ""
 " total length (header + error,\n"
@@ -4447,7 +4834,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2020
+#: ../src/guestfs.pod:2261
 msgid ""
 "The C<guestfs_message_error> structure contains the error message as a "
 "string."
@@ -4455,13 +4842,13 @@ msgstr ""
 
 # type: =head3
 #. type: =head3
-#: ../src/guestfs.pod:2023
+#: ../src/guestfs.pod:2264
 msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2025
+#: ../src/guestfs.pod:2266
 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 "
@@ -4470,7 +4857,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2029
+#: ../src/guestfs.pod:2270
 #, no-wrap
 msgid ""
 " total length (header + arguments,\n"
@@ -4485,13 +4872,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2037
+#: ../src/guestfs.pod:2278
 msgid "The \"sequence of chunks\" is:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2039
+#: ../src/guestfs.pod:2280
 #, no-wrap
 msgid ""
 " length of chunk (not including length word itself)\n"
@@ -4506,7 +4893,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2047
+#: ../src/guestfs.pod:2288
 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 "
@@ -4515,7 +4902,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2051
+#: ../src/guestfs.pod:2292
 msgid ""
 "At time of writing there are no functions that have more than one FileIn "
 "parameter.  However this is (theoretically) supported, by sending the "
@@ -4525,7 +4912,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2056
+#: ../src/guestfs.pod:2297
 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 "
@@ -4535,7 +4922,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2062
+#: ../src/guestfs.pod:2303
 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 "
@@ -4548,7 +4935,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2071
+#: ../src/guestfs.pod:2312
 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 "
@@ -4559,13 +4946,13 @@ msgstr ""
 
 # type: =head3
 #. type: =head3
-#: ../src/guestfs.pod:2077
+#: ../src/guestfs.pod:2318
 msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2079
+#: ../src/guestfs.pod:2320
 msgid ""
 "The protocol for FileOut parameters is exactly the same as for FileIn "
 "parameters, but with the roles of daemon and library reversed."
@@ -4573,7 +4960,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2082
+#: ../src/guestfs.pod:2323
 #, no-wrap
 msgid ""
 " total length (header + ret,\n"
@@ -4588,13 +4975,13 @@ msgstr ""
 
 # type: =head3
 #. type: =head3
-#: ../src/guestfs.pod:2090
+#: ../src/guestfs.pod:2331
 msgid "INITIAL MESSAGE"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2092
+#: ../src/guestfs.pod:2333
 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</"
@@ -4603,31 +4990,30 @@ msgstr ""
 
 # type: =head3
 #. type: =head3
-#: ../src/guestfs.pod:2096
+#: ../src/guestfs.pod:2337
 msgid "PROGRESS NOTIFICATION MESSAGES"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2098
+#: ../src/guestfs.pod:2339
 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
 #. type: textblock
-#: ../src/guestfs.pod:2102
+#: ../src/guestfs.pod:2343
 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."
+"The library turns them into progress callbacks (see L</"
+"GUESTFS_EVENT_PROGRESS>) if there is a callback registered, or discards them "
+"if not."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2106
+#: ../src/guestfs.pod:2347
 msgid ""
 "The daemon self-limits the frequency of progress messages it sends (see "
 "C<daemon/proto.c:notify_progress>).  Not all calls generate progress "
@@ -4636,13 +5022,13 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2110
+#: ../src/guestfs.pod:2351
 msgid "LIBGUESTFS VERSION NUMBERS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2112
+#: ../src/guestfs.pod:2353
 msgid ""
 "Since April 2010, libguestfs has started to make separate development and "
 "stable releases, along with corresponding branches in our git repository.  "
@@ -4651,7 +5037,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2117
+#: ../src/guestfs.pod:2358
 #, no-wrap
 msgid ""
 "                 even numbers for stable: 1.2.x, 1.4.x, ...\n"
@@ -4669,13 +5055,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2128
+#: ../src/guestfs.pod:2369
 msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2130
+#: ../src/guestfs.pod:2371
 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 "
@@ -4686,13 +5072,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2136
+#: ../src/guestfs.pod:2377
 msgid "Our criteria for backporting changes are:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2142
+#: ../src/guestfs.pod:2383
 msgid ""
 "Documentation changes which don't affect any code are backported unless the "
 "documentation refers to a future feature which is not in stable."
@@ -4700,7 +5086,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2148
+#: ../src/guestfs.pod:2389
 msgid ""
 "Bug fixes which are not controversial, fix obvious problems, and have been "
 "well tested are backported."
@@ -4708,7 +5094,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2153
+#: ../src/guestfs.pod:2394
 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 "
@@ -4717,7 +5103,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2159
+#: ../src/guestfs.pod:2400
 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 "
@@ -4726,7 +5112,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2165
+#: ../src/guestfs.pod:2406
 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 "
@@ -4737,17 +5123,17 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2173
+#: ../src/guestfs.pod:2414
 msgid "EXTENDING LIBGUESTFS"
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2175
+#: ../src/guestfs.pod:2416
 msgid "ADDING A NEW API ACTION"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2177
+#: ../src/guestfs.pod:2418
 msgid ""
 "Large amounts of boilerplate code in libguestfs (RPC, bindings, "
 "documentation) are generated, and this makes it easy to extend the "
@@ -4755,19 +5141,19 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2181
+#: ../src/guestfs.pod:2422
 msgid "To add a new API action there are two changes:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2187
+#: ../src/guestfs.pod:2428
 msgid ""
 "You need to add a description of the call (name, parameters, return type, "
 "tests, documentation) to C<generator/generator_actions.ml>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2190
+#: ../src/guestfs.pod:2431
 msgid ""
 "There are two sorts of API action, depending on whether the call goes "
 "through to the daemon in the appliance, or is serviced entirely by the "
@@ -4778,7 +5164,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2198
+#: ../src/guestfs.pod:2439
 msgid ""
 "Most new actions are of the first type, and get added to the "
 "C<daemon_functions> list.  Each function has a unique procedure number used "
@@ -4788,7 +5174,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2204
+#: ../src/guestfs.pod:2445
 msgid ""
 "For library-only actions of the second type, add to the "
 "C<non_daemon_functions> list.  Since these functions are serviced by the "
@@ -4798,36 +5184,36 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2212
+#: ../src/guestfs.pod:2453
 msgid "Implement the action (in C):"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2214
+#: ../src/guestfs.pod:2455
 msgid ""
 "For daemon actions, implement the function C<do_E<lt>nameE<gt>> in the "
 "C<daemon/> directory."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2217
+#: ../src/guestfs.pod:2458
 msgid ""
 "For library actions, implement the function C<guestfs__E<lt>nameE<gt>> "
 "(note: double underscore) in the C<src/> directory."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2220
+#: ../src/guestfs.pod:2461
 msgid "In either case, use another function as an example of what to do."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2224
+#: ../src/guestfs.pod:2465
 msgid "After making these changes, use C<make> to compile."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2226
+#: ../src/guestfs.pod:2467
 msgid ""
 "Note that you don't need to implement the RPC, language bindings, manual "
 "pages or anything else.  It's all automatically generated from the OCaml "
@@ -4835,12 +5221,12 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2230
+#: ../src/guestfs.pod:2471
 msgid "ADDING TESTS FOR AN API ACTION"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2232
+#: ../src/guestfs.pod:2473
 msgid ""
 "You can supply zero or as many tests as you want per API call.  The tests "
 "can either be added as part of the API description (C<generator/"
@@ -4850,61 +5236,61 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2238
+#: ../src/guestfs.pod:2479
 msgid ""
 "The following describes the test environment used when you add an API test "
 "in C<generator_actions.ml>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2241
+#: ../src/guestfs.pod:2482
 msgid "The test environment has 4 block devices:"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2245
+#: ../src/guestfs.pod:2486
 msgid "C</dev/sda> 500MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2247
+#: ../src/guestfs.pod:2488
 msgid "General block device for testing."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2249
+#: ../src/guestfs.pod:2490
 msgid "C</dev/sdb> 50MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2251
+#: ../src/guestfs.pod:2492
 msgid ""
 "C</dev/sdb1> is an ext2 filesystem used for testing filesystem write "
 "operations."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2254
+#: ../src/guestfs.pod:2495
 msgid "C</dev/sdc> 10MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2256
+#: ../src/guestfs.pod:2497
 msgid "Used in a few tests where two block devices are needed."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2258
+#: ../src/guestfs.pod:2499
 msgid "C</dev/sdd>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2260
+#: ../src/guestfs.pod:2501
 msgid "ISO with fixed content (see C<images/test.iso>)."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2264
+#: ../src/guestfs.pod:2505
 msgid ""
 "To be able to run the tests in a reasonable amount of time, the libguestfs "
 "appliance and block devices are reused between tests.  So don't try testing "
@@ -4912,7 +5298,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2268
+#: ../src/guestfs.pod:2509
 msgid ""
 "Each test starts with an initial scenario, selected using one of the "
 "C<Init*> expressions, described in C<generator/generator_types.ml>.  These "
@@ -4922,7 +5308,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2274
+#: ../src/guestfs.pod:2515
 msgid ""
 "You can add a prerequisite clause to any individual test.  This is a run-"
 "time check, which, if it fails, causes the test to be skipped.  Useful if "
@@ -4932,14 +5318,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2280
+#: ../src/guestfs.pod:2521
 msgid ""
 "In addition, packagers can skip individual tests by setting environment "
 "variables before running C<make check>."
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2283
+#: ../src/guestfs.pod:2524
 #, no-wrap
 msgid ""
 " SKIP_TEST_<CMD>_<NUM>=1\n"
@@ -4947,17 +5333,17 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2285
+#: ../src/guestfs.pod:2526
 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2287
+#: ../src/guestfs.pod:2528
 msgid "or:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2289
+#: ../src/guestfs.pod:2530
 #, no-wrap
 msgid ""
 " SKIP_TEST_<CMD>=1\n"
@@ -4965,17 +5351,17 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2291
+#: ../src/guestfs.pod:2532
 msgid "eg: C<SKIP_TEST_ZEROFREE=1> skips all L</guestfs_zerofree> tests."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2293
+#: ../src/guestfs.pod:2534
 msgid "Packagers can run only certain tests by setting for example:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2295
+#: ../src/guestfs.pod:2536
 #, no-wrap
 msgid ""
 " TEST_ONLY=\"vfs_type zerofree\"\n"
@@ -4983,29 +5369,29 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2297
+#: ../src/guestfs.pod:2538
 msgid ""
 "See C<capitests/tests.c> for more details of how these environment variables "
 "work."
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2300
+#: ../src/guestfs.pod:2541
 msgid "DEBUGGING NEW API ACTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2302
+#: ../src/guestfs.pod:2543
 msgid "Test new actions work before submitting them."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2304
+#: ../src/guestfs.pod:2545
 msgid "You can use guestfish to try out new commands."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2306
+#: ../src/guestfs.pod:2547
 msgid ""
 "Debugging the daemon is a problem because it runs inside a minimal "
 "environment.  However you can fprintf messages in the daemon to stderr, and "
@@ -5013,12 +5399,12 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2310
+#: ../src/guestfs.pod:2551
 msgid "FORMATTING CODE AND OTHER CONVENTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2312
+#: ../src/guestfs.pod:2553
 msgid ""
 "Our C source code generally adheres to some basic code-formatting "
 "conventions.  The existing code base is not totally consistent on this "
@@ -5028,14 +5414,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2318
+#: ../src/guestfs.pod:2559
 msgid ""
 "If you use Emacs, add the following to one of one of your start-up files (e."
 "g., ~/.emacs), to help ensure that you get indentation right:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2321
+#: ../src/guestfs.pod:2562
 #, no-wrap
 msgid ""
 " ;;; In libguestfs, indent with spaces everywhere (not TABs).\n"
@@ -5051,7 +5437,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2331
+#: ../src/guestfs.pod:2572
 #, no-wrap
 msgid ""
 " ;;; When editing C sources in libguestfs, use this style.\n"
@@ -5069,12 +5455,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2343
+#: ../src/guestfs.pod:2584
 msgid "Enable warnings when compiling (and fix any problems this finds):"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2346
+#: ../src/guestfs.pod:2587
 #, no-wrap
 msgid ""
 " ./configure --enable-gcc-warnings\n"
@@ -5082,12 +5468,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2348
+#: ../src/guestfs.pod:2589
 msgid "Useful targets are:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2350
+#: ../src/guestfs.pod:2591
 #, no-wrap
 msgid ""
 " make syntax-check  # checks the syntax of the C code\n"
@@ -5096,36 +5482,36 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2353
+#: ../src/guestfs.pod:2594
 msgid "DAEMON CUSTOM PRINTF FORMATTERS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2355
+#: ../src/guestfs.pod:2596
 msgid ""
 "In the daemon code we have created custom printf formatters C<%Q> and C<%R>, "
 "which are used to do shell quoting."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2360
+#: ../src/guestfs.pod:2601
 msgid "%Q"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2362
+#: ../src/guestfs.pod:2603
 msgid ""
 "Simple shell quoted string.  Any spaces or other shell characters are "
 "escaped for you."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2365
+#: ../src/guestfs.pod:2606
 msgid "%R"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2367
+#: ../src/guestfs.pod:2608
 msgid ""
 "Same as C<%Q> except the string is treated as a path which is prefixed by "
 "the sysroot."
@@ -5133,12 +5519,12 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2372 ../fish/guestfish.pod:240 ../fish/guestfish.pod:599
+#: ../src/guestfs.pod:2613 ../fish/guestfish.pod:240 ../fish/guestfish.pod:599
 msgid "For example:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2374
+#: ../src/guestfs.pod:2615
 #, no-wrap
 msgid ""
 " asprintf (&cmd, \"cat %R\", path);\n"
@@ -5146,12 +5532,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2376
+#: ../src/guestfs.pod:2617
 msgid "would produce C<cat /sysroot/some\\ path\\ with\\ spaces>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2378
+#: ../src/guestfs.pod:2619
 msgid ""
 "I<Note:> Do I<not> use these when you are passing parameters to the C<command"
 "{,r,v,rv}()> functions.  These parameters do NOT need to be quoted because "
@@ -5160,29 +5546,29 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2384
+#: ../src/guestfs.pod:2625
 msgid "SUBMITTING YOUR NEW API ACTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2386
+#: ../src/guestfs.pod:2627
 msgid ""
 "Submit patches to the mailing list: L<http://www.redhat.com/mailman/listinfo/"
 "libguestfs> and CC to L<rjones@redhat.com>."
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2390
+#: ../src/guestfs.pod:2631
 msgid "INTERNATIONALIZATION (I18N) SUPPORT"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2392
+#: ../src/guestfs.pod:2633
 msgid "We support i18n (gettext anyhow) in the library."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2394
+#: ../src/guestfs.pod:2635
 msgid ""
 "However many messages come from the daemon, and we don't translate those at "
 "the moment.  One reason is that the appliance generally has all locale files "
@@ -5191,98 +5577,98 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2400
+#: ../src/guestfs.pod:2641
 msgid ""
 "Debugging messages are never translated, since they are intended for the "
 "programmers."
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2403
+#: ../src/guestfs.pod:2644
 msgid "SOURCE CODE SUBDIRECTORIES"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2407 ../src/guestfs-actions.pod:5686
+#: ../src/guestfs.pod:2648 ../src/guestfs-actions.pod:5686
 #: ../fish/guestfish-actions.pod:3808
 msgid "C<appliance>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2409
+#: ../src/guestfs.pod:2650
 msgid "The libguestfs appliance, build scripts and so on."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2411
+#: ../src/guestfs.pod:2652
 msgid "C<capitests>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2413
+#: ../src/guestfs.pod:2654
 msgid "Automated tests of the C API."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2415
+#: ../src/guestfs.pod:2656
 msgid "C<cat>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2417
+#: ../src/guestfs.pod:2658
 msgid ""
 "The L<virt-cat(1)>, L<virt-filesystems(1)> and L<virt-ls(1)> commands and "
 "documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2420
+#: ../src/guestfs.pod:2661
 msgid "C<contrib>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2422
+#: ../src/guestfs.pod:2663
 msgid "Outside contributions, experimental parts."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2424
+#: ../src/guestfs.pod:2665
 msgid "C<daemon>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2426
+#: ../src/guestfs.pod:2667
 msgid ""
 "The daemon that runs inside the libguestfs appliance and carries out actions."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2429
+#: ../src/guestfs.pod:2670
 msgid "C<df>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2431
+#: ../src/guestfs.pod:2672
 msgid "L<virt-df(1)> command and documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2433
+#: ../src/guestfs.pod:2674
 msgid "C<examples>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2435
+#: ../src/guestfs.pod:2676
 msgid "C API example code."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2437
+#: ../src/guestfs.pod:2678
 msgid "C<fish>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2439
+#: ../src/guestfs.pod:2680
 msgid ""
 "L<guestfish(1)>, the command-line shell, and various shell scripts built on "
 "top such as L<virt-copy-in(1)>, L<virt-copy-out(1)>, L<virt-tar-in(1)>, "
@@ -5290,90 +5676,90 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2443
+#: ../src/guestfs.pod:2684
 msgid "C<fuse>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2445
+#: ../src/guestfs.pod:2686
 msgid ""
 "L<guestmount(1)>, FUSE (userspace filesystem) built on top of libguestfs."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2447
+#: ../src/guestfs.pod:2688
 msgid "C<generator>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2449
+#: ../src/guestfs.pod:2690
 msgid ""
 "The crucially important generator, used to automatically generate large "
 "amounts of boilerplate C code for things like RPC and bindings."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2452
+#: ../src/guestfs.pod:2693
 msgid "C<images>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2454
+#: ../src/guestfs.pod:2695
 msgid "Files used by the test suite."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2456
+#: ../src/guestfs.pod:2697
 msgid "Some \"phony\" guest images which we test against."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2458
+#: ../src/guestfs.pod:2699
 msgid "C<inspector>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2460
+#: ../src/guestfs.pod:2701
 msgid "L<virt-inspector(1)>, the virtual machine image inspector."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2462
+#: ../src/guestfs.pod:2703
 msgid "C<logo>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2464
+#: ../src/guestfs.pod:2705
 msgid "Logo used on the website.  The fish is called Arthur by the way."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2466
+#: ../src/guestfs.pod:2707
 msgid "C<m4>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2468
+#: ../src/guestfs.pod:2709
 msgid "M4 macros used by autoconf."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2470
+#: ../src/guestfs.pod:2711
 msgid "C<po>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2472
+#: ../src/guestfs.pod:2713
 msgid "Translations of simple gettext strings."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2474
+#: ../src/guestfs.pod:2715
 msgid "C<po-docs>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2476
+#: ../src/guestfs.pod:2717
 msgid ""
 "The build infrastructure and PO files for translations of manpages and POD "
 "files.  Eventually this will be combined with the C<po> directory, but that "
@@ -5381,130 +5767,130 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2480
+#: ../src/guestfs.pod:2721
 msgid "C<regressions>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2482
+#: ../src/guestfs.pod:2723
 msgid "Regression tests."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2484
+#: ../src/guestfs.pod:2725
 msgid "C<rescue>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2486
+#: ../src/guestfs.pod:2727
 msgid "L<virt-rescue(1)> command and documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2488
+#: ../src/guestfs.pod:2729
 msgid "C<src>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2490
+#: ../src/guestfs.pod:2731
 msgid "Source code to the C library."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2492
+#: ../src/guestfs.pod:2733
 msgid "C<tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2494
+#: ../src/guestfs.pod:2735
 msgid "Command line tools written in Perl (L<virt-resize(1)> and many others)."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2496
+#: ../src/guestfs.pod:2737
 msgid "C<test-tool>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2498
+#: ../src/guestfs.pod:2739
 msgid ""
 "Test tool for end users to test if their qemu/kernel combination will work "
 "with libguestfs."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2501
+#: ../src/guestfs.pod:2742
 msgid "C<csharp>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2503
+#: ../src/guestfs.pod:2744
 msgid "C<haskell>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2505
+#: ../src/guestfs.pod:2746
 msgid "C<java>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2507
+#: ../src/guestfs.pod:2748
 msgid "C<ocaml>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2509
+#: ../src/guestfs.pod:2750
 msgid "C<php>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2511
+#: ../src/guestfs.pod:2752
 msgid "C<perl>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2513
+#: ../src/guestfs.pod:2754
 msgid "C<python>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2515
+#: ../src/guestfs.pod:2756
 msgid "C<ruby>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2517
+#: ../src/guestfs.pod:2758
 msgid "Language bindings."
 msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2521 ../fish/guestfish.pod:996
+#: ../src/guestfs.pod:2762 ../fish/guestfish.pod:996
 #: ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
 msgid "ENVIRONMENT VARIABLES"
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2525 ../fish/guestfish.pod:1022
+#: ../src/guestfs.pod:2766 ../fish/guestfish.pod:1022
 msgid "LIBGUESTFS_APPEND"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2527 ../fish/guestfish.pod:1024
+#: ../src/guestfs.pod:2768 ../fish/guestfish.pod:1024
 msgid "Pass additional options to the guest kernel."
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2529 ../fish/guestfish.pod:1026
+#: ../src/guestfs.pod:2770 ../fish/guestfish.pod:1026
 msgid "LIBGUESTFS_DEBUG"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2531
+#: ../src/guestfs.pod:2772
 msgid ""
 "Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages.  This has the same "
 "effect as calling C<guestfs_set_verbose (g, 1)>."
@@ -5512,20 +5898,20 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2534 ../fish/guestfish.pod:1031
+#: ../src/guestfs.pod:2775 ../fish/guestfish.pod:1031
 msgid "LIBGUESTFS_MEMSIZE"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2536 ../fish/guestfish.pod:1033
+#: ../src/guestfs.pod:2777 ../fish/guestfish.pod:1033
 msgid ""
 "Set the memory allocated to the qemu process, in megabytes.  For example:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs.pod:2539 ../fish/guestfish.pod:1036
+#: ../src/guestfs.pod:2780 ../fish/guestfish.pod:1036
 #, no-wrap
 msgid ""
 " LIBGUESTFS_MEMSIZE=700\n"
@@ -5534,13 +5920,13 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2541 ../fish/guestfish.pod:1038
+#: ../src/guestfs.pod:2782 ../fish/guestfish.pod:1038
 msgid "LIBGUESTFS_PATH"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2543
+#: ../src/guestfs.pod:2784
 msgid ""
 "Set the path that libguestfs uses to search for kernel and initrd.img.  See "
 "the discussion of paths in section PATH above."
@@ -5548,13 +5934,13 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2546 ../fish/guestfish.pod:1043
+#: ../src/guestfs.pod:2787 ../fish/guestfish.pod:1043
 msgid "LIBGUESTFS_QEMU"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2548 ../fish/guestfish.pod:1045
+#: ../src/guestfs.pod:2789 ../fish/guestfish.pod:1045
 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."
@@ -5562,19 +5948,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2552
+#: ../src/guestfs.pod:2793
 msgid "See also L</QEMU WRAPPERS> above."
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2554 ../fish/guestfish.pod:1049
+#: ../src/guestfs.pod:2795 ../fish/guestfish.pod:1049
 msgid "LIBGUESTFS_TRACE"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2556
+#: ../src/guestfs.pod:2797
 msgid ""
 "Set C<LIBGUESTFS_TRACE=1> to enable command traces.  This has the same "
 "effect as calling C<guestfs_set_trace (g, 1)>."
@@ -5582,19 +5968,19 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs.pod:2559 ../fish/guestfish.pod:1058
+#: ../src/guestfs.pod:2800 ../fish/guestfish.pod:1058
 msgid "TMPDIR"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2561 ../fish/guestfish.pod:1060
+#: ../src/guestfs.pod:2802 ../fish/guestfish.pod:1060
 msgid ""
 "Location of temporary directory, defaults to C</tmp> except for the cached "
 "supermin appliance which defaults to C</var/tmp>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2564 ../fish/guestfish.pod:1063
+#: ../src/guestfs.pod:2805 ../fish/guestfish.pod:1063
 msgid ""
 "If libguestfs was compiled to use the supermin appliance then the real "
 "appliance is cached in this directory, shared between all handles belonging "
@@ -5604,17 +5990,17 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2572 ../fish/guestfish.pod:1121
+#: ../src/guestfs.pod:2813 ../fish/guestfish.pod:1121
 #: ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:238
 #: ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572
-#: ../tools/virt-resize.pl:1483 ../tools/virt-list-filesystems.pl:189
+#: ../tools/virt-resize.pl:1489 ../tools/virt-list-filesystems.pl:189
 #: ../tools/virt-tar.pl:286 ../tools/virt-make-fs.pl:539
 #: ../tools/virt-list-partitions.pl:257
 msgid "SEE ALSO"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2574
+#: ../src/guestfs.pod:2815
 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-copy-in"
@@ -5627,7 +6013,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2601
+#: ../src/guestfs.pod:2842
 msgid ""
 "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
 "(8)>, L<disktype(1)>."
@@ -5635,20 +6021,20 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2608 ../tools/virt-win-reg.pl:587
+#: ../src/guestfs.pod:2849 ../tools/virt-win-reg.pl:587
 #: ../tools/virt-make-fs.pl:553
 msgid "BUGS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2610
+#: ../src/guestfs.pod:2851
 msgid "To get a list of bugs against libguestfs use this link:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2612
+#: ../src/guestfs.pod:2853
 msgid ""
 "L<https://bugzilla.redhat.com/buglist.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
@@ -5656,13 +6042,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2614
+#: ../src/guestfs.pod:2855
 msgid "To report a new bug against libguestfs use this link:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2616
+#: ../src/guestfs.pod:2857
 msgid ""
 "L<https://bugzilla.redhat.com/enter_bug.cgi?"
 "component=libguestfs&product=Virtualization+Tools>"
@@ -5670,31 +6056,31 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2618
+#: ../src/guestfs.pod:2859
 msgid "When reporting a bug, please check:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2624
+#: ../src/guestfs.pod:2865
 msgid "That the bug hasn't been reported already."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2628
+#: ../src/guestfs.pod:2869
 msgid "That you are testing a recent version."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2632
+#: ../src/guestfs.pod:2873
 msgid "Describe the bug accurately, and give a way to reproduce it."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2636
+#: ../src/guestfs.pod:2877
 msgid ""
 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
 "bug report."
@@ -5702,24 +6088,24 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2641 ../fish/guestfish.pod:1144
+#: ../src/guestfs.pod:2882 ../fish/guestfish.pod:1144
 #: ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:249
 msgid "AUTHORS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2643 ../fish/guestfish.pod:1146
+#: ../src/guestfs.pod:2884 ../fish/guestfish.pod:1146
 #: ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:251
 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
 msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../src/guestfs.pod:2645 ../fish/guestfish.pod:1148
+#: ../src/guestfs.pod:2886 ../fish/guestfish.pod:1148
 #: ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:253
 #: ../tools/virt-edit.pl:368 ../tools/virt-win-reg.pl:602
-#: ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206
+#: ../tools/virt-resize.pl:1514 ../tools/virt-list-filesystems.pl:206
 #: ../tools/virt-tar.pl:305 ../tools/virt-make-fs.pl:568
 #: ../tools/virt-list-partitions.pl:273
 msgid "COPYRIGHT"
@@ -5727,14 +6113,14 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2647 ../fish/guestfish.pod:1150
+#: ../src/guestfs.pod:2888 ../fish/guestfish.pod:1150
 #: ../fuse/guestmount.pod:255
 msgid "Copyright (C) 2009-2010 Red Hat Inc.  L<http://libguestfs.org/>"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2650
+#: ../src/guestfs.pod:2891
 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 "
@@ -5744,7 +6130,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2655
+#: ../src/guestfs.pod:2896
 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 "
@@ -5754,7 +6140,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs.pod:2660
+#: ../src/guestfs.pod:2901
 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, "
@@ -5877,28 +6263,28 @@ msgstr ""
 #: ../src/guestfs-actions.pod:5798 ../src/guestfs-actions.pod:5817
 #: ../src/guestfs-actions.pod:5834 ../src/guestfs-actions.pod:5862
 #: ../src/guestfs-actions.pod:5886 ../src/guestfs-actions.pod:5905
-#: ../src/guestfs-actions.pod:5929 ../src/guestfs-actions.pod:5944
-#: ../src/guestfs-actions.pod:5959 ../src/guestfs-actions.pod:5978
-#: ../src/guestfs-actions.pod:6015 ../src/guestfs-actions.pod:6038
-#: ../src/guestfs-actions.pod:6064 ../src/guestfs-actions.pod:6172
-#: ../src/guestfs-actions.pod:6293 ../src/guestfs-actions.pod:6305
-#: ../src/guestfs-actions.pod:6318 ../src/guestfs-actions.pod:6331
-#: ../src/guestfs-actions.pod:6353 ../src/guestfs-actions.pod:6366
-#: ../src/guestfs-actions.pod:6379 ../src/guestfs-actions.pod:6392
-#: ../src/guestfs-actions.pod:6407 ../src/guestfs-actions.pod:6466
-#: ../src/guestfs-actions.pod:6483 ../src/guestfs-actions.pod:6499
-#: ../src/guestfs-actions.pod:6515 ../src/guestfs-actions.pod:6532
-#: ../src/guestfs-actions.pod:6545 ../src/guestfs-actions.pod:6565
-#: ../src/guestfs-actions.pod:6601 ../src/guestfs-actions.pod:6615
-#: ../src/guestfs-actions.pod:6656 ../src/guestfs-actions.pod:6669
-#: ../src/guestfs-actions.pod:6687 ../src/guestfs-actions.pod:6721
-#: ../src/guestfs-actions.pod:6757 ../src/guestfs-actions.pod:6876
-#: ../src/guestfs-actions.pod:6894 ../src/guestfs-actions.pod:6908
-#: ../src/guestfs-actions.pod:6963 ../src/guestfs-actions.pod:6976
-#: ../src/guestfs-actions.pod:7021 ../src/guestfs-actions.pod:7054
-#: ../src/guestfs-actions.pod:7108 ../src/guestfs-actions.pod:7134
-#: ../src/guestfs-actions.pod:7200 ../src/guestfs-actions.pod:7219
-#: ../src/guestfs-actions.pod:7248
+#: ../src/guestfs-actions.pod:5929 ../src/guestfs-actions.pod:5948
+#: ../src/guestfs-actions.pod:5963 ../src/guestfs-actions.pod:5982
+#: ../src/guestfs-actions.pod:6019 ../src/guestfs-actions.pod:6042
+#: ../src/guestfs-actions.pod:6068 ../src/guestfs-actions.pod:6176
+#: ../src/guestfs-actions.pod:6297 ../src/guestfs-actions.pod:6309
+#: ../src/guestfs-actions.pod:6322 ../src/guestfs-actions.pod:6335
+#: ../src/guestfs-actions.pod:6357 ../src/guestfs-actions.pod:6370
+#: ../src/guestfs-actions.pod:6383 ../src/guestfs-actions.pod:6396
+#: ../src/guestfs-actions.pod:6411 ../src/guestfs-actions.pod:6470
+#: ../src/guestfs-actions.pod:6487 ../src/guestfs-actions.pod:6503
+#: ../src/guestfs-actions.pod:6519 ../src/guestfs-actions.pod:6536
+#: ../src/guestfs-actions.pod:6549 ../src/guestfs-actions.pod:6569
+#: ../src/guestfs-actions.pod:6605 ../src/guestfs-actions.pod:6619
+#: ../src/guestfs-actions.pod:6660 ../src/guestfs-actions.pod:6673
+#: ../src/guestfs-actions.pod:6691 ../src/guestfs-actions.pod:6725
+#: ../src/guestfs-actions.pod:6761 ../src/guestfs-actions.pod:6880
+#: ../src/guestfs-actions.pod:6898 ../src/guestfs-actions.pod:6912
+#: ../src/guestfs-actions.pod:6967 ../src/guestfs-actions.pod:6980
+#: ../src/guestfs-actions.pod:7025 ../src/guestfs-actions.pod:7058
+#: ../src/guestfs-actions.pod:7112 ../src/guestfs-actions.pod:7138
+#: ../src/guestfs-actions.pod:7204 ../src/guestfs-actions.pod:7223
+#: ../src/guestfs-actions.pod:7252
 msgid "This function returns 0 on success or -1 on error."
 msgstr ""
 
@@ -5917,12 +6303,12 @@ msgstr ""
 #: ../src/guestfs-actions.pod:35 ../src/guestfs-actions.pod:251
 #: ../src/guestfs-actions.pod:272 ../src/guestfs-actions.pod:1443
 #: ../src/guestfs-actions.pod:1939 ../src/guestfs-actions.pod:1960
-#: ../src/guestfs-actions.pod:4301 ../src/guestfs-actions.pod:7142
-#: ../src/guestfs-actions.pod:7311 ../fish/guestfish-actions.pod:31
+#: ../src/guestfs-actions.pod:4301 ../src/guestfs-actions.pod:7146
+#: ../src/guestfs-actions.pod:7315 ../fish/guestfish-actions.pod:31
 #: ../fish/guestfish-actions.pod:161 ../fish/guestfish-actions.pod:175
 #: ../fish/guestfish-actions.pod:956 ../fish/guestfish-actions.pod:1319
 #: ../fish/guestfish-actions.pod:1333 ../fish/guestfish-actions.pod:2908
-#: ../fish/guestfish-actions.pod:4762 ../fish/guestfish-actions.pod:4859
+#: ../fish/guestfish-actions.pod:4766 ../fish/guestfish-actions.pod:4863
 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 "
@@ -5936,9 +6322,9 @@ msgstr ""
 #: ../src/guestfs-actions.pod:2009 ../src/guestfs-actions.pod:2112
 #: ../src/guestfs-actions.pod:3338 ../src/guestfs-actions.pod:3353
 #: ../src/guestfs-actions.pod:4605 ../src/guestfs-actions.pod:5719
-#: ../src/guestfs-actions.pod:5836 ../src/guestfs-actions.pod:5946
-#: ../src/guestfs-actions.pod:6409 ../src/guestfs-actions.pod:6534
-#: ../src/guestfs-actions.pod:7056
+#: ../src/guestfs-actions.pod:5836 ../src/guestfs-actions.pod:5950
+#: ../src/guestfs-actions.pod:6413 ../src/guestfs-actions.pod:6538
+#: ../src/guestfs-actions.pod:7060
 msgid "(Added in 0.3)"
 msgstr ""
 
@@ -6056,9 +6442,9 @@ msgstr ""
 #: ../src/guestfs-actions.pod:2392 ../src/guestfs-actions.pod:2719
 #: ../src/guestfs-actions.pod:2740 ../src/guestfs-actions.pod:4741
 #: ../src/guestfs-actions.pod:4869 ../src/guestfs-actions.pod:5275
-#: ../src/guestfs-actions.pod:5301 ../src/guestfs-actions.pod:6642
-#: ../src/guestfs-actions.pod:7067 ../src/guestfs-actions.pod:7080
-#: ../src/guestfs-actions.pod:7093
+#: ../src/guestfs-actions.pod:5301 ../src/guestfs-actions.pod:6646
+#: ../src/guestfs-actions.pod:7071 ../src/guestfs-actions.pod:7084
+#: ../src/guestfs-actions.pod:7097
 msgid "On error this function returns -1."
 msgstr ""
 
@@ -6618,11 +7004,11 @@ msgstr ""
 #: ../src/guestfs-actions.pod:4032 ../src/guestfs-actions.pod:4142
 #: ../src/guestfs-actions.pod:4887 ../src/guestfs-actions.pod:5080
 #: ../src/guestfs-actions.pod:5250 ../src/guestfs-actions.pod:5428
-#: ../src/guestfs-actions.pod:5477 ../src/guestfs-actions.pod:6085
-#: ../src/guestfs-actions.pod:6101 ../src/guestfs-actions.pod:6118
-#: ../src/guestfs-actions.pod:6142 ../src/guestfs-actions.pod:6816
-#: ../src/guestfs-actions.pod:6835 ../src/guestfs-actions.pod:6853
-#: ../src/guestfs-actions.pod:7033 ../src/guestfs-actions.pod:7305
+#: ../src/guestfs-actions.pod:5477 ../src/guestfs-actions.pod:6089
+#: ../src/guestfs-actions.pod:6105 ../src/guestfs-actions.pod:6122
+#: ../src/guestfs-actions.pod:6146 ../src/guestfs-actions.pod:6820
+#: ../src/guestfs-actions.pod:6839 ../src/guestfs-actions.pod:6857
+#: ../src/guestfs-actions.pod:7037 ../src/guestfs-actions.pod:7309
 msgid ""
 "This function returns a string, or NULL on error.  I<The caller must free "
 "the returned string after use>."
@@ -6865,14 +7251,14 @@ msgstr ""
 #: ../src/guestfs-actions.pod:3494 ../src/guestfs-actions.pod:3599
 #: ../src/guestfs-actions.pod:4004 ../src/guestfs-actions.pod:4702
 #: ../src/guestfs-actions.pod:5222 ../src/guestfs-actions.pod:5348
-#: ../src/guestfs-actions.pod:5462 ../src/guestfs-actions.pod:6158
-#: ../src/guestfs-actions.pod:6219 ../src/guestfs-actions.pod:6274
-#: ../src/guestfs-actions.pod:6420 ../src/guestfs-actions.pod:6444
-#: ../src/guestfs-actions.pod:6926 ../src/guestfs-actions.pod:6946
-#: ../src/guestfs-actions.pod:6993 ../src/guestfs-actions.pod:7158
-#: ../src/guestfs-actions.pod:7177 ../src/guestfs-actions.pod:7262
-#: ../src/guestfs-actions.pod:7281 ../src/guestfs-actions.pod:7327
-#: ../src/guestfs-actions.pod:7346
+#: ../src/guestfs-actions.pod:5462 ../src/guestfs-actions.pod:6162
+#: ../src/guestfs-actions.pod:6223 ../src/guestfs-actions.pod:6278
+#: ../src/guestfs-actions.pod:6424 ../src/guestfs-actions.pod:6448
+#: ../src/guestfs-actions.pod:6930 ../src/guestfs-actions.pod:6950
+#: ../src/guestfs-actions.pod:6997 ../src/guestfs-actions.pod:7162
+#: ../src/guestfs-actions.pod:7181 ../src/guestfs-actions.pod:7266
+#: ../src/guestfs-actions.pod:7285 ../src/guestfs-actions.pod:7331
+#: ../src/guestfs-actions.pod:7350
 msgid ""
 "This function returns a NULL-terminated array of strings (like L<environ(3)"
 ">), or NULL if there was an error.  I<The caller must free the strings and "
@@ -6889,9 +7275,9 @@ msgstr ""
 #: ../src/guestfs-actions.pod:4278 ../src/guestfs-actions.pod:4706
 #: ../src/guestfs-actions.pod:5163 ../src/guestfs-actions.pod:5558
 #: ../src/guestfs-actions.pod:5572 ../src/guestfs-actions.pod:5584
-#: ../src/guestfs-actions.pod:6020 ../src/guestfs-actions.pod:6658
-#: ../src/guestfs-actions.pod:6671 ../src/guestfs-actions.pod:6910
-#: ../src/guestfs-actions.pod:7146
+#: ../src/guestfs-actions.pod:6024 ../src/guestfs-actions.pod:6662
+#: ../src/guestfs-actions.pod:6675 ../src/guestfs-actions.pod:6914
+#: ../src/guestfs-actions.pod:7150
 msgid "(Added in 0.8)"
 msgstr ""
 
@@ -7650,7 +8036,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:860 ../src/guestfs-actions.pod:6838
+#: ../src/guestfs-actions.pod:860 ../src/guestfs-actions.pod:6842
 msgid "(Added in 1.0.75)"
 msgstr ""
 
@@ -7699,13 +8085,13 @@ msgstr ""
 #: ../src/guestfs-actions.pod:2319 ../src/guestfs-actions.pod:2348
 #: ../src/guestfs-actions.pod:5120 ../src/guestfs-actions.pod:5146
 #: ../src/guestfs-actions.pod:5277 ../src/guestfs-actions.pod:5303
-#: ../src/guestfs-actions.pod:5327 ../src/guestfs-actions.pod:6223
-#: ../src/guestfs-actions.pod:6278 ../src/guestfs-actions.pod:6424
-#: ../src/guestfs-actions.pod:6448 ../src/guestfs-actions.pod:7110
-#: ../src/guestfs-actions.pod:7136 ../src/guestfs-actions.pod:7162
-#: ../src/guestfs-actions.pod:7181 ../src/guestfs-actions.pod:7266
-#: ../src/guestfs-actions.pod:7285 ../src/guestfs-actions.pod:7331
-#: ../src/guestfs-actions.pod:7350 ../fish/guestfish-actions.pod:587
+#: ../src/guestfs-actions.pod:5327 ../src/guestfs-actions.pod:6227
+#: ../src/guestfs-actions.pod:6282 ../src/guestfs-actions.pod:6428
+#: ../src/guestfs-actions.pod:6452 ../src/guestfs-actions.pod:7114
+#: ../src/guestfs-actions.pod:7140 ../src/guestfs-actions.pod:7166
+#: ../src/guestfs-actions.pod:7185 ../src/guestfs-actions.pod:7270
+#: ../src/guestfs-actions.pod:7289 ../src/guestfs-actions.pod:7335
+#: ../src/guestfs-actions.pod:7354 ../fish/guestfish-actions.pod:587
 #: ../fish/guestfish-actions.pod:722 ../fish/guestfish-actions.pod:734
 #: ../fish/guestfish-actions.pod:910 ../fish/guestfish-actions.pod:920
 #: ../fish/guestfish-actions.pod:987 ../fish/guestfish-actions.pod:997
@@ -7715,12 +8101,12 @@ msgstr ""
 #: ../fish/guestfish-actions.pod:1575 ../fish/guestfish-actions.pod:3437
 #: ../fish/guestfish-actions.pod:3452 ../fish/guestfish-actions.pod:3528
 #: ../fish/guestfish-actions.pod:3545 ../fish/guestfish-actions.pod:3560
-#: ../fish/guestfish-actions.pod:4182 ../fish/guestfish-actions.pod:4228
-#: ../fish/guestfish-actions.pod:4313 ../fish/guestfish-actions.pod:4328
-#: ../fish/guestfish-actions.pod:4738 ../fish/guestfish-actions.pod:4756
-#: ../fish/guestfish-actions.pod:4773 ../fish/guestfish-actions.pod:4783
-#: ../fish/guestfish-actions.pod:4831 ../fish/guestfish-actions.pod:4841
-#: ../fish/guestfish-actions.pod:4870 ../fish/guestfish-actions.pod:4880
+#: ../fish/guestfish-actions.pod:4186 ../fish/guestfish-actions.pod:4232
+#: ../fish/guestfish-actions.pod:4317 ../fish/guestfish-actions.pod:4332
+#: ../fish/guestfish-actions.pod:4742 ../fish/guestfish-actions.pod:4760
+#: ../fish/guestfish-actions.pod:4777 ../fish/guestfish-actions.pod:4787
+#: ../fish/guestfish-actions.pod:4835 ../fish/guestfish-actions.pod:4845
+#: ../fish/guestfish-actions.pod:4874 ../fish/guestfish-actions.pod:4884
 msgid ""
 "Because of the message protocol, there is a transfer limit of somewhere "
 "between 2MB and 4MB.  See L<guestfs(3)/PROTOCOL LIMITS>."
@@ -7732,8 +8118,8 @@ msgstr ""
 #: ../src/guestfs-actions.pod:3498 ../src/guestfs-actions.pod:3515
 #: ../src/guestfs-actions.pod:3603 ../src/guestfs-actions.pod:4008
 #: ../src/guestfs-actions.pod:4022 ../src/guestfs-actions.pod:5226
-#: ../src/guestfs-actions.pod:5240 ../src/guestfs-actions.pod:6997
-#: ../src/guestfs-actions.pod:7011
+#: ../src/guestfs-actions.pod:5240 ../src/guestfs-actions.pod:7001
+#: ../src/guestfs-actions.pod:7015
 msgid "(Added in 0.4)"
 msgstr ""
 
@@ -7879,7 +8265,7 @@ msgstr ""
 #: ../src/guestfs-actions.pod:938 ../src/guestfs-actions.pod:1246
 #: ../src/guestfs-actions.pod:2078 ../src/guestfs-actions.pod:3180
 #: ../src/guestfs-actions.pod:3209 ../src/guestfs-actions.pod:3270
-#: ../src/guestfs-actions.pod:3297 ../src/guestfs-actions.pod:6694
+#: ../src/guestfs-actions.pod:3297 ../src/guestfs-actions.pod:6698
 msgid "(Added in 1.0.2)"
 msgstr ""
 
@@ -7915,8 +8301,8 @@ msgstr ""
 #: ../src/guestfs-actions.pod:954 ../src/guestfs-actions.pod:4757
 #: ../src/guestfs-actions.pod:4816 ../src/guestfs-actions.pod:4853
 #: ../src/guestfs-actions.pod:4871 ../src/guestfs-actions.pod:5047
-#: ../src/guestfs-actions.pod:6603 ../src/guestfs-actions.pod:6617
-#: ../src/guestfs-actions.pod:7023
+#: ../src/guestfs-actions.pod:6607 ../src/guestfs-actions.pod:6621
+#: ../src/guestfs-actions.pod:7027
 msgid "(Added in 1.3.2)"
 msgstr ""
 
@@ -8231,9 +8617,9 @@ msgstr ""
 #. type: textblock
 #: ../src/guestfs-actions.pod:1118 ../src/guestfs-actions.pod:1241
 #: ../src/guestfs-actions.pod:1272 ../src/guestfs-actions.pod:1692
-#: ../src/guestfs-actions.pod:1714 ../src/guestfs-actions.pod:6689
-#: ../src/guestfs-actions.pod:6723 ../src/guestfs-actions.pod:7202
-#: ../src/guestfs-actions.pod:7221
+#: ../src/guestfs-actions.pod:1714 ../src/guestfs-actions.pod:6693
+#: ../src/guestfs-actions.pod:6727 ../src/guestfs-actions.pod:7206
+#: ../src/guestfs-actions.pod:7225
 msgid ""
 "This long-running command can generate progress notification messages so "
 "that the caller can display a progress bar or indicator.  To receive these "
@@ -8244,8 +8630,8 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:1123 ../src/guestfs-actions.pod:4035
-#: ../src/guestfs-actions.pod:5253 ../src/guestfs-actions.pod:6930
-#: ../src/guestfs-actions.pod:6950 ../src/guestfs-actions.pod:7036
+#: ../src/guestfs-actions.pod:5253 ../src/guestfs-actions.pod:6934
+#: ../src/guestfs-actions.pod:6954 ../src/guestfs-actions.pod:7040
 msgid "(Added in 1.0.87)"
 msgstr ""
 
@@ -8383,9 +8769,9 @@ msgstr ""
 #: ../src/guestfs-actions.pod:1317 ../src/guestfs-actions.pod:2281
 #: ../src/guestfs-actions.pod:2305 ../src/guestfs-actions.pod:2373
 #: ../src/guestfs-actions.pod:4145 ../src/guestfs-actions.pod:4620
-#: ../src/guestfs-actions.pod:6427 ../src/guestfs-actions.pod:6451
-#: ../src/guestfs-actions.pod:7069 ../src/guestfs-actions.pod:7082
-#: ../src/guestfs-actions.pod:7095
+#: ../src/guestfs-actions.pod:6431 ../src/guestfs-actions.pod:6455
+#: ../src/guestfs-actions.pod:7073 ../src/guestfs-actions.pod:7086
+#: ../src/guestfs-actions.pod:7099
 msgid "(Added in 1.0.54)"
 msgstr ""
 
@@ -8475,8 +8861,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:1235 ../src/guestfs-actions.pod:6683
-#: ../fish/guestfish-actions.pod:828 ../fish/guestfish-actions.pod:4486
+#: ../src/guestfs-actions.pod:1235 ../src/guestfs-actions.pod:6687
+#: ../fish/guestfish-actions.pod:828 ../fish/guestfish-actions.pod:4490
 msgid "C<filename> can also be a named pipe."
 msgstr ""
 
@@ -8531,7 +8917,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:1277 ../src/guestfs-actions.pod:6728
+#: ../src/guestfs-actions.pod:1277 ../src/guestfs-actions.pod:6732
 msgid "(Added in 1.5.17)"
 msgstr ""
 
@@ -8737,13 +9123,13 @@ msgstr ""
 #: ../src/guestfs-actions.pod:3542 ../src/guestfs-actions.pod:3555
 #: ../src/guestfs-actions.pod:3569 ../src/guestfs-actions.pod:4555
 #: ../src/guestfs-actions.pod:5431 ../src/guestfs-actions.pod:5480
-#: ../src/guestfs-actions.pod:6295 ../src/guestfs-actions.pod:6307
-#: ../src/guestfs-actions.pod:6320 ../src/guestfs-actions.pod:6333
-#: ../src/guestfs-actions.pod:6355 ../src/guestfs-actions.pod:6368
-#: ../src/guestfs-actions.pod:6381 ../src/guestfs-actions.pod:6394
-#: ../src/guestfs-actions.pod:7165 ../src/guestfs-actions.pod:7184
-#: ../src/guestfs-actions.pod:7269 ../src/guestfs-actions.pod:7288
-#: ../src/guestfs-actions.pod:7334 ../src/guestfs-actions.pod:7353
+#: ../src/guestfs-actions.pod:6299 ../src/guestfs-actions.pod:6311
+#: ../src/guestfs-actions.pod:6324 ../src/guestfs-actions.pod:6337
+#: ../src/guestfs-actions.pod:6359 ../src/guestfs-actions.pod:6372
+#: ../src/guestfs-actions.pod:6385 ../src/guestfs-actions.pod:6398
+#: ../src/guestfs-actions.pod:7169 ../src/guestfs-actions.pod:7188
+#: ../src/guestfs-actions.pod:7273 ../src/guestfs-actions.pod:7292
+#: ../src/guestfs-actions.pod:7338 ../src/guestfs-actions.pod:7357
 msgid "(Added in 1.0.66)"
 msgstr ""
 
@@ -9663,7 +10049,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:1874 ../src/guestfs-actions.pod:7207
+#: ../src/guestfs-actions.pod:1874 ../src/guestfs-actions.pod:7211
 msgid "(Added in 1.0.16)"
 msgstr ""
 
@@ -9709,10 +10095,10 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:1890 ../src/guestfs-actions.pod:5193
-#: ../src/guestfs-actions.pod:5673 ../src/guestfs-actions.pod:6069
-#: ../src/guestfs-actions.pod:6088 ../src/guestfs-actions.pod:6104
-#: ../src/guestfs-actions.pod:6121 ../src/guestfs-actions.pod:6878
-#: ../src/guestfs-actions.pod:6896 ../src/guestfs-actions.pod:7250
+#: ../src/guestfs-actions.pod:5673 ../src/guestfs-actions.pod:6073
+#: ../src/guestfs-actions.pod:6092 ../src/guestfs-actions.pod:6108
+#: ../src/guestfs-actions.pod:6125 ../src/guestfs-actions.pod:6882
+#: ../src/guestfs-actions.pod:6900 ../src/guestfs-actions.pod:7254
 msgid "(Added in 1.0.26)"
 msgstr ""
 
@@ -9903,7 +10289,7 @@ msgstr ""
 #: ../src/guestfs-actions.pod:4498 ../src/guestfs-actions.pod:4510
 #: ../src/guestfs-actions.pod:4527 ../src/guestfs-actions.pod:4540
 #: ../src/guestfs-actions.pod:5418 ../src/guestfs-actions.pod:5800
-#: ../src/guestfs-actions.pod:6043 ../src/guestfs-actions.pod:6644
+#: ../src/guestfs-actions.pod:6047 ../src/guestfs-actions.pod:6648
 msgid "(Added in 1.0.55)"
 msgstr ""
 
@@ -10073,8 +10459,8 @@ msgstr ""
 #: ../src/guestfs-actions.pod:3670 ../src/guestfs-actions.pod:4070
 #: ../src/guestfs-actions.pod:4102 ../src/guestfs-actions.pod:5123
 #: ../src/guestfs-actions.pod:5466 ../src/guestfs-actions.pod:5888
-#: ../src/guestfs-actions.pod:6547 ../src/guestfs-actions.pod:6567
-#: ../src/guestfs-actions.pod:6759
+#: ../src/guestfs-actions.pod:6551 ../src/guestfs-actions.pod:6571
+#: ../src/guestfs-actions.pod:6763
 msgid "(Added in 1.0.77)"
 msgstr ""
 
@@ -10105,7 +10491,7 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:2064 ../src/guestfs-actions.pod:2127
-#: ../src/guestfs-actions.pod:5907 ../src/guestfs-actions.pod:5961
+#: ../src/guestfs-actions.pod:5907 ../src/guestfs-actions.pod:5965
 msgid "(Added in 1.0.67)"
 msgstr ""
 
@@ -10361,8 +10747,8 @@ msgstr ""
 #. type: textblock
 #: ../src/guestfs-actions.pod:2177 ../src/guestfs-actions.pod:3419
 #: ../src/guestfs-actions.pod:3584 ../src/guestfs-actions.pod:3620
-#: ../src/guestfs-actions.pod:5496 ../src/guestfs-actions.pod:5980
-#: ../src/guestfs-actions.pod:7315
+#: ../src/guestfs-actions.pod:5496 ../src/guestfs-actions.pod:5984
+#: ../src/guestfs-actions.pod:7319
 msgid "(Added in 1.0.59)"
 msgstr ""
 
@@ -10408,8 +10794,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:2200 ../src/guestfs-actions.pod:6145
-#: ../src/guestfs-actions.pod:6162
+#: ../src/guestfs-actions.pod:2200 ../src/guestfs-actions.pod:6149
+#: ../src/guestfs-actions.pod:6166
 msgid "(Added in 1.0.50)"
 msgstr ""
 
@@ -10580,8 +10966,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:2296 ../src/guestfs-actions.pod:6442
-#: ../fish/guestfish-actions.pod:1544 ../fish/guestfish-actions.pod:4326
+#: ../src/guestfs-actions.pod:2296 ../src/guestfs-actions.pod:6446
+#: ../fish/guestfish-actions.pod:1544 ../fish/guestfish-actions.pod:4330
 msgid "If the parameter C<nrlines> is zero, this returns an empty list."
 msgstr ""
 
@@ -10612,8 +10998,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:2322 ../src/guestfs-actions.pod:6226
-#: ../src/guestfs-actions.pod:6281
+#: ../src/guestfs-actions.pod:2322 ../src/guestfs-actions.pod:6230
+#: ../src/guestfs-actions.pod:6285
 msgid "(Added in 1.0.22)"
 msgstr ""
 
@@ -11482,7 +11868,7 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:2773 ../src/guestfs-actions.pod:3472
-#: ../src/guestfs-actions.pod:4682 ../src/guestfs-actions.pod:6583
+#: ../src/guestfs-actions.pod:4682 ../src/guestfs-actions.pod:6587
 msgid ""
 "This function returns a NULL-terminated array of strings, or NULL if there "
 "was an error.  The array of strings will always have length C<2n+1>, where "
@@ -12986,8 +13372,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:3628 ../src/guestfs-actions.pod:6182
-#: ../fish/guestfish-actions.pod:2496 ../fish/guestfish-actions.pod:4161
+#: ../src/guestfs-actions.pod:3628 ../src/guestfs-actions.pod:6186
+#: ../fish/guestfish-actions.pod:2496 ../fish/guestfish-actions.pod:4165
 msgid "Returns file information for the given C<path>."
 msgstr ""
 
@@ -13007,7 +13393,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:3636 ../src/guestfs-actions.pod:6186
+#: ../src/guestfs-actions.pod:3636 ../src/guestfs-actions.pod:6190
 msgid ""
 "This function returns a C<struct guestfs_stat *>, or NULL if there was an "
 "error.  I<The caller must call C<guestfs_free_stat> after use>."
@@ -13015,8 +13401,8 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:3640 ../src/guestfs-actions.pod:6190
-#: ../src/guestfs-actions.pod:6208 ../src/guestfs-actions.pod:6589
+#: ../src/guestfs-actions.pod:3640 ../src/guestfs-actions.pod:6194
+#: ../src/guestfs-actions.pod:6212 ../src/guestfs-actions.pod:6593
 msgid "(Added in 0.9.2)"
 msgstr ""
 
@@ -13198,13 +13584,13 @@ msgstr ""
 #. type: textblock
 #: ../src/guestfs-actions.pod:3729 ../src/guestfs-actions.pod:3752
 #: ../src/guestfs-actions.pod:3892 ../src/guestfs-actions.pod:4834
-#: ../src/guestfs-actions.pod:5614 ../src/guestfs-actions.pod:6017
-#: ../src/guestfs-actions.pod:6040 ../src/guestfs-actions.pod:6066
-#: ../src/guestfs-actions.pod:7226 ../fish/guestfish-actions.pod:2563
+#: ../src/guestfs-actions.pod:5614 ../src/guestfs-actions.pod:6021
+#: ../src/guestfs-actions.pod:6044 ../src/guestfs-actions.pod:6070
+#: ../src/guestfs-actions.pod:7230 ../fish/guestfish-actions.pod:2563
 #: ../fish/guestfish-actions.pod:2576 ../fish/guestfish-actions.pod:2660
 #: ../fish/guestfish-actions.pod:3234 ../fish/guestfish-actions.pod:3754
-#: ../fish/guestfish-actions.pod:4060 ../fish/guestfish-actions.pod:4076
-#: ../fish/guestfish-actions.pod:4091 ../fish/guestfish-actions.pod:4806
+#: ../fish/guestfish-actions.pod:4064 ../fish/guestfish-actions.pod:4080
+#: ../fish/guestfish-actions.pod:4095 ../fish/guestfish-actions.pod:4810
 msgid ""
 "B<This command is dangerous.  Without careful use you can easily destroy all "
 "your data>."
@@ -13569,7 +13955,7 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:3944 ../src/guestfs-actions.pod:5180
-#: ../src/guestfs-actions.pod:6965
+#: ../src/guestfs-actions.pod:6969
 msgid "(Added in 1.0.13)"
 msgstr ""
 
@@ -13599,7 +13985,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:3957 ../src/guestfs-actions.pod:6978
+#: ../src/guestfs-actions.pod:3957 ../src/guestfs-actions.pod:6982
 msgid "(Added in 1.0.83)"
 msgstr ""
 
@@ -15122,7 +15508,7 @@ msgstr ""
 #. type: textblock
 #: ../src/guestfs-actions.pod:4771 ../src/guestfs-actions.pod:5207
 #: ../src/guestfs-actions.pod:5280 ../src/guestfs-actions.pod:5546
-#: ../src/guestfs-actions.pod:7113
+#: ../src/guestfs-actions.pod:7117
 msgid "(Added in 1.3.14)"
 msgstr ""
 
@@ -17328,20 +17714,16 @@ msgid ""
 "\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:5915 ../fish/guestfish-actions.pod:3989
 msgid ""
-"If the command trace flag is set to 1, then commands are printed on stderr "
-"before they are executed in a format which is very similar to the one used "
-"by guestfish.  In other words, you can run a program with this enabled, and "
-"you will get out a script which you can feed to guestfish to perform the "
-"same set of actions."
+"If the command trace flag is set to 1, then libguestfs calls, parameters and "
+"return values are traced."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5922 ../fish/guestfish-actions.pod:3996
+#: ../src/guestfs-actions.pod:5918 ../fish/guestfish-actions.pod:3992
 msgid ""
 "If you want to trace C API calls into libguestfs (and other libraries) then "
 "possibly a better way is to use the external ltrace(1) command."
@@ -17349,12 +17731,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5926 ../fish/guestfish-actions.pod:4000
+#: ../src/guestfs-actions.pod:5922 ../fish/guestfish-actions.pod:3996
 msgid ""
 "Command traces are disabled unless the environment variable "
 "C<LIBGUESTFS_TRACE> is defined and set to C<1>."
 msgstr ""
 
+#. type: textblock
+#: ../src/guestfs-actions.pod:5925
+msgid ""
+"Trace messages are normally sent to C<stderr>, unless you register a "
+"callback to send them somewhere else (see C<guestfs_set_event_callback>)."
+msgstr ""
+
 # type: =head2
 #. type: =head2
 #: ../src/guestfs-actions.pod:5933
@@ -17372,10 +17761,9 @@ msgid ""
 "\n"
 msgstr ""
 
-# type: textblock
 #. type: textblock
 #: ../src/guestfs-actions.pod:5939 ../fish/guestfish-actions.pod:4009
-msgid "If C<verbose> is true, this turns on verbose messages (to C<stderr>)."
+msgid "If C<verbose> is true, this turns on verbose messages."
 msgstr ""
 
 # type: textblock
@@ -17386,15 +17774,22 @@ msgid ""
 "C<LIBGUESTFS_DEBUG> is defined and set to C<1>."
 msgstr ""
 
+#. type: textblock
+#: ../src/guestfs-actions.pod:5944
+msgid ""
+"Verbose messages are normally sent to C<stderr>, unless you register a "
+"callback to send them somewhere else (see C<guestfs_set_event_callback>)."
+msgstr ""
+
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:5948
+#: ../src/guestfs-actions.pod:5952
 msgid "guestfs_setcon"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:5950
+#: ../src/guestfs-actions.pod:5954
 #, no-wrap
 msgid ""
 " int\n"
@@ -17405,7 +17800,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5954 ../fish/guestfish-actions.pod:4018
+#: ../src/guestfs-actions.pod:5958 ../fish/guestfish-actions.pod:4022
 msgid ""
 "This sets the SELinux security context of the daemon to the string "
 "C<context>."
@@ -17413,19 +17808,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5957 ../fish/guestfish-actions.pod:4021
+#: ../src/guestfs-actions.pod:5961 ../fish/guestfish-actions.pod:4025
 msgid "See the documentation about SELINUX in L<guestfs(3)>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:5963
+#: ../src/guestfs-actions.pod:5967
 msgid "guestfs_setxattr"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:5965
+#: ../src/guestfs-actions.pod:5969
 #, no-wrap
 msgid ""
 " int\n"
@@ -17439,7 +17834,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5972 ../fish/guestfish-actions.pod:4027
+#: ../src/guestfs-actions.pod:5976 ../fish/guestfish-actions.pod:4031
 msgid ""
 "This call sets the extended attribute named C<xattr> of the file C<path> to "
 "the value C<val> (of length C<vallen>).  The value is arbitrary 8 bit data."
@@ -17447,19 +17842,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5976
+#: ../src/guestfs-actions.pod:5980
 msgid "See also: C<guestfs_lsetxattr>, L<attr(5)>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:5982
+#: ../src/guestfs-actions.pod:5986
 msgid "guestfs_sfdisk"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:5984
+#: ../src/guestfs-actions.pod:5988
 #, no-wrap
 msgid ""
 " int\n"
@@ -17474,7 +17869,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5992 ../fish/guestfish-actions.pod:4037
+#: ../src/guestfs-actions.pod:5996 ../fish/guestfish-actions.pod:4041
 msgid ""
 "This is a direct interface to the L<sfdisk(8)> program for creating "
 "partitions on block devices."
@@ -17482,13 +17877,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5995 ../fish/guestfish-actions.pod:4040
+#: ../src/guestfs-actions.pod:5999 ../fish/guestfish-actions.pod:4044
 msgid "C<device> should be a block device, for example C</dev/sda>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:5997 ../fish/guestfish-actions.pod:4042
+#: ../src/guestfs-actions.pod:6001 ../fish/guestfish-actions.pod:4046
 msgid ""
 "C<cyls>, C<heads> and C<sectors> are the number of cylinders, heads and "
 "sectors on the device, which are passed directly to sfdisk as the I<-C>, I<-"
@@ -17500,7 +17895,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6005 ../fish/guestfish-actions.pod:4050
+#: ../src/guestfs-actions.pod:6009 ../fish/guestfish-actions.pod:4054
 msgid ""
 "C<lines> is a list of lines that we feed to C<sfdisk>.  For more information "
 "refer to the L<sfdisk(8)> manpage."
@@ -17508,7 +17903,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6008 ../fish/guestfish-actions.pod:4053
+#: ../src/guestfs-actions.pod:6012 ../fish/guestfish-actions.pod:4057
 msgid ""
 "To create a single partition occupying the whole disk, you would pass "
 "C<lines> as a single element list, when the single element being the string "
@@ -17517,20 +17912,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6012
+#: ../src/guestfs-actions.pod:6016
 msgid ""
 "See also: C<guestfs_sfdisk_l>, C<guestfs_sfdisk_N>, C<guestfs_part_init>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6022
+#: ../src/guestfs-actions.pod:6026
 msgid "guestfs_sfdiskM"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6024
+#: ../src/guestfs-actions.pod:6028
 #, no-wrap
 msgid ""
 " int\n"
@@ -17542,7 +17937,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6029
+#: ../src/guestfs-actions.pod:6033
 msgid ""
 "This is a simplified interface to the C<guestfs_sfdisk> command, where "
 "partition sizes are specified in megabytes only (rounded to the nearest "
@@ -17552,7 +17947,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6035
+#: ../src/guestfs-actions.pod:6039
 msgid ""
 "See also: C<guestfs_sfdisk>, the L<sfdisk(8)> manpage and "
 "C<guestfs_part_disk>"
@@ -17560,13 +17955,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6045
+#: ../src/guestfs-actions.pod:6049
 msgid "guestfs_sfdisk_N"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6047
+#: ../src/guestfs-actions.pod:6051
 #, no-wrap
 msgid ""
 " int\n"
@@ -17582,7 +17977,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6056 ../fish/guestfish-actions.pod:4083
+#: ../src/guestfs-actions.pod:6060 ../fish/guestfish-actions.pod:4087
 msgid ""
 "This runs L<sfdisk(8)> option to modify just the single partition C<n> "
 "(note: C<n> counts from 1)."
@@ -17590,7 +17985,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6059
+#: ../src/guestfs-actions.pod:6063
 msgid ""
 "For other parameters, see C<guestfs_sfdisk>.  You should usually pass C<0> "
 "for the cyls/heads/sectors parameters."
@@ -17598,19 +17993,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6062
+#: ../src/guestfs-actions.pod:6066
 msgid "See also: C<guestfs_part_add>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6071
+#: ../src/guestfs-actions.pod:6075
 msgid "guestfs_sfdisk_disk_geometry"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6073
+#: ../src/guestfs-actions.pod:6077
 #, no-wrap
 msgid ""
 " char *\n"
@@ -17621,7 +18016,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6077
+#: ../src/guestfs-actions.pod:6081
 msgid ""
 "This displays the disk geometry of C<device> read from the partition table.  "
 "Especially in the case where the underlying block device has been resized, "
@@ -17631,20 +18026,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6082 ../src/guestfs-actions.pod:6098
-#: ../fish/guestfish-actions.pod:4103 ../fish/guestfish-actions.pod:4112
+#: ../src/guestfs-actions.pod:6086 ../src/guestfs-actions.pod:6102
+#: ../fish/guestfish-actions.pod:4107 ../fish/guestfish-actions.pod:4116
 msgid "The result is in human-readable format, and not designed to be parsed."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6090
+#: ../src/guestfs-actions.pod:6094
 msgid "guestfs_sfdisk_kernel_geometry"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6092
+#: ../src/guestfs-actions.pod:6096
 #, no-wrap
 msgid ""
 " char *\n"
@@ -17655,19 +18050,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6096 ../fish/guestfish-actions.pod:4110
+#: ../src/guestfs-actions.pod:6100 ../fish/guestfish-actions.pod:4114
 msgid "This displays the kernel's idea of the geometry of C<device>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6106
+#: ../src/guestfs-actions.pod:6110
 msgid "guestfs_sfdisk_l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6108
+#: ../src/guestfs-actions.pod:6112
 #, no-wrap
 msgid ""
 " char *\n"
@@ -17678,7 +18073,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6112 ../fish/guestfish-actions.pod:4119
+#: ../src/guestfs-actions.pod:6116 ../fish/guestfish-actions.pod:4123
 msgid ""
 "This displays the partition table on C<device>, in the human-readable output "
 "of the L<sfdisk(8)> command.  It is not intended to be parsed."
@@ -17686,19 +18081,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6116
+#: ../src/guestfs-actions.pod:6120
 msgid "See also: C<guestfs_part_list>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6123
+#: ../src/guestfs-actions.pod:6127
 msgid "guestfs_sh"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6125
+#: ../src/guestfs-actions.pod:6129
 #, no-wrap
 msgid ""
 " char *\n"
@@ -17709,7 +18104,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6129 ../fish/guestfish-actions.pod:4129
+#: ../src/guestfs-actions.pod:6133 ../fish/guestfish-actions.pod:4133
 msgid ""
 "This call runs a command from the guest filesystem via the guest's C</bin/"
 "sh>."
@@ -17717,13 +18112,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6132
+#: ../src/guestfs-actions.pod:6136
 msgid "This is like C<guestfs_command>, but passes the command to:"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6134 ../fish/guestfish-actions.pod:4134
+#: ../src/guestfs-actions.pod:6138 ../fish/guestfish-actions.pod:4138
 #, no-wrap
 msgid ""
 " /bin/sh -c \"command\"\n"
@@ -17732,7 +18127,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6136 ../fish/guestfish-actions.pod:4136
+#: ../src/guestfs-actions.pod:6140 ../fish/guestfish-actions.pod:4140
 msgid ""
 "Depending on the guest's shell, this usually results in wildcards being "
 "expanded, shell expressions being interpolated and so on."
@@ -17740,19 +18135,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6140
+#: ../src/guestfs-actions.pod:6144
 msgid "All the provisos about C<guestfs_command> apply to this call."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6147
+#: ../src/guestfs-actions.pod:6151
 msgid "guestfs_sh_lines"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6149
+#: ../src/guestfs-actions.pod:6153
 #, no-wrap
 msgid ""
 " char **\n"
@@ -17763,7 +18158,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6153
+#: ../src/guestfs-actions.pod:6157
 msgid ""
 "This is the same as C<guestfs_sh>, but splits the result into a list of "
 "lines."
@@ -17771,19 +18166,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6156
+#: ../src/guestfs-actions.pod:6160
 msgid "See also: C<guestfs_command_lines>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6164
+#: ../src/guestfs-actions.pod:6168
 msgid "guestfs_sleep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6166
+#: ../src/guestfs-actions.pod:6170
 #, no-wrap
 msgid ""
 " int\n"
@@ -17794,25 +18189,25 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6170 ../fish/guestfish-actions.pod:4155
+#: ../src/guestfs-actions.pod:6174 ../fish/guestfish-actions.pod:4159
 msgid "Sleep for C<secs> seconds."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6174
+#: ../src/guestfs-actions.pod:6178
 msgid "(Added in 1.0.41)"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6176 ../src/guestfs-structs.pod:109
+#: ../src/guestfs-actions.pod:6180 ../src/guestfs-structs.pod:109
 msgid "guestfs_stat"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6178
+#: ../src/guestfs-actions.pod:6182
 #, no-wrap
 msgid ""
 " struct guestfs_stat *\n"
@@ -17823,19 +18218,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6184 ../fish/guestfish-actions.pod:4163
+#: ../src/guestfs-actions.pod:6188 ../fish/guestfish-actions.pod:4167
 msgid "This is the same as the C<stat(2)> system call."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6192 ../src/guestfs-structs.pod:135
+#: ../src/guestfs-actions.pod:6196 ../src/guestfs-structs.pod:135
 msgid "guestfs_statvfs"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6194
+#: ../src/guestfs-actions.pod:6198
 #, no-wrap
 msgid ""
 " struct guestfs_statvfs *\n"
@@ -17846,7 +18241,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6198 ../fish/guestfish-actions.pod:4169
+#: ../src/guestfs-actions.pod:6202 ../fish/guestfish-actions.pod:4173
 msgid ""
 "Returns file system statistics for any mounted file system.  C<path> should "
 "be a file or directory in the mounted file system (typically it is the mount "
@@ -17855,13 +18250,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6202 ../fish/guestfish-actions.pod:4173
+#: ../src/guestfs-actions.pod:6206 ../fish/guestfish-actions.pod:4177
 msgid "This is the same as the C<statvfs(2)> system call."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6204
+#: ../src/guestfs-actions.pod:6208
 msgid ""
 "This function returns a C<struct guestfs_statvfs *>, or NULL if there was an "
 "error.  I<The caller must call C<guestfs_free_statvfs> after use>."
@@ -17869,13 +18264,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6210
+#: ../src/guestfs-actions.pod:6214
 msgid "guestfs_strings"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6212
+#: ../src/guestfs-actions.pod:6216
 #, no-wrap
 msgid ""
 " char **\n"
@@ -17886,7 +18281,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6216 ../fish/guestfish-actions.pod:4179
+#: ../src/guestfs-actions.pod:6220 ../fish/guestfish-actions.pod:4183
 msgid ""
 "This runs the L<strings(1)> command on a file and returns the list of "
 "printable strings found."
@@ -17894,13 +18289,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6228
+#: ../src/guestfs-actions.pod:6232
 msgid "guestfs_strings_e"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6230
+#: ../src/guestfs-actions.pod:6234
 #, no-wrap
 msgid ""
 " char **\n"
@@ -17912,7 +18307,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6235
+#: ../src/guestfs-actions.pod:6239
 msgid ""
 "This is like the C<guestfs_strings> command, but allows you to specify the "
 "encoding of strings that are looked for in the source file C<path>."
@@ -17920,19 +18315,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6239 ../fish/guestfish-actions.pod:4193
+#: ../src/guestfs-actions.pod:6243 ../fish/guestfish-actions.pod:4197
 msgid "Allowed encodings are:"
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6243 ../fish/guestfish-actions.pod:4197
+#: ../src/guestfs-actions.pod:6247 ../fish/guestfish-actions.pod:4201
 msgid "s"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6245
+#: ../src/guestfs-actions.pod:6249
 msgid ""
 "Single 7-bit-byte characters like ASCII and the ASCII-compatible parts of "
 "ISO-8859-X (this is what C<guestfs_strings> uses)."
@@ -17940,37 +18335,37 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6248 ../fish/guestfish-actions.pod:4202
+#: ../src/guestfs-actions.pod:6252 ../fish/guestfish-actions.pod:4206
 msgid "S"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6250 ../fish/guestfish-actions.pod:4204
+#: ../src/guestfs-actions.pod:6254 ../fish/guestfish-actions.pod:4208
 msgid "Single 8-bit-byte characters."
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6252 ../fish/guestfish-actions.pod:4206
+#: ../src/guestfs-actions.pod:6256 ../fish/guestfish-actions.pod:4210
 msgid "b"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6254 ../fish/guestfish-actions.pod:4208
+#: ../src/guestfs-actions.pod:6258 ../fish/guestfish-actions.pod:4212
 msgid "16-bit big endian strings such as those encoded in UTF-16BE or UCS-2BE."
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6257 ../fish/guestfish-actions.pod:4211
+#: ../src/guestfs-actions.pod:6261 ../fish/guestfish-actions.pod:4215
 msgid "l (lower case letter L)"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6259 ../fish/guestfish-actions.pod:4213
+#: ../src/guestfs-actions.pod:6263 ../fish/guestfish-actions.pod:4217
 msgid ""
 "16-bit little endian such as UTF-16LE and UCS-2LE.  This is useful for "
 "examining binaries in Windows guests."
@@ -17978,43 +18373,43 @@ msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6262 ../fish/guestfish-actions.pod:4216
+#: ../src/guestfs-actions.pod:6266 ../fish/guestfish-actions.pod:4220
 msgid "B"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6264 ../fish/guestfish-actions.pod:4218
+#: ../src/guestfs-actions.pod:6268 ../fish/guestfish-actions.pod:4222
 msgid "32-bit big endian such as UCS-4BE."
 msgstr ""
 
 # type: =item
 #. type: =item
-#: ../src/guestfs-actions.pod:6266 ../fish/guestfish-actions.pod:4220
+#: ../src/guestfs-actions.pod:6270 ../fish/guestfish-actions.pod:4224
 msgid "L"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6268 ../fish/guestfish-actions.pod:4222
+#: ../src/guestfs-actions.pod:6272 ../fish/guestfish-actions.pod:4226
 msgid "32-bit little endian such as UCS-4LE."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6272 ../fish/guestfish-actions.pod:4226
+#: ../src/guestfs-actions.pod:6276 ../fish/guestfish-actions.pod:4230
 msgid "The returned strings are transcoded to UTF-8."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6283
+#: ../src/guestfs-actions.pod:6287
 msgid "guestfs_swapoff_device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6285
+#: ../src/guestfs-actions.pod:6289
 #, no-wrap
 msgid ""
 " int\n"
@@ -18025,7 +18420,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6289
+#: ../src/guestfs-actions.pod:6293
 msgid ""
 "This command disables the libguestfs appliance swap device or partition "
 "named C<device>.  See C<guestfs_swapon_device>."
@@ -18033,13 +18428,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6297
+#: ../src/guestfs-actions.pod:6301
 msgid "guestfs_swapoff_file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6299
+#: ../src/guestfs-actions.pod:6303
 #, no-wrap
 msgid ""
 " int\n"
@@ -18050,19 +18445,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6303 ../fish/guestfish-actions.pod:4243
+#: ../src/guestfs-actions.pod:6307 ../fish/guestfish-actions.pod:4247
 msgid "This command disables the libguestfs appliance swap on file."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6309
+#: ../src/guestfs-actions.pod:6313
 msgid "guestfs_swapoff_label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6311
+#: ../src/guestfs-actions.pod:6315
 #, no-wrap
 msgid ""
 " int\n"
@@ -18073,7 +18468,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6315 ../fish/guestfish-actions.pod:4249
+#: ../src/guestfs-actions.pod:6319 ../fish/guestfish-actions.pod:4253
 msgid ""
 "This command disables the libguestfs appliance swap on labeled swap "
 "partition."
@@ -18081,13 +18476,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6322
+#: ../src/guestfs-actions.pod:6326
 msgid "guestfs_swapoff_uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6324
+#: ../src/guestfs-actions.pod:6328
 #, no-wrap
 msgid ""
 " int\n"
@@ -18098,7 +18493,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6328 ../fish/guestfish-actions.pod:4256
+#: ../src/guestfs-actions.pod:6332 ../fish/guestfish-actions.pod:4260
 msgid ""
 "This command disables the libguestfs appliance swap partition with the given "
 "UUID."
@@ -18106,13 +18501,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6335
+#: ../src/guestfs-actions.pod:6339
 msgid "guestfs_swapon_device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6337
+#: ../src/guestfs-actions.pod:6341
 #, no-wrap
 msgid ""
 " int\n"
@@ -18123,7 +18518,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6341
+#: ../src/guestfs-actions.pod:6345
 msgid ""
 "This command enables the libguestfs appliance to use the swap device or "
 "partition named C<device>.  The increased memory is made available for all "
@@ -18132,7 +18527,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6346 ../fish/guestfish-actions.pod:4268
+#: ../src/guestfs-actions.pod:6350 ../fish/guestfish-actions.pod:4272
 msgid ""
 "Note that you should not swap to existing guest swap partitions unless you "
 "know what you are doing.  They may contain hibernation information, or other "
@@ -18143,13 +18538,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6357
+#: ../src/guestfs-actions.pod:6361
 msgid "guestfs_swapon_file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6359
+#: ../src/guestfs-actions.pod:6363
 #, no-wrap
 msgid ""
 " int\n"
@@ -18160,7 +18555,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6363
+#: ../src/guestfs-actions.pod:6367
 msgid ""
 "This command enables swap to a file.  See C<guestfs_swapon_device> for other "
 "notes."
@@ -18168,13 +18563,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6370
+#: ../src/guestfs-actions.pod:6374
 msgid "guestfs_swapon_label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6372
+#: ../src/guestfs-actions.pod:6376
 #, no-wrap
 msgid ""
 " int\n"
@@ -18185,7 +18580,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6376
+#: ../src/guestfs-actions.pod:6380
 msgid ""
 "This command enables swap to a labeled swap partition.  See "
 "C<guestfs_swapon_device> for other notes."
@@ -18193,13 +18588,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6383
+#: ../src/guestfs-actions.pod:6387
 msgid "guestfs_swapon_uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6385
+#: ../src/guestfs-actions.pod:6389
 #, no-wrap
 msgid ""
 " int\n"
@@ -18210,7 +18605,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6389
+#: ../src/guestfs-actions.pod:6393
 msgid ""
 "This command enables swap to a swap partition with the given UUID.  See "
 "C<guestfs_swapon_device> for other notes."
@@ -18218,13 +18613,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6396
+#: ../src/guestfs-actions.pod:6400
 msgid "guestfs_sync"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6398
+#: ../src/guestfs-actions.pod:6402
 #, no-wrap
 msgid ""
 " int\n"
@@ -18234,7 +18629,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6401 ../fish/guestfish-actions.pod:4300
+#: ../src/guestfs-actions.pod:6405 ../fish/guestfish-actions.pod:4304
 msgid ""
 "This syncs the disk, so that any writes are flushed through to the "
 "underlying disk image."
@@ -18242,7 +18637,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6404 ../fish/guestfish-actions.pod:4303
+#: ../src/guestfs-actions.pod:6408 ../fish/guestfish-actions.pod:4307
 msgid ""
 "You should always call this if you have modified a disk image, before "
 "closing the handle."
@@ -18250,13 +18645,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6411
+#: ../src/guestfs-actions.pod:6415
 msgid "guestfs_tail"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6413
+#: ../src/guestfs-actions.pod:6417
 #, no-wrap
 msgid ""
 " char **\n"
@@ -18267,20 +18662,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6417 ../fish/guestfish-actions.pod:4310
+#: ../src/guestfs-actions.pod:6421 ../fish/guestfish-actions.pod:4314
 msgid ""
 "This command returns up to the last 10 lines of a file as a list of strings."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6429
+#: ../src/guestfs-actions.pod:6433
 msgid "guestfs_tail_n"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6431
+#: ../src/guestfs-actions.pod:6435
 #, no-wrap
 msgid ""
 " char **\n"
@@ -18292,7 +18687,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6436 ../fish/guestfish-actions.pod:4320
+#: ../src/guestfs-actions.pod:6440 ../fish/guestfish-actions.pod:4324
 msgid ""
 "If the parameter C<nrlines> is a positive number, this returns the last "
 "C<nrlines> lines of the file C<path>."
@@ -18300,7 +18695,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6439 ../fish/guestfish-actions.pod:4323
+#: ../src/guestfs-actions.pod:6443 ../fish/guestfish-actions.pod:4327
 msgid ""
 "If the parameter C<nrlines> is a negative number, this returns lines from "
 "the file C<path>, starting with the C<-nrlines>th line."
@@ -18308,13 +18703,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6453
+#: ../src/guestfs-actions.pod:6457
 msgid "guestfs_tar_in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6455
+#: ../src/guestfs-actions.pod:6459
 #, no-wrap
 msgid ""
 " int\n"
@@ -18326,7 +18721,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6460 ../fish/guestfish-actions.pod:4335
+#: ../src/guestfs-actions.pod:6464 ../fish/guestfish-actions.pod:4339
 msgid ""
 "This command uploads and unpacks local file C<tarfile> (an I<uncompressed> "
 "tar file) into C<directory>."
@@ -18334,27 +18729,27 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6463
+#: ../src/guestfs-actions.pod:6467
 msgid ""
 "To upload a compressed tarball, use C<guestfs_tgz_in> or C<guestfs_txz_in>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6468 ../src/guestfs-actions.pod:6485
-#: ../src/guestfs-actions.pod:6501 ../src/guestfs-actions.pod:6517
+#: ../src/guestfs-actions.pod:6472 ../src/guestfs-actions.pod:6489
+#: ../src/guestfs-actions.pod:6505 ../src/guestfs-actions.pod:6521
 msgid "(Added in 1.0.3)"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6470
+#: ../src/guestfs-actions.pod:6474
 msgid "guestfs_tar_out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6472
+#: ../src/guestfs-actions.pod:6476
 #, no-wrap
 msgid ""
 " int\n"
@@ -18366,7 +18761,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6477 ../fish/guestfish-actions.pod:4347
+#: ../src/guestfs-actions.pod:6481 ../fish/guestfish-actions.pod:4351
 msgid ""
 "This command packs the contents of C<directory> and downloads it to local "
 "file C<tarfile>."
@@ -18374,7 +18769,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6480
+#: ../src/guestfs-actions.pod:6484
 msgid ""
 "To download a compressed tarball, use C<guestfs_tgz_out> or "
 "C<guestfs_txz_out>."
@@ -18382,13 +18777,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6487
+#: ../src/guestfs-actions.pod:6491
 msgid "guestfs_tgz_in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6489
+#: ../src/guestfs-actions.pod:6493
 #, no-wrap
 msgid ""
 " int\n"
@@ -18400,7 +18795,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6494 ../fish/guestfish-actions.pod:4359
+#: ../src/guestfs-actions.pod:6498 ../fish/guestfish-actions.pod:4363
 msgid ""
 "This command uploads and unpacks local file C<tarball> (a I<gzip compressed> "
 "tar file) into C<directory>."
@@ -18408,19 +18803,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6497
+#: ../src/guestfs-actions.pod:6501
 msgid "To upload an uncompressed tarball, use C<guestfs_tar_in>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6503
+#: ../src/guestfs-actions.pod:6507
 msgid "guestfs_tgz_out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6505
+#: ../src/guestfs-actions.pod:6509
 #, no-wrap
 msgid ""
 " int\n"
@@ -18432,7 +18827,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6510 ../fish/guestfish-actions.pod:4370
+#: ../src/guestfs-actions.pod:6514 ../fish/guestfish-actions.pod:4374
 msgid ""
 "This command packs the contents of C<directory> and downloads it to local "
 "file C<tarball>."
@@ -18440,19 +18835,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6513
+#: ../src/guestfs-actions.pod:6517
 msgid "To download an uncompressed tarball, use C<guestfs_tar_out>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6519
+#: ../src/guestfs-actions.pod:6523
 msgid "guestfs_touch"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6521
+#: ../src/guestfs-actions.pod:6525
 #, no-wrap
 msgid ""
 " int\n"
@@ -18463,7 +18858,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6525 ../fish/guestfish-actions.pod:4381
+#: ../src/guestfs-actions.pod:6529 ../fish/guestfish-actions.pod:4385
 msgid ""
 "Touch acts like the L<touch(1)> command.  It can be used to update the "
 "timestamps on a file, or, if the file does not exist, to create a new zero-"
@@ -18472,7 +18867,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6529 ../fish/guestfish-actions.pod:4385
+#: ../src/guestfs-actions.pod:6533 ../fish/guestfish-actions.pod:4389
 msgid ""
 "This command only works on regular files, and will fail on other file types "
 "such as directories, symbolic links, block special etc."
@@ -18480,13 +18875,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6536
+#: ../src/guestfs-actions.pod:6540
 msgid "guestfs_truncate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6538
+#: ../src/guestfs-actions.pod:6542
 #, no-wrap
 msgid ""
 " int\n"
@@ -18497,7 +18892,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6542 ../fish/guestfish-actions.pod:4392
+#: ../src/guestfs-actions.pod:6546 ../fish/guestfish-actions.pod:4396
 msgid ""
 "This command truncates C<path> to a zero-length file.  The file must exist "
 "already."
@@ -18505,13 +18900,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6549
+#: ../src/guestfs-actions.pod:6553
 msgid "guestfs_truncate_size"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6551
+#: ../src/guestfs-actions.pod:6555
 #, no-wrap
 msgid ""
 " int\n"
@@ -18523,7 +18918,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6556 ../fish/guestfish-actions.pod:4399
+#: ../src/guestfs-actions.pod:6560 ../fish/guestfish-actions.pod:4403
 msgid ""
 "This command truncates C<path> to size C<size> bytes.  The file must exist "
 "already."
@@ -18531,7 +18926,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6559
+#: ../src/guestfs-actions.pod:6563
 msgid ""
 "If the current file size is less than C<size> then the file is extended to "
 "the required size with zero bytes.  This creates a sparse file (ie. disk "
@@ -18541,13 +18936,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6569
+#: ../src/guestfs-actions.pod:6573
 msgid "guestfs_tune2fs_l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6571
+#: ../src/guestfs-actions.pod:6575
 #, no-wrap
 msgid ""
 " char **\n"
@@ -18558,7 +18953,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6575 ../fish/guestfish-actions.pod:4412
+#: ../src/guestfs-actions.pod:6579 ../fish/guestfish-actions.pod:4416
 msgid ""
 "This returns the contents of the ext2, ext3 or ext4 filesystem superblock on "
 "C<device>."
@@ -18566,7 +18961,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6578 ../fish/guestfish-actions.pod:4415
+#: ../src/guestfs-actions.pod:6582 ../fish/guestfish-actions.pod:4419
 msgid ""
 "It is the same as running C<tune2fs -l device>.  See L<tune2fs(8)> manpage "
 "for more details.  The list of fields returned isn't clearly defined, and "
@@ -18576,13 +18971,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6591
+#: ../src/guestfs-actions.pod:6595
 msgid "guestfs_txz_in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6593
+#: ../src/guestfs-actions.pod:6597
 #, no-wrap
 msgid ""
 " int\n"
@@ -18594,7 +18989,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6598 ../fish/guestfish-actions.pod:4424
+#: ../src/guestfs-actions.pod:6602 ../fish/guestfish-actions.pod:4428
 msgid ""
 "This command uploads and unpacks local file C<tarball> (an I<xz compressed> "
 "tar file) into C<directory>."
@@ -18602,13 +18997,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6605
+#: ../src/guestfs-actions.pod:6609
 msgid "guestfs_txz_out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6607
+#: ../src/guestfs-actions.pod:6611
 #, no-wrap
 msgid ""
 " int\n"
@@ -18620,7 +19015,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6612 ../fish/guestfish-actions.pod:4433
+#: ../src/guestfs-actions.pod:6616 ../fish/guestfish-actions.pod:4437
 msgid ""
 "This command packs the contents of C<directory> and downloads it to local "
 "file C<tarball> (as an xz compressed tar archive)."
@@ -18628,13 +19023,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6619
+#: ../src/guestfs-actions.pod:6623
 msgid "guestfs_umask"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6621
+#: ../src/guestfs-actions.pod:6625
 #, no-wrap
 msgid ""
 " int\n"
@@ -18645,7 +19040,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6625 ../fish/guestfish-actions.pod:4442
+#: ../src/guestfs-actions.pod:6629 ../fish/guestfish-actions.pod:4446
 msgid ""
 "This function sets the mask used for creating new files and device nodes to "
 "C<mask & 0777>."
@@ -18653,7 +19048,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6628 ../fish/guestfish-actions.pod:4445
+#: ../src/guestfs-actions.pod:6632 ../fish/guestfish-actions.pod:4449
 msgid ""
 "Typical umask values would be C<022> which creates new files with "
 "permissions like \"-rw-r--r--\" or \"-rwxr-xr-x\", and C<002> which creates "
@@ -18662,7 +19057,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6633 ../fish/guestfish-actions.pod:4450
+#: ../src/guestfs-actions.pod:6637 ../fish/guestfish-actions.pod:4454
 msgid ""
 "The default umask is C<022>.  This is important because it means that "
 "directories and device nodes will be created with C<0644> or C<0755> mode "
@@ -18671,7 +19066,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6637
+#: ../src/guestfs-actions.pod:6641
 msgid ""
 "See also C<guestfs_get_umask>, L<umask(2)>, C<guestfs_mknod>, "
 "C<guestfs_mkdir>."
@@ -18679,19 +19074,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6640 ../fish/guestfish-actions.pod:4457
+#: ../src/guestfs-actions.pod:6644 ../fish/guestfish-actions.pod:4461
 msgid "This call returns the previous umask."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6646
+#: ../src/guestfs-actions.pod:6650
 msgid "guestfs_umount"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6648
+#: ../src/guestfs-actions.pod:6652
 #, no-wrap
 msgid ""
 " int\n"
@@ -18702,7 +19097,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6652 ../fish/guestfish-actions.pod:4465
+#: ../src/guestfs-actions.pod:6656 ../fish/guestfish-actions.pod:4469
 msgid ""
 "This unmounts the given filesystem.  The filesystem may be specified either "
 "by its mountpoint (path) or the device which contains the filesystem."
@@ -18710,13 +19105,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6660
+#: ../src/guestfs-actions.pod:6664
 msgid "guestfs_umount_all"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6662
+#: ../src/guestfs-actions.pod:6666
 #, no-wrap
 msgid ""
 " int\n"
@@ -18726,25 +19121,25 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6665 ../fish/guestfish-actions.pod:4475
+#: ../src/guestfs-actions.pod:6669 ../fish/guestfish-actions.pod:4479
 msgid "This unmounts all mounted filesystems."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6667 ../fish/guestfish-actions.pod:4477
+#: ../src/guestfs-actions.pod:6671 ../fish/guestfish-actions.pod:4481
 msgid "Some internal mounts are not unmounted by this call."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6673
+#: ../src/guestfs-actions.pod:6677
 msgid "guestfs_upload"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6675
+#: ../src/guestfs-actions.pod:6679
 #, no-wrap
 msgid ""
 " int\n"
@@ -18756,26 +19151,26 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6680 ../src/guestfs-actions.pod:6704
-#: ../fish/guestfish-actions.pod:4483 ../fish/guestfish-actions.pod:4496
+#: ../src/guestfs-actions.pod:6684 ../src/guestfs-actions.pod:6708
+#: ../fish/guestfish-actions.pod:4487 ../fish/guestfish-actions.pod:4500
 msgid "Upload local file C<filename> to C<remotefilename> on the filesystem."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6685
+#: ../src/guestfs-actions.pod:6689
 msgid "See also C<guestfs_download>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6696
+#: ../src/guestfs-actions.pod:6700
 msgid "guestfs_upload_offset"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6698
+#: ../src/guestfs-actions.pod:6702
 #, no-wrap
 msgid ""
 " int\n"
@@ -18788,7 +19183,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6707 ../fish/guestfish-actions.pod:4499
+#: ../src/guestfs-actions.pod:6711 ../fish/guestfish-actions.pod:4503
 msgid ""
 "C<remotefilename> is overwritten starting at the byte C<offset> specified.  "
 "The intention is to overwrite parts of existing files or devices, although "
@@ -18799,7 +19194,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6714
+#: ../src/guestfs-actions.pod:6718
 msgid ""
 "Note that there is no limit on the amount of data that can be uploaded with "
 "this call, unlike with C<guestfs_pwrite>, and this call always writes the "
@@ -18808,19 +19203,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6719
+#: ../src/guestfs-actions.pod:6723
 msgid "See also C<guestfs_upload>, C<guestfs_pwrite>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6730
+#: ../src/guestfs-actions.pod:6734
 msgid "guestfs_utimens"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6732
+#: ../src/guestfs-actions.pod:6736
 #, no-wrap
 msgid ""
 " int\n"
@@ -18835,13 +19230,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6740 ../fish/guestfish-actions.pod:4519
+#: ../src/guestfs-actions.pod:6744 ../fish/guestfish-actions.pod:4523
 msgid "This command sets the timestamps of a file with nanosecond precision."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6743 ../fish/guestfish-actions.pod:4522
+#: ../src/guestfs-actions.pod:6747 ../fish/guestfish-actions.pod:4526
 msgid ""
 "C<atsecs, atnsecs> are the last access time (atime) in secs and nanoseconds "
 "from the epoch."
@@ -18849,7 +19244,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6746 ../fish/guestfish-actions.pod:4525
+#: ../src/guestfs-actions.pod:6750 ../fish/guestfish-actions.pod:4529
 msgid ""
 "C<mtsecs, mtnsecs> are the last modification time (mtime) in secs and "
 "nanoseconds from the epoch."
@@ -18857,7 +19252,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6749 ../fish/guestfish-actions.pod:4528
+#: ../src/guestfs-actions.pod:6753 ../fish/guestfish-actions.pod:4532
 msgid ""
 "If the C<*nsecs> field contains the special value C<-1> then the "
 "corresponding timestamp is set to the current time.  (The C<*secs> field is "
@@ -18866,7 +19261,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6753 ../fish/guestfish-actions.pod:4532
+#: ../src/guestfs-actions.pod:6757 ../fish/guestfish-actions.pod:4536
 msgid ""
 "If the C<*nsecs> field contains the special value C<-2> then the "
 "corresponding timestamp is left unchanged.  (The C<*secs> field is ignored "
@@ -18875,13 +19270,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6761 ../src/guestfs-structs.pod:175
+#: ../src/guestfs-actions.pod:6765 ../src/guestfs-structs.pod:175
 msgid "guestfs_version"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6763
+#: ../src/guestfs-actions.pod:6767
 #, no-wrap
 msgid ""
 " struct guestfs_version *\n"
@@ -18891,14 +19286,14 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6766 ../fish/guestfish-actions.pod:4540
+#: ../src/guestfs-actions.pod:6770 ../fish/guestfish-actions.pod:4544
 msgid ""
 "Return the libguestfs version number that the program is linked against."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6769 ../fish/guestfish-actions.pod:4543
+#: ../src/guestfs-actions.pod:6773 ../fish/guestfish-actions.pod:4547
 msgid ""
 "Note that because of dynamic linking this is not necessarily the version of "
 "libguestfs that you compiled against.  You can compile the program, and then "
@@ -18908,7 +19303,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6774 ../fish/guestfish-actions.pod:4548
+#: ../src/guestfs-actions.pod:6778 ../fish/guestfish-actions.pod:4552
 msgid ""
 "This call was added in version C<1.0.58>.  In previous versions of "
 "libguestfs there was no way to get the version number.  From C code you can "
@@ -18918,7 +19313,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6780 ../fish/guestfish-actions.pod:4554
+#: ../src/guestfs-actions.pod:6784 ../fish/guestfish-actions.pod:4558
 msgid ""
 "The call returns a structure with four elements.  The first three (C<major>, "
 "C<minor> and C<release>) are numbers and correspond to the usual version "
@@ -18928,20 +19323,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6786 ../fish/guestfish-actions.pod:4560
+#: ../src/guestfs-actions.pod:6790 ../fish/guestfish-actions.pod:4564
 msgid ""
 "To construct the original version string: C<$major.$minor.$release$extra>"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6789 ../fish/guestfish-actions.pod:4563
+#: ../src/guestfs-actions.pod:6793 ../fish/guestfish-actions.pod:4567
 msgid "See also: L<guestfs(3)/LIBGUESTFS VERSION NUMBERS>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6791
+#: ../src/guestfs-actions.pod:6795
 msgid ""
 "I<Note:> Don't use this call to test for availability of features.  In "
 "enterprise distributions we backport features from later versions into "
@@ -18951,7 +19346,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6797
+#: ../src/guestfs-actions.pod:6801
 msgid ""
 "This function returns a C<struct guestfs_version *>, or NULL if there was an "
 "error.  I<The caller must call C<guestfs_free_version> after use>."
@@ -18959,19 +19354,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6801
+#: ../src/guestfs-actions.pod:6805
 msgid "(Added in 1.0.58)"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6803
+#: ../src/guestfs-actions.pod:6807
 msgid "guestfs_vfs_label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6805
+#: ../src/guestfs-actions.pod:6809
 #, no-wrap
 msgid ""
 " char *\n"
@@ -18982,37 +19377,37 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6809 ../fish/guestfish-actions.pod:4575
+#: ../src/guestfs-actions.pod:6813 ../fish/guestfish-actions.pod:4579
 msgid "This returns the filesystem label of the filesystem on C<device>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6812 ../fish/guestfish-actions.pod:4578
+#: ../src/guestfs-actions.pod:6816 ../fish/guestfish-actions.pod:4582
 msgid "If the filesystem is unlabeled, this returns the empty string."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6814
+#: ../src/guestfs-actions.pod:6818
 msgid "To find a filesystem from the label, use C<guestfs_findfs_label>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6819 ../src/guestfs-actions.pod:6856
+#: ../src/guestfs-actions.pod:6823 ../src/guestfs-actions.pod:6860
 msgid "(Added in 1.3.18)"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6821
+#: ../src/guestfs-actions.pod:6825
 msgid "guestfs_vfs_type"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6823
+#: ../src/guestfs-actions.pod:6827
 #, no-wrap
 msgid ""
 " char *\n"
@@ -19023,7 +19418,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6827 ../fish/guestfish-actions.pod:4586
+#: ../src/guestfs-actions.pod:6831 ../fish/guestfish-actions.pod:4590
 msgid ""
 "This command gets the filesystem type corresponding to the filesystem on "
 "C<device>."
@@ -19031,7 +19426,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6830 ../fish/guestfish-actions.pod:4589
+#: ../src/guestfs-actions.pod:6834 ../fish/guestfish-actions.pod:4593
 msgid ""
 "For most filesystems, the result is the name of the Linux VFS module which "
 "would be used to mount this filesystem if you mounted it without specifying "
@@ -19040,13 +19435,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6840
+#: ../src/guestfs-actions.pod:6844
 msgid "guestfs_vfs_uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6842
+#: ../src/guestfs-actions.pod:6846
 #, no-wrap
 msgid ""
 " char *\n"
@@ -19057,31 +19452,31 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6846 ../fish/guestfish-actions.pod:4598
+#: ../src/guestfs-actions.pod:6850 ../fish/guestfish-actions.pod:4602
 msgid "This returns the filesystem UUID of the filesystem on C<device>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6849 ../fish/guestfish-actions.pod:4601
+#: ../src/guestfs-actions.pod:6853 ../fish/guestfish-actions.pod:4605
 msgid "If the filesystem does not have a UUID, this returns the empty string."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6851
+#: ../src/guestfs-actions.pod:6855
 msgid "To find a filesystem from the UUID, use C<guestfs_findfs_uuid>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6858
+#: ../src/guestfs-actions.pod:6862
 msgid "guestfs_vg_activate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6860
+#: ../src/guestfs-actions.pod:6864
 #, no-wrap
 msgid ""
 " int\n"
@@ -19093,7 +19488,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6865 ../fish/guestfish-actions.pod:4609
+#: ../src/guestfs-actions.pod:6869 ../fish/guestfish-actions.pod:4613
 msgid ""
 "This command activates or (if C<activate> is false) deactivates all logical "
 "volumes in the listed volume groups C<volgroups>.  If activated, then they "
@@ -19103,13 +19498,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6871 ../fish/guestfish-actions.pod:4615
+#: ../src/guestfs-actions.pod:6875 ../fish/guestfish-actions.pod:4619
 msgid "This command is the same as running C<vgchange -a y|n volgroups...>"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6873 ../fish/guestfish-actions.pod:4617
+#: ../src/guestfs-actions.pod:6877 ../fish/guestfish-actions.pod:4621
 msgid ""
 "Note that if C<volgroups> is an empty list then B<all> volume groups are "
 "activated or deactivated."
@@ -19117,13 +19512,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6880
+#: ../src/guestfs-actions.pod:6884
 msgid "guestfs_vg_activate_all"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6882
+#: ../src/guestfs-actions.pod:6886
 #, no-wrap
 msgid ""
 " int\n"
@@ -19134,7 +19529,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6886 ../fish/guestfish-actions.pod:4624
+#: ../src/guestfs-actions.pod:6890 ../fish/guestfish-actions.pod:4628
 msgid ""
 "This command activates or (if C<activate> is false) deactivates all logical "
 "volumes in all volume groups.  If activated, then they are made known to the "
@@ -19144,19 +19539,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6892 ../fish/guestfish-actions.pod:4630
+#: ../src/guestfs-actions.pod:6896 ../fish/guestfish-actions.pod:4634
 msgid "This command is the same as running C<vgchange -a y|n>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6898
+#: ../src/guestfs-actions.pod:6902
 msgid "guestfs_vgcreate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6900
+#: ../src/guestfs-actions.pod:6904
 #, no-wrap
 msgid ""
 " int\n"
@@ -19168,7 +19563,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6905 ../fish/guestfish-actions.pod:4636
+#: ../src/guestfs-actions.pod:6909 ../fish/guestfish-actions.pod:4640
 msgid ""
 "This creates an LVM volume group called C<volgroup> from the non-empty list "
 "of physical volumes C<physvols>."
@@ -19176,13 +19571,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6912
+#: ../src/guestfs-actions.pod:6916
 msgid "guestfs_vglvuuids"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6914
+#: ../src/guestfs-actions.pod:6918
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19193,7 +19588,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6918 ../fish/guestfish-actions.pod:4643
+#: ../src/guestfs-actions.pod:6922 ../fish/guestfish-actions.pod:4647
 msgid ""
 "Given a VG called C<vgname>, this returns the UUIDs of all the logical "
 "volumes created in this volume group."
@@ -19201,7 +19596,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6921
+#: ../src/guestfs-actions.pod:6925
 msgid ""
 "You can use this along with C<guestfs_lvs> and C<guestfs_lvuuid> calls to "
 "associate logical volumes and volume groups."
@@ -19209,19 +19604,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6924
+#: ../src/guestfs-actions.pod:6928
 msgid "See also C<guestfs_vgpvuuids>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6932
+#: ../src/guestfs-actions.pod:6936
 msgid "guestfs_vgpvuuids"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6934
+#: ../src/guestfs-actions.pod:6938
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19232,7 +19627,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6938 ../fish/guestfish-actions.pod:4655
+#: ../src/guestfs-actions.pod:6942 ../fish/guestfish-actions.pod:4659
 msgid ""
 "Given a VG called C<vgname>, this returns the UUIDs of all the physical "
 "volumes that this volume group resides on."
@@ -19240,7 +19635,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6941
+#: ../src/guestfs-actions.pod:6945
 msgid ""
 "You can use this along with C<guestfs_pvs> and C<guestfs_pvuuid> calls to "
 "associate physical volumes and volume groups."
@@ -19248,19 +19643,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6944
+#: ../src/guestfs-actions.pod:6948
 msgid "See also C<guestfs_vglvuuids>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6952
+#: ../src/guestfs-actions.pod:6956
 msgid "guestfs_vgremove"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6954
+#: ../src/guestfs-actions.pod:6958
 #, no-wrap
 msgid ""
 " int\n"
@@ -19271,26 +19666,26 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6958 ../fish/guestfish-actions.pod:4667
+#: ../src/guestfs-actions.pod:6962 ../fish/guestfish-actions.pod:4671
 msgid "Remove an LVM volume group C<vgname>, (for example C<VG>)."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6960 ../fish/guestfish-actions.pod:4669
+#: ../src/guestfs-actions.pod:6964 ../fish/guestfish-actions.pod:4673
 msgid ""
 "This also forcibly removes all logical volumes in the volume group (if any)."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6967
+#: ../src/guestfs-actions.pod:6971
 msgid "guestfs_vgrename"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6969
+#: ../src/guestfs-actions.pod:6973
 #, no-wrap
 msgid ""
 " int\n"
@@ -19302,19 +19697,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6974 ../fish/guestfish-actions.pod:4676
+#: ../src/guestfs-actions.pod:6978 ../fish/guestfish-actions.pod:4680
 msgid "Rename a volume group C<volgroup> with the new name C<newvolgroup>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6980
+#: ../src/guestfs-actions.pod:6984
 msgid "guestfs_vgs"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:6982
+#: ../src/guestfs-actions.pod:6986
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19324,7 +19719,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6985 ../fish/guestfish-actions.pod:4682
+#: ../src/guestfs-actions.pod:6989 ../fish/guestfish-actions.pod:4686
 msgid ""
 "List all the volumes groups detected.  This is the equivalent of the L<vgs(8)"
 "> command."
@@ -19332,7 +19727,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6988 ../fish/guestfish-actions.pod:4685
+#: ../src/guestfs-actions.pod:6992 ../fish/guestfish-actions.pod:4689
 msgid ""
 "This returns a list of just the volume group names that were detected (eg. "
 "C<VolGroup00>)."
@@ -19340,19 +19735,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:6991
+#: ../src/guestfs-actions.pod:6995
 msgid "See also C<guestfs_vgs_full>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:6999
+#: ../src/guestfs-actions.pod:7003
 msgid "guestfs_vgs_full"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7001
+#: ../src/guestfs-actions.pod:7005
 #, no-wrap
 msgid ""
 " struct guestfs_lvm_vg_list *\n"
@@ -19362,7 +19757,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7004 ../fish/guestfish-actions.pod:4694
+#: ../src/guestfs-actions.pod:7008 ../fish/guestfish-actions.pod:4698
 msgid ""
 "List all the volumes groups detected.  This is the equivalent of the L<vgs(8)"
 "> command.  The \"full\" version includes all fields."
@@ -19370,7 +19765,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7007
+#: ../src/guestfs-actions.pod:7011
 msgid ""
 "This function returns a C<struct guestfs_lvm_vg_list *>, or NULL if there "
 "was an error.  I<The caller must call C<guestfs_free_lvm_vg_list> after use>."
@@ -19378,13 +19773,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7013
+#: ../src/guestfs-actions.pod:7017
 msgid "guestfs_vgscan"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7015
+#: ../src/guestfs-actions.pod:7019
 #, no-wrap
 msgid ""
 " int\n"
@@ -19394,7 +19789,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7018 ../fish/guestfish-actions.pod:4701
+#: ../src/guestfs-actions.pod:7022 ../fish/guestfish-actions.pod:4705
 msgid ""
 "This rescans all block devices and rebuilds the list of LVM physical "
 "volumes, volume groups and logical volumes."
@@ -19402,13 +19797,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7025
+#: ../src/guestfs-actions.pod:7029
 msgid "guestfs_vguuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7027
+#: ../src/guestfs-actions.pod:7031
 #, no-wrap
 msgid ""
 " char *\n"
@@ -19419,19 +19814,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7031 ../fish/guestfish-actions.pod:4708
+#: ../src/guestfs-actions.pod:7035 ../fish/guestfish-actions.pod:4712
 msgid "This command returns the UUID of the LVM VG named C<vgname>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7038
+#: ../src/guestfs-actions.pod:7042
 msgid "guestfs_wait_ready"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7040
+#: ../src/guestfs-actions.pod:7044
 #, no-wrap
 msgid ""
 " int\n"
@@ -19441,13 +19836,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7043
+#: ../src/guestfs-actions.pod:7047
 msgid "This function is a no op."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7045
+#: ../src/guestfs-actions.pod:7049
 msgid ""
 "In versions of the API E<lt> 1.0.71 you had to call this function just after "
 "calling C<guestfs_launch> to wait for the launch to complete.  However this "
@@ -19456,7 +19851,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7050
+#: ../src/guestfs-actions.pod:7054
 msgid ""
 "If you see any calls to this function in code then you can just remove them, "
 "unless you want to retain compatibility with older versions of the API."
@@ -19464,13 +19859,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7058
+#: ../src/guestfs-actions.pod:7062
 msgid "guestfs_wc_c"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7060
+#: ../src/guestfs-actions.pod:7064
 #, no-wrap
 msgid ""
 " int\n"
@@ -19481,7 +19876,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7064 ../fish/guestfish-actions.pod:4714
+#: ../src/guestfs-actions.pod:7068 ../fish/guestfish-actions.pod:4718
 msgid ""
 "This command counts the characters in a file, using the C<wc -c> external "
 "command."
@@ -19489,13 +19884,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7071
+#: ../src/guestfs-actions.pod:7075
 msgid "guestfs_wc_l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7073
+#: ../src/guestfs-actions.pod:7077
 #, no-wrap
 msgid ""
 " int\n"
@@ -19506,20 +19901,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7077 ../fish/guestfish-actions.pod:4721
+#: ../src/guestfs-actions.pod:7081 ../fish/guestfish-actions.pod:4725
 msgid ""
 "This command counts the lines in a file, using the C<wc -l> external command."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7084
+#: ../src/guestfs-actions.pod:7088
 msgid "guestfs_wc_w"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7086
+#: ../src/guestfs-actions.pod:7090
 #, no-wrap
 msgid ""
 " int\n"
@@ -19530,20 +19925,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7090 ../fish/guestfish-actions.pod:4728
+#: ../src/guestfs-actions.pod:7094 ../fish/guestfish-actions.pod:4732
 msgid ""
 "This command counts the words in a file, using the C<wc -w> external command."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7097
+#: ../src/guestfs-actions.pod:7101
 msgid "guestfs_write"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7099
+#: ../src/guestfs-actions.pod:7103
 #, no-wrap
 msgid ""
 " int\n"
@@ -19556,7 +19951,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7105 ../fish/guestfish-actions.pod:4735
+#: ../src/guestfs-actions.pod:7109 ../fish/guestfish-actions.pod:4739
 msgid ""
 "This call creates a file called C<path>.  The content of the file is the "
 "string C<content> (which can contain any 8 bit data)."
@@ -19564,13 +19959,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7115
+#: ../src/guestfs-actions.pod:7119
 msgid "guestfs_write_file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7117
+#: ../src/guestfs-actions.pod:7121
 #, no-wrap
 msgid ""
 " int\n"
@@ -19583,7 +19978,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7123 ../fish/guestfish-actions.pod:4745
+#: ../src/guestfs-actions.pod:7127 ../fish/guestfish-actions.pod:4749
 msgid ""
 "This call creates a file called C<path>.  The contents of the file is the "
 "string C<content> (which can contain any 8 bit data), with length C<size>."
@@ -19591,7 +19986,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7127 ../fish/guestfish-actions.pod:4749
+#: ../src/guestfs-actions.pod:7131 ../fish/guestfish-actions.pod:4753
 msgid ""
 "As a special case, if C<size> is C<0> then the length is calculated using "
 "C<strlen> (so in this case the content cannot contain embedded ASCII NULs)."
@@ -19599,7 +19994,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7131 ../fish/guestfish-actions.pod:4753
+#: ../src/guestfs-actions.pod:7135 ../fish/guestfish-actions.pod:4757
 msgid ""
 "I<NB.> Owing to a bug, writing content containing ASCII NUL characters does "
 "I<not> work, even if the length is specified."
@@ -19607,20 +20002,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7139 ../fish/guestfish-actions.pod:4759
+#: ../src/guestfs-actions.pod:7143 ../fish/guestfish-actions.pod:4763
 msgid ""
 "This function is deprecated.  In new code, use the C<write> call instead."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7148
+#: ../src/guestfs-actions.pod:7152
 msgid "guestfs_zegrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7150
+#: ../src/guestfs-actions.pod:7154
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19632,20 +20027,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7155 ../fish/guestfish-actions.pod:4770
+#: ../src/guestfs-actions.pod:7159 ../fish/guestfish-actions.pod:4774
 msgid ""
 "This calls the external C<zegrep> program and returns the matching lines."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7167
+#: ../src/guestfs-actions.pod:7171
 msgid "guestfs_zegrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7169
+#: ../src/guestfs-actions.pod:7173
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19657,20 +20052,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7174 ../fish/guestfish-actions.pod:4780
+#: ../src/guestfs-actions.pod:7178 ../fish/guestfish-actions.pod:4784
 msgid ""
 "This calls the external C<zegrep -i> program and returns the matching lines."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7186
+#: ../src/guestfs-actions.pod:7190
 msgid "guestfs_zero"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7188
+#: ../src/guestfs-actions.pod:7192
 #, no-wrap
 msgid ""
 " int\n"
@@ -19681,13 +20076,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7192 ../fish/guestfish-actions.pod:4790
+#: ../src/guestfs-actions.pod:7196 ../fish/guestfish-actions.pod:4794
 msgid "This command writes zeroes over the first few blocks of C<device>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7194 ../fish/guestfish-actions.pod:4792
+#: ../src/guestfs-actions.pod:7198 ../fish/guestfish-actions.pod:4796
 msgid ""
 "How many blocks are zeroed isn't specified (but it's I<not> enough to "
 "securely wipe the device).  It should be sufficient to remove any partition "
@@ -19696,19 +20091,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7198
+#: ../src/guestfs-actions.pod:7202
 msgid "See also: C<guestfs_zero_device>, C<guestfs_scrub_device>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7209
+#: ../src/guestfs-actions.pod:7213
 msgid "guestfs_zero_device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7211
+#: ../src/guestfs-actions.pod:7215
 #, no-wrap
 msgid ""
 " int\n"
@@ -19719,7 +20114,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7215
+#: ../src/guestfs-actions.pod:7219
 msgid ""
 "This command writes zeroes over the entire C<device>.  Compare with "
 "C<guestfs_zero> which just zeroes the first few blocks of a device."
@@ -19727,19 +20122,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7229
+#: ../src/guestfs-actions.pod:7233
 msgid "(Added in 1.3.1)"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7231
+#: ../src/guestfs-actions.pod:7235
 msgid "guestfs_zerofree"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7233
+#: ../src/guestfs-actions.pod:7237
 #, no-wrap
 msgid ""
 " int\n"
@@ -19750,7 +20145,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7237 ../fish/guestfish-actions.pod:4813
+#: ../src/guestfs-actions.pod:7241 ../fish/guestfish-actions.pod:4817
 msgid ""
 "This runs the I<zerofree> program on C<device>.  This program claims to zero "
 "unused inodes and disk blocks on an ext2/3 filesystem, thus making it "
@@ -19759,13 +20154,13 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7242 ../fish/guestfish-actions.pod:4818
+#: ../src/guestfs-actions.pod:7246 ../fish/guestfish-actions.pod:4822
 msgid "You should B<not> run this program if the filesystem is mounted."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7245 ../fish/guestfish-actions.pod:4821
+#: ../src/guestfs-actions.pod:7249 ../fish/guestfish-actions.pod:4825
 msgid ""
 "It is possible that using this program can damage the filesystem or data on "
 "the filesystem."
@@ -19773,13 +20168,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7252
+#: ../src/guestfs-actions.pod:7256
 msgid "guestfs_zfgrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7254
+#: ../src/guestfs-actions.pod:7258
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19791,20 +20186,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7259 ../fish/guestfish-actions.pod:4828
+#: ../src/guestfs-actions.pod:7263 ../fish/guestfish-actions.pod:4832
 msgid ""
 "This calls the external C<zfgrep> program and returns the matching lines."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7271
+#: ../src/guestfs-actions.pod:7275
 msgid "guestfs_zfgrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7273
+#: ../src/guestfs-actions.pod:7277
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19816,20 +20211,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7278 ../fish/guestfish-actions.pod:4838
+#: ../src/guestfs-actions.pod:7282 ../fish/guestfish-actions.pod:4842
 msgid ""
 "This calls the external C<zfgrep -i> program and returns the matching lines."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7290
+#: ../src/guestfs-actions.pod:7294
 msgid "guestfs_zfile"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7292
+#: ../src/guestfs-actions.pod:7296
 #, no-wrap
 msgid ""
 " char *\n"
@@ -19841,20 +20236,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7297 ../fish/guestfish-actions.pod:4848
+#: ../src/guestfs-actions.pod:7301 ../fish/guestfish-actions.pod:4852
 msgid ""
 "This command runs C<file> after first decompressing C<path> using C<method>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7300 ../fish/guestfish-actions.pod:4851
+#: ../src/guestfs-actions.pod:7304 ../fish/guestfish-actions.pod:4855
 msgid "C<method> must be one of C<gzip>, C<compress> or C<bzip2>."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7302
+#: ../src/guestfs-actions.pod:7306
 msgid ""
 "Since 1.0.63, use C<guestfs_file> instead which can now process compressed "
 "files."
@@ -19862,20 +20257,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7308 ../fish/guestfish-actions.pod:4856
+#: ../src/guestfs-actions.pod:7312 ../fish/guestfish-actions.pod:4860
 msgid ""
 "This function is deprecated.  In new code, use the C<file> call instead."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7317
+#: ../src/guestfs-actions.pod:7321
 msgid "guestfs_zgrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7319
+#: ../src/guestfs-actions.pod:7323
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19887,20 +20282,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7324 ../fish/guestfish-actions.pod:4867
+#: ../src/guestfs-actions.pod:7328 ../fish/guestfish-actions.pod:4871
 msgid ""
 "This calls the external C<zgrep> program and returns the matching lines."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../src/guestfs-actions.pod:7336
+#: ../src/guestfs-actions.pod:7340
 msgid "guestfs_zgrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../src/guestfs-actions.pod:7338
+#: ../src/guestfs-actions.pod:7342
 #, no-wrap
 msgid ""
 " char **\n"
@@ -19912,7 +20307,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../src/guestfs-actions.pod:7343 ../fish/guestfish-actions.pod:4877
+#: ../src/guestfs-actions.pod:7347 ../fish/guestfish-actions.pod:4881
 msgid ""
 "This calls the external C<zgrep -i> program and returns the matching lines."
 msgstr ""
@@ -23538,7 +23933,7 @@ msgstr ""
 #. type: textblock
 #: ../fish/guestfish.pod:1153 ../test-tool/libguestfs-test-tool.pod:124
 #: ../fuse/guestmount.pod:258 ../tools/virt-edit.pl:372
-#: ../tools/virt-win-reg.pl:606 ../tools/virt-resize.pl:1512
+#: ../tools/virt-win-reg.pl:606 ../tools/virt-resize.pl:1518
 #: ../tools/virt-list-filesystems.pl:210 ../tools/virt-tar.pl:309
 #: ../tools/virt-make-fs.pl:572 ../tools/virt-list-partitions.pl:277
 msgid ""
@@ -23552,7 +23947,7 @@ msgstr ""
 #. type: textblock
 #: ../fish/guestfish.pod:1158 ../test-tool/libguestfs-test-tool.pod:129
 #: ../fuse/guestmount.pod:263 ../tools/virt-edit.pl:377
-#: ../tools/virt-win-reg.pl:611 ../tools/virt-resize.pl:1517
+#: ../tools/virt-win-reg.pl:611 ../tools/virt-resize.pl:1523
 #: ../tools/virt-list-filesystems.pl:215 ../tools/virt-tar.pl:314
 #: ../tools/virt-make-fs.pl:577 ../tools/virt-list-partitions.pl:282
 msgid ""
@@ -23566,7 +23961,7 @@ msgstr ""
 #. type: textblock
 #: ../fish/guestfish.pod:1163 ../test-tool/libguestfs-test-tool.pod:134
 #: ../fuse/guestmount.pod:268 ../tools/virt-edit.pl:382
-#: ../tools/virt-win-reg.pl:616 ../tools/virt-resize.pl:1522
+#: ../tools/virt-win-reg.pl:616 ../tools/virt-resize.pl:1528
 #: ../tools/virt-list-filesystems.pl:220 ../tools/virt-tar.pl:319
 #: ../tools/virt-make-fs.pl:582 ../tools/virt-list-partitions.pl:287
 msgid ""
@@ -24164,10 +24559,10 @@ msgstr ""
 #: ../fish/guestfish-actions.pod:430 ../fish/guestfish-actions.pod:439
 #: ../fish/guestfish-actions.pod:663 ../fish/guestfish-actions.pod:832
 #: ../fish/guestfish-actions.pod:851 ../fish/guestfish-actions.pod:1228
-#: ../fish/guestfish-actions.pod:4341 ../fish/guestfish-actions.pod:4353
-#: ../fish/guestfish-actions.pod:4364 ../fish/guestfish-actions.pod:4375
-#: ../fish/guestfish-actions.pod:4427 ../fish/guestfish-actions.pod:4436
-#: ../fish/guestfish-actions.pod:4490 ../fish/guestfish-actions.pod:4513
+#: ../fish/guestfish-actions.pod:4345 ../fish/guestfish-actions.pod:4357
+#: ../fish/guestfish-actions.pod:4368 ../fish/guestfish-actions.pod:4379
+#: ../fish/guestfish-actions.pod:4431 ../fish/guestfish-actions.pod:4440
+#: ../fish/guestfish-actions.pod:4494 ../fish/guestfish-actions.pod:4517
 msgid "Use C<-> instead of a filename to read/write from stdin/stdout."
 msgstr ""
 
@@ -29040,6 +29435,13 @@ msgid ""
 "\n"
 msgstr ""
 
+#. type: textblock
+#: ../fish/guestfish-actions.pod:3999
+msgid ""
+"Trace messages are normally sent to C<stderr>, unless you register a "
+"callback to send them somewhere else (see L</set-event-callback>)."
+msgstr ""
+
 # type: =head2
 #. type: =head2
 #: ../fish/guestfish-actions.pod:4003
@@ -29061,15 +29463,22 @@ msgid ""
 "\n"
 msgstr ""
 
+#. type: textblock
+#: ../fish/guestfish-actions.pod:4014
+msgid ""
+"Verbose messages are normally sent to C<stderr>, unless you register a "
+"callback to send them somewhere else (see L</set-event-callback>)."
+msgstr ""
+
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4014
+#: ../fish/guestfish-actions.pod:4018
 msgid "setcon"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4016
+#: ../fish/guestfish-actions.pod:4020
 #, no-wrap
 msgid ""
 " setcon context\n"
@@ -29078,13 +29487,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4023
+#: ../fish/guestfish-actions.pod:4027
 msgid "setxattr"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4025
+#: ../fish/guestfish-actions.pod:4029
 #, no-wrap
 msgid ""
 " setxattr xattr val vallen path\n"
@@ -29093,19 +29502,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4031
+#: ../fish/guestfish-actions.pod:4035
 msgid "See also: L</lsetxattr>, L<attr(5)>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4033
+#: ../fish/guestfish-actions.pod:4037
 msgid "sfdisk"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4035
+#: ../fish/guestfish-actions.pod:4039
 #, no-wrap
 msgid ""
 " sfdisk device cyls heads sectors 'lines ...'\n"
@@ -29114,19 +29523,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4057
+#: ../fish/guestfish-actions.pod:4061
 msgid "See also: L</sfdisk-l>, L</sfdisk-N>, L</part-init>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4063
+#: ../fish/guestfish-actions.pod:4067
 msgid "sfdiskM"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4065
+#: ../fish/guestfish-actions.pod:4069
 #, no-wrap
 msgid ""
 " sfdiskM device 'lines ...'\n"
@@ -29135,7 +29544,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4067
+#: ../fish/guestfish-actions.pod:4071
 msgid ""
 "This is a simplified interface to the L</sfdisk> command, where partition "
 "sizes are specified in megabytes only (rounded to the nearest cylinder) and "
@@ -29145,19 +29554,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4073
+#: ../fish/guestfish-actions.pod:4077
 msgid "See also: L</sfdisk>, the L<sfdisk(8)> manpage and L</part-disk>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4079
+#: ../fish/guestfish-actions.pod:4083
 msgid "sfdisk-N"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4081
+#: ../fish/guestfish-actions.pod:4085
 #, no-wrap
 msgid ""
 " sfdisk-N device partnum cyls heads sectors line\n"
@@ -29166,7 +29575,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4086
+#: ../fish/guestfish-actions.pod:4090
 msgid ""
 "For other parameters, see L</sfdisk>.  You should usually pass C<0> for the "
 "cyls/heads/sectors parameters."
@@ -29174,19 +29583,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4089
+#: ../fish/guestfish-actions.pod:4093
 msgid "See also: L</part-add>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4094
+#: ../fish/guestfish-actions.pod:4098
 msgid "sfdisk-disk-geometry"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4096
+#: ../fish/guestfish-actions.pod:4100
 #, no-wrap
 msgid ""
 " sfdisk-disk-geometry device\n"
@@ -29195,7 +29604,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4098
+#: ../fish/guestfish-actions.pod:4102
 msgid ""
 "This displays the disk geometry of C<device> read from the partition table.  "
 "Especially in the case where the underlying block device has been resized, "
@@ -29205,13 +29614,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4106
+#: ../fish/guestfish-actions.pod:4110
 msgid "sfdisk-kernel-geometry"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4108
+#: ../fish/guestfish-actions.pod:4112
 #, no-wrap
 msgid ""
 " sfdisk-kernel-geometry device\n"
@@ -29220,13 +29629,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4115
+#: ../fish/guestfish-actions.pod:4119
 msgid "sfdisk-l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4117
+#: ../fish/guestfish-actions.pod:4121
 #, no-wrap
 msgid ""
 " sfdisk-l device\n"
@@ -29235,19 +29644,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4123
+#: ../fish/guestfish-actions.pod:4127
 msgid "See also: L</part-list>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4125
+#: ../fish/guestfish-actions.pod:4129
 msgid "sh"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4127
+#: ../fish/guestfish-actions.pod:4131
 #, no-wrap
 msgid ""
 " sh command\n"
@@ -29256,25 +29665,25 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4132
+#: ../fish/guestfish-actions.pod:4136
 msgid "This is like L</command>, but passes the command to:"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4140
+#: ../fish/guestfish-actions.pod:4144
 msgid "All the provisos about L</command> apply to this call."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4142
+#: ../fish/guestfish-actions.pod:4146
 msgid "sh-lines"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4144
+#: ../fish/guestfish-actions.pod:4148
 #, no-wrap
 msgid ""
 " sh-lines command\n"
@@ -29283,25 +29692,25 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4146
+#: ../fish/guestfish-actions.pod:4150
 msgid "This is the same as L</sh>, but splits the result into a list of lines."
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4149
+#: ../fish/guestfish-actions.pod:4153
 msgid "See also: L</command-lines>"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4151
+#: ../fish/guestfish-actions.pod:4155
 msgid "sleep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4153
+#: ../fish/guestfish-actions.pod:4157
 #, no-wrap
 msgid ""
 " sleep secs\n"
@@ -29310,13 +29719,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4157
+#: ../fish/guestfish-actions.pod:4161
 msgid "stat"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4159
+#: ../fish/guestfish-actions.pod:4163
 #, no-wrap
 msgid ""
 " stat path\n"
@@ -29325,13 +29734,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4165
+#: ../fish/guestfish-actions.pod:4169
 msgid "statvfs"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4167
+#: ../fish/guestfish-actions.pod:4171
 #, no-wrap
 msgid ""
 " statvfs path\n"
@@ -29340,13 +29749,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4175
+#: ../fish/guestfish-actions.pod:4179
 msgid "strings"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4177
+#: ../fish/guestfish-actions.pod:4181
 #, no-wrap
 msgid ""
 " strings path\n"
@@ -29355,13 +29764,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4185
+#: ../fish/guestfish-actions.pod:4189
 msgid "strings-e"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4187
+#: ../fish/guestfish-actions.pod:4191
 #, no-wrap
 msgid ""
 " strings-e encoding path\n"
@@ -29370,7 +29779,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4189
+#: ../fish/guestfish-actions.pod:4193
 msgid ""
 "This is like the L</strings> command, but allows you to specify the encoding "
 "of strings that are looked for in the source file C<path>."
@@ -29378,7 +29787,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4199
+#: ../fish/guestfish-actions.pod:4203
 msgid ""
 "Single 7-bit-byte characters like ASCII and the ASCII-compatible parts of "
 "ISO-8859-X (this is what L</strings> uses)."
@@ -29386,13 +29795,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4231
+#: ../fish/guestfish-actions.pod:4235
 msgid "swapoff-device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4233
+#: ../fish/guestfish-actions.pod:4237
 #, no-wrap
 msgid ""
 " swapoff-device device\n"
@@ -29401,7 +29810,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4235
+#: ../fish/guestfish-actions.pod:4239
 msgid ""
 "This command disables the libguestfs appliance swap device or partition "
 "named C<device>.  See L</swapon-device>."
@@ -29409,13 +29818,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4239
+#: ../fish/guestfish-actions.pod:4243
 msgid "swapoff-file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4241
+#: ../fish/guestfish-actions.pod:4245
 #, no-wrap
 msgid ""
 " swapoff-file file\n"
@@ -29424,13 +29833,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4245
+#: ../fish/guestfish-actions.pod:4249
 msgid "swapoff-label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4247
+#: ../fish/guestfish-actions.pod:4251
 #, no-wrap
 msgid ""
 " swapoff-label label\n"
@@ -29439,13 +29848,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4252
+#: ../fish/guestfish-actions.pod:4256
 msgid "swapoff-uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4254
+#: ../fish/guestfish-actions.pod:4258
 #, no-wrap
 msgid ""
 " swapoff-uuid uuid\n"
@@ -29454,13 +29863,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4259
+#: ../fish/guestfish-actions.pod:4263
 msgid "swapon-device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4261
+#: ../fish/guestfish-actions.pod:4265
 #, no-wrap
 msgid ""
 " swapon-device device\n"
@@ -29469,7 +29878,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4263
+#: ../fish/guestfish-actions.pod:4267
 msgid ""
 "This command enables the libguestfs appliance to use the swap device or "
 "partition named C<device>.  The increased memory is made available for all "
@@ -29478,13 +29887,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4275
+#: ../fish/guestfish-actions.pod:4279
 msgid "swapon-file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4277
+#: ../fish/guestfish-actions.pod:4281
 #, no-wrap
 msgid ""
 " swapon-file file\n"
@@ -29493,20 +29902,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4279
+#: ../fish/guestfish-actions.pod:4283
 msgid ""
 "This command enables swap to a file.  See L</swapon-device> for other notes."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4282
+#: ../fish/guestfish-actions.pod:4286
 msgid "swapon-label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4284
+#: ../fish/guestfish-actions.pod:4288
 #, no-wrap
 msgid ""
 " swapon-label label\n"
@@ -29515,7 +29924,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4286
+#: ../fish/guestfish-actions.pod:4290
 msgid ""
 "This command enables swap to a labeled swap partition.  See L</swapon-"
 "device> for other notes."
@@ -29523,13 +29932,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4289
+#: ../fish/guestfish-actions.pod:4293
 msgid "swapon-uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4291
+#: ../fish/guestfish-actions.pod:4295
 #, no-wrap
 msgid ""
 " swapon-uuid uuid\n"
@@ -29538,7 +29947,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4293
+#: ../fish/guestfish-actions.pod:4297
 msgid ""
 "This command enables swap to a swap partition with the given UUID.  See L</"
 "swapon-device> for other notes."
@@ -29546,13 +29955,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4296
+#: ../fish/guestfish-actions.pod:4300
 msgid "sync"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4298
+#: ../fish/guestfish-actions.pod:4302
 #, no-wrap
 msgid ""
 " sync\n"
@@ -29561,13 +29970,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4306
+#: ../fish/guestfish-actions.pod:4310
 msgid "tail"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4308
+#: ../fish/guestfish-actions.pod:4312
 #, no-wrap
 msgid ""
 " tail path\n"
@@ -29576,13 +29985,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4316
+#: ../fish/guestfish-actions.pod:4320
 msgid "tail-n"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4318
+#: ../fish/guestfish-actions.pod:4322
 #, no-wrap
 msgid ""
 " tail-n nrlines path\n"
@@ -29591,13 +30000,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4331
+#: ../fish/guestfish-actions.pod:4335
 msgid "tar-in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4333
+#: ../fish/guestfish-actions.pod:4337
 #, no-wrap
 msgid ""
 " tar-in (tarfile|-) directory\n"
@@ -29606,19 +30015,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4338
+#: ../fish/guestfish-actions.pod:4342
 msgid "To upload a compressed tarball, use L</tgz-in> or L</txz-in>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4343
+#: ../fish/guestfish-actions.pod:4347
 msgid "tar-out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4345
+#: ../fish/guestfish-actions.pod:4349
 #, no-wrap
 msgid ""
 " tar-out directory (tarfile|-)\n"
@@ -29627,19 +30036,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4350
+#: ../fish/guestfish-actions.pod:4354
 msgid "To download a compressed tarball, use L</tgz-out> or L</txz-out>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4355
+#: ../fish/guestfish-actions.pod:4359
 msgid "tgz-in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4357
+#: ../fish/guestfish-actions.pod:4361
 #, no-wrap
 msgid ""
 " tgz-in (tarball|-) directory\n"
@@ -29648,19 +30057,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4362
+#: ../fish/guestfish-actions.pod:4366
 msgid "To upload an uncompressed tarball, use L</tar-in>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4366
+#: ../fish/guestfish-actions.pod:4370
 msgid "tgz-out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4368
+#: ../fish/guestfish-actions.pod:4372
 #, no-wrap
 msgid ""
 " tgz-out directory (tarball|-)\n"
@@ -29669,19 +30078,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4373
+#: ../fish/guestfish-actions.pod:4377
 msgid "To download an uncompressed tarball, use L</tar-out>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4377
+#: ../fish/guestfish-actions.pod:4381
 msgid "touch"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4379
+#: ../fish/guestfish-actions.pod:4383
 #, no-wrap
 msgid ""
 " touch path\n"
@@ -29690,13 +30099,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4388
+#: ../fish/guestfish-actions.pod:4392
 msgid "truncate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4390
+#: ../fish/guestfish-actions.pod:4394
 #, no-wrap
 msgid ""
 " truncate path\n"
@@ -29705,13 +30114,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4395
+#: ../fish/guestfish-actions.pod:4399
 msgid "truncate-size"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4397
+#: ../fish/guestfish-actions.pod:4401
 #, no-wrap
 msgid ""
 " truncate-size path size\n"
@@ -29720,7 +30129,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4402
+#: ../fish/guestfish-actions.pod:4406
 msgid ""
 "If the current file size is less than C<size> then the file is extended to "
 "the required size with zero bytes.  This creates a sparse file (ie. disk "
@@ -29730,13 +30139,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4408
+#: ../fish/guestfish-actions.pod:4412
 msgid "tune2fs-l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4410
+#: ../fish/guestfish-actions.pod:4414
 #, no-wrap
 msgid ""
 " tune2fs-l device\n"
@@ -29745,13 +30154,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4420
+#: ../fish/guestfish-actions.pod:4424
 msgid "txz-in"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4422
+#: ../fish/guestfish-actions.pod:4426
 #, no-wrap
 msgid ""
 " txz-in (tarball|-) directory\n"
@@ -29760,13 +30169,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4429
+#: ../fish/guestfish-actions.pod:4433
 msgid "txz-out"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4431
+#: ../fish/guestfish-actions.pod:4435
 #, no-wrap
 msgid ""
 " txz-out directory (tarball|-)\n"
@@ -29775,13 +30184,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4438
+#: ../fish/guestfish-actions.pod:4442
 msgid "umask"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4440
+#: ../fish/guestfish-actions.pod:4444
 #, no-wrap
 msgid ""
 " umask mask\n"
@@ -29790,25 +30199,25 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4454
+#: ../fish/guestfish-actions.pod:4458
 msgid "See also L</get-umask>, L<umask(2)>, L</mknod>, L</mkdir>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4459
+#: ../fish/guestfish-actions.pod:4463
 msgid "umount"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4461
+#: ../fish/guestfish-actions.pod:4465
 msgid "unmount"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4463
+#: ../fish/guestfish-actions.pod:4467
 #, no-wrap
 msgid ""
 " umount pathordevice\n"
@@ -29817,19 +30226,19 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4469
+#: ../fish/guestfish-actions.pod:4473
 msgid "umount-all"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4471
+#: ../fish/guestfish-actions.pod:4475
 msgid "unmount-all"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4473
+#: ../fish/guestfish-actions.pod:4477
 #, no-wrap
 msgid ""
 " umount-all\n"
@@ -29838,13 +30247,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4479
+#: ../fish/guestfish-actions.pod:4483
 msgid "upload"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4481
+#: ../fish/guestfish-actions.pod:4485
 #, no-wrap
 msgid ""
 " upload (filename|-) remotefilename\n"
@@ -29853,19 +30262,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4488
+#: ../fish/guestfish-actions.pod:4492
 msgid "See also L</download>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4492
+#: ../fish/guestfish-actions.pod:4496
 msgid "upload-offset"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4494
+#: ../fish/guestfish-actions.pod:4498
 #, no-wrap
 msgid ""
 " upload-offset (filename|-) remotefilename offset\n"
@@ -29874,7 +30283,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4506
+#: ../fish/guestfish-actions.pod:4510
 msgid ""
 "Note that there is no limit on the amount of data that can be uploaded with "
 "this call, unlike with L</pwrite>, and this call always writes the full "
@@ -29883,19 +30292,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4511
+#: ../fish/guestfish-actions.pod:4515
 msgid "See also L</upload>, L</pwrite>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4515
+#: ../fish/guestfish-actions.pod:4519
 msgid "utimens"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4517
+#: ../fish/guestfish-actions.pod:4521
 #, no-wrap
 msgid ""
 " utimens path atsecs atnsecs mtsecs mtnsecs\n"
@@ -29904,13 +30313,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4536
+#: ../fish/guestfish-actions.pod:4540
 msgid "version"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4538
+#: ../fish/guestfish-actions.pod:4542
 #, no-wrap
 msgid ""
 " version\n"
@@ -29919,7 +30328,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4565
+#: ../fish/guestfish-actions.pod:4569
 msgid ""
 "I<Note:> Don't use this call to test for availability of features.  In "
 "enterprise distributions we backport features from later versions into "
@@ -29929,13 +30338,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4571
+#: ../fish/guestfish-actions.pod:4575
 msgid "vfs-label"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4573
+#: ../fish/guestfish-actions.pod:4577
 #, no-wrap
 msgid ""
 " vfs-label device\n"
@@ -29944,19 +30353,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4580
+#: ../fish/guestfish-actions.pod:4584
 msgid "To find a filesystem from the label, use L</findfs-label>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4582
+#: ../fish/guestfish-actions.pod:4586
 msgid "vfs-type"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4584
+#: ../fish/guestfish-actions.pod:4588
 #, no-wrap
 msgid ""
 " vfs-type device\n"
@@ -29965,13 +30374,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4594
+#: ../fish/guestfish-actions.pod:4598
 msgid "vfs-uuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4596
+#: ../fish/guestfish-actions.pod:4600
 #, no-wrap
 msgid ""
 " vfs-uuid device\n"
@@ -29980,19 +30389,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4603
+#: ../fish/guestfish-actions.pod:4607
 msgid "To find a filesystem from the UUID, use L</findfs-uuid>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4605
+#: ../fish/guestfish-actions.pod:4609
 msgid "vg-activate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4607
+#: ../fish/guestfish-actions.pod:4611
 #, no-wrap
 msgid ""
 " vg-activate true|false 'volgroups ...'\n"
@@ -30001,13 +30410,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4620
+#: ../fish/guestfish-actions.pod:4624
 msgid "vg-activate-all"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4622
+#: ../fish/guestfish-actions.pod:4626
 #, no-wrap
 msgid ""
 " vg-activate-all true|false\n"
@@ -30016,13 +30425,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4632
+#: ../fish/guestfish-actions.pod:4636
 msgid "vgcreate"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4634
+#: ../fish/guestfish-actions.pod:4638
 #, no-wrap
 msgid ""
 " vgcreate volgroup 'physvols ...'\n"
@@ -30031,13 +30440,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4639
+#: ../fish/guestfish-actions.pod:4643
 msgid "vglvuuids"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4641
+#: ../fish/guestfish-actions.pod:4645
 #, no-wrap
 msgid ""
 " vglvuuids vgname\n"
@@ -30046,7 +30455,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4646
+#: ../fish/guestfish-actions.pod:4650
 msgid ""
 "You can use this along with L</lvs> and L</lvuuid> calls to associate "
 "logical volumes and volume groups."
@@ -30054,19 +30463,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4649
+#: ../fish/guestfish-actions.pod:4653
 msgid "See also L</vgpvuuids>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4651
+#: ../fish/guestfish-actions.pod:4655
 msgid "vgpvuuids"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4653
+#: ../fish/guestfish-actions.pod:4657
 #, no-wrap
 msgid ""
 " vgpvuuids vgname\n"
@@ -30075,7 +30484,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4658
+#: ../fish/guestfish-actions.pod:4662
 msgid ""
 "You can use this along with L</pvs> and L</pvuuid> calls to associate "
 "physical volumes and volume groups."
@@ -30083,19 +30492,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4661
+#: ../fish/guestfish-actions.pod:4665
 msgid "See also L</vglvuuids>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4663
+#: ../fish/guestfish-actions.pod:4667
 msgid "vgremove"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4665
+#: ../fish/guestfish-actions.pod:4669
 #, no-wrap
 msgid ""
 " vgremove vgname\n"
@@ -30104,13 +30513,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4672
+#: ../fish/guestfish-actions.pod:4676
 msgid "vgrename"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4674
+#: ../fish/guestfish-actions.pod:4678
 #, no-wrap
 msgid ""
 " vgrename volgroup newvolgroup\n"
@@ -30119,13 +30528,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4678
+#: ../fish/guestfish-actions.pod:4682
 msgid "vgs"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4680
+#: ../fish/guestfish-actions.pod:4684
 #, no-wrap
 msgid ""
 " vgs\n"
@@ -30134,19 +30543,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4688
+#: ../fish/guestfish-actions.pod:4692
 msgid "See also L</vgs-full>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4690
+#: ../fish/guestfish-actions.pod:4694
 msgid "vgs-full"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4692
+#: ../fish/guestfish-actions.pod:4696
 #, no-wrap
 msgid ""
 " vgs-full\n"
@@ -30155,13 +30564,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4697
+#: ../fish/guestfish-actions.pod:4701
 msgid "vgscan"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4699
+#: ../fish/guestfish-actions.pod:4703
 #, no-wrap
 msgid ""
 " vgscan\n"
@@ -30170,13 +30579,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4704
+#: ../fish/guestfish-actions.pod:4708
 msgid "vguuid"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4706
+#: ../fish/guestfish-actions.pod:4710
 #, no-wrap
 msgid ""
 " vguuid vgname\n"
@@ -30185,13 +30594,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4710
+#: ../fish/guestfish-actions.pod:4714
 msgid "wc-c"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4712
+#: ../fish/guestfish-actions.pod:4716
 #, no-wrap
 msgid ""
 " wc-c path\n"
@@ -30200,13 +30609,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4717
+#: ../fish/guestfish-actions.pod:4721
 msgid "wc-l"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4719
+#: ../fish/guestfish-actions.pod:4723
 #, no-wrap
 msgid ""
 " wc-l path\n"
@@ -30215,13 +30624,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4724
+#: ../fish/guestfish-actions.pod:4728
 msgid "wc-w"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4726
+#: ../fish/guestfish-actions.pod:4730
 #, no-wrap
 msgid ""
 " wc-w path\n"
@@ -30230,13 +30639,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4731
+#: ../fish/guestfish-actions.pod:4735
 msgid "write"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4733
+#: ../fish/guestfish-actions.pod:4737
 #, no-wrap
 msgid ""
 " write path content\n"
@@ -30245,13 +30654,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4741
+#: ../fish/guestfish-actions.pod:4745
 msgid "write-file"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4743
+#: ../fish/guestfish-actions.pod:4747
 #, no-wrap
 msgid ""
 " write-file path content size\n"
@@ -30260,13 +30669,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4766
+#: ../fish/guestfish-actions.pod:4770
 msgid "zegrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4768
+#: ../fish/guestfish-actions.pod:4772
 #, no-wrap
 msgid ""
 " zegrep regex path\n"
@@ -30275,13 +30684,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4776
+#: ../fish/guestfish-actions.pod:4780
 msgid "zegrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4778
+#: ../fish/guestfish-actions.pod:4782
 #, no-wrap
 msgid ""
 " zegrepi regex path\n"
@@ -30290,13 +30699,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4786
+#: ../fish/guestfish-actions.pod:4790
 msgid "zero"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4788
+#: ../fish/guestfish-actions.pod:4792
 #, no-wrap
 msgid ""
 " zero device\n"
@@ -30305,19 +30714,19 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4796
+#: ../fish/guestfish-actions.pod:4800
 msgid "See also: L</zero-device>, L</scrub-device>."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4798
+#: ../fish/guestfish-actions.pod:4802
 msgid "zero-device"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4800
+#: ../fish/guestfish-actions.pod:4804
 #, no-wrap
 msgid ""
 " zero-device device\n"
@@ -30326,7 +30735,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4802
+#: ../fish/guestfish-actions.pod:4806
 msgid ""
 "This command writes zeroes over the entire C<device>.  Compare with L</zero> "
 "which just zeroes the first few blocks of a device."
@@ -30334,13 +30743,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4809
+#: ../fish/guestfish-actions.pod:4813
 msgid "zerofree"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4811
+#: ../fish/guestfish-actions.pod:4815
 #, no-wrap
 msgid ""
 " zerofree device\n"
@@ -30349,13 +30758,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4824
+#: ../fish/guestfish-actions.pod:4828
 msgid "zfgrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4826
+#: ../fish/guestfish-actions.pod:4830
 #, no-wrap
 msgid ""
 " zfgrep pattern path\n"
@@ -30364,13 +30773,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4834
+#: ../fish/guestfish-actions.pod:4838
 msgid "zfgrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4836
+#: ../fish/guestfish-actions.pod:4840
 #, no-wrap
 msgid ""
 " zfgrepi pattern path\n"
@@ -30379,13 +30788,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4844
+#: ../fish/guestfish-actions.pod:4848
 msgid "zfile"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4846
+#: ../fish/guestfish-actions.pod:4850
 #, no-wrap
 msgid ""
 " zfile meth path\n"
@@ -30394,20 +30803,20 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../fish/guestfish-actions.pod:4853
+#: ../fish/guestfish-actions.pod:4857
 msgid ""
 "Since 1.0.63, use L</file> instead which can now process compressed files."
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4863
+#: ../fish/guestfish-actions.pod:4867
 msgid "zgrep"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4865
+#: ../fish/guestfish-actions.pod:4869
 #, no-wrap
 msgid ""
 " zgrep regex path\n"
@@ -30416,13 +30825,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../fish/guestfish-actions.pod:4873
+#: ../fish/guestfish-actions.pod:4877
 msgid "zgrepi"
 msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../fish/guestfish-actions.pod:4875
+#: ../fish/guestfish-actions.pod:4879
 #, no-wrap
 msgid ""
 " zgrepi regex path\n"
@@ -32129,7 +32538,7 @@ msgstr ""
 # type: =head2
 #. type: =head1
 #: ../tools/virt-edit.pl:343 ../tools/virt-win-reg.pl:559
-#: ../tools/virt-resize.pl:1476 ../tools/virt-list-filesystems.pl:182
+#: ../tools/virt-resize.pl:1482 ../tools/virt-list-filesystems.pl:182
 #: ../tools/virt-tar.pl:279 ../tools/virt-make-fs.pl:532
 #: ../tools/virt-list-partitions.pl:250
 msgid "SHELL QUOTING"
@@ -32138,7 +32547,7 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../tools/virt-edit.pl:345 ../tools/virt-win-reg.pl:567
-#: ../tools/virt-resize.pl:1478 ../tools/virt-list-filesystems.pl:184
+#: ../tools/virt-resize.pl:1484 ../tools/virt-list-filesystems.pl:184
 #: ../tools/virt-tar.pl:281 ../tools/virt-make-fs.pl:534
 #: ../tools/virt-list-partitions.pl:252
 msgid ""
@@ -32159,7 +32568,7 @@ msgstr ""
 # type: =head1
 #. type: =head1
 #: ../tools/virt-edit.pl:364 ../tools/virt-win-reg.pl:598
-#: ../tools/virt-resize.pl:1504 ../tools/virt-list-filesystems.pl:202
+#: ../tools/virt-resize.pl:1510 ../tools/virt-list-filesystems.pl:202
 #: ../tools/virt-tar.pl:301 ../tools/virt-make-fs.pl:564
 #: ../tools/virt-list-partitions.pl:269
 msgid "AUTHOR"
@@ -32168,7 +32577,7 @@ msgstr ""
 # type: textblock
 #. type: textblock
 #: ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:600
-#: ../tools/virt-resize.pl:1506 ../tools/virt-list-filesystems.pl:204
+#: ../tools/virt-resize.pl:1512 ../tools/virt-list-filesystems.pl:204
 #: ../tools/virt-tar.pl:303 ../tools/virt-make-fs.pl:566
 #: ../tools/virt-list-partitions.pl:271
 msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
@@ -32816,7 +33225,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-win-reg.pl:604 ../tools/virt-resize.pl:1510
+#: ../tools/virt-win-reg.pl:604 ../tools/virt-resize.pl:1516
 #: ../tools/virt-make-fs.pl:570
 msgid "Copyright (C) 2010 Red Hat Inc."
 msgstr ""
@@ -33838,19 +34247,19 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../tools/virt-resize.pl:1419
+#: ../tools/virt-resize.pl:1425
 msgid "NOTES"
 msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../tools/virt-resize.pl:1421
+#: ../tools/virt-resize.pl:1427
 msgid "\"Partition 1 does not end on cylinder boundary.\""
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1423
+#: ../tools/virt-resize.pl:1429
 msgid ""
 "Virt-resize aligns partitions to multiples of 64 sectors.  Usually this "
 "means the partitions will not be aligned to the ancient CHS geometry.  "
@@ -33861,13 +34270,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../tools/virt-resize.pl:1430
+#: ../tools/virt-resize.pl:1436
 msgid "RESIZING WINDOWS VIRTUAL MACHINES"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1432
+#: ../tools/virt-resize.pl:1438
 msgid ""
 "In Windows Vista and later versions, Microsoft switched to using a separate "
 "boot partition.  In these VMs, typically C</dev/sda1> is the boot partition "
@@ -33878,7 +34287,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1439
+#: ../tools/virt-resize.pl:1445
 msgid ""
 "Windows may initiate a lengthy \"chkdsk\" on first boot after a resize, if "
 "NTFS partitions have been expanded.  This is just a safety check and (unless "
@@ -33887,13 +34296,13 @@ msgstr ""
 
 # type: =head2
 #. type: =head2
-#: ../tools/virt-resize.pl:1443
+#: ../tools/virt-resize.pl:1449
 msgid "GUEST BOOT STUCK AT \"GRUB\""
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1445
+#: ../tools/virt-resize.pl:1451
 msgid ""
 "If a Linux guest does not boot after resizing, and the boot is stuck after "
 "printing C<GRUB> on the console, try reinstalling grub.  This sometimes "
@@ -33903,7 +34312,7 @@ msgstr ""
 
 # type: verbatim
 #. type: verbatim
-#: ../tools/virt-resize.pl:1450
+#: ../tools/virt-resize.pl:1456
 #, no-wrap
 msgid ""
 " guestfish -i -a newdisk\n"
@@ -33917,7 +34326,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1457
+#: ../tools/virt-resize.pl:1463
 msgid ""
 "For more flexible guest reconfiguration, including if you need to specify "
 "other parameters to grub-install, use L<virt-rescue(1)>."
@@ -33925,13 +34334,13 @@ msgstr ""
 
 # type: =head1
 #. type: =head1
-#: ../tools/virt-resize.pl:1460
+#: ../tools/virt-resize.pl:1466
 msgid "ALTERNATIVE TOOLS"
 msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1462
+#: ../tools/virt-resize.pl:1468
 msgid ""
 "There are several proprietary tools for resizing partitions.  We won't "
 "mention any here."
@@ -33939,7 +34348,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1465
+#: ../tools/virt-resize.pl:1471
 msgid ""
 "L<parted(8)> and its graphical shell gparted can do some types of resizing "
 "operations on disk images.  They can resize and move partitions, but I don't "
@@ -33949,7 +34358,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1470
+#: ../tools/virt-resize.pl:1476
 msgid ""
 "L<guestfish(1)> can do everything that virt-resize can do and a lot more, "
 "but at a much lower level.  You will probably end up hand-calculating sector "
@@ -33960,7 +34369,7 @@ msgstr ""
 
 # type: textblock
 #. type: textblock
-#: ../tools/virt-resize.pl:1485
+#: ../tools/virt-resize.pl:1491
 msgid ""
 "L<virt-filesystems(1)>, L<virt-df(1)>, L<guestfs(3)>, L<guestfish(1)>, L<lvm"
 "(8)>, L<pvresize(8)>, L<lvresize(8)>, L<resize2fs(8)>, L<ntfsresize(8)>, "
index 24a3f69..3ef29ae 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: libguestfs 1.9.10\n"
+"Project-Id-Version: libguestfs 1.9.11\n"
 "Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
-"POT-Creation-Date: 2011-03-08 16:20+0000\n"
+"POT-Creation-Date: 2011-03-15 21:45+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -807,7 +807,7 @@ msgid "There are many limitations to this:"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:388 ../src/guestfs.pod:393 ../src/guestfs.pod:398 ../src/guestfs.pod:402 ../src/guestfs.pod:407 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:421 ../src/guestfs.pod:1088 ../src/guestfs.pod:1092 ../src/guestfs.pod:1096 ../src/guestfs.pod:1101 ../src/guestfs.pod:1109 ../src/guestfs.pod:1128 ../src/guestfs.pod:1136 ../src/guestfs.pod:1158 ../src/guestfs.pod:1162 ../src/guestfs.pod:1166 ../src/guestfs.pod:1170 ../src/guestfs.pod:1174 ../src/guestfs.pod:1178 ../src/guestfs.pod:1660 ../src/guestfs.pod:1665 ../src/guestfs.pod:1669 ../src/guestfs.pod:1779 ../src/guestfs.pod:1784 ../src/guestfs.pod:1788 ../src/guestfs.pod:2140 ../src/guestfs.pod:2146 ../src/guestfs.pod:2151 ../src/guestfs.pod:2157 ../src/guestfs.pod:2622 ../src/guestfs.pod:2626 ../src/guestfs.pod:2630 ../src/guestfs.pod:2634 ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:577 ../src/guestfs-actions.pod:585 ../src/guestfs-actions.pod:592 ../src/guestfs-actions.pod:599 ../src/guestfs-actions.pod:1595 ../src/guestfs-actions.pod:1599 ../src/guestfs-actions.pod:1603 ../src/guestfs-actions.pod:1607 ../src/guestfs-actions.pod:1615 ../src/guestfs-actions.pod:1619 ../src/guestfs-actions.pod:1623 ../src/guestfs-actions.pod:1633 ../src/guestfs-actions.pod:1637 ../src/guestfs-actions.pod:1641 ../src/guestfs-actions.pod:1779 ../src/guestfs-actions.pod:1783 ../src/guestfs-actions.pod:1788 ../src/guestfs-actions.pod:1793 ../src/guestfs-actions.pod:1854 ../src/guestfs-actions.pod:1858 ../src/guestfs-actions.pod:1863 ../fish/guestfish.pod:432 ../fish/guestfish.pod:436 ../fish/guestfish.pod:440 ../fish/guestfish.pod:444 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:380 ../fish/guestfish-actions.pod:388 ../fish/guestfish-actions.pod:395 ../fish/guestfish-actions.pod:402 ../fish/guestfish-actions.pod:1072 ../fish/guestfish-actions.pod:1076 ../fish/guestfish-actions.pod:1080 ../fish/guestfish-actions.pod:1084 ../fish/guestfish-actions.pod:1092 ../fish/guestfish-actions.pod:1096 ../fish/guestfish-actions.pod:1100 ../fish/guestfish-actions.pod:1110 ../fish/guestfish-actions.pod:1114 ../fish/guestfish-actions.pod:1118 ../fish/guestfish-actions.pod:1208 ../fish/guestfish-actions.pod:1212 ../fish/guestfish-actions.pod:1217 ../fish/guestfish-actions.pod:1222 ../fish/guestfish-actions.pod:1264 ../fish/guestfish-actions.pod:1268 ../fish/guestfish-actions.pod:1273 ../tools/virt-win-reg.pl:536 ../tools/virt-win-reg.pl:542 ../tools/virt-win-reg.pl:548 ../tools/virt-resize.pl:345 ../tools/virt-resize.pl:350 ../tools/virt-resize.pl:360
+#: ../src/guestfs.pod:388 ../src/guestfs.pod:393 ../src/guestfs.pod:398 ../src/guestfs.pod:402 ../src/guestfs.pod:407 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:421 ../src/guestfs.pod:1088 ../src/guestfs.pod:1092 ../src/guestfs.pod:1096 ../src/guestfs.pod:1101 ../src/guestfs.pod:1109 ../src/guestfs.pod:1128 ../src/guestfs.pod:1136 ../src/guestfs.pod:1158 ../src/guestfs.pod:1162 ../src/guestfs.pod:1166 ../src/guestfs.pod:1170 ../src/guestfs.pod:1174 ../src/guestfs.pod:1178 ../src/guestfs.pod:1660 ../src/guestfs.pod:1665 ../src/guestfs.pod:1669 ../src/guestfs.pod:1770 ../src/guestfs.pod:1775 ../src/guestfs.pod:1779 ../src/guestfs.pod:2008 ../src/guestfs.pod:2013 ../src/guestfs.pod:2019 ../src/guestfs.pod:2027 ../src/guestfs.pod:2381 ../src/guestfs.pod:2387 ../src/guestfs.pod:2392 ../src/guestfs.pod:2398 ../src/guestfs.pod:2863 ../src/guestfs.pod:2867 ../src/guestfs.pod:2871 ../src/guestfs.pod:2875 ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:577 ../src/guestfs-actions.pod:585 ../src/guestfs-actions.pod:592 ../src/guestfs-actions.pod:599 ../src/guestfs-actions.pod:1595 ../src/guestfs-actions.pod:1599 ../src/guestfs-actions.pod:1603 ../src/guestfs-actions.pod:1607 ../src/guestfs-actions.pod:1615 ../src/guestfs-actions.pod:1619 ../src/guestfs-actions.pod:1623 ../src/guestfs-actions.pod:1633 ../src/guestfs-actions.pod:1637 ../src/guestfs-actions.pod:1641 ../src/guestfs-actions.pod:1779 ../src/guestfs-actions.pod:1783 ../src/guestfs-actions.pod:1788 ../src/guestfs-actions.pod:1793 ../src/guestfs-actions.pod:1854 ../src/guestfs-actions.pod:1858 ../src/guestfs-actions.pod:1863 ../fish/guestfish.pod:432 ../fish/guestfish.pod:436 ../fish/guestfish.pod:440 ../fish/guestfish.pod:444 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:380 ../fish/guestfish-actions.pod:388 ../fish/guestfish-actions.pod:395 ../fish/guestfish-actions.pod:402 ../fish/guestfish-actions.pod:1072 ../fish/guestfish-actions.pod:1076 ../fish/guestfish-actions.pod:1080 ../fish/guestfish-actions.pod:1084 ../fish/guestfish-actions.pod:1092 ../fish/guestfish-actions.pod:1096 ../fish/guestfish-actions.pod:1100 ../fish/guestfish-actions.pod:1110 ../fish/guestfish-actions.pod:1114 ../fish/guestfish-actions.pod:1118 ../fish/guestfish-actions.pod:1208 ../fish/guestfish-actions.pod:1212 ../fish/guestfish-actions.pod:1217 ../fish/guestfish-actions.pod:1222 ../fish/guestfish-actions.pod:1264 ../fish/guestfish-actions.pod:1268 ../fish/guestfish-actions.pod:1273 ../tools/virt-win-reg.pl:536 ../tools/virt-win-reg.pl:542 ../tools/virt-win-reg.pl:548 ../tools/virt-resize.pl:345 ../tools/virt-resize.pl:350 ../tools/virt-resize.pl:360
 msgid "*"
 msgstr ""
 
@@ -933,7 +933,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:469 ../src/guestfs.pod:1281 ../src/guestfs.pod:1412 ../src/guestfs.pod:2185
+#: ../src/guestfs.pod:469 ../src/guestfs.pod:1281 ../src/guestfs.pod:1412 ../src/guestfs.pod:2426
 msgid "1."
 msgstr ""
 
@@ -951,7 +951,7 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:475 ../src/guestfs.pod:1285 ../src/guestfs.pod:1416 ../src/guestfs.pod:2210
+#: ../src/guestfs.pod:475 ../src/guestfs.pod:1285 ../src/guestfs.pod:1416 ../src/guestfs.pod:2451
 msgid "2."
 msgstr ""
 
@@ -3285,324 +3285,733 @@ msgstr ""
 #. type: textblock
 #: ../src/guestfs.pod:1686
 msgid ""
-"The child process generates events in some situations.  Current events "
-"include: receiving a log message, the child process exits."
+"B<Note:> This section documents the generic event mechanism introduced in "
+"libguestfs 1.10, which you should use in new code if possible.  The old "
+"functions C<guestfs_set_log_message_callback>, "
+"C<guestfs_set_subprocess_quit_callback>, "
+"C<guestfs_set_launch_done_callback>, C<guestfs_set_close_callback> and "
+"C<guestfs_set_progress_callback> are no longer documented in this manual "
+"page."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1689
+#: ../src/guestfs.pod:1694
 msgid ""
-"Use the C<guestfs_set_*_callback> functions to set a callback for different "
-"types of events."
+"Handles generate events when certain things happen, such as log messages "
+"being generated, progress messages during long-running operations, or the "
+"handle being closed.  The API calls described below let you register a "
+"callback to be called when events happen.  You can register multiple "
+"callbacks (for the same, different or overlapping sets of events), and "
+"individually remove callbacks.  If callbacks are not removed, then they "
+"remain in force until the handle is closed."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1692
+#: ../src/guestfs.pod:1702
 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>."
+"In the current implementation, events are only generated synchronously: that "
+"means that events (and hence callbacks) can only happen while you are in the "
+"middle of making another libguestfs call.  The callback is called in the "
+"same thread."
 msgstr ""
 
-#. type: =head2
-#: ../src/guestfs.pod:1697
-msgid "guestfs_set_log_message_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1707
+msgid ""
+"Events may contain a payload, usually nothing (void), an array of 64 bit "
+"unsigned integers, or a message buffer.  Payloads are discussed later on."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1711
+msgid "CLASSES OF EVENTS"
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1715
+msgid "GUESTFS_EVENT_CLOSE (payload type: void)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1718
+msgid ""
+"The callback function will be called while the handle is being closed "
+"(synchronously from L</guestfs_close>)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1721
+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: textblock
+#: ../src/guestfs.pod:1728
+msgid ""
+"If no callback is registered: the handle is closed without any callback "
+"being invoked."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1731
+msgid "GUESTFS_EVENT_SUBPROCESS_QUIT (payload type: void)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1734
+msgid ""
+"The callback function 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: textblock
+#: ../src/guestfs.pod:1738 ../src/guestfs.pod:1747
+msgid "If no callback is registered: the event is ignored."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1740
+msgid "GUESTFS_EVENT_LAUNCH_DONE (payload type: void)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1743
+msgid ""
+"The callback function 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: =item
+#: ../src/guestfs.pod:1749
+msgid "GUESTFS_EVENT_PROGRESS (payload type: array of 4 x uint64_t)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1752
+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:1758
+msgid ""
+"The callback receives in the payload four unsigned 64 bit numbers which are "
+"(in order): C<proc_nr>, C<serial>, C<position>, C<total>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1761
+msgid ""
+"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:1766
+msgid "The only defined and stable parts of the API are:"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1772
+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:1777
+msgid "0 E<lt>= C<position> E<lt>= C<total>"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1781
+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:1784
+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:1790
+msgid ""
+"The callback also receives the procedure number (C<proc_nr>) and serial "
+"number (C<serial>) 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: textblock
+#: ../src/guestfs.pod:1796
+msgid "If no callback is registered: progress messages are discarded."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1798
+msgid "GUESTFS_EVENT_APPLIANCE (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1801
+msgid ""
+"The callback function is called whenever a log message is generated by qemu, "
+"the appliance kernel, guestfsd (daemon), or utility programs."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1804
+msgid ""
+"If the verbose flag (L</guestfs_set_verbose>) is set before launch "
+"(L</guestfs_launch>) then additional debug messages are generated."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1807 ../src/guestfs.pod:1821
+msgid ""
+"If no callback is registered: the messages are discarded unless the verbose "
+"flag is set in which case they are sent to stderr.  You can override the "
+"printing of verbose messages to stderr by setting up a callback."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1812
+msgid "GUESTFS_EVENT_LIBRARY (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1815
+msgid ""
+"The callback function is called whenever a log message is generated by the "
+"library part of libguestfs."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1818
+msgid ""
+"If the verbose flag (L</guestfs_set_verbose>) is set then additional debug "
+"messages are generated."
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1826
+msgid "GUESTFS_EVENT_TRACE (payload type: message buffer)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1829
+msgid ""
+"The callback function is called whenever a trace message is generated.  This "
+"only applies if the trace flag (L</guestfs_set_trace>) is set."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1832
+msgid ""
+"If no callback is registered: the messages are sent to stderr.  You can "
+"override the printing of trace messages to stderr by setting up a callback."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1838
+msgid "guestfs_set_event_callback"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1699
+#: ../src/guestfs.pod:1840
 #, 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"
+" int guestfs_set_event_callback (guestfs_h *g,\n"
+"                                 guestfs_event_callback cb,\n"
+"                                 uint64_t event_bitmask,\n"
+"                                 int flags,\n"
+"                                 void *opaque);\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1705
+#: ../src/guestfs.pod:1846
 msgid ""
-"The callback function C<cb> will be called whenever qemu or the guest writes "
-"anything to the console."
+"This function registers a callback (C<cb>) for all event classes in the "
+"C<event_bitmask>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1708
-msgid "Use this function to capture kernel messages and similar."
+#: ../src/guestfs.pod:1849
+msgid ""
+"For example, to register for all log message events, you could call this "
+"function with the bitmask C<GUESTFS_EVENT_APPLIANCE|GUESTFS_EVENT_LIBRARY>.  "
+"To register a single callback for all possible classes of events, use "
+"C<GUESTFS_EVENT_ALL>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1710
+#: ../src/guestfs.pod:1855
+msgid "C<flags> should always be passed as 0."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1857
 msgid ""
-"Normally there is no log message handler, and log messages are just "
-"discarded."
+"C<opaque> is an opaque pointer which is passed to the callback.  You can use "
+"it for any purpose."
 msgstr ""
 
-#. type: =head2
-#: ../src/guestfs.pod:1713
-msgid "guestfs_set_subprocess_quit_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1860
+msgid ""
+"The return value is the event handle (an integer) which you can use to "
+"delete the callback (see below)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1863
+msgid ""
+"If there is an error, this function returns C<-1>, and sets the error in the "
+"handle in the usual way (see L</guestfs_last_error> etc.)"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1866
+msgid ""
+"Callbacks remain in effect until they are deleted, or until the handle is "
+"closed."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1869
+msgid ""
+"In the case where multiple callbacks are registered for a particular event "
+"class, all of the callbacks are called.  The order in which multiple "
+"callbacks are called is not defined."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1873
+msgid "guestfs_delete_event_callback"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1715
+#: ../src/guestfs.pod:1875
 #, 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"
+" void guestfs_delete_event_callback (guestfs_h *g, int event_handle);\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1720
+#: ../src/guestfs.pod:1877
 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)."
+"Delete a callback that was previously registered.  C<event_handle> should be "
+"the integer that was returned by a previous call to "
+"C<guestfs_set_event_callback> on the same handle."
 msgstr ""
 
-#. type: =head2
-#: ../src/guestfs.pod:1725
-msgid "guestfs_set_launch_done_callback"
+#. type: =head3
+#: ../src/guestfs.pod:1881
+msgid "guestfs_event_callback"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1727
+#: ../src/guestfs.pod:1883
 #, 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"
+" typedef void (*guestfs_event_callback) (\n"
+"                  guestfs_h *g,\n"
+"                  void *opaque,\n"
+"                  uint64_t event,\n"
+"                  int event_handle,\n"
+"                  int flags,\n"
+"                  const char *buf, size_t buf_len,\n"
+"                  const uint64_t *array, size_t array_len);\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1732
+#: ../src/guestfs.pod:1892
+msgid "This is the type of the event callback function that you have to provide."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1895
 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)."
+"The basic parameters are: the handle (C<g>), the opaque user pointer "
+"(C<opaque>), the event class (eg. C<GUESTFS_EVENT_PROGRESS>), the event "
+"handle, and C<flags> which in the current API you should ignore."
 msgstr ""
 
-#. type: =head2
-#: ../src/guestfs.pod:1736
-msgid "guestfs_set_close_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1899
+msgid ""
+"The remaining parameters contain the event payload (if any).  Each event may "
+"contain a payload, which usually relates to the event class, but for future "
+"proofing your code should be written to handle any payload for any event "
+"class."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1904
+msgid ""
+"C<buf> and C<buf_len> contain a message buffer (if C<buf_len == 0>, then "
+"there is no message buffer).  Note that this message buffer can contain "
+"arbitrary 8 bit data, including NUL bytes."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1908
+msgid ""
+"C<array> and C<array_len> is an array of 64 bit unsigned integers.  At the "
+"moment this is only used for progress messages."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1911
+msgid "EXAMPLE: CAPTURING LOG MESSAGES"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1913
+msgid ""
+"One motivation for the generic event API was to allow GUI programs to "
+"capture debug and other messages.  In libguestfs E<le> 1.8 these were sent "
+"unconditionally to C<stderr>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1917
+msgid ""
+"Events associated with log messages are: C<GUESTFS_EVENT_LIBRARY>, "
+"C<GUESTFS_EVENT_APPLIANCE> and C<GUESTFS_EVENT_TRACE>.  (Note that error "
+"messages are not events; you must capture error messages separately)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1922
+msgid ""
+"Programs have to set up a callback to capture the classes of events of "
+"interest:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1738
+#: ../src/guestfs.pod:1925
 #, 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"
+" int eh =\n"
+"   guestfs_set_event_callback\n"
+"     (g, message_callback,\n"
+"      GUESTFS_EVENT_LIBRARY|GUESTFS_EVENT_APPLIANCE|\n"
+"      GUESTFS_EVENT_TRACE,\n"
+"      0, NULL) == -1)\n"
+" if (eh == -1) {\n"
+"   // handle error in the usual way\n"
+" }\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1743
+#: ../src/guestfs.pod:1935
 msgid ""
-"The callback function C<cb> will be called while the handle is being closed "
-"(synchronously from L</guestfs_close>)."
+"The callback can then direct messages to the appropriate place.  In this "
+"example, messages are directed to syslog:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1938
+#, no-wrap
+msgid ""
+" static void\n"
+" message_callback (\n"
+"         guestfs_h *g,\n"
+"         void *opaque,\n"
+"         uint64_t event,\n"
+"         int event_handle,\n"
+"         int flags,\n"
+"         const char *buf, size_t buf_len,\n"
+"         const uint64_t *array, size_t array_len)\n"
+" {\n"
+"   const int priority = LOG_USER|LOG_INFO;\n"
+"   if (buf_len > 0)\n"
+"     syslog (priority, \"event 0x%lx: %s\", event, buf);\n"
+" }\n"
+"\n"
+msgstr ""
+
+#. type: =head1
+#: ../src/guestfs.pod:1953
+msgid "PRIVATE DATA AREA"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1746
+#: ../src/guestfs.pod:1955
 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)."
+"You can attach named pieces of private data to the libguestfs handle, fetch "
+"them by name, and walk over them, for the lifetime of the handle.  This is "
+"called the private data area and is only available from the C API."
 msgstr ""
 
-#. type: =head2
-#: ../src/guestfs.pod:1754
-msgid "guestfs_set_progress_callback"
+#. type: textblock
+#: ../src/guestfs.pod:1960
+msgid "To attach a named piece of data, use the following call:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1756
+#: ../src/guestfs.pod:1962
 #, 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"
+" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1763
+#: ../src/guestfs.pod:1964
 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)."
+"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:1769
+#: ../src/guestfs.pod:1968
 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."
+"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:1775
-msgid "The only defined and stable parts of the API are:"
+#: ../src/guestfs.pod:1973
+msgid "To retrieve the pointer, use:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1975
+#, no-wrap
+msgid ""
+" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
+"\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1781
+#: ../src/guestfs.pod:1977
 msgid ""
-"The callback can display to the user some type of progress bar or indicator "
-"which shows the ratio of C<position>:C<total>."
+"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:1786
-msgid "0 E<lt>= C<position> E<lt>= C<total>"
+#: ../src/guestfs.pod:1981
+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_EVENT_CLOSE>)."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1790
+#: ../src/guestfs.pod:1988
+msgid "To walk over all entries, use these two functions:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1990
+#, no-wrap
 msgid ""
-"If any progress notification is sent during a call, then a final progress "
-"notification is always sent when C<position> = C<total>."
+" void *guestfs_first_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1992
+#, no-wrap
+msgid ""
+" void *guestfs_next_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1793
+#: ../src/guestfs.pod:1994
 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."
+"C<guestfs_first_private> returns the first key, pointer pair (\"first\" does "
+"not have any particular meaning -- keys are not returned in any defined "
+"order).  A pointer to the key is returned in C<*key_rtn> and the "
+"corresponding data pointer is returned from the function.  C<NULL> is "
+"returned if there are no keys stored in the handle."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1799
+#: ../src/guestfs.pod:2000
 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."
+"C<guestfs_next_private> returns the next key, pointer pair.  The return "
+"value of this function is also C<NULL> is there are no further entries to "
+"return."
 msgstr ""
 
-#. type: =head1
-#: ../src/guestfs.pod:1804
-msgid "PRIVATE DATA AREA"
+#. type: textblock
+#: ../src/guestfs.pod:2004
+msgid "Notes about walking over entries:"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2010
+msgid "You must not call C<guestfs_set_private> while walking over the entries."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2015
+msgid ""
+"The handle maintains an internal iterator which is reset when you call "
+"C<guestfs_first_private>.  This internal iterator is invalidated when you "
+"call C<guestfs_set_private>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2021
+msgid "If you have set the data pointer associated with a key to C<NULL>, ie:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2023
+#, no-wrap
+msgid ""
+" guestfs_set_private (g, key, NULL);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2025
+msgid "then that C<key> is not returned when walking."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1806
+#: ../src/guestfs.pod:2029
 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."
+"C<*key_rtn> is only valid until the next call to C<guestfs_first_private>, "
+"C<guestfs_next_private> or C<guestfs_set_private>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1810
-msgid "To attach a named piece of data, use the following call:"
+#: ../src/guestfs.pod:2035
+msgid ""
+"The following example code shows how to print all keys and data pointers "
+"that are associated with the handle C<g>:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1812
+#: ../src/guestfs.pod:2038
 #, no-wrap
 msgid ""
-" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
+" const char *key;\n"
+" void *data = guestfs_first_private (g, &key);\n"
+" while (data != NULL)\n"
+"   {\n"
+"     printf (\"key = %s, data = %p\\n\", key, data);\n"
+"     data = guestfs_next_private (g, &key);\n"
+"   }\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1814
-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:1818
+#: ../src/guestfs.pod:2046
 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:1823
-msgid "To retrieve the pointer, use:"
+"More commonly you are only interested in keys that begin with an "
+"application-specific prefix C<foo_>.  Modify the loop like so:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1825
+#: ../src/guestfs.pod:2049
 #, no-wrap
 msgid ""
-" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
+" const char *key;\n"
+" void *data = guestfs_first_private (g, &key);\n"
+" while (data != NULL)\n"
+"   {\n"
+"     if (strncmp (key, \"foo_\", strlen (\"foo_\")) == 0)\n"
+"       printf (\"key = %s, data = %p\\n\", key, data);\n"
+"     data = guestfs_next_private (g, &key);\n"
+"   }\n"
 "\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1827
+#: ../src/guestfs.pod:2058
 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>."
+"If you need to modify keys while walking, then you have to jump back to the "
+"beginning of the loop.  For example, to delete all keys prefixed with "
+"C<foo_>:"
 msgstr ""
 
-#. type: textblock
-#: ../src/guestfs.pod:1831
+#. type: verbatim
+#: ../src/guestfs.pod:2062
+#, no-wrap
 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)."
+"  const char *key;\n"
+"  void *data;\n"
+" again:\n"
+"  data = guestfs_first_private (g, &key);\n"
+"  while (data != NULL)\n"
+"    {\n"
+"      if (strncmp (key, \"foo_\", strlen (\"foo_\")) == 0)\n"
+"        {\n"
+"          guestfs_set_private (g, key, NULL);\n"
+"          /* note that 'key' pointer is now invalid, and so is\n"
+"             the internal iterator */\n"
+"          goto again;\n"
+"        }\n"
+"      data = guestfs_next_private (g, &key);\n"
+"    }\n"
+"\n"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1839
+#: ../src/guestfs.pod:2078
 msgid ""
-"The private data area is implemented using a hash table, and should be "
-"reasonably efficient for moderate numbers of keys."
+"Note that the above loop is guaranteed to terminate because the keys are "
+"being deleted, but other manipulations of keys within the loop might not "
+"terminate unless you also maintain an indication of which keys have been "
+"visited."
 msgstr ""
 
 #. type: =end
-#: ../src/guestfs.pod:1842 ../src/guestfs.pod:1847
+#: ../src/guestfs.pod:2083 ../src/guestfs.pod:2088
 msgid "html"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1844
+#: ../src/guestfs.pod:2085
 msgid ""
 "<!-- old anchor for the next section --> <a "
 "name=\"state_machine_and_low_level_event_api\"/>"
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:1849
+#: ../src/guestfs.pod:2090
 msgid "ARCHITECTURE"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1851
+#: ../src/guestfs.pod:2092
 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 "
@@ -3610,7 +4019,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1855
+#: ../src/guestfs.pod:2096
 #, no-wrap
 msgid ""
 "  ___________________\n"
@@ -3636,14 +4045,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1875
+#: ../src/guestfs.pod:2116
 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:1878
+#: ../src/guestfs.pod:2119
 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 "
@@ -3655,7 +4064,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1887
+#: ../src/guestfs.pod:2128
 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 "
@@ -3666,17 +4075,17 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:1894
+#: ../src/guestfs.pod:2135
 msgid "STATE MACHINE"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1896
+#: ../src/guestfs.pod:2137
 msgid "libguestfs uses a state machine to model the child process:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1898
+#: ../src/guestfs.pod:2139
 #, no-wrap
 msgid ""
 "                         |\n"
@@ -3704,7 +4113,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1920
+#: ../src/guestfs.pod:2161
 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), "
@@ -3713,7 +4122,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1925
+#: ../src/guestfs.pod:2166
 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 "
@@ -3721,14 +4130,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1929
+#: ../src/guestfs.pod:2170
 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:1932
+#: ../src/guestfs.pod:2173
 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 "
@@ -3737,7 +4146,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1938
+#: ../src/guestfs.pod:2179
 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 "
@@ -3747,7 +4156,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1944
+#: ../src/guestfs.pod:2185
 msgid ""
 "Finally, the child process sends asynchronous messages back to the main "
 "program, such as kernel log messages.  You can register a callback to "
@@ -3755,24 +4164,24 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:1948
+#: ../src/guestfs.pod:2189
 msgid "INTERNALS"
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:1950
+#: ../src/guestfs.pod:2191
 msgid "COMMUNICATION PROTOCOL"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1952
+#: ../src/guestfs.pod:2193
 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:1955
+#: ../src/guestfs.pod:2196
 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 "
@@ -3780,14 +4189,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1959
+#: ../src/guestfs.pod:2200
 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:1962
+#: ../src/guestfs.pod:2203
 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 "
@@ -3797,17 +4206,17 @@ msgid ""
 msgstr ""
 
 #. type: =head3
-#: ../src/guestfs.pod:1969
+#: ../src/guestfs.pod:2210
 msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1971
+#: ../src/guestfs.pod:2212
 msgid "For ordinary functions, the request message is:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:1973
+#: ../src/guestfs.pod:2214
 #, no-wrap
 msgid ""
 " total length (header + arguments,\n"
@@ -3818,7 +4227,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1978
+#: ../src/guestfs.pod:2219
 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 "
@@ -3827,21 +4236,21 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1984
+#: ../src/guestfs.pod:2225
 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:1987
+#: ../src/guestfs.pod:2228
 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:1991
+#: ../src/guestfs.pod:2232
 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 "
@@ -3853,12 +4262,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:1999
+#: ../src/guestfs.pod:2240
 msgid "The reply message for ordinary functions is:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2001
+#: ../src/guestfs.pod:2242
 #, no-wrap
 msgid ""
 " total length (header + ret,\n"
@@ -3869,26 +4278,26 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2006
+#: ../src/guestfs.pod:2247
 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:2009
+#: ../src/guestfs.pod:2250
 msgid "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2012
+#: ../src/guestfs.pod:2253
 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:2015
+#: ../src/guestfs.pod:2256
 #, no-wrap
 msgid ""
 " total length (header + error,\n"
@@ -3899,19 +4308,19 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2020
+#: ../src/guestfs.pod:2261
 msgid ""
 "The C<guestfs_message_error> structure contains the error message as a "
 "string."
 msgstr ""
 
 #. type: =head3
-#: ../src/guestfs.pod:2023
+#: ../src/guestfs.pod:2264
 msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2025
+#: ../src/guestfs.pod:2266
 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 "
@@ -3919,7 +4328,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2029
+#: ../src/guestfs.pod:2270
 #, no-wrap
 msgid ""
 " total length (header + arguments,\n"
@@ -3933,12 +4342,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2037
+#: ../src/guestfs.pod:2278
 msgid "The \"sequence of chunks\" is:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2039
+#: ../src/guestfs.pod:2280
 #, no-wrap
 msgid ""
 " length of chunk (not including length word itself)\n"
@@ -3952,7 +4361,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2047
+#: ../src/guestfs.pod:2288
 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 "
@@ -3960,7 +4369,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2051
+#: ../src/guestfs.pod:2292
 msgid ""
 "At time of writing there are no functions that have more than one FileIn "
 "parameter.  However this is (theoretically) supported, by sending the "
@@ -3969,7 +4378,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2056
+#: ../src/guestfs.pod:2297
 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 "
@@ -3978,7 +4387,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2062
+#: ../src/guestfs.pod:2303
 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 "
@@ -3990,7 +4399,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2071
+#: ../src/guestfs.pod:2312
 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 "
@@ -4000,19 +4409,19 @@ msgid ""
 msgstr ""
 
 #. type: =head3
-#: ../src/guestfs.pod:2077
+#: ../src/guestfs.pod:2318
 msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2079
+#: ../src/guestfs.pod:2320
 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:2082
+#: ../src/guestfs.pod:2323
 #, no-wrap
 msgid ""
 " total length (header + ret,\n"
@@ -4026,12 +4435,12 @@ msgid ""
 msgstr ""
 
 #. type: =head3
-#: ../src/guestfs.pod:2090
+#: ../src/guestfs.pod:2331
 msgid "INITIAL MESSAGE"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2092
+#: ../src/guestfs.pod:2333
 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 "
@@ -4039,12 +4448,12 @@ msgid ""
 msgstr ""
 
 #. type: =head3
-#: ../src/guestfs.pod:2096
+#: ../src/guestfs.pod:2337
 msgid "PROGRESS NOTIFICATION MESSAGES"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2098
+#: ../src/guestfs.pod:2339
 msgid ""
 "The daemon may send progress notification messages at any time.  These are "
 "distinguished by the normal length word being replaced by "
@@ -4052,15 +4461,15 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2102
+#: ../src/guestfs.pod:2343
 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."
+"L</GUESTFS_EVENT_PROGRESS>) if there is a callback registered, or discards "
+"them if not."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2106
+#: ../src/guestfs.pod:2347
 msgid ""
 "The daemon self-limits the frequency of progress messages it sends (see "
 "C<daemon/proto.c:notify_progress>).  Not all calls generate progress "
@@ -4068,12 +4477,12 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2110
+#: ../src/guestfs.pod:2351
 msgid "LIBGUESTFS VERSION NUMBERS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2112
+#: ../src/guestfs.pod:2353
 msgid ""
 "Since April 2010, libguestfs has started to make separate development and "
 "stable releases, along with corresponding branches in our git repository.  "
@@ -4081,7 +4490,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2117
+#: ../src/guestfs.pod:2358
 #, no-wrap
 msgid ""
 "                 even numbers for stable: 1.2.x, 1.4.x, ...\n"
@@ -4098,12 +4507,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2128
+#: ../src/guestfs.pod:2369
 msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2130
+#: ../src/guestfs.pod:2371
 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 "
@@ -4113,26 +4522,26 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2136
+#: ../src/guestfs.pod:2377
 msgid "Our criteria for backporting changes are:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2142
+#: ../src/guestfs.pod:2383
 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:2148
+#: ../src/guestfs.pod:2389
 msgid ""
 "Bug fixes which are not controversial, fix obvious problems, and have been "
 "well tested are backported."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2153
+#: ../src/guestfs.pod:2394
 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 "
@@ -4140,7 +4549,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2159
+#: ../src/guestfs.pod:2400
 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 "
@@ -4148,7 +4557,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2165
+#: ../src/guestfs.pod:2406
 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 "
@@ -4159,17 +4568,17 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2173
+#: ../src/guestfs.pod:2414
 msgid "EXTENDING LIBGUESTFS"
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2175
+#: ../src/guestfs.pod:2416
 msgid "ADDING A NEW API ACTION"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2177
+#: ../src/guestfs.pod:2418
 msgid ""
 "Large amounts of boilerplate code in libguestfs (RPC, bindings, "
 "documentation) are generated, and this makes it easy to extend the "
@@ -4177,19 +4586,19 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2181
+#: ../src/guestfs.pod:2422
 msgid "To add a new API action there are two changes:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2187
+#: ../src/guestfs.pod:2428
 msgid ""
 "You need to add a description of the call (name, parameters, return type, "
 "tests, documentation) to C<generator/generator_actions.ml>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2190
+#: ../src/guestfs.pod:2431
 msgid ""
 "There are two sorts of API action, depending on whether the call goes "
 "through to the daemon in the appliance, or is serviced entirely by the "
@@ -4200,7 +4609,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2198
+#: ../src/guestfs.pod:2439
 msgid ""
 "Most new actions are of the first type, and get added to the "
 "C<daemon_functions> list.  Each function has a unique procedure number used "
@@ -4210,7 +4619,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2204
+#: ../src/guestfs.pod:2445
 msgid ""
 "For library-only actions of the second type, add to the "
 "C<non_daemon_functions> list.  Since these functions are serviced by the "
@@ -4220,36 +4629,36 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2212
+#: ../src/guestfs.pod:2453
 msgid "Implement the action (in C):"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2214
+#: ../src/guestfs.pod:2455
 msgid ""
 "For daemon actions, implement the function C<do_E<lt>nameE<gt>> in the "
 "C<daemon/> directory."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2217
+#: ../src/guestfs.pod:2458
 msgid ""
 "For library actions, implement the function C<guestfs__E<lt>nameE<gt>> "
 "(note: double underscore) in the C<src/> directory."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2220
+#: ../src/guestfs.pod:2461
 msgid "In either case, use another function as an example of what to do."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2224
+#: ../src/guestfs.pod:2465
 msgid "After making these changes, use C<make> to compile."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2226
+#: ../src/guestfs.pod:2467
 msgid ""
 "Note that you don't need to implement the RPC, language bindings, manual "
 "pages or anything else.  It's all automatically generated from the OCaml "
@@ -4257,12 +4666,12 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2230
+#: ../src/guestfs.pod:2471
 msgid "ADDING TESTS FOR AN API ACTION"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2232
+#: ../src/guestfs.pod:2473
 msgid ""
 "You can supply zero or as many tests as you want per API call.  The tests "
 "can either be added as part of the API description "
@@ -4272,61 +4681,61 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2238
+#: ../src/guestfs.pod:2479
 msgid ""
 "The following describes the test environment used when you add an API test "
 "in C<generator_actions.ml>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2241
+#: ../src/guestfs.pod:2482
 msgid "The test environment has 4 block devices:"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2245
+#: ../src/guestfs.pod:2486
 msgid "C</dev/sda> 500MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2247
+#: ../src/guestfs.pod:2488
 msgid "General block device for testing."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2249
+#: ../src/guestfs.pod:2490
 msgid "C</dev/sdb> 50MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2251
+#: ../src/guestfs.pod:2492
 msgid ""
 "C</dev/sdb1> is an ext2 filesystem used for testing filesystem write "
 "operations."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2254
+#: ../src/guestfs.pod:2495
 msgid "C</dev/sdc> 10MB"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2256
+#: ../src/guestfs.pod:2497
 msgid "Used in a few tests where two block devices are needed."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2258
+#: ../src/guestfs.pod:2499
 msgid "C</dev/sdd>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2260
+#: ../src/guestfs.pod:2501
 msgid "ISO with fixed content (see C<images/test.iso>)."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2264
+#: ../src/guestfs.pod:2505
 msgid ""
 "To be able to run the tests in a reasonable amount of time, the libguestfs "
 "appliance and block devices are reused between tests.  So don't try testing "
@@ -4334,7 +4743,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2268
+#: ../src/guestfs.pod:2509
 msgid ""
 "Each test starts with an initial scenario, selected using one of the "
 "C<Init*> expressions, described in C<generator/generator_types.ml>.  These "
@@ -4344,7 +4753,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2274
+#: ../src/guestfs.pod:2515
 msgid ""
 "You can add a prerequisite clause to any individual test.  This is a "
 "run-time check, which, if it fails, causes the test to be skipped.  Useful "
@@ -4354,14 +4763,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2280
+#: ../src/guestfs.pod:2521
 msgid ""
 "In addition, packagers can skip individual tests by setting environment "
 "variables before running C<make check>."
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2283
+#: ../src/guestfs.pod:2524
 #, no-wrap
 msgid ""
 " SKIP_TEST_<CMD>_<NUM>=1\n"
@@ -4369,17 +4778,17 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2285
+#: ../src/guestfs.pod:2526
 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2287
+#: ../src/guestfs.pod:2528
 msgid "or:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2289
+#: ../src/guestfs.pod:2530
 #, no-wrap
 msgid ""
 " SKIP_TEST_<CMD>=1\n"
@@ -4387,17 +4796,17 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2291
+#: ../src/guestfs.pod:2532
 msgid "eg: C<SKIP_TEST_ZEROFREE=1> skips all L</guestfs_zerofree> tests."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2293
+#: ../src/guestfs.pod:2534
 msgid "Packagers can run only certain tests by setting for example:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2295
+#: ../src/guestfs.pod:2536
 #, no-wrap
 msgid ""
 " TEST_ONLY=\"vfs_type zerofree\"\n"
@@ -4405,29 +4814,29 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2297
+#: ../src/guestfs.pod:2538
 msgid ""
 "See C<capitests/tests.c> for more details of how these environment variables "
 "work."
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2300
+#: ../src/guestfs.pod:2541
 msgid "DEBUGGING NEW API ACTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2302
+#: ../src/guestfs.pod:2543
 msgid "Test new actions work before submitting them."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2304
+#: ../src/guestfs.pod:2545
 msgid "You can use guestfish to try out new commands."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2306
+#: ../src/guestfs.pod:2547
 msgid ""
 "Debugging the daemon is a problem because it runs inside a minimal "
 "environment.  However you can fprintf messages in the daemon to stderr, and "
@@ -4435,12 +4844,12 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2310
+#: ../src/guestfs.pod:2551
 msgid "FORMATTING CODE AND OTHER CONVENTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2312
+#: ../src/guestfs.pod:2553
 msgid ""
 "Our C source code generally adheres to some basic code-formatting "
 "conventions.  The existing code base is not totally consistent on this "
@@ -4450,14 +4859,14 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2318
+#: ../src/guestfs.pod:2559
 msgid ""
 "If you use Emacs, add the following to one of one of your start-up files "
 "(e.g., ~/.emacs), to help ensure that you get indentation right:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2321
+#: ../src/guestfs.pod:2562
 #, no-wrap
 msgid ""
 " ;;; In libguestfs, indent with spaces everywhere (not TABs).\n"
@@ -4473,7 +4882,7 @@ msgid ""
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2331
+#: ../src/guestfs.pod:2572
 #, no-wrap
 msgid ""
 " ;;; When editing C sources in libguestfs, use this style.\n"
@@ -4491,12 +4900,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2343
+#: ../src/guestfs.pod:2584
 msgid "Enable warnings when compiling (and fix any problems this finds):"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2346
+#: ../src/guestfs.pod:2587
 #, no-wrap
 msgid ""
 " ./configure --enable-gcc-warnings\n"
@@ -4504,12 +4913,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2348
+#: ../src/guestfs.pod:2589
 msgid "Useful targets are:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2350
+#: ../src/guestfs.pod:2591
 #, no-wrap
 msgid ""
 " make syntax-check  # checks the syntax of the C code\n"
@@ -4518,48 +4927,48 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2353
+#: ../src/guestfs.pod:2594
 msgid "DAEMON CUSTOM PRINTF FORMATTERS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2355
+#: ../src/guestfs.pod:2596
 msgid ""
 "In the daemon code we have created custom printf formatters C<%Q> and C<%R>, "
 "which are used to do shell quoting."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2360
+#: ../src/guestfs.pod:2601
 msgid "%Q"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2362
+#: ../src/guestfs.pod:2603
 msgid ""
 "Simple shell quoted string.  Any spaces or other shell characters are "
 "escaped for you."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2365
+#: ../src/guestfs.pod:2606
 msgid "%R"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2367
+#: ../src/guestfs.pod:2608
 msgid ""
 "Same as C<%Q> except the string is treated as a path which is prefixed by "
 "the sysroot."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2372 ../fish/guestfish.pod:240 ../fish/guestfish.pod:599
+#: ../src/guestfs.pod:2613 ../fish/guestfish.pod:240 ../fish/guestfish.pod:599
 msgid "For example:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2374
+#: ../src/guestfs.pod:2615
 #, no-wrap
 msgid ""
 " asprintf (&cmd, \"cat %R\", path);\n"
@@ -4567,12 +4976,12 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2376
+#: ../src/guestfs.pod:2617
 msgid "would produce C<cat /sysroot/some\\ path\\ with\\ spaces>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2378
+#: ../src/guestfs.pod:2619
 msgid ""
 "I<Note:> Do I<not> use these when you are passing parameters to the "
 "C<command{,r,v,rv}()> functions.  These parameters do NOT need to be quoted "
@@ -4581,12 +4990,12 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2384
+#: ../src/guestfs.pod:2625
 msgid "SUBMITTING YOUR NEW API ACTIONS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2386
+#: ../src/guestfs.pod:2627
 msgid ""
 "Submit patches to the mailing list: "
 "L<http://www.redhat.com/mailman/listinfo/libguestfs> and CC to "
@@ -4594,17 +5003,17 @@ msgid ""
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2390
+#: ../src/guestfs.pod:2631
 msgid "INTERNATIONALIZATION (I18N) SUPPORT"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2392
+#: ../src/guestfs.pod:2633
 msgid "We support i18n (gettext anyhow) in the library."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2394
+#: ../src/guestfs.pod:2635
 msgid ""
 "However many messages come from the daemon, and we don't translate those at "
 "the moment.  One reason is that the appliance generally has all locale files "
@@ -4613,98 +5022,98 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2400
+#: ../src/guestfs.pod:2641
 msgid ""
 "Debugging messages are never translated, since they are intended for the "
 "programmers."
 msgstr ""
 
 #. type: =head2
-#: ../src/guestfs.pod:2403
+#: ../src/guestfs.pod:2644
 msgid "SOURCE CODE SUBDIRECTORIES"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2407 ../src/guestfs-actions.pod:5686 ../fish/guestfish-actions.pod:3808
+#: ../src/guestfs.pod:2648 ../src/guestfs-actions.pod:5686 ../fish/guestfish-actions.pod:3808
 msgid "C<appliance>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2409
+#: ../src/guestfs.pod:2650
 msgid "The libguestfs appliance, build scripts and so on."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2411
+#: ../src/guestfs.pod:2652
 msgid "C<capitests>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2413
+#: ../src/guestfs.pod:2654
 msgid "Automated tests of the C API."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2415
+#: ../src/guestfs.pod:2656
 msgid "C<cat>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2417
+#: ../src/guestfs.pod:2658
 msgid ""
 "The L<virt-cat(1)>, L<virt-filesystems(1)> and L<virt-ls(1)> commands and "
 "documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2420
+#: ../src/guestfs.pod:2661
 msgid "C<contrib>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2422
+#: ../src/guestfs.pod:2663
 msgid "Outside contributions, experimental parts."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2424
+#: ../src/guestfs.pod:2665
 msgid "C<daemon>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2426
+#: ../src/guestfs.pod:2667
 msgid ""
 "The daemon that runs inside the libguestfs appliance and carries out "
 "actions."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2429
+#: ../src/guestfs.pod:2670
 msgid "C<df>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2431
+#: ../src/guestfs.pod:2672
 msgid "L<virt-df(1)> command and documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2433
+#: ../src/guestfs.pod:2674
 msgid "C<examples>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2435
+#: ../src/guestfs.pod:2676
 msgid "C API example code."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2437
+#: ../src/guestfs.pod:2678
 msgid "C<fish>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2439
+#: ../src/guestfs.pod:2680
 msgid ""
 "L<guestfish(1)>, the command-line shell, and various shell scripts built on "
 "top such as L<virt-copy-in(1)>, L<virt-copy-out(1)>, L<virt-tar-in(1)>, "
@@ -4712,89 +5121,89 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2443
+#: ../src/guestfs.pod:2684
 msgid "C<fuse>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2445
+#: ../src/guestfs.pod:2686
 msgid "L<guestmount(1)>, FUSE (userspace filesystem) built on top of libguestfs."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2447
+#: ../src/guestfs.pod:2688
 msgid "C<generator>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2449
+#: ../src/guestfs.pod:2690
 msgid ""
 "The crucially important generator, used to automatically generate large "
 "amounts of boilerplate C code for things like RPC and bindings."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2452
+#: ../src/guestfs.pod:2693
 msgid "C<images>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2454
+#: ../src/guestfs.pod:2695
 msgid "Files used by the test suite."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2456
+#: ../src/guestfs.pod:2697
 msgid "Some \"phony\" guest images which we test against."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2458
+#: ../src/guestfs.pod:2699
 msgid "C<inspector>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2460
+#: ../src/guestfs.pod:2701
 msgid "L<virt-inspector(1)>, the virtual machine image inspector."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2462
+#: ../src/guestfs.pod:2703
 msgid "C<logo>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2464
+#: ../src/guestfs.pod:2705
 msgid "Logo used on the website.  The fish is called Arthur by the way."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2466
+#: ../src/guestfs.pod:2707
 msgid "C<m4>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2468
+#: ../src/guestfs.pod:2709
 msgid "M4 macros used by autoconf."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2470
+#: ../src/guestfs.pod:2711
 msgid "C<po>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2472
+#: ../src/guestfs.pod:2713
 msgid "Translations of simple gettext strings."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2474
+#: ../src/guestfs.pod:2715
 msgid "C<po-docs>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2476
+#: ../src/guestfs.pod:2717
 msgid ""
 "The build infrastructure and PO files for translations of manpages and POD "
 "files.  Eventually this will be combined with the C<po> directory, but that "
@@ -4802,141 +5211,141 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2480
+#: ../src/guestfs.pod:2721
 msgid "C<regressions>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2482
+#: ../src/guestfs.pod:2723
 msgid "Regression tests."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2484
+#: ../src/guestfs.pod:2725
 msgid "C<rescue>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2486
+#: ../src/guestfs.pod:2727
 msgid "L<virt-rescue(1)> command and documentation."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2488
+#: ../src/guestfs.pod:2729
 msgid "C<src>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2490
+#: ../src/guestfs.pod:2731
 msgid "Source code to the C library."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2492
+#: ../src/guestfs.pod:2733
 msgid "C<tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2494
+#: ../src/guestfs.pod:2735
 msgid "Command line tools written in Perl (L<virt-resize(1)> and many others)."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2496
+#: ../src/guestfs.pod:2737
 msgid "C<test-tool>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2498
+#: ../src/guestfs.pod:2739
 msgid ""
 "Test tool for end users to test if their qemu/kernel combination will work "
 "with libguestfs."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2501
+#: ../src/guestfs.pod:2742
 msgid "C<csharp>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2503
+#: ../src/guestfs.pod:2744
 msgid "C<haskell>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2505
+#: ../src/guestfs.pod:2746
 msgid "C<java>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2507
+#: ../src/guestfs.pod:2748
 msgid "C<ocaml>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2509
+#: ../src/guestfs.pod:2750
 msgid "C<php>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2511
+#: ../src/guestfs.pod:2752
 msgid "C<perl>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2513
+#: ../src/guestfs.pod:2754
 msgid "C<python>"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2515
+#: ../src/guestfs.pod:2756
 msgid "C<ruby>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2517
+#: ../src/guestfs.pod:2758
 msgid "Language bindings."
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2521 ../fish/guestfish.pod:996 ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
+#: ../src/guestfs.pod:2762 ../fish/guestfish.pod:996 ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
 msgid "ENVIRONMENT VARIABLES"
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2525 ../fish/guestfish.pod:1022
+#: ../src/guestfs.pod:2766 ../fish/guestfish.pod:1022
 msgid "LIBGUESTFS_APPEND"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2527 ../fish/guestfish.pod:1024
+#: ../src/guestfs.pod:2768 ../fish/guestfish.pod:1024
 msgid "Pass additional options to the guest kernel."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2529 ../fish/guestfish.pod:1026
+#: ../src/guestfs.pod:2770 ../fish/guestfish.pod:1026
 msgid "LIBGUESTFS_DEBUG"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2531
+#: ../src/guestfs.pod:2772
 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:2534 ../fish/guestfish.pod:1031
+#: ../src/guestfs.pod:2775 ../fish/guestfish.pod:1031
 msgid "LIBGUESTFS_MEMSIZE"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2536 ../fish/guestfish.pod:1033
+#: ../src/guestfs.pod:2777 ../fish/guestfish.pod:1033
 msgid "Set the memory allocated to the qemu process, in megabytes.  For example:"
 msgstr ""
 
 #. type: verbatim
-#: ../src/guestfs.pod:2539 ../fish/guestfish.pod:1036
+#: ../src/guestfs.pod:2780 ../fish/guestfish.pod:1036
 #, no-wrap
 msgid ""
 " LIBGUESTFS_MEMSIZE=700\n"
@@ -4944,60 +5353,60 @@ msgid ""
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2541 ../fish/guestfish.pod:1038
+#: ../src/guestfs.pod:2782 ../fish/guestfish.pod:1038
 msgid "LIBGUESTFS_PATH"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2543
+#: ../src/guestfs.pod:2784
 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:2546 ../fish/guestfish.pod:1043
+#: ../src/guestfs.pod:2787 ../fish/guestfish.pod:1043
 msgid "LIBGUESTFS_QEMU"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2548 ../fish/guestfish.pod:1045
+#: ../src/guestfs.pod:2789 ../fish/guestfish.pod:1045
 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:2552
+#: ../src/guestfs.pod:2793
 msgid "See also L</QEMU WRAPPERS> above."
 msgstr ""
 
 #. type: =item
-#: ../src/guestfs.pod:2554 ../fish/guestfish.pod:1049
+#: ../src/guestfs.pod:2795 ../fish/guestfish.pod:1049
 msgid "LIBGUESTFS_TRACE"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2556
+#: ../src/guestfs.pod:2797
 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:2559 ../fish/guestfish.pod:1058
+#: ../src/guestfs.pod:2800 ../fish/guestfish.pod:1058
 msgid "TMPDIR"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2561 ../fish/guestfish.pod:1060
+#: ../src/guestfs.pod:2802 ../fish/guestfish.pod:1060
 msgid ""
 "Location of temporary directory, defaults to C</tmp> except for the cached "
 "supermin appliance which defaults to C</var/tmp>."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2564 ../fish/guestfish.pod:1063
+#: ../src/guestfs.pod:2805 ../fish/guestfish.pod:1063
 msgid ""
 "If libguestfs was compiled to use the supermin appliance then the real "
 "appliance is cached in this directory, shared between all handles belonging "
@@ -5006,12 +5415,12 @@ msgid ""
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2572 ../fish/guestfish.pod:1121 ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:238 ../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:286 ../tools/virt-make-fs.pl:539 ../tools/virt-list-partitions.pl:257
+#: ../src/guestfs.pod:2813 ../fish/guestfish.pod:1121 ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:238 ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572 ../tools/virt-resize.pl:1489 ../tools/virt-list-filesystems.pl:189 ../tools/virt-tar.pl:286 ../tools/virt-make-fs.pl:539 ../tools/virt-list-partitions.pl:257
 msgid "SEE ALSO"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2574
+#: ../src/guestfs.pod:2815
 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)>, "
@@ -5024,86 +5433,86 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2601
+#: ../src/guestfs.pod:2842
 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:2608 ../tools/virt-win-reg.pl:587 ../tools/virt-make-fs.pl:553
+#: ../src/guestfs.pod:2849 ../tools/virt-win-reg.pl:587 ../tools/virt-make-fs.pl:553
 msgid "BUGS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2610
+#: ../src/guestfs.pod:2851
 msgid "To get a list of bugs against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2612
+#: ../src/guestfs.pod:2853
 msgid "L<https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2614
+#: ../src/guestfs.pod:2855
 msgid "To report a new bug against libguestfs use this link:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2616
+#: ../src/guestfs.pod:2857
 msgid "L<https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2618
+#: ../src/guestfs.pod:2859
 msgid "When reporting a bug, please check:"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2624
+#: ../src/guestfs.pod:2865
 msgid "That the bug hasn't been reported already."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2628
+#: ../src/guestfs.pod:2869
 msgid "That you are testing a recent version."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2632
+#: ../src/guestfs.pod:2873
 msgid "Describe the bug accurately, and give a way to reproduce it."
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2636
+#: ../src/guestfs.pod:2877
 msgid ""
 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
 "bug report."
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2641 ../fish/guestfish.pod:1144 ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:249
+#: ../src/guestfs.pod:2882 ../fish/guestfish.pod:1144 ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:249
 msgid "AUTHORS"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2643 ../fish/guestfish.pod:1146 ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:251
+#: ../src/guestfs.pod:2884 ../fish/guestfish.pod:1146 ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:251
 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
 msgstr ""
 
 #. type: =head1
-#: ../src/guestfs.pod:2645 ../fish/guestfish.pod:1148 ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:253 ../tools/virt-edit.pl:368 ../tools/virt-win-reg.pl:602 ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206 ../tools/virt-tar.pl:305 ../tools/virt-make-fs.pl:568 ../tools/virt-list-partitions.pl:273
+#: ../src/guestfs.pod:2886 ../fish/guestfish.pod:1148 ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:253 ../tools/virt-edit.pl:368 ../tools/virt-win-reg.pl:602 ../tools/virt-resize.pl:1514 ../tools/virt-list-filesystems.pl:206 ../tools/virt-tar.pl:305 ../tools/virt-make-fs.pl:568 ../tools/virt-list-partitions.pl:273
 msgid "COPYRIGHT"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2647 ../fish/guestfish.pod:1150 ../fuse/guestmount.pod:255
+#: ../src/guestfs.pod:2888 ../fish/guestfish.pod:1150 ../fuse/guestmount.pod:255
 msgid "Copyright (C) 2009-2010 Red Hat Inc.  L<http://libguestfs.org/>"
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2650
+#: ../src/guestfs.pod:2891
 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 "
@@ -5112,7 +5521,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2655
+#: ../src/guestfs.pod:2896
 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 "
@@ -5121,7 +5530,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs.pod:2660
+#: ../src/guestfs.pod:2901
 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, "
@@ -5171,7 +5580,7 @@ msgid ""
 msgstr ""
 
 #. type: textblock
-#: ../src/guestfs-actions.pod:30 ../src/guestfs-actions.pod:134 ../src/guestfs-actions.pod:195 ../src/guestfs-actions.pod:232 ../src/guestfs-actions.pod:246 ../src/guestfs-actions.pod:267 ../src/guestfs-actions.pod:287 ../src/guestfs-actions.pod:301 ../src/guestfs-actions.pod:416 ../src/guestfs-actions.pod:436 ../src/guestfs-actions.pod:450 ../src/guestfs-actions.pod:495 ../src/guestfs-actions.pod:523 ../src/guestfs-actions.pod:541 ../src/guestfs-actions.pod:608 ../src/guestfs-actions.pod:641 ../src/guestfs-actions.pod:655 ../src/guestfs-actions.pod:670 ../src/guestfs-actions.pod:769 ../src/guestfs-actions.pod:787 ../src/guestfs-actions.pod:801 ../src/guestfs-actions.pod:815 ../src/guestfs-actions.pod:976 ../src/guestfs-actions.pod:996 ../src/guestfs-actions.pod:1014 ../src/guestfs-actions.pod:1098 ../src/guestfs-actions.pod:1116 ../src/guestfs-actions.pod:1135 ../src/guestfs-actions.pod:1149 ../src/guestfs-actions.pod:1169 ../src/guestfs-actions.pod:1239 ../src/guestfs-actions.pod:1270 ../src/guestfs-actions.pod:1295 ../src/guestfs-actions.pod:1332 ../src/guestfs-actions.pod:1438 ../src/guestfs-actions.pod:1472 ../src/guestfs-actions.pod:1690 ../src/guestfs-actions.pod:1712 ../src/guestfs-actions.pod:1799 ../src/guestfs-actions.pod:2261 ../src/guestfs-actions.pod:2405 ../src/guestfs-actions.pod:2466 ../src/guestfs-actions.pod:2501 ../src/guestfs-actions.pod:3336 ../src/guestfs-actions.pod:3351 ../src/guestfs-actions.pod:3371 ../src/guestfs-actions.pod:3526 ../src/guestfs-actions.pod:3540 ../src/guestfs-actions.pod:3553 ../src/guestfs-actions.pod:3567 ../src/guestfs-actions.pod:3582 ../src/guestfs-actions.pod:3618 ../src/guestfs-actions.pod:3690 ../src/guestfs-actions.pod:3710 ../src/guestfs-actions.pod:3727 ../src/guestfs-actions.pod:3750 ../src/guestfs-actions.pod:3773 ../src/guestfs-actions.pod:3805 ../src/guestfs-actions.pod:3824 ../src/guestfs-actions.pod:3843 ../src/guestfs-actions.pod:3878 ../src/guestfs-actions.pod:3890 ../src/guestfs-actions.pod:3926 ../src/guestfs-actions.pod:3942 ../src/guestfs-actions.pod:3955 ../src/guestfs-actions.pod:3970 ../src/guestfs-actions.pod:3987 ../src/guestfs-actions.pod:4080 ../src/guestfs-actions.pod:4100 ../s