NOTE: This file is automatically generated from "update-bugs.sh".
-Last updated: 2010-12-16 23:16:38
+Last updated: 2010-12-19 15:38:46
This contains a local list of the bugs that are open against
libguestfs. Bugs are tracked in the Red Hat Bugzilla database
660687 NEW https://bugzilla.redhat.com/show_bug.cgi?id=660687
guestmount: "touch" command fails: touch: setting times of `timestamp': Invalid argument
-661280 NEW https://bugzilla.redhat.com/show_bug.cgi?id=661280
- virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
-
-663407 NEW https://bugzilla.redhat.com/show_bug.cgi?id=663407
- readlink and readlinklist returns /sysroot/ in some paths
-
576879 ASSIGNED https://bugzilla.redhat.com/show_bug.cgi?id=576879
libguestfs protocol loses synchronization if you 'upload' before mounting disks
655554 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=655554
Whole disk paths are not made canonical by virt-inspector
+661280 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=661280
+ virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
+
+663407 MODIFIED https://bugzilla.redhat.com/show_bug.cgi?id=663407
+ readlink and readlinklist returns /sysroot/ in some paths
+
--------------------------------------------------
These bugs are in the VERIFIED state.
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+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"
# type: =head2
#: ../src/guestfs.pod:337
-msgid "LISTING FILES"
+msgid "UPLOADING AND DOWNLOADING TO PIPES AND FILE DESCRIPTORS"
msgstr ""
# type: textblock
#: ../src/guestfs.pod:339
msgid ""
+"Calls like L</guestfs_upload>, L</guestfs_download>, L</guestfs_tar_in>, L</"
+"guestfs_tar_out> etc appear to only take filenames as arguments, so it "
+"appears you can only upload and download to files. However many Un*x-like "
+"hosts let you use the special device files C</dev/stdin>, C</dev/stdout>, C</"
+"dev/stderr> and C</dev/fd/N> to read and write from stdin, stdout, stderr, "
+"and arbitrary file descriptor N."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:347
+msgid "For example, L<virt-cat(1)> writes its output to stdout by doing:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:350
+#, no-wrap
+msgid ""
+" guestfs_download (filename, \"/dev/stdout\");\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:352
+msgid "and you can write tar output to a pipe C<fd> by doing:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:354
+#, no-wrap
+msgid ""
+" char devfd[64];\n"
+" snprintf (devfd, sizeof devfd, \"/dev/fd/%d\", fd);\n"
+" guestfs_tar_out (\"/\", devfd);\n"
+"\n"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:358
+msgid "LISTING FILES"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:360
+msgid ""
"L</guestfs_ll> is just designed for humans to read (mainly when using the "
"L<guestfish(1)>-equivalent command C<ll>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:342
+#: ../src/guestfs.pod:363
msgid ""
"L</guestfs_ls> is a quick way to get a list of files in a directory from "
"programs, as a flat list of strings."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:345
+#: ../src/guestfs.pod:366
msgid ""
"L</guestfs_readdir> is a programmatic way to get a list of files in a "
"directory, plus additional information about each one. It is more "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:349
+#: ../src/guestfs.pod:370
msgid ""
"L</guestfs_find> and L</guestfs_find0> can be used to recursively list files."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:352
+#: ../src/guestfs.pod:373
msgid "RUNNING COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:354
+#: ../src/guestfs.pod:375
msgid ""
"Although libguestfs is primarily an API for manipulating files inside guest "
"images, we also provide some limited facilities for running commands inside "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:358
+#: ../src/guestfs.pod:379
msgid "There are many limitations to this:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:362 ../src/guestfs.pod:367 ../src/guestfs.pod:372
-#: ../src/guestfs.pod:376 ../src/guestfs.pod:381 ../src/guestfs.pod:385
-#: ../src/guestfs.pod:390 ../src/guestfs.pod:395 ../src/guestfs.pod:985
-#: ../src/guestfs.pod:989 ../src/guestfs.pod:993 ../src/guestfs.pod:998
-#: ../src/guestfs.pod:1006 ../src/guestfs.pod:1025 ../src/guestfs.pod:1033
-#: ../src/guestfs.pod:1055 ../src/guestfs.pod:1059 ../src/guestfs.pod:1063
-#: ../src/guestfs.pod:1067 ../src/guestfs.pod:1071 ../src/guestfs.pod:1075
-#: ../src/guestfs.pod:1557 ../src/guestfs.pod:1562 ../src/guestfs.pod:1566
-#: ../src/guestfs.pod:1676 ../src/guestfs.pod:1681 ../src/guestfs.pod:1685
-#: ../src/guestfs.pod:2037 ../src/guestfs.pod:2043 ../src/guestfs.pod:2048
-#: ../src/guestfs.pod:2054 ../src/guestfs.pod:2166 ../src/guestfs.pod:2170
-#: ../src/guestfs.pod:2174 ../src/guestfs.pod:2178
+#: ../src/guestfs.pod:383 ../src/guestfs.pod:388 ../src/guestfs.pod:393
+#: ../src/guestfs.pod:397 ../src/guestfs.pod:402 ../src/guestfs.pod:406
+#: ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:1006
+#: ../src/guestfs.pod:1010 ../src/guestfs.pod:1014 ../src/guestfs.pod:1019
+#: ../src/guestfs.pod:1027 ../src/guestfs.pod:1046 ../src/guestfs.pod:1054
+#: ../src/guestfs.pod:1076 ../src/guestfs.pod:1080 ../src/guestfs.pod:1084
+#: ../src/guestfs.pod:1088 ../src/guestfs.pod:1092 ../src/guestfs.pod:1096
+#: ../src/guestfs.pod:1578 ../src/guestfs.pod:1583 ../src/guestfs.pod:1587
+#: ../src/guestfs.pod:1697 ../src/guestfs.pod:1702 ../src/guestfs.pod:1706
+#: ../src/guestfs.pod:2058 ../src/guestfs.pod:2064 ../src/guestfs.pod:2069
+#: ../src/guestfs.pod:2075 ../src/guestfs.pod:2187 ../src/guestfs.pod:2191
+#: ../src/guestfs.pod:2195 ../src/guestfs.pod:2199
#: ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22
#: ../src/guestfs-actions.pod:571 ../src/guestfs-actions.pod:579
#: ../src/guestfs-actions.pod:586 ../src/guestfs-actions.pod:593
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:364
+#: ../src/guestfs.pod:385
msgid ""
"The kernel version that the command runs under will be different from what "
"it expects."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:369
+#: ../src/guestfs.pod:390
msgid ""
"If the command needs to communicate with daemons, then most likely they "
"won't be running."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:374
+#: ../src/guestfs.pod:395
msgid "The command will be running in limited memory."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:378
+#: ../src/guestfs.pod:399
msgid ""
"The network may not be available unless you enable it (see L</"
"guestfs_set_network>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:383
+#: ../src/guestfs.pod:404
msgid "Only supports Linux guests (not Windows, BSD, etc)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:387
+#: ../src/guestfs.pod:408
msgid ""
"Architecture limitations (eg. won't work for a PPC guest on an X86 host)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:392
+#: ../src/guestfs.pod:413
msgid ""
"For SELinux guests, you may need to enable SELinux and load policy first. "
"See L</SELINUX> in this manpage."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:397
+#: ../src/guestfs.pod:418
msgid ""
"I<Security:> It is not safe to run commands from untrusted, possibly "
"malicious guests. These commands may attempt to exploit your program by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:406
+#: ../src/guestfs.pod:427
msgid ""
"A secure alternative is to use libguestfs to install a \"firstboot\" script "
"(a script which runs when the guest next boots normally), and to have this "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:414
+#: ../src/guestfs.pod:435
msgid ""
"The two main API calls to run commands are L</guestfs_command> and L</"
"guestfs_sh> (there are also variations)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:417
+#: ../src/guestfs.pod:438
msgid ""
"The difference is that L</guestfs_sh> runs commands using the shell, so any "
"shell globs, redirections, etc will work."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:420
+#: ../src/guestfs.pod:441
msgid "CONFIGURATION FILES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:422
+#: ../src/guestfs.pod:443
msgid ""
"To read and write configuration files in Linux guest filesystems, we "
"strongly recommend using Augeas. For example, Augeas understands how to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:427
+#: ../src/guestfs.pod:448
msgid ""
"The main Augeas calls are bound through the C<guestfs_aug_*> APIs. We don't "
"document Augeas itself here because there is excellent documentation on the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:431
+#: ../src/guestfs.pod:452
msgid ""
"If you don't want to use Augeas (you fool!) then try calling L</"
"guestfs_read_lines> to get the file as a list of lines which you can iterate "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:435
+#: ../src/guestfs.pod:456
msgid "SELINUX"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:437
+#: ../src/guestfs.pod:458
msgid ""
"We support SELinux guests. To ensure that labeling happens correctly in "
"SELinux guests, you need to enable SELinux and load the guest's policy:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:443 ../src/guestfs.pod:1178 ../src/guestfs.pod:1309
+#: ../src/guestfs.pod:464 ../src/guestfs.pod:1199 ../src/guestfs.pod:1330
msgid "1."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:445
+#: ../src/guestfs.pod:466
msgid "Before launching, do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:447
+#: ../src/guestfs.pod:468
#, no-wrap
msgid ""
" guestfs_set_selinux (g, 1);\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:449 ../src/guestfs.pod:1182 ../src/guestfs.pod:1313
+#: ../src/guestfs.pod:470 ../src/guestfs.pod:1203 ../src/guestfs.pod:1334
msgid "2."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:451
+#: ../src/guestfs.pod:472
msgid ""
"After mounting the guest's filesystem(s), load the policy. This is best "
"done by running the L<load_policy(8)> command in the guest itself:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:455
+#: ../src/guestfs.pod:476
#, no-wrap
msgid ""
" guestfs_sh (g, \"/usr/sbin/load_policy\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:457
+#: ../src/guestfs.pod:478
msgid ""
"(Older versions of C<load_policy> require you to specify the name of the "
"policy file)."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:460 ../src/guestfs.pod:1319
+#: ../src/guestfs.pod:481 ../src/guestfs.pod:1340
msgid "3."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:462
+#: ../src/guestfs.pod:483
msgid ""
"Optionally, set the security context for the API. The correct security "
"context to use can only be known by inspecting the guest. As an example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:466
+#: ../src/guestfs.pod:487
#, no-wrap
msgid ""
" guestfs_setcon (g, \"unconfined_u:unconfined_r:unconfined_t:s0\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:470
+#: ../src/guestfs.pod:491
msgid "This will work for running commands and editing existing files."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:472
+#: ../src/guestfs.pod:493
msgid ""
"When new files are created, you may need to label them explicitly, for "
"example by running the external command C<restorecon pathname>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:476
+#: ../src/guestfs.pod:497
msgid "UMASK"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:478
+#: ../src/guestfs.pod:499
msgid ""
"Certain calls are affected by the current file mode creation mask (the "
"\"umask\"). In particular ones which create files or directories, such as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:484
+#: ../src/guestfs.pod:505
msgid ""
"The default umask is C<022>, so files are created with modes such as C<0644> "
"and directories with C<0755>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:487
+#: ../src/guestfs.pod:508
msgid ""
"There are two ways to avoid being affected by umask. Either set umask to 0 "
"(call C<guestfs_umask (g, 0)> early after launching). Or call L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:491
+#: ../src/guestfs.pod:512
msgid "For more information about umask, see L<umask(2)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:493 ../fish/guestfish.pod:720
+#: ../src/guestfs.pod:514 ../fish/guestfish.pod:720
msgid "ENCRYPTED DISKS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:495
+#: ../src/guestfs.pod:516
msgid ""
"Libguestfs allows you to access Linux guests which have been encrypted using "
"whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:501
+#: ../src/guestfs.pod:522
msgid ""
"Use L</guestfs_vfs_type> to identify LUKS-encrypted block devices (it "
"returns the string C<crypto_LUKS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:504
+#: ../src/guestfs.pod:525
msgid ""
"Then open these devices by calling L</guestfs_luks_open>. Obviously you "
"will require the passphrase!"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:507
+#: ../src/guestfs.pod:528
msgid ""
"Opening a LUKS device creates a new device mapper device called C</dev/"
"mapper/mapname> (where C<mapname> is the string you supply to L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:513
+#: ../src/guestfs.pod:534
msgid ""
"LVM volume groups on the device can be made visible by calling L</"
"guestfs_vgscan> followed by L</guestfs_vg_activate_all>. The logical volume"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:517
+#: ../src/guestfs.pod:538
msgid ""
"Use the reverse process to close a LUKS device. Unmount any logical volumes "
"on it, deactivate the volume groups by caling C<guestfs_vg_activate (g, 0, "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:524
+#: ../src/guestfs.pod:545
msgid "INSPECTION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:526
+#: ../src/guestfs.pod:547
msgid ""
"Libguestfs has APIs for inspecting an unknown disk image to find out if it "
"contains operating systems. (These APIs used to be in a separate Perl-only "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:532
+#: ../src/guestfs.pod:553
msgid ""
"Add all disks belonging to the unknown virtual machine and call L</"
"guestfs_launch> in the usual way."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:535
+#: ../src/guestfs.pod:556
msgid ""
"Then call L</guestfs_inspect_os>. This function uses other libguestfs calls "
"and certain heuristics, and returns a list of operating systems that were "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:544
+#: ../src/guestfs.pod:565
msgid ""
"For each root, you can then call various C<guestfs_inspect_get_*> functions "
"to get additional details about that operating system. For example, call L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:550
+#: ../src/guestfs.pod:571
msgid ""
"Un*x-like and Linux-based operating systems usually consist of several "
"filesystems which are mounted at boot time (for example, a separate boot "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:557
+#: ../src/guestfs.pod:578
#, no-wrap
msgid ""
" /boot => /dev/sda1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:561
+#: ../src/guestfs.pod:582
msgid ""
"The caller can then make calls to L</guestfs_mount_options> to mount the "
"filesystems as suggested."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:564
+#: ../src/guestfs.pod:585
msgid ""
"Be careful to mount filesystems in the right order (eg. C</> before C</"
"usr>). Sorting the keys of the hash by length, shortest first, should work."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:568
+#: ../src/guestfs.pod:589
msgid ""
"Inspection currently only works for some common operating systems. "
"Contributors are welcome to send patches for other operating systems that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:572
+#: ../src/guestfs.pod:593
msgid ""
"Encrypted disks must be opened before inspection. See L</ENCRYPTED DISKS> "
"for more details. The L</guestfs_inspect_os> function just ignores any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:576
+#: ../src/guestfs.pod:597
msgid ""
"A note on the implementation: The call L</guestfs_inspect_os> performs "
"inspection and caches the results in the guest handle. Subsequent calls to "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:585
+#: ../src/guestfs.pod:606
msgid "SPECIAL CONSIDERATIONS FOR WINDOWS GUESTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:587
+#: ../src/guestfs.pod:608
msgid ""
"Libguestfs can mount NTFS partitions. It does this using the L<http://www."
"ntfs-3g.org/> driver."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:590
+#: ../src/guestfs.pod:611
msgid "DRIVE LETTERS AND PATHS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:592
+#: ../src/guestfs.pod:613
msgid ""
"DOS and Windows still use drive letters, and the filesystems are always "
"treated as case insensitive by Windows itself, and therefore you might find "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:598
+#: ../src/guestfs.pod:619
msgid ""
"Drive letter mappings are outside the scope of libguestfs. You have to use "
"libguestfs to read the appropriate Windows Registry and configuration files, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:603
+#: ../src/guestfs.pod:624
msgid ""
"Replacing backslash characters with forward slash characters is also outside "
"the scope of libguestfs, but something that you can easily do."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:606
+#: ../src/guestfs.pod:627
msgid ""
"Where we can help is in resolving the case insensitivity of paths. For "
"this, call L</guestfs_case_sensitive_path>."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:609
+#: ../src/guestfs.pod:630
msgid "ACCESSING THE WINDOWS REGISTRY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:611
+#: ../src/guestfs.pod:632
msgid ""
"Libguestfs also provides some help for decoding Windows Registry \"hive\" "
"files, through the library C<hivex> which is part of the libguestfs project "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:619
+#: ../src/guestfs.pod:640
msgid "SYMLINKS ON NTFS-3G FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:621
+#: ../src/guestfs.pod:642
msgid ""
"Ntfs-3g tries to rewrite \"Junction Points\" and NTFS \"symbolic links\" to "
"provide something which looks like a Linux symlink. The way it tries to do "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:625
+#: ../src/guestfs.pod:646
msgid ""
"L<http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-"
"symbolic-links/>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:627
+#: ../src/guestfs.pod:648
msgid ""
"The essential problem is that ntfs-3g simply does not have enough "
"information to do a correct job. NTFS links can contain drive letters and "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:634
+#: ../src/guestfs.pod:655
msgid ""
"Instead if you encounter a symbolic link on an ntfs-3g filesystem, use L</"
"guestfs_lgetxattr> to read the C<system.ntfs_reparse_data> extended "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:639
+#: ../src/guestfs.pod:660
msgid "EXTENDED ATTRIBUTES ON NTFS-3G FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:641
+#: ../src/guestfs.pod:662
msgid ""
"There are other useful extended attributes that can be read from ntfs-3g "
"filesystems (using L</guestfs_getxattr>). See:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:644
+#: ../src/guestfs.pod:665
msgid ""
"L<http://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/>"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:646
+#: ../src/guestfs.pod:667
msgid "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:648
+#: ../src/guestfs.pod:669
msgid ""
"Although we don't want to discourage you from using the C API, we will "
"mention here that the same API is also available in other languages."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:651
+#: ../src/guestfs.pod:672
msgid ""
"The API is broadly identical in all supported languages. This means that "
"the C call C<guestfs_mount(g,path)> is C<$g-E<gt>mount($path)> in Perl, C<g."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:657
+#: ../src/guestfs.pod:678
msgid ""
"Error messages are automatically transformed into exceptions if the language "
"supports it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:660
+#: ../src/guestfs.pod:681
msgid ""
"We don't try to \"object orientify\" parts of the API in OO languages, "
"although contributors are welcome to write higher level APIs above what we "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:666
+#: ../src/guestfs.pod:687
msgid "B<C++>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:668
+#: ../src/guestfs.pod:689
msgid ""
"You can use the I<guestfs.h> header file from C++ programs. The C++ API is "
"identical to the C API. C++ classes and exceptions are not used."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:672
+#: ../src/guestfs.pod:693
msgid "B<C#>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:674
+#: ../src/guestfs.pod:695
msgid ""
"The C# bindings are highly experimental. Please read the warnings at the "
"top of C<csharp/Libguestfs.cs>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:677
+#: ../src/guestfs.pod:698
msgid "B<Haskell>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:679
+#: ../src/guestfs.pod:700
msgid ""
"This is the only language binding that is working but incomplete. Only "
"calls which return simple integers have been bound in Haskell, and we are "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:683
+#: ../src/guestfs.pod:704
msgid "B<Java>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:685
+#: ../src/guestfs.pod:706
msgid ""
"Full documentation is contained in the Javadoc which is distributed with "
"libguestfs."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:688
+#: ../src/guestfs.pod:709
msgid "B<OCaml>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:690
+#: ../src/guestfs.pod:711
msgid "For documentation see L<guestfs-ocaml(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:692
+#: ../src/guestfs.pod:713
msgid "B<Perl>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:694
+#: ../src/guestfs.pod:715
msgid "For documentation see L<Sys::Guestfs(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:696
+#: ../src/guestfs.pod:717
msgid "B<PHP>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:698
+#: ../src/guestfs.pod:719
msgid ""
"For documentation see C<README-PHP> supplied with libguestfs sources or in "
"the php-libguestfs package for your distribution."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:701
+#: ../src/guestfs.pod:722
msgid "The PHP binding only works correctly on 64 bit machines."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:703
+#: ../src/guestfs.pod:724
msgid "B<Python>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:705
+#: ../src/guestfs.pod:726
msgid "For documentation see L<guestfs-python(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:707
+#: ../src/guestfs.pod:728
msgid "B<Ruby>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:709
+#: ../src/guestfs.pod:730
msgid "For documentation see L<guestfs-ruby(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:711
+#: ../src/guestfs.pod:732
msgid "B<shell scripts>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:713
+#: ../src/guestfs.pod:734
msgid "For documentation see L<guestfish(1)>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:717
+#: ../src/guestfs.pod:738
msgid "LIBGUESTFS GOTCHAS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:719
+#: ../src/guestfs.pod:740
msgid ""
"L<http://en.wikipedia.org/wiki/Gotcha_(programming)>: \"A feature of a "
"system [...] that works in the way it is documented but is counterintuitive "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:723
+#: ../src/guestfs.pod:744
msgid ""
"Since we developed libguestfs and the associated tools, there are several "
"things we would have designed differently, but are now stuck with for "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:731
+#: ../src/guestfs.pod:752
msgid "Autosync / forgetting to sync."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:733
+#: ../src/guestfs.pod:754
msgid ""
"When modifying a filesystem from C or another language, you B<must> unmount "
"all filesystems and call L</guestfs_sync> explicitly before you close the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:737
+#: ../src/guestfs.pod:758
#, no-wrap
msgid ""
" guestfs_set_autosync (g, 1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:739
+#: ../src/guestfs.pod:760
msgid ""
"to have the unmount/sync done automatically for you when the handle 'g' is "
"closed. (This feature is called \"autosync\", L</guestfs_set_autosync> q.v.)"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:743
+#: ../src/guestfs.pod:764
msgid ""
"If you forget to do this, then it is entirely possible that your changes "
"won't be written out, or will be partially written, or (very rarely) that "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:747
+#: ../src/guestfs.pod:768
msgid ""
"Note that in L<guestfish(3)> autosync is the default. So quick and dirty "
"guestfish scripts that forget to sync will work just fine, which can make "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:751
+#: ../src/guestfs.pod:772
msgid ""
"Update: Autosync is enabled by default for all API users starting from "
"libguestfs 1.5.24."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:754
+#: ../src/guestfs.pod:775
msgid "Mount option C<-o sync> should not be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:756
+#: ../src/guestfs.pod:777
msgid ""
"If you use L</guestfs_mount>, then C<-o sync,noatime> are added implicitly. "
"However C<-o sync> does not add any reliability benefit, but does have a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:760
+#: ../src/guestfs.pod:781
msgid ""
"The work around is to use L</guestfs_mount_options> and set the mount "
"options that you actually want to use."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:763
+#: ../src/guestfs.pod:784
msgid "Read-only should be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:765
+#: ../src/guestfs.pod:786
msgid ""
"In L<guestfish(3)>, I<--ro> should be the default, and you should have to "
"specify I<--rw> if you want to make changes to the image."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:768
+#: ../src/guestfs.pod:789
msgid "This would reduce the potential to corrupt live VM images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:770
+#: ../src/guestfs.pod:791
msgid ""
"Note that many filesystems change the disk when you just mount and unmount, "
"even if you didn't perform any writes. You need to use L</"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:774
+#: ../src/guestfs.pod:795
msgid "guestfish command line is hard to use."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:776
+#: ../src/guestfs.pod:797
msgid ""
"C<guestfish disk.img> doesn't do what people expect (open C<disk.img> for "
"examination). It tries to run a guestfish command C<disk.img> which doesn't "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:783
+#: ../src/guestfs.pod:804
msgid "guestfish megabyte modifiers don't work right on all commands"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:785
+#: ../src/guestfs.pod:806
msgid ""
"In recent guestfish you can use C<1M> to mean 1 megabyte (and similarly for "
"other modifiers). What guestfish actually does is to multiply the number "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:792
+#: ../src/guestfs.pod:813
msgid "The most common is L</guestfs_lvcreate>. The guestfish command:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:794
+#: ../src/guestfs.pod:815
#, no-wrap
msgid ""
" lvcreate LV VG 100M\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:796
+#: ../src/guestfs.pod:817
msgid ""
"does not do what you might expect. Instead because L</guestfs_lvcreate> is "
"already expecting megabytes, this tries to create a 100 I<terabyte> (100 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:801
+#: ../src/guestfs.pod:822
msgid ""
"This could be fixed in the generator by specially marking parameters and "
"return values which take bytes or other units."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:804
+#: ../src/guestfs.pod:825
msgid "Ambiguity between devices and paths"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:806
+#: ../src/guestfs.pod:827
msgid ""
"There is a subtle ambiguity in the API between a device name (eg. C</dev/"
"sdb2>) and a similar pathname. A file might just happen to be called "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:811
+#: ../src/guestfs.pod:832
msgid ""
"In the current API we usually resolve this ambiguity by having two separate "
"calls, for example L</guestfs_checksum> and L</guestfs_checksum_device>. "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:817
+#: ../src/guestfs.pod:838
msgid ""
"To avoid both the ambiguity and the need to duplicate some calls, we could "
"make paths/devices into structured names. One way to do this would be to "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:823
+#: ../src/guestfs.pod:844
#, no-wrap
msgid ""
" type path = Path of string | Device of int | Partition of int * int\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:825
+#: ../src/guestfs.pod:846
msgid "which would allow you to pass arguments like:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:827
+#: ../src/guestfs.pod:848
#, no-wrap
msgid ""
" Path \"/foo/bar\"\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:832
+#: ../src/guestfs.pod:853
msgid ""
"As you can see there are still problems to resolve even with this "
"representation. Also consider how it might work in guestfish."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:837
+#: ../src/guestfs.pod:858
msgid "PROTOCOL LIMITS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:839
+#: ../src/guestfs.pod:860
msgid ""
"Internally libguestfs uses a message-based protocol to pass API calls and "
"their responses to and from a small \"appliance\" (see L</INTERNALS> for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:847
+#: ../src/guestfs.pod:868
msgid ""
"A simple call such as L</guestfs_cat> returns its result (the file data) in "
"a simple string. Because this string is at some point internally encoded as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:853
+#: ../src/guestfs.pod:874
msgid ""
"In order to transfer large files into and out of the guest filesystem, you "
"need to use particular calls that support this. The sections L</UPLOADING> "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:857
+#: ../src/guestfs.pod:878
msgid ""
"You might also consider mounting the disk image using our FUSE filesystem "
"support (L<guestmount(1)>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:860
+#: ../src/guestfs.pod:881
msgid "KEYS AND PASSPHRASES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:862
+#: ../src/guestfs.pod:883
msgid ""
"Certain libguestfs calls take a parameter that contains sensitive key "
"material, passed in as a C string."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:865
+#: ../src/guestfs.pod:886
msgid ""
"In the future we would hope to change the libguestfs implementation so that "
"keys are L<mlock(2)>-ed into physical RAM, and thus can never end up in "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:870
+#: ../src/guestfs.pod:891
msgid ""
"Therefore you should be aware that any key parameter you pass to libguestfs "
"might end up being written out to the swap partition. If this is a concern, "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:875
+#: ../src/guestfs.pod:896
msgid "MULTIPLE HANDLES AND MULTIPLE THREADS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:877
+#: ../src/guestfs.pod:898
msgid ""
"All high-level libguestfs actions are synchronous. If you want to use "
"libguestfs asynchronously then you must create a thread."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:880
+#: ../src/guestfs.pod:901
msgid ""
"Only use the handle from a single thread. Either use the handle exclusively "
"from one thread, or provide your own mutex so that two threads cannot issue "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:884
+#: ../src/guestfs.pod:905
msgid ""
"See the graphical program guestfs-browser for one possible architecture for "
"multithreaded programs using libvirt and libguestfs."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:887
+#: ../src/guestfs.pod:908
msgid "PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:889
+#: ../src/guestfs.pod:910
msgid ""
"Libguestfs needs a kernel and initrd.img, which it finds by looking along an "
"internal path."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:892
+#: ../src/guestfs.pod:913
msgid ""
"By default it looks for these in the directory C<$libdir/guestfs> (eg. C</"
"usr/local/lib/guestfs> or C</usr/lib64/guestfs>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:895
+#: ../src/guestfs.pod:916
msgid ""
"Use L</guestfs_set_path> or set the environment variable L</LIBGUESTFS_PATH> "
"to change the directories that libguestfs will search in. The value is a "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:902
+#: ../src/guestfs.pod:923
msgid "QEMU WRAPPERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:904
+#: ../src/guestfs.pod:925
msgid ""
"If you want to compile your own qemu, run qemu from a non-standard location, "
"or pass extra arguments to qemu, then you can write a shell-script wrapper "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:908
+#: ../src/guestfs.pod:929
msgid ""
"There is one important rule to remember: you I<must C<exec qemu>> as the "
"last command in the shell script (so that qemu replaces the shell and "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:913
+#: ../src/guestfs.pod:934
msgid ""
"Here is an example of a wrapper, where I have built my own copy of qemu from "
"source:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:916
+#: ../src/guestfs.pod:937
#, no-wrap
msgid ""
" #!/bin/sh -\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:920
+#: ../src/guestfs.pod:941
msgid ""
"Save this script as C</tmp/qemu.wrapper> (or wherever), C<chmod +x>, and "
"then use it by setting the LIBGUESTFS_QEMU environment variable. For "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:924
+#: ../src/guestfs.pod:945
#, no-wrap
msgid ""
" LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:926
+#: ../src/guestfs.pod:947
msgid ""
"Note that libguestfs also calls qemu with the -help and -version options in "
"order to determine features."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:929
+#: ../src/guestfs.pod:950
msgid "ABI GUARANTEE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:931
+#: ../src/guestfs.pod:952
msgid ""
"We guarantee the libguestfs ABI (binary interface), for public, high-level "
"actions as outlined in this section. Although we will deprecate some "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:937
+#: ../src/guestfs.pod:958
msgid "BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:939
+#: ../src/guestfs.pod:960
msgid ""
"In the kernel there is now quite a profusion of schemata for naming block "
"devices (in this context, by I<block device> I mean a physical or virtual "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:951
+#: ../src/guestfs.pod:972
msgid ""
"As discussed above, libguestfs uses a qemu appliance running an embedded "
"Linux kernel to access block devices. We can run a variety of appliances "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:955
+#: ../src/guestfs.pod:976
msgid ""
"This causes a problem for libguestfs because many API calls use device or "
"partition names. Working scripts and the recipe (example) scripts that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:960
+#: ../src/guestfs.pod:981
msgid ""
"Therefore libguestfs defines C</dev/sd*> as the I<standard naming scheme>. "
"Internally C</dev/sd*> names are translated, if necessary, to other names as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:966
+#: ../src/guestfs.pod:987
msgid ""
"Note that this I<only> applies to parameters. The L</guestfs_list_devices>, "
"L</guestfs_list_partitions> and similar calls return the true names of the "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:971
+#: ../src/guestfs.pod:992
msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:973
+#: ../src/guestfs.pod:994
msgid ""
"Usually this translation is transparent. However in some (very rare) cases "
"you may need to know the exact algorithm. Such cases include where you use "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:979
+#: ../src/guestfs.pod:1000
msgid ""
"The algorithm is applied only to I<parameters> which are known to be either "
"device or partition names. Return values from functions such as L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:987
+#: ../src/guestfs.pod:1008
msgid "Is the string a parameter which is a device or partition name?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:991
+#: ../src/guestfs.pod:1012
msgid "Does the string begin with C</dev/sd>?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:995
+#: ../src/guestfs.pod:1016
msgid ""
"Does the named device exist? If so, we use that device. However if I<not> "
"then we continue with this algorithm."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1000
+#: ../src/guestfs.pod:1021
msgid "Replace initial C</dev/sd> string with C</dev/hd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1002
+#: ../src/guestfs.pod:1023
msgid "For example, change C</dev/sda2> to C</dev/hda2>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1004
+#: ../src/guestfs.pod:1025
msgid "If that named device exists, use it. If not, continue."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1008
+#: ../src/guestfs.pod:1029
msgid "Replace initial C</dev/sd> string with C</dev/vd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1010
+#: ../src/guestfs.pod:1031
msgid "If that named device exists, use it. If not, return an error."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1014
+#: ../src/guestfs.pod:1035
msgid "PORTABILITY CONCERNS WITH BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1016
+#: ../src/guestfs.pod:1037
msgid ""
"Although the standard naming scheme and automatic translation is useful for "
"simple programs and guestfish scripts, for larger programs it is best not to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1020
+#: ../src/guestfs.pod:1041
msgid ""
"Where possible for maximum future portability programs using libguestfs "
"should use these future-proof techniques:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1027
+#: ../src/guestfs.pod:1048
msgid ""
"Use L</guestfs_list_devices> or L</guestfs_list_partitions> to list actual "
"device names, and then use those names directly."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1030
+#: ../src/guestfs.pod:1051
msgid ""
"Since those device names exist by definition, they will never be translated."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1035
+#: ../src/guestfs.pod:1056
msgid ""
"Use higher level ways to identify filesystems, such as LVM names, UUIDs and "
"filesystem labels."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1040
+#: ../src/guestfs.pod:1061
msgid "SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1042
+#: ../src/guestfs.pod:1063
msgid ""
"This section discusses security implications of using libguestfs, "
"particularly with untrusted or malicious guests or disk images."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1045
+#: ../src/guestfs.pod:1066
msgid "GENERAL SECURITY CONSIDERATIONS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1047
+#: ../src/guestfs.pod:1068
msgid ""
"Be careful with any files or data that you download from a guest (by "
"\"download\" we mean not just the L</guestfs_download> command but any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1057
+#: ../src/guestfs.pod:1078
msgid "the data (file etc) not being present"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1061
+#: ../src/guestfs.pod:1082
msgid "being present but empty"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1065
+#: ../src/guestfs.pod:1086
msgid "being much larger than normal"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1069
+#: ../src/guestfs.pod:1090
msgid "containing arbitrary 8 bit data"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1073
+#: ../src/guestfs.pod:1094
msgid "being in an unexpected character encoding"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1077
+#: ../src/guestfs.pod:1098
msgid "containing homoglyphs."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1081
+#: ../src/guestfs.pod:1102
msgid "SECURITY OF MOUNTING FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1083
+#: ../src/guestfs.pod:1104
msgid ""
"When you mount a filesystem under Linux, mistakes in the kernel filesystem "
"(VFS) module can sometimes be escalated into exploits by deliberately "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1096
+#: ../src/guestfs.pod:1117
msgid ""
"That explains why you should never mount a filesystem from an untrusted "
"guest on your host kernel. How about libguestfs? We run a Linux kernel "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1107
+#: ../src/guestfs.pod:1128
msgid ""
"In any case callers can reduce the attack surface by forcing the filesystem "
"type when mounting (use L</guestfs_mount_vfs>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1110
+#: ../src/guestfs.pod:1131
msgid "PROTOCOL SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1112
+#: ../src/guestfs.pod:1133
msgid ""
"The protocol is designed to be secure, being based on RFC 4506 (XDR) with a "
"defined upper message size. However a program that uses libguestfs must "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1118
+#: ../src/guestfs.pod:1139
msgid "INSPECTION SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1120
+#: ../src/guestfs.pod:1141
msgid ""
"Parts of the inspection API (see L</INSPECTION>) return untrusted strings "
"directly from the guest, and these could contain any 8 bit data. Callers "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1126
+#: ../src/guestfs.pod:1147
msgid ""
"Guest configuration may be altered in unusual ways by the administrator of "
"the virtual machine, and may not reflect reality (particularly for untrusted "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1134
+#: ../src/guestfs.pod:1155
msgid ""
"The inspection API parses guest configuration using two external libraries: "
"Augeas (Linux configuration) and hivex (Windows Registry). Both are "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1140
+#: ../src/guestfs.pod:1161
msgid "RUNNING UNTRUSTED GUEST COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1142
+#: ../src/guestfs.pod:1163
msgid ""
"Be very cautious about running commands from the guest. By running a "
"command in the guest, you are giving CPU time to a binary that you do not "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1148
+#: ../src/guestfs.pod:1169
msgid "CVE-2010-3851"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1150
+#: ../src/guestfs.pod:1171
msgid "https://bugzilla.redhat.com/642934"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1152
+#: ../src/guestfs.pod:1173
msgid ""
"This security bug concerns the automatic disk format detection that qemu "
"does on disk images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1155
+#: ../src/guestfs.pod:1176
msgid ""
"A raw disk image is just the raw bytes, there is no header. Other disk "
"images like qcow2 contain a special header. Qemu deals with this by looking "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1160
+#: ../src/guestfs.pod:1181
msgid ""
"This allows a guest which has been given a raw disk image to write some "
"other header. At next boot (or when the disk image is accessed by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1165
+#: ../src/guestfs.pod:1186
msgid ""
"This in itself would not be a problem, but qcow2 offers many features, one "
"of which is to allow a disk image to refer to another image (called the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1173
+#: ../src/guestfs.pod:1194
msgid ""
"In libguestfs this is rather hard to exploit except under two circumstances:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1180
+#: ../src/guestfs.pod:1201
msgid "You have enabled the network or have opened the disk in write mode."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1184
+#: ../src/guestfs.pod:1205
msgid ""
"You are also running untrusted code from the guest (see L</RUNNING "
"COMMANDS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1189
+#: ../src/guestfs.pod:1210
msgid ""
"The way to avoid this is to specify the expected disk format when adding "
"disks (the optional C<format> option to L</guestfs_add_drive_opts>). You "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1194
+#: ../src/guestfs.pod:1215
msgid ""
"For disks added from libvirt using calls like L</guestfs_add_domain>, the "
"format is fetched from libvirt and passed through."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1197
+#: ../src/guestfs.pod:1218
msgid ""
"For libguestfs tools, use the I<--format> command line parameter as "
"appropriate."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1200
+#: ../src/guestfs.pod:1221
msgid "CONNECTION MANAGEMENT"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1202
+#: ../src/guestfs.pod:1223
msgid "guestfs_h *"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1204
+#: ../src/guestfs.pod:1225
msgid ""
"C<guestfs_h> is the opaque type representing a connection handle. Create a "
"handle by calling L</guestfs_create>. Call L</guestfs_close> to free the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1208
+#: ../src/guestfs.pod:1229
msgid ""
"For information on using multiple handles and threads, see the section L</"
"MULTIPLE HANDLES AND MULTIPLE THREADS> below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1211
+#: ../src/guestfs.pod:1232
msgid "guestfs_create"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1213
+#: ../src/guestfs.pod:1234
#, no-wrap
msgid ""
" guestfs_h *guestfs_create (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1215
+#: ../src/guestfs.pod:1236
msgid "Create a connection handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1217
+#: ../src/guestfs.pod:1238
msgid ""
"You have to call L</guestfs_add_drive_opts> (or one of the equivalent calls) "
"on the handle at least once."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1220
+#: ../src/guestfs.pod:1241
msgid ""
"This function returns a non-NULL pointer to a handle on success or NULL on "
"error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1223
+#: ../src/guestfs.pod:1244
msgid "After configuring the handle, you have to call L</guestfs_launch>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1225
+#: ../src/guestfs.pod:1246
msgid ""
"You may also want to configure error handling for the handle. See L</ERROR "
"HANDLING> section below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1228
+#: ../src/guestfs.pod:1249
msgid "guestfs_close"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1230
+#: ../src/guestfs.pod:1251
#, no-wrap
msgid ""
" void guestfs_close (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1232
+#: ../src/guestfs.pod:1253
msgid "This closes the connection handle and frees up all resources used."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1234
+#: ../src/guestfs.pod:1255
msgid "ERROR HANDLING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1236
+#: ../src/guestfs.pod:1257
msgid ""
"API functions can return errors. For example, almost all functions that "
"return C<int> will return C<-1> to indicate an error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1239
+#: ../src/guestfs.pod:1260
msgid ""
"Additional information is available for errors: an error message string and "
"optionally an error number (errno) if the thing that failed was a system "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1243
+#: ../src/guestfs.pod:1264
msgid ""
"You can get at the additional information about the last error on the handle "
"by calling L</guestfs_last_error>, L</guestfs_last_errno>, and/or by setting "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1248
+#: ../src/guestfs.pod:1269
msgid ""
"When the handle is created, a default error handler is installed which "
"prints the error message string to C<stderr>. For small short-running "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1252
+#: ../src/guestfs.pod:1273
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1255
+#: ../src/guestfs.pod:1276
msgid ""
"since the default error handler will ensure that an error message has been "
"printed to C<stderr> before the program exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1258
+#: ../src/guestfs.pod:1279
msgid ""
"For other programs the caller will almost certainly want to install an "
"alternate error handler or do error handling in-line like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1261
+#: ../src/guestfs.pod:1282
#, no-wrap
msgid ""
" g = guestfs_create ();\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1263
+#: ../src/guestfs.pod:1284
#, no-wrap
msgid ""
" /* This disables the default behaviour of printing errors\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1267
+#: ../src/guestfs.pod:1288
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1) {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1275
+#: ../src/guestfs.pod:1296
msgid ""
"Out of memory errors are handled differently. The default action is to call "
"L<abort(3)>. If this is undesirable, then you can set a handler using L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1279
+#: ../src/guestfs.pod:1300
msgid ""
"L</guestfs_create> returns C<NULL> if the handle cannot be created, and "
"because there is no handle if this happens there is no way to get additional "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1285
+#: ../src/guestfs.pod:1306
msgid "guestfs_last_error"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1287
+#: ../src/guestfs.pod:1308
#, no-wrap
msgid ""
" const char *guestfs_last_error (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1289
+#: ../src/guestfs.pod:1310
msgid ""
"This returns the last error message that happened on C<g>. If there has not "
"been an error since the handle was created, then this returns C<NULL>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1293
+#: ../src/guestfs.pod:1314
msgid ""
"The lifetime of the returned string is until the next error occurs, or L</"
"guestfs_close> is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1296
+#: ../src/guestfs.pod:1317
msgid "guestfs_last_errno"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1298
+#: ../src/guestfs.pod:1319
#, no-wrap
msgid ""
" int guestfs_last_errno (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1300
+#: ../src/guestfs.pod:1321
msgid "This returns the last error number (errno) that happened on C<g>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1302
+#: ../src/guestfs.pod:1323
msgid "If successful, an errno integer not equal to zero is returned."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1304
+#: ../src/guestfs.pod:1325
msgid ""
"If no error, this returns 0. This call can return 0 in three situations:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1311
+#: ../src/guestfs.pod:1332
msgid "There has not been any error on the handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1315
+#: ../src/guestfs.pod:1336
msgid ""
"There has been an error but the errno was meaningless. This corresponds to "
"the case where the error did not come from a failed system call, but for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1321
+#: ../src/guestfs.pod:1342
msgid ""
"There was an error from a failed system call, but for some reason the errno "
"was not captured and returned. This usually indicates a bug in libguestfs."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1327
+#: ../src/guestfs.pod:1348
msgid ""
"Libguestfs tries to convert the errno from inside the applicance into a "
"corresponding errno for the caller (not entirely trivial: the appliance "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1335
+#: ../src/guestfs.pod:1356
msgid "guestfs_set_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1337
+#: ../src/guestfs.pod:1358
#, no-wrap
msgid ""
" typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1344
+#: ../src/guestfs.pod:1365
msgid ""
"The callback C<cb> will be called if there is an error. The parameters "
"passed to the callback are an opaque data pointer and the error message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1348
+#: ../src/guestfs.pod:1369
msgid ""
"C<errno> is not passed to the callback. To get that the callback must call "
"L</guestfs_last_errno>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1351
+#: ../src/guestfs.pod:1372
msgid ""
"Note that the message string C<msg> is freed as soon as the callback "
"function returns, so if you want to stash it somewhere you must make your "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1355
+#: ../src/guestfs.pod:1376
msgid "The default handler prints messages on C<stderr>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1357
+#: ../src/guestfs.pod:1378
msgid "If you set C<cb> to C<NULL> then I<no> handler is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1359
+#: ../src/guestfs.pod:1380
msgid "guestfs_get_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1361
+#: ../src/guestfs.pod:1382
#, no-wrap
msgid ""
" guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1364
+#: ../src/guestfs.pod:1385
msgid "Returns the current error handler callback."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1366
+#: ../src/guestfs.pod:1387
msgid "guestfs_set_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1368
+#: ../src/guestfs.pod:1389
#, no-wrap
msgid ""
" typedef void (*guestfs_abort_cb) (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1372
+#: ../src/guestfs.pod:1393
msgid ""
"The callback C<cb> will be called if there is an out of memory situation. "
"I<Note this callback must not return>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1375
+#: ../src/guestfs.pod:1396
msgid "The default is to call L<abort(3)>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1377
+#: ../src/guestfs.pod:1398
msgid ""
"You cannot set C<cb> to C<NULL>. You can't ignore out of memory situations."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1380
+#: ../src/guestfs.pod:1401
msgid "guestfs_get_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1382
+#: ../src/guestfs.pod:1403
#, no-wrap
msgid ""
" guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1384
+#: ../src/guestfs.pod:1405
msgid "This returns the current out of memory handler."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1386
+#: ../src/guestfs.pod:1407
msgid "API CALLS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1388 ../fish/guestfish.pod:958
+#: ../src/guestfs.pod:1409 ../fish/guestfish.pod:958
msgid "@ACTIONS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1390
+#: ../src/guestfs.pod:1411
msgid "STRUCTURES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1392
+#: ../src/guestfs.pod:1413
msgid "@STRUCTS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1394
+#: ../src/guestfs.pod:1415
msgid "AVAILABILITY"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1396
+#: ../src/guestfs.pod:1417
msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1398
+#: ../src/guestfs.pod:1419
msgid ""
"Using L</guestfs_available> you can test availability of the following "
"groups of functions. This test queries the appliance to see if the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1403
+#: ../src/guestfs.pod:1424
msgid "@AVAILABILITY@"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1405
+#: ../src/guestfs.pod:1426
msgid "GUESTFISH supported COMMAND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1407
+#: ../src/guestfs.pod:1428
msgid ""
"In L<guestfish(3)> there is a handy interactive command C<supported> which "
"prints out the available groups and whether they are supported by this build "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1412
+#: ../src/guestfs.pod:1433
msgid "SINGLE CALLS AT COMPILE TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1414
+#: ../src/guestfs.pod:1435
msgid ""
"Since version 1.5.8, C<E<lt>guestfs.hE<gt>> defines symbols for each C API "
"function, such as:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1417
+#: ../src/guestfs.pod:1438
#, no-wrap
msgid ""
" #define LIBGUESTFS_HAVE_DD 1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1419
+#: ../src/guestfs.pod:1440
msgid "if L</guestfs_dd> is available."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1421
+#: ../src/guestfs.pod:1442
msgid ""
"Before version 1.5.8, if you needed to test whether a single libguestfs "
"function is available at compile time, we recommended using build tools such "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1426
+#: ../src/guestfs.pod:1447
#, no-wrap
msgid ""
" AC_CHECK_LIB([guestfs],[guestfs_create])\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1429
+#: ../src/guestfs.pod:1450
msgid ""
"which would result in C<HAVE_GUESTFS_DD> being either defined or not defined "
"in your program."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1432
+#: ../src/guestfs.pod:1453
msgid "SINGLE CALLS AT RUN TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1434
+#: ../src/guestfs.pod:1455
msgid ""
"Testing at compile time doesn't guarantee that a function really exists in "
"the library. The reason is that you might be dynamically linked against a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1441
+#: ../src/guestfs.pod:1462
msgid ""
"You can use L<dlopen(3)> to test if a function is available at run time, as "
"in this example program (note that you still need the compile time check as "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1445
+#: ../src/guestfs.pod:1466
#, no-wrap
msgid ""
" #include <stdio.h>\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1451
+#: ../src/guestfs.pod:1472
#, no-wrap
msgid ""
" main ()\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1457
+#: ../src/guestfs.pod:1478
#, no-wrap
msgid ""
" /* Test if the function guestfs_dd is really available. */\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1466
+#: ../src/guestfs.pod:1487
#, no-wrap
msgid ""
" if (!has_function)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1479
+#: ../src/guestfs.pod:1500
msgid ""
"You may think the above is an awful lot of hassle, and it is. There are "
"other ways outside of the C linking system to ensure that this kind of "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1484
+#: ../src/guestfs.pod:1505
#, no-wrap
msgid ""
" Requires: libguestfs >= 1.0.80\n"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1486
+#: ../src/guestfs.pod:1507
msgid "CALLS WITH OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1488
+#: ../src/guestfs.pod:1509
msgid ""
"A recent feature of the API is the introduction of calls which take optional "
"arguments. In C these are declared 3 ways. The main way is as a call which "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1493
+#: ../src/guestfs.pod:1514
#, no-wrap
msgid ""
" int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1495
+#: ../src/guestfs.pod:1516
msgid ""
"Call this with a list of optional arguments, terminated by C<-1>. So to "
"call with no optional arguments specified:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1498
+#: ../src/guestfs.pod:1519
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename, -1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1500
+#: ../src/guestfs.pod:1521
msgid "With a single optional argument:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1502
+#: ../src/guestfs.pod:1523
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1506
+#: ../src/guestfs.pod:1527
msgid "With two:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1508
+#: ../src/guestfs.pod:1529
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1513
+#: ../src/guestfs.pod:1534
msgid ""
"and so forth. Don't forget the terminating C<-1> otherwise Bad Things will "
"happen!"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1516
+#: ../src/guestfs.pod:1537
msgid "USING va_list FOR OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1518
+#: ../src/guestfs.pod:1539
msgid ""
"The second variant has the same name with the suffix C<_va>, which works the "
"same way but takes a C<va_list>. See the C manual for details. For the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1522
+#: ../src/guestfs.pod:1543
#, no-wrap
msgid ""
" int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,\n"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1525
+#: ../src/guestfs.pod:1546
msgid "CONSTRUCTING OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1527
+#: ../src/guestfs.pod:1548
msgid ""
"The third variant is useful where you need to construct these calls. You "
"pass in a structure where you fill in the optional fields. The structure "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1533
+#: ../src/guestfs.pod:1554
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1542
+#: ../src/guestfs.pod:1563
msgid "You could call it like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1544
+#: ../src/guestfs.pod:1565
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv optargs = {\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1551
+#: ../src/guestfs.pod:1572
#, no-wrap
msgid ""
" guestfs_add_drive_opts_argv (g, filename, &optargs);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1553 ../src/guestfs-actions.pod:11
+#: ../src/guestfs.pod:1574 ../src/guestfs-actions.pod:11
#: ../src/guestfs-actions.pod:1844 ../fish/guestfish-actions.pod:9
#: ../fish/guestfish-actions.pod:1255 ../tools/virt-win-reg.pl:532
msgid "Notes:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1559
+#: ../src/guestfs.pod:1580
msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1564
+#: ../src/guestfs.pod:1585
msgid "You do not need to fill in all fields of the structure."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1568
+#: ../src/guestfs.pod:1589
msgid ""
"There must be a one-to-one correspondence between fields of the structure "
"that are filled in, and bits set in the bitmask."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1573
+#: ../src/guestfs.pod:1594
msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1575
+#: ../src/guestfs.pod:1596
msgid ""
"In other languages, optional arguments are expressed in the way that is "
"natural for that language. We refer you to the language-specific "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1579
+#: ../src/guestfs.pod:1600
msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1581
+#: ../src/guestfs.pod:1602
msgid "SETTING CALLBACKS TO HANDLE EVENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1583
+#: ../src/guestfs.pod:1604
msgid ""
"The child process generates events in some situations. Current events "
"include: receiving a log message, the child process exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1586
+#: ../src/guestfs.pod:1607
msgid ""
"Use the C<guestfs_set_*_callback> functions to set a callback for different "
"types of events."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1589
+#: ../src/guestfs.pod:1610
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1594
+#: ../src/guestfs.pod:1615
msgid "guestfs_set_log_message_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1596
+#: ../src/guestfs.pod:1617
#, no-wrap
msgid ""
" typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1602
+#: ../src/guestfs.pod:1623
msgid ""
"The callback function C<cb> will be called whenever qemu or the guest writes "
"anything to the console."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1605
+#: ../src/guestfs.pod:1626
msgid "Use this function to capture kernel messages and similar."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1607
+#: ../src/guestfs.pod:1628
msgid ""
"Normally there is no log message handler, and log messages are just "
"discarded."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1610
+#: ../src/guestfs.pod:1631
msgid "guestfs_set_subprocess_quit_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1612
+#: ../src/guestfs.pod:1633
#, no-wrap
msgid ""
" typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1617
+#: ../src/guestfs.pod:1638
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1622
+#: ../src/guestfs.pod:1643
msgid "guestfs_set_launch_done_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1624
+#: ../src/guestfs.pod:1645
#, no-wrap
msgid ""
" typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1629
+#: ../src/guestfs.pod:1650
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1633
+#: ../src/guestfs.pod:1654
msgid "guestfs_set_close_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1635
+#: ../src/guestfs.pod:1656
#, no-wrap
msgid ""
" typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1640
+#: ../src/guestfs.pod:1661
msgid ""
"The callback function C<cb> will be called while the handle is being closed "
"(synchronously from L</guestfs_close>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1643
+#: ../src/guestfs.pod:1664
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1651
+#: ../src/guestfs.pod:1672
msgid "guestfs_set_progress_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1653
+#: ../src/guestfs.pod:1674
#, no-wrap
msgid ""
" typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1660
+#: ../src/guestfs.pod:1681
msgid ""
"Some long-running operations can generate progress messages. If this "
"callback is registered, then it will be called each time a progress message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1666
+#: ../src/guestfs.pod:1687
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1672
+#: ../src/guestfs.pod:1693
msgid "The only defined and stable parts of the API are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1678
+#: ../src/guestfs.pod:1699
msgid ""
"The callback can display to the user some type of progress bar or indicator "
"which shows the ratio of C<position>:C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1683
+#: ../src/guestfs.pod:1704
msgid "0 E<lt>= C<position> E<lt>= C<total>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1687
+#: ../src/guestfs.pod:1708
msgid ""
"If any progress notification is sent during a call, then a final progress "
"notification is always sent when C<position> = C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1690
+#: ../src/guestfs.pod:1711
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1696
+#: ../src/guestfs.pod:1717
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1701
+#: ../src/guestfs.pod:1722
msgid "PRIVATE DATA AREA"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1703
+#: ../src/guestfs.pod:1724
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1707
+#: ../src/guestfs.pod:1728
msgid "To attach a named piece of data, use the following call:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1709
+#: ../src/guestfs.pod:1730
#, no-wrap
msgid ""
" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1711
+#: ../src/guestfs.pod:1732
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1715
+#: ../src/guestfs.pod:1736
msgid ""
"You can use any C<key> you want, but names beginning with an underscore "
"character are reserved for internal libguestfs purposes (for implementing "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1720
+#: ../src/guestfs.pod:1741
msgid "To retrieve the pointer, use:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1722
+#: ../src/guestfs.pod:1743
#, no-wrap
msgid ""
" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1724
+#: ../src/guestfs.pod:1745
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1728
+#: ../src/guestfs.pod:1749
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1736
+#: ../src/guestfs.pod:1757
msgid ""
"The private data area is implemented using a hash table, and should be "
"reasonably efficient for moderate numbers of keys."
msgstr ""
# type: =end
-#: ../src/guestfs.pod:1739 ../src/guestfs.pod:1744
+#: ../src/guestfs.pod:1760 ../src/guestfs.pod:1765
msgid "html"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1741
+#: ../src/guestfs.pod:1762
msgid ""
"<!-- old anchor for the next section --> <a name="
"\"state_machine_and_low_level_event_api\"/>"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1746
+#: ../src/guestfs.pod:1767
msgid "ARCHITECTURE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1748
+#: ../src/guestfs.pod:1769
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 "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1752
+#: ../src/guestfs.pod:1773
#, no-wrap
msgid ""
" ___________________\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1772
+#: ../src/guestfs.pod:1793
msgid ""
"The library, linked to the main program, creates the child process and hence "
"the appliance in the L</guestfs_launch> function."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1775
+#: ../src/guestfs.pod:1796
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1784
+#: ../src/guestfs.pod:1805
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1791
+#: ../src/guestfs.pod:1812
msgid "STATE MACHINE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1793
+#: ../src/guestfs.pod:1814
msgid "libguestfs uses a state machine to model the child process:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1795
+#: ../src/guestfs.pod:1816
#, no-wrap
msgid ""
" |\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1817
+#: ../src/guestfs.pod:1838
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), "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1822
+#: ../src/guestfs.pod:1843
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1826
+#: ../src/guestfs.pod:1847
msgid ""
"Configuration commands for qemu such as L</guestfs_add_drive> can only be "
"issued when in the CONFIG state."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1829
+#: ../src/guestfs.pod:1850
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1835
+#: ../src/guestfs.pod:1856
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. "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1841
+#: ../src/guestfs.pod:1862
msgid ""
"Finally, the child process sends asynchronous messages back to the main "
"program, such as kernel log messages. You can register a callback to "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1845
+#: ../src/guestfs.pod:1866
msgid "INTERNALS"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1847
+#: ../src/guestfs.pod:1868
msgid "COMMUNICATION PROTOCOL"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1849
+#: ../src/guestfs.pod:1870
msgid ""
"Don't rely on using this protocol directly. This section documents how it "
"currently works, but it may change at any time."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1852
+#: ../src/guestfs.pod:1873
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1856
+#: ../src/guestfs.pod:1877
msgid ""
"The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
"this file is automatically generated)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1859
+#: ../src/guestfs.pod:1880
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 "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1866
+#: ../src/guestfs.pod:1887
msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1868
+#: ../src/guestfs.pod:1889
msgid "For ordinary functions, the request message is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1870
+#: ../src/guestfs.pod:1891
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1875
+#: ../src/guestfs.pod:1896
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1881
+#: ../src/guestfs.pod:1902
msgid ""
"Note also that many functions don't take any arguments, in which case the "
"C<guestfs_I<foo>_args> is completely omitted."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1884
+#: ../src/guestfs.pod:1905
msgid ""
"The header contains the procedure number (C<guestfs_proc>) which is how the "
"receiver knows what type of args structure to expect, or none at all."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1888
+#: ../src/guestfs.pod:1909
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1896
+#: ../src/guestfs.pod:1917
msgid "The reply message for ordinary functions is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1898
+#: ../src/guestfs.pod:1919
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1903
+#: ../src/guestfs.pod:1924
msgid ""
"As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
"functions that return no formal return values."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1906
+#: ../src/guestfs.pod:1927
msgid ""
"As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1909
+#: ../src/guestfs.pod:1930
msgid ""
"In the case of an error, a flag is set in the header, and the reply message "
"is slightly changed:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1912
+#: ../src/guestfs.pod:1933
#, no-wrap
msgid ""
" total length (header + error,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1917
+#: ../src/guestfs.pod:1938
msgid ""
"The C<guestfs_message_error> structure contains the error message as a "
"string."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1920
+#: ../src/guestfs.pod:1941
msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1922
+#: ../src/guestfs.pod:1943
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 "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1926
+#: ../src/guestfs.pod:1947
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1934
+#: ../src/guestfs.pod:1955
msgid "The \"sequence of chunks\" is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1936
+#: ../src/guestfs.pod:1957
#, no-wrap
msgid ""
" length of chunk (not including length word itself)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1944
+#: ../src/guestfs.pod:1965
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1948
+#: ../src/guestfs.pod:1969
msgid ""
"At time of writing there are no functions that have more than one FileIn "
"parameter. However this is (theoretically) supported, by sending the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1953
+#: ../src/guestfs.pod:1974
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1959
+#: ../src/guestfs.pod:1980
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1968
+#: ../src/guestfs.pod:1989
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 "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1974
+#: ../src/guestfs.pod:1995
msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1976
+#: ../src/guestfs.pod:1997
msgid ""
"The protocol for FileOut parameters is exactly the same as for FileIn "
"parameters, but with the roles of daemon and library reversed."
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1979
+#: ../src/guestfs.pod:2000
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1987
+#: ../src/guestfs.pod:2008
msgid "INITIAL MESSAGE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1989
+#: ../src/guestfs.pod:2010
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</"
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1993
+#: ../src/guestfs.pod:2014
msgid "PROGRESS NOTIFICATION MESSAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1995
+#: ../src/guestfs.pod:2016
msgid ""
"The daemon may send progress notification messages at any time. These are "
"distinguished by the normal length word being replaced by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1999
+#: ../src/guestfs.pod:2020
msgid ""
"The library turns them into progress callbacks (see "
"C<guestfs_set_progress_callback>) if there is a callback registered, or "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2003
+#: ../src/guestfs.pod:2024
msgid ""
"The daemon self-limits the frequency of progress messages it sends (see "
"C<daemon/proto.c:notify_progress>). Not all calls generate progress "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2007
+#: ../src/guestfs.pod:2028
msgid "LIBGUESTFS VERSION NUMBERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2009
+#: ../src/guestfs.pod:2030
msgid ""
"Since April 2010, libguestfs has started to make separate development and "
"stable releases, along with corresponding branches in our git repository. "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:2014
+#: ../src/guestfs.pod:2035
#, no-wrap
msgid ""
" even numbers for stable: 1.2.x, 1.4.x, ...\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2025
+#: ../src/guestfs.pod:2046
msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2027
+#: ../src/guestfs.pod:2048
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2033
+#: ../src/guestfs.pod:2054
msgid "Our criteria for backporting changes are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2039
+#: ../src/guestfs.pod:2060
msgid ""
"Documentation changes which don't affect any code are backported unless the "
"documentation refers to a future feature which is not in stable."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2045
+#: ../src/guestfs.pod:2066
msgid ""
"Bug fixes which are not controversial, fix obvious problems, and have been "
"well tested are backported."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2050
+#: ../src/guestfs.pod:2071
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2056
+#: ../src/guestfs.pod:2077
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2062
+#: ../src/guestfs.pod:2083
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2070 ../fish/guestfish.pod:965
+#: ../src/guestfs.pod:2091 ../fish/guestfish.pod:965
#: ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
msgid "ENVIRONMENT VARIABLES"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2074 ../fish/guestfish.pod:991
+#: ../src/guestfs.pod:2095 ../fish/guestfish.pod:991
msgid "LIBGUESTFS_APPEND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2076 ../fish/guestfish.pod:993
+#: ../src/guestfs.pod:2097 ../fish/guestfish.pod:993
msgid "Pass additional options to the guest kernel."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2078 ../fish/guestfish.pod:995
+#: ../src/guestfs.pod:2099 ../fish/guestfish.pod:995
msgid "LIBGUESTFS_DEBUG"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2080
+#: ../src/guestfs.pod:2101
msgid ""
"Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages. This has the same "
"effect as calling C<guestfs_set_verbose (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2083 ../fish/guestfish.pod:1000
+#: ../src/guestfs.pod:2104 ../fish/guestfish.pod:1000
msgid "LIBGUESTFS_MEMSIZE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2085 ../fish/guestfish.pod:1002
+#: ../src/guestfs.pod:2106 ../fish/guestfish.pod:1002
msgid ""
"Set the memory allocated to the qemu process, in megabytes. For example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:2088 ../fish/guestfish.pod:1005
+#: ../src/guestfs.pod:2109 ../fish/guestfish.pod:1005
#, no-wrap
msgid ""
" LIBGUESTFS_MEMSIZE=700\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2090 ../fish/guestfish.pod:1007
+#: ../src/guestfs.pod:2111 ../fish/guestfish.pod:1007
msgid "LIBGUESTFS_PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2092
+#: ../src/guestfs.pod:2113
msgid ""
"Set the path that libguestfs uses to search for kernel and initrd.img. See "
"the discussion of paths in section PATH above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2095 ../fish/guestfish.pod:1012
+#: ../src/guestfs.pod:2116 ../fish/guestfish.pod:1012
msgid "LIBGUESTFS_QEMU"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2097 ../fish/guestfish.pod:1014
+#: ../src/guestfs.pod:2118 ../fish/guestfish.pod:1014
msgid ""
"Set the default qemu binary that libguestfs uses. If not set, then the qemu "
"which was found at compile time by the configure script is used."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2101
+#: ../src/guestfs.pod:2122
msgid "See also L</QEMU WRAPPERS> above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2103 ../fish/guestfish.pod:1018
+#: ../src/guestfs.pod:2124 ../fish/guestfish.pod:1018
msgid "LIBGUESTFS_TRACE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2105
+#: ../src/guestfs.pod:2126
msgid ""
"Set C<LIBGUESTFS_TRACE=1> to enable command traces. This has the same "
"effect as calling C<guestfs_set_trace (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2108 ../fish/guestfish.pod:1027
+#: ../src/guestfs.pod:2129 ../fish/guestfish.pod:1027
msgid "TMPDIR"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2110 ../fish/guestfish.pod:1029
+#: ../src/guestfs.pod:2131 ../fish/guestfish.pod:1029
msgid "Location of temporary directory, defaults to C</tmp>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2112 ../fish/guestfish.pod:1031
+#: ../src/guestfs.pod:2133 ../fish/guestfish.pod:1031
msgid ""
"If libguestfs was compiled to use the supermin appliance then the real "
"appliance is cached in this directory, shared between all handles belonging "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2120 ../fish/guestfish.pod:1089
+#: ../src/guestfs.pod:2141 ../fish/guestfish.pod:1089
#: ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:233
#: ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572
#: ../tools/virt-resize.pl:1483 ../tools/virt-list-filesystems.pl:189
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2122
+#: ../src/guestfs.pod:2143
msgid ""
"L<guestfs-examples(3)>, L<guestfs-ocaml(3)>, L<guestfs-python(3)>, L<guestfs-"
"ruby(3)>, L<guestfish(1)>, L<guestmount(1)>, L<virt-cat(1)>, L<virt-df(1)>, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2145
+#: ../src/guestfs.pod:2166
msgid ""
"Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
"(8)>, L<disktype(1)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2152 ../tools/virt-win-reg.pl:587
+#: ../src/guestfs.pod:2173 ../tools/virt-win-reg.pl:587
#: ../tools/virt-make-fs.pl:548
msgid "BUGS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2154
+#: ../src/guestfs.pod:2175
msgid "To get a list of bugs against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2156
+#: ../src/guestfs.pod:2177
msgid ""
"L<https://bugzilla.redhat.com/buglist.cgi?"
"component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2158
+#: ../src/guestfs.pod:2179
msgid "To report a new bug against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2160
+#: ../src/guestfs.pod:2181
msgid ""
"L<https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2162
+#: ../src/guestfs.pod:2183
msgid "When reporting a bug, please check:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2168
+#: ../src/guestfs.pod:2189
msgid "That the bug hasn't been reported already."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2172
+#: ../src/guestfs.pod:2193
msgid "That you are testing a recent version."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2176
+#: ../src/guestfs.pod:2197
msgid "Describe the bug accurately, and give a way to reproduce it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2180
+#: ../src/guestfs.pod:2201
msgid ""
"Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
"bug report."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2185 ../fish/guestfish.pod:1108
+#: ../src/guestfs.pod:2206 ../fish/guestfish.pod:1108
#: ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:244
msgid "AUTHORS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2187 ../fish/guestfish.pod:1110
+#: ../src/guestfs.pod:2208 ../fish/guestfish.pod:1110
#: ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:246
msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2189 ../fish/guestfish.pod:1112
+#: ../src/guestfs.pod:2210 ../fish/guestfish.pod:1112
#: ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:248
#: ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:602
#: ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2191 ../fish/guestfish.pod:1114
+#: ../src/guestfs.pod:2212 ../fish/guestfish.pod:1114
#: ../fuse/guestmount.pod:250
msgid "Copyright (C) 2009-2010 Red Hat Inc. L<http://libguestfs.org/>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2194
+#: ../src/guestfs.pod:2215
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2199
+#: ../src/guestfs.pod:2220
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2204
+#: ../src/guestfs.pod:2225
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, "
# type: textblock
#: ../src/guestfs-actions.pod:1174 ../src/guestfs-actions.pod:1191
-#: ../fish/guestfish-actions.pod:788 ../fish/guestfish-actions.pod:799
msgid ""
"This command is mostly useful for interactive sessions. It is I<not> "
-"intended that you try to parse the output string. Use C<statvfs> from "
-"programs."
+"intended that you try to parse the output string. Use C<guestfs_statvfs> "
+"from programs."
msgstr ""
# type: textblock
"\n"
msgstr ""
+# type: textblock
+#: ../fish/guestfish-actions.pod:788 ../fish/guestfish-actions.pod:799
+msgid ""
+"This command is mostly useful for interactive sessions. It is I<not> "
+"intended that you try to parse the output string. Use L</statvfs> from "
+"programs."
+msgstr ""
+
# type: =head2
#: ../fish/guestfish-actions.pod:792
msgid "df-h"
# type: textblock
#: ../fuse/guestmount.pod:227
-msgid "Trace libguestfs calls."
+msgid "Trace libguestfs calls and entry into each FUSE function."
msgstr ""
# type: textblock
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libguestfs 1.7.24\n"
+"Project-Id-Version: libguestfs 1.8.0\n"
"Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+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"
# type: =head2
#: ../src/guestfs.pod:337
-msgid "LISTING FILES"
+msgid "UPLOADING AND DOWNLOADING TO PIPES AND FILE DESCRIPTORS"
msgstr ""
# type: textblock
#: ../src/guestfs.pod:339
msgid ""
+"Calls like L</guestfs_upload>, L</guestfs_download>, L</guestfs_tar_in>, "
+"L</guestfs_tar_out> etc appear to only take filenames as arguments, so it "
+"appears you can only upload and download to files. However many Un*x-like "
+"hosts let you use the special device files C</dev/stdin>, C</dev/stdout>, "
+"C</dev/stderr> and C</dev/fd/N> to read and write from stdin, stdout, "
+"stderr, and arbitrary file descriptor N."
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:347
+msgid "For example, L<virt-cat(1)> writes its output to stdout by doing:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:350
+#, no-wrap
+msgid ""
+" guestfs_download (filename, \"/dev/stdout\");\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:352
+msgid "and you can write tar output to a pipe C<fd> by doing:"
+msgstr ""
+
+# type: verbatim
+#: ../src/guestfs.pod:354
+#, no-wrap
+msgid ""
+" char devfd[64];\n"
+" snprintf (devfd, sizeof devfd, \"/dev/fd/%d\", fd);\n"
+" guestfs_tar_out (\"/\", devfd);\n"
+"\n"
+msgstr ""
+
+# type: =head2
+#: ../src/guestfs.pod:358
+msgid "LISTING FILES"
+msgstr ""
+
+# type: textblock
+#: ../src/guestfs.pod:360
+msgid ""
"L</guestfs_ll> is just designed for humans to read (mainly when using the "
"L<guestfish(1)>-equivalent command C<ll>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:342
+#: ../src/guestfs.pod:363
msgid ""
"L</guestfs_ls> is a quick way to get a list of files in a directory from "
"programs, as a flat list of strings."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:345
+#: ../src/guestfs.pod:366
msgid ""
"L</guestfs_readdir> is a programmatic way to get a list of files in a "
"directory, plus additional information about each one. It is more "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:349
+#: ../src/guestfs.pod:370
msgid ""
"L</guestfs_find> and L</guestfs_find0> can be used to recursively list "
"files."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:352
+#: ../src/guestfs.pod:373
msgid "RUNNING COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:354
+#: ../src/guestfs.pod:375
msgid ""
"Although libguestfs is primarily an API for manipulating files inside guest "
"images, we also provide some limited facilities for running commands inside "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:358
+#: ../src/guestfs.pod:379
msgid "There are many limitations to this:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:362 ../src/guestfs.pod:367 ../src/guestfs.pod:372 ../src/guestfs.pod:376 ../src/guestfs.pod:381 ../src/guestfs.pod:385 ../src/guestfs.pod:390 ../src/guestfs.pod:395 ../src/guestfs.pod:985 ../src/guestfs.pod:989 ../src/guestfs.pod:993 ../src/guestfs.pod:998 ../src/guestfs.pod:1006 ../src/guestfs.pod:1025 ../src/guestfs.pod:1033 ../src/guestfs.pod:1055 ../src/guestfs.pod:1059 ../src/guestfs.pod:1063 ../src/guestfs.pod:1067 ../src/guestfs.pod:1071 ../src/guestfs.pod:1075 ../src/guestfs.pod:1557 ../src/guestfs.pod:1562 ../src/guestfs.pod:1566 ../src/guestfs.pod:1676 ../src/guestfs.pod:1681 ../src/guestfs.pod:1685 ../src/guestfs.pod:2037 ../src/guestfs.pod:2043 ../src/guestfs.pod:2048 ../src/guestfs.pod:2054 ../src/guestfs.pod:2166 ../src/guestfs.pod:2170 ../src/guestfs.pod:2174 ../src/guestfs.pod:2178 ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:571 ../src/guestfs-actions.pod:579 ../src/guestfs-actions.pod:586 ../src/guestfs-actions.pod:593 ../src/guestfs-actions.pod:1589 ../src/guestfs-actions.pod:1593 ../src/guestfs-actions.pod:1597 ../src/guestfs-actions.pod:1601 ../src/guestfs-actions.pod:1609 ../src/guestfs-actions.pod:1613 ../src/guestfs-actions.pod:1617 ../src/guestfs-actions.pod:1627 ../src/guestfs-actions.pod:1631 ../src/guestfs-actions.pod:1635 ../src/guestfs-actions.pod:1773 ../src/guestfs-actions.pod:1777 ../src/guestfs-actions.pod:1782 ../src/guestfs-actions.pod:1787 ../src/guestfs-actions.pod:1848 ../src/guestfs-actions.pod:1852 ../src/guestfs-actions.pod:1857 ../fish/guestfish.pod:427 ../fish/guestfish.pod:431 ../fish/guestfish.pod:435 ../fish/guestfish.pod:439 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:375 ../fish/guestfish-actions.pod:383 ../fish/guestfish-actions.pod:390 ../fish/guestfish-actions.pod:397 ../fish/guestfish-actions.pod:1067 ../fish/guestfish-actions.pod:1071 ../fish/guestfish-actions.pod:1075 ../fish/guestfish-actions.pod:1079 ../fish/guestfish-actions.pod:1087 ../fish/guestfish-actions.pod:1091 ../fish/guestfish-actions.pod:1095 ../fish/guestfish-actions.pod:1105 ../fish/guestfish-actions.pod:1109 ../fish/guestfish-actions.pod:1113 ../fish/guestfish-actions.pod:1203 ../fish/guestfish-actions.pod:1207 ../fish/guestfish-actions.pod:1212 ../fish/guestfish-actions.pod:1217 ../fish/guestfish-actions.pod:1259 ../fish/guestfish-actions.pod:1263 ../fish/guestfish-actions.pod:1268 ../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:383 ../src/guestfs.pod:388 ../src/guestfs.pod:393 ../src/guestfs.pod:397 ../src/guestfs.pod:402 ../src/guestfs.pod:406 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:1006 ../src/guestfs.pod:1010 ../src/guestfs.pod:1014 ../src/guestfs.pod:1019 ../src/guestfs.pod:1027 ../src/guestfs.pod:1046 ../src/guestfs.pod:1054 ../src/guestfs.pod:1076 ../src/guestfs.pod:1080 ../src/guestfs.pod:1084 ../src/guestfs.pod:1088 ../src/guestfs.pod:1092 ../src/guestfs.pod:1096 ../src/guestfs.pod:1578 ../src/guestfs.pod:1583 ../src/guestfs.pod:1587 ../src/guestfs.pod:1697 ../src/guestfs.pod:1702 ../src/guestfs.pod:1706 ../src/guestfs.pod:2058 ../src/guestfs.pod:2064 ../src/guestfs.pod:2069 ../src/guestfs.pod:2075 ../src/guestfs.pod:2187 ../src/guestfs.pod:2191 ../src/guestfs.pod:2195 ../src/guestfs.pod:2199 ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:571 ../src/guestfs-actions.pod:579 ../src/guestfs-actions.pod:586 ../src/guestfs-actions.pod:593 ../src/guestfs-actions.pod:1589 ../src/guestfs-actions.pod:1593 ../src/guestfs-actions.pod:1597 ../src/guestfs-actions.pod:1601 ../src/guestfs-actions.pod:1609 ../src/guestfs-actions.pod:1613 ../src/guestfs-actions.pod:1617 ../src/guestfs-actions.pod:1627 ../src/guestfs-actions.pod:1631 ../src/guestfs-actions.pod:1635 ../src/guestfs-actions.pod:1773 ../src/guestfs-actions.pod:1777 ../src/guestfs-actions.pod:1782 ../src/guestfs-actions.pod:1787 ../src/guestfs-actions.pod:1848 ../src/guestfs-actions.pod:1852 ../src/guestfs-actions.pod:1857 ../fish/guestfish.pod:427 ../fish/guestfish.pod:431 ../fish/guestfish.pod:435 ../fish/guestfish.pod:439 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:375 ../fish/guestfish-actions.pod:383 ../fish/guestfish-actions.pod:390 ../fish/guestfish-actions.pod:397 ../fish/guestfish-actions.pod:1067 ../fish/guestfish-actions.pod:1071 ../fish/guestfish-actions.pod:1075 ../fish/guestfish-actions.pod:1079 ../fish/guestfish-actions.pod:1087 ../fish/guestfish-actions.pod:1091 ../fish/guestfish-actions.pod:1095 ../fish/guestfish-actions.pod:1105 ../fish/guestfish-actions.pod:1109 ../fish/guestfish-actions.pod:1113 ../fish/guestfish-actions.pod:1203 ../fish/guestfish-actions.pod:1207 ../fish/guestfish-actions.pod:1212 ../fish/guestfish-actions.pod:1217 ../fish/guestfish-actions.pod:1259 ../fish/guestfish-actions.pod:1263 ../fish/guestfish-actions.pod:1268 ../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 ""
# type: textblock
-#: ../src/guestfs.pod:364
+#: ../src/guestfs.pod:385
msgid ""
"The kernel version that the command runs under will be different from what "
"it expects."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:369
+#: ../src/guestfs.pod:390
msgid ""
"If the command needs to communicate with daemons, then most likely they "
"won't be running."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:374
+#: ../src/guestfs.pod:395
msgid "The command will be running in limited memory."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:378
+#: ../src/guestfs.pod:399
msgid ""
"The network may not be available unless you enable it (see "
"L</guestfs_set_network>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:383
+#: ../src/guestfs.pod:404
msgid "Only supports Linux guests (not Windows, BSD, etc)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:387
+#: ../src/guestfs.pod:408
msgid "Architecture limitations (eg. won't work for a PPC guest on an X86 host)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:392
+#: ../src/guestfs.pod:413
msgid ""
"For SELinux guests, you may need to enable SELinux and load policy first. "
"See L</SELINUX> in this manpage."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:397
+#: ../src/guestfs.pod:418
msgid ""
"I<Security:> It is not safe to run commands from untrusted, possibly "
"malicious guests. These commands may attempt to exploit your program by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:406
+#: ../src/guestfs.pod:427
msgid ""
"A secure alternative is to use libguestfs to install a \"firstboot\" script "
"(a script which runs when the guest next boots normally), and to have this "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:414
+#: ../src/guestfs.pod:435
msgid ""
"The two main API calls to run commands are L</guestfs_command> and "
"L</guestfs_sh> (there are also variations)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:417
+#: ../src/guestfs.pod:438
msgid ""
"The difference is that L</guestfs_sh> runs commands using the shell, so any "
"shell globs, redirections, etc will work."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:420
+#: ../src/guestfs.pod:441
msgid "CONFIGURATION FILES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:422
+#: ../src/guestfs.pod:443
msgid ""
"To read and write configuration files in Linux guest filesystems, we "
"strongly recommend using Augeas. For example, Augeas understands how to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:427
+#: ../src/guestfs.pod:448
msgid ""
"The main Augeas calls are bound through the C<guestfs_aug_*> APIs. We don't "
"document Augeas itself here because there is excellent documentation on the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:431
+#: ../src/guestfs.pod:452
msgid ""
"If you don't want to use Augeas (you fool!) then try calling "
"L</guestfs_read_lines> to get the file as a list of lines which you can "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:435
+#: ../src/guestfs.pod:456
msgid "SELINUX"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:437
+#: ../src/guestfs.pod:458
msgid ""
"We support SELinux guests. To ensure that labeling happens correctly in "
"SELinux guests, you need to enable SELinux and load the guest's policy:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:443 ../src/guestfs.pod:1178 ../src/guestfs.pod:1309
+#: ../src/guestfs.pod:464 ../src/guestfs.pod:1199 ../src/guestfs.pod:1330
msgid "1."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:445
+#: ../src/guestfs.pod:466
msgid "Before launching, do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:447
+#: ../src/guestfs.pod:468
#, no-wrap
msgid ""
" guestfs_set_selinux (g, 1);\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:449 ../src/guestfs.pod:1182 ../src/guestfs.pod:1313
+#: ../src/guestfs.pod:470 ../src/guestfs.pod:1203 ../src/guestfs.pod:1334
msgid "2."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:451
+#: ../src/guestfs.pod:472
msgid ""
"After mounting the guest's filesystem(s), load the policy. This is best "
"done by running the L<load_policy(8)> command in the guest itself:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:455
+#: ../src/guestfs.pod:476
#, no-wrap
msgid ""
" guestfs_sh (g, \"/usr/sbin/load_policy\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:457
+#: ../src/guestfs.pod:478
msgid ""
"(Older versions of C<load_policy> require you to specify the name of the "
"policy file)."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:460 ../src/guestfs.pod:1319
+#: ../src/guestfs.pod:481 ../src/guestfs.pod:1340
msgid "3."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:462
+#: ../src/guestfs.pod:483
msgid ""
"Optionally, set the security context for the API. The correct security "
"context to use can only be known by inspecting the guest. As an example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:466
+#: ../src/guestfs.pod:487
#, no-wrap
msgid ""
" guestfs_setcon (g, \"unconfined_u:unconfined_r:unconfined_t:s0\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:470
+#: ../src/guestfs.pod:491
msgid "This will work for running commands and editing existing files."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:472
+#: ../src/guestfs.pod:493
msgid ""
"When new files are created, you may need to label them explicitly, for "
"example by running the external command C<restorecon pathname>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:476
+#: ../src/guestfs.pod:497
msgid "UMASK"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:478
+#: ../src/guestfs.pod:499
msgid ""
"Certain calls are affected by the current file mode creation mask (the "
"\"umask\"). In particular ones which create files or directories, such as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:484
+#: ../src/guestfs.pod:505
msgid ""
"The default umask is C<022>, so files are created with modes such as C<0644> "
"and directories with C<0755>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:487
+#: ../src/guestfs.pod:508
msgid ""
"There are two ways to avoid being affected by umask. Either set umask to 0 "
"(call C<guestfs_umask (g, 0)> early after launching). Or call "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:491
+#: ../src/guestfs.pod:512
msgid "For more information about umask, see L<umask(2)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:493 ../fish/guestfish.pod:720
+#: ../src/guestfs.pod:514 ../fish/guestfish.pod:720
msgid "ENCRYPTED DISKS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:495
+#: ../src/guestfs.pod:516
msgid ""
"Libguestfs allows you to access Linux guests which have been encrypted using "
"whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:501
+#: ../src/guestfs.pod:522
msgid ""
"Use L</guestfs_vfs_type> to identify LUKS-encrypted block devices (it "
"returns the string C<crypto_LUKS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:504
+#: ../src/guestfs.pod:525
msgid ""
"Then open these devices by calling L</guestfs_luks_open>. Obviously you "
"will require the passphrase!"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:507
+#: ../src/guestfs.pod:528
msgid ""
"Opening a LUKS device creates a new device mapper device called "
"C</dev/mapper/mapname> (where C<mapname> is the string you supply to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:513
+#: ../src/guestfs.pod:534
msgid ""
"LVM volume groups on the device can be made visible by calling "
"L</guestfs_vgscan> followed by L</guestfs_vg_activate_all>. The logical "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:517
+#: ../src/guestfs.pod:538
msgid ""
"Use the reverse process to close a LUKS device. Unmount any logical volumes "
"on it, deactivate the volume groups by caling C<guestfs_vg_activate (g, 0, "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:524
+#: ../src/guestfs.pod:545
msgid "INSPECTION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:526
+#: ../src/guestfs.pod:547
msgid ""
"Libguestfs has APIs for inspecting an unknown disk image to find out if it "
"contains operating systems. (These APIs used to be in a separate Perl-only "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:532
+#: ../src/guestfs.pod:553
msgid ""
"Add all disks belonging to the unknown virtual machine and call "
"L</guestfs_launch> in the usual way."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:535
+#: ../src/guestfs.pod:556
msgid ""
"Then call L</guestfs_inspect_os>. This function uses other libguestfs calls "
"and certain heuristics, and returns a list of operating systems that were "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:544
+#: ../src/guestfs.pod:565
msgid ""
"For each root, you can then call various C<guestfs_inspect_get_*> functions "
"to get additional details about that operating system. For example, call "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:550
+#: ../src/guestfs.pod:571
msgid ""
"Un*x-like and Linux-based operating systems usually consist of several "
"filesystems which are mounted at boot time (for example, a separate boot "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:557
+#: ../src/guestfs.pod:578
#, no-wrap
msgid ""
" /boot => /dev/sda1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:561
+#: ../src/guestfs.pod:582
msgid ""
"The caller can then make calls to L</guestfs_mount_options> to mount the "
"filesystems as suggested."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:564
+#: ../src/guestfs.pod:585
msgid ""
"Be careful to mount filesystems in the right order (eg. C</> before "
"C</usr>). Sorting the keys of the hash by length, shortest first, should "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:568
+#: ../src/guestfs.pod:589
msgid ""
"Inspection currently only works for some common operating systems. "
"Contributors are welcome to send patches for other operating systems that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:572
+#: ../src/guestfs.pod:593
msgid ""
"Encrypted disks must be opened before inspection. See L</ENCRYPTED DISKS> "
"for more details. The L</guestfs_inspect_os> function just ignores any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:576
+#: ../src/guestfs.pod:597
msgid ""
"A note on the implementation: The call L</guestfs_inspect_os> performs "
"inspection and caches the results in the guest handle. Subsequent calls to "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:585
+#: ../src/guestfs.pod:606
msgid "SPECIAL CONSIDERATIONS FOR WINDOWS GUESTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:587
+#: ../src/guestfs.pod:608
msgid ""
"Libguestfs can mount NTFS partitions. It does this using the "
"L<http://www.ntfs-3g.org/> driver."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:590
+#: ../src/guestfs.pod:611
msgid "DRIVE LETTERS AND PATHS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:592
+#: ../src/guestfs.pod:613
msgid ""
"DOS and Windows still use drive letters, and the filesystems are always "
"treated as case insensitive by Windows itself, and therefore you might find "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:598
+#: ../src/guestfs.pod:619
msgid ""
"Drive letter mappings are outside the scope of libguestfs. You have to use "
"libguestfs to read the appropriate Windows Registry and configuration files, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:603
+#: ../src/guestfs.pod:624
msgid ""
"Replacing backslash characters with forward slash characters is also outside "
"the scope of libguestfs, but something that you can easily do."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:606
+#: ../src/guestfs.pod:627
msgid ""
"Where we can help is in resolving the case insensitivity of paths. For "
"this, call L</guestfs_case_sensitive_path>."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:609
+#: ../src/guestfs.pod:630
msgid "ACCESSING THE WINDOWS REGISTRY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:611
+#: ../src/guestfs.pod:632
msgid ""
"Libguestfs also provides some help for decoding Windows Registry \"hive\" "
"files, through the library C<hivex> which is part of the libguestfs project "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:619
+#: ../src/guestfs.pod:640
msgid "SYMLINKS ON NTFS-3G FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:621
+#: ../src/guestfs.pod:642
msgid ""
"Ntfs-3g tries to rewrite \"Junction Points\" and NTFS \"symbolic links\" to "
"provide something which looks like a Linux symlink. The way it tries to do "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:625
+#: ../src/guestfs.pod:646
msgid "L<http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:627
+#: ../src/guestfs.pod:648
msgid ""
"The essential problem is that ntfs-3g simply does not have enough "
"information to do a correct job. NTFS links can contain drive letters and "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:634
+#: ../src/guestfs.pod:655
msgid ""
"Instead if you encounter a symbolic link on an ntfs-3g filesystem, use "
"L</guestfs_lgetxattr> to read the C<system.ntfs_reparse_data> extended "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:639
+#: ../src/guestfs.pod:660
msgid "EXTENDED ATTRIBUTES ON NTFS-3G FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:641
+#: ../src/guestfs.pod:662
msgid ""
"There are other useful extended attributes that can be read from ntfs-3g "
"filesystems (using L</guestfs_getxattr>). See:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:644
+#: ../src/guestfs.pod:665
msgid "L<http://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/>"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:646
+#: ../src/guestfs.pod:667
msgid "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:648
+#: ../src/guestfs.pod:669
msgid ""
"Although we don't want to discourage you from using the C API, we will "
"mention here that the same API is also available in other languages."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:651
+#: ../src/guestfs.pod:672
msgid ""
"The API is broadly identical in all supported languages. This means that "
"the C call C<guestfs_mount(g,path)> is C<$g-E<gt>mount($path)> in Perl, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:657
+#: ../src/guestfs.pod:678
msgid ""
"Error messages are automatically transformed into exceptions if the language "
"supports it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:660
+#: ../src/guestfs.pod:681
msgid ""
"We don't try to \"object orientify\" parts of the API in OO languages, "
"although contributors are welcome to write higher level APIs above what we "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:666
+#: ../src/guestfs.pod:687
msgid "B<C++>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:668
+#: ../src/guestfs.pod:689
msgid ""
"You can use the I<guestfs.h> header file from C++ programs. The C++ API is "
"identical to the C API. C++ classes and exceptions are not used."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:672
+#: ../src/guestfs.pod:693
msgid "B<C#>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:674
+#: ../src/guestfs.pod:695
msgid ""
"The C# bindings are highly experimental. Please read the warnings at the "
"top of C<csharp/Libguestfs.cs>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:677
+#: ../src/guestfs.pod:698
msgid "B<Haskell>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:679
+#: ../src/guestfs.pod:700
msgid ""
"This is the only language binding that is working but incomplete. Only "
"calls which return simple integers have been bound in Haskell, and we are "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:683
+#: ../src/guestfs.pod:704
msgid "B<Java>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:685
+#: ../src/guestfs.pod:706
msgid ""
"Full documentation is contained in the Javadoc which is distributed with "
"libguestfs."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:688
+#: ../src/guestfs.pod:709
msgid "B<OCaml>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:690
+#: ../src/guestfs.pod:711
msgid "For documentation see L<guestfs-ocaml(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:692
+#: ../src/guestfs.pod:713
msgid "B<Perl>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:694
+#: ../src/guestfs.pod:715
msgid "For documentation see L<Sys::Guestfs(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:696
+#: ../src/guestfs.pod:717
msgid "B<PHP>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:698
+#: ../src/guestfs.pod:719
msgid ""
"For documentation see C<README-PHP> supplied with libguestfs sources or in "
"the php-libguestfs package for your distribution."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:701
+#: ../src/guestfs.pod:722
msgid "The PHP binding only works correctly on 64 bit machines."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:703
+#: ../src/guestfs.pod:724
msgid "B<Python>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:705
+#: ../src/guestfs.pod:726
msgid "For documentation see L<guestfs-python(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:707
+#: ../src/guestfs.pod:728
msgid "B<Ruby>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:709
+#: ../src/guestfs.pod:730
msgid "For documentation see L<guestfs-ruby(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:711
+#: ../src/guestfs.pod:732
msgid "B<shell scripts>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:713
+#: ../src/guestfs.pod:734
msgid "For documentation see L<guestfish(1)>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:717
+#: ../src/guestfs.pod:738
msgid "LIBGUESTFS GOTCHAS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:719
+#: ../src/guestfs.pod:740
msgid ""
"L<http://en.wikipedia.org/wiki/Gotcha_(programming)>: \"A feature of a "
"system [...] that works in the way it is documented but is counterintuitive "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:723
+#: ../src/guestfs.pod:744
msgid ""
"Since we developed libguestfs and the associated tools, there are several "
"things we would have designed differently, but are now stuck with for "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:731
+#: ../src/guestfs.pod:752
msgid "Autosync / forgetting to sync."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:733
+#: ../src/guestfs.pod:754
msgid ""
"When modifying a filesystem from C or another language, you B<must> unmount "
"all filesystems and call L</guestfs_sync> explicitly before you close the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:737
+#: ../src/guestfs.pod:758
#, no-wrap
msgid ""
" guestfs_set_autosync (g, 1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:739
+#: ../src/guestfs.pod:760
msgid ""
"to have the unmount/sync done automatically for you when the handle 'g' is "
"closed. (This feature is called \"autosync\", L</guestfs_set_autosync> "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:743
+#: ../src/guestfs.pod:764
msgid ""
"If you forget to do this, then it is entirely possible that your changes "
"won't be written out, or will be partially written, or (very rarely) that "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:747
+#: ../src/guestfs.pod:768
msgid ""
"Note that in L<guestfish(3)> autosync is the default. So quick and dirty "
"guestfish scripts that forget to sync will work just fine, which can make "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:751
+#: ../src/guestfs.pod:772
msgid ""
"Update: Autosync is enabled by default for all API users starting from "
"libguestfs 1.5.24."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:754
+#: ../src/guestfs.pod:775
msgid "Mount option C<-o sync> should not be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:756
+#: ../src/guestfs.pod:777
msgid ""
"If you use L</guestfs_mount>, then C<-o sync,noatime> are added implicitly. "
"However C<-o sync> does not add any reliability benefit, but does have a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:760
+#: ../src/guestfs.pod:781
msgid ""
"The work around is to use L</guestfs_mount_options> and set the mount "
"options that you actually want to use."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:763
+#: ../src/guestfs.pod:784
msgid "Read-only should be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:765
+#: ../src/guestfs.pod:786
msgid ""
"In L<guestfish(3)>, I<--ro> should be the default, and you should have to "
"specify I<--rw> if you want to make changes to the image."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:768
+#: ../src/guestfs.pod:789
msgid "This would reduce the potential to corrupt live VM images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:770
+#: ../src/guestfs.pod:791
msgid ""
"Note that many filesystems change the disk when you just mount and unmount, "
"even if you didn't perform any writes. You need to use "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:774
+#: ../src/guestfs.pod:795
msgid "guestfish command line is hard to use."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:776
+#: ../src/guestfs.pod:797
msgid ""
"C<guestfish disk.img> doesn't do what people expect (open C<disk.img> for "
"examination). It tries to run a guestfish command C<disk.img> which doesn't "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:783
+#: ../src/guestfs.pod:804
msgid "guestfish megabyte modifiers don't work right on all commands"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:785
+#: ../src/guestfs.pod:806
msgid ""
"In recent guestfish you can use C<1M> to mean 1 megabyte (and similarly for "
"other modifiers). What guestfish actually does is to multiply the number "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:792
+#: ../src/guestfs.pod:813
msgid "The most common is L</guestfs_lvcreate>. The guestfish command:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:794
+#: ../src/guestfs.pod:815
#, no-wrap
msgid ""
" lvcreate LV VG 100M\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:796
+#: ../src/guestfs.pod:817
msgid ""
"does not do what you might expect. Instead because L</guestfs_lvcreate> is "
"already expecting megabytes, this tries to create a 100 I<terabyte> (100 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:801
+#: ../src/guestfs.pod:822
msgid ""
"This could be fixed in the generator by specially marking parameters and "
"return values which take bytes or other units."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:804
+#: ../src/guestfs.pod:825
msgid "Ambiguity between devices and paths"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:806
+#: ../src/guestfs.pod:827
msgid ""
"There is a subtle ambiguity in the API between a device name "
"(eg. C</dev/sdb2>) and a similar pathname. A file might just happen to be "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:811
+#: ../src/guestfs.pod:832
msgid ""
"In the current API we usually resolve this ambiguity by having two separate "
"calls, for example L</guestfs_checksum> and L</guestfs_checksum_device>. "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:817
+#: ../src/guestfs.pod:838
msgid ""
"To avoid both the ambiguity and the need to duplicate some calls, we could "
"make paths/devices into structured names. One way to do this would be to "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:823
+#: ../src/guestfs.pod:844
#, no-wrap
msgid ""
" type path = Path of string | Device of int | Partition of int * int\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:825
+#: ../src/guestfs.pod:846
msgid "which would allow you to pass arguments like:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:827
+#: ../src/guestfs.pod:848
#, no-wrap
msgid ""
" Path \"/foo/bar\"\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:832
+#: ../src/guestfs.pod:853
msgid ""
"As you can see there are still problems to resolve even with this "
"representation. Also consider how it might work in guestfish."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:837
+#: ../src/guestfs.pod:858
msgid "PROTOCOL LIMITS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:839
+#: ../src/guestfs.pod:860
msgid ""
"Internally libguestfs uses a message-based protocol to pass API calls and "
"their responses to and from a small \"appliance\" (see L</INTERNALS> for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:847
+#: ../src/guestfs.pod:868
msgid ""
"A simple call such as L</guestfs_cat> returns its result (the file data) in "
"a simple string. Because this string is at some point internally encoded as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:853
+#: ../src/guestfs.pod:874
msgid ""
"In order to transfer large files into and out of the guest filesystem, you "
"need to use particular calls that support this. The sections L</UPLOADING> "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:857
+#: ../src/guestfs.pod:878
msgid ""
"You might also consider mounting the disk image using our FUSE filesystem "
"support (L<guestmount(1)>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:860
+#: ../src/guestfs.pod:881
msgid "KEYS AND PASSPHRASES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:862
+#: ../src/guestfs.pod:883
msgid ""
"Certain libguestfs calls take a parameter that contains sensitive key "
"material, passed in as a C string."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:865
+#: ../src/guestfs.pod:886
msgid ""
"In the future we would hope to change the libguestfs implementation so that "
"keys are L<mlock(2)>-ed into physical RAM, and thus can never end up in "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:870
+#: ../src/guestfs.pod:891
msgid ""
"Therefore you should be aware that any key parameter you pass to libguestfs "
"might end up being written out to the swap partition. If this is a concern, "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:875
+#: ../src/guestfs.pod:896
msgid "MULTIPLE HANDLES AND MULTIPLE THREADS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:877
+#: ../src/guestfs.pod:898
msgid ""
"All high-level libguestfs actions are synchronous. If you want to use "
"libguestfs asynchronously then you must create a thread."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:880
+#: ../src/guestfs.pod:901
msgid ""
"Only use the handle from a single thread. Either use the handle exclusively "
"from one thread, or provide your own mutex so that two threads cannot issue "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:884
+#: ../src/guestfs.pod:905
msgid ""
"See the graphical program guestfs-browser for one possible architecture for "
"multithreaded programs using libvirt and libguestfs."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:887
+#: ../src/guestfs.pod:908
msgid "PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:889
+#: ../src/guestfs.pod:910
msgid ""
"Libguestfs needs a kernel and initrd.img, which it finds by looking along an "
"internal path."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:892
+#: ../src/guestfs.pod:913
msgid ""
"By default it looks for these in the directory C<$libdir/guestfs> "
"(eg. C</usr/local/lib/guestfs> or C</usr/lib64/guestfs>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:895
+#: ../src/guestfs.pod:916
msgid ""
"Use L</guestfs_set_path> or set the environment variable L</LIBGUESTFS_PATH> "
"to change the directories that libguestfs will search in. The value is a "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:902
+#: ../src/guestfs.pod:923
msgid "QEMU WRAPPERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:904
+#: ../src/guestfs.pod:925
msgid ""
"If you want to compile your own qemu, run qemu from a non-standard location, "
"or pass extra arguments to qemu, then you can write a shell-script wrapper "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:908
+#: ../src/guestfs.pod:929
msgid ""
"There is one important rule to remember: you I<must C<exec qemu>> as the "
"last command in the shell script (so that qemu replaces the shell and "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:913
+#: ../src/guestfs.pod:934
msgid ""
"Here is an example of a wrapper, where I have built my own copy of qemu from "
"source:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:916
+#: ../src/guestfs.pod:937
#, no-wrap
msgid ""
" #!/bin/sh -\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:920
+#: ../src/guestfs.pod:941
msgid ""
"Save this script as C</tmp/qemu.wrapper> (or wherever), C<chmod +x>, and "
"then use it by setting the LIBGUESTFS_QEMU environment variable. For "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:924
+#: ../src/guestfs.pod:945
#, no-wrap
msgid ""
" LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:926
+#: ../src/guestfs.pod:947
msgid ""
"Note that libguestfs also calls qemu with the -help and -version options in "
"order to determine features."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:929
+#: ../src/guestfs.pod:950
msgid "ABI GUARANTEE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:931
+#: ../src/guestfs.pod:952
msgid ""
"We guarantee the libguestfs ABI (binary interface), for public, high-level "
"actions as outlined in this section. Although we will deprecate some "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:937
+#: ../src/guestfs.pod:958
msgid "BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:939
+#: ../src/guestfs.pod:960
msgid ""
"In the kernel there is now quite a profusion of schemata for naming block "
"devices (in this context, by I<block device> I mean a physical or virtual "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:951
+#: ../src/guestfs.pod:972
msgid ""
"As discussed above, libguestfs uses a qemu appliance running an embedded "
"Linux kernel to access block devices. We can run a variety of appliances "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:955
+#: ../src/guestfs.pod:976
msgid ""
"This causes a problem for libguestfs because many API calls use device or "
"partition names. Working scripts and the recipe (example) scripts that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:960
+#: ../src/guestfs.pod:981
msgid ""
"Therefore libguestfs defines C</dev/sd*> as the I<standard naming scheme>. "
"Internally C</dev/sd*> names are translated, if necessary, to other names as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:966
+#: ../src/guestfs.pod:987
msgid ""
"Note that this I<only> applies to parameters. The L</guestfs_list_devices>, "
"L</guestfs_list_partitions> and similar calls return the true names of the "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:971
+#: ../src/guestfs.pod:992
msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:973
+#: ../src/guestfs.pod:994
msgid ""
"Usually this translation is transparent. However in some (very rare) cases "
"you may need to know the exact algorithm. Such cases include where you use "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:979
+#: ../src/guestfs.pod:1000
msgid ""
"The algorithm is applied only to I<parameters> which are known to be either "
"device or partition names. Return values from functions such as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:987
+#: ../src/guestfs.pod:1008
msgid "Is the string a parameter which is a device or partition name?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:991
+#: ../src/guestfs.pod:1012
msgid "Does the string begin with C</dev/sd>?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:995
+#: ../src/guestfs.pod:1016
msgid ""
"Does the named device exist? If so, we use that device. However if I<not> "
"then we continue with this algorithm."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1000
+#: ../src/guestfs.pod:1021
msgid "Replace initial C</dev/sd> string with C</dev/hd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1002
+#: ../src/guestfs.pod:1023
msgid "For example, change C</dev/sda2> to C</dev/hda2>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1004
+#: ../src/guestfs.pod:1025
msgid "If that named device exists, use it. If not, continue."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1008
+#: ../src/guestfs.pod:1029
msgid "Replace initial C</dev/sd> string with C</dev/vd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1010
+#: ../src/guestfs.pod:1031
msgid "If that named device exists, use it. If not, return an error."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1014
+#: ../src/guestfs.pod:1035
msgid "PORTABILITY CONCERNS WITH BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1016
+#: ../src/guestfs.pod:1037
msgid ""
"Although the standard naming scheme and automatic translation is useful for "
"simple programs and guestfish scripts, for larger programs it is best not to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1020
+#: ../src/guestfs.pod:1041
msgid ""
"Where possible for maximum future portability programs using libguestfs "
"should use these future-proof techniques:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1027
+#: ../src/guestfs.pod:1048
msgid ""
"Use L</guestfs_list_devices> or L</guestfs_list_partitions> to list actual "
"device names, and then use those names directly."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1030
+#: ../src/guestfs.pod:1051
msgid "Since those device names exist by definition, they will never be translated."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1035
+#: ../src/guestfs.pod:1056
msgid ""
"Use higher level ways to identify filesystems, such as LVM names, UUIDs and "
"filesystem labels."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1040
+#: ../src/guestfs.pod:1061
msgid "SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1042
+#: ../src/guestfs.pod:1063
msgid ""
"This section discusses security implications of using libguestfs, "
"particularly with untrusted or malicious guests or disk images."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1045
+#: ../src/guestfs.pod:1066
msgid "GENERAL SECURITY CONSIDERATIONS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1047
+#: ../src/guestfs.pod:1068
msgid ""
"Be careful with any files or data that you download from a guest (by "
"\"download\" we mean not just the L</guestfs_download> command but any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1057
+#: ../src/guestfs.pod:1078
msgid "the data (file etc) not being present"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1061
+#: ../src/guestfs.pod:1082
msgid "being present but empty"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1065
+#: ../src/guestfs.pod:1086
msgid "being much larger than normal"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1069
+#: ../src/guestfs.pod:1090
msgid "containing arbitrary 8 bit data"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1073
+#: ../src/guestfs.pod:1094
msgid "being in an unexpected character encoding"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1077
+#: ../src/guestfs.pod:1098
msgid "containing homoglyphs."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1081
+#: ../src/guestfs.pod:1102
msgid "SECURITY OF MOUNTING FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1083
+#: ../src/guestfs.pod:1104
msgid ""
"When you mount a filesystem under Linux, mistakes in the kernel filesystem "
"(VFS) module can sometimes be escalated into exploits by deliberately "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1096
+#: ../src/guestfs.pod:1117
msgid ""
"That explains why you should never mount a filesystem from an untrusted "
"guest on your host kernel. How about libguestfs? We run a Linux kernel "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1107
+#: ../src/guestfs.pod:1128
msgid ""
"In any case callers can reduce the attack surface by forcing the filesystem "
"type when mounting (use L</guestfs_mount_vfs>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1110
+#: ../src/guestfs.pod:1131
msgid "PROTOCOL SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1112
+#: ../src/guestfs.pod:1133
msgid ""
"The protocol is designed to be secure, being based on RFC 4506 (XDR) with a "
"defined upper message size. However a program that uses libguestfs must "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1118
+#: ../src/guestfs.pod:1139
msgid "INSPECTION SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1120
+#: ../src/guestfs.pod:1141
msgid ""
"Parts of the inspection API (see L</INSPECTION>) return untrusted strings "
"directly from the guest, and these could contain any 8 bit data. Callers "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1126
+#: ../src/guestfs.pod:1147
msgid ""
"Guest configuration may be altered in unusual ways by the administrator of "
"the virtual machine, and may not reflect reality (particularly for untrusted "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1134
+#: ../src/guestfs.pod:1155
msgid ""
"The inspection API parses guest configuration using two external libraries: "
"Augeas (Linux configuration) and hivex (Windows Registry). Both are "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1140
+#: ../src/guestfs.pod:1161
msgid "RUNNING UNTRUSTED GUEST COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1142
+#: ../src/guestfs.pod:1163
msgid ""
"Be very cautious about running commands from the guest. By running a "
"command in the guest, you are giving CPU time to a binary that you do not "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1148
+#: ../src/guestfs.pod:1169
msgid "CVE-2010-3851"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1150
+#: ../src/guestfs.pod:1171
msgid "https://bugzilla.redhat.com/642934"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1152
+#: ../src/guestfs.pod:1173
msgid ""
"This security bug concerns the automatic disk format detection that qemu "
"does on disk images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1155
+#: ../src/guestfs.pod:1176
msgid ""
"A raw disk image is just the raw bytes, there is no header. Other disk "
"images like qcow2 contain a special header. Qemu deals with this by looking "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1160
+#: ../src/guestfs.pod:1181
msgid ""
"This allows a guest which has been given a raw disk image to write some "
"other header. At next boot (or when the disk image is accessed by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1165
+#: ../src/guestfs.pod:1186
msgid ""
"This in itself would not be a problem, but qcow2 offers many features, one "
"of which is to allow a disk image to refer to another image (called the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1173
+#: ../src/guestfs.pod:1194
msgid "In libguestfs this is rather hard to exploit except under two circumstances:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1180
+#: ../src/guestfs.pod:1201
msgid "You have enabled the network or have opened the disk in write mode."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1184
+#: ../src/guestfs.pod:1205
msgid ""
"You are also running untrusted code from the guest (see L</RUNNING "
"COMMANDS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1189
+#: ../src/guestfs.pod:1210
msgid ""
"The way to avoid this is to specify the expected disk format when adding "
"disks (the optional C<format> option to L</guestfs_add_drive_opts>). You "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1194
+#: ../src/guestfs.pod:1215
msgid ""
"For disks added from libvirt using calls like L</guestfs_add_domain>, the "
"format is fetched from libvirt and passed through."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1197
+#: ../src/guestfs.pod:1218
msgid ""
"For libguestfs tools, use the I<--format> command line parameter as "
"appropriate."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1200
+#: ../src/guestfs.pod:1221
msgid "CONNECTION MANAGEMENT"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1202
+#: ../src/guestfs.pod:1223
msgid "guestfs_h *"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1204
+#: ../src/guestfs.pod:1225
msgid ""
"C<guestfs_h> is the opaque type representing a connection handle. Create a "
"handle by calling L</guestfs_create>. Call L</guestfs_close> to free the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1208
+#: ../src/guestfs.pod:1229
msgid ""
"For information on using multiple handles and threads, see the section "
"L</MULTIPLE HANDLES AND MULTIPLE THREADS> below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1211
+#: ../src/guestfs.pod:1232
msgid "guestfs_create"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1213
+#: ../src/guestfs.pod:1234
#, no-wrap
msgid ""
" guestfs_h *guestfs_create (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1215
+#: ../src/guestfs.pod:1236
msgid "Create a connection handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1217
+#: ../src/guestfs.pod:1238
msgid ""
"You have to call L</guestfs_add_drive_opts> (or one of the equivalent calls) "
"on the handle at least once."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1220
+#: ../src/guestfs.pod:1241
msgid ""
"This function returns a non-NULL pointer to a handle on success or NULL on "
"error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1223
+#: ../src/guestfs.pod:1244
msgid "After configuring the handle, you have to call L</guestfs_launch>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1225
+#: ../src/guestfs.pod:1246
msgid ""
"You may also want to configure error handling for the handle. See L</ERROR "
"HANDLING> section below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1228
+#: ../src/guestfs.pod:1249
msgid "guestfs_close"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1230
+#: ../src/guestfs.pod:1251
#, no-wrap
msgid ""
" void guestfs_close (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1232
+#: ../src/guestfs.pod:1253
msgid "This closes the connection handle and frees up all resources used."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1234
+#: ../src/guestfs.pod:1255
msgid "ERROR HANDLING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1236
+#: ../src/guestfs.pod:1257
msgid ""
"API functions can return errors. For example, almost all functions that "
"return C<int> will return C<-1> to indicate an error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1239
+#: ../src/guestfs.pod:1260
msgid ""
"Additional information is available for errors: an error message string and "
"optionally an error number (errno) if the thing that failed was a system "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1243
+#: ../src/guestfs.pod:1264
msgid ""
"You can get at the additional information about the last error on the handle "
"by calling L</guestfs_last_error>, L</guestfs_last_errno>, and/or by setting "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1248
+#: ../src/guestfs.pod:1269
msgid ""
"When the handle is created, a default error handler is installed which "
"prints the error message string to C<stderr>. For small short-running "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1252
+#: ../src/guestfs.pod:1273
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1255
+#: ../src/guestfs.pod:1276
msgid ""
"since the default error handler will ensure that an error message has been "
"printed to C<stderr> before the program exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1258
+#: ../src/guestfs.pod:1279
msgid ""
"For other programs the caller will almost certainly want to install an "
"alternate error handler or do error handling in-line like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1261
+#: ../src/guestfs.pod:1282
#, no-wrap
msgid ""
" g = guestfs_create ();\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1263
+#: ../src/guestfs.pod:1284
#, no-wrap
msgid ""
" /* This disables the default behaviour of printing errors\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1267
+#: ../src/guestfs.pod:1288
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1) {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1275
+#: ../src/guestfs.pod:1296
msgid ""
"Out of memory errors are handled differently. The default action is to call "
"L<abort(3)>. If this is undesirable, then you can set a handler using "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1279
+#: ../src/guestfs.pod:1300
msgid ""
"L</guestfs_create> returns C<NULL> if the handle cannot be created, and "
"because there is no handle if this happens there is no way to get additional "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1285
+#: ../src/guestfs.pod:1306
msgid "guestfs_last_error"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1287
+#: ../src/guestfs.pod:1308
#, no-wrap
msgid ""
" const char *guestfs_last_error (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1289
+#: ../src/guestfs.pod:1310
msgid ""
"This returns the last error message that happened on C<g>. If there has not "
"been an error since the handle was created, then this returns C<NULL>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1293
+#: ../src/guestfs.pod:1314
msgid ""
"The lifetime of the returned string is until the next error occurs, or "
"L</guestfs_close> is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1296
+#: ../src/guestfs.pod:1317
msgid "guestfs_last_errno"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1298
+#: ../src/guestfs.pod:1319
#, no-wrap
msgid ""
" int guestfs_last_errno (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1300
+#: ../src/guestfs.pod:1321
msgid "This returns the last error number (errno) that happened on C<g>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1302
+#: ../src/guestfs.pod:1323
msgid "If successful, an errno integer not equal to zero is returned."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1304
+#: ../src/guestfs.pod:1325
msgid "If no error, this returns 0. This call can return 0 in three situations:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1311
+#: ../src/guestfs.pod:1332
msgid "There has not been any error on the handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1315
+#: ../src/guestfs.pod:1336
msgid ""
"There has been an error but the errno was meaningless. This corresponds to "
"the case where the error did not come from a failed system call, but for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1321
+#: ../src/guestfs.pod:1342
msgid ""
"There was an error from a failed system call, but for some reason the errno "
"was not captured and returned. This usually indicates a bug in libguestfs."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1327
+#: ../src/guestfs.pod:1348
msgid ""
"Libguestfs tries to convert the errno from inside the applicance into a "
"corresponding errno for the caller (not entirely trivial: the appliance "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1335
+#: ../src/guestfs.pod:1356
msgid "guestfs_set_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1337
+#: ../src/guestfs.pod:1358
#, no-wrap
msgid ""
" typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1344
+#: ../src/guestfs.pod:1365
msgid ""
"The callback C<cb> will be called if there is an error. The parameters "
"passed to the callback are an opaque data pointer and the error message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1348
+#: ../src/guestfs.pod:1369
msgid ""
"C<errno> is not passed to the callback. To get that the callback must call "
"L</guestfs_last_errno>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1351
+#: ../src/guestfs.pod:1372
msgid ""
"Note that the message string C<msg> is freed as soon as the callback "
"function returns, so if you want to stash it somewhere you must make your "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1355
+#: ../src/guestfs.pod:1376
msgid "The default handler prints messages on C<stderr>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1357
+#: ../src/guestfs.pod:1378
msgid "If you set C<cb> to C<NULL> then I<no> handler is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1359
+#: ../src/guestfs.pod:1380
msgid "guestfs_get_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1361
+#: ../src/guestfs.pod:1382
#, no-wrap
msgid ""
" guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1364
+#: ../src/guestfs.pod:1385
msgid "Returns the current error handler callback."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1366
+#: ../src/guestfs.pod:1387
msgid "guestfs_set_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1368
+#: ../src/guestfs.pod:1389
#, no-wrap
msgid ""
" typedef void (*guestfs_abort_cb) (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1372
+#: ../src/guestfs.pod:1393
msgid ""
"The callback C<cb> will be called if there is an out of memory situation. "
"I<Note this callback must not return>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1375
+#: ../src/guestfs.pod:1396
msgid "The default is to call L<abort(3)>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1377
+#: ../src/guestfs.pod:1398
msgid "You cannot set C<cb> to C<NULL>. You can't ignore out of memory situations."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1380
+#: ../src/guestfs.pod:1401
msgid "guestfs_get_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1382
+#: ../src/guestfs.pod:1403
#, no-wrap
msgid ""
" guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1384
+#: ../src/guestfs.pod:1405
msgid "This returns the current out of memory handler."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1386
+#: ../src/guestfs.pod:1407
msgid "API CALLS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1388 ../fish/guestfish.pod:958
+#: ../src/guestfs.pod:1409 ../fish/guestfish.pod:958
msgid "@ACTIONS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1390
+#: ../src/guestfs.pod:1411
msgid "STRUCTURES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1392
+#: ../src/guestfs.pod:1413
msgid "@STRUCTS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1394
+#: ../src/guestfs.pod:1415
msgid "AVAILABILITY"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1396
+#: ../src/guestfs.pod:1417
msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1398
+#: ../src/guestfs.pod:1419
msgid ""
"Using L</guestfs_available> you can test availability of the following "
"groups of functions. This test queries the appliance to see if the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1403
+#: ../src/guestfs.pod:1424
msgid "@AVAILABILITY@"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1405
+#: ../src/guestfs.pod:1426
msgid "GUESTFISH supported COMMAND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1407
+#: ../src/guestfs.pod:1428
msgid ""
"In L<guestfish(3)> there is a handy interactive command C<supported> which "
"prints out the available groups and whether they are supported by this build "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1412
+#: ../src/guestfs.pod:1433
msgid "SINGLE CALLS AT COMPILE TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1414
+#: ../src/guestfs.pod:1435
msgid ""
"Since version 1.5.8, C<E<lt>guestfs.hE<gt>> defines symbols for each C API "
"function, such as:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1417
+#: ../src/guestfs.pod:1438
#, no-wrap
msgid ""
" #define LIBGUESTFS_HAVE_DD 1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1419
+#: ../src/guestfs.pod:1440
msgid "if L</guestfs_dd> is available."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1421
+#: ../src/guestfs.pod:1442
msgid ""
"Before version 1.5.8, if you needed to test whether a single libguestfs "
"function is available at compile time, we recommended using build tools such "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1426
+#: ../src/guestfs.pod:1447
#, no-wrap
msgid ""
" AC_CHECK_LIB([guestfs],[guestfs_create])\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1429
+#: ../src/guestfs.pod:1450
msgid ""
"which would result in C<HAVE_GUESTFS_DD> being either defined or not defined "
"in your program."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1432
+#: ../src/guestfs.pod:1453
msgid "SINGLE CALLS AT RUN TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1434
+#: ../src/guestfs.pod:1455
msgid ""
"Testing at compile time doesn't guarantee that a function really exists in "
"the library. The reason is that you might be dynamically linked against a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1441
+#: ../src/guestfs.pod:1462
msgid ""
"You can use L<dlopen(3)> to test if a function is available at run time, as "
"in this example program (note that you still need the compile time check as "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1445
+#: ../src/guestfs.pod:1466
#, no-wrap
msgid ""
" #include <stdio.h>\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1451
+#: ../src/guestfs.pod:1472
#, no-wrap
msgid ""
" main ()\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1457
+#: ../src/guestfs.pod:1478
#, no-wrap
msgid ""
" /* Test if the function guestfs_dd is really available. */\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1466
+#: ../src/guestfs.pod:1487
#, no-wrap
msgid ""
" if (!has_function)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1479
+#: ../src/guestfs.pod:1500
msgid ""
"You may think the above is an awful lot of hassle, and it is. There are "
"other ways outside of the C linking system to ensure that this kind of "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1484
+#: ../src/guestfs.pod:1505
#, no-wrap
msgid ""
" Requires: libguestfs >= 1.0.80\n"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1486
+#: ../src/guestfs.pod:1507
msgid "CALLS WITH OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1488
+#: ../src/guestfs.pod:1509
msgid ""
"A recent feature of the API is the introduction of calls which take optional "
"arguments. In C these are declared 3 ways. The main way is as a call which "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1493
+#: ../src/guestfs.pod:1514
#, no-wrap
msgid ""
" int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1495
+#: ../src/guestfs.pod:1516
msgid ""
"Call this with a list of optional arguments, terminated by C<-1>. So to "
"call with no optional arguments specified:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1498
+#: ../src/guestfs.pod:1519
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename, -1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1500
+#: ../src/guestfs.pod:1521
msgid "With a single optional argument:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1502
+#: ../src/guestfs.pod:1523
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1506
+#: ../src/guestfs.pod:1527
msgid "With two:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1508
+#: ../src/guestfs.pod:1529
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1513
+#: ../src/guestfs.pod:1534
msgid ""
"and so forth. Don't forget the terminating C<-1> otherwise Bad Things will "
"happen!"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1516
+#: ../src/guestfs.pod:1537
msgid "USING va_list FOR OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1518
+#: ../src/guestfs.pod:1539
msgid ""
"The second variant has the same name with the suffix C<_va>, which works the "
"same way but takes a C<va_list>. See the C manual for details. For the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1522
+#: ../src/guestfs.pod:1543
#, no-wrap
msgid ""
" int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,\n"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1525
+#: ../src/guestfs.pod:1546
msgid "CONSTRUCTING OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1527
+#: ../src/guestfs.pod:1548
msgid ""
"The third variant is useful where you need to construct these calls. You "
"pass in a structure where you fill in the optional fields. The structure "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1533
+#: ../src/guestfs.pod:1554
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1542
+#: ../src/guestfs.pod:1563
msgid "You could call it like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1544
+#: ../src/guestfs.pod:1565
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv optargs = {\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1551
+#: ../src/guestfs.pod:1572
#, no-wrap
msgid ""
" guestfs_add_drive_opts_argv (g, filename, &optargs);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1553 ../src/guestfs-actions.pod:11 ../src/guestfs-actions.pod:1844 ../fish/guestfish-actions.pod:9 ../fish/guestfish-actions.pod:1255 ../tools/virt-win-reg.pl:532
+#: ../src/guestfs.pod:1574 ../src/guestfs-actions.pod:11 ../src/guestfs-actions.pod:1844 ../fish/guestfish-actions.pod:9 ../fish/guestfish-actions.pod:1255 ../tools/virt-win-reg.pl:532
msgid "Notes:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1559
+#: ../src/guestfs.pod:1580
msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1564
+#: ../src/guestfs.pod:1585
msgid "You do not need to fill in all fields of the structure."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1568
+#: ../src/guestfs.pod:1589
msgid ""
"There must be a one-to-one correspondence between fields of the structure "
"that are filled in, and bits set in the bitmask."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1573
+#: ../src/guestfs.pod:1594
msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1575
+#: ../src/guestfs.pod:1596
msgid ""
"In other languages, optional arguments are expressed in the way that is "
"natural for that language. We refer you to the language-specific "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1579
+#: ../src/guestfs.pod:1600
msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1581
+#: ../src/guestfs.pod:1602
msgid "SETTING CALLBACKS TO HANDLE EVENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1583
+#: ../src/guestfs.pod:1604
msgid ""
"The child process generates events in some situations. Current events "
"include: receiving a log message, the child process exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1586
+#: ../src/guestfs.pod:1607
msgid ""
"Use the C<guestfs_set_*_callback> functions to set a callback for different "
"types of events."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1589
+#: ../src/guestfs.pod:1610
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1594
+#: ../src/guestfs.pod:1615
msgid "guestfs_set_log_message_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1596
+#: ../src/guestfs.pod:1617
#, no-wrap
msgid ""
" typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1602
+#: ../src/guestfs.pod:1623
msgid ""
"The callback function C<cb> will be called whenever qemu or the guest writes "
"anything to the console."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1605
+#: ../src/guestfs.pod:1626
msgid "Use this function to capture kernel messages and similar."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1607
+#: ../src/guestfs.pod:1628
msgid ""
"Normally there is no log message handler, and log messages are just "
"discarded."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1610
+#: ../src/guestfs.pod:1631
msgid "guestfs_set_subprocess_quit_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1612
+#: ../src/guestfs.pod:1633
#, no-wrap
msgid ""
" typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1617
+#: ../src/guestfs.pod:1638
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1622
+#: ../src/guestfs.pod:1643
msgid "guestfs_set_launch_done_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1624
+#: ../src/guestfs.pod:1645
#, no-wrap
msgid ""
" typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1629
+#: ../src/guestfs.pod:1650
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1633
+#: ../src/guestfs.pod:1654
msgid "guestfs_set_close_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1635
+#: ../src/guestfs.pod:1656
#, no-wrap
msgid ""
" typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1640
+#: ../src/guestfs.pod:1661
msgid ""
"The callback function C<cb> will be called while the handle is being closed "
"(synchronously from L</guestfs_close>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1643
+#: ../src/guestfs.pod:1664
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 "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1651
+#: ../src/guestfs.pod:1672
msgid "guestfs_set_progress_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1653
+#: ../src/guestfs.pod:1674
#, no-wrap
msgid ""
" typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1660
+#: ../src/guestfs.pod:1681
msgid ""
"Some long-running operations can generate progress messages. If this "
"callback is registered, then it will be called each time a progress message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1666
+#: ../src/guestfs.pod:1687
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1672
+#: ../src/guestfs.pod:1693
msgid "The only defined and stable parts of the API are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1678
+#: ../src/guestfs.pod:1699
msgid ""
"The callback can display to the user some type of progress bar or indicator "
"which shows the ratio of C<position>:C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1683
+#: ../src/guestfs.pod:1704
msgid "0 E<lt>= C<position> E<lt>= C<total>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1687
+#: ../src/guestfs.pod:1708
msgid ""
"If any progress notification is sent during a call, then a final progress "
"notification is always sent when C<position> = C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1690
+#: ../src/guestfs.pod:1711
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1696
+#: ../src/guestfs.pod:1717
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1701
+#: ../src/guestfs.pod:1722
msgid "PRIVATE DATA AREA"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1703
+#: ../src/guestfs.pod:1724
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1707
+#: ../src/guestfs.pod:1728
msgid "To attach a named piece of data, use the following call:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1709
+#: ../src/guestfs.pod:1730
#, no-wrap
msgid ""
" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1711
+#: ../src/guestfs.pod:1732
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1715
+#: ../src/guestfs.pod:1736
msgid ""
"You can use any C<key> you want, but names beginning with an underscore "
"character are reserved for internal libguestfs purposes (for implementing "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1720
+#: ../src/guestfs.pod:1741
msgid "To retrieve the pointer, use:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1722
+#: ../src/guestfs.pod:1743
#, no-wrap
msgid ""
" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1724
+#: ../src/guestfs.pod:1745
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1728
+#: ../src/guestfs.pod:1749
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1736
+#: ../src/guestfs.pod:1757
msgid ""
"The private data area is implemented using a hash table, and should be "
"reasonably efficient for moderate numbers of keys."
msgstr ""
# type: =end
-#: ../src/guestfs.pod:1739 ../src/guestfs.pod:1744
+#: ../src/guestfs.pod:1760 ../src/guestfs.pod:1765
msgid "html"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1741
+#: ../src/guestfs.pod:1762
msgid ""
"<!-- old anchor for the next section --> <a "
"name=\"state_machine_and_low_level_event_api\"/>"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1746
+#: ../src/guestfs.pod:1767
msgid "ARCHITECTURE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1748
+#: ../src/guestfs.pod:1769
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 "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1752
+#: ../src/guestfs.pod:1773
#, no-wrap
msgid ""
" ___________________\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1772
+#: ../src/guestfs.pod:1793
msgid ""
"The library, linked to the main program, creates the child process and hence "
"the appliance in the L</guestfs_launch> function."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1775
+#: ../src/guestfs.pod:1796
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1784
+#: ../src/guestfs.pod:1805
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1791
+#: ../src/guestfs.pod:1812
msgid "STATE MACHINE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1793
+#: ../src/guestfs.pod:1814
msgid "libguestfs uses a state machine to model the child process:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1795
+#: ../src/guestfs.pod:1816
#, no-wrap
msgid ""
" |\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1817
+#: ../src/guestfs.pod:1838
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), "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1822
+#: ../src/guestfs.pod:1843
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1826
+#: ../src/guestfs.pod:1847
msgid ""
"Configuration commands for qemu such as L</guestfs_add_drive> can only be "
"issued when in the CONFIG state."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1829
+#: ../src/guestfs.pod:1850
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1835
+#: ../src/guestfs.pod:1856
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1841
+#: ../src/guestfs.pod:1862
msgid ""
"Finally, the child process sends asynchronous messages back to the main "
"program, such as kernel log messages. You can register a callback to "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1845
+#: ../src/guestfs.pod:1866
msgid "INTERNALS"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1847
+#: ../src/guestfs.pod:1868
msgid "COMMUNICATION PROTOCOL"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1849
+#: ../src/guestfs.pod:1870
msgid ""
"Don't rely on using this protocol directly. This section documents how it "
"currently works, but it may change at any time."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1852
+#: ../src/guestfs.pod:1873
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1856
+#: ../src/guestfs.pod:1877
msgid ""
"The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
"this file is automatically generated)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1859
+#: ../src/guestfs.pod:1880
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 "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1866
+#: ../src/guestfs.pod:1887
msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1868
+#: ../src/guestfs.pod:1889
msgid "For ordinary functions, the request message is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1870
+#: ../src/guestfs.pod:1891
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1875
+#: ../src/guestfs.pod:1896
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1881
+#: ../src/guestfs.pod:1902
msgid ""
"Note also that many functions don't take any arguments, in which case the "
"C<guestfs_I<foo>_args> is completely omitted."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1884
+#: ../src/guestfs.pod:1905
msgid ""
"The header contains the procedure number (C<guestfs_proc>) which is how the "
"receiver knows what type of args structure to expect, or none at all."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1888
+#: ../src/guestfs.pod:1909
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1896
+#: ../src/guestfs.pod:1917
msgid "The reply message for ordinary functions is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1898
+#: ../src/guestfs.pod:1919
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1903
+#: ../src/guestfs.pod:1924
msgid ""
"As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
"functions that return no formal return values."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1906
+#: ../src/guestfs.pod:1927
msgid "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1909
+#: ../src/guestfs.pod:1930
msgid ""
"In the case of an error, a flag is set in the header, and the reply message "
"is slightly changed:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1912
+#: ../src/guestfs.pod:1933
#, no-wrap
msgid ""
" total length (header + error,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1917
+#: ../src/guestfs.pod:1938
msgid ""
"The C<guestfs_message_error> structure contains the error message as a "
"string."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1920
+#: ../src/guestfs.pod:1941
msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1922
+#: ../src/guestfs.pod:1943
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 "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1926
+#: ../src/guestfs.pod:1947
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1934
+#: ../src/guestfs.pod:1955
msgid "The \"sequence of chunks\" is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1936
+#: ../src/guestfs.pod:1957
#, no-wrap
msgid ""
" length of chunk (not including length word itself)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1944
+#: ../src/guestfs.pod:1965
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1948
+#: ../src/guestfs.pod:1969
msgid ""
"At time of writing there are no functions that have more than one FileIn "
"parameter. However this is (theoretically) supported, by sending the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1953
+#: ../src/guestfs.pod:1974
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1959
+#: ../src/guestfs.pod:1980
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1968
+#: ../src/guestfs.pod:1989
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 "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1974
+#: ../src/guestfs.pod:1995
msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1976
+#: ../src/guestfs.pod:1997
msgid ""
"The protocol for FileOut parameters is exactly the same as for FileIn "
"parameters, but with the roles of daemon and library reversed."
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1979
+#: ../src/guestfs.pod:2000
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1987
+#: ../src/guestfs.pod:2008
msgid "INITIAL MESSAGE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1989
+#: ../src/guestfs.pod:2010
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 "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1993
+#: ../src/guestfs.pod:2014
msgid "PROGRESS NOTIFICATION MESSAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1995
+#: ../src/guestfs.pod:2016
msgid ""
"The daemon may send progress notification messages at any time. These are "
"distinguished by the normal length word being replaced by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1999
+#: ../src/guestfs.pod:2020
msgid ""
"The library turns them into progress callbacks (see "
"C<guestfs_set_progress_callback>) if there is a callback registered, or "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2003
+#: ../src/guestfs.pod:2024
msgid ""
"The daemon self-limits the frequency of progress messages it sends (see "
"C<daemon/proto.c:notify_progress>). Not all calls generate progress "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2007
+#: ../src/guestfs.pod:2028
msgid "LIBGUESTFS VERSION NUMBERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2009
+#: ../src/guestfs.pod:2030
msgid ""
"Since April 2010, libguestfs has started to make separate development and "
"stable releases, along with corresponding branches in our git repository. "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:2014
+#: ../src/guestfs.pod:2035
#, no-wrap
msgid ""
" even numbers for stable: 1.2.x, 1.4.x, ...\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2025
+#: ../src/guestfs.pod:2046
msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2027
+#: ../src/guestfs.pod:2048
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2033
+#: ../src/guestfs.pod:2054
msgid "Our criteria for backporting changes are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2039
+#: ../src/guestfs.pod:2060
msgid ""
"Documentation changes which don't affect any code are backported unless the "
"documentation refers to a future feature which is not in stable."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2045
+#: ../src/guestfs.pod:2066
msgid ""
"Bug fixes which are not controversial, fix obvious problems, and have been "
"well tested are backported."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2050
+#: ../src/guestfs.pod:2071
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2056
+#: ../src/guestfs.pod:2077
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2062
+#: ../src/guestfs.pod:2083
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 "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2070 ../fish/guestfish.pod:965 ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
+#: ../src/guestfs.pod:2091 ../fish/guestfish.pod:965 ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
msgid "ENVIRONMENT VARIABLES"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2074 ../fish/guestfish.pod:991
+#: ../src/guestfs.pod:2095 ../fish/guestfish.pod:991
msgid "LIBGUESTFS_APPEND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2076 ../fish/guestfish.pod:993
+#: ../src/guestfs.pod:2097 ../fish/guestfish.pod:993
msgid "Pass additional options to the guest kernel."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2078 ../fish/guestfish.pod:995
+#: ../src/guestfs.pod:2099 ../fish/guestfish.pod:995
msgid "LIBGUESTFS_DEBUG"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2080
+#: ../src/guestfs.pod:2101
msgid ""
"Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages. This has the same "
"effect as calling C<guestfs_set_verbose (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2083 ../fish/guestfish.pod:1000
+#: ../src/guestfs.pod:2104 ../fish/guestfish.pod:1000
msgid "LIBGUESTFS_MEMSIZE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2085 ../fish/guestfish.pod:1002
+#: ../src/guestfs.pod:2106 ../fish/guestfish.pod:1002
msgid "Set the memory allocated to the qemu process, in megabytes. For example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:2088 ../fish/guestfish.pod:1005
+#: ../src/guestfs.pod:2109 ../fish/guestfish.pod:1005
#, no-wrap
msgid ""
" LIBGUESTFS_MEMSIZE=700\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2090 ../fish/guestfish.pod:1007
+#: ../src/guestfs.pod:2111 ../fish/guestfish.pod:1007
msgid "LIBGUESTFS_PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2092
+#: ../src/guestfs.pod:2113
msgid ""
"Set the path that libguestfs uses to search for kernel and initrd.img. See "
"the discussion of paths in section PATH above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2095 ../fish/guestfish.pod:1012
+#: ../src/guestfs.pod:2116 ../fish/guestfish.pod:1012
msgid "LIBGUESTFS_QEMU"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2097 ../fish/guestfish.pod:1014
+#: ../src/guestfs.pod:2118 ../fish/guestfish.pod:1014
msgid ""
"Set the default qemu binary that libguestfs uses. If not set, then the qemu "
"which was found at compile time by the configure script is used."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2101
+#: ../src/guestfs.pod:2122
msgid "See also L</QEMU WRAPPERS> above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2103 ../fish/guestfish.pod:1018
+#: ../src/guestfs.pod:2124 ../fish/guestfish.pod:1018
msgid "LIBGUESTFS_TRACE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2105
+#: ../src/guestfs.pod:2126
msgid ""
"Set C<LIBGUESTFS_TRACE=1> to enable command traces. This has the same "
"effect as calling C<guestfs_set_trace (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2108 ../fish/guestfish.pod:1027
+#: ../src/guestfs.pod:2129 ../fish/guestfish.pod:1027
msgid "TMPDIR"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2110 ../fish/guestfish.pod:1029
+#: ../src/guestfs.pod:2131 ../fish/guestfish.pod:1029
msgid "Location of temporary directory, defaults to C</tmp>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2112 ../fish/guestfish.pod:1031
+#: ../src/guestfs.pod:2133 ../fish/guestfish.pod:1031
msgid ""
"If libguestfs was compiled to use the supermin appliance then the real "
"appliance is cached in this directory, shared between all handles belonging "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2120 ../fish/guestfish.pod:1089 ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:233 ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572 ../tools/virt-resize.pl:1483 ../tools/virt-list-filesystems.pl:189 ../tools/virt-tar.pl:281 ../tools/virt-make-fs.pl:534 ../tools/virt-list-partitions.pl:257
+#: ../src/guestfs.pod:2141 ../fish/guestfish.pod:1089 ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:233 ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:572 ../tools/virt-resize.pl:1483 ../tools/virt-list-filesystems.pl:189 ../tools/virt-tar.pl:281 ../tools/virt-make-fs.pl:534 ../tools/virt-list-partitions.pl:257
msgid "SEE ALSO"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2122
+#: ../src/guestfs.pod:2143
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)>, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2145
+#: ../src/guestfs.pod:2166
msgid ""
"Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, "
"L<lvm(8)>, L<disktype(1)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2152 ../tools/virt-win-reg.pl:587 ../tools/virt-make-fs.pl:548
+#: ../src/guestfs.pod:2173 ../tools/virt-win-reg.pl:587 ../tools/virt-make-fs.pl:548
msgid "BUGS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2154
+#: ../src/guestfs.pod:2175
msgid "To get a list of bugs against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2156
+#: ../src/guestfs.pod:2177
msgid "L<https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2158
+#: ../src/guestfs.pod:2179
msgid "To report a new bug against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2160
+#: ../src/guestfs.pod:2181
msgid "L<https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2162
+#: ../src/guestfs.pod:2183
msgid "When reporting a bug, please check:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2168
+#: ../src/guestfs.pod:2189
msgid "That the bug hasn't been reported already."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2172
+#: ../src/guestfs.pod:2193
msgid "That you are testing a recent version."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2176
+#: ../src/guestfs.pod:2197
msgid "Describe the bug accurately, and give a way to reproduce it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2180
+#: ../src/guestfs.pod:2201
msgid ""
"Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
"bug report."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2185 ../fish/guestfish.pod:1108 ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:244
+#: ../src/guestfs.pod:2206 ../fish/guestfish.pod:1108 ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:244
msgid "AUTHORS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2187 ../fish/guestfish.pod:1110 ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:246
+#: ../src/guestfs.pod:2208 ../fish/guestfish.pod:1110 ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:246
msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2189 ../fish/guestfish.pod:1112 ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:248 ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:602 ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206 ../tools/virt-tar.pl:296 ../tools/virt-make-fs.pl:563 ../tools/virt-list-partitions.pl:273
+#: ../src/guestfs.pod:2210 ../fish/guestfish.pod:1112 ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:248 ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:602 ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:206 ../tools/virt-tar.pl:296 ../tools/virt-make-fs.pl:563 ../tools/virt-list-partitions.pl:273
msgid "COPYRIGHT"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2191 ../fish/guestfish.pod:1114 ../fuse/guestmount.pod:250
+#: ../src/guestfs.pod:2212 ../fish/guestfish.pod:1114 ../fuse/guestmount.pod:250
msgid "Copyright (C) 2009-2010 Red Hat Inc. L<http://libguestfs.org/>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2194
+#: ../src/guestfs.pod:2215
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2199
+#: ../src/guestfs.pod:2220
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 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2204
+#: ../src/guestfs.pod:2225
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, "
msgstr ""
# type: textblock
-#: ../src/guestfs-actions.pod:1174 ../src/guestfs-actions.pod:1191 ../fish/guestfish-actions.pod:788 ../fish/guestfish-actions.pod:799
+#: ../src/guestfs-actions.pod:1174 ../src/guestfs-actions.pod:1191
msgid ""
"This command is mostly useful for interactive sessions. It is I<not> "
-"intended that you try to parse the output string. Use C<statvfs> from "
-"programs."
+"intended that you try to parse the output string. Use C<guestfs_statvfs> "
+"from programs."
msgstr ""
# type: textblock
"\n"
msgstr ""
+# type: textblock
+#: ../fish/guestfish-actions.pod:788 ../fish/guestfish-actions.pod:799
+msgid ""
+"This command is mostly useful for interactive sessions. It is I<not> "
+"intended that you try to parse the output string. Use L</statvfs> from "
+"programs."
+msgstr ""
+
# type: =head2
#: ../fish/guestfish-actions.pod:792
msgid "df-h"
# type: textblock
#: ../fuse/guestmount.pod:227
-msgid "Trace libguestfs calls."
+msgid "Trace libguestfs calls and entry into each FUSE function."
msgstr ""
# type: textblock
"Project-Id-Version: libguestfs.master\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: Héctor Daniel Cabrera <logan@fedoraproject.org>\n"
"Language-Team: Fedora Spanish <trans-es@lists.fedoraproject.org>\n"
"X-Poedit-Country: ARGENTINA\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Muestra la versión y finaliza\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: falló al crear manipulador\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "utilice 'time comando [args...]'\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Mensajes detallados\n"
" -V|--version Muestra la versión y finaliza\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: debe poseer al menos una opción -a, y al menos una opción -m\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr ""
"Project-Id-Version: libguestfs\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-02 13:45+0530\n"
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
"Language-Team: Gujarati\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version આવૃત્તિને દર્શાવોsઅને બહાર નીકળોexit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: હેન્ડલ ને બનાવવાનું નિષ્ફળ\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' ને વાપરો\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose વર્બોસ સંદેશાઓages\n"
" -V|--version આવૃત્તિને દર્શાવોsઅને બહાર નીકળોexit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: ઓછામાં ઓછુ એક -a અને -m વિકલ્પ પર હોવુ જ જોઇએ\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: યજમાન ફાઇલસિસ્ટમમાં માઉન્ટબિંદુને સ્પષ્ટ કરવુ જ પડશે\n"
"Project-Id-Version: libguestfs.master.libguestfs\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-16 12:57+0530\n"
"Last-Translator: Rajesh Ranjan <rranjan@redhat.com>\n"
"Language-Team: Hindi <Red Hat>\n"
"\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: नियंत्रण बनाने में विफल\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "use 'time command [args...]'\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: must have at least one -a and at least one -m option\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: तुम्हें मेजबान फाइल सिस्टम में कोई माउंटप्वाइंट को जरूर निर्दिष्ट करना चाहिए\n"
"Project-Id-Version: libguestfs 1.0.83\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-24 11:56+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: kn-IN <>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸಿ ನಿರ್ಗಮಿಸು\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' ಅನ್ನು ಬಳಸು\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose ವರ್ಬೋಸ್ ಸಂದೇಶಗಳು\n"
" -V|--version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸಿ ನಿರ್ಗಮಿಸು\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: ಕನಿಷ್ಟ ಒಂದು -a ಹಾಗು ಕನಿಷ್ಟ ಒಂದು -m ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿರಬೇಕು\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: ಆತಿಥೇಯ ಕಡತವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಒಂದು ಆರೋಹಣಾ ತಾಣವನ್ನು ನೀವು ಸೂಚಿಸಬೇಕು\n"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libguestfs 1.7.24\n"
+"Project-Id-Version: libguestfs 1.8.0\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+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"
"Content-Transfer-Encoding: 8bit\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr ""
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr ""
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -x|--trace Trace guestfs API calls\n"
msgstr ""
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr ""
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr ""
"Project-Id-Version: libguestfs.master.libguestfs.ml\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-02 18:35+0530\n"
"Last-Translator: Ani Peter | അനി പീറ്റര് <apeter@redhat.com>\n"
"Language-Team: Swathanthra Malayalam Computing | സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ് <smc-"
"Content-Transfer-Encoding: 8bit\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: ഹാന്ഡില് ഉണ്ടാക്കുന്നതില് പരാജയപ്പെട്ടു\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' ഉപയോഗിക്കുക\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: കുറഞ്ഞതു് ഒരു -a ഉപാധിയും ഒരു -m ഉപാധിയും ആവശ്യമുണ്ടു്\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: ഹോസ്റ്റ് ഫയല്സിസ്റ്റത്തില് ഒരു മൌണ്ട് പോയിന്റ് നല്കണം\n"
"Project-Id-Version: mr\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-03 19:10+0530\n"
"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
"Language-Team: Marathi <fedora-trans-mr@redhat.com>\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: हँडल निर्माण करण्यास अशक्य\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' याचा वापर करा\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: किमान एक -a व किमान एक -m पर्याय असायला हवे\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: यजमान फाइलप्रणालीत तुम्ही माऊंटपॉईंट निर्देशीत करायला हवे\n"
"Project-Id-Version: libguestfs 1.5.4\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-09-02 15:28+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: Fedora\n"
"X-Generator: Virtaal 0.6.1\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Laat versie zien en sluit af\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: hendel aanmaken mislukte\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "gebruik 'time command [args...]'\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Breedsprakige boodschappen\n"
" -V|--version Laat versie zien en sluit af\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: moet tenminste een -a en tenminste een -m optie hebben\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr ""
"Project-Id-Version: libguestfs.master.or\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-02-01 18:17+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
"\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ ଏବଂ ପ୍ରସ୍ଥାନ କରନ୍ତୁ\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: ନିୟନ୍ତ୍ରଣ ପ୍ରସ୍ତୁତ କରିବାରେ ବିଫଳ ହୋଇଛି\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' କୁ ବ୍ୟବହାର କରନ୍ତୁ\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose ଭର୍ବୋଜ ସନ୍ଦେଶଗୁଡ଼ିକ\n"
" -V|--version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ ଏବଂ ପ୍ରସ୍ଥାନ କରନ୍ତୁ\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: ନିଶ୍ଚିତ ଭାବରେ ଗୋଟିଏ -a ଏବଂ ଅତିକମରେ ଗୋଟିଏ -m ବିକଳ୍ପ ଥିବା ଉଚିତ\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: ଆପଣଙ୍କୁ ହୋଷ୍ଟ ଫାଇଲତନ୍ତ୍ରରେ ଗୋଟିଏ ସ୍ଥାପନ ବିନ୍ଦୁ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n"
"Project-Id-Version: libguestfs 1.0.81\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-01-29 12:50+0530\n"
"Last-Translator: Jaswinder Singh <jsingh@redhat.com>\n"
"Language-Team: Punjabi/Panjabi <kde-i18n-doc@kde.org>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: ਹੈਂਡਲ ਬਣਾਉਣ ਵਿੱਚ ਫੇਲ\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "use 'time command [args...]'\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: must have at least one -a and at least one -m option\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: ਤੁਹਾਨੂੰ ਹੋਸਟ ਫਾਇਲ-ਸਿਸਟਮ ਵਿੱਚ ਮਾਊਂਟਪੁਆਂਇਟ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ\n"
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-10-23 13:41+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
"Content-Transfer-Encoding: 8bit\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Wyświetla wersję i kończy działanie\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: utworzenie programu obsługi nie powiodło się\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "należy użyć \"time polecenie [parametry...]\"\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Wyświetla więcej komunikatów\n"
" -V|--version Wyświetla wersję i kończy działanie\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: musi posiadać co najmniej jedną opcję -a i co najmniej jedną -m\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: należy podać punkt montowania w systemie plików gospodarza\n"
"Project-Id-Version: libguestfs 1.0.81\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-01-29 13:38+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: ta_IN <kde-i18n-doc@kde.org>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: ஹாண்டிலை உருவாக்க முடியவில்லை\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'நேர கட்டளையைப் பயன்படுத்து [args...]'\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr ""
"%s: விருப்பத்தில் குறைந்தபட்சம் ஒரு -a மற்றும் குறைந்தபட்சம் ஒரு -m ஐ பெற்றிருக்க வேண்டும்\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s: புரவல கோப்புமுறைமையில் ஒரு ஏறும்புள்ளியை நீங்கள் குறிப்பிட வேண்டும்\n"
"Project-Id-Version: libguestfs.master.libguestfs\n"
"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools\n"
-"POT-Creation-Date: 2010-12-16 23:16+0000\n"
+"POT-Creation-Date: 2010-12-19 15:38+0000\n"
"PO-Revision-Date: 2010-01-27 20:03+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
"\n"
#: cat/virt-cat.c:53 cat/virt-filesystems.c:86 cat/virt-ls.c:54 df/main.c:66
-#: fish/fish.c:86 fuse/guestmount.c:804 inspector/virt-inspector.c:67
+#: fish/fish.c:86 fuse/guestmount.c:862 inspector/virt-inspector.c:67
#: rescue/virt-rescue.c:55
#, c-format
msgid "Try `%s --help' for more information.\n"
" -V|--version Display version and exit\n"
#: cat/virt-cat.c:113 cat/virt-filesystems.c:189 cat/virt-ls.c:119
-#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:915
+#: df/domains.c:428 df/main.c:132 fish/fish.c:204 fuse/guestmount.c:973
#: inspector/virt-inspector.c:127 rescue/virt-rescue.c:125
#, c-format
msgid "guestfs_create: failed to create handle\n"
msgstr "guestfs_create: సంభాలికను సృష్టించుటకు విఫలమైంది\n"
#: cat/virt-cat.c:135 cat/virt-filesystems.c:243 cat/virt-ls.c:141
-#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:963
+#: df/main.c:156 fish/fish.c:272 fuse/guestmount.c:1021
#: inspector/virt-inspector.c:149 rescue/virt-rescue.c:149
#, c-format
msgid "%s: unknown long option: %s (%d)\n"
msgid "use 'time command [args...]'\n"
msgstr "'time command [args...]' వుపయోగించుము\n"
-#: fuse/guestmount.c:808
+#: fuse/guestmount.c:866
#, fuzzy, c-format
msgid ""
"%s: FUSE module for libguestfs\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
-#: fuse/guestmount.c:1031
+#: fuse/guestmount.c:1090
#, fuzzy, c-format
msgid "%s: must have at least one -a/-d and at least one -m/-i option\n"
msgstr "%s: తప్పక కనీసం వొక -a మరియు వొక -m ఐచ్చికాన్ని కలిగివుండాలి\n"
-#: fuse/guestmount.c:1039
+#: fuse/guestmount.c:1098
#, c-format
msgid "%s: you must specify a mountpoint in the host filesystem\n"
msgstr "%s:హోస్టు ఫైల్సిస్టమ్ నందు మీరు తప్పక వొక మౌంట్పాయింట్ను తెలుపవలెను\n"