diff options
Diffstat (limited to 'po-docs/libguestfs-docs.pot')
-rw-r--r-- | po-docs/libguestfs-docs.pot | 2230 |
1 files changed, 1221 insertions, 1009 deletions
diff --git a/po-docs/libguestfs-docs.pot b/po-docs/libguestfs-docs.pot index fa242446..eb69ce76 100644 --- a/po-docs/libguestfs-docs.pot +++ b/po-docs/libguestfs-docs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: libguestfs 1.19.59\n" +"Project-Id-Version: libguestfs 1.19.60\n" "Report-Msgid-Bugs-To: libguestfs@redhat.com\n" -"POT-Creation-Date: 2012-11-13 14:41+0000\n" +"POT-Creation-Date: 2012-11-17 19:54+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" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. type: =head1 -#: ../align/virt-alignment-scan.pod:3 ../appliance/libguestfs-make-fixed-appliance.pod:3 ../cat/virt-cat.pod:3 ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3 ../daemon/guestfsd.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3 ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3 ../examples/guestfs-faq.pod:3 ../examples/guestfs-performance.pod:3 ../examples/guestfs-recipes.pod:10 ../examples/guestfs-testing.pod:3 ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3 ../format/virt-format.pod:3 ../fuse/guestmount.pod:3 ../guestfs-release-notes.pod:3 ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3 ../sysprep/virt-sysprep.pod:3 ../test-tool/libguestfs-test-tool.pod:3 ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30 ../tools/virt-make-fs.pl:36 ../tools/virt-tar.pl:31 ../tools/virt-win-reg.pl:35 +#: ../align/virt-alignment-scan.pod:3 ../appliance/libguestfs-make-fixed-appliance.pod:3 ../cat/virt-cat.pod:3 ../cat/virt-filesystems.pod:3 ../cat/virt-ls.pod:3 ../daemon/guestfsd.pod:3 ../df/virt-df.pod:3 ../edit/virt-edit.pod:3 ../erlang/examples/guestfs-erlang.pod:3 ../examples/guestfs-examples.pod:3 ../examples/guestfs-faq.pod:3 ../examples/guestfs-performance.pod:3 ../examples/guestfs-recipes.pod:10 ../examples/guestfs-testing.pod:3 ../fish/guestfish.pod:3 ../fish/virt-copy-in.pod:3 ../fish/virt-copy-out.pod:3 ../fish/virt-tar-in.pod:3 ../fish/virt-tar-out.pod:3 ../format/virt-format.pod:3 ../fuse/guestmount.pod:3 ../guestfs-release-notes.pod:3 ../inspector/virt-inspector.pod:3 ../java/examples/guestfs-java.pod:3 ../lua/examples/guestfs-lua.pod:3 ../ocaml/examples/guestfs-ocaml.pod:3 ../perl/examples/guestfs-perl.pod:3 ../python/examples/guestfs-python.pod:3 ../rescue/virt-rescue.pod:3 ../resize/virt-resize.pod:3 ../ruby/examples/guestfs-ruby.pod:3 ../sparsify/virt-sparsify.pod:3 ../src/guestfs.pod:3 ../sysprep/virt-sysprep.pod:3 ../test-tool/libguestfs-test-tool.pod:3 ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30 ../tools/virt-make-fs.pl:36 ../tools/virt-tar.pl:31 ../tools/virt-win-reg.pl:35 msgid "NAME" msgstr "" @@ -28,7 +28,7 @@ msgid "virt-alignment-scan - Check alignment of virtual machine partitions" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:7 ../appliance/libguestfs-make-fixed-appliance.pod:7 ../cat/virt-cat.pod:7 ../cat/virt-filesystems.pod:7 ../cat/virt-ls.pod:7 ../daemon/guestfsd.pod:7 ../df/virt-df.pod:7 ../edit/virt-edit.pod:7 ../erlang/examples/guestfs-erlang.pod:7 ../examples/guestfs-examples.pod:7 ../fish/guestfish.pod:7 ../fish/virt-copy-in.pod:7 ../fish/virt-copy-out.pod:7 ../fish/virt-tar-in.pod:7 ../fish/virt-tar-out.pod:7 ../format/virt-format.pod:7 ../fuse/guestmount.pod:7 ../inspector/virt-inspector.pod:7 ../java/examples/guestfs-java.pod:7 ../ocaml/examples/guestfs-ocaml.pod:7 ../perl/examples/guestfs-perl.pod:7 ../python/examples/guestfs-python.pod:7 ../rescue/virt-rescue.pod:7 ../resize/virt-resize.pod:7 ../ruby/examples/guestfs-ruby.pod:7 ../sparsify/virt-sparsify.pod:7 ../src/guestfs.pod:7 ../sysprep/virt-sysprep.pod:7 ../test-tool/libguestfs-test-tool.pod:7 ../tools/virt-list-filesystems.pl:34 ../tools/virt-list-partitions.pl:34 ../tools/virt-make-fs.pl:40 ../tools/virt-tar.pl:35 ../tools/virt-win-reg.pl:39 +#: ../align/virt-alignment-scan.pod:7 ../appliance/libguestfs-make-fixed-appliance.pod:7 ../cat/virt-cat.pod:7 ../cat/virt-filesystems.pod:7 ../cat/virt-ls.pod:7 ../daemon/guestfsd.pod:7 ../df/virt-df.pod:7 ../edit/virt-edit.pod:7 ../erlang/examples/guestfs-erlang.pod:7 ../examples/guestfs-examples.pod:7 ../fish/guestfish.pod:7 ../fish/virt-copy-in.pod:7 ../fish/virt-copy-out.pod:7 ../fish/virt-tar-in.pod:7 ../fish/virt-tar-out.pod:7 ../format/virt-format.pod:7 ../fuse/guestmount.pod:7 ../inspector/virt-inspector.pod:7 ../java/examples/guestfs-java.pod:7 ../lua/examples/guestfs-lua.pod:7 ../ocaml/examples/guestfs-ocaml.pod:7 ../perl/examples/guestfs-perl.pod:7 ../python/examples/guestfs-python.pod:7 ../rescue/virt-rescue.pod:7 ../resize/virt-resize.pod:7 ../ruby/examples/guestfs-ruby.pod:7 ../sparsify/virt-sparsify.pod:7 ../src/guestfs.pod:7 ../sysprep/virt-sysprep.pod:7 ../test-tool/libguestfs-test-tool.pod:7 ../tools/virt-list-filesystems.pl:34 ../tools/virt-list-partitions.pl:34 ../tools/virt-make-fs.pl:40 ../tools/virt-tar.pl:35 ../tools/virt-win-reg.pl:39 msgid "SYNOPSIS" msgstr "" @@ -57,7 +57,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:15 ../appliance/libguestfs-make-fixed-appliance.pod:13 ../cat/virt-cat.pod:19 ../cat/virt-filesystems.pod:13 ../cat/virt-ls.pod:19 ../daemon/guestfsd.pod:11 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27 ../erlang/examples/guestfs-erlang.pod:16 ../examples/guestfs-examples.pod:19 ../examples/guestfs-performance.pod:7 ../examples/guestfs-recipes.pod:14 ../examples/guestfs-testing.pod:7 ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15 ../format/virt-format.pod:11 ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15 ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:19 ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:31 ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15 ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:24 ../sysprep/virt-sysprep.pod:13 ../test-tool/libguestfs-test-tool.pod:11 ../tools/virt-list-filesystems.pl:45 ../tools/virt-list-partitions.pl:45 ../tools/virt-make-fs.pl:48 ../tools/virt-tar.pl:77 ../tools/virt-win-reg.pl:63 +#: ../align/virt-alignment-scan.pod:15 ../appliance/libguestfs-make-fixed-appliance.pod:13 ../cat/virt-cat.pod:19 ../cat/virt-filesystems.pod:13 ../cat/virt-ls.pod:19 ../daemon/guestfsd.pod:11 ../df/virt-df.pod:21 ../edit/virt-edit.pod:27 ../erlang/examples/guestfs-erlang.pod:16 ../examples/guestfs-examples.pod:19 ../examples/guestfs-performance.pod:7 ../examples/guestfs-recipes.pod:14 ../examples/guestfs-testing.pod:7 ../fish/guestfish.pod:30 ../fish/virt-copy-in.pod:19 ../fish/virt-copy-out.pod:13 ../fish/virt-tar-in.pod:21 ../fish/virt-tar-out.pod:15 ../format/virt-format.pod:11 ../fuse/guestmount.pod:20 ../inspector/virt-inspector.pod:19 ../java/examples/guestfs-java.pod:15 ../lua/examples/guestfs-lua.pod:16 ../ocaml/examples/guestfs-ocaml.pod:25 ../perl/examples/guestfs-perl.pod:19 ../python/examples/guestfs-python.pod:14 ../rescue/virt-rescue.pod:31 ../resize/virt-resize.pod:13 ../ruby/examples/guestfs-ruby.pod:15 ../sparsify/virt-sparsify.pod:11 ../src/guestfs.pod:24 ../sysprep/virt-sysprep.pod:13 ../test-tool/libguestfs-test-tool.pod:11 ../tools/virt-list-filesystems.pl:45 ../tools/virt-list-partitions.pl:45 ../tools/virt-make-fs.pl:48 ../tools/virt-tar.pl:77 ../tools/virt-win-reg.pl:63 msgid "DESCRIPTION" msgstr "" @@ -343,7 +343,7 @@ msgid "" msgstr "" #. type: textblock -#: ../align/virt-alignment-scan.pod:146 ../cat/virt-cat.pod:114 ../cat/virt-filesystems.pod:179 ../cat/virt-ls.pod:337 ../df/virt-df.pod:110 ../edit/virt-edit.pod:141 ../fish/guestfish.pod:242 ../fish/guestfish.pod:689 ../format/virt-format.pod:96 ../inspector/virt-inspector.pod:350 ../rescue/virt-rescue.pod:164 ../src/guestfs.pod:3581 ../sysprep/virt-sysprep.pod:112 +#: ../align/virt-alignment-scan.pod:146 ../cat/virt-cat.pod:114 ../cat/virt-filesystems.pod:179 ../cat/virt-ls.pod:337 ../df/virt-df.pod:110 ../edit/virt-edit.pod:141 ../fish/guestfish.pod:242 ../fish/guestfish.pod:689 ../format/virt-format.pod:96 ../inspector/virt-inspector.pod:350 ../rescue/virt-rescue.pod:164 ../src/guestfs.pod:3585 ../sysprep/virt-sysprep.pod:112 msgid "For example:" msgstr "" @@ -751,7 +751,7 @@ msgid "This program returns:" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:347 ../align/virt-alignment-scan.pod:353 ../align/virt-alignment-scan.pod:359 ../align/virt-alignment-scan.pod:366 ../appliance/libguestfs-make-fixed-appliance.pod:32 ../appliance/libguestfs-make-fixed-appliance.pod:53 ../cat/virt-cat.pod:177 ../cat/virt-cat.pod:182 ../cat/virt-cat.pod:187 ../cat/virt-cat.pod:198 ../cat/virt-cat.pod:202 ../df/virt-df.pod:148 ../df/virt-df.pod:154 ../edit/virt-edit.pod:266 ../edit/virt-edit.pod:271 ../edit/virt-edit.pod:276 ../edit/virt-edit.pod:287 ../edit/virt-edit.pod:291 ../examples/guestfs-faq.pod:149 ../examples/guestfs-faq.pod:155 ../examples/guestfs-faq.pod:194 ../examples/guestfs-faq.pod:200 ../examples/guestfs-performance.pod:107 ../examples/guestfs-performance.pod:113 ../examples/guestfs-performance.pod:118 ../examples/guestfs-performance.pod:253 ../examples/guestfs-performance.pod:258 ../examples/guestfs-performance.pod:263 ../examples/guestfs-recipes.pod:128 ../examples/guestfs-recipes.pod:132 ../examples/guestfs-recipes.pod:136 ../examples/guestfs-recipes.pod:162 ../examples/guestfs-recipes.pod:167 ../examples/guestfs-recipes.pod:257 ../examples/guestfs-recipes.pod:261 ../examples/guestfs-recipes.pod:265 ../examples/guestfs-recipes.pod:269 ../examples/guestfs-recipes.pod:273 ../examples/guestfs-testing.pod:124 ../examples/guestfs-testing.pod:128 ../examples/guestfs-testing.pod:132 ../fish/guestfish-actions.pod:432 ../fish/guestfish-actions.pod:440 ../fish/guestfish-actions.pod:447 ../fish/guestfish-actions.pod:454 ../fish/guestfish-actions.pod:1495 ../fish/guestfish-actions.pod:1499 ../fish/guestfish-actions.pod:1503 ../fish/guestfish-actions.pod:1507 ../fish/guestfish-actions.pod:1515 ../fish/guestfish-actions.pod:1519 ../fish/guestfish-actions.pod:1523 ../fish/guestfish-actions.pod:1533 ../fish/guestfish-actions.pod:1537 ../fish/guestfish-actions.pod:1541 ../fish/guestfish-actions.pod:1652 ../fish/guestfish-actions.pod:1656 ../fish/guestfish-actions.pod:1661 ../fish/guestfish-actions.pod:1703 ../fish/guestfish-actions.pod:1707 ../fish/guestfish-actions.pod:1712 ../fish/guestfish-actions.pod:2213 ../fish/guestfish-actions.pod:2220 ../fish/guestfish-actions.pod:2227 ../fish/guestfish-actions.pod:2805 ../fish/guestfish-actions.pod:2811 ../fish/guestfish-actions.pod:2819 ../fish/guestfish-actions.pod:2826 ../fish/guestfish-actions.pod:2833 ../fish/guestfish.pod:461 ../fish/guestfish.pod:465 ../fish/guestfish.pod:469 ../fish/guestfish.pod:473 ../guestfs-release-notes.pod:92 ../guestfs-release-notes.pod:96 ../guestfs-release-notes.pod:100 ../guestfs-release-notes.pod:104 ../guestfs-release-notes.pod:108 ../guestfs-release-notes.pod:112 ../guestfs-release-notes.pod:117 ../guestfs-release-notes.pod:121 ../guestfs-release-notes.pod:125 ../guestfs-release-notes.pod:266 ../guestfs-release-notes.pod:270 ../guestfs-release-notes.pod:274 ../guestfs-release-notes.pod:278 ../guestfs-release-notes.pod:282 ../guestfs-release-notes.pod:286 ../guestfs-release-notes.pod:290 ../inspector/virt-inspector.pod:514 ../inspector/virt-inspector.pod:518 ../resize/virt-resize.pod:365 ../resize/virt-resize.pod:369 ../resize/virt-resize.pod:378 ../resize/virt-resize.pod:384 ../sparsify/virt-sparsify.pod:45 ../sparsify/virt-sparsify.pod:52 ../sparsify/virt-sparsify.pod:56 ../sparsify/virt-sparsify.pod:62 ../sparsify/virt-sparsify.pod:67 ../sparsify/virt-sparsify.pod:72 ../src/guestfs-actions.pod:638 ../src/guestfs-actions.pod:646 ../src/guestfs-actions.pod:653 ../src/guestfs-actions.pod:660 ../src/guestfs-actions.pod:2497 ../src/guestfs-actions.pod:2501 ../src/guestfs-actions.pod:2505 ../src/guestfs-actions.pod:2509 ../src/guestfs-actions.pod:2517 ../src/guestfs-actions.pod:2521 ../src/guestfs-actions.pod:2525 ../src/guestfs-actions.pod:2535 ../src/guestfs-actions.pod:2539 ../src/guestfs-actions.pod:2543 ../src/guestfs-actions.pod:2715 ../src/guestfs-actions.pod:2719 ../src/guestfs-actions.pod:2724 ../src/guestfs-actions.pod:2785 ../src/guestfs-actions.pod:2789 ../src/guestfs-actions.pod:2794 ../src/guestfs-actions.pod:3588 ../src/guestfs-actions.pod:3595 ../src/guestfs-actions.pod:3602 ../src/guestfs-actions.pod:4469 ../src/guestfs-actions.pod:4475 ../src/guestfs-actions.pod:4483 ../src/guestfs-actions.pod:4490 ../src/guestfs-actions.pod:4497 ../src/guestfs.pod:397 ../src/guestfs.pod:402 ../src/guestfs.pod:407 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:420 ../src/guestfs.pod:425 ../src/guestfs.pod:430 ../src/guestfs.pod:1264 ../src/guestfs.pod:1268 ../src/guestfs.pod:1272 ../src/guestfs.pod:1277 ../src/guestfs.pod:1285 ../src/guestfs.pod:1304 ../src/guestfs.pod:1312 ../src/guestfs.pod:1329 ../src/guestfs.pod:1334 ../src/guestfs.pod:1338 ../src/guestfs.pod:1480 ../src/guestfs.pod:1484 ../src/guestfs.pod:1488 ../src/guestfs.pod:1492 ../src/guestfs.pod:1496 ../src/guestfs.pod:1500 ../src/guestfs.pod:2134 ../src/guestfs.pod:2139 ../src/guestfs.pod:2143 ../src/guestfs.pod:2247 ../src/guestfs.pod:2252 ../src/guestfs.pod:2256 ../src/guestfs.pod:2266 ../src/guestfs.pod:2693 ../src/guestfs.pod:2698 ../src/guestfs.pod:2704 ../src/guestfs.pod:2712 ../src/guestfs.pod:3229 ../src/guestfs.pod:3235 ../src/guestfs.pod:3240 ../src/guestfs.pod:3246 ../src/guestfs.pod:3776 ../src/guestfs.pod:3781 ../src/guestfs.pod:3785 ../src/guestfs.pod:3789 ../src/guestfs.pod:3793 ../src/guestfs.pod:3807 ../src/guestfs.pod:3812 ../sysprep/virt-sysprep.pod:231 ../sysprep/virt-sysprep.pod:235 ../sysprep/virt-sysprep.pod:239 ../sysprep/virt-sysprep.pod:243 ../sysprep/virt-sysprep.pod:258 ../sysprep/virt-sysprep.pod:262 ../sysprep/virt-sysprep.pod:266 ../sysprep/virt-sysprep.pod:270 ../sysprep/virt-sysprep.pod:274 ../sysprep/virt-sysprep.pod:327 ../sysprep/virt-sysprep.pod:339 ../sysprep/virt-sysprep.pod:343 ../sysprep/virt-sysprep.pod:351 ../sysprep/virt-sysprep.pod:357 ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:711 ../tools/virt-win-reg.pl:717 ../tools/virt-win-reg.pl:723 +#: ../align/virt-alignment-scan.pod:347 ../align/virt-alignment-scan.pod:353 ../align/virt-alignment-scan.pod:359 ../align/virt-alignment-scan.pod:366 ../appliance/libguestfs-make-fixed-appliance.pod:32 ../appliance/libguestfs-make-fixed-appliance.pod:53 ../cat/virt-cat.pod:177 ../cat/virt-cat.pod:182 ../cat/virt-cat.pod:187 ../cat/virt-cat.pod:198 ../cat/virt-cat.pod:202 ../df/virt-df.pod:148 ../df/virt-df.pod:154 ../edit/virt-edit.pod:266 ../edit/virt-edit.pod:271 ../edit/virt-edit.pod:276 ../edit/virt-edit.pod:287 ../edit/virt-edit.pod:291 ../examples/guestfs-faq.pod:149 ../examples/guestfs-faq.pod:155 ../examples/guestfs-faq.pod:194 ../examples/guestfs-faq.pod:200 ../examples/guestfs-performance.pod:107 ../examples/guestfs-performance.pod:113 ../examples/guestfs-performance.pod:118 ../examples/guestfs-performance.pod:253 ../examples/guestfs-performance.pod:258 ../examples/guestfs-performance.pod:263 ../examples/guestfs-recipes.pod:138 ../examples/guestfs-recipes.pod:142 ../examples/guestfs-recipes.pod:146 ../examples/guestfs-recipes.pod:172 ../examples/guestfs-recipes.pod:177 ../examples/guestfs-recipes.pod:267 ../examples/guestfs-recipes.pod:271 ../examples/guestfs-recipes.pod:275 ../examples/guestfs-recipes.pod:279 ../examples/guestfs-recipes.pod:283 ../examples/guestfs-testing.pod:124 ../examples/guestfs-testing.pod:128 ../examples/guestfs-testing.pod:132 ../fish/guestfish-actions.pod:432 ../fish/guestfish-actions.pod:440 ../fish/guestfish-actions.pod:447 ../fish/guestfish-actions.pod:454 ../fish/guestfish-actions.pod:1495 ../fish/guestfish-actions.pod:1499 ../fish/guestfish-actions.pod:1503 ../fish/guestfish-actions.pod:1507 ../fish/guestfish-actions.pod:1515 ../fish/guestfish-actions.pod:1519 ../fish/guestfish-actions.pod:1523 ../fish/guestfish-actions.pod:1533 ../fish/guestfish-actions.pod:1537 ../fish/guestfish-actions.pod:1541 ../fish/guestfish-actions.pod:1652 ../fish/guestfish-actions.pod:1656 ../fish/guestfish-actions.pod:1661 ../fish/guestfish-actions.pod:1703 ../fish/guestfish-actions.pod:1707 ../fish/guestfish-actions.pod:1712 ../fish/guestfish-actions.pod:2213 ../fish/guestfish-actions.pod:2220 ../fish/guestfish-actions.pod:2227 ../fish/guestfish-actions.pod:2805 ../fish/guestfish-actions.pod:2811 ../fish/guestfish-actions.pod:2819 ../fish/guestfish-actions.pod:2826 ../fish/guestfish-actions.pod:2833 ../fish/guestfish.pod:461 ../fish/guestfish.pod:465 ../fish/guestfish.pod:469 ../fish/guestfish.pod:473 ../guestfs-release-notes.pod:92 ../guestfs-release-notes.pod:96 ../guestfs-release-notes.pod:100 ../guestfs-release-notes.pod:104 ../guestfs-release-notes.pod:108 ../guestfs-release-notes.pod:112 ../guestfs-release-notes.pod:117 ../guestfs-release-notes.pod:121 ../guestfs-release-notes.pod:125 ../guestfs-release-notes.pod:266 ../guestfs-release-notes.pod:270 ../guestfs-release-notes.pod:274 ../guestfs-release-notes.pod:278 ../guestfs-release-notes.pod:282 ../guestfs-release-notes.pod:286 ../guestfs-release-notes.pod:290 ../inspector/virt-inspector.pod:514 ../inspector/virt-inspector.pod:518 ../resize/virt-resize.pod:365 ../resize/virt-resize.pod:369 ../resize/virt-resize.pod:378 ../resize/virt-resize.pod:384 ../sparsify/virt-sparsify.pod:45 ../sparsify/virt-sparsify.pod:52 ../sparsify/virt-sparsify.pod:56 ../sparsify/virt-sparsify.pod:62 ../sparsify/virt-sparsify.pod:67 ../sparsify/virt-sparsify.pod:72 ../src/guestfs-actions.pod:638 ../src/guestfs-actions.pod:646 ../src/guestfs-actions.pod:653 ../src/guestfs-actions.pod:660 ../src/guestfs-actions.pod:2497 ../src/guestfs-actions.pod:2501 ../src/guestfs-actions.pod:2505 ../src/guestfs-actions.pod:2509 ../src/guestfs-actions.pod:2517 ../src/guestfs-actions.pod:2521 ../src/guestfs-actions.pod:2525 ../src/guestfs-actions.pod:2535 ../src/guestfs-actions.pod:2539 ../src/guestfs-actions.pod:2543 ../src/guestfs-actions.pod:2715 ../src/guestfs-actions.pod:2719 ../src/guestfs-actions.pod:2724 ../src/guestfs-actions.pod:2785 ../src/guestfs-actions.pod:2789 ../src/guestfs-actions.pod:2794 ../src/guestfs-actions.pod:3588 ../src/guestfs-actions.pod:3595 ../src/guestfs-actions.pod:3602 ../src/guestfs-actions.pod:4469 ../src/guestfs-actions.pod:4475 ../src/guestfs-actions.pod:4483 ../src/guestfs-actions.pod:4490 ../src/guestfs-actions.pod:4497 ../src/guestfs.pod:397 ../src/guestfs.pod:402 ../src/guestfs.pod:407 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:420 ../src/guestfs.pod:425 ../src/guestfs.pod:430 ../src/guestfs.pod:1268 ../src/guestfs.pod:1272 ../src/guestfs.pod:1276 ../src/guestfs.pod:1281 ../src/guestfs.pod:1289 ../src/guestfs.pod:1308 ../src/guestfs.pod:1316 ../src/guestfs.pod:1333 ../src/guestfs.pod:1338 ../src/guestfs.pod:1342 ../src/guestfs.pod:1484 ../src/guestfs.pod:1488 ../src/guestfs.pod:1492 ../src/guestfs.pod:1496 ../src/guestfs.pod:1500 ../src/guestfs.pod:1504 ../src/guestfs.pod:2138 ../src/guestfs.pod:2143 ../src/guestfs.pod:2147 ../src/guestfs.pod:2251 ../src/guestfs.pod:2256 ../src/guestfs.pod:2260 ../src/guestfs.pod:2270 ../src/guestfs.pod:2697 ../src/guestfs.pod:2702 ../src/guestfs.pod:2708 ../src/guestfs.pod:2716 ../src/guestfs.pod:3233 ../src/guestfs.pod:3239 ../src/guestfs.pod:3244 ../src/guestfs.pod:3250 ../src/guestfs.pod:3782 ../src/guestfs.pod:3787 ../src/guestfs.pod:3791 ../src/guestfs.pod:3795 ../src/guestfs.pod:3799 ../src/guestfs.pod:3813 ../src/guestfs.pod:3818 ../sysprep/virt-sysprep.pod:231 ../sysprep/virt-sysprep.pod:235 ../sysprep/virt-sysprep.pod:239 ../sysprep/virt-sysprep.pod:243 ../sysprep/virt-sysprep.pod:258 ../sysprep/virt-sysprep.pod:262 ../sysprep/virt-sysprep.pod:266 ../sysprep/virt-sysprep.pod:270 ../sysprep/virt-sysprep.pod:274 ../sysprep/virt-sysprep.pod:327 ../sysprep/virt-sysprep.pod:339 ../sysprep/virt-sysprep.pod:343 ../sysprep/virt-sysprep.pod:351 ../sysprep/virt-sysprep.pod:357 ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:711 ../tools/virt-win-reg.pl:717 ../tools/virt-win-reg.pl:723 msgid "*" msgstr "" @@ -766,7 +766,7 @@ msgid "successful exit, all partitions are aligned E<ge> 64K for best performanc msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:355 ../src/guestfs.pod:1737 +#: ../align/virt-alignment-scan.pod:355 ../src/guestfs.pod:1741 msgid "1" msgstr "" @@ -776,7 +776,7 @@ msgid "an error scanning the disk image or guest" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:361 ../src/guestfs.pod:1741 +#: ../align/virt-alignment-scan.pod:361 ../src/guestfs.pod:1745 msgid "2" msgstr "" @@ -788,7 +788,7 @@ msgid "" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:368 ../src/guestfs.pod:1745 +#: ../align/virt-alignment-scan.pod:368 ../src/guestfs.pod:1749 msgid "3" msgstr "" @@ -800,7 +800,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:375 ../appliance/libguestfs-make-fixed-appliance.pod:144 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:389 ../cat/virt-ls.pod:495 ../daemon/guestfsd.pod:92 ../df/virt-df.pod:253 ../edit/virt-edit.pod:368 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-faq.pod:796 ../examples/guestfs-performance.pod:429 ../examples/guestfs-recipes.pod:473 ../examples/guestfs-testing.pod:305 ../fish/guestfish.pod:1374 ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41 ../format/virt-format.pod:177 ../fuse/guestmount.pod:398 ../guestfs-release-notes.pod:1853 ../inspector/virt-inspector.pod:501 ../java/examples/guestfs-java.pod:45 ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:40 ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:340 ../resize/virt-resize.pod:702 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:299 ../src/guestfs.pod:4025 ../sysprep/virt-sysprep.pod:480 ../test-tool/libguestfs-test-tool.pod:106 ../tools/virt-list-filesystems.pl:197 ../tools/virt-list-partitions.pl:267 ../tools/virt-make-fs.pl:627 ../tools/virt-tar.pl:294 ../tools/virt-win-reg.pl:747 +#: ../align/virt-alignment-scan.pod:375 ../appliance/libguestfs-make-fixed-appliance.pod:144 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:389 ../cat/virt-ls.pod:495 ../daemon/guestfsd.pod:92 ../df/virt-df.pod:253 ../edit/virt-edit.pod:368 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-faq.pod:796 ../examples/guestfs-performance.pod:429 ../examples/guestfs-recipes.pod:496 ../examples/guestfs-testing.pod:305 ../fish/guestfish.pod:1374 ../fish/virt-copy-in.pod:50 ../fish/virt-copy-out.pod:39 ../fish/virt-tar-in.pod:47 ../fish/virt-tar-out.pod:41 ../format/virt-format.pod:177 ../fuse/guestmount.pod:398 ../guestfs-release-notes.pod:1853 ../inspector/virt-inspector.pod:501 ../java/examples/guestfs-java.pod:45 ../lua/examples/guestfs-lua.pod:78 ../ocaml/examples/guestfs-ocaml.pod:78 ../perl/examples/guestfs-perl.pod:40 ../python/examples/guestfs-python.pod:42 ../rescue/virt-rescue.pod:340 ../resize/virt-resize.pod:702 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:299 ../src/guestfs.pod:4031 ../sysprep/virt-sysprep.pod:480 ../test-tool/libguestfs-test-tool.pod:106 ../tools/virt-list-filesystems.pl:197 ../tools/virt-list-partitions.pl:267 ../tools/virt-make-fs.pl:627 ../tools/virt-tar.pl:294 ../tools/virt-win-reg.pl:747 msgid "SEE ALSO" msgstr "" @@ -822,7 +822,7 @@ msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:388 ../appliance/libguestfs-make-fixed-appliance.pod:157 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:511 ../daemon/guestfsd.pod:101 ../df/virt-df.pod:265 ../edit/virt-edit.pod:386 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:49 ../examples/guestfs-faq.pod:806 ../examples/guestfs-performance.pod:446 ../examples/guestfs-recipes.pod:490 ../examples/guestfs-testing.pod:316 ../fish/guestfish.pod:1406 ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55 ../format/virt-format.pod:191 ../fuse/guestmount.pod:413 ../guestfs-release-notes.pod:1868 ../inspector/virt-inspector.pod:524 ../java/examples/guestfs-java.pod:62 ../ocaml/examples/guestfs-ocaml.pod:95 ../perl/examples/guestfs-perl.pod:57 ../python/examples/guestfs-python.pod:58 ../rescue/virt-rescue.pod:353 ../resize/virt-resize.pod:729 ../ruby/examples/guestfs-ruby.pod:52 ../sparsify/virt-sparsify.pod:316 ../src/guestfs.pod:4081 ../sysprep/virt-sysprep.pod:501 ../test-tool/libguestfs-test-tool.pod:116 ../tools/virt-list-filesystems.pl:214 ../tools/virt-list-partitions.pl:283 ../tools/virt-make-fs.pl:646 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:766 +#: ../align/virt-alignment-scan.pod:388 ../appliance/libguestfs-make-fixed-appliance.pod:157 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:404 ../cat/virt-ls.pod:511 ../daemon/guestfsd.pod:101 ../df/virt-df.pod:265 ../edit/virt-edit.pod:386 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:50 ../examples/guestfs-faq.pod:806 ../examples/guestfs-performance.pod:446 ../examples/guestfs-recipes.pod:514 ../examples/guestfs-testing.pod:316 ../fish/guestfish.pod:1406 ../fish/virt-copy-in.pod:64 ../fish/virt-copy-out.pod:53 ../fish/virt-tar-in.pod:62 ../fish/virt-tar-out.pod:55 ../format/virt-format.pod:191 ../fuse/guestmount.pod:413 ../guestfs-release-notes.pod:1868 ../inspector/virt-inspector.pod:524 ../java/examples/guestfs-java.pod:63 ../lua/examples/guestfs-lua.pod:95 ../ocaml/examples/guestfs-ocaml.pod:96 ../perl/examples/guestfs-perl.pod:58 ../python/examples/guestfs-python.pod:59 ../rescue/virt-rescue.pod:353 ../resize/virt-resize.pod:729 ../ruby/examples/guestfs-ruby.pod:53 ../sparsify/virt-sparsify.pod:316 ../src/guestfs.pod:4088 ../sysprep/virt-sysprep.pod:501 ../test-tool/libguestfs-test-tool.pod:116 ../tools/virt-list-filesystems.pl:214 ../tools/virt-list-partitions.pl:283 ../tools/virt-make-fs.pl:646 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:766 msgid "COPYRIGHT" msgstr "" @@ -1078,7 +1078,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../appliance/libguestfs-make-fixed-appliance.pod:139 ../edit/virt-edit.pod:343 ../fish/guestfish.pod:1202 ../rescue/virt-rescue.pod:313 ../sparsify/virt-sparsify.pod:272 ../src/guestfs.pod:3945 ../test-tool/libguestfs-test-tool.pod:101 +#: ../appliance/libguestfs-make-fixed-appliance.pod:139 ../edit/virt-edit.pod:343 ../fish/guestfish.pod:1202 ../rescue/virt-rescue.pod:313 ../sparsify/virt-sparsify.pod:272 ../src/guestfs.pod:3951 ../test-tool/libguestfs-test-tool.pod:101 msgid "ENVIRONMENT VARIABLES" msgstr "" @@ -1097,17 +1097,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../appliance/libguestfs-make-fixed-appliance.pod:153 ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:45 ../examples/guestfs-faq.pod:802 ../examples/guestfs-performance.pod:442 ../examples/guestfs-recipes.pod:486 ../examples/guestfs-testing.pod:312 ../fish/guestfish.pod:1402 ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:409 ../inspector/virt-inspector.pod:510 ../java/examples/guestfs-java.pod:58 ../ocaml/examples/guestfs-ocaml.pod:91 ../perl/examples/guestfs-perl.pod:53 ../python/examples/guestfs-python.pod:54 ../ruby/examples/guestfs-ruby.pod:48 ../src/guestfs.pod:4077 ../sysprep/virt-sysprep.pod:495 ../test-tool/libguestfs-test-tool.pod:112 +#: ../appliance/libguestfs-make-fixed-appliance.pod:153 ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:46 ../examples/guestfs-faq.pod:802 ../examples/guestfs-performance.pod:442 ../examples/guestfs-recipes.pod:510 ../examples/guestfs-testing.pod:312 ../fish/guestfish.pod:1402 ../fish/virt-copy-in.pod:60 ../fish/virt-copy-out.pod:49 ../fish/virt-tar-in.pod:58 ../fish/virt-tar-out.pod:51 ../fuse/guestmount.pod:409 ../inspector/virt-inspector.pod:510 ../java/examples/guestfs-java.pod:59 ../lua/examples/guestfs-lua.pod:91 ../ocaml/examples/guestfs-ocaml.pod:92 ../perl/examples/guestfs-perl.pod:54 ../python/examples/guestfs-python.pod:55 ../ruby/examples/guestfs-ruby.pod:49 ../src/guestfs.pod:4084 ../sysprep/virt-sysprep.pod:495 ../test-tool/libguestfs-test-tool.pod:112 msgid "AUTHORS" msgstr "" #. type: textblock -#: ../appliance/libguestfs-make-fixed-appliance.pod:155 ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:47 ../examples/guestfs-faq.pod:804 ../examples/guestfs-performance.pod:444 ../examples/guestfs-recipes.pod:488 ../examples/guestfs-testing.pod:314 ../fish/guestfish.pod:1404 ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:411 ../java/examples/guestfs-java.pod:60 ../ocaml/examples/guestfs-ocaml.pod:93 ../perl/examples/guestfs-perl.pod:55 ../python/examples/guestfs-python.pod:56 ../ruby/examples/guestfs-ruby.pod:50 ../src/guestfs.pod:4079 ../test-tool/libguestfs-test-tool.pod:114 +#: ../appliance/libguestfs-make-fixed-appliance.pod:155 ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:48 ../examples/guestfs-faq.pod:804 ../examples/guestfs-performance.pod:444 ../examples/guestfs-recipes.pod:512 ../examples/guestfs-testing.pod:314 ../fish/guestfish.pod:1404 ../fish/virt-copy-in.pod:62 ../fish/virt-copy-out.pod:51 ../fish/virt-tar-in.pod:60 ../fish/virt-tar-out.pod:53 ../fuse/guestmount.pod:411 ../java/examples/guestfs-java.pod:61 ../lua/examples/guestfs-lua.pod:93 ../ocaml/examples/guestfs-ocaml.pod:94 ../perl/examples/guestfs-perl.pod:56 ../python/examples/guestfs-python.pod:57 ../ruby/examples/guestfs-ruby.pod:51 ../src/guestfs.pod:4086 ../test-tool/libguestfs-test-tool.pod:114 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)" msgstr "" #. type: textblock -#: ../appliance/libguestfs-make-fixed-appliance.pod:159 ../cat/virt-ls.pod:513 ../daemon/guestfsd.pod:103 ../df/virt-df.pod:267 ../edit/virt-edit.pod:388 ../examples/guestfs-recipes.pod:492 ../fish/guestfish.pod:1408 ../fuse/guestmount.pod:415 ../guestfs-release-notes.pod:1870 ../rescue/virt-rescue.pod:355 ../src/guestfs.pod:4083 ../test-tool/libguestfs-test-tool.pod:118 ../tools/virt-list-partitions.pl:285 +#: ../appliance/libguestfs-make-fixed-appliance.pod:159 ../cat/virt-ls.pod:513 ../daemon/guestfsd.pod:103 ../df/virt-df.pod:267 ../edit/virt-edit.pod:388 ../examples/guestfs-recipes.pod:516 ../fish/guestfish.pod:1408 ../fuse/guestmount.pod:415 ../guestfs-release-notes.pod:1870 ../rescue/virt-rescue.pod:355 ../src/guestfs.pod:4090 ../test-tool/libguestfs-test-tool.pod:118 ../tools/virt-list-partitions.pl:285 msgid "Copyright (C) 2009-2012 Red Hat Inc." msgstr "" @@ -1477,7 +1477,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-cat.pod:258 ../cat/virt-filesystems.pod:406 ../examples/guestfs-examples.pod:51 ../inspector/virt-inspector.pod:526 ../ocaml/examples/guestfs-ocaml.pod:97 ../python/examples/guestfs-python.pod:60 ../resize/virt-resize.pod:731 ../ruby/examples/guestfs-ruby.pod:54 ../tools/virt-make-fs.pl:648 +#: ../cat/virt-cat.pod:258 ../cat/virt-filesystems.pod:406 ../examples/guestfs-examples.pod:52 ../inspector/virt-inspector.pod:526 ../ocaml/examples/guestfs-ocaml.pod:98 ../python/examples/guestfs-python.pod:61 ../resize/virt-resize.pod:731 ../ruby/examples/guestfs-ruby.pod:55 ../tools/virt-make-fs.pl:648 msgid "Copyright (C) 2010-2012 Red Hat Inc." msgstr "" @@ -3860,7 +3860,7 @@ msgid "" msgstr "" #. type: =head2 -#: ../erlang/examples/guestfs-erlang.pod:23 +#: ../erlang/examples/guestfs-erlang.pod:23 ../lua/examples/guestfs-lua.pod:23 msgid "OPENING AND CLOSING THE HANDLE" msgstr "" @@ -3907,7 +3907,7 @@ msgid "" msgstr "" #. type: =head2 -#: ../erlang/examples/guestfs-erlang.pod:40 +#: ../erlang/examples/guestfs-erlang.pod:40 ../lua/examples/guestfs-lua.pod:48 msgid "FUNCTIONS WITH OPTIONAL ARGUMENTS" msgstr "" @@ -4017,27 +4017,27 @@ msgid "C<Arg> is the name of the unknown argument." msgstr "" #. type: =head1 -#: ../erlang/examples/guestfs-erlang.pod:89 ../examples/guestfs-examples.pod:25 ../java/examples/guestfs-java.pod:37 ../ocaml/examples/guestfs-ocaml.pod:70 ../perl/examples/guestfs-perl.pod:32 ../python/examples/guestfs-python.pod:34 ../ruby/examples/guestfs-ruby.pod:28 +#: ../erlang/examples/guestfs-erlang.pod:89 ../examples/guestfs-examples.pod:25 ../java/examples/guestfs-java.pod:37 ../lua/examples/guestfs-lua.pod:70 ../ocaml/examples/guestfs-ocaml.pod:70 ../perl/examples/guestfs-perl.pod:32 ../python/examples/guestfs-python.pod:34 ../ruby/examples/guestfs-ruby.pod:28 msgid "EXAMPLE 1: CREATE A DISK IMAGE" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:91 ../examples/guestfs-examples.pod:27 ../java/examples/guestfs-java.pod:39 ../ocaml/examples/guestfs-ocaml.pod:72 ../perl/examples/guestfs-perl.pod:34 ../python/examples/guestfs-python.pod:36 ../ruby/examples/guestfs-ruby.pod:30 +#: ../erlang/examples/guestfs-erlang.pod:91 ../examples/guestfs-examples.pod:27 ../java/examples/guestfs-java.pod:39 ../lua/examples/guestfs-lua.pod:72 ../ocaml/examples/guestfs-ocaml.pod:72 ../perl/examples/guestfs-perl.pod:34 ../python/examples/guestfs-python.pod:36 ../ruby/examples/guestfs-ruby.pod:30 msgid "@EXAMPLE1@" msgstr "" #. type: =head1 -#: ../erlang/examples/guestfs-erlang.pod:93 ../examples/guestfs-examples.pod:29 ../java/examples/guestfs-java.pod:41 ../ocaml/examples/guestfs-ocaml.pod:74 ../perl/examples/guestfs-perl.pod:36 ../python/examples/guestfs-python.pod:38 ../ruby/examples/guestfs-ruby.pod:32 +#: ../erlang/examples/guestfs-erlang.pod:93 ../examples/guestfs-examples.pod:29 ../java/examples/guestfs-java.pod:41 ../lua/examples/guestfs-lua.pod:74 ../ocaml/examples/guestfs-ocaml.pod:74 ../perl/examples/guestfs-perl.pod:36 ../python/examples/guestfs-python.pod:38 ../ruby/examples/guestfs-ruby.pod:32 msgid "EXAMPLE 2: INSPECT A VIRTUAL MACHINE DISK IMAGE" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:95 ../examples/guestfs-examples.pod:31 ../java/examples/guestfs-java.pod:43 ../ocaml/examples/guestfs-ocaml.pod:76 ../perl/examples/guestfs-perl.pod:38 ../python/examples/guestfs-python.pod:40 ../ruby/examples/guestfs-ruby.pod:34 +#: ../erlang/examples/guestfs-erlang.pod:95 ../examples/guestfs-examples.pod:31 ../java/examples/guestfs-java.pod:43 ../lua/examples/guestfs-lua.pod:76 ../ocaml/examples/guestfs-ocaml.pod:76 ../perl/examples/guestfs-perl.pod:38 ../python/examples/guestfs-python.pod:40 ../ruby/examples/guestfs-ruby.pod:34 msgid "@EXAMPLE2@" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:99 +#: ../erlang/examples/guestfs-erlang.pod:99 ../lua/examples/guestfs-lua.pod:80 msgid "" "L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-java(3)>, " "L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " @@ -4046,7 +4046,7 @@ msgid "" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:116 ../examples/guestfs-testing.pod:318 ../fish/virt-copy-in.pod:66 ../fish/virt-copy-out.pod:55 ../fish/virt-tar-in.pod:64 ../fish/virt-tar-out.pod:57 ../java/examples/guestfs-java.pod:64 ../perl/examples/guestfs-perl.pod:59 ../sparsify/virt-sparsify.pod:318 ../sysprep/virt-sysprep.pod:503 +#: ../erlang/examples/guestfs-erlang.pod:116 ../examples/guestfs-testing.pod:318 ../fish/virt-copy-in.pod:66 ../fish/virt-copy-out.pod:55 ../fish/virt-tar-in.pod:64 ../fish/virt-tar-out.pod:57 ../java/examples/guestfs-java.pod:65 ../perl/examples/guestfs-perl.pod:60 ../sparsify/virt-sparsify.pod:318 ../sysprep/virt-sysprep.pod:503 msgid "Copyright (C) 2011-2012 Red Hat Inc." msgstr "" @@ -4094,7 +4094,7 @@ msgstr "" #. type: textblock #: ../examples/guestfs-examples.pod:35 msgid "" -"L<guestfs(3)>, L<guestfs-erlang(3)>, L<guestfs-java(3)>, " +"L<guestfs(3)>, L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-lua(3)>, " "L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " "L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, L<http://libguestfs.org/>." msgstr "" @@ -4532,7 +4532,7 @@ msgid "DOWNLOADING, INSTALLING, COMPILING LIBGUESTFS" msgstr "" #. type: =end -#: ../examples/guestfs-faq.pod:217 ../examples/guestfs-faq.pod:222 ../examples/guestfs-faq.pod:504 ../examples/guestfs-faq.pod:509 ../examples/guestfs-faq.pod:630 ../examples/guestfs-faq.pod:635 ../guestfs-release-notes.pod:14 ../guestfs-release-notes.pod:21 ../src/guestfs.pod:2839 ../src/guestfs.pod:2844 +#: ../examples/guestfs-faq.pod:217 ../examples/guestfs-faq.pod:222 ../examples/guestfs-faq.pod:504 ../examples/guestfs-faq.pod:509 ../examples/guestfs-faq.pod:630 ../examples/guestfs-faq.pod:635 ../guestfs-release-notes.pod:14 ../guestfs-release-notes.pod:21 ../src/guestfs.pod:2843 ../src/guestfs.pod:2848 msgid "html" msgstr "" @@ -5713,7 +5713,7 @@ msgid "L<guestfish(1)>, L<guestfs(3)>, L<http://libguestfs.org/>." msgstr "" #. type: textblock -#: ../examples/guestfs-faq.pod:808 ../examples/guestfs-performance.pod:448 ../format/virt-format.pod:193 +#: ../examples/guestfs-faq.pod:808 ../examples/guestfs-performance.pod:448 ../format/virt-format.pod:193 ../lua/examples/guestfs-lua.pod:97 msgid "Copyright (C) 2012 Red Hat Inc." msgstr "" @@ -6009,7 +6009,7 @@ msgid "" msgstr "" #. type: =item -#: ../examples/guestfs-performance.pod:162 ../examples/guestfs-performance.pod:211 ../examples/guestfs-recipes.pod:288 ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:603 ../sparsify/virt-sparsify.pod:243 ../src/guestfs.pod:478 ../src/guestfs.pod:1349 ../src/guestfs.pod:1603 ../src/guestfs.pod:1850 ../src/guestfs.pod:3340 +#: ../examples/guestfs-performance.pod:162 ../examples/guestfs-performance.pod:211 ../examples/guestfs-recipes.pod:298 ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:603 ../sparsify/virt-sparsify.pod:243 ../src/guestfs.pod:478 ../src/guestfs.pod:1353 ../src/guestfs.pod:1607 ../src/guestfs.pod:1854 ../src/guestfs.pod:3344 msgid "1." msgstr "" @@ -6021,7 +6021,7 @@ msgid "" msgstr "" #. type: =item -#: ../examples/guestfs-performance.pod:168 ../examples/guestfs-performance.pod:218 ../examples/guestfs-recipes.pod:294 ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:250 ../src/guestfs.pod:484 ../src/guestfs.pod:1353 ../src/guestfs.pod:1607 ../src/guestfs.pod:1854 ../src/guestfs.pod:3365 +#: ../examples/guestfs-performance.pod:168 ../examples/guestfs-performance.pod:218 ../examples/guestfs-recipes.pod:304 ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:250 ../src/guestfs.pod:484 ../src/guestfs.pod:1357 ../src/guestfs.pod:1611 ../src/guestfs.pod:1858 ../src/guestfs.pod:3369 msgid "2." msgstr "" @@ -6036,7 +6036,7 @@ msgid "" msgstr "" #. type: =item -#: ../examples/guestfs-performance.pod:176 ../examples/guestfs-performance.pod:224 ../examples/guestfs-recipes.pod:300 ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:616 ../sparsify/virt-sparsify.pod:256 ../src/guestfs.pod:495 ../src/guestfs.pod:1357 ../src/guestfs.pod:1860 +#: ../examples/guestfs-performance.pod:176 ../examples/guestfs-performance.pod:224 ../examples/guestfs-recipes.pod:310 ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:616 ../sparsify/virt-sparsify.pod:256 ../src/guestfs.pod:495 ../src/guestfs.pod:1361 ../src/guestfs.pod:1864 msgid "3." msgstr "" @@ -6298,7 +6298,7 @@ msgid "Save the following script as C<time.stap>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:322 ../src/guestfs.pod:2787 +#: ../examples/guestfs-performance.pod:322 ../src/guestfs.pod:2791 #, no-wrap msgid "" " global last;\n" @@ -6306,7 +6306,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:324 ../src/guestfs.pod:2789 +#: ../examples/guestfs-performance.pod:324 ../src/guestfs.pod:2793 #, no-wrap msgid "" " function display_time () {\n" @@ -6319,7 +6319,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:331 ../src/guestfs.pod:2796 +#: ../examples/guestfs-performance.pod:331 ../src/guestfs.pod:2800 #, no-wrap msgid "" " printf (\"%d (+%d):\", now, delta);\n" @@ -6328,7 +6328,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:334 ../src/guestfs.pod:2799 +#: ../examples/guestfs-performance.pod:334 ../src/guestfs.pod:2803 #, no-wrap msgid "" " probe begin {\n" @@ -6339,7 +6339,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:339 ../src/guestfs.pod:2804 +#: ../examples/guestfs-performance.pod:339 ../src/guestfs.pod:2808 #, no-wrap msgid "" " /* Display all calls to static markers. */\n" @@ -6448,7 +6448,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-performance.pod:394 ../fish/guestfish.pod:998 ../src/guestfs.pod:1113 +#: ../examples/guestfs-performance.pod:394 ../fish/guestfish.pod:998 ../src/guestfs.pod:1117 #, no-wrap msgid "" " #!/bin/bash -\n" @@ -6778,19 +6778,40 @@ msgstr "" #. type: =head1 #: ../examples/guestfs-recipes.pod:104 -msgid "Dump raw filesystem content from inside a disk image or VM" +msgid "Diff two guests; compare a snapshot to the current version" msgstr "" #. type: textblock #: ../examples/guestfs-recipes.pod:106 msgid "" +"L<virt-ls(1)> provides a simple way to find the differences between two " +"guests (for example if they were originally cloned from the same source), or " +"between two snapshots from the same guest. See L<virt-ls(1)/DIFFERENCES IN " +"SNAPSHOTS AND BACKING FILES>." +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:111 +msgid "" +"There are also experimental patches on the mailing list for a \"virt-diff\" " +"tool." +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:114 +msgid "Dump raw filesystem content from inside a disk image or VM" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:116 +msgid "" "You can use the L<guestfish(1)> C<download> command to extract the raw " "filesystem content from any filesystem in a disk image or a VM (even one " "which is encrypted or buried inside an LV or RAID device):" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:110 +#: ../examples/guestfs-recipes.pod:120 #, no-wrap msgid "" " guestfish --ro -a disk.img run : download /dev/sda1 sda1.img\n" @@ -6798,7 +6819,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:112 +#: ../examples/guestfs-recipes.pod:122 #, no-wrap msgid "" " guestfish --ro -d Guest run : download /dev/vg_guest/lv_root lv.img\n" @@ -6806,60 +6827,60 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:114 +#: ../examples/guestfs-recipes.pod:124 msgid "To download to stdout, replace the filename with a C<-> character:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:116 +#: ../examples/guestfs-recipes.pod:126 #, no-wrap msgid "" -" guestfish --ro -a disk.img run : download /dev/sda1 - | hexdump -C\n" +" guestfish --ro -a disk.img run : download /dev/sda1 - | gzip > sda1.gz\n" "\n" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:118 +#: ../examples/guestfs-recipes.pod:128 msgid "To list the filesystems in a disk image, use L<virt-filesystems(1)>." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:120 +#: ../examples/guestfs-recipes.pod:130 msgid "See also L</Uploading raw filesystem content>." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:122 +#: ../examples/guestfs-recipes.pod:132 msgid "Edit grub configuration in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:124 +#: ../examples/guestfs-recipes.pod:134 msgid "You can use this to:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:130 +#: ../examples/guestfs-recipes.pod:140 msgid "Fix a virtual machine that does not boot." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:134 +#: ../examples/guestfs-recipes.pod:144 msgid "Change which kernel is used to boot the VM." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:138 +#: ../examples/guestfs-recipes.pod:148 msgid "Change kernel command line options." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:142 +#: ../examples/guestfs-recipes.pod:152 msgid "Use L<virt-edit(1)> to edit the grub configuration:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:144 +#: ../examples/guestfs-recipes.pod:154 #, no-wrap msgid "" " virt-edit -d BrokenGuest /boot/grub2/grub.cfg\n" @@ -6867,14 +6888,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:146 +#: ../examples/guestfs-recipes.pod:156 msgid "" "or for general tinkering inside an unbootable VM use L<virt-rescue(1)> like " "this:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:149 +#: ../examples/guestfs-recipes.pod:159 #, no-wrap msgid "" " virt-rescue -d BrokenGuest\n" @@ -6882,17 +6903,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:151 +#: ../examples/guestfs-recipes.pod:161 msgid "Export any directory from a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:153 +#: ../examples/guestfs-recipes.pod:163 msgid "To export C</home> from a VM into a local directory use L<virt-copy-out(1)>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:156 ../examples/guestfs-testing.pod:107 +#: ../examples/guestfs-recipes.pod:166 ../examples/guestfs-testing.pod:107 #, no-wrap msgid "" " virt-copy-out -d Guest /home .\n" @@ -6900,24 +6921,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:158 ../fish/guestfish-actions.pod:1699 ../fish/guestfish-actions.pod:2209 ../fish/guestfish-actions.pod:2801 ../src/guestfs-actions.pod:2781 ../src/guestfs-actions.pod:3584 ../src/guestfs-actions.pod:4465 ../src/guestfs.pod:2130 ../tools/virt-win-reg.pl:707 +#: ../examples/guestfs-recipes.pod:168 ../fish/guestfish-actions.pod:1699 ../fish/guestfish-actions.pod:2209 ../fish/guestfish-actions.pod:2801 ../src/guestfs-actions.pod:2781 ../src/guestfs-actions.pod:3584 ../src/guestfs-actions.pod:4465 ../src/guestfs.pod:2134 ../tools/virt-win-reg.pl:707 msgid "Notes:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:164 +#: ../examples/guestfs-recipes.pod:174 msgid "" "The final dot of the command is not a printing error. It means we want to " "copy out to the current directory." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:169 +#: ../examples/guestfs-recipes.pod:179 msgid "This creates a directory called C<home> under the current directory." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:173 +#: ../examples/guestfs-recipes.pod:183 msgid "" "If the guest is a Windows guest then you can use drive letters and " "backslashes, but you must prefix the path with C<win:> and quote it to " @@ -6925,7 +6946,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:177 +#: ../examples/guestfs-recipes.pod:187 #, no-wrap msgid "" " virt-copy-out -d WinGuest 'win:c:\\windows\\system32\\config' .\n" @@ -6933,12 +6954,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:179 +#: ../examples/guestfs-recipes.pod:189 msgid "To get the output as a compressed tarball, do:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:181 +#: ../examples/guestfs-recipes.pod:191 #, no-wrap msgid "" " virt-tar-out -d Guest /home - | gzip --best > home.tar.gz\n" @@ -6946,7 +6967,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:183 +#: ../examples/guestfs-recipes.pod:193 msgid "" "Although it sounds tempting, this is usually not a reliable way to get a " "backup from a running guest. See the entry in the FAQ: " @@ -6954,19 +6975,19 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:187 +#: ../examples/guestfs-recipes.pod:197 msgid "Find out which user is using the most space" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:189 +#: ../examples/guestfs-recipes.pod:199 msgid "" "This simple script examines a Linux guest to find out which user is using " "the most space in their home directory:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:192 +#: ../examples/guestfs-recipes.pod:202 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -6974,7 +6995,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:194 ../fish/guestfish.pod:1000 +#: ../examples/guestfs-recipes.pod:204 ../fish/guestfish.pod:1000 #, no-wrap msgid "" " set -e\n" @@ -6982,7 +7003,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:196 +#: ../examples/guestfs-recipes.pod:206 #, no-wrap msgid "" " vm=\"$1\"\n" @@ -6991,7 +7012,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:199 +#: ../examples/guestfs-recipes.pod:209 #, no-wrap msgid "" " eval $(guestfish --ro -d \"$vm\" -i --listen)\n" @@ -6999,7 +7020,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:201 +#: ../examples/guestfs-recipes.pod:211 #, no-wrap msgid "" " for d in $(guestfish --remote ls \"$dir\"); do\n" @@ -7011,7 +7032,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:207 ../fish/guestfish.pod:957 +#: ../examples/guestfs-recipes.pod:217 ../fish/guestfish.pod:957 #, no-wrap msgid "" " guestfish --remote exit\n" @@ -7019,41 +7040,41 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:209 +#: ../examples/guestfs-recipes.pod:219 msgid "Get DHCP address from a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:211 +#: ../examples/guestfs-recipes.pod:221 msgid "" "The link below explains the many different possible techniques for getting " "the last assigned DHCP address of a virtual machine." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:214 +#: ../examples/guestfs-recipes.pod:224 msgid "L<https://rwmj.wordpress.com/2011/03/31/tip-code-for-getting-dhcp-address-from-a-virtual-machine-disk-image/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:216 +#: ../examples/guestfs-recipes.pod:226 msgid "" "In the libguestfs source examples directory you will find the latest version " "of the C<virt-dhcp-address.c> program." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:219 +#: ../examples/guestfs-recipes.pod:229 msgid "Get the operating system product name string" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:221 +#: ../examples/guestfs-recipes.pod:231 msgid "Save the following script into a file called C<product-name.sh>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:223 +#: ../examples/guestfs-recipes.pod:233 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -7066,12 +7087,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:230 +#: ../examples/guestfs-recipes.pod:240 msgid "Make the script executable and run it on a named guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:232 +#: ../examples/guestfs-recipes.pod:242 #, no-wrap msgid "" " # product-name.sh RHEL60x64\n" @@ -7080,14 +7101,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:235 +#: ../examples/guestfs-recipes.pod:245 msgid "" "You can also use an XPath query on the L<virt-inspector(1)> XML using the " "C<xpath> command line tool or from your favourite programming language:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:239 +#: ../examples/guestfs-recipes.pod:249 #, no-wrap msgid "" " # virt-inspector RHEL60x64 > xml\n" @@ -7100,78 +7121,78 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:245 +#: ../examples/guestfs-recipes.pod:255 msgid "Get the default boot kernel for a Linux VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:247 +#: ../examples/guestfs-recipes.pod:257 msgid "" "The link below contains a program to print the default boot kernel for a " "Linux VM." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:250 +#: ../examples/guestfs-recipes.pod:260 msgid "L<https://rwmj.wordpress.com/2010/10/30/tip-use-augeas-to-get-the-default-boot-kernel-for-a-vm/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:252 +#: ../examples/guestfs-recipes.pod:262 msgid "" "It uses Augeas, and the technique is generally applicable for many different " "tasks, such as:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:259 +#: ../examples/guestfs-recipes.pod:269 msgid "listing the user accounts in the guest" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:263 +#: ../examples/guestfs-recipes.pod:273 msgid "what repositories is it configured to use" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:267 +#: ../examples/guestfs-recipes.pod:277 msgid "what NTP servers does it connect to" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:271 +#: ../examples/guestfs-recipes.pod:281 msgid "what were the boot messages last time it booted" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:275 +#: ../examples/guestfs-recipes.pod:285 msgid "listing who was logged in recently" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:279 +#: ../examples/guestfs-recipes.pod:289 msgid "L<http://augeas.net/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:281 +#: ../examples/guestfs-recipes.pod:291 msgid "Hanging guests" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:283 +#: ../examples/guestfs-recipes.pod:293 msgid "" "There are various ways to use libguestfs to find out why a guest is hanging " "or unresponsive:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:290 +#: ../examples/guestfs-recipes.pod:300 msgid "Read the log files using virt-cat:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:292 +#: ../examples/guestfs-recipes.pod:302 #, no-wrap msgid "" " virt-cat Guest /var/log/messages | less\n" @@ -7179,37 +7200,74 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:296 +#: ../examples/guestfs-recipes.pod:306 msgid "Read the Windows Event Log (Windows Vista or later only):" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:298 ../examples/guestfs-recipes.pod:400 +#: ../examples/guestfs-recipes.pod:308 ../examples/guestfs-recipes.pod:423 msgid "L<https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:302 +#: ../examples/guestfs-recipes.pod:312 msgid "Find out which files were last updated in a guest:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:304 +#: ../examples/guestfs-recipes.pod:314 msgid "L<https://rwmj.wordpress.com/2012/02/27/using-libguestfs-to-find-out-why-a-windows-guest-was-hanging/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:306 +#: ../examples/guestfs-recipes.pod:316 msgid "This might give you a clue as to what program is running." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:310 +#: ../examples/guestfs-recipes.pod:320 +msgid "Hex-dumping sectors from the guest" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:322 +msgid "Hex-dump the boot partition:" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-recipes.pod:324 +#, no-wrap +msgid "" +" guestfish --ro -a disk.img run : pread-device /dev/sda 0x200 0 |\n" +" hexdump -C\n" +"\n" +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:327 +msgid "Hex-editing sectors in the guest" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:329 +msgid "Hex-edit the first sector (boot partition):" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-recipes.pod:331 +#, no-wrap +msgid "" +" guestfish --rw -a disk.img run : hexedit /dev/sda 0x200\n" +"\n" +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:333 msgid "Install RPMs in a guest" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:312 +#: ../examples/guestfs-recipes.pod:335 msgid "" "The link below contains a method to install RPMs in a guest. In fact the " "RPMs are just uploaded to the guest along with a \"firstboot\" script that " @@ -7218,29 +7276,29 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:318 +#: ../examples/guestfs-recipes.pod:341 msgid "L<https://rwmj.wordpress.com/2010/12/01/tip-install-rpms-in-a-guest/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:320 +#: ../examples/guestfs-recipes.pod:343 msgid "" "Since libguestfs 1.20, L<virt-sysprep(1)> has an option for installing " "firstboot scripts in Linux guests." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:323 +#: ../examples/guestfs-recipes.pod:346 msgid "List applications installed in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:325 +#: ../examples/guestfs-recipes.pod:348 msgid "Save the following to a file C<list-apps.sh>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:327 +#: ../examples/guestfs-recipes.pod:350 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -7253,14 +7311,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:334 +#: ../examples/guestfs-recipes.pod:357 msgid "" "Make the file executable and then you can run it on any named virtual " "machine:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:337 +#: ../examples/guestfs-recipes.pod:360 #, no-wrap msgid "" " # list-apps.sh WinGuest\n" @@ -7296,7 +7354,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:367 +#: ../examples/guestfs-recipes.pod:390 msgid "" "If you want to run the script on disk images (instead of libvirt virtual " "machines), change C<-d \"$1\"> to C<-a \"$1\">. See also " @@ -7304,22 +7362,22 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:371 +#: ../examples/guestfs-recipes.pod:394 msgid "List files and directories in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:373 +#: ../examples/guestfs-recipes.pod:396 msgid "Use L<virt-ls(1)>." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:375 +#: ../examples/guestfs-recipes.pod:398 msgid "List services in a Windows VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:377 +#: ../examples/guestfs-recipes.pod:400 msgid "" "The link below contains a script that can be used to list out the services " "from a Windows VM, and whether those services run at boot time or are loaded " @@ -7327,44 +7385,44 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:381 +#: ../examples/guestfs-recipes.pod:404 msgid "L<https://rwmj.wordpress.com/2010/12/10/tip-list-services-in-a-windows-guest/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:383 +#: ../examples/guestfs-recipes.pod:406 msgid "Make a disk image sparse" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:385 +#: ../examples/guestfs-recipes.pod:408 msgid "Use L<virt-sparsify(1)>." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:387 +#: ../examples/guestfs-recipes.pod:410 msgid "Monitor disk usage over time" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:389 +#: ../examples/guestfs-recipes.pod:412 msgid "" "You can use L<virt-df(1)> to monitor disk usage of your guests over time. " "The link below contains a guide." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:392 +#: ../examples/guestfs-recipes.pod:415 msgid "L<http://virt-tools.org/learning/advanced-virt-df/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:394 +#: ../examples/guestfs-recipes.pod:417 msgid "Reading the Windows Event Log from Windows Vista (or later)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:396 +#: ../examples/guestfs-recipes.pod:419 msgid "" "L<guestfish(1)> plus the tools described in the link below can be used to " "read out the Windows Event Log from any virtual machine running Windows " @@ -7372,19 +7430,19 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:402 +#: ../examples/guestfs-recipes.pod:425 msgid "Remove root password (Linux)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:404 +#: ../examples/guestfs-recipes.pod:427 msgid "" "Using the L<virt-edit(1)> I<-e> option you can do simple replacements on " "files. One use is to remove the root password from a Linux guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:407 +#: ../examples/guestfs-recipes.pod:430 #, no-wrap msgid "" " virt-edit domname /etc/passwd -e 's/^root:.*?:/root::/'\n" @@ -7392,12 +7450,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:409 +#: ../examples/guestfs-recipes.pod:432 msgid "Remove Administrator password (Windows)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:411 +#: ../examples/guestfs-recipes.pod:434 msgid "" "The link below contains one technique for removing the Administrator " "password from a Windows VM, or to be more precise, it gives you a command " @@ -7405,17 +7463,17 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:416 +#: ../examples/guestfs-recipes.pod:439 msgid "L<https://mdbooth.wordpress.com/2010/10/18/resetting-a-windows-guests-administrator-password-with-guestfish/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:418 +#: ../examples/guestfs-recipes.pod:441 msgid "Sysprepping a virtual machine (Windows)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:420 +#: ../examples/guestfs-recipes.pod:443 msgid "" "It is possible to do a \"sysprep\" using libguestfs alone, although not " "straightforward. Currently there is code in the Aeolus Oz project which " @@ -7424,19 +7482,19 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:425 +#: ../examples/guestfs-recipes.pod:448 msgid "" "L<https://github.com/clalancette/oz> " "L<https://www.redhat.com/archives/virt-tools-list/2011-May/msg00019.html>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:428 +#: ../examples/guestfs-recipes.pod:451 msgid "Unpack a live CD" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:430 +#: ../examples/guestfs-recipes.pod:453 msgid "" "Linux live CDs often contain multiple layers of disk images wrapped like a " "Russian doll. You can use L<guestfish(1)> to look inside these multiple " @@ -7444,41 +7502,41 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:434 +#: ../examples/guestfs-recipes.pod:457 msgid "L<https://rwmj.wordpress.com/2009/07/15/unpack-the-russian-doll-of-a-f11-live-cd/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:436 +#: ../examples/guestfs-recipes.pod:459 msgid "Uploading and downloading files" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:438 +#: ../examples/guestfs-recipes.pod:461 msgid "" "The link below contains general tips on uploading (copying in) and " "downloading (copying out) files from VMs." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:441 +#: ../examples/guestfs-recipes.pod:464 msgid "L<https://rwmj.wordpress.com/2010/12/02/tip-uploading-and-downloading/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:443 +#: ../examples/guestfs-recipes.pod:466 msgid "Uploading raw filesystem content" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:445 +#: ../examples/guestfs-recipes.pod:468 msgid "" "You can use L<guestfish(1)> to upload whole filesystems into a VM, even into " "a filesystem which is encrypted or buried inside an LV or RAID device:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:449 +#: ../examples/guestfs-recipes.pod:472 #, no-wrap msgid "" " guestfish --rw -a disk.img run : upload sda1.img /dev/sda1\n" @@ -7486,7 +7544,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:451 +#: ../examples/guestfs-recipes.pod:474 #, no-wrap msgid "" " guestfish --rw -d Guest run : upload lv.img /dev/vg_guest/lv_root\n" @@ -7494,7 +7552,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:453 +#: ../examples/guestfs-recipes.pod:476 msgid "" "One common problem is that the filesystem isn't the right size for the " "target. If it is too large, there's not much you can do with libguestfs - " @@ -7504,7 +7562,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:459 +#: ../examples/guestfs-recipes.pod:482 #, no-wrap msgid "" " guestfish --rw -d Guest run : \\\n" @@ -7514,34 +7572,34 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:463 +#: ../examples/guestfs-recipes.pod:486 msgid "(or use C<ntfsresize> if the filesystem is NTFS)." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:465 +#: ../examples/guestfs-recipes.pod:488 msgid "Use libguestfs tools on VMware ESX guests" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:467 +#: ../examples/guestfs-recipes.pod:490 msgid "" "The link below explains how to use libguestfs, L<guestfish(1)> and the virt " "tools on any VMware ESX guests, by first sharing the VMware VMFS over sshfs." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:471 +#: ../examples/guestfs-recipes.pod:494 msgid "L<https://rwmj.wordpress.com/2011/05/10/tip-use-libguestfs-on-vmware-esx-guests/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:475 +#: ../examples/guestfs-recipes.pod:498 msgid "" "L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, " -"L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-ocaml(3)>, " -"L<guestfs-perl(3)>, L<guestfs-python(3)>, L<guestfs-ruby(3)>, " -"L<http://libguestfs.org/>." +"L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-lua(3)>, " +"L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " +"L<guestfs-ruby(3)>, L<http://libguestfs.org/>." msgstr "" #. type: textblock @@ -7598,7 +7656,7 @@ msgid "Run libguestfs-test-tool" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:32 ../examples/guestfs-testing.pod:145 ../src/guestfs.pod:3797 +#: ../examples/guestfs-testing.pod:32 ../examples/guestfs-testing.pod:145 ../src/guestfs.pod:3803 msgid "Run:" msgstr "" @@ -7672,7 +7730,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:68 ../examples/guestfs-testing.pod:175 ../examples/guestfs-testing.pod:188 ../examples/guestfs-testing.pod:248 ../src/guestfs.pod:3442 +#: ../examples/guestfs-testing.pod:68 ../examples/guestfs-testing.pod:175 ../examples/guestfs-testing.pod:188 ../examples/guestfs-testing.pod:248 ../lua/examples/guestfs-lua.pod:56 ../src/guestfs.pod:3446 msgid "or:" msgstr "" @@ -8543,7 +8601,7 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish-actions.pod:152 ../src/guestfs-actions.pod:218 ../src/guestfs.pod:3660 +#: ../fish/guestfish-actions.pod:152 ../src/guestfs-actions.pod:218 ../src/guestfs.pod:3664 msgid "C<format>" msgstr "" @@ -11485,7 +11543,7 @@ msgid "You must call L</launch> before using this command." msgstr "" #. type: textblock -#: ../fish/guestfish-actions.pod:1572 ../src/guestfs-actions.pod:2587 ../src/guestfs.pod:1977 +#: ../fish/guestfish-actions.pod:1572 ../src/guestfs-actions.pod:2587 ../src/guestfs.pod:1981 msgid "" "This is mainly useful as a negative test. If this returns true, it doesn't " "mean that a particular filesystem can be mounted, since filesystems can fail " @@ -20061,7 +20119,7 @@ msgid "Possible attach methods are:" msgstr "" #. type: =item -#: ../fish/guestfish-actions.pod:5647 ../src/guestfs-actions.pod:9096 ../src/guestfs.pod:3620 +#: ../fish/guestfish-actions.pod:5647 ../src/guestfs-actions.pod:9096 ../src/guestfs.pod:3624 msgid "C<appliance>" msgstr "" @@ -24459,7 +24517,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../fish/guestfish.pod:135 ../src/guestfs.pod:2828 +#: ../fish/guestfish.pod:135 ../src/guestfs.pod:2832 #, no-wrap msgid "" " guestfish -N fs\n" @@ -26745,7 +26803,7 @@ msgid "COMMANDS" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1195 ../src/guestfs.pod:1955 +#: ../fish/guestfish.pod:1195 ../src/guestfs.pod:1959 msgid "__ACTIONS__" msgstr "" @@ -26769,17 +26827,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1211 ../src/guestfs.pod:3949 +#: ../fish/guestfish.pod:1211 ../src/guestfs.pod:3955 msgid "FEBOOTSTRAP_KERNEL" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1213 ../src/guestfs.pod:3951 +#: ../fish/guestfish.pod:1213 ../src/guestfs.pod:3957 msgid "FEBOOTSTRAP_MODULES" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1215 ../src/guestfs.pod:3953 +#: ../fish/guestfish.pod:1215 ../src/guestfs.pod:3959 msgid "" "These two environment variables allow the kernel that libguestfs uses in the " "appliance to be selected. If C<$FEBOOTSTRAP_KERNEL> is not set, then the " @@ -26847,17 +26905,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1247 ../src/guestfs.pod:3959 +#: ../fish/guestfish.pod:1247 ../src/guestfs.pod:3965 msgid "LIBGUESTFS_APPEND" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1249 ../src/guestfs.pod:3961 +#: ../fish/guestfish.pod:1249 ../src/guestfs.pod:3967 msgid "Pass additional options to the guest kernel." msgstr "" #. type: =item -#: ../fish/guestfish.pod:1251 ../src/guestfs.pod:3963 +#: ../fish/guestfish.pod:1251 ../src/guestfs.pod:3969 msgid "LIBGUESTFS_ATTACH_METHOD" msgstr "" @@ -26869,12 +26927,12 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1256 ../src/guestfs.pod:3968 +#: ../fish/guestfish.pod:1256 ../src/guestfs.pod:3974 msgid "LIBGUESTFS_CACHEDIR" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1258 ../src/guestfs.pod:3970 +#: ../fish/guestfish.pod:1258 ../src/guestfs.pod:3976 msgid "" "The location where libguestfs will cache its appliance, when using a " "supermin appliance. The appliance is cached and shared between all handles " @@ -26882,7 +26940,7 @@ msgid "" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1262 ../src/guestfs.pod:3974 +#: ../fish/guestfish.pod:1262 ../src/guestfs.pod:3980 msgid "" "If C<LIBGUESTFS_CACHEDIR> is not set, then C<TMPDIR> is used. If C<TMPDIR> " "is not set, then C</var/tmp> is used." @@ -26894,7 +26952,7 @@ msgid "See also L</LIBGUESTFS_TMPDIR>, L</set-cachedir>." msgstr "" #. type: =item -#: ../fish/guestfish.pod:1267 ../src/guestfs.pod:3979 +#: ../fish/guestfish.pod:1267 ../src/guestfs.pod:3985 msgid "LIBGUESTFS_DEBUG" msgstr "" @@ -26906,17 +26964,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1272 ../src/guestfs.pod:3984 +#: ../fish/guestfish.pod:1272 ../src/guestfs.pod:3990 msgid "LIBGUESTFS_MEMSIZE" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1274 ../src/guestfs.pod:3986 +#: ../fish/guestfish.pod:1274 ../src/guestfs.pod:3992 msgid "Set the memory allocated to the qemu process, in megabytes. For example:" msgstr "" #. type: verbatim -#: ../fish/guestfish.pod:1277 ../src/guestfs.pod:3989 +#: ../fish/guestfish.pod:1277 ../src/guestfs.pod:3995 #, no-wrap msgid "" " LIBGUESTFS_MEMSIZE=700\n" @@ -26924,7 +26982,7 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1279 ../src/guestfs.pod:3991 +#: ../fish/guestfish.pod:1279 ../src/guestfs.pod:3997 msgid "LIBGUESTFS_PATH" msgstr "" @@ -26936,31 +26994,31 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1284 ../src/guestfs.pod:3996 +#: ../fish/guestfish.pod:1284 ../src/guestfs.pod:4002 msgid "LIBGUESTFS_QEMU" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1286 ../src/guestfs.pod:3998 +#: ../fish/guestfish.pod:1286 ../src/guestfs.pod:4004 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: =item -#: ../fish/guestfish.pod:1290 ../src/guestfs.pod:4004 +#: ../fish/guestfish.pod:1290 ../src/guestfs.pod:4010 msgid "LIBGUESTFS_TMPDIR" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1292 ../src/guestfs.pod:4006 +#: ../fish/guestfish.pod:1292 ../src/guestfs.pod:4012 msgid "" "The location where libguestfs will store temporary files used by each " "handle." msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1295 ../src/guestfs.pod:4009 +#: ../fish/guestfish.pod:1295 ../src/guestfs.pod:4015 msgid "" "If C<LIBGUESTFS_TMPDIR> is not set, then C<TMPDIR> is used. If C<TMPDIR> is " "not set, then C</tmp> is used." @@ -26972,7 +27030,7 @@ msgid "See also L</LIBGUESTFS_CACHEDIR>, L</set-tmpdir>." msgstr "" #. type: =item -#: ../fish/guestfish.pod:1300 ../src/guestfs.pod:4014 +#: ../fish/guestfish.pod:1300 ../src/guestfs.pod:4020 msgid "LIBGUESTFS_TRACE" msgstr "" @@ -26994,12 +27052,12 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1309 ../sparsify/virt-sparsify.pod:276 ../src/guestfs.pod:4019 +#: ../fish/guestfish.pod:1309 ../sparsify/virt-sparsify.pod:276 ../src/guestfs.pod:4025 msgid "TMPDIR" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1311 ../src/guestfs.pod:4021 +#: ../fish/guestfish.pod:1311 ../src/guestfs.pod:4027 msgid "See L</LIBGUESTFS_CACHEDIR>, L</LIBGUESTFS_TMPDIR>." msgstr "" @@ -28944,7 +29002,7 @@ msgid "Code for temporarily ignoring/disabling errors now looks like this:" msgstr "" #. type: verbatim -#: ../guestfs-release-notes.pod:370 ../src/guestfs.pod:1920 +#: ../guestfs-release-notes.pod:370 ../src/guestfs.pod:1924 #, no-wrap msgid "" " guestfs_push_error_handler (g, NULL, NULL);\n" @@ -33530,9 +33588,151 @@ msgstr "" #: ../java/examples/guestfs-java.pod:47 msgid "" "L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-erlang(3)>, " -"L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " -"L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, L<http://libguestfs.org/>, " -"L<http://caml.inria.fr/>." +"L<guestfs-lua(3)>, L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, " +"L<guestfs-python(3)>, L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, " +"L<http://libguestfs.org/>, L<http://caml.inria.fr/>." +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:5 +msgid "guestfs-lua - How to use libguestfs from Lua" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:9 +#, no-wrap +msgid "" +" require \"guestfs\"\n" +" g = Guestfs.create ()\n" +" g:add_drive (\"test.img\", { format = \"raw\", readonly = \"true\" })\n" +" g:launch ()\n" +" devices = g:list_devices ()\n" +" g:close ()\n" +"\n" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:18 +msgid "" +"This manual page documents how to call libguestfs from the Lua programming " +"language. This page just documents the differences from the C API and gives " +"some examples. If you are not familiar with using libguestfs, you also need " +"to read L<guestfs(3)>." +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:25 +msgid "To create a new handle, call:" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:27 +#, no-wrap +msgid "" +" g = Guestfs.create ()\n" +"\n" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:29 +msgid "You can also use the optional arguments:" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:31 +#, no-wrap +msgid "" +" g = Guestfs.create { environment = 0, close_on_exit = 0 }\n" +"\n" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:33 +msgid "" +"to set the flags C<GUESTFS_CREATE_NO_ENVIRONMENT> and/or " +"C<GUESTFS_CREATE_NO_CLOSE_ON_EXIT>." +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:36 +msgid "" +"The handle will be closed by the garbage collector, but you can also close " +"it explicitly by doing:" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:39 +#, no-wrap +msgid "" +" g:close ()\n" +"\n" +msgstr "" + +#. type: =head2 +#: ../lua/examples/guestfs-lua.pod:41 +msgid "CALLING METHODS" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:43 +msgid "" +"Use the ordinary Lua convention for calling methods on the handle. For " +"example:" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:46 +#, no-wrap +msgid "" +" g:set_verbose (true)\n" +"\n" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:50 +msgid "" +"For functions that take optional arguments, the first arguments are the " +"non-optional ones. The optional final argument is a table supplying the " +"optional arguments." +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:54 +#, no-wrap +msgid "" +" g:add_drive (\"test.img\")\n" +"\n" +msgstr "" + +#. type: verbatim +#: ../lua/examples/guestfs-lua.pod:58 +#, no-wrap +msgid "" +" g:add_drive (\"test.img\", { format = \"raw\", readonly = \"true\" })\n" +"\n" +msgstr "" + +#. type: =head2 +#: ../lua/examples/guestfs-lua.pod:60 +msgid "64 BIT VALUES" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:62 +msgid "" +"Currently 64 bit values must be passed as strings, and are returned as " +"strings. This is because 32 bit Lua cannot handle 64 bit integers " +"properly. We hope to come up with a better solution later." +msgstr "" + +#. type: =head2 +#: ../lua/examples/guestfs-lua.pod:66 ../perl/examples/guestfs-perl.pod:27 +msgid "ERRORS" +msgstr "" + +#. type: textblock +#: ../lua/examples/guestfs-lua.pod:68 +msgid "Errors are converted into exceptions. Use C<pcall> to catch these." msgstr "" #. type: textblock @@ -33675,9 +33875,9 @@ msgstr "" #: ../ocaml/examples/guestfs-ocaml.pod:80 msgid "" "L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-erlang(3)>, " -"L<guestfs-java(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " -"L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, L<http://libguestfs.org/>, " -"L<http://caml.inria.fr/>." +"L<guestfs-java(3)>, L<guestfs-lua(3)>, L<guestfs-perl(3)>, " +"L<guestfs-python(3)>, L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, " +"L<http://libguestfs.org/>, L<http://caml.inria.fr/>." msgstr "" #. type: textblock @@ -33716,11 +33916,6 @@ msgid "" "to read L<guestfs(3)>. To read the full Perl API, see L<Sys::Guestfs(3)>." msgstr "" -#. type: =head2 -#: ../perl/examples/guestfs-perl.pod:27 -msgid "ERRORS" -msgstr "" - #. type: textblock #: ../perl/examples/guestfs-perl.pod:29 msgid "" @@ -33732,9 +33927,9 @@ msgstr "" #: ../perl/examples/guestfs-perl.pod:42 msgid "" "L<Sys::Guestfs(3)>, L<guestfs(3)>, L<guestfs-examples(3)>, " -"L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-ocaml(3)>, " -"L<guestfs-python(3)>, L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, " -"L<http://libguestfs.org/>." +"L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-lua(3)>, " +"L<guestfs-ocaml(3)>, L<guestfs-python(3)>, L<guestfs-recipes(1)>, " +"L<guestfs-ruby(3)>, L<http://libguestfs.org/>." msgstr "" #. type: textblock @@ -33793,8 +33988,9 @@ msgstr "" #: ../python/examples/guestfs-python.pod:44 msgid "" "L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-erlang(3)>, " -"L<guestfs-java(3)>, L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, " -"L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, L<http://libguestfs.org/>." +"L<guestfs-java(3)>, L<guestfs-lua(3)>, L<guestfs-ocaml(3)>, " +"L<guestfs-perl(3)>, L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, " +"L<http://libguestfs.org/>." msgstr "" #. type: textblock @@ -35654,8 +35850,9 @@ msgstr "" #: ../ruby/examples/guestfs-ruby.pod:38 msgid "" "L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-erlang(3)>, " -"L<guestfs-java(3)>, L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, " -"L<guestfs-python(3)>, L<guestfs-recipes(1)>, L<http://libguestfs.org/>." +"L<guestfs-java(3)>, L<guestfs-lua(3)>, L<guestfs-ocaml(3)>, " +"L<guestfs-perl(3)>, L<guestfs-python(3)>, L<guestfs-recipes(1)>, " +"L<http://libguestfs.org/>." msgstr "" #. type: textblock @@ -51133,83 +51330,93 @@ msgstr "" #. type: =item #: ../src/guestfs.pod:883 -msgid "B<OCaml>" +msgid "B<Lua>" msgstr "" #. type: textblock #: ../src/guestfs.pod:885 -msgid "See L<guestfs-ocaml(3)>." +msgid "See L<guestfs-lua(3)>." msgstr "" #. type: =item #: ../src/guestfs.pod:887 -msgid "B<Perl>" +msgid "B<OCaml>" msgstr "" #. type: textblock #: ../src/guestfs.pod:889 -msgid "See L<guestfs-perl(3)> and L<Sys::Guestfs(3)>." +msgid "See L<guestfs-ocaml(3)>." msgstr "" #. type: =item #: ../src/guestfs.pod:891 -msgid "B<PHP>" +msgid "B<Perl>" msgstr "" #. type: textblock #: ../src/guestfs.pod:893 +msgid "See L<guestfs-perl(3)> and L<Sys::Guestfs(3)>." +msgstr "" + +#. type: =item +#: ../src/guestfs.pod:895 +msgid "B<PHP>" +msgstr "" + +#. type: textblock +#: ../src/guestfs.pod:897 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:896 +#: ../src/guestfs.pod:900 msgid "The PHP binding only works correctly on 64 bit machines." msgstr "" #. type: =item -#: ../src/guestfs.pod:898 +#: ../src/guestfs.pod:902 msgid "B<Python>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:900 +#: ../src/guestfs.pod:904 msgid "See L<guestfs-python(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:902 +#: ../src/guestfs.pod:906 msgid "B<Ruby>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:904 +#: ../src/guestfs.pod:908 msgid "See L<guestfs-ruby(3)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:906 +#: ../src/guestfs.pod:910 msgid "For JRuby, use the Java bindings." msgstr "" #. type: =item -#: ../src/guestfs.pod:908 +#: ../src/guestfs.pod:912 msgid "B<shell scripts>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:910 +#: ../src/guestfs.pod:914 msgid "See L<guestfish(1)>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:914 +#: ../src/guestfs.pod:918 msgid "LIBGUESTFS GOTCHAS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:916 +#: ../src/guestfs.pod:920 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 " @@ -51217,7 +51424,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:920 +#: ../src/guestfs.pod:924 msgid "" "Since we developed libguestfs and the associated tools, there are several " "things we would have designed differently, but are now stuck with for " @@ -51226,19 +51433,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:928 +#: ../src/guestfs.pod:932 msgid "Autosync / forgetting to sync." msgstr "" #. type: textblock -#: ../src/guestfs.pod:930 +#: ../src/guestfs.pod:934 msgid "" "I<Update:> Autosync is enabled by default for all API users starting from " "libguestfs 1.5.24. This section only applies to older versions." msgstr "" #. type: textblock -#: ../src/guestfs.pod:933 +#: ../src/guestfs.pod:937 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 " @@ -51246,7 +51453,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:937 +#: ../src/guestfs.pod:941 #, no-wrap msgid "" " guestfs_set_autosync (g, 1);\n" @@ -51254,7 +51461,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:939 +#: ../src/guestfs.pod:943 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> " @@ -51262,7 +51469,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:943 +#: ../src/guestfs.pod:947 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 " @@ -51270,7 +51477,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:947 +#: ../src/guestfs.pod:951 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 " @@ -51278,19 +51485,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:951 +#: ../src/guestfs.pod:955 msgid "Mount option C<-o sync> should not be the default." msgstr "" #. type: textblock -#: ../src/guestfs.pod:953 +#: ../src/guestfs.pod:957 msgid "" "I<Update:> L</guestfs_mount> no longer adds any options starting from " "libguestfs 1.13.16. This section only applies to older versions." msgstr "" #. type: textblock -#: ../src/guestfs.pod:956 +#: ../src/guestfs.pod:960 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 " @@ -51298,31 +51505,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:960 +#: ../src/guestfs.pod:964 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:963 +#: ../src/guestfs.pod:967 msgid "Read-only should be the default." msgstr "" #. type: textblock -#: ../src/guestfs.pod:965 +#: ../src/guestfs.pod:969 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:968 +#: ../src/guestfs.pod:972 msgid "This would reduce the potential to corrupt live VM images." msgstr "" #. type: textblock -#: ../src/guestfs.pod:970 +#: ../src/guestfs.pod:974 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 " @@ -51330,12 +51537,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:974 +#: ../src/guestfs.pod:978 msgid "guestfish command line is hard to use." msgstr "" #. type: textblock -#: ../src/guestfs.pod:976 +#: ../src/guestfs.pod:980 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 " @@ -51345,12 +51552,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:983 +#: ../src/guestfs.pod:987 msgid "guestfish megabyte modifiers don't work right on all commands" msgstr "" #. type: textblock -#: ../src/guestfs.pod:985 +#: ../src/guestfs.pod:989 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 " @@ -51360,12 +51567,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:992 +#: ../src/guestfs.pod:996 msgid "The most common is L</guestfs_lvcreate>. The guestfish command:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:994 +#: ../src/guestfs.pod:998 #, no-wrap msgid "" " lvcreate LV VG 100M\n" @@ -51373,7 +51580,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:996 +#: ../src/guestfs.pod:1000 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 " @@ -51382,19 +51589,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1001 +#: ../src/guestfs.pod:1005 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:1004 +#: ../src/guestfs.pod:1008 msgid "Ambiguity between devices and paths" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1006 +#: ../src/guestfs.pod:1010 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 " @@ -51402,7 +51609,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1011 +#: ../src/guestfs.pod:1015 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>. " @@ -51411,7 +51618,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1017 +#: ../src/guestfs.pod:1021 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 " @@ -51421,7 +51628,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1023 +#: ../src/guestfs.pod:1027 #, no-wrap msgid "" " type path = Path of string | Device of int | Partition of int * int\n" @@ -51429,12 +51636,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1025 +#: ../src/guestfs.pod:1029 msgid "which would allow you to pass arguments like:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1027 +#: ../src/guestfs.pod:1031 #, no-wrap msgid "" " Path \"/foo/bar\"\n" @@ -51445,26 +51652,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1032 +#: ../src/guestfs.pod:1036 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:1037 +#: ../src/guestfs.pod:1041 msgid "KEYS AND PASSPHRASES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1039 +#: ../src/guestfs.pod:1043 msgid "" "Certain libguestfs calls take a parameter that contains sensitive key " "material, passed in as a C string." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1042 +#: ../src/guestfs.pod:1046 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 " @@ -51473,7 +51680,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1047 +#: ../src/guestfs.pod:1051 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, " @@ -51481,19 +51688,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1052 +#: ../src/guestfs.pod:1056 msgid "MULTIPLE HANDLES AND MULTIPLE THREADS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1054 +#: ../src/guestfs.pod:1058 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:1057 +#: ../src/guestfs.pod:1061 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 " @@ -51501,33 +51708,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1061 +#: ../src/guestfs.pod:1065 msgid "" "See the graphical program guestfs-browser for one possible architecture for " "multithreaded programs using libvirt and libguestfs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1064 +#: ../src/guestfs.pod:1068 msgid "PATH" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1066 +#: ../src/guestfs.pod:1070 msgid "" "Libguestfs needs a supermin appliance, which it finds by looking along an " "internal path." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1069 +#: ../src/guestfs.pod:1073 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:1072 +#: ../src/guestfs.pod:1076 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 " @@ -51538,12 +51745,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1079 +#: ../src/guestfs.pod:1083 msgid "QEMU WRAPPERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1081 +#: ../src/guestfs.pod:1085 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 " @@ -51551,7 +51758,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1085 +#: ../src/guestfs.pod:1089 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 " @@ -51560,14 +51767,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1090 +#: ../src/guestfs.pod:1094 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:1093 +#: ../src/guestfs.pod:1097 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -51578,7 +51785,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1097 +#: ../src/guestfs.pod:1101 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 " @@ -51586,7 +51793,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1101 +#: ../src/guestfs.pod:1105 #, no-wrap msgid "" " LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n" @@ -51594,14 +51801,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1103 +#: ../src/guestfs.pod:1107 msgid "" "Note that libguestfs also calls qemu with the -help and -version options in " "order to determine features." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1106 +#: ../src/guestfs.pod:1110 msgid "" "Wrappers can also be used to edit the options passed to qemu. In the " "following example, the C<-machine ...> option (C<-machine> and the following " @@ -51611,7 +51818,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1115 +#: ../src/guestfs.pod:1119 #, no-wrap msgid "" " i=0\n" @@ -51629,7 +51836,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1127 +#: ../src/guestfs.pod:1131 #, no-wrap msgid "" " exec qemu-kvm -machine pc,accel=tcg \"${args[@]}\"\n" @@ -51637,19 +51844,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1129 +#: ../src/guestfs.pod:1133 msgid "ATTACHING TO RUNNING DAEMONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1131 +#: ../src/guestfs.pod:1135 msgid "" "I<Note (1):> This is B<highly experimental> and has a tendency to eat " "babies. Use with caution." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1134 +#: ../src/guestfs.pod:1138 msgid "" "I<Note (2):> This section explains how to attach to a running daemon from a " "low level perspective. For most users, simply using virt tools such as " @@ -51657,12 +51864,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1138 +#: ../src/guestfs.pod:1142 msgid "Using guestfs_set_attach_method" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1140 +#: ../src/guestfs.pod:1144 msgid "" "By calling L</guestfs_set_attach_method> you can change how the library " "connects to the C<guestfsd> daemon in L</guestfs_launch> (read " @@ -51670,7 +51877,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1144 +#: ../src/guestfs.pod:1148 msgid "" "The normal attach method is C<appliance>, where a small appliance is created " "containing the daemon, and then the library connects to this. C<libvirt> or " @@ -51678,7 +51885,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1149 +#: ../src/guestfs.pod:1153 msgid "" "Setting attach method to C<unix:I<path>> (where I<path> is the path of a " "Unix domain socket) causes L</guestfs_launch> to connect to an existing " @@ -51686,7 +51893,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1153 +#: ../src/guestfs.pod:1157 msgid "" "The normal use for this is to connect to a running virtual machine that " "contains a C<guestfsd> daemon, and send commands so you can read and write " @@ -51694,12 +51901,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1157 +#: ../src/guestfs.pod:1161 msgid "Using guestfs_add_domain with live flag" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1159 +#: ../src/guestfs.pod:1163 msgid "" "L</guestfs_add_domain> provides some help for getting the correct attach " "method. If you pass the C<live> option to this function, then (if the " @@ -51708,7 +51915,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1165 +#: ../src/guestfs.pod:1169 #, no-wrap msgid "" " <domain>\n" @@ -51726,14 +51933,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1177 +#: ../src/guestfs.pod:1181 msgid "" "L</guestfs_add_domain> extracts C</path/to/socket> and sets the attach " "method to C<unix:/path/to/socket>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1180 +#: ../src/guestfs.pod:1184 msgid "" "Some of the libguestfs tools (including guestfish) support a I<--live> " "option which is passed through to L</guestfs_add_domain> thus allowing you " @@ -51741,19 +51948,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1184 +#: ../src/guestfs.pod:1188 msgid "" "The virtual machine needs to have been set up beforehand so that it has the " "virtio-serial channel and so that guestfsd is running inside it." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1188 +#: ../src/guestfs.pod:1192 msgid "ABI GUARANTEE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1190 +#: ../src/guestfs.pod:1194 msgid "" "We guarantee the libguestfs ABI (binary interface), for public, high-level " "actions as outlined in this section. Although we will deprecate some " @@ -51763,12 +51970,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1196 +#: ../src/guestfs.pod:1200 msgid "BLOCK DEVICE NAMING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1198 +#: ../src/guestfs.pod:1202 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 " @@ -51783,7 +51990,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1210 +#: ../src/guestfs.pod:1214 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 " @@ -51791,7 +51998,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1214 +#: ../src/guestfs.pod:1218 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 " @@ -51799,7 +52006,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1219 +#: ../src/guestfs.pod:1223 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 " @@ -51808,7 +52015,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1225 +#: ../src/guestfs.pod:1229 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 " @@ -51817,12 +52024,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1230 +#: ../src/guestfs.pod:1234 msgid "DISK LABELS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1232 +#: ../src/guestfs.pod:1236 msgid "" "In libguestfs E<ge> 1.20, you can give a label to a disk when you add it, " "using the optional C<label> parameter to L</guestfs_add_drive_opts>. (Note " @@ -51830,14 +52037,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1237 +#: ../src/guestfs.pod:1241 msgid "" "Not all versions of libguestfs support setting a disk label, and when it is " "supported, it is limited to 20 ASCII characters C<[a-zA-Z]>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1240 +#: ../src/guestfs.pod:1244 msgid "" "When you add a disk with a label, it can either be addressed using " "C</dev/sd*>, or using C</dev/disk/guestfs/I<label>>. Partitions on the disk " @@ -51845,7 +52052,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1245 +#: ../src/guestfs.pod:1249 msgid "" "Listing devices (L</guestfs_list_devices>) and partitions " "(L</guestfs_list_partitions>) returns the raw block device name. However " @@ -51854,12 +52061,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1250 +#: ../src/guestfs.pod:1254 msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1252 +#: ../src/guestfs.pod:1256 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 " @@ -51869,7 +52076,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1258 +#: ../src/guestfs.pod:1262 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 " @@ -51877,54 +52084,54 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1266 +#: ../src/guestfs.pod:1270 msgid "Is the string a parameter which is a device or partition name?" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1270 +#: ../src/guestfs.pod:1274 msgid "Does the string begin with C</dev/sd>?" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1274 +#: ../src/guestfs.pod:1278 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:1279 +#: ../src/guestfs.pod:1283 msgid "Replace initial C</dev/sd> string with C</dev/hd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1281 +#: ../src/guestfs.pod:1285 msgid "For example, change C</dev/sda2> to C</dev/hda2>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1283 +#: ../src/guestfs.pod:1287 msgid "If that named device exists, use it. If not, continue." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1287 +#: ../src/guestfs.pod:1291 msgid "Replace initial C</dev/sd> string with C</dev/vd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1289 +#: ../src/guestfs.pod:1293 msgid "If that named device exists, use it. If not, return an error." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1293 +#: ../src/guestfs.pod:1297 msgid "PORTABILITY CONCERNS WITH BLOCK DEVICE NAMING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1295 +#: ../src/guestfs.pod:1299 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 " @@ -51932,38 +52139,38 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1299 +#: ../src/guestfs.pod:1303 msgid "" "Where possible for maximum future portability programs using libguestfs " "should use these future-proof techniques:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1306 +#: ../src/guestfs.pod:1310 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:1309 +#: ../src/guestfs.pod:1313 msgid "Since those device names exist by definition, they will never be translated." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1314 +#: ../src/guestfs.pod:1318 msgid "" "Use higher level ways to identify filesystems, such as LVM names, UUIDs and " "filesystem labels." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1319 +#: ../src/guestfs.pod:1323 msgid "NULL DISKS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1321 +#: ../src/guestfs.pod:1325 msgid "" "When adding a disk using, eg., L</guestfs_add_drive>, you can set the " "filename to C<\"/dev/null\">. This string is treated specially by " @@ -51971,46 +52178,46 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1325 +#: ../src/guestfs.pod:1329 msgid "A null disk has the following properties:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1331 +#: ../src/guestfs.pod:1335 msgid "" "A null disk will appear as a normal device, eg. in calls to " "L</guestfs_list_devices>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1336 +#: ../src/guestfs.pod:1340 msgid "You may add C<\"/dev/null\"> multiple times." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1340 +#: ../src/guestfs.pod:1344 msgid "" "You should not try to access a null disk in any way. For example, you " "shouldn't try to read it or mount it." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1345 +#: ../src/guestfs.pod:1349 msgid "Null disks are used for three main purposes:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1351 +#: ../src/guestfs.pod:1355 msgid "Performance testing of libguestfs (see L<guestfs-performance(1)>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1355 +#: ../src/guestfs.pod:1359 msgid "The internal test suite." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1359 +#: ../src/guestfs.pod:1363 msgid "" "If you want to use libguestfs APIs that don't refer to disks, since " "libguestfs requires that at least one disk is added, you should add a null " @@ -52018,12 +52225,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1363 +#: ../src/guestfs.pod:1367 msgid "For example, to test if a feature is available, use code like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1365 +#: ../src/guestfs.pod:1369 #, no-wrap msgid "" " guestfs_h *g;\n" @@ -52032,7 +52239,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1368 +#: ../src/guestfs.pod:1372 #, no-wrap msgid "" " g = guestfs_create ();\n" @@ -52048,19 +52255,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1380 +#: ../src/guestfs.pod:1384 msgid "DISK IMAGE FORMATS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1382 +#: ../src/guestfs.pod:1386 msgid "" "Virtual disks come in a variety of formats. Some common formats are listed " "below." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1385 +#: ../src/guestfs.pod:1389 msgid "" "Note that libguestfs itself is not responsible for handling the disk format: " "this is done using L<qemu(1)>. If support for a particular format is " @@ -52068,24 +52275,24 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1389 +#: ../src/guestfs.pod:1393 msgid "COMMON VIRTUAL DISK IMAGE FORMATS" msgstr "" #. type: =item -#: ../src/guestfs.pod:1393 +#: ../src/guestfs.pod:1397 msgid "I<raw>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1395 +#: ../src/guestfs.pod:1399 msgid "" "Raw format is simply a dump of the sequential bytes of the virtual hard " "disk. There is no header, container, compression or processing of any sort." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1399 +#: ../src/guestfs.pod:1403 msgid "" "Since raw format requires no translation to read or write, it is both fast " "and very well supported by qemu and all other hypervisors. You can consider " @@ -52093,7 +52300,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1404 +#: ../src/guestfs.pod:1408 msgid "" "Raw format files are not compressed and so take up the full space of the " "original disk image even when they are empty. A variation (on Linux/Unix at " @@ -52104,12 +52311,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:1411 +#: ../src/guestfs.pod:1415 msgid "I<qcow2>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1413 +#: ../src/guestfs.pod:1417 msgid "" "Qcow2 is the native disk image format used by qemu. Internally it uses a " "two-level directory structure so that only blocks containing data are stored " @@ -52118,19 +52325,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1418 +#: ../src/guestfs.pod:1422 msgid "" "There are at least two distinct variants of this format, although qemu (and " "hence libguestfs) handles both transparently to the user." msgstr "" #. type: =item -#: ../src/guestfs.pod:1421 +#: ../src/guestfs.pod:1425 msgid "I<vmdk>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1423 +#: ../src/guestfs.pod:1427 msgid "" "VMDK is VMware's native disk image format. There are many variations. " "Modern qemu (hence libguestfs) supports most variations, but you should be " @@ -52139,7 +52346,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1428 +#: ../src/guestfs.pod:1432 msgid "" "Note that VMware ESX exposes files with the name C<guest-flat.vmdk>. These " "are not VMDK. They are raw format files which happen to have a C<.vmdk> " @@ -52147,53 +52354,53 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:1432 +#: ../src/guestfs.pod:1436 msgid "I<vdi>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1434 +#: ../src/guestfs.pod:1438 msgid "" "VDI is VirtualBox's native disk image format. Qemu (hence libguestfs) has " "generally good support for this." msgstr "" #. type: =item -#: ../src/guestfs.pod:1437 +#: ../src/guestfs.pod:1441 msgid "I<vpc>" msgstr "" #. type: =item -#: ../src/guestfs.pod:1439 +#: ../src/guestfs.pod:1443 msgid "I<vhd>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1441 +#: ../src/guestfs.pod:1445 msgid "" "VPC (old) and VHD (modern) are the native disk image format of Microsoft " "(and previously, Connectix) Virtual PC and Hyper-V." msgstr "" #. type: =item -#: ../src/guestfs.pod:1444 +#: ../src/guestfs.pod:1448 msgid "Obsolete formats" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1446 +#: ../src/guestfs.pod:1450 msgid "" "The following formats are obsolete and should not be used: I<qcow> (aka " "I<qcow1>), I<cow>, I<bochs>." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1451 +#: ../src/guestfs.pod:1455 msgid "DETECTING THE FORMAT OF A DISK IMAGE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1453 +#: ../src/guestfs.pod:1457 msgid "" "Firstly note there is a security issue with auto-detecting the format of a " "disk image. It may or may not apply in your use case. Read " @@ -52201,14 +52408,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1457 +#: ../src/guestfs.pod:1461 msgid "" "Libguestfs offers an API to get the format of a disk image " "(L</guestfs_disk_format>, and it is safest to use this." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1460 +#: ../src/guestfs.pod:1464 msgid "" "I<Don't> be tempted to try parsing the text / human-readable output of " "C<qemu-img> since it cannot be parsed reliably and securely. Also do not " @@ -52216,24 +52423,24 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1465 ../sysprep/virt-sysprep.pod:424 +#: ../src/guestfs.pod:1469 ../sysprep/virt-sysprep.pod:424 msgid "SECURITY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1467 +#: ../src/guestfs.pod:1471 msgid "" "This section discusses security implications of using libguestfs, " "particularly with untrusted or malicious guests or disk images." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1470 +#: ../src/guestfs.pod:1474 msgid "GENERAL SECURITY CONSIDERATIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1472 +#: ../src/guestfs.pod:1476 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 " @@ -52243,42 +52450,42 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1482 +#: ../src/guestfs.pod:1486 msgid "the data (file etc) not being present" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1486 +#: ../src/guestfs.pod:1490 msgid "being present but empty" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1490 +#: ../src/guestfs.pod:1494 msgid "being much larger than normal" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1494 +#: ../src/guestfs.pod:1498 msgid "containing arbitrary 8 bit data" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1498 +#: ../src/guestfs.pod:1502 msgid "being in an unexpected character encoding" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1502 +#: ../src/guestfs.pod:1506 msgid "containing homoglyphs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1506 +#: ../src/guestfs.pod:1510 msgid "SECURITY OF MOUNTING FILESYSTEMS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1508 +#: ../src/guestfs.pod:1512 msgid "" "When you mount a filesystem under Linux, mistakes in the kernel filesystem " "(VFS) module can sometimes be escalated into exploits by deliberately " @@ -52294,7 +52501,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1521 +#: ../src/guestfs.pod:1525 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 " @@ -52308,19 +52515,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1532 +#: ../src/guestfs.pod:1536 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:1535 +#: ../src/guestfs.pod:1539 msgid "PROTOCOL SECURITY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1537 +#: ../src/guestfs.pod:1541 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 " @@ -52330,12 +52537,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1543 +#: ../src/guestfs.pod:1547 msgid "INSPECTION SECURITY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1545 +#: ../src/guestfs.pod:1549 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 " @@ -52344,7 +52551,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1551 +#: ../src/guestfs.pod:1555 msgid "" "Guest configuration may be altered in unusual ways by the administrator of " "the virtual machine, and may not reflect reality (particularly for untrusted " @@ -52355,7 +52562,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1559 +#: ../src/guestfs.pod:1563 msgid "" "The inspection API parses guest configuration using two external libraries: " "Augeas (Linux configuration) and hivex (Windows Registry). Both are " @@ -52365,12 +52572,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1565 +#: ../src/guestfs.pod:1569 msgid "RUNNING UNTRUSTED GUEST COMMANDS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1567 +#: ../src/guestfs.pod:1571 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 " @@ -52380,24 +52587,24 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1573 +#: ../src/guestfs.pod:1577 msgid "CVE-2010-3851" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1575 +#: ../src/guestfs.pod:1579 msgid "L<https://bugzilla.redhat.com/642934>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1577 +#: ../src/guestfs.pod:1581 msgid "" "This security bug concerns the automatic disk format detection that qemu " "does on disk images." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1580 +#: ../src/guestfs.pod:1584 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 " @@ -52406,7 +52613,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1585 +#: ../src/guestfs.pod:1589 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 " @@ -52415,7 +52622,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1590 +#: ../src/guestfs.pod:1594 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 " @@ -52427,24 +52634,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1598 +#: ../src/guestfs.pod:1602 msgid "In libguestfs this is rather hard to exploit except under two circumstances:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1605 +#: ../src/guestfs.pod:1609 msgid "You have enabled the network or have opened the disk in write mode." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1609 +#: ../src/guestfs.pod:1613 msgid "" "You are also running untrusted code from the guest (see L</RUNNING " "COMMANDS>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1614 +#: ../src/guestfs.pod:1618 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 " @@ -52453,31 +52660,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1620 +#: ../src/guestfs.pod:1624 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:1623 +#: ../src/guestfs.pod:1627 msgid "" "For libguestfs tools, use the I<--format> command line parameter as " "appropriate." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1626 +#: ../src/guestfs.pod:1630 msgid "CONNECTION MANAGEMENT" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1628 +#: ../src/guestfs.pod:1632 msgid "guestfs_h *" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1630 +#: ../src/guestfs.pod:1634 msgid "" "C<guestfs_h> is the opaque type representing a connection handle. Create a " "handle by calling L</guestfs_create> or L</guestfs_create_flags>. Call " @@ -52485,19 +52692,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1635 +#: ../src/guestfs.pod:1639 msgid "" "For information on using multiple handles and threads, see the section " "L</MULTIPLE HANDLES AND MULTIPLE THREADS> above." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1638 +#: ../src/guestfs.pod:1642 msgid "guestfs_create" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1640 +#: ../src/guestfs.pod:1644 #, no-wrap msgid "" " guestfs_h *guestfs_create (void);\n" @@ -52505,19 +52712,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1642 +#: ../src/guestfs.pod:1646 msgid "Create a connection handle." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1644 ../src/guestfs.pod:1663 +#: ../src/guestfs.pod:1648 ../src/guestfs.pod:1667 msgid "" "On success this returns a non-NULL pointer to a handle. On error it returns " "NULL." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1647 +#: ../src/guestfs.pod:1651 msgid "" "You have to \"configure\" the handle after creating it. This includes " "calling L</guestfs_add_drive_opts> (or one of the equivalent calls) on the " @@ -52525,24 +52732,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1651 +#: ../src/guestfs.pod:1655 msgid "After configuring the handle, you have to call L</guestfs_launch>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1653 +#: ../src/guestfs.pod:1657 msgid "" "You may also want to configure error handling for the handle. See the " "L</ERROR HANDLING> section below." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1656 +#: ../src/guestfs.pod:1660 msgid "guestfs_create_flags" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1658 +#: ../src/guestfs.pod:1662 #, no-wrap msgid "" " guestfs_h *guestfs_create_flags (unsigned flags [, ...]);\n" @@ -52550,36 +52757,36 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1660 +#: ../src/guestfs.pod:1664 msgid "" "Create a connection handle, supplying extra flags and extra arguments to " "control how the handle is created." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1666 +#: ../src/guestfs.pod:1670 msgid "L</guestfs_create> is equivalent to calling C<guestfs_create_flags(0)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1668 +#: ../src/guestfs.pod:1672 msgid "" "The following flags may be logically ORed together. (Currently no extra " "arguments are used)." msgstr "" #. type: =item -#: ../src/guestfs.pod:1673 +#: ../src/guestfs.pod:1677 msgid "C<GUESTFS_CREATE_NO_ENVIRONMENT>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1675 +#: ../src/guestfs.pod:1679 msgid "Don't parse any environment variables (such as C<LIBGUESTFS_DEBUG> etc)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1677 +#: ../src/guestfs.pod:1681 msgid "" "You can call L</guestfs_parse_environment> or " "L</guestfs_parse_environment_list> afterwards to parse environment " @@ -52588,45 +52795,45 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1682 +#: ../src/guestfs.pod:1686 msgid "" "The default (if this flag is not given) is to implicitly call " "L</guestfs_parse_environment>." msgstr "" #. type: =item -#: ../src/guestfs.pod:1685 +#: ../src/guestfs.pod:1689 msgid "C<GUESTFS_CREATE_NO_CLOSE_ON_EXIT>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1687 +#: ../src/guestfs.pod:1691 msgid "" "Don't try to close the handle in an L<atexit(3)> handler if the program " "exits without explicitly closing the handle." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1690 +#: ../src/guestfs.pod:1694 msgid "" "The default (if this flag is not given) is to install such an atexit " "handler." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1695 +#: ../src/guestfs.pod:1699 msgid "USING C<GUESTFS_CREATE_NO_ENVIRONMENT>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1697 +#: ../src/guestfs.pod:1701 msgid "" "You might use C<GUESTFS_CREATE_NO_ENVIRONMENT> and an explicit call to " "L</guestfs_parse_environment> like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1700 +#: ../src/guestfs.pod:1704 #, no-wrap msgid "" " guestfs_h *g;\n" @@ -52635,7 +52842,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1703 +#: ../src/guestfs.pod:1707 #, no-wrap msgid "" " g = guestfs_create_flags (GUESTFS_CREATE_NO_ENVIRONMENT);\n" @@ -52650,14 +52857,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1712 +#: ../src/guestfs.pod:1716 msgid "" "Or to create a handle which is unaffected by environment variables, omit the " "call to C<guestfs_parse_environment> from the above code." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1715 +#: ../src/guestfs.pod:1719 msgid "" "The above code has another advantage which is that any errors from parsing " "the environment are passed through the error handler, whereas " @@ -52665,12 +52872,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1719 +#: ../src/guestfs.pod:1723 msgid "guestfs_close" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1721 +#: ../src/guestfs.pod:1725 #, no-wrap msgid "" " void guestfs_close (guestfs_h *g);\n" @@ -52678,19 +52885,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1723 +#: ../src/guestfs.pod:1727 msgid "" "This closes the connection handle and frees up all resources used. If a " "close callback was set on the handle, then it is called." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1726 +#: ../src/guestfs.pod:1730 msgid "The correct way to close the handle is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1728 +#: ../src/guestfs.pod:1732 #, no-wrap msgid "" " if (guestfs_shutdown (g) == -1) {\n" @@ -52701,51 +52908,51 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1733 +#: ../src/guestfs.pod:1737 msgid "L</guestfs_shutdown> is only needed if B<all> of the following are true:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1739 +#: ../src/guestfs.pod:1743 msgid "one or more disks were added in read-write mode, I<and>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1743 +#: ../src/guestfs.pod:1747 msgid "guestfs_launch was called, I<and>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1747 +#: ../src/guestfs.pod:1751 msgid "you made some changes, I<and>" msgstr "" #. type: =item -#: ../src/guestfs.pod:1749 +#: ../src/guestfs.pod:1753 msgid "4" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1751 +#: ../src/guestfs.pod:1755 msgid "" "you have a way to handle write errors (eg. by exiting with an error code or " "reporting something to the user)." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1756 +#: ../src/guestfs.pod:1760 msgid "ERROR HANDLING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1758 +#: ../src/guestfs.pod:1762 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:1761 +#: ../src/guestfs.pod:1765 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 " @@ -52753,7 +52960,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1765 +#: ../src/guestfs.pod:1769 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 " @@ -52761,7 +52968,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1770 +#: ../src/guestfs.pod:1774 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 " @@ -52769,7 +52976,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1774 +#: ../src/guestfs.pod:1778 #, no-wrap msgid "" " if (guestfs_launch (g) == -1)\n" @@ -52778,14 +52985,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1777 +#: ../src/guestfs.pod:1781 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:1780 +#: ../src/guestfs.pod:1784 msgid "" "For other programs the caller will almost certainly want to install an " "alternate error handler or do error handling in-line as in the example " @@ -52794,7 +53001,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1785 +#: ../src/guestfs.pod:1789 #, no-wrap msgid "" " const char *msg;\n" @@ -52803,7 +53010,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1788 +#: ../src/guestfs.pod:1792 #, no-wrap msgid "" " /* This disables the default behaviour of printing errors\n" @@ -52813,7 +53020,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1792 +#: ../src/guestfs.pod:1796 #, no-wrap msgid "" " if (guestfs_launch (g) == -1) {\n" @@ -52825,7 +53032,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1798 +#: ../src/guestfs.pod:1802 #, no-wrap msgid "" " fprintf (stderr, \"%s\", msg);\n" @@ -52836,7 +53043,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1803 +#: ../src/guestfs.pod:1807 #, no-wrap msgid "" " /* ... */\n" @@ -52845,7 +53052,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1806 +#: ../src/guestfs.pod:1810 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 " @@ -52856,7 +53063,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1813 +#: ../src/guestfs.pod:1817 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 " @@ -52864,12 +53071,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1817 +#: ../src/guestfs.pod:1821 msgid "guestfs_last_error" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1819 +#: ../src/guestfs.pod:1823 #, no-wrap msgid "" " const char *guestfs_last_error (guestfs_h *g);\n" @@ -52877,14 +53084,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1821 +#: ../src/guestfs.pod:1825 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:1825 +#: ../src/guestfs.pod:1829 msgid "" "Note the returned string does I<not> have a newline character at the end. " "Most error messages are single lines. Some are split over multiple lines " @@ -52892,7 +53099,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1830 +#: ../src/guestfs.pod:1834 msgid "" "The lifetime of the returned string is until the next error occurs on the " "same handle, or L</guestfs_close> is called. If you need to keep it longer, " @@ -52900,12 +53107,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1834 +#: ../src/guestfs.pod:1838 msgid "guestfs_last_errno" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1836 +#: ../src/guestfs.pod:1840 #, no-wrap msgid "" " int guestfs_last_errno (guestfs_h *g);\n" @@ -52913,36 +53120,36 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1838 +#: ../src/guestfs.pod:1842 msgid "This returns the last error number (errno) that happened on C<g>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1840 +#: ../src/guestfs.pod:1844 msgid "If successful, an errno integer not equal to zero is returned." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1842 +#: ../src/guestfs.pod:1846 msgid "" "In many cases the special errno C<ENOTSUP> is returned if you tried to call " "a function or use a feature which is not supported." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1845 +#: ../src/guestfs.pod:1849 msgid "" "If no error number is available, this returns 0. This call can return 0 in " "three situations:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1852 +#: ../src/guestfs.pod:1856 msgid "There has not been any error on the handle." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1856 +#: ../src/guestfs.pod:1860 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 " @@ -52950,14 +53157,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1862 +#: ../src/guestfs.pod:1866 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:1868 +#: ../src/guestfs.pod:1872 msgid "" "Libguestfs tries to convert the errno from inside the applicance into a " "corresponding errno for the caller (not entirely trivial: the appliance " @@ -52968,12 +53175,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1876 +#: ../src/guestfs.pod:1880 msgid "guestfs_set_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1878 +#: ../src/guestfs.pod:1882 #, no-wrap msgid "" " typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n" @@ -52986,7 +53193,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1885 +#: ../src/guestfs.pod:1889 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 " @@ -52994,14 +53201,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1889 +#: ../src/guestfs.pod:1893 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:1892 +#: ../src/guestfs.pod:1896 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 " @@ -53009,22 +53216,22 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1896 +#: ../src/guestfs.pod:1900 msgid "The default handler prints messages on C<stderr>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1898 +#: ../src/guestfs.pod:1902 msgid "If you set C<cb> to C<NULL> then I<no> handler is called." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1900 +#: ../src/guestfs.pod:1904 msgid "guestfs_get_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1902 +#: ../src/guestfs.pod:1906 #, no-wrap msgid "" " guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n" @@ -53033,17 +53240,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1905 +#: ../src/guestfs.pod:1909 msgid "Returns the current error handler callback." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1907 +#: ../src/guestfs.pod:1911 msgid "guestfs_push_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1909 +#: ../src/guestfs.pod:1913 #, no-wrap msgid "" " void guestfs_push_error_handler (guestfs_h *g,\n" @@ -53053,7 +53260,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1913 +#: ../src/guestfs.pod:1917 msgid "" "This is the same as L</guestfs_set_error_handler>, except that the old error " "handler is stashed away in a stack inside the handle. You can restore the " @@ -53061,17 +53268,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1918 +#: ../src/guestfs.pod:1922 msgid "Use the following code to temporarily disable errors around a function:" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1924 +#: ../src/guestfs.pod:1928 msgid "guestfs_pop_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1926 +#: ../src/guestfs.pod:1930 #, no-wrap msgid "" " void guestfs_pop_error_handler (guestfs_h *g);\n" @@ -53079,24 +53286,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1928 +#: ../src/guestfs.pod:1932 msgid "Restore the previous error handler (see L</guestfs_push_error_handler>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1930 +#: ../src/guestfs.pod:1934 msgid "" "If you pop the stack too many times, then the default error handler is " "restored." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1933 +#: ../src/guestfs.pod:1937 msgid "guestfs_set_out_of_memory_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1935 +#: ../src/guestfs.pod:1939 #, no-wrap msgid "" " typedef void (*guestfs_abort_cb) (void);\n" @@ -53106,29 +53313,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1939 +#: ../src/guestfs.pod:1943 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:1942 +#: ../src/guestfs.pod:1946 msgid "The default is to call L<abort(3)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1944 +#: ../src/guestfs.pod:1948 msgid "You cannot set C<cb> to C<NULL>. You can't ignore out of memory situations." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1947 +#: ../src/guestfs.pod:1951 msgid "guestfs_get_out_of_memory_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1949 +#: ../src/guestfs.pod:1953 #, no-wrap msgid "" " guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n" @@ -53136,37 +53343,37 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1951 +#: ../src/guestfs.pod:1955 msgid "This returns the current out of memory handler." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1953 +#: ../src/guestfs.pod:1957 msgid "API CALLS" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1957 +#: ../src/guestfs.pod:1961 msgid "STRUCTURES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1959 +#: ../src/guestfs.pod:1963 msgid "__STRUCTS__" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1961 +#: ../src/guestfs.pod:1965 msgid "AVAILABILITY" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1963 +#: ../src/guestfs.pod:1967 msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1965 +#: ../src/guestfs.pod:1969 msgid "" "Using L</guestfs_available> you can test availability of the following " "groups of functions. This test queries the appliance to see if the " @@ -53174,29 +53381,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1970 +#: ../src/guestfs.pod:1974 msgid "__AVAILABILITY__" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1972 +#: ../src/guestfs.pod:1976 msgid "FILESYSTEM AVAILABLE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1974 +#: ../src/guestfs.pod:1978 msgid "" "The L</guestfs_filesystem_available> call tests whether a filesystem type is " "supported by the appliance kernel." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1982 +#: ../src/guestfs.pod:1986 msgid "GUESTFISH supported COMMAND" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1984 +#: ../src/guestfs.pod:1988 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 " @@ -53204,19 +53411,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1989 +#: ../src/guestfs.pod:1993 msgid "SINGLE CALLS AT COMPILE TIME" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1991 +#: ../src/guestfs.pod:1995 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:1994 +#: ../src/guestfs.pod:1998 #, no-wrap msgid "" " #define LIBGUESTFS_HAVE_DD 1\n" @@ -53224,12 +53431,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1996 +#: ../src/guestfs.pod:2000 msgid "if L</guestfs_dd> is available." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1998 +#: ../src/guestfs.pod:2002 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 " @@ -53237,7 +53444,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2003 +#: ../src/guestfs.pod:2007 #, no-wrap msgid "" " AC_CHECK_LIB([guestfs],[guestfs_create])\n" @@ -53246,19 +53453,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2006 +#: ../src/guestfs.pod:2010 msgid "" "which would result in C<HAVE_GUESTFS_DD> being either defined or not defined " "in your program." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2009 +#: ../src/guestfs.pod:2013 msgid "SINGLE CALLS AT RUN TIME" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2011 +#: ../src/guestfs.pod:2015 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 " @@ -53268,7 +53475,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2018 +#: ../src/guestfs.pod:2022 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 " @@ -53276,7 +53483,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2022 +#: ../src/guestfs.pod:2026 #, no-wrap msgid "" " #include <stdio.h>\n" @@ -53288,7 +53495,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2028 +#: ../src/guestfs.pod:2032 #, no-wrap msgid "" " main ()\n" @@ -53300,7 +53507,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2034 +#: ../src/guestfs.pod:2038 #, no-wrap msgid "" " /* Test if the function guestfs_dd is really available. */\n" @@ -53315,7 +53522,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2043 +#: ../src/guestfs.pod:2047 #, no-wrap msgid "" " if (!has_function)\n" @@ -53334,7 +53541,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2056 +#: ../src/guestfs.pod:2060 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 " @@ -53342,7 +53549,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2061 +#: ../src/guestfs.pod:2065 #, no-wrap msgid "" " Requires: libguestfs >= 1.0.80\n" @@ -53350,12 +53557,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2063 +#: ../src/guestfs.pod:2067 msgid "CALLS WITH OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2065 +#: ../src/guestfs.pod:2069 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 " @@ -53363,7 +53570,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2070 +#: ../src/guestfs.pod:2074 #, no-wrap msgid "" " int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);\n" @@ -53371,14 +53578,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2072 +#: ../src/guestfs.pod:2076 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:2075 +#: ../src/guestfs.pod:2079 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename, -1);\n" @@ -53386,12 +53593,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2077 +#: ../src/guestfs.pod:2081 msgid "With a single optional argument:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2079 +#: ../src/guestfs.pod:2083 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -53401,12 +53608,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2083 +#: ../src/guestfs.pod:2087 msgid "With two:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2085 +#: ../src/guestfs.pod:2089 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -53417,19 +53624,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2090 +#: ../src/guestfs.pod:2094 msgid "" "and so forth. Don't forget the terminating C<-1> otherwise Bad Things will " "happen!" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2093 +#: ../src/guestfs.pod:2097 msgid "USING va_list FOR OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2095 +#: ../src/guestfs.pod:2099 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 " @@ -53437,7 +53644,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2099 +#: ../src/guestfs.pod:2103 #, no-wrap msgid "" " int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,\n" @@ -53446,12 +53653,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2102 +#: ../src/guestfs.pod:2106 msgid "CONSTRUCTING OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2104 +#: ../src/guestfs.pod:2108 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 " @@ -53461,7 +53668,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2110 +#: ../src/guestfs.pod:2114 #, no-wrap msgid "" " struct guestfs_add_drive_opts_argv {\n" @@ -53476,12 +53683,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2119 +#: ../src/guestfs.pod:2123 msgid "You could call it like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2121 +#: ../src/guestfs.pod:2125 #, no-wrap msgid "" " struct guestfs_add_drive_opts_argv optargs = {\n" @@ -53494,7 +53701,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2128 +#: ../src/guestfs.pod:2132 #, no-wrap msgid "" " guestfs_add_drive_opts_argv (g, filename, &optargs);\n" @@ -53502,29 +53709,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2136 +#: ../src/guestfs.pod:2140 msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2141 +#: ../src/guestfs.pod:2145 msgid "You do not need to fill in all fields of the structure." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2145 +#: ../src/guestfs.pod:2149 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:2150 +#: ../src/guestfs.pod:2154 msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2152 +#: ../src/guestfs.pod:2156 msgid "" "In other languages, optional arguments are expressed in the way that is " "natural for that language. We refer you to the language-specific " @@ -53532,22 +53739,22 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2156 +#: ../src/guestfs.pod:2160 msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2158 +#: ../src/guestfs.pod:2162 msgid "EVENTS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2160 +#: ../src/guestfs.pod:2164 msgid "SETTING CALLBACKS TO HANDLE EVENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2162 +#: ../src/guestfs.pod:2166 msgid "" "B<Note:> This section documents the generic event mechanism introduced in " "libguestfs 1.10, which you should use in new code if possible. The old " @@ -53559,7 +53766,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2171 +#: ../src/guestfs.pod:2175 msgid "" "Handles generate events when certain things happen, such as log messages " "being generated, progress messages during long-running operations, or the " @@ -53571,7 +53778,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2179 +#: ../src/guestfs.pod:2183 msgid "" "In the current implementation, events are only generated synchronously: that " "means that events (and hence callbacks) can only happen while you are in the " @@ -53580,31 +53787,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2184 +#: ../src/guestfs.pod:2188 msgid "" "Events may contain a payload, usually nothing (void), an array of 64 bit " "unsigned integers, or a message buffer. Payloads are discussed later on." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2188 +#: ../src/guestfs.pod:2192 msgid "CLASSES OF EVENTS" msgstr "" #. type: =item -#: ../src/guestfs.pod:2192 +#: ../src/guestfs.pod:2196 msgid "GUESTFS_EVENT_CLOSE (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2195 +#: ../src/guestfs.pod:2199 msgid "" "The callback function will be called while the handle is being closed " "(synchronously from L</guestfs_close>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2198 +#: ../src/guestfs.pod:2202 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 " @@ -53615,19 +53822,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2205 +#: ../src/guestfs.pod:2209 msgid "" "If no callback is registered: the handle is closed without any callback " "being invoked." msgstr "" #. type: =item -#: ../src/guestfs.pod:2208 +#: ../src/guestfs.pod:2212 msgid "GUESTFS_EVENT_SUBPROCESS_QUIT (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2211 +#: ../src/guestfs.pod:2215 msgid "" "The callback function will be called when the child process quits, either " "asynchronously or if killed by L</guestfs_kill_subprocess>. (This " @@ -53635,17 +53842,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2215 ../src/guestfs.pod:2224 ../src/guestfs.pod:2341 +#: ../src/guestfs.pod:2219 ../src/guestfs.pod:2228 ../src/guestfs.pod:2345 msgid "If no callback is registered: the event is ignored." msgstr "" #. type: =item -#: ../src/guestfs.pod:2217 +#: ../src/guestfs.pod:2221 msgid "GUESTFS_EVENT_LAUNCH_DONE (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2220 +#: ../src/guestfs.pod:2224 msgid "" "The callback function will be called when the child process becomes ready " "first time after it has been launched. (This corresponds to a transition " @@ -53653,12 +53860,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2226 +#: ../src/guestfs.pod:2230 msgid "GUESTFS_EVENT_PROGRESS (payload type: array of 4 x uint64_t)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2229 +#: ../src/guestfs.pod:2233 msgid "" "Some long-running operations can generate progress messages. If this " "callback is registered, then it will be called each time a progress message " @@ -53668,14 +53875,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2235 +#: ../src/guestfs.pod:2239 msgid "" "The callback receives in the payload four unsigned 64 bit numbers which are " "(in order): C<proc_nr>, C<serial>, C<position>, C<total>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2238 +#: ../src/guestfs.pod:2242 msgid "" "The units of C<total> are not defined, although for some operations C<total> " "may relate in some way to the amount of data to be transferred (eg. in bytes " @@ -53684,24 +53891,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2243 +#: ../src/guestfs.pod:2247 msgid "The only defined and stable parts of the API are:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2249 +#: ../src/guestfs.pod:2253 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:2254 +#: ../src/guestfs.pod:2258 msgid "0 E<lt>= C<position> E<lt>= C<total>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2258 +#: ../src/guestfs.pod:2262 msgid "" "If any progress notification is sent during a call, then a final progress " "notification is always sent when C<position> = C<total> (I<unless> the call " @@ -53709,7 +53916,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2262 +#: ../src/guestfs.pod:2266 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 " @@ -53717,7 +53924,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2268 +#: ../src/guestfs.pod:2272 msgid "" "For some calls we are unable to estimate the progress of the call, but we " "can still generate progress messages to indicate activity. This is known as " @@ -53726,7 +53933,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2273 +#: ../src/guestfs.pod:2277 msgid "" "For these calls, zero or more progress messages are generated with " "C<position = 0> and C<total = 1>, followed by a final message with " @@ -53734,14 +53941,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2277 +#: ../src/guestfs.pod:2281 msgid "" "As noted above, if the call fails with an error then the final message may " "not be generated." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2282 +#: ../src/guestfs.pod:2286 msgid "" "The callback also receives the procedure number (C<proc_nr>) and serial " "number (C<serial>) of the call. These are only useful for debugging " @@ -53750,31 +53957,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2288 +#: ../src/guestfs.pod:2292 msgid "If no callback is registered: progress messages are discarded." msgstr "" #. type: =item -#: ../src/guestfs.pod:2290 +#: ../src/guestfs.pod:2294 msgid "GUESTFS_EVENT_APPLIANCE (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2293 +#: ../src/guestfs.pod:2297 msgid "" "The callback function is called whenever a log message is generated by qemu, " "the appliance kernel, guestfsd (daemon), or utility programs." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2296 +#: ../src/guestfs.pod:2300 msgid "" "If the verbose flag (L</guestfs_set_verbose>) is set before launch " "(L</guestfs_launch>) then additional debug messages are generated." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2299 ../src/guestfs.pod:2313 +#: ../src/guestfs.pod:2303 ../src/guestfs.pod:2317 msgid "" "If no callback is registered: the messages are discarded unless the verbose " "flag is set in which case they are sent to stderr. You can override the " @@ -53782,62 +53989,62 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2304 +#: ../src/guestfs.pod:2308 msgid "GUESTFS_EVENT_LIBRARY (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2307 +#: ../src/guestfs.pod:2311 msgid "" "The callback function is called whenever a log message is generated by the " "library part of libguestfs." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2310 +#: ../src/guestfs.pod:2314 msgid "" "If the verbose flag (L</guestfs_set_verbose>) is set then additional debug " "messages are generated." msgstr "" #. type: =item -#: ../src/guestfs.pod:2318 +#: ../src/guestfs.pod:2322 msgid "GUESTFS_EVENT_TRACE (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2321 +#: ../src/guestfs.pod:2325 msgid "" "The callback function is called whenever a trace message is generated. This " "only applies if the trace flag (L</guestfs_set_trace>) is set." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2324 +#: ../src/guestfs.pod:2328 msgid "" "If no callback is registered: the messages are sent to stderr. You can " "override the printing of trace messages to stderr by setting up a callback." msgstr "" #. type: =item -#: ../src/guestfs.pod:2328 +#: ../src/guestfs.pod:2332 msgid "GUESTFS_EVENT_ENTER (payload type: function name)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2331 +#: ../src/guestfs.pod:2335 msgid "The callback function is called whenever a libguestfs function is entered." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2334 +#: ../src/guestfs.pod:2338 msgid "" "The payload is a string which contains the name of the function that we are " "entering (not including C<guestfs_> prefix)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2337 +#: ../src/guestfs.pod:2341 msgid "" "Note that libguestfs functions can call themselves, so you may see many " "events from a single call. A few libguestfs functions do not generate this " @@ -53845,12 +54052,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2343 +#: ../src/guestfs.pod:2347 msgid "GUESTFS_EVENT_LIBVIRT_AUTH (payload type: libvirt URI)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2346 +#: ../src/guestfs.pod:2350 msgid "" "For any API function that opens a libvirt connection, this event may be " "generated to indicate that libvirt demands authentication information. See " @@ -53858,24 +54065,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2350 +#: ../src/guestfs.pod:2354 msgid "" "If no callback is registered: C<virConnectAuthPtrDefault> is used (suitable " "for command-line programs only)." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2355 +#: ../src/guestfs.pod:2359 msgid "EVENT API" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2357 +#: ../src/guestfs.pod:2361 msgid "guestfs_set_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2359 +#: ../src/guestfs.pod:2363 #, no-wrap msgid "" " int guestfs_set_event_callback (guestfs_h *g,\n" @@ -53887,14 +54094,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2365 +#: ../src/guestfs.pod:2369 msgid "" "This function registers a callback (C<cb>) for all event classes in the " "C<event_bitmask>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2368 +#: ../src/guestfs.pod:2372 msgid "" "For example, to register for all log message events, you could call this " "function with the bitmask C<GUESTFS_EVENT_APPLIANCE|GUESTFS_EVENT_LIBRARY>. " @@ -53903,40 +54110,40 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2374 +#: ../src/guestfs.pod:2378 msgid "C<flags> should always be passed as 0." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2376 +#: ../src/guestfs.pod:2380 msgid "" "C<opaque> is an opaque pointer which is passed to the callback. You can use " "it for any purpose." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2379 +#: ../src/guestfs.pod:2383 msgid "" "The return value is the event handle (an integer) which you can use to " "delete the callback (see below)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2382 +#: ../src/guestfs.pod:2386 msgid "" "If there is an error, this function returns C<-1>, and sets the error in the " "handle in the usual way (see L</guestfs_last_error> etc.)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2385 +#: ../src/guestfs.pod:2389 msgid "" "Callbacks remain in effect until they are deleted, or until the handle is " "closed." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2388 +#: ../src/guestfs.pod:2392 msgid "" "In the case where multiple callbacks are registered for a particular event " "class, all of the callbacks are called. The order in which multiple " @@ -53944,12 +54151,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2392 +#: ../src/guestfs.pod:2396 msgid "guestfs_delete_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2394 +#: ../src/guestfs.pod:2398 #, no-wrap msgid "" " void guestfs_delete_event_callback (guestfs_h *g, int event_handle);\n" @@ -53957,7 +54164,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2396 +#: ../src/guestfs.pod:2400 msgid "" "Delete a callback that was previously registered. C<event_handle> should be " "the integer that was returned by a previous call to " @@ -53965,12 +54172,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2400 +#: ../src/guestfs.pod:2404 msgid "guestfs_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2402 +#: ../src/guestfs.pod:2406 #, no-wrap msgid "" " typedef void (*guestfs_event_callback) (\n" @@ -53985,12 +54192,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2411 +#: ../src/guestfs.pod:2415 msgid "This is the type of the event callback function that you have to provide." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2414 +#: ../src/guestfs.pod:2418 msgid "" "The basic parameters are: the handle (C<g>), the opaque user pointer " "(C<opaque>), the event class (eg. C<GUESTFS_EVENT_PROGRESS>), the event " @@ -53998,7 +54205,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2418 +#: ../src/guestfs.pod:2422 msgid "" "The remaining parameters contain the event payload (if any). Each event may " "contain a payload, which usually relates to the event class, but for future " @@ -54007,7 +54214,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2423 +#: ../src/guestfs.pod:2427 msgid "" "C<buf> and C<buf_len> contain a message buffer (if C<buf_len == 0>, then " "there is no message buffer). Note that this message buffer can contain " @@ -54015,19 +54222,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2427 +#: ../src/guestfs.pod:2431 msgid "" "C<array> and C<array_len> is an array of 64 bit unsigned integers. At the " "moment this is only used for progress messages." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2430 +#: ../src/guestfs.pod:2434 msgid "EXAMPLE: CAPTURING LOG MESSAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2432 +#: ../src/guestfs.pod:2436 msgid "" "One motivation for the generic event API was to allow GUI programs to " "capture debug and other messages. In libguestfs E<le> 1.8 these were sent " @@ -54035,7 +54242,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2436 +#: ../src/guestfs.pod:2440 msgid "" "Events associated with log messages are: C<GUESTFS_EVENT_LIBRARY>, " "C<GUESTFS_EVENT_APPLIANCE> and C<GUESTFS_EVENT_TRACE>. (Note that error " @@ -54043,14 +54250,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2441 +#: ../src/guestfs.pod:2445 msgid "" "Programs have to set up a callback to capture the classes of events of " "interest:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2444 +#: ../src/guestfs.pod:2448 #, no-wrap msgid "" " int eh =\n" @@ -54066,14 +54273,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2454 +#: ../src/guestfs.pod:2458 msgid "" "The callback can then direct messages to the appropriate place. In this " "example, messages are directed to syslog:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2457 +#: ../src/guestfs.pod:2461 #, no-wrap msgid "" " static void\n" @@ -54094,12 +54301,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2472 +#: ../src/guestfs.pod:2476 msgid "LIBVIRT AUTHENTICATION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2474 +#: ../src/guestfs.pod:2478 msgid "" "Some libguestfs API calls can open libvirt connections. Currently the only " "ones are L</guestfs_add_domain>; and L</guestfs_launch> if the libvirt " @@ -54111,14 +54318,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2482 +#: ../src/guestfs.pod:2486 msgid "" "You may provide libvirt authentication data by registering a callback for " "events of type C<GUESTFS_EVENT_LIBVIRT_AUTH>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2485 +#: ../src/guestfs.pod:2489 msgid "" "If no such event is registered, then libguestfs uses a libvirt function that " "provides command-line prompts (C<virConnectAuthPtrDefault>). This is only " @@ -54126,7 +54333,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2490 +#: ../src/guestfs.pod:2494 msgid "" "To provide authentication, first call " "L</guestfs_set_libvirt_supported_credentials> with the list of credentials " @@ -54136,7 +54343,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2497 +#: ../src/guestfs.pod:2501 msgid "" "In the event handler, call L</guestfs_get_libvirt_requested_credentials> to " "get a list of the credentials that libvirt is asking for. You then need to " @@ -54149,19 +54356,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2508 +#: ../src/guestfs.pod:2512 msgid "The example program below should make this clearer." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2510 +#: ../src/guestfs.pod:2514 msgid "" "There is also a more substantial working example program supplied with the " "libguestfs sources, called C<libvirt_auth.c>." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2513 +#: ../src/guestfs.pod:2517 #, no-wrap msgid "" " main ()\n" @@ -54173,7 +54380,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2519 +#: ../src/guestfs.pod:2523 #, no-wrap msgid "" " g = guestfs_create ();\n" @@ -54182,7 +54389,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2522 +#: ../src/guestfs.pod:2526 #, no-wrap msgid "" " /* Tell libvirt what credentials the program supports. */\n" @@ -54193,7 +54400,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2527 +#: ../src/guestfs.pod:2531 #, no-wrap msgid "" " /* Set up the event handler. */\n" @@ -54206,7 +54413,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2534 +#: ../src/guestfs.pod:2538 #, no-wrap msgid "" " /* An example of a call that may ask for credentials. */\n" @@ -54220,7 +54427,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2542 +#: ../src/guestfs.pod:2546 #, no-wrap msgid "" " exit (EXIT_SUCCESS);\n" @@ -54229,7 +54436,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2545 +#: ../src/guestfs.pod:2549 #, no-wrap msgid "" " static void\n" @@ -54251,7 +54458,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2561 +#: ../src/guestfs.pod:2565 #, no-wrap msgid "" " // buf will be the libvirt URI. buf_len may be ignored.\n" @@ -54261,7 +54468,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2565 +#: ../src/guestfs.pod:2569 #, no-wrap msgid "" " // Ask libguestfs what credentials libvirt is demanding.\n" @@ -54272,7 +54479,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2570 +#: ../src/guestfs.pod:2574 #, no-wrap msgid "" " // Now ask the user for answers.\n" @@ -54290,7 +54497,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2582 +#: ../src/guestfs.pod:2586 #, no-wrap msgid "" " // Some code here to ask for the credential.\n" @@ -54300,7 +54507,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2586 +#: ../src/guestfs.pod:2590 #, no-wrap msgid "" " r = guestfs_set_libvirt_requested_credential (g, i,\n" @@ -54312,7 +54519,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2592 +#: ../src/guestfs.pod:2596 #, no-wrap msgid "" " free (creds[i]);\n" @@ -54321,7 +54528,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2595 +#: ../src/guestfs.pod:2599 #, no-wrap msgid "" " free (creds);\n" @@ -54330,12 +54537,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2598 +#: ../src/guestfs.pod:2602 msgid "CANCELLING LONG TRANSFERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2600 +#: ../src/guestfs.pod:2604 msgid "" "Some operations can be cancelled by the caller while they are in progress. " "Currently only operations that involve uploading or downloading data can be " @@ -54344,12 +54551,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2605 +#: ../src/guestfs.pod:2609 msgid "guestfs_user_cancel" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2607 +#: ../src/guestfs.pod:2611 #, no-wrap msgid "" " void guestfs_user_cancel (guestfs_h *g);\n" @@ -54357,12 +54564,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2609 +#: ../src/guestfs.pod:2613 msgid "C<guestfs_user_cancel> cancels the current upload or download operation." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2612 +#: ../src/guestfs.pod:2616 msgid "" "Unlike most other libguestfs calls, this function is signal safe and thread " "safe. You can call it from a signal handler or from another thread, without " @@ -54370,7 +54577,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2616 +#: ../src/guestfs.pod:2620 msgid "" "The transfer that was in progress (if there is one) will stop shortly " "afterwards, and will return an error. The errno (see " @@ -54379,7 +54586,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2622 +#: ../src/guestfs.pod:2626 msgid "" "No cleanup is performed: for example, if a file was being uploaded then " "after cancellation there may be a partially uploaded file. It is the " @@ -54387,12 +54594,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2626 +#: ../src/guestfs.pod:2630 msgid "There are two common places that you might call C<guestfs_user_cancel>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2628 +#: ../src/guestfs.pod:2632 msgid "" "In an interactive text-based program, you might call it from a C<SIGINT> " "signal handler so that pressing C<^C> cancels the current operation. (You " @@ -54401,19 +54608,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2633 +#: ../src/guestfs.pod:2637 msgid "" "In a graphical program, when the main thread is displaying a progress bar " "with a cancel button, wire up the cancel button to call this function." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2637 +#: ../src/guestfs.pod:2641 msgid "PRIVATE DATA AREA" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2639 +#: ../src/guestfs.pod:2643 msgid "" "You can attach named pieces of private data to the libguestfs handle, fetch " "them by name, and walk over them, for the lifetime of the handle. This is " @@ -54421,12 +54628,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2644 +#: ../src/guestfs.pod:2648 msgid "To attach a named piece of data, use the following call:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2646 +#: ../src/guestfs.pod:2650 #, no-wrap msgid "" " void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n" @@ -54434,7 +54641,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2648 +#: ../src/guestfs.pod:2652 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 key is " @@ -54442,7 +54649,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2652 +#: ../src/guestfs.pod:2656 msgid "" "You can use any C<key> you want, but your key should I<not> start with an " "underscore character. Keys beginning with an underscore character are " @@ -54452,12 +54659,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2658 +#: ../src/guestfs.pod:2662 msgid "To retrieve the pointer, use:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2660 +#: ../src/guestfs.pod:2664 #, no-wrap msgid "" " void *guestfs_get_private (guestfs_h *g, const char *key);\n" @@ -54465,7 +54672,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2662 +#: ../src/guestfs.pod:2666 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 " @@ -54473,7 +54680,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2666 +#: ../src/guestfs.pod:2670 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 " @@ -54484,12 +54691,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2673 +#: ../src/guestfs.pod:2677 msgid "To walk over all entries, use these two functions:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2675 +#: ../src/guestfs.pod:2679 #, no-wrap msgid "" " void *guestfs_first_private (guestfs_h *g, const char **key_rtn);\n" @@ -54497,7 +54704,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2677 +#: ../src/guestfs.pod:2681 #, no-wrap msgid "" " void *guestfs_next_private (guestfs_h *g, const char **key_rtn);\n" @@ -54505,7 +54712,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2679 +#: ../src/guestfs.pod:2683 msgid "" "C<guestfs_first_private> returns the first key, pointer pair (\"first\" does " "not have any particular meaning -- keys are not returned in any defined " @@ -54515,7 +54722,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2685 +#: ../src/guestfs.pod:2689 msgid "" "C<guestfs_next_private> returns the next key, pointer pair. The return " "value of this function is also C<NULL> is there are no further entries to " @@ -54523,17 +54730,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2689 +#: ../src/guestfs.pod:2693 msgid "Notes about walking over entries:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2695 +#: ../src/guestfs.pod:2699 msgid "You must not call C<guestfs_set_private> while walking over the entries." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2700 +#: ../src/guestfs.pod:2704 msgid "" "The handle maintains an internal iterator which is reset when you call " "C<guestfs_first_private>. This internal iterator is invalidated when you " @@ -54541,12 +54748,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2706 +#: ../src/guestfs.pod:2710 msgid "If you have set the data pointer associated with a key to C<NULL>, ie:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2708 +#: ../src/guestfs.pod:2712 #, no-wrap msgid "" " guestfs_set_private (g, key, NULL);\n" @@ -54554,26 +54761,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2710 +#: ../src/guestfs.pod:2714 msgid "then that C<key> is not returned when walking." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2714 +#: ../src/guestfs.pod:2718 msgid "" "C<*key_rtn> is only valid until the next call to C<guestfs_first_private>, " "C<guestfs_next_private> or C<guestfs_set_private>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2720 +#: ../src/guestfs.pod:2724 msgid "" "The following example code shows how to print all keys and data pointers " "that are associated with the handle C<g>:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2723 +#: ../src/guestfs.pod:2727 #, no-wrap msgid "" " const char *key;\n" @@ -54587,14 +54794,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2731 +#: ../src/guestfs.pod:2735 msgid "" "More commonly you are only interested in keys that begin with an " "application-specific prefix C<foo_>. Modify the loop like so:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2734 +#: ../src/guestfs.pod:2738 #, no-wrap msgid "" " const char *key;\n" @@ -54609,7 +54816,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2743 +#: ../src/guestfs.pod:2747 msgid "" "If you need to modify keys while walking, then you have to jump back to the " "beginning of the loop. For example, to delete all keys prefixed with " @@ -54617,7 +54824,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2747 +#: ../src/guestfs.pod:2751 #, no-wrap msgid "" " const char *key;\n" @@ -54639,7 +54846,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2763 +#: ../src/guestfs.pod:2767 msgid "" "Note that the above loop is guaranteed to terminate because the keys are " "being deleted, but other manipulations of keys within the loop might not " @@ -54648,12 +54855,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2768 +#: ../src/guestfs.pod:2772 msgid "SYSTEMTAP" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2770 +#: ../src/guestfs.pod:2774 msgid "" "The libguestfs C library can be probed using systemtap or DTrace. This is " "true of any library, not just libguestfs. However libguestfs also contains " @@ -54661,12 +54868,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2774 +#: ../src/guestfs.pod:2778 msgid "You can list all the static markers by doing:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2776 +#: ../src/guestfs.pod:2780 #, no-wrap msgid "" " stap -l 'process(\"/usr/lib*/libguestfs.so.0\")\n" @@ -54675,26 +54882,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2779 +#: ../src/guestfs.pod:2783 msgid "" "B<Note:> These static markers are I<not> part of the stable API and may " "change in future versions." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2782 +#: ../src/guestfs.pod:2786 msgid "SYSTEMTAP SCRIPT EXAMPLE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2784 +#: ../src/guestfs.pod:2788 msgid "" "This script contains examples of displaying both the static markers and some " "ordinary C entry points:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2811 +#: ../src/guestfs.pod:2815 #, no-wrap msgid "" " /* Display all calls to guestfs_mkfs* functions. */\n" @@ -54707,7 +54914,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2818 +#: ../src/guestfs.pod:2822 msgid "" "The script above can be saved to C<test.stap> and run using the L<stap(1)> " "program. Note that you either have to be root, or you have to add yourself " @@ -54716,7 +54923,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2823 +#: ../src/guestfs.pod:2827 #, no-wrap msgid "" " # stap /tmp/test.stap\n" @@ -54725,17 +54932,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2826 +#: ../src/guestfs.pod:2830 msgid "In another terminal, run a guestfish command such as this:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2830 +#: ../src/guestfs.pod:2834 msgid "In the first terminal, stap trace output similar to this is shown:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2832 +#: ../src/guestfs.pod:2836 #, no-wrap msgid "" " 1318248056692655 (+0):\tlaunch_start\n" @@ -54749,19 +54956,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2841 +#: ../src/guestfs.pod:2845 msgid "" "<!-- old anchor for the next section --> <a " "name=\"state_machine_and_low_level_event_api\"/>" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2846 +#: ../src/guestfs.pod:2850 msgid "ARCHITECTURE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2848 +#: ../src/guestfs.pod:2852 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 " @@ -54769,7 +54976,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2852 +#: ../src/guestfs.pod:2856 #, no-wrap msgid "" " ___________________\n" @@ -54795,14 +55002,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2872 +#: ../src/guestfs.pod:2876 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:2875 +#: ../src/guestfs.pod:2879 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 " @@ -54814,7 +55021,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2884 +#: ../src/guestfs.pod:2888 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 " @@ -54825,17 +55032,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2891 +#: ../src/guestfs.pod:2895 msgid "STATE MACHINE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2893 +#: ../src/guestfs.pod:2897 msgid "libguestfs uses a state machine to model the child process:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2895 +#: ../src/guestfs.pod:2899 #, no-wrap msgid "" " |\n" @@ -54863,7 +55070,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2917 +#: ../src/guestfs.pod:2921 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), " @@ -54872,7 +55079,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2922 +#: ../src/guestfs.pod:2926 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 " @@ -54880,14 +55087,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2926 +#: ../src/guestfs.pod:2930 msgid "" "Configuration commands for qemu such as L</guestfs_set_path> can only be " "issued when in the CONFIG state." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2929 +#: ../src/guestfs.pod:2933 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 " @@ -54896,7 +55103,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2935 +#: ../src/guestfs.pod:2939 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. " @@ -54905,7 +55112,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2940 +#: ../src/guestfs.pod:2944 msgid "" "Finally, the child process sends asynchronous messages back to the main " "program, such as kernel log messages. You can register a callback to " @@ -54913,17 +55120,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2944 +#: ../src/guestfs.pod:2948 msgid "INTERNALS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2946 +#: ../src/guestfs.pod:2950 msgid "APPLIANCE BOOT PROCESS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2948 +#: ../src/guestfs.pod:2952 msgid "" "This process has evolved and continues to evolve. The description here " "corresponds only to the current version of libguestfs and is provided for " @@ -54931,55 +55138,55 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2952 +#: ../src/guestfs.pod:2956 msgid "" "In order to follow the stages involved below, enable libguestfs debugging " "(set the environment variable C<LIBGUESTFS_DEBUG=1>)." msgstr "" #. type: =item -#: ../src/guestfs.pod:2957 +#: ../src/guestfs.pod:2961 msgid "Create the appliance" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2959 +#: ../src/guestfs.pod:2963 msgid "" "C<febootstrap-supermin-helper> is invoked to create the kernel, a small " "initrd and the appliance." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2962 +#: ../src/guestfs.pod:2966 msgid "" "The appliance is cached in C</var/tmp/.guestfs-E<lt>UIDE<gt>> (or in another " "directory if C<LIBGUESTFS_CACHEDIR> or C<TMPDIR> are set)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2965 +#: ../src/guestfs.pod:2969 msgid "" "For a complete description of how the appliance is created and cached, read " "the L<febootstrap(8)> and L<febootstrap-supermin-helper(8)> man pages." msgstr "" #. type: =item -#: ../src/guestfs.pod:2969 +#: ../src/guestfs.pod:2973 msgid "Start qemu and boot the kernel" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2971 +#: ../src/guestfs.pod:2975 msgid "qemu is invoked to boot the kernel." msgstr "" #. type: =item -#: ../src/guestfs.pod:2973 +#: ../src/guestfs.pod:2977 msgid "Run the initrd" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2975 +#: ../src/guestfs.pod:2979 msgid "" "C<febootstrap-supermin-helper> builds a small initrd. The initrd is not the " "appliance. The purpose of the initrd is to load enough kernel modules in " @@ -54987,21 +55194,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2979 +#: ../src/guestfs.pod:2983 msgid "" "The initrd is a cpio archive called " "C</var/tmp/.guestfs-E<lt>UIDE<gt>/initrd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2982 +#: ../src/guestfs.pod:2986 msgid "" "When the initrd has started you will see messages showing that kernel " "modules are being loaded, similar to this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2985 +#: ../src/guestfs.pod:2989 #, no-wrap msgid "" " febootstrap: ext2 mini initrd starting up\n" @@ -55012,12 +55219,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2990 +#: ../src/guestfs.pod:2994 msgid "Find and mount the appliance device" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2992 +#: ../src/guestfs.pod:2996 msgid "" "The appliance is a sparse file containing an ext2 filesystem which contains " "a familiar (although reduced in size) Linux operating system. It would " @@ -55025,33 +55232,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2996 +#: ../src/guestfs.pod:3000 msgid "" "The regular disks being inspected by libguestfs are the first devices " "exposed by qemu (eg. as C</dev/vda>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2999 +#: ../src/guestfs.pod:3003 msgid "" "The last disk added to qemu is the appliance itself (eg. C</dev/vdb> if " "there was only one regular disk)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3002 +#: ../src/guestfs.pod:3006 msgid "" "Thus the final job of the initrd is to locate the appliance disk, mount it, " "and switch root into the appliance, and run C</init> from the appliance." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3006 +#: ../src/guestfs.pod:3010 msgid "If this works successfully you will see messages such as:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3008 +#: ../src/guestfs.pod:3012 #, no-wrap msgid "" " febootstrap: picked /sys/block/vdb/dev as root device\n" @@ -55063,19 +55270,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3014 +#: ../src/guestfs.pod:3018 msgid "" "Note that C<Starting /init script ...> indicates that the appliance's init " "script is now running." msgstr "" #. type: =item -#: ../src/guestfs.pod:3017 +#: ../src/guestfs.pod:3021 msgid "Initialize the appliance" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3019 +#: ../src/guestfs.pod:3023 msgid "" "The appliance itself now initializes itself. This involves starting certain " "processes like C<udev>, possibly printing some debug information, and " @@ -55083,19 +55290,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3023 +#: ../src/guestfs.pod:3027 msgid "The daemon" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3025 +#: ../src/guestfs.pod:3029 msgid "" "Finally the daemon (C<guestfsd>) runs inside the appliance. If it runs you " "should see:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3028 +#: ../src/guestfs.pod:3032 #, no-wrap msgid "" " verbose daemon enabled\n" @@ -55103,14 +55310,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3030 +#: ../src/guestfs.pod:3034 msgid "" "The daemon expects to see a named virtio-serial port exposed by qemu and " "connected on the other end to the library." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3033 +#: ../src/guestfs.pod:3037 msgid "" "The daemon connects to this port (and hence to the library) and sends a four " "byte message C<GUESTFS_LAUNCH_FLAG>, which initiates the communication " @@ -55118,19 +55325,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3039 +#: ../src/guestfs.pod:3043 msgid "COMMUNICATION PROTOCOL" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3041 +#: ../src/guestfs.pod:3045 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:3044 +#: ../src/guestfs.pod:3048 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 " @@ -55138,14 +55345,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3048 +#: ../src/guestfs.pod:3052 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:3051 +#: ../src/guestfs.pod:3055 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 " @@ -55155,17 +55362,17 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:3058 +#: ../src/guestfs.pod:3062 msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3060 +#: ../src/guestfs.pod:3064 msgid "For ordinary functions, the request message is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3062 +#: ../src/guestfs.pod:3066 #, no-wrap msgid "" " total length (header + arguments,\n" @@ -55176,7 +55383,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3067 +#: ../src/guestfs.pod:3071 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 " @@ -55185,21 +55392,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3073 +#: ../src/guestfs.pod:3077 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:3076 +#: ../src/guestfs.pod:3080 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:3080 +#: ../src/guestfs.pod:3084 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 " @@ -55211,12 +55418,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3088 +#: ../src/guestfs.pod:3092 msgid "The reply message for ordinary functions is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3090 +#: ../src/guestfs.pod:3094 #, no-wrap msgid "" " total length (header + ret,\n" @@ -55227,26 +55434,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3095 +#: ../src/guestfs.pod:3099 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:3098 +#: ../src/guestfs.pod:3102 msgid "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3101 +#: ../src/guestfs.pod:3105 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:3104 +#: ../src/guestfs.pod:3108 #, no-wrap msgid "" " total length (header + error,\n" @@ -55257,19 +55464,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3109 +#: ../src/guestfs.pod:3113 msgid "" "The C<guestfs_message_error> structure contains the error message as a " "string." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:3112 +#: ../src/guestfs.pod:3116 msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3114 +#: ../src/guestfs.pod:3118 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 " @@ -55277,7 +55484,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3118 +#: ../src/guestfs.pod:3122 #, no-wrap msgid "" " total length (header + arguments,\n" @@ -55291,12 +55498,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3126 +#: ../src/guestfs.pod:3130 msgid "The \"sequence of chunks\" is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3128 +#: ../src/guestfs.pod:3132 #, no-wrap msgid "" " length of chunk (not including length word itself)\n" @@ -55310,7 +55517,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3136 +#: ../src/guestfs.pod:3140 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 " @@ -55318,7 +55525,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3140 +#: ../src/guestfs.pod:3144 msgid "" "At time of writing there are no functions that have more than one FileIn " "parameter. However this is (theoretically) supported, by sending the " @@ -55327,7 +55534,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3145 +#: ../src/guestfs.pod:3149 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 " @@ -55336,7 +55543,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3151 +#: ../src/guestfs.pod:3155 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 " @@ -55348,7 +55555,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3160 +#: ../src/guestfs.pod:3164 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 " @@ -55358,19 +55565,19 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:3166 +#: ../src/guestfs.pod:3170 msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3168 +#: ../src/guestfs.pod:3172 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:3171 +#: ../src/guestfs.pod:3175 #, no-wrap msgid "" " total length (header + ret,\n" @@ -55384,12 +55591,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:3179 +#: ../src/guestfs.pod:3183 msgid "INITIAL MESSAGE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3181 +#: ../src/guestfs.pod:3185 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 " @@ -55397,12 +55604,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:3185 +#: ../src/guestfs.pod:3189 msgid "PROGRESS NOTIFICATION MESSAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3187 +#: ../src/guestfs.pod:3191 msgid "" "The daemon may send progress notification messages at any time. These are " "distinguished by the normal length word being replaced by " @@ -55410,7 +55617,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3191 +#: ../src/guestfs.pod:3195 msgid "" "The library turns them into progress callbacks (see " "L</GUESTFS_EVENT_PROGRESS>) if there is a callback registered, or discards " @@ -55418,7 +55625,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3195 +#: ../src/guestfs.pod:3199 msgid "" "The daemon self-limits the frequency of progress messages it sends (see " "C<daemon/proto.c:notify_progress>). Not all calls generate progress " @@ -55426,12 +55633,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:3199 +#: ../src/guestfs.pod:3203 msgid "LIBGUESTFS VERSION NUMBERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3201 +#: ../src/guestfs.pod:3205 msgid "" "Since April 2010, libguestfs has started to make separate development and " "stable releases, along with corresponding branches in our git repository. " @@ -55439,7 +55646,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3206 +#: ../src/guestfs.pod:3210 #, no-wrap msgid "" " even numbers for stable: 1.2.x, 1.4.x, ...\n" @@ -55456,12 +55663,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3217 +#: ../src/guestfs.pod:3221 msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3219 +#: ../src/guestfs.pod:3223 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 " @@ -55471,26 +55678,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3225 +#: ../src/guestfs.pod:3229 msgid "Our criteria for backporting changes are:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3231 +#: ../src/guestfs.pod:3235 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:3237 +#: ../src/guestfs.pod:3241 msgid "" "Bug fixes which are not controversial, fix obvious problems, and have been " "well tested are backported." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3242 +#: ../src/guestfs.pod:3246 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 " @@ -55498,7 +55705,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3248 +#: ../src/guestfs.pod:3252 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 " @@ -55506,7 +55713,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3254 +#: ../src/guestfs.pod:3258 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 " @@ -55517,29 +55724,29 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:3262 +#: ../src/guestfs.pod:3266 msgid "EXTENDING LIBGUESTFS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3264 +#: ../src/guestfs.pod:3268 msgid "This section is for hackers who want to extend libguestfs itself." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3266 +#: ../src/guestfs.pod:3270 msgid "OVERVIEW OF THE SOURCE CODE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3268 +#: ../src/guestfs.pod:3272 msgid "" "Libguestfs source is located in the github repository " "L<https://github.com/libguestfs/libguestfs>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3271 +#: ../src/guestfs.pod:3275 msgid "" "Large amounts of boilerplate code in libguestfs (RPC, bindings, " "documentation) are generated. This means that many source files will appear " @@ -55549,7 +55756,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3277 +#: ../src/guestfs.pod:3281 msgid "" "Libguestfs uses an autotools-based build system, with the main files being " "C<configure.ac> and C<Makefile.am>. The C<generator> subdirectory contains " @@ -55561,7 +55768,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3286 +#: ../src/guestfs.pod:3290 msgid "" "Apart from the fact that all API entry points go via some generated code, " "the library is straightforward. (In fact, even the generated code is " @@ -55572,17 +55779,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3294 +#: ../src/guestfs.pod:3298 msgid "To build from source, first read the C<README> file." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3296 +#: ../src/guestfs.pod:3300 msgid "C<local*> FILES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3298 +#: ../src/guestfs.pod:3302 msgid "" "Files in the top source directory that begin with the prefix C<local*> are " "ignored by git. These files can contain local configuration or scripts that " @@ -55590,7 +55797,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3302 +#: ../src/guestfs.pod:3306 msgid "" "By convention, I have a file called C<localconfigure> which is a simple " "wrapper around C<autogen.sh> containing local configure customizations that " @@ -55598,7 +55805,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3306 +#: ../src/guestfs.pod:3310 #, no-wrap msgid "" " . localenv\n" @@ -55612,12 +55819,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3314 +#: ../src/guestfs.pod:3318 msgid "So I can use this to build libguestfs:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3316 +#: ../src/guestfs.pod:3320 #, no-wrap msgid "" " ./localconfigure && make\n" @@ -55625,7 +55832,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3318 +#: ../src/guestfs.pod:3322 msgid "" "If there is a file in the top build directory called C<localenv>, then it " "will be sourced by C<make>. This file can contain any local environment " @@ -55633,7 +55840,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3322 +#: ../src/guestfs.pod:3326 #, no-wrap msgid "" " # Use an alternate python binary.\n" @@ -55644,7 +55851,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3327 +#: ../src/guestfs.pod:3331 msgid "" "Note that C<localenv> is included by the top Makefile (so it's a Makefile " "fragment). But if it is also sourced by your C<localconfigure> script then " @@ -55652,31 +55859,31 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3331 +#: ../src/guestfs.pod:3335 msgid "ADDING A NEW API ACTION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3333 +#: ../src/guestfs.pod:3337 msgid "" "Because large amounts of boilerplate code in libguestfs are generated, this " "makes it easy to extend the libguestfs API." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3336 +#: ../src/guestfs.pod:3340 msgid "To add a new API action there are two changes:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3342 +#: ../src/guestfs.pod:3346 msgid "" "You need to add a description of the call (name, parameters, return type, " "tests, documentation) to C<generator/actions.ml>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3345 +#: ../src/guestfs.pod:3349 msgid "" "There are two sorts of API action, depending on whether the call goes " "through to the daemon in the appliance, or is serviced entirely by the " @@ -55687,7 +55894,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3353 +#: ../src/guestfs.pod:3357 msgid "" "Most new actions are of the first type, and get added to the " "C<daemon_functions> list. Each function has a unique procedure number used " @@ -55697,7 +55904,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3359 +#: ../src/guestfs.pod:3363 msgid "" "For library-only actions of the second type, add to the " "C<non_daemon_functions> list. Since these functions are serviced by the " @@ -55707,36 +55914,36 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3367 +#: ../src/guestfs.pod:3371 msgid "Implement the action (in C):" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3369 +#: ../src/guestfs.pod:3373 msgid "" "For daemon actions, implement the function C<do_E<lt>nameE<gt>> in the " "C<daemon/> directory." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3372 +#: ../src/guestfs.pod:3376 msgid "" "For library actions, implement the function C<guestfs__E<lt>nameE<gt>> " "(note: double underscore) in the C<src/> directory." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3375 +#: ../src/guestfs.pod:3379 msgid "In either case, use another function as an example of what to do." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3379 +#: ../src/guestfs.pod:3383 msgid "After making these changes, use C<make> to compile." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3381 +#: ../src/guestfs.pod:3385 msgid "" "Note that you don't need to implement the RPC, language bindings, manual " "pages or anything else. It's all automatically generated from the OCaml " @@ -55744,12 +55951,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3385 +#: ../src/guestfs.pod:3389 msgid "ADDING TESTS FOR AN API ACTION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3387 +#: ../src/guestfs.pod:3391 msgid "" "You can supply zero or as many tests as you want per API call. The tests " "can either be added as part of the API description " @@ -55759,61 +55966,61 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3393 +#: ../src/guestfs.pod:3397 msgid "" "The following describes the test environment used when you add an API test " "in C<actions.ml>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3396 +#: ../src/guestfs.pod:3400 msgid "The test environment has 4 block devices:" msgstr "" #. type: =item -#: ../src/guestfs.pod:3400 +#: ../src/guestfs.pod:3404 msgid "C</dev/sda> 500MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3402 +#: ../src/guestfs.pod:3406 msgid "General block device for testing." msgstr "" #. type: =item -#: ../src/guestfs.pod:3404 +#: ../src/guestfs.pod:3408 msgid "C</dev/sdb> 50MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3406 +#: ../src/guestfs.pod:3410 msgid "" "C</dev/sdb1> is an ext2 filesystem used for testing filesystem write " "operations." msgstr "" #. type: =item -#: ../src/guestfs.pod:3409 +#: ../src/guestfs.pod:3413 msgid "C</dev/sdc> 10MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3411 +#: ../src/guestfs.pod:3415 msgid "Used in a few tests where two block devices are needed." msgstr "" #. type: =item -#: ../src/guestfs.pod:3413 +#: ../src/guestfs.pod:3417 msgid "C</dev/sdd>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3415 +#: ../src/guestfs.pod:3419 msgid "ISO with fixed content (see C<images/test.iso>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3419 +#: ../src/guestfs.pod:3423 msgid "" "To be able to run the tests in a reasonable amount of time, the libguestfs " "appliance and block devices are reused between tests. So don't try testing " @@ -55821,7 +56028,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3423 +#: ../src/guestfs.pod:3427 msgid "" "Each test starts with an initial scenario, selected using one of the " "C<Init*> expressions, described in C<generator/types.ml>. These initialize " @@ -55831,7 +56038,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3429 +#: ../src/guestfs.pod:3433 msgid "" "You can add a prerequisite clause to any individual test. This is a " "run-time check, which, if it fails, causes the test to be skipped. Useful " @@ -55841,14 +56048,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3435 +#: ../src/guestfs.pod:3439 msgid "" "In addition, packagers can skip individual tests by setting environment " "variables before running C<make check>." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3438 +#: ../src/guestfs.pod:3442 #, no-wrap msgid "" " SKIP_TEST_<CMD>_<NUM>=1\n" @@ -55856,12 +56063,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3440 +#: ../src/guestfs.pod:3444 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3444 +#: ../src/guestfs.pod:3448 #, no-wrap msgid "" " SKIP_TEST_<CMD>=1\n" @@ -55869,17 +56076,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3446 +#: ../src/guestfs.pod:3450 msgid "eg: C<SKIP_TEST_ZEROFREE=1> skips all L</guestfs_zerofree> tests." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3448 +#: ../src/guestfs.pod:3452 msgid "Packagers can run only certain tests by setting for example:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3450 +#: ../src/guestfs.pod:3454 #, no-wrap msgid "" " TEST_ONLY=\"vfs_type zerofree\"\n" @@ -55887,29 +56094,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3452 +#: ../src/guestfs.pod:3456 msgid "" "See C<tests/c-api/tests.c> for more details of how these environment " "variables work." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3455 +#: ../src/guestfs.pod:3459 msgid "DEBUGGING NEW API ACTIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3457 +#: ../src/guestfs.pod:3461 msgid "Test new actions work before submitting them." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3459 +#: ../src/guestfs.pod:3463 msgid "You can use guestfish to try out new commands." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3461 +#: ../src/guestfs.pod:3465 msgid "" "Debugging the daemon is a problem because it runs inside a minimal " "environment. However you can fprintf messages in the daemon to stderr, and " @@ -55917,12 +56124,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3465 +#: ../src/guestfs.pod:3469 msgid "FORMATTING CODE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3467 +#: ../src/guestfs.pod:3471 msgid "" "Our C source code generally adheres to some basic code-formatting " "conventions. The existing code base is not totally consistent on this " @@ -55932,14 +56139,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3473 +#: ../src/guestfs.pod:3477 msgid "" "If you use Emacs, add the following to one of one of your start-up files " "(e.g., ~/.emacs), to help ensure that you get indentation right:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3476 +#: ../src/guestfs.pod:3480 #, no-wrap msgid "" " ;;; In libguestfs, indent with spaces everywhere (not TABs).\n" @@ -55955,7 +56162,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3486 +#: ../src/guestfs.pod:3490 #, no-wrap msgid "" " ;;; When editing C sources in libguestfs, use this style.\n" @@ -55973,17 +56180,17 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3498 +#: ../src/guestfs.pod:3502 msgid "TESTING YOUR CHANGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3500 +#: ../src/guestfs.pod:3504 msgid "Enable warnings when compiling (and fix any problems this finds):" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3503 +#: ../src/guestfs.pod:3507 #, no-wrap msgid "" " ./configure --enable-gcc-warnings\n" @@ -55991,59 +56198,59 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3505 +#: ../src/guestfs.pod:3509 msgid "Useful targets are:" msgstr "" #. type: =item -#: ../src/guestfs.pod:3509 +#: ../src/guestfs.pod:3513 msgid "C<make check>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3511 +#: ../src/guestfs.pod:3515 msgid "Runs the regular test suite." msgstr "" #. type: =item -#: ../src/guestfs.pod:3513 +#: ../src/guestfs.pod:3517 msgid "C<make syntax-check -j1 -k>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3515 +#: ../src/guestfs.pod:3519 msgid "Checks for various syntax and style problems in the code." msgstr "" #. type: =item -#: ../src/guestfs.pod:3517 +#: ../src/guestfs.pod:3521 msgid "C<make check-valgrind>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3519 +#: ../src/guestfs.pod:3523 msgid "Runs a subset of the test suite under valgrind." msgstr "" #. type: =item -#: ../src/guestfs.pod:3521 +#: ../src/guestfs.pod:3525 msgid "C<make check-valgrind-local-guests>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3523 +#: ../src/guestfs.pod:3527 msgid "" "Runs a subset of the test suite under valgrind using locally installed " "libvirt guests (read-only)." msgstr "" #. type: =item -#: ../src/guestfs.pod:3526 +#: ../src/guestfs.pod:3530 msgid "C<make check-with-appliance>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3528 +#: ../src/guestfs.pod:3532 msgid "" "Runs all tests using default appliance back-end. This only has any effect " "if a non-default attach-method was selected using C<./configure " @@ -56051,12 +56258,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3532 +#: ../src/guestfs.pod:3536 msgid "C<make check-with-upstream-qemu>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3534 +#: ../src/guestfs.pod:3538 msgid "" "Runs all tests using a local qemu binary. It looks for the qemu binary in " "QEMUDIR (defaults to C<$HOME/d/qemu>), but you can set this to another " @@ -56064,7 +56271,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3538 +#: ../src/guestfs.pod:3542 #, no-wrap msgid "" " make check-with-upstream-qemu QEMUDIR=/usr/src/qemu\n" @@ -56072,12 +56279,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3540 +#: ../src/guestfs.pod:3544 msgid "C<make check-with-upstream-libvirt>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3542 +#: ../src/guestfs.pod:3546 msgid "" "Runs all tests using a local libvirt. This only has any effect if the " "libvirt attach-method was selected using C<./configure " @@ -56085,14 +56292,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3546 +#: ../src/guestfs.pod:3550 msgid "" "It looks for libvirt in LIBVIRTDIR (defaults to C<$HOME/d/libvirt>), but you " "can set this to another directory on the command line, eg:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3549 +#: ../src/guestfs.pod:3553 #, no-wrap msgid "" " make check-with-upstream-libvirt LIBVIRTDIR=/usr/src/libvirt\n" @@ -56100,63 +56307,63 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3551 +#: ../src/guestfs.pod:3555 msgid "C<make check-slow>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3553 +#: ../src/guestfs.pod:3557 msgid "Runs some slow/long-running tests which are not run by default." msgstr "" #. type: =item -#: ../src/guestfs.pod:3555 +#: ../src/guestfs.pod:3559 msgid "C<make extra-tests>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3557 +#: ../src/guestfs.pod:3561 msgid "Equivalent to running all C<make check-*> rules (but not C<make check>)." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3562 +#: ../src/guestfs.pod:3566 msgid "DAEMON CUSTOM PRINTF FORMATTERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3564 +#: ../src/guestfs.pod:3568 msgid "" "In the daemon code we have created custom printf formatters C<%Q> and C<%R>, " "which are used to do shell quoting." msgstr "" #. type: =item -#: ../src/guestfs.pod:3569 +#: ../src/guestfs.pod:3573 msgid "%Q" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3571 +#: ../src/guestfs.pod:3575 msgid "" "Simple shell quoted string. Any spaces or other shell characters are " "escaped for you." msgstr "" #. type: =item -#: ../src/guestfs.pod:3574 +#: ../src/guestfs.pod:3578 msgid "%R" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3576 +#: ../src/guestfs.pod:3580 msgid "" "Same as C<%Q> except the string is treated as a path which is prefixed by " "the sysroot." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3583 +#: ../src/guestfs.pod:3587 #, no-wrap msgid "" " asprintf (&cmd, \"cat %R\", path);\n" @@ -56164,12 +56371,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3585 +#: ../src/guestfs.pod:3589 msgid "would produce C<cat /sysroot/some\\ path\\ with\\ spaces>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3587 +#: ../src/guestfs.pod:3591 msgid "" "I<Note:> Do I<not> use these when you are passing parameters to the " "C<command{,r,v,rv}()> functions. These parameters do NOT need to be quoted " @@ -56178,12 +56385,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3593 +#: ../src/guestfs.pod:3597 msgid "SUBMITTING YOUR NEW API ACTIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3595 +#: ../src/guestfs.pod:3599 msgid "" "Submit patches to the mailing list: " "L<http://www.redhat.com/mailman/listinfo/libguestfs> and CC to " @@ -56191,17 +56398,17 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3599 +#: ../src/guestfs.pod:3603 msgid "INTERNATIONALIZATION (I18N) SUPPORT" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3601 +#: ../src/guestfs.pod:3605 msgid "We support i18n (gettext anyhow) in the library." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3603 +#: ../src/guestfs.pod:3607 msgid "" "However many messages come from the daemon, and we don't translate those at " "the moment. One reason is that the appliance generally has all locale files " @@ -56210,113 +56417,113 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3609 +#: ../src/guestfs.pod:3613 msgid "" "Debugging messages are never translated, since they are intended for the " "programmers." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3612 +#: ../src/guestfs.pod:3616 msgid "SOURCE CODE SUBDIRECTORIES" msgstr "" #. type: =item -#: ../src/guestfs.pod:3616 +#: ../src/guestfs.pod:3620 msgid "C<align>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3618 +#: ../src/guestfs.pod:3622 msgid "L<virt-alignment-scan(1)> command and documentation." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3622 +#: ../src/guestfs.pod:3626 msgid "The libguestfs appliance, build scripts and so on." msgstr "" #. type: =item -#: ../src/guestfs.pod:3624 +#: ../src/guestfs.pod:3628 msgid "C<build-aux>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3626 +#: ../src/guestfs.pod:3630 msgid "Various build scripts used by autotools." msgstr "" #. type: =item -#: ../src/guestfs.pod:3628 +#: ../src/guestfs.pod:3632 msgid "C<cat>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3630 +#: ../src/guestfs.pod:3634 msgid "" "The L<virt-cat(1)>, L<virt-filesystems(1)> and L<virt-ls(1)> commands and " "documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3633 +#: ../src/guestfs.pod:3637 msgid "C<contrib>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3635 +#: ../src/guestfs.pod:3639 msgid "Outside contributions, experimental parts." msgstr "" #. type: =item -#: ../src/guestfs.pod:3637 +#: ../src/guestfs.pod:3641 msgid "C<daemon>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3639 +#: ../src/guestfs.pod:3643 msgid "" "The daemon that runs inside the libguestfs appliance and carries out " "actions." msgstr "" #. type: =item -#: ../src/guestfs.pod:3642 +#: ../src/guestfs.pod:3646 msgid "C<df>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3644 +#: ../src/guestfs.pod:3648 msgid "L<virt-df(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3646 +#: ../src/guestfs.pod:3650 msgid "C<edit>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3648 +#: ../src/guestfs.pod:3652 msgid "L<virt-edit(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3650 +#: ../src/guestfs.pod:3654 msgid "C<examples>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3652 +#: ../src/guestfs.pod:3656 msgid "C API example code." msgstr "" #. type: =item -#: ../src/guestfs.pod:3654 +#: ../src/guestfs.pod:3658 msgid "C<fish>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3656 +#: ../src/guestfs.pod:3660 msgid "" "L<guestfish(1)>, the command-line shell, and various shell scripts built on " "top such as L<virt-copy-in(1)>, L<virt-copy-out(1)>, L<virt-tar-in(1)>, " @@ -56324,101 +56531,101 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3662 +#: ../src/guestfs.pod:3666 msgid "L<virt-format(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3664 +#: ../src/guestfs.pod:3668 msgid "C<fuse>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3666 +#: ../src/guestfs.pod:3670 msgid "L<guestmount(1)>, FUSE (userspace filesystem) built on top of libguestfs." msgstr "" #. type: =item -#: ../src/guestfs.pod:3668 +#: ../src/guestfs.pod:3672 msgid "C<generator>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3670 +#: ../src/guestfs.pod:3674 msgid "" "The crucially important generator, used to automatically generate large " "amounts of boilerplate C code for things like RPC and bindings." msgstr "" #. type: =item -#: ../src/guestfs.pod:3673 +#: ../src/guestfs.pod:3677 msgid "C<gnulib>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3675 +#: ../src/guestfs.pod:3679 msgid "" "Gnulib is used as a portability library. A copy of gnulib is included under " "here." msgstr "" #. type: =item -#: ../src/guestfs.pod:3678 +#: ../src/guestfs.pod:3682 msgid "C<html>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3680 +#: ../src/guestfs.pod:3684 msgid "Generated HTML manual pages." msgstr "" #. type: =item -#: ../src/guestfs.pod:3682 +#: ../src/guestfs.pod:3686 msgid "C<inspector>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3684 +#: ../src/guestfs.pod:3688 msgid "L<virt-inspector(1)>, the virtual machine image inspector." msgstr "" #. type: =item -#: ../src/guestfs.pod:3686 +#: ../src/guestfs.pod:3690 msgid "C<logo>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3688 +#: ../src/guestfs.pod:3692 msgid "Logo used on the website. The fish is called Arthur by the way." msgstr "" #. type: =item -#: ../src/guestfs.pod:3690 +#: ../src/guestfs.pod:3694 msgid "C<m4>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3692 +#: ../src/guestfs.pod:3696 msgid "M4 macros used by autoconf." msgstr "" #. type: =item -#: ../src/guestfs.pod:3694 +#: ../src/guestfs.pod:3698 msgid "C<po>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3696 +#: ../src/guestfs.pod:3700 msgid "Translations of simple gettext strings." msgstr "" #. type: =item -#: ../src/guestfs.pod:3698 +#: ../src/guestfs.pod:3702 msgid "C<po-docs>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3700 +#: ../src/guestfs.pod:3704 msgid "" "The build infrastructure and PO files for translations of manpages and POD " "files. Eventually this will be combined with the C<po> directory, but that " @@ -56426,84 +56633,84 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3704 +#: ../src/guestfs.pod:3708 msgid "C<rescue>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3706 +#: ../src/guestfs.pod:3710 msgid "L<virt-rescue(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3708 +#: ../src/guestfs.pod:3712 msgid "C<resize>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3710 +#: ../src/guestfs.pod:3714 msgid "L<virt-resize(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3712 +#: ../src/guestfs.pod:3716 msgid "C<sparsify>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3714 +#: ../src/guestfs.pod:3718 msgid "L<virt-sparsify(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3716 +#: ../src/guestfs.pod:3720 msgid "C<src>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3718 +#: ../src/guestfs.pod:3722 msgid "Source code to the C library." msgstr "" #. type: =item -#: ../src/guestfs.pod:3720 +#: ../src/guestfs.pod:3724 msgid "C<sysprep>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3722 +#: ../src/guestfs.pod:3726 msgid "L<virt-sysprep(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3724 +#: ../src/guestfs.pod:3728 msgid "C<tests>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3726 +#: ../src/guestfs.pod:3730 msgid "Tests." msgstr "" #. type: =item -#: ../src/guestfs.pod:3728 +#: ../src/guestfs.pod:3732 msgid "C<test-tool>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3730 +#: ../src/guestfs.pod:3734 msgid "" "Test tool for end users to test if their qemu/kernel combination will work " "with libguestfs." msgstr "" #. type: =item -#: ../src/guestfs.pod:3733 +#: ../src/guestfs.pod:3737 msgid "C<tmp>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3735 +#: ../src/guestfs.pod:3739 msgid "" "Used for temporary files when running the tests (instead of C</tmp> etc). " "The reason is so that you can run multiple parallel tests of libguestfs " @@ -56512,77 +56719,82 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3740 +#: ../src/guestfs.pod:3744 msgid "C<tools>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3742 +#: ../src/guestfs.pod:3746 msgid "Command line tools written in Perl (L<virt-win-reg(1)> and many others)." msgstr "" #. type: =item -#: ../src/guestfs.pod:3744 +#: ../src/guestfs.pod:3748 msgid "C<csharp>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3746 +#: ../src/guestfs.pod:3750 msgid "C<erlang>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3748 +#: ../src/guestfs.pod:3752 msgid "C<gobject>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3750 +#: ../src/guestfs.pod:3754 msgid "C<haskell>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3752 +#: ../src/guestfs.pod:3756 msgid "C<java>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3754 +#: ../src/guestfs.pod:3758 +msgid "C<lua>" +msgstr "" + +#. type: =item +#: ../src/guestfs.pod:3760 msgid "C<ocaml>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3756 +#: ../src/guestfs.pod:3762 msgid "C<php>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3758 +#: ../src/guestfs.pod:3764 msgid "C<perl>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3760 +#: ../src/guestfs.pod:3766 msgid "C<python>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3762 +#: ../src/guestfs.pod:3768 msgid "C<ruby>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3764 +#: ../src/guestfs.pod:3770 msgid "Language bindings." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3768 +#: ../src/guestfs.pod:3774 msgid "MAKING A STABLE RELEASE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3770 +#: ../src/guestfs.pod:3776 msgid "" "When we make a stable release, there are several steps documented here. See " "L</LIBGUESTFS VERSION NUMBERS> for general information about the stable " @@ -56590,32 +56802,32 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3778 +#: ../src/guestfs.pod:3784 msgid "Check C<make && make check> works on at least Fedora, Debian and Ubuntu." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3783 +#: ../src/guestfs.pod:3789 msgid "Finalize C<guestfs-release-notes.pod>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3787 +#: ../src/guestfs.pod:3793 msgid "Update ROADMAP." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3791 +#: ../src/guestfs.pod:3797 msgid "Run C<src/api-support/update-from-tarballs.sh>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3795 +#: ../src/guestfs.pod:3801 msgid "Push and pull from Transifex." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3799 +#: ../src/guestfs.pod:3805 #, no-wrap msgid "" " tx push -s\n" @@ -56623,12 +56835,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3801 +#: ../src/guestfs.pod:3807 msgid "to push the latest POT files to Transifex. Then run:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3803 +#: ../src/guestfs.pod:3809 #, no-wrap msgid "" " ./tx-pull.sh\n" @@ -56636,24 +56848,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3805 +#: ../src/guestfs.pod:3811 msgid "which is a wrapper to pull the latest translated C<*.po> files." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3809 +#: ../src/guestfs.pod:3815 msgid "" "Create new stable and development directories under " "L<http://libguestfs.org/download>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3814 +#: ../src/guestfs.pod:3820 msgid "Create the branch in git:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3816 +#: ../src/guestfs.pod:3822 #, no-wrap msgid "" " git tag -a 1.XX.0 -m \"Version 1.XX.0 (stable)\"\n" @@ -56664,17 +56876,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:3823 +#: ../src/guestfs.pod:3829 msgid "LIMITS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3825 +#: ../src/guestfs.pod:3831 msgid "PROTOCOL LIMITS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3827 +#: ../src/guestfs.pod:3833 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 " @@ -56685,7 +56897,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3835 +#: ../src/guestfs.pod:3841 msgid "" "In libguestfs E<lt> 1.19.32, several calls had to encode either their entire " "argument list or their entire return value (or sometimes both) in a single " @@ -56701,7 +56913,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3848 +#: ../src/guestfs.pod:3854 msgid "" "L</guestfs_cat>, L</guestfs_find>, L</guestfs_read_file>, " "L</guestfs_read_lines>, L</guestfs_write>, L</guestfs_write_append>, " @@ -56710,19 +56922,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3853 +#: ../src/guestfs.pod:3859 msgid "" "See also L</UPLOADING> and L</DOWNLOADING> for further information about " "copying large amounts of data into or out of a filesystem." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3856 +#: ../src/guestfs.pod:3862 msgid "MAXIMUM NUMBER OF DISKS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3858 +#: ../src/guestfs.pod:3864 msgid "" "In libguestfs E<ge> 1.19.7, you can query the maximum number of disks that " "may be added by calling L</guestfs_max_disks>. In earlier versions of " @@ -56731,14 +56943,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3863 +#: ../src/guestfs.pod:3869 msgid "" "The rest of this section covers implementation details, which could change " "in future." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3866 +#: ../src/guestfs.pod:3872 msgid "" "When using virtio-scsi disks (the default if available in qemu) the current " "limit is B<255> disks. When using virtio-blk (the old default) the limit is " @@ -56747,26 +56959,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3871 +#: ../src/guestfs.pod:3877 msgid "" "Virtio-scsi as used by libguestfs is configured to use one target per disk, " "and 256 targets are available." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3874 +#: ../src/guestfs.pod:3880 msgid "" "Virtio-blk consumes 1 virtual PCI slot per disk, and PCI is limited to 31 " "slots, but some of these are used for other purposes." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3877 +#: ../src/guestfs.pod:3883 msgid "One virtual disk is used by libguestfs internally." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3879 +#: ../src/guestfs.pod:3885 msgid "" "Before libguestfs 1.19.7, disk names had to be a single character " "(eg. C</dev/sda> through C</dev/sdz>), and since one disk is reserved, that " @@ -56774,48 +56986,48 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3884 +#: ../src/guestfs.pod:3890 msgid "" "In libguestfs E<ge> 1.20 it is possible to hot plug disks. See " "L</HOTPLUGGING>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3887 +#: ../src/guestfs.pod:3893 msgid "MAXIMUM NUMBER OF PARTITIONS PER DISK" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3889 +#: ../src/guestfs.pod:3895 msgid "Virtio limits the maximum number of partitions per disk to B<15>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3891 +#: ../src/guestfs.pod:3897 msgid "" "This is because it reserves 4 bits for the minor device number (thus " "C</dev/vda>, and C</dev/vda1> through C</dev/vda15>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3894 +#: ../src/guestfs.pod:3900 msgid "" "If you attach a disk with more than 15 partitions, the extra partitions are " "ignored by libguestfs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3897 +#: ../src/guestfs.pod:3903 msgid "MAXIMUM SIZE OF A DISK" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3899 +#: ../src/guestfs.pod:3905 msgid "Probably the limit is between 2**63-1 and 2**64-1 bytes." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3901 +#: ../src/guestfs.pod:3907 msgid "" "We have tested block devices up to 1 exabyte (2**60 or " "1,152,921,504,606,846,976 bytes) using sparse files backed by an XFS host " @@ -56823,7 +57035,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3905 +#: ../src/guestfs.pod:3911 msgid "" "Although libguestfs probably does not impose any limit, the underlying host " "storage will. If you store disk images on a host ext4 filesystem, then the " @@ -56833,19 +57045,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3911 +#: ../src/guestfs.pod:3917 msgid "" "For the hugest disk image files, we recommend using XFS on the host for " "storage." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3914 +#: ../src/guestfs.pod:3920 msgid "MAXIMUM SIZE OF A PARTITION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3916 +#: ../src/guestfs.pod:3922 msgid "" "The MBR (ie. classic MS-DOS) partitioning scheme uses 32 bit sector " "numbers. Assuming a 512 byte sector size, this means that MBR cannot " @@ -56853,7 +57065,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3920 +#: ../src/guestfs.pod:3926 msgid "" "It is recommended that you use GPT partitions on disks which are larger than " "this size. GPT uses 64 bit sector numbers and so can address partitions " @@ -56861,12 +57073,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3925 +#: ../src/guestfs.pod:3931 msgid "MAXIMUM SIZE OF A FILESYSTEM, FILES, DIRECTORIES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3927 +#: ../src/guestfs.pod:3933 msgid "" "This depends on the filesystem type. libguestfs itself does not impose any " "known limit. Consult Wikipedia or the filesystem documentation to find out " @@ -56874,12 +57086,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3931 +#: ../src/guestfs.pod:3937 msgid "MAXIMUM UPLOAD AND DOWNLOAD" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3933 +#: ../src/guestfs.pod:3939 msgid "" "The API functions L</guestfs_upload>, L</guestfs_download>, " "L</guestfs_tar_in>, L</guestfs_tar_out> and the like allow unlimited sized " @@ -56887,12 +57099,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3937 +#: ../src/guestfs.pod:3943 msgid "INSPECTION LIMITS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3939 +#: ../src/guestfs.pod:3945 msgid "" "The inspection code has several arbitrary limits on things like the size of " "Windows Registry hive it will read, and the length of product name. These " @@ -56902,54 +57114,54 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3965 +#: ../src/guestfs.pod:3971 msgid "" "Choose the default way to create the appliance. See " "L</guestfs_set_attach_method>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3977 +#: ../src/guestfs.pod:3983 msgid "See also L</LIBGUESTFS_TMPDIR>, L</guestfs_set_cachedir>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3981 +#: ../src/guestfs.pod:3987 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: textblock -#: ../src/guestfs.pod:3993 +#: ../src/guestfs.pod:3999 msgid "" "Set the path that libguestfs uses to search for a supermin appliance. See " "the discussion of paths in section L</PATH> above." msgstr "" #. type: textblock -#: ../src/guestfs.pod:4002 +#: ../src/guestfs.pod:4008 msgid "See also L</QEMU WRAPPERS> above." msgstr "" #. type: textblock -#: ../src/guestfs.pod:4012 +#: ../src/guestfs.pod:4018 msgid "See also L</LIBGUESTFS_CACHEDIR>, L</guestfs_set_tmpdir>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:4016 +#: ../src/guestfs.pod:4022 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: textblock -#: ../src/guestfs.pod:4027 +#: ../src/guestfs.pod:4033 msgid "" "L<guestfs-examples(3)>, L<guestfs-erlang(3)>, L<guestfs-java(3)>, " -"L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, " -"L<guestfs-ruby(3)>, L<guestfish(1)>, L<guestmount(1)>, " +"L<guestfs-lua(3)>, L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, " +"L<guestfs-python(3)>, L<guestfs-ruby(3)>, L<guestfish(1)>, L<guestmount(1)>, " "L<virt-alignment-scan(1)>, L<virt-cat(1)>, L<virt-copy-in(1)>, " "L<virt-copy-out(1)>, L<virt-df(1)>, L<virt-edit(1)>, L<virt-filesystems(1)>, " "L<virt-format(1)>, L<virt-inspector(1)>, L<virt-list-filesystems(1)>, " @@ -56964,7 +57176,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:4070 +#: ../src/guestfs.pod:4077 msgid "" "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, " "L<lvm(8)>, L<disktype(1)>." |