diff options
Diffstat (limited to 'po-docs/libguestfs-docs.pot')
-rw-r--r-- | po-docs/libguestfs-docs.pot | 2511 |
1 files changed, 1324 insertions, 1187 deletions
diff --git a/po-docs/libguestfs-docs.pot b/po-docs/libguestfs-docs.pot index 05e46bc4..ceac25fa 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.16.31\n" +"Project-Id-Version: libguestfs 1.16.32\n" "Report-Msgid-Bugs-To: libguestfs@redhat.com\n" -"POT-Creation-Date: 2012-09-19 15:19+0200\n" +"POT-Creation-Date: 2012-10-01 16:29+0200\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" @@ -309,7 +309,7 @@ msgid "" msgstr "" #. type: textblock -#: ../align/virt-alignment-scan.pod:132 ../cat/virt-cat.pod:114 ../cat/virt-filesystems.pod:179 ../cat/virt-ls.pod:337 ../clone/virt-sysprep.pod:104 ../df/virt-df.pod:110 ../edit/virt-edit.pod:141 ../fish/guestfish.pod:242 ../fish/guestfish.pod:673 ../format/virt-format.pod:96 ../inspector/virt-inspector.pod:350 ../rescue/virt-rescue.pod:161 ../src/guestfs.pod:2977 +#: ../align/virt-alignment-scan.pod:132 ../cat/virt-cat.pod:114 ../cat/virt-filesystems.pod:179 ../cat/virt-ls.pod:337 ../clone/virt-sysprep.pod:104 ../df/virt-df.pod:110 ../edit/virt-edit.pod:141 ../fish/guestfish.pod:242 ../fish/guestfish.pod:673 ../format/virt-format.pod:96 ../inspector/virt-inspector.pod:350 ../rescue/virt-rescue.pod:161 ../src/guestfs.pod:2983 msgid "For example:" msgstr "" @@ -673,12 +673,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231 ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483 ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:241 ../edit/virt-edit.pod:356 ../inspector/virt-inspector.pod:366 ../rescue/virt-rescue.pod:303 ../resize/virt-resize.pod:690 ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260 ../tools/virt-make-fs.pl:572 ../tools/virt-tar.pl:287 ../tools/virt-win-reg.pl:744 +#: ../align/virt-alignment-scan.pod:311 ../cat/virt-cat.pod:231 ../cat/virt-filesystems.pod:373 ../cat/virt-ls.pod:483 ../clone/virt-sysprep.pod:475 ../df/virt-df.pod:241 ../edit/virt-edit.pod:356 ../inspector/virt-inspector.pod:366 ../rescue/virt-rescue.pod:303 ../resize/virt-resize.pod:690 ../tools/virt-list-filesystems.pl:190 ../tools/virt-list-partitions.pl:260 ../tools/virt-make-fs.pl:572 ../tools/virt-tar.pl:287 ../tools/virt-win-reg.pl:734 msgid "SHELL QUOTING" msgstr "" #. type: textblock -#: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233 ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485 ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:243 ../edit/virt-edit.pod:358 ../inspector/virt-inspector.pod:368 ../rescue/virt-rescue.pod:305 ../resize/virt-resize.pod:692 ../tools/virt-list-filesystems.pl:192 ../tools/virt-list-partitions.pl:262 ../tools/virt-make-fs.pl:574 ../tools/virt-tar.pl:289 ../tools/virt-win-reg.pl:752 +#: ../align/virt-alignment-scan.pod:313 ../cat/virt-cat.pod:233 ../cat/virt-filesystems.pod:375 ../cat/virt-ls.pod:485 ../clone/virt-sysprep.pod:477 ../df/virt-df.pod:243 ../edit/virt-edit.pod:358 ../inspector/virt-inspector.pod:368 ../rescue/virt-rescue.pod:305 ../resize/virt-resize.pod:692 ../tools/virt-list-filesystems.pl:192 ../tools/virt-list-partitions.pl:262 ../tools/virt-make-fs.pl:574 ../tools/virt-tar.pl:289 ../tools/virt-win-reg.pl:742 msgid "" "Libvirt guest names can contain arbitrary characters, some of which have " "meaning to the shell such as C<#> and space. You may need to quote or " @@ -697,7 +697,7 @@ msgid "This program returns:" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:324 ../align/virt-alignment-scan.pod:330 ../align/virt-alignment-scan.pod:336 ../align/virt-alignment-scan.pod:343 ../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 ../clone/virt-sysprep.pod:283 ../clone/virt-sysprep.pod:287 ../clone/virt-sysprep.pod:291 ../clone/virt-sysprep.pod:295 ../clone/virt-sysprep.pod:310 ../clone/virt-sysprep.pod:314 ../clone/virt-sysprep.pod:318 ../clone/virt-sysprep.pod:322 ../clone/virt-sysprep.pod:326 ../clone/virt-sysprep.pod:362 ../clone/virt-sysprep.pod:384 ../clone/virt-sysprep.pod:388 ../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-recipes.pod:131 ../examples/guestfs-recipes.pod:135 ../examples/guestfs-recipes.pod:139 ../examples/guestfs-recipes.pod:165 ../examples/guestfs-recipes.pod:170 ../examples/guestfs-recipes.pod:260 ../examples/guestfs-recipes.pod:264 ../examples/guestfs-recipes.pod:268 ../examples/guestfs-recipes.pod:272 ../examples/guestfs-recipes.pod:276 ../examples/guestfs-testing.pod:110 ../examples/guestfs-testing.pod:114 ../examples/guestfs-testing.pod:118 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:444 ../fish/guestfish-actions.pod:452 ../fish/guestfish-actions.pod:459 ../fish/guestfish-actions.pod:466 ../fish/guestfish-actions.pod:1336 ../fish/guestfish-actions.pod:1340 ../fish/guestfish-actions.pod:1344 ../fish/guestfish-actions.pod:1348 ../fish/guestfish-actions.pod:1356 ../fish/guestfish-actions.pod:1360 ../fish/guestfish-actions.pod:1364 ../fish/guestfish-actions.pod:1374 ../fish/guestfish-actions.pod:1378 ../fish/guestfish-actions.pod:1382 ../fish/guestfish-actions.pod:1472 ../fish/guestfish-actions.pod:1476 ../fish/guestfish-actions.pod:1481 ../fish/guestfish-actions.pod:1486 ../fish/guestfish-actions.pod:1528 ../fish/guestfish-actions.pod:1532 ../fish/guestfish-actions.pod:1537 ../fish/guestfish-actions.pod:1793 ../fish/guestfish-actions.pod:1800 ../fish/guestfish-actions.pod:1807 ../fish/guestfish-actions.pod:2208 ../fish/guestfish-actions.pod:2214 ../fish/guestfish-actions.pod:2222 ../fish/guestfish-actions.pod:2229 ../fish/guestfish-actions.pod:2236 ../fish/guestfish.pod:445 ../fish/guestfish.pod:449 ../fish/guestfish.pod:453 ../fish/guestfish.pod:457 ../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:32 ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:59 ../sparsify/virt-sparsify.pod:65 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:644 ../src/guestfs-actions.pod:652 ../src/guestfs-actions.pod:659 ../src/guestfs-actions.pod:666 ../src/guestfs-actions.pod:2202 ../src/guestfs-actions.pod:2206 ../src/guestfs-actions.pod:2210 ../src/guestfs-actions.pod:2214 ../src/guestfs-actions.pod:2222 ../src/guestfs-actions.pod:2226 ../src/guestfs-actions.pod:2230 ../src/guestfs-actions.pod:2240 ../src/guestfs-actions.pod:2244 ../src/guestfs-actions.pod:2248 ../src/guestfs-actions.pod:2386 ../src/guestfs-actions.pod:2390 ../src/guestfs-actions.pod:2395 ../src/guestfs-actions.pod:2400 ../src/guestfs-actions.pod:2461 ../src/guestfs-actions.pod:2465 ../src/guestfs-actions.pod:2470 ../src/guestfs-actions.pod:2885 ../src/guestfs-actions.pod:2892 ../src/guestfs-actions.pod:2899 ../src/guestfs-actions.pod:3442 ../src/guestfs-actions.pod:3448 ../src/guestfs-actions.pod:3456 ../src/guestfs-actions.pod:3463 ../src/guestfs-actions.pod:3470 ../src/guestfs.pod:382 ../src/guestfs.pod:387 ../src/guestfs.pod:392 ../src/guestfs.pod:396 ../src/guestfs.pod:401 ../src/guestfs.pod:405 ../src/guestfs.pod:410 ../src/guestfs.pod:415 ../src/guestfs.pod:1117 ../src/guestfs.pod:1121 ../src/guestfs.pod:1125 ../src/guestfs.pod:1130 ../src/guestfs.pod:1138 ../src/guestfs.pod:1157 ../src/guestfs.pod:1165 ../src/guestfs.pod:1182 ../src/guestfs.pod:1187 ../src/guestfs.pod:1191 ../src/guestfs.pod:1248 ../src/guestfs.pod:1252 ../src/guestfs.pod:1256 ../src/guestfs.pod:1260 ../src/guestfs.pod:1264 ../src/guestfs.pod:1268 ../src/guestfs.pod:1783 ../src/guestfs.pod:1788 ../src/guestfs.pod:1792 ../src/guestfs.pod:1894 ../src/guestfs.pod:1899 ../src/guestfs.pod:1903 ../src/guestfs.pod:1913 ../src/guestfs.pod:2202 ../src/guestfs.pod:2207 ../src/guestfs.pod:2213 ../src/guestfs.pod:2221 ../src/guestfs.pod:2739 ../src/guestfs.pod:2745 ../src/guestfs.pod:2750 ../src/guestfs.pod:2756 ../src/guestfs.pod:3153 ../src/guestfs.pod:3158 ../src/guestfs.pod:3162 ../src/guestfs.pod:3166 ../src/guestfs.pod:3170 ../src/guestfs.pod:3184 ../src/guestfs.pod:3189 ../tools/virt-win-reg.pl:197 ../tools/virt-win-reg.pl:202 ../tools/virt-win-reg.pl:208 ../tools/virt-win-reg.pl:721 ../tools/virt-win-reg.pl:727 ../tools/virt-win-reg.pl:733 +#: ../align/virt-alignment-scan.pod:324 ../align/virt-alignment-scan.pod:330 ../align/virt-alignment-scan.pod:336 ../align/virt-alignment-scan.pod:343 ../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 ../clone/virt-sysprep.pod:283 ../clone/virt-sysprep.pod:287 ../clone/virt-sysprep.pod:291 ../clone/virt-sysprep.pod:295 ../clone/virt-sysprep.pod:310 ../clone/virt-sysprep.pod:314 ../clone/virt-sysprep.pod:318 ../clone/virt-sysprep.pod:322 ../clone/virt-sysprep.pod:326 ../clone/virt-sysprep.pod:362 ../clone/virt-sysprep.pod:384 ../clone/virt-sysprep.pod:388 ../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-recipes.pod:133 ../examples/guestfs-recipes.pod:137 ../examples/guestfs-recipes.pod:141 ../examples/guestfs-recipes.pod:167 ../examples/guestfs-recipes.pod:172 ../examples/guestfs-recipes.pod:262 ../examples/guestfs-recipes.pod:266 ../examples/guestfs-recipes.pod:270 ../examples/guestfs-recipes.pod:274 ../examples/guestfs-recipes.pod:278 ../examples/guestfs-testing.pod:124 ../examples/guestfs-testing.pod:128 ../examples/guestfs-testing.pod:132 ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:444 ../fish/guestfish-actions.pod:452 ../fish/guestfish-actions.pod:459 ../fish/guestfish-actions.pod:466 ../fish/guestfish-actions.pod:1336 ../fish/guestfish-actions.pod:1340 ../fish/guestfish-actions.pod:1344 ../fish/guestfish-actions.pod:1348 ../fish/guestfish-actions.pod:1356 ../fish/guestfish-actions.pod:1360 ../fish/guestfish-actions.pod:1364 ../fish/guestfish-actions.pod:1374 ../fish/guestfish-actions.pod:1378 ../fish/guestfish-actions.pod:1382 ../fish/guestfish-actions.pod:1472 ../fish/guestfish-actions.pod:1476 ../fish/guestfish-actions.pod:1481 ../fish/guestfish-actions.pod:1486 ../fish/guestfish-actions.pod:1528 ../fish/guestfish-actions.pod:1532 ../fish/guestfish-actions.pod:1537 ../fish/guestfish-actions.pod:1793 ../fish/guestfish-actions.pod:1800 ../fish/guestfish-actions.pod:1807 ../fish/guestfish-actions.pod:2208 ../fish/guestfish-actions.pod:2214 ../fish/guestfish-actions.pod:2222 ../fish/guestfish-actions.pod:2229 ../fish/guestfish-actions.pod:2236 ../fish/guestfish.pod:445 ../fish/guestfish.pod:449 ../fish/guestfish.pod:453 ../fish/guestfish.pod:457 ../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:32 ../sparsify/virt-sparsify.pod:39 ../sparsify/virt-sparsify.pod:43 ../sparsify/virt-sparsify.pod:49 ../sparsify/virt-sparsify.pod:54 ../sparsify/virt-sparsify.pod:59 ../sparsify/virt-sparsify.pod:65 ../src/guestfs-actions.pod:22 ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:644 ../src/guestfs-actions.pod:652 ../src/guestfs-actions.pod:659 ../src/guestfs-actions.pod:666 ../src/guestfs-actions.pod:2202 ../src/guestfs-actions.pod:2206 ../src/guestfs-actions.pod:2210 ../src/guestfs-actions.pod:2214 ../src/guestfs-actions.pod:2222 ../src/guestfs-actions.pod:2226 ../src/guestfs-actions.pod:2230 ../src/guestfs-actions.pod:2240 ../src/guestfs-actions.pod:2244 ../src/guestfs-actions.pod:2248 ../src/guestfs-actions.pod:2386 ../src/guestfs-actions.pod:2390 ../src/guestfs-actions.pod:2395 ../src/guestfs-actions.pod:2400 ../src/guestfs-actions.pod:2461 ../src/guestfs-actions.pod:2465 ../src/guestfs-actions.pod:2470 ../src/guestfs-actions.pod:2885 ../src/guestfs-actions.pod:2892 ../src/guestfs-actions.pod:2899 ../src/guestfs-actions.pod:3442 ../src/guestfs-actions.pod:3448 ../src/guestfs-actions.pod:3456 ../src/guestfs-actions.pod:3463 ../src/guestfs-actions.pod:3470 ../src/guestfs.pod:388 ../src/guestfs.pod:393 ../src/guestfs.pod:398 ../src/guestfs.pod:402 ../src/guestfs.pod:407 ../src/guestfs.pod:411 ../src/guestfs.pod:416 ../src/guestfs.pod:421 ../src/guestfs.pod:1123 ../src/guestfs.pod:1127 ../src/guestfs.pod:1131 ../src/guestfs.pod:1136 ../src/guestfs.pod:1144 ../src/guestfs.pod:1163 ../src/guestfs.pod:1171 ../src/guestfs.pod:1188 ../src/guestfs.pod:1193 ../src/guestfs.pod:1197 ../src/guestfs.pod:1254 ../src/guestfs.pod:1258 ../src/guestfs.pod:1262 ../src/guestfs.pod:1266 ../src/guestfs.pod:1270 ../src/guestfs.pod:1274 ../src/guestfs.pod:1789 ../src/guestfs.pod:1794 ../src/guestfs.pod:1798 ../src/guestfs.pod:1900 ../src/guestfs.pod:1905 ../src/guestfs.pod:1909 ../src/guestfs.pod:1919 ../src/guestfs.pod:2208 ../src/guestfs.pod:2213 ../src/guestfs.pod:2219 ../src/guestfs.pod:2227 ../src/guestfs.pod:2745 ../src/guestfs.pod:2751 ../src/guestfs.pod:2756 ../src/guestfs.pod:2762 ../src/guestfs.pod:3159 ../src/guestfs.pod:3164 ../src/guestfs.pod:3168 ../src/guestfs.pod:3172 ../src/guestfs.pod:3176 ../src/guestfs.pod:3190 ../src/guestfs.pod:3195 ../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 "" @@ -712,7 +712,7 @@ msgid "successful exit, all partitions are aligned E<ge> 64K for best performanc msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:332 ../src/guestfs.pod:1440 +#: ../align/virt-alignment-scan.pod:332 ../src/guestfs.pod:1446 msgid "1" msgstr "" @@ -722,7 +722,7 @@ msgid "an error scanning the disk image or guest" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:338 ../src/guestfs.pod:1444 +#: ../align/virt-alignment-scan.pod:338 ../src/guestfs.pod:1450 msgid "2" msgstr "" @@ -734,7 +734,7 @@ msgid "" msgstr "" #. type: =item -#: ../align/virt-alignment-scan.pod:345 ../src/guestfs.pod:1448 +#: ../align/virt-alignment-scan.pod:345 ../src/guestfs.pod:1454 msgid "3" msgstr "" @@ -746,7 +746,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495 ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:253 ../edit/virt-edit.pod:368 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:422 ../examples/guestfs-testing.pod:291 ../fish/guestfish.pod:1268 ../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:396 ../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:325 ../resize/virt-resize.pod:702 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:284 ../src/guestfs.pod:3361 ../test-tool/libguestfs-test-tool.pod:106 ../tools/virt-list-filesystems.pl:197 ../tools/virt-list-partitions.pl:267 ../tools/virt-make-fs.pl:579 ../tools/virt-tar.pl:294 ../tools/virt-win-reg.pl:757 +#: ../align/virt-alignment-scan.pod:352 ../cat/virt-cat.pod:243 ../cat/virt-filesystems.pod:385 ../cat/virt-ls.pod:495 ../clone/virt-sysprep.pod:486 ../df/virt-df.pod:253 ../edit/virt-edit.pod:368 ../erlang/examples/guestfs-erlang.pod:97 ../examples/guestfs-examples.pod:33 ../examples/guestfs-recipes.pod:475 ../examples/guestfs-testing.pod:305 ../fish/guestfish.pod:1268 ../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:396 ../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:325 ../resize/virt-resize.pod:702 ../ruby/examples/guestfs-ruby.pod:36 ../sparsify/virt-sparsify.pod:284 ../src/guestfs.pod:3367 ../test-tool/libguestfs-test-tool.pod:106 ../tools/virt-list-filesystems.pl:197 ../tools/virt-list-partitions.pl:267 ../tools/virt-make-fs.pl:579 ../tools/virt-tar.pl:294 ../tools/virt-win-reg.pl:747 msgid "SEE ALSO" msgstr "" @@ -758,17 +758,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252 ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507 ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:261 ../edit/virt-edit.pod:382 ../format/virt-format.pod:187 ../rescue/virt-rescue.pod:334 ../resize/virt-resize.pod:725 ../sparsify/virt-sparsify.pod:297 ../tools/virt-list-filesystems.pl:210 ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:594 ../tools/virt-tar.pl:309 ../tools/virt-win-reg.pl:772 +#: ../align/virt-alignment-scan.pod:361 ../cat/virt-cat.pod:252 ../cat/virt-filesystems.pod:396 ../cat/virt-ls.pod:507 ../clone/virt-sysprep.pod:501 ../df/virt-df.pod:261 ../edit/virt-edit.pod:382 ../format/virt-format.pod:187 ../rescue/virt-rescue.pod:334 ../resize/virt-resize.pod:725 ../sparsify/virt-sparsify.pod:297 ../tools/virt-list-filesystems.pl:210 ../tools/virt-list-partitions.pl:279 ../tools/virt-make-fs.pl:594 ../tools/virt-tar.pl:309 ../tools/virt-win-reg.pl:762 msgid "AUTHOR" msgstr "" #. type: textblock -#: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254 ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509 ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:263 ../edit/virt-edit.pod:384 ../format/virt-format.pod:189 ../inspector/virt-inspector.pod:516 ../rescue/virt-rescue.pod:336 ../resize/virt-resize.pod:727 ../sparsify/virt-sparsify.pod:299 ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281 ../tools/virt-make-fs.pl:596 ../tools/virt-tar.pl:311 ../tools/virt-win-reg.pl:774 +#: ../align/virt-alignment-scan.pod:363 ../cat/virt-cat.pod:254 ../cat/virt-filesystems.pod:398 ../cat/virt-ls.pod:509 ../clone/virt-sysprep.pod:503 ../df/virt-df.pod:263 ../edit/virt-edit.pod:384 ../format/virt-format.pod:189 ../inspector/virt-inspector.pod:516 ../rescue/virt-rescue.pod:336 ../resize/virt-resize.pod:727 ../sparsify/virt-sparsify.pod:299 ../tools/virt-list-filesystems.pl:212 ../tools/virt-list-partitions.pl:281 ../tools/virt-make-fs.pl:596 ../tools/virt-tar.pl:311 ../tools/virt-win-reg.pl:764 msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>" msgstr "" #. type: =head1 -#: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511 ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:265 ../edit/virt-edit.pod:386 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:439 ../examples/guestfs-testing.pod:302 ../fish/guestfish.pod:1300 ../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:411 ../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:338 ../resize/virt-resize.pod:729 ../ruby/examples/guestfs-ruby.pod:52 ../sparsify/virt-sparsify.pod:301 ../src/guestfs.pod:3413 ../test-tool/libguestfs-test-tool.pod:116 ../tools/virt-list-filesystems.pl:214 ../tools/virt-list-partitions.pl:283 ../tools/virt-make-fs.pl:598 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:776 +#: ../align/virt-alignment-scan.pod:365 ../cat/virt-cat.pod:256 ../cat/virt-filesystems.pod:400 ../cat/virt-ls.pod:511 ../clone/virt-sysprep.pod:505 ../df/virt-df.pod:265 ../edit/virt-edit.pod:386 ../erlang/examples/guestfs-erlang.pod:114 ../examples/guestfs-examples.pod:49 ../examples/guestfs-recipes.pod:492 ../examples/guestfs-testing.pod:316 ../fish/guestfish.pod:1300 ../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:411 ../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:338 ../resize/virt-resize.pod:729 ../ruby/examples/guestfs-ruby.pod:52 ../sparsify/virt-sparsify.pod:301 ../src/guestfs.pod:3419 ../test-tool/libguestfs-test-tool.pod:116 ../tools/virt-list-filesystems.pl:214 ../tools/virt-list-partitions.pl:283 ../tools/virt-make-fs.pl:598 ../tools/virt-tar.pl:313 ../tools/virt-win-reg.pl:766 msgid "COPYRIGHT" msgstr "" @@ -1886,7 +1886,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:41 ../examples/guestfs-testing.pod:182 +#: ../cat/virt-ls.pod:41 ../examples/guestfs-testing.pod:196 msgid "List all setuid or setgid programs in a Linux virtual machine:" msgstr "" @@ -1899,7 +1899,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:45 ../examples/guestfs-testing.pod:186 +#: ../cat/virt-ls.pod:45 ../examples/guestfs-testing.pod:200 msgid "List all public-writable directories in a Linux virtual machine:" msgstr "" @@ -1912,7 +1912,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:49 ../examples/guestfs-testing.pod:190 +#: ../cat/virt-ls.pod:49 ../examples/guestfs-testing.pod:204 msgid "List all Unix domain sockets in a Linux virtual machine:" msgstr "" @@ -1925,7 +1925,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:53 ../examples/guestfs-testing.pod:194 +#: ../cat/virt-ls.pod:53 ../examples/guestfs-testing.pod:208 msgid "List all regular files with filenames ending in '.png':" msgstr "" @@ -1951,7 +1951,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:61 ../examples/guestfs-testing.pod:202 +#: ../cat/virt-ls.pod:61 ../examples/guestfs-testing.pod:216 msgid "Find everything modified in the last 7 days:" msgstr "" @@ -1964,7 +1964,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:65 ../examples/guestfs-testing.pod:206 +#: ../cat/virt-ls.pod:65 ../examples/guestfs-testing.pod:220 msgid "Find regular files modified in the last 24 hours:" msgstr "" @@ -2547,7 +2547,7 @@ msgid "" msgstr "" #. type: textblock -#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:267 ../edit/virt-edit.pod:388 ../examples/guestfs-recipes.pod:441 ../fish/guestfish.pod:1302 ../fuse/guestmount.pod:413 ../rescue/virt-rescue.pod:340 ../src/guestfs.pod:3415 ../test-tool/libguestfs-test-tool.pod:118 ../tools/virt-list-partitions.pl:285 +#: ../cat/virt-ls.pod:513 ../df/virt-df.pod:267 ../edit/virt-edit.pod:388 ../examples/guestfs-recipes.pod:494 ../fish/guestfish.pod:1302 ../fuse/guestmount.pod:413 ../rescue/virt-rescue.pod:340 ../src/guestfs.pod:3421 ../test-tool/libguestfs-test-tool.pod:118 ../tools/virt-list-partitions.pl:285 msgid "Copyright (C) 2009-2012 Red Hat Inc." msgstr "" @@ -3242,7 +3242,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../clone/virt-sysprep.pod:429 ../src/guestfs.pod:1233 +#: ../clone/virt-sysprep.pod:429 ../src/guestfs.pod:1239 msgid "SECURITY" msgstr "" @@ -4147,7 +4147,7 @@ msgid "" msgstr "" #. type: =head1 -#: ../edit/virt-edit.pod:343 ../fish/guestfish.pod:1119 ../rescue/virt-rescue.pod:298 ../sparsify/virt-sparsify.pod:257 ../src/guestfs.pod:3300 ../test-tool/libguestfs-test-tool.pod:101 +#: ../edit/virt-edit.pod:343 ../fish/guestfish.pod:1119 ../rescue/virt-rescue.pod:298 ../sparsify/virt-sparsify.pod:257 ../src/guestfs.pod:3306 ../test-tool/libguestfs-test-tool.pod:101 msgid "ENVIRONMENT VARIABLES" msgstr "" @@ -4390,17 +4390,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:435 ../examples/guestfs-testing.pod:298 ../fish/guestfish.pod:1296 ../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:407 ../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:3409 ../test-tool/libguestfs-test-tool.pod:112 +#: ../erlang/examples/guestfs-erlang.pod:110 ../examples/guestfs-examples.pod:45 ../examples/guestfs-recipes.pod:488 ../examples/guestfs-testing.pod:312 ../fish/guestfish.pod:1296 ../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:407 ../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:3415 ../test-tool/libguestfs-test-tool.pod:112 msgid "AUTHORS" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:437 ../examples/guestfs-testing.pod:300 ../fish/guestfish.pod:1298 ../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:409 ../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:3411 ../test-tool/libguestfs-test-tool.pod:114 +#: ../erlang/examples/guestfs-erlang.pod:112 ../examples/guestfs-examples.pod:47 ../examples/guestfs-recipes.pod:490 ../examples/guestfs-testing.pod:314 ../fish/guestfish.pod:1298 ../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:409 ../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:3417 ../test-tool/libguestfs-test-tool.pod:114 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)" msgstr "" #. type: textblock -#: ../erlang/examples/guestfs-erlang.pod:116 ../examples/guestfs-testing.pod:304 ../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:303 +#: ../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:303 msgid "Copyright (C) 2011-2012 Red Hat Inc." msgstr "" @@ -4757,38 +4757,43 @@ msgstr "" msgid "To list the filesystems in a disk image, use L<virt-filesystems(1)>." msgstr "" -#. type: =head1 +#. type: textblock #: ../examples/guestfs-recipes.pod:125 +msgid "See also L</Uploading raw filesystem content>." +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:127 msgid "Edit grub configuration in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:127 +#: ../examples/guestfs-recipes.pod:129 msgid "You can use this to:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:133 +#: ../examples/guestfs-recipes.pod:135 msgid "Fix a virtual machine that does not boot." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:137 +#: ../examples/guestfs-recipes.pod:139 msgid "Change which kernel is used to boot the VM." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:141 +#: ../examples/guestfs-recipes.pod:143 msgid "Change kernel command line options." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:145 +#: ../examples/guestfs-recipes.pod:147 msgid "Use L<virt-edit(1)> to edit the grub configuration:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:147 +#: ../examples/guestfs-recipes.pod:149 #, no-wrap msgid "" " virt-edit -d BrokenGuest /boot/grub/grub.conf\n" @@ -4796,14 +4801,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:149 +#: ../examples/guestfs-recipes.pod:151 msgid "" "or for general tinkering inside an unbootable VM use L<virt-rescue(1)> like " "this:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:152 +#: ../examples/guestfs-recipes.pod:154 #, no-wrap msgid "" " virt-rescue -d BrokenGuest\n" @@ -4811,17 +4816,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:154 +#: ../examples/guestfs-recipes.pod:156 msgid "Export any directory from a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:156 +#: ../examples/guestfs-recipes.pod:158 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:159 ../examples/guestfs-testing.pod:93 +#: ../examples/guestfs-recipes.pod:161 ../examples/guestfs-testing.pod:107 #, no-wrap msgid "" " virt-copy-out -d Guest /home .\n" @@ -4829,24 +4834,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:161 ../fish/guestfish-actions.pod:9 ../fish/guestfish-actions.pod:1524 ../fish/guestfish-actions.pod:1789 ../fish/guestfish-actions.pod:2204 ../src/guestfs-actions.pod:18 ../src/guestfs-actions.pod:2457 ../src/guestfs-actions.pod:2881 ../src/guestfs-actions.pod:3438 ../src/guestfs.pod:1779 ../tools/virt-win-reg.pl:717 +#: ../examples/guestfs-recipes.pod:163 ../fish/guestfish-actions.pod:9 ../fish/guestfish-actions.pod:1524 ../fish/guestfish-actions.pod:1789 ../fish/guestfish-actions.pod:2204 ../src/guestfs-actions.pod:18 ../src/guestfs-actions.pod:2457 ../src/guestfs-actions.pod:2881 ../src/guestfs-actions.pod:3438 ../src/guestfs.pod:1785 ../tools/virt-win-reg.pl:707 msgid "Notes:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:167 +#: ../examples/guestfs-recipes.pod:169 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:172 +#: ../examples/guestfs-recipes.pod:174 msgid "This creates a directory called C<home> under the current directory." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:176 +#: ../examples/guestfs-recipes.pod:178 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 " @@ -4854,7 +4859,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:180 +#: ../examples/guestfs-recipes.pod:182 #, no-wrap msgid "" " virt-copy-out -d WinGuest 'win:c:\\windows\\system32\\config' .\n" @@ -4862,12 +4867,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:182 +#: ../examples/guestfs-recipes.pod:184 msgid "To get the output as a compressed tarball, do:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:184 +#: ../examples/guestfs-recipes.pod:186 #, no-wrap msgid "" " virt-tar-out -d Guest /home - | gzip --best > home.tar.gz\n" @@ -4875,7 +4880,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:186 +#: ../examples/guestfs-recipes.pod:188 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: " @@ -4883,19 +4888,19 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:190 +#: ../examples/guestfs-recipes.pod:192 msgid "Find out which user is using the most space" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:192 +#: ../examples/guestfs-recipes.pod:194 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:195 +#: ../examples/guestfs-recipes.pod:197 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -4903,7 +4908,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:197 ../fish/guestfish.pod:984 +#: ../examples/guestfs-recipes.pod:199 ../fish/guestfish.pod:984 #, no-wrap msgid "" " set -e\n" @@ -4911,7 +4916,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:199 +#: ../examples/guestfs-recipes.pod:201 #, no-wrap msgid "" " vm=\"$1\"\n" @@ -4920,7 +4925,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:202 +#: ../examples/guestfs-recipes.pod:204 #, no-wrap msgid "" " eval $(guestfish --ro -d \"$vm\" -i --listen)\n" @@ -4928,7 +4933,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:204 +#: ../examples/guestfs-recipes.pod:206 #, no-wrap msgid "" " for d in $(guestfish --remote ls \"$dir\"); do\n" @@ -4940,7 +4945,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:210 ../fish/guestfish.pod:941 +#: ../examples/guestfs-recipes.pod:212 ../fish/guestfish.pod:941 #, no-wrap msgid "" " guestfish --remote exit\n" @@ -4948,41 +4953,41 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:212 +#: ../examples/guestfs-recipes.pod:214 msgid "Get DHCP address from a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:214 +#: ../examples/guestfs-recipes.pod:216 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:217 +#: ../examples/guestfs-recipes.pod:219 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:219 +#: ../examples/guestfs-recipes.pod:221 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:222 +#: ../examples/guestfs-recipes.pod:224 msgid "Get the operating system product name string" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:224 +#: ../examples/guestfs-recipes.pod:226 msgid "Save the following script into a file called C<product-name.sh>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:226 +#: ../examples/guestfs-recipes.pod:228 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -4995,12 +5000,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:233 +#: ../examples/guestfs-recipes.pod:235 msgid "Make the script executable and run it on a named guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:235 +#: ../examples/guestfs-recipes.pod:237 #, no-wrap msgid "" " # product-name.sh RHEL60x64\n" @@ -5009,14 +5014,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:238 +#: ../examples/guestfs-recipes.pod:240 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:242 +#: ../examples/guestfs-recipes.pod:244 #, no-wrap msgid "" " # virt-inspector RHEL60x64 > xml\n" @@ -5029,66 +5034,131 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:248 +#: ../examples/guestfs-recipes.pod:250 msgid "Get the default boot kernel for a Linux VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:250 +#: ../examples/guestfs-recipes.pod:252 msgid "" "The link below contains a program to print the default boot kernel for a " "Linux VM." msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:253 +#: ../examples/guestfs-recipes.pod:255 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:255 +#: ../examples/guestfs-recipes.pod:257 msgid "" "It uses Augeas, and the technique is generally applicable for many different " "tasks, such as:" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:262 +#: ../examples/guestfs-recipes.pod:264 msgid "listing the user accounts in the guest" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:266 +#: ../examples/guestfs-recipes.pod:268 msgid "what repositories is it configured to use" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:270 +#: ../examples/guestfs-recipes.pod:272 msgid "what NTP servers does it connect to" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:274 +#: ../examples/guestfs-recipes.pod:276 msgid "what were the boot messages last time it booted" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:278 +#: ../examples/guestfs-recipes.pod:280 msgid "listing who was logged in recently" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:282 +#: ../examples/guestfs-recipes.pod:284 msgid "L<http://augeas.net/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:284 +#: ../examples/guestfs-recipes.pod:286 +msgid "Hanging guests" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:288 +msgid "" +"There are various ways to use libguestfs to find out why a guest is hanging " +"or unresponsive:" +msgstr "" + +#. type: =item +#: ../examples/guestfs-recipes.pod:293 ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:603 ../sparsify/virt-sparsify.pod:228 ../src/guestfs.pod:469 ../src/guestfs.pod:1208 ../src/guestfs.pod:1377 ../src/guestfs.pod:1541 ../src/guestfs.pod:2790 +msgid "1." +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:295 +msgid "Read the log files using virt-cat:" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-recipes.pod:297 +#, no-wrap +msgid "" +" virt-cat Guest /var/log/messages | less\n" +"\n" +msgstr "" + +#. type: =item +#: ../examples/guestfs-recipes.pod:299 ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:235 ../src/guestfs.pod:475 ../src/guestfs.pod:1212 ../src/guestfs.pod:1381 ../src/guestfs.pod:1545 ../src/guestfs.pod:2815 +msgid "2." +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:301 +msgid "Read the Windows Event Log (Windows Vista or later only):" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:303 ../examples/guestfs-recipes.pod:402 +msgid "L<https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content>" +msgstr "" + +#. type: =item +#: ../examples/guestfs-recipes.pod:305 ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:616 ../sparsify/virt-sparsify.pod:241 ../src/guestfs.pod:486 ../src/guestfs.pod:1216 ../src/guestfs.pod:1551 +msgid "3." +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:307 +msgid "Find out which files were last updated in a guest:" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:309 +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:311 +msgid "This might give you a clue as to what program is running." +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:315 msgid "Install RPMs in a guest" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:286 +#: ../examples/guestfs-recipes.pod:317 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 " @@ -5097,22 +5167,22 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:292 +#: ../examples/guestfs-recipes.pod:323 msgid "L<https://rwmj.wordpress.com/2010/12/01/tip-install-rpms-in-a-guest/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:294 +#: ../examples/guestfs-recipes.pod:325 msgid "List applications installed in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:296 +#: ../examples/guestfs-recipes.pod:327 msgid "Save the following to a file C<list-apps.sh>:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:298 +#: ../examples/guestfs-recipes.pod:329 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -5125,14 +5195,14 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:305 +#: ../examples/guestfs-recipes.pod:336 msgid "" "Make the file executable and then you can run it on any named virtual " "machine:" msgstr "" #. type: verbatim -#: ../examples/guestfs-recipes.pod:308 +#: ../examples/guestfs-recipes.pod:339 #, no-wrap msgid "" " # list-apps.sh WinGuest\n" @@ -5168,7 +5238,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:338 +#: ../examples/guestfs-recipes.pod:369 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 " @@ -5176,22 +5246,22 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:342 +#: ../examples/guestfs-recipes.pod:373 msgid "List files and directories in a VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:344 +#: ../examples/guestfs-recipes.pod:375 msgid "Use L<virt-ls(1)>." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:346 +#: ../examples/guestfs-recipes.pod:377 msgid "List services in a Windows VM" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:348 +#: ../examples/guestfs-recipes.pod:379 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 " @@ -5199,69 +5269,64 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:352 +#: ../examples/guestfs-recipes.pod:383 msgid "L<https://rwmj.wordpress.com/2010/12/10/tip-list-services-in-a-windows-guest/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:354 +#: ../examples/guestfs-recipes.pod:385 msgid "Make a disk image sparse" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:356 +#: ../examples/guestfs-recipes.pod:387 msgid "Use L<virt-sparsify(1)>." msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:358 +#: ../examples/guestfs-recipes.pod:389 msgid "Monitor disk usage over time" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:360 +#: ../examples/guestfs-recipes.pod:391 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:363 +#: ../examples/guestfs-recipes.pod:394 msgid "L<http://virt-tools.org/learning/advanced-virt-df/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:365 +#: ../examples/guestfs-recipes.pod:396 msgid "Reading the Windows Event Log from Windows Vista (or later)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:367 +#: ../examples/guestfs-recipes.pod:398 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 " "Vista or a later version." msgstr "" -#. type: textblock -#: ../examples/guestfs-recipes.pod:371 -msgid "L<https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content>" -msgstr "" - #. type: =head1 -#: ../examples/guestfs-recipes.pod:373 +#: ../examples/guestfs-recipes.pod:404 msgid "Remove root password (Linux)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:375 +#: ../examples/guestfs-recipes.pod:406 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:378 +#: ../examples/guestfs-recipes.pod:409 #, no-wrap msgid "" " virt-edit domname /etc/passwd -e 's/^root:.*?:/root::/'\n" @@ -5269,12 +5334,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:380 +#: ../examples/guestfs-recipes.pod:411 msgid "Remove Administrator password (Windows)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:382 +#: ../examples/guestfs-recipes.pod:413 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 " @@ -5282,17 +5347,17 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:387 +#: ../examples/guestfs-recipes.pod:418 msgid "L<https://mdbooth.wordpress.com/2010/10/18/resetting-a-windows-guests-administrator-password-with-guestfish/>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:389 +#: ../examples/guestfs-recipes.pod:420 msgid "Sysprepping a virtual machine (Windows)" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:391 +#: ../examples/guestfs-recipes.pod:422 msgid "" "It is possible to do a \"sysprep\" using libguestfs alone, although not " "straightforward. Currently there is code in the Aeolus Oz project which " @@ -5301,19 +5366,19 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:396 +#: ../examples/guestfs-recipes.pod:427 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:399 +#: ../examples/guestfs-recipes.pod:430 msgid "Unpack a live CD" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:401 +#: ../examples/guestfs-recipes.pod:432 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 " @@ -5321,46 +5386,99 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:405 +#: ../examples/guestfs-recipes.pod:436 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:407 +#: ../examples/guestfs-recipes.pod:438 msgid "Uploading and downloading files" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:409 +#: ../examples/guestfs-recipes.pod:440 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:412 +#: ../examples/guestfs-recipes.pod:443 msgid "L<https://rwmj.wordpress.com/2010/12/02/tip-uploading-and-downloading/#content>" msgstr "" #. type: =head1 -#: ../examples/guestfs-recipes.pod:414 +#: ../examples/guestfs-recipes.pod:445 +msgid "Uploading raw filesystem content" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:447 +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:451 +#, no-wrap +msgid "" +" guestfish --rw -a disk.img run : upload sda1.img /dev/sda1\n" +"\n" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-recipes.pod:453 +#, no-wrap +msgid "" +" guestfish --rw -d Guest run : upload lv.img /dev/vg_guest/lv_root\n" +"\n" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:455 +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 - " +"you have to prepare the filesystem differently. But if the filesystem needs " +"to expand into the target, you can use guestfish to resize it to the right " +"size:" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-recipes.pod:461 +#, no-wrap +msgid "" +" guestfish --rw -d Guest run : \\\n" +" upload lv.img /dev/vg_guest/lv_root : \\\n" +" resize2fs /dev/vg_guest/lv_root\n" +"\n" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-recipes.pod:465 +msgid "(or use C<ntfsresize> if the filesystem is NTFS)." +msgstr "" + +#. type: =head1 +#: ../examples/guestfs-recipes.pod:467 msgid "Use libguestfs tools on VMware ESX guests" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:416 +#: ../examples/guestfs-recipes.pod:469 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:420 +#: ../examples/guestfs-recipes.pod:473 msgid "L<https://rwmj.wordpress.com/2011/05/10/tip-use-libguestfs-on-vmware-esx-guests/#content>" msgstr "" #. type: textblock -#: ../examples/guestfs-recipes.pod:424 +#: ../examples/guestfs-recipes.pod:477 msgid "" "L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, " "L<guestfs-erlang(3)>, L<guestfs-java(3)>, L<guestfs-ocaml(3)>, " @@ -5423,11 +5541,45 @@ msgstr "" #. type: =head2 #: ../examples/guestfs-testing.pod:30 +msgid "Run libguestfs-test-tool" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-testing.pod:32 ../examples/guestfs-testing.pod:145 ../src/guestfs.pod:3180 +msgid "Run:" +msgstr "" + +#. type: verbatim +#: ../examples/guestfs-testing.pod:34 ../test-tool/libguestfs-test-tool.pod:21 +#, no-wrap +msgid "" +" libguestfs-test-tool\n" +"\n" +msgstr "" + +#. type: textblock +#: ../examples/guestfs-testing.pod:36 +msgid "" +"This command does a very simple, non-destructive test that basic libguestfs " +"is functioning. You don't need to run it as root." +msgstr "" + +#. type: textblock +#: ../examples/guestfs-testing.pod:39 +msgid "" +"If it I<doesn't> print C<===== TEST FINISHED OK =====>, report it as a bug. " +"It is very important that you include the B<complete, unedited> output of " +"C<libguestfs-test-tool> in your bug report. See the L</BUGS> section at the " +"end of this page." +msgstr "" + +#. type: =head2 +#: ../examples/guestfs-testing.pod:44 msgid "Check KVM acceleration is being used." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:32 +#: ../examples/guestfs-testing.pod:46 msgid "" "If your host has hardware virt acceleration, then with a hot cache " "libguestfs should be able to start up in a few seconds. Run the following " @@ -5435,7 +5587,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:36 +#: ../examples/guestfs-testing.pod:50 #, no-wrap msgid "" " time guestfish -a /dev/null run\n" @@ -5443,39 +5595,39 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:38 +#: ../examples/guestfs-testing.pod:52 msgid "" "After a few runs, the time should settle down to a few seconds (under 5 " "seconds on fast 64 bit hardware)." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:41 +#: ../examples/guestfs-testing.pod:55 msgid "How to check for hardware virt:" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:43 +#: ../examples/guestfs-testing.pod:57 msgid "L<http://virt-tools.org/learning/check-hardware-virt/>" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:45 +#: ../examples/guestfs-testing.pod:59 msgid "If the command above does not work at all, use L<libguestfs-test-tool(1)>." msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:48 +#: ../examples/guestfs-testing.pod:62 msgid "Run virt-alignment-scan on all your guests." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:50 +#: ../examples/guestfs-testing.pod:64 msgid "Run L<virt-alignment-scan(1)> on guests or disk images:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:52 +#: ../examples/guestfs-testing.pod:66 #, no-wrap msgid "" " virt-alignment-scan -a /path/to/disk.img\n" @@ -5483,12 +5635,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:54 ../examples/guestfs-testing.pod:161 ../examples/guestfs-testing.pod:174 ../examples/guestfs-testing.pod:234 ../src/guestfs.pod:2887 +#: ../examples/guestfs-testing.pod:68 ../examples/guestfs-testing.pod:175 ../examples/guestfs-testing.pod:188 ../examples/guestfs-testing.pod:248 ../src/guestfs.pod:2893 msgid "or:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:56 +#: ../examples/guestfs-testing.pod:70 #, no-wrap msgid "" " virt-alignment-scan -d Guest\n" @@ -5496,22 +5648,22 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:58 +#: ../examples/guestfs-testing.pod:72 msgid "Does the alignment report match how the guest partitions are aligned?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:60 +#: ../examples/guestfs-testing.pod:74 msgid "Run virt-cat on some files in guests." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:62 +#: ../examples/guestfs-testing.pod:76 msgid "L<virt-cat(1)> can display files from guests. For a Linux guest, try:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:64 +#: ../examples/guestfs-testing.pod:78 #, no-wrap msgid "" " virt-cat LinuxGuest /etc/passwd\n" @@ -5519,12 +5671,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:66 +#: ../examples/guestfs-testing.pod:80 msgid "A recent feature is support for Windows paths, for example:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:68 +#: ../examples/guestfs-testing.pod:82 #, no-wrap msgid "" " virt-cat WindowsGuest 'c:\\windows\\win.ini'\n" @@ -5532,26 +5684,26 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:70 +#: ../examples/guestfs-testing.pod:84 msgid "" "An even better test is if you have a Windows guest with multiple drives. Do " "C<D:>, C<E:> etc paths work correctly?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:73 +#: ../examples/guestfs-testing.pod:87 msgid "B<*> Copy some files into a B<shut off> guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:75 +#: ../examples/guestfs-testing.pod:89 msgid "" "L<virt-copy-in(1)> can recursively copy files and directories into a guest " "or disk image." msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:78 +#: ../examples/guestfs-testing.pod:92 #, no-wrap msgid "" " virt-copy-in -d Guest /etc /tmp\n" @@ -5559,7 +5711,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:80 +#: ../examples/guestfs-testing.pod:94 msgid "" "This should copy local directory C</etc> to C</tmp/etc> in the guest " "(recursively). If you boot the guest, can you see all of the copied files " @@ -5567,12 +5719,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:84 +#: ../examples/guestfs-testing.pod:98 msgid "Shut the guest down and try copying multiple files and directories:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:86 +#: ../examples/guestfs-testing.pod:100 #, no-wrap msgid "" " virt-copy-in -d Guest /home /etc/issue /tmp\n" @@ -5580,39 +5732,39 @@ msgid "" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:88 +#: ../examples/guestfs-testing.pod:102 msgid "Copy some files out of a guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:90 +#: ../examples/guestfs-testing.pod:104 msgid "" "L<virt-copy-out(1)> can recursively copy files and directories out of a " "guest or disk image." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:95 +#: ../examples/guestfs-testing.pod:109 msgid "Note the final space and period in the command is not a typo." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:97 +#: ../examples/guestfs-testing.pod:111 msgid "This should copy C</home> from the guest into the current directory." msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:99 +#: ../examples/guestfs-testing.pod:113 msgid "Run virt-df." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:101 +#: ../examples/guestfs-testing.pod:115 msgid "L<virt-df(1)> lists disk space. Run:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:103 +#: ../examples/guestfs-testing.pod:117 #, no-wrap msgid "" " virt-df\n" @@ -5620,31 +5772,31 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:105 +#: ../examples/guestfs-testing.pod:119 msgid "" "You can try comparing this to the results from L<df(1)> inside the guest, " "but there are some provisos:" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:112 +#: ../examples/guestfs-testing.pod:126 msgid "The guest must be idle." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:116 +#: ../examples/guestfs-testing.pod:130 msgid "The guest disks must be synched using L<sync(1)>." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:120 +#: ../examples/guestfs-testing.pod:134 msgid "" "Any action such as booting the guest will write log files causing the " "numbers to change." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:125 +#: ../examples/guestfs-testing.pod:139 msgid "" "We don't guarantee that the numbers will be identical even under these " "circumstances. They should be similar. It would indicate a bug if you saw " @@ -5652,17 +5804,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:129 +#: ../examples/guestfs-testing.pod:143 msgid "Try importing virt-df CSV output into a spreadsheet or database." msgstr "" -#. type: textblock -#: ../examples/guestfs-testing.pod:131 ../src/guestfs.pod:3174 -msgid "Run:" -msgstr "" - #. type: verbatim -#: ../examples/guestfs-testing.pod:133 +#: ../examples/guestfs-testing.pod:147 #, no-wrap msgid "" " virt-df --csv > /tmp/report.csv\n" @@ -5670,33 +5817,33 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:135 +#: ../examples/guestfs-testing.pod:149 msgid "" "Now try to load this into your favorite spreadsheet or database. Are the " "results reproduced faithfully in the spreadsheet/database?" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:138 +#: ../examples/guestfs-testing.pod:152 msgid "" "L<http://www.postgresql.org/docs/8.1/static/sql-copy.html> " "L<http://dev.mysql.com/doc/refman/5.1/en/load-data.html>" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:141 +#: ../examples/guestfs-testing.pod:155 msgid "B<*> Edit a file in a B<shut off> guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:143 +#: ../examples/guestfs-testing.pod:157 msgid "" "L<virt-edit(1)> can edit files in guests. Try this command on a RHEL or " "Fedora guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:146 +#: ../examples/guestfs-testing.pod:160 #, no-wrap msgid "" " virt-edit LinuxGuest /etc/sysconfig/network\n" @@ -5704,12 +5851,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:148 +#: ../examples/guestfs-testing.pod:162 msgid "On other Linux guests try editing other files such as:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:150 +#: ../examples/guestfs-testing.pod:164 #, no-wrap msgid "" " virt-edit LinuxGuest /etc/motd\n" @@ -5717,24 +5864,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:152 +#: ../examples/guestfs-testing.pod:166 msgid "Are the changes seen inside the guest when it is booted?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:154 +#: ../examples/guestfs-testing.pod:168 msgid "Display the filesystems / partitions / LVs in a guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:156 +#: ../examples/guestfs-testing.pod:170 msgid "" "L<virt-filesystems(1)> can be used to display filesystems in a guest. Try " "this command on any disk image or guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:159 +#: ../examples/guestfs-testing.pod:173 #, no-wrap msgid "" " virt-filesystems -a /path/to/disk.img --all --long -h\n" @@ -5742,7 +5889,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:163 +#: ../examples/guestfs-testing.pod:177 #, no-wrap msgid "" " virt-filesystems -d Guest --all --long -h\n" @@ -5750,24 +5897,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:165 +#: ../examples/guestfs-testing.pod:179 msgid "Do the results match what is seen in the guest?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:167 +#: ../examples/guestfs-testing.pod:181 msgid "Run virt-inspector on all your guests." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:169 +#: ../examples/guestfs-testing.pod:183 msgid "" "Use L<virt-inspector(1)> to get a report on all of your guests or disk " "images:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:172 +#: ../examples/guestfs-testing.pod:186 #, no-wrap msgid "" " virt-inspector -a /path/to/disk.img | less\n" @@ -5775,7 +5922,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:176 +#: ../examples/guestfs-testing.pod:190 #, no-wrap msgid "" " virt-inspector -d Guest | less\n" @@ -5783,17 +5930,17 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:178 +#: ../examples/guestfs-testing.pod:192 msgid "Do the results match what is actually in the guest?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:180 +#: ../examples/guestfs-testing.pod:194 msgid "Try the auditing features of virt-ls on all your guests." msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:184 +#: ../examples/guestfs-testing.pod:198 #, no-wrap msgid "" " virt-ls -lR -d Guest / | grep '^- [42]'\n" @@ -5801,7 +5948,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:188 +#: ../examples/guestfs-testing.pod:202 #, no-wrap msgid "" " virt-ls -lR -d Guest / | grep '^d ...7'\n" @@ -5809,7 +5956,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:192 +#: ../examples/guestfs-testing.pod:206 #, no-wrap msgid "" " virt-ls -lR -d Guest / | grep '^s'\n" @@ -5817,7 +5964,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:196 +#: ../examples/guestfs-testing.pod:210 #, no-wrap msgid "" " virt-ls -lR -d Guest / | grep -i '^-.*\\.png$'\n" @@ -5825,12 +5972,12 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:198 +#: ../examples/guestfs-testing.pod:212 msgid "Display files larger than 10MB in home directories:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:200 +#: ../examples/guestfs-testing.pod:214 #, no-wrap msgid "" " virt-ls -lR -d Guest /home | awk '$3 > 10*1024*1024'\n" @@ -5838,7 +5985,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:204 +#: ../examples/guestfs-testing.pod:218 #, no-wrap msgid "" " virt-ls -lR -d Guest --time-days / | awk '$6 <= 7'\n" @@ -5846,7 +5993,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:208 +#: ../examples/guestfs-testing.pod:222 #, no-wrap msgid "" " virt-ls -lR -d Guest --time-days / | grep '^-' | awk '$6 < 1'\n" @@ -5854,24 +6001,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:210 +#: ../examples/guestfs-testing.pod:224 msgid "Do the results match what is in the guest?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:212 +#: ../examples/guestfs-testing.pod:226 msgid "Create a disk image from a tarball." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:214 +#: ../examples/guestfs-testing.pod:228 msgid "" "Use L<virt-make-fs(1)> to create a disk image from any tarball that you " "happen to have:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:217 +#: ../examples/guestfs-testing.pod:231 #, no-wrap msgid "" " virt-make-fs --partition=mbr --type=vfat /any/tarball.tar.gz output.img\n" @@ -5879,7 +6026,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:219 +#: ../examples/guestfs-testing.pod:233 msgid "" "Add 'output.img' as a raw disk to an existing guest. Check the guest can " "see the files. This test is particularly useful if you try it with a " @@ -5887,29 +6034,29 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:223 +#: ../examples/guestfs-testing.pod:237 msgid "Try other partitioning schemes, eg. I<--partition=gpt>." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:225 +#: ../examples/guestfs-testing.pod:239 msgid "Try other filesystem formats, eg. I<--type=ntfs>, I<--type=ext2>." msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:227 +#: ../examples/guestfs-testing.pod:241 msgid "B<*> Run virt-rescue on a B<shut off> disk image or guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:229 +#: ../examples/guestfs-testing.pod:243 msgid "" "Use L<virt-rescue(1)> to examine, rescue or repair a B<shut off> guest or " "disk image:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:232 +#: ../examples/guestfs-testing.pod:246 #, no-wrap msgid "" " virt-rescue -a /path/to/disk.img\n" @@ -5917,7 +6064,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:236 +#: ../examples/guestfs-testing.pod:250 #, no-wrap msgid "" " virt-rescue -d Guest\n" @@ -5925,24 +6072,24 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:238 +#: ../examples/guestfs-testing.pod:252 msgid "Can you use ordinary shell commands to examine the guest?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:240 +#: ../examples/guestfs-testing.pod:254 msgid "B<*> Resize your guests." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:242 +#: ../examples/guestfs-testing.pod:256 msgid "" "Use L<virt-resize(1)> to give a guest some more disk space. For example, if " "you have a disk image that is smaller than 30G, increase it to 30G by doing:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:246 +#: ../examples/guestfs-testing.pod:260 #, no-wrap msgid "" " truncate -s 30G newdisk.img\n" @@ -5953,22 +6100,22 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:251 +#: ../examples/guestfs-testing.pod:265 msgid "Does the guest still boot? Try expanding other partitions." msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:253 +#: ../examples/guestfs-testing.pod:267 msgid "B<*> Sparsify a guest disk." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:255 +#: ../examples/guestfs-testing.pod:269 msgid "Using L<virt-sparsify(1)>, make a disk image more sparse:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:257 +#: ../examples/guestfs-testing.pod:271 #, no-wrap msgid "" " virt-sparsify /path/to/olddisk.img newdisk.img\n" @@ -5976,26 +6123,26 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:259 +#: ../examples/guestfs-testing.pod:273 msgid "" "Is C<newdisk.img> still bootable after sparsifying? Is the resulting disk " "image smaller (use C<du> to check)?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:262 +#: ../examples/guestfs-testing.pod:276 msgid "B<*> \"sysprep\" a B<shut off> Linux guest." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:264 +#: ../examples/guestfs-testing.pod:278 msgid "" "Note that this really will mess up an existing guest, so it's better to " "clone the guest before trying this." msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:267 +#: ../examples/guestfs-testing.pod:281 #, no-wrap msgid "" " virt-sysprep --hostname newhost.example.com -a /path/to/disk.img\n" @@ -6003,26 +6150,26 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:269 +#: ../examples/guestfs-testing.pod:283 msgid "" "Was the sysprep successful? After booting, what changes were made and were " "they successful?" msgstr "" #. type: =head2 -#: ../examples/guestfs-testing.pod:272 +#: ../examples/guestfs-testing.pod:286 msgid "Dump the Windows Registry from your Windows guests." msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:274 +#: ../examples/guestfs-testing.pod:288 msgid "" "Use L<virt-win-reg(1)> to dump out the Windows Registry from any Windows " "guests that you have." msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:277 +#: ../examples/guestfs-testing.pod:291 #, no-wrap msgid "" " virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\Software' |\n" @@ -6031,7 +6178,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:280 +#: ../examples/guestfs-testing.pod:294 #, no-wrap msgid "" " virt-win-reg --unsafe-printable-strings WindowsGuest 'HKLM\\System' |\n" @@ -6040,19 +6187,19 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:283 +#: ../examples/guestfs-testing.pod:297 msgid "Does the output match running C<regedit> inside the guest?" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:285 +#: ../examples/guestfs-testing.pod:299 msgid "" "A recent feature is the ability to dump user registries, so try this, " "replacing I<username> with the name of a local user in the guest:" msgstr "" #. type: verbatim -#: ../examples/guestfs-testing.pod:288 +#: ../examples/guestfs-testing.pod:302 #, no-wrap msgid "" " virt-win-reg --unsafe-printable-strings WindowsGuest 'HKEY_USERS\\username' " @@ -6062,7 +6209,7 @@ msgid "" msgstr "" #. type: textblock -#: ../examples/guestfs-testing.pod:293 +#: ../examples/guestfs-testing.pod:307 msgid "" "L<guestfs(3)>, L<guestfish(1)>, L<guestfs-examples(3)>, " "L<http://libguestfs.org/>." @@ -6384,7 +6531,7 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish-actions.pod:174 ../src/guestfs-actions.pod:234 ../src/guestfs.pod:3057 +#: ../fish/guestfish-actions.pod:174 ../src/guestfs-actions.pod:234 ../src/guestfs.pod:3063 msgid "C<format>" msgstr "" @@ -15567,7 +15714,7 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish-actions.pod:4476 ../src/guestfs-actions.pod:6961 ../src/guestfs.pod:3016 +#: ../fish/guestfish-actions.pod:4476 ../src/guestfs-actions.pod:6961 ../src/guestfs.pod:3022 msgid "C<appliance>" msgstr "" @@ -19268,7 +19415,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../fish/guestfish.pod:135 ../src/guestfs.pod:2337 +#: ../fish/guestfish.pod:135 ../src/guestfs.pod:2343 #, no-wrap msgid "" " guestfish -N fs\n" @@ -20735,7 +20882,7 @@ msgid "" msgstr "" #. type: =head2 -#: ../fish/guestfish.pod:825 ../src/guestfs.pod:513 +#: ../fish/guestfish.pod:825 ../src/guestfs.pod:519 msgid "ENCRYPTED DISKS" msgstr "" @@ -21099,7 +21246,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../fish/guestfish.pod:982 ../src/guestfs.pod:988 +#: ../fish/guestfish.pod:982 ../src/guestfs.pod:994 #, no-wrap msgid "" " #!/bin/bash -\n" @@ -21385,7 +21532,7 @@ msgid "COMMANDS" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1112 ../src/guestfs.pod:1614 +#: ../fish/guestfish.pod:1112 ../src/guestfs.pod:1620 msgid "@ACTIONS@" msgstr "" @@ -21409,17 +21556,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1128 ../src/guestfs.pod:3304 +#: ../fish/guestfish.pod:1128 ../src/guestfs.pod:3310 msgid "FEBOOTSTRAP_KERNEL" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1130 ../src/guestfs.pod:3306 +#: ../fish/guestfish.pod:1130 ../src/guestfs.pod:3312 msgid "FEBOOTSTRAP_MODULES" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1132 ../src/guestfs.pod:3308 +#: ../fish/guestfish.pod:1132 ../src/guestfs.pod:3314 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 " @@ -21477,17 +21624,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1160 ../src/guestfs.pod:3314 +#: ../fish/guestfish.pod:1160 ../src/guestfs.pod:3320 msgid "LIBGUESTFS_APPEND" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1162 ../src/guestfs.pod:3316 +#: ../fish/guestfish.pod:1162 ../src/guestfs.pod:3322 msgid "Pass additional options to the guest kernel." msgstr "" #. type: =item -#: ../fish/guestfish.pod:1164 ../src/guestfs.pod:3318 +#: ../fish/guestfish.pod:1164 ../src/guestfs.pod:3324 msgid "LIBGUESTFS_DEBUG" msgstr "" @@ -21499,17 +21646,17 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1169 ../src/guestfs.pod:3323 +#: ../fish/guestfish.pod:1169 ../src/guestfs.pod:3329 msgid "LIBGUESTFS_MEMSIZE" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1171 ../src/guestfs.pod:3325 +#: ../fish/guestfish.pod:1171 ../src/guestfs.pod:3331 msgid "Set the memory allocated to the qemu process, in megabytes. For example:" msgstr "" #. type: verbatim -#: ../fish/guestfish.pod:1174 ../src/guestfs.pod:3328 +#: ../fish/guestfish.pod:1174 ../src/guestfs.pod:3334 #, no-wrap msgid "" " LIBGUESTFS_MEMSIZE=700\n" @@ -21517,7 +21664,7 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1176 ../src/guestfs.pod:3330 +#: ../fish/guestfish.pod:1176 ../src/guestfs.pod:3336 msgid "LIBGUESTFS_PATH" msgstr "" @@ -21529,19 +21676,19 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1181 ../src/guestfs.pod:3335 +#: ../fish/guestfish.pod:1181 ../src/guestfs.pod:3341 msgid "LIBGUESTFS_QEMU" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1183 ../src/guestfs.pod:3337 +#: ../fish/guestfish.pod:1183 ../src/guestfs.pod:3343 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:1187 ../src/guestfs.pod:3343 +#: ../fish/guestfish.pod:1187 ../src/guestfs.pod:3349 msgid "LIBGUESTFS_TRACE" msgstr "" @@ -21563,19 +21710,19 @@ msgid "" msgstr "" #. type: =item -#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:261 ../src/guestfs.pod:3348 +#: ../fish/guestfish.pod:1196 ../sparsify/virt-sparsify.pod:261 ../src/guestfs.pod:3354 msgid "TMPDIR" msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1198 ../src/guestfs.pod:3350 +#: ../fish/guestfish.pod:1198 ../src/guestfs.pod:3356 msgid "" "Location of temporary directory, defaults to C</tmp> except for the cached " "supermin appliance which defaults to C</var/tmp>." msgstr "" #. type: textblock -#: ../fish/guestfish.pod:1201 ../src/guestfs.pod:3353 +#: ../fish/guestfish.pod:1201 ../src/guestfs.pod:3359 msgid "" "If libguestfs was compiled to use the supermin appliance then the real " "appliance is cached in this directory, shared between all handles belonging " @@ -24488,11 +24635,6 @@ msgid "" "and L<virt-df(1)>, we recommend you go and read those manual pages first." msgstr "" -#. type: =item -#: ../resize/virt-resize.pod:31 ../resize/virt-resize.pod:603 ../sparsify/virt-sparsify.pod:228 ../src/guestfs.pod:463 ../src/guestfs.pod:1202 ../src/guestfs.pod:1371 ../src/guestfs.pod:1535 ../src/guestfs.pod:2784 -msgid "1." -msgstr "" - #. type: textblock #: ../resize/virt-resize.pod:33 msgid "" @@ -24526,11 +24668,6 @@ msgid "" "\n" msgstr "" -#. type: =item -#: ../resize/virt-resize.pod:44 ../resize/virt-resize.pod:610 ../sparsify/virt-sparsify.pod:235 ../src/guestfs.pod:469 ../src/guestfs.pod:1206 ../src/guestfs.pod:1375 ../src/guestfs.pod:1539 ../src/guestfs.pod:2809 -msgid "2." -msgstr "" - #. type: textblock #: ../resize/virt-resize.pod:46 msgid "" @@ -24547,11 +24684,6 @@ msgid "" "\n" msgstr "" -#. type: =item -#: ../resize/virt-resize.pod:52 ../resize/virt-resize.pod:616 ../sparsify/virt-sparsify.pod:241 ../src/guestfs.pod:480 ../src/guestfs.pod:1210 ../src/guestfs.pod:1545 -msgid "3." -msgstr "" - #. type: textblock #: ../resize/virt-resize.pod:54 msgid "" @@ -36066,26 +36198,39 @@ msgid "" "LANGUAGES> below." msgstr "" -#. type: =head1 +#. type: textblock #: ../src/guestfs.pod:39 -msgid "API OVERVIEW" +msgid "For tips and recipes, see L<guestfs-recipes(1)>." msgstr "" #. type: textblock #: ../src/guestfs.pod:41 msgid "" +"If you are having performance problems, read L<guestfs-performance(1)>. To " +"help test libguestfs, read L<libguestfs-test-tool(1)> and " +"L<guestfs-testing(1)>." +msgstr "" + +#. type: =head1 +#: ../src/guestfs.pod:45 +msgid "API OVERVIEW" +msgstr "" + +#. type: textblock +#: ../src/guestfs.pod:47 +msgid "" "This section provides a gentler overview of the libguestfs API. We also try " "to group API calls together, where that may not be obvious from reading " "about the individual calls in the main section of this manual." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:46 +#: ../src/guestfs.pod:52 msgid "HANDLES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:48 +#: ../src/guestfs.pod:54 msgid "" "Before you can use libguestfs calls, you have to create a handle. Then you " "must add at least one disk image to the handle, followed by launching the " @@ -36095,12 +36240,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:55 +#: ../src/guestfs.pod:61 msgid "The general structure of all libguestfs-using programs looks like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:58 +#: ../src/guestfs.pod:64 #, no-wrap msgid "" " guestfs_h *g = guestfs_create ();\n" @@ -36108,7 +36253,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:60 +#: ../src/guestfs.pod:66 #, no-wrap msgid "" " /* Call guestfs_add_drive additional times if there are\n" @@ -36119,7 +36264,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:65 +#: ../src/guestfs.pod:71 #, no-wrap msgid "" " /* Most manipulation calls won't work until you've launched\n" @@ -36131,7 +36276,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:71 +#: ../src/guestfs.pod:77 #, no-wrap msgid "" " /* Now you can examine what partitions, LVs etc are available.\n" @@ -36142,7 +36287,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:76 +#: ../src/guestfs.pod:82 #, no-wrap msgid "" " /* To access a filesystem in the image, you must mount it.\n" @@ -36152,7 +36297,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:80 +#: ../src/guestfs.pod:86 #, no-wrap msgid "" " /* Now you can perform filesystem actions on the guest\n" @@ -36163,7 +36308,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:85 +#: ../src/guestfs.pod:91 #, no-wrap msgid "" " /* Synchronize the disk. This is the opposite of guestfs_launch. */\n" @@ -36172,7 +36317,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:88 +#: ../src/guestfs.pod:94 #, no-wrap msgid "" " /* Close and free the handle 'g'. */\n" @@ -36181,7 +36326,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:91 +#: ../src/guestfs.pod:97 msgid "" "The code above doesn't include any error checking. In real code you should " "check return values carefully for errors. In general all functions that " @@ -36193,12 +36338,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:100 +#: ../src/guestfs.pod:106 msgid "DISK IMAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:102 +#: ../src/guestfs.pod:108 msgid "" "The image filename (C<\"guest.img\"> in the example above) could be a disk " "image from a virtual machine, a L<dd(1)> copy of a physical hard disk, an " @@ -36208,7 +36353,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:108 +#: ../src/guestfs.pod:114 msgid "" "The call you should use in modern code for adding drives is " "L</guestfs_add_drive_opts>. To add a disk image, allowing writes, and " @@ -36216,7 +36361,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:112 +#: ../src/guestfs.pod:118 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -36226,12 +36371,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:116 +#: ../src/guestfs.pod:122 msgid "You can add a disk read-only using:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:118 +#: ../src/guestfs.pod:124 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -36242,14 +36387,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:123 +#: ../src/guestfs.pod:129 msgid "" "or by calling the older function L</guestfs_add_drive_ro>. In either case " "libguestfs won't modify the file." msgstr "" #. type: textblock -#: ../src/guestfs.pod:126 +#: ../src/guestfs.pod:132 msgid "" "Be extremely cautious if the disk image is in use, eg. if it is being used " "by a virtual machine. Adding it read-write will almost certainly cause disk " @@ -36257,7 +36402,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:130 +#: ../src/guestfs.pod:136 msgid "" "You must add at least one disk image, and you may add multiple disk images. " "In the API, the disk images are usually referred to as C</dev/sda> (for the " @@ -36265,7 +36410,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:135 +#: ../src/guestfs.pod:141 msgid "" "Once L</guestfs_launch> has been called you cannot add any more images. You " "can call L</guestfs_list_devices> to get a list of the device names, in the " @@ -36273,12 +36418,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:140 +#: ../src/guestfs.pod:146 msgid "MOUNTING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:142 +#: ../src/guestfs.pod:148 msgid "" "Before you can read or write files, create directories and so on in a disk " "image that contains filesystems, you have to mount those filesystems using " @@ -36288,7 +36433,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:149 +#: ../src/guestfs.pod:155 #, no-wrap msgid "" " guestfs_mount_options (g, \"\", \"/dev/sda1\", \"/\");\n" @@ -36296,7 +36441,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:151 +#: ../src/guestfs.pod:157 msgid "" "where C</dev/sda1> means literally the first partition (C<1>) of the first " "disk image that we added (C</dev/sda>). If the disk contains Linux LVM2 " @@ -36306,7 +36451,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:157 +#: ../src/guestfs.pod:163 msgid "" "If you are given a disk image and you don't know what it contains then you " "have to find out. Libguestfs can do that too: use " @@ -36317,7 +36462,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:165 +#: ../src/guestfs.pod:171 msgid "" "Libguestfs also has a set of APIs for inspection of unknown disk images (see " "L</INSPECTION> below). But you might find it easier to look at higher level " @@ -36325,19 +36470,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:170 +#: ../src/guestfs.pod:176 msgid "" "To mount a filesystem read-only, use L</guestfs_mount_ro>. There are " "several other variations of the C<guestfs_mount_*> call." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:173 +#: ../src/guestfs.pod:179 msgid "FILESYSTEM ACCESS AND MODIFICATION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:175 +#: ../src/guestfs.pod:181 msgid "" "The majority of the libguestfs API consists of fairly low-level calls for " "accessing and modifying the files, directories, symlinks etc on mounted " @@ -36347,21 +36492,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:181 +#: ../src/guestfs.pod:187 msgid "" "Specify filenames as full paths, starting with C<\"/\"> and including the " "mount point." msgstr "" #. type: textblock -#: ../src/guestfs.pod:184 +#: ../src/guestfs.pod:190 msgid "" "For example, if you mounted a filesystem at C<\"/\"> and you want to read " "the file called C<\"etc/passwd\"> then you could do:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:187 +#: ../src/guestfs.pod:193 #, no-wrap msgid "" " char *data = guestfs_cat (g, \"/etc/passwd\");\n" @@ -36369,7 +36514,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:189 +#: ../src/guestfs.pod:195 msgid "" "This would return C<data> as a newly allocated buffer containing the full " "content of that file (with some conditions: see also L</DOWNLOADING> below), " @@ -36377,14 +36522,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:193 +#: ../src/guestfs.pod:199 msgid "" "As another example, to create a top-level directory on that filesystem " "called C<\"var\"> you would do:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:196 +#: ../src/guestfs.pod:202 #, no-wrap msgid "" " guestfs_mkdir (g, \"/var\");\n" @@ -36392,12 +36537,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:198 +#: ../src/guestfs.pod:204 msgid "To create a symlink you could do:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:200 +#: ../src/guestfs.pod:206 #, no-wrap msgid "" " guestfs_ln_s (g, \"/etc/init.d/portmap\",\n" @@ -36406,14 +36551,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:203 +#: ../src/guestfs.pod:209 msgid "" "Libguestfs will reject attempts to use relative paths and there is no " "concept of a current working directory." msgstr "" #. type: textblock -#: ../src/guestfs.pod:206 +#: ../src/guestfs.pod:212 msgid "" "Libguestfs can return errors in many situations: for example if the " "filesystem isn't writable, or if a file or directory that you requested " @@ -36423,33 +36568,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:212 +#: ../src/guestfs.pod:218 msgid "" "File writes are affected by the per-handle umask, set by calling " "L</guestfs_umask> and defaulting to 022. See L</UMASK>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:215 +#: ../src/guestfs.pod:221 msgid "PARTITIONING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:217 +#: ../src/guestfs.pod:223 msgid "" "Libguestfs contains API calls to read, create and modify partition tables on " "disk images." msgstr "" #. type: textblock -#: ../src/guestfs.pod:220 +#: ../src/guestfs.pod:226 msgid "" "In the common case where you want to create a single partition covering the " "whole disk, you should use the L</guestfs_part_disk> call:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:224 +#: ../src/guestfs.pod:230 #, no-wrap msgid "" " const char *parttype = \"mbr\";\n" @@ -36460,19 +36605,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:229 +#: ../src/guestfs.pod:235 msgid "" "Obviously this effectively wipes anything that was on that disk image " "before." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:232 +#: ../src/guestfs.pod:238 msgid "LVM2" msgstr "" #. type: textblock -#: ../src/guestfs.pod:234 +#: ../src/guestfs.pod:240 msgid "" "Libguestfs provides access to a large part of the LVM2 API, such as " "L</guestfs_lvcreate> and L</guestfs_vgremove>. It won't make much sense " @@ -36481,19 +36626,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:239 +#: ../src/guestfs.pod:245 msgid "" "This author strongly recommends reading the LVM HOWTO, online at " "L<http://tldp.org/HOWTO/LVM-HOWTO/>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:242 +#: ../src/guestfs.pod:248 msgid "DOWNLOADING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:244 +#: ../src/guestfs.pod:250 msgid "" "Use L</guestfs_cat> to download small, text only files. This call is " "limited to files which are less than 2 MB and which cannot contain any ASCII " @@ -36501,7 +36646,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:248 +#: ../src/guestfs.pod:254 msgid "" "L</guestfs_read_file> can be used to read files which contain arbitrary 8 " "bit data, since it returns a (pointer, size) pair. However it is still " @@ -36509,31 +36654,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:252 +#: ../src/guestfs.pod:258 msgid "" "L</guestfs_download> can be used to download any file, with no limits on " "content or size (even files larger than 4 GB)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:255 +#: ../src/guestfs.pod:261 msgid "To download multiple files, see L</guestfs_tar_out> and L</guestfs_tgz_out>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:258 +#: ../src/guestfs.pod:264 msgid "UPLOADING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:260 +#: ../src/guestfs.pod:266 msgid "" "It's often the case that you want to write a file or files to the disk " "image." msgstr "" #. type: textblock -#: ../src/guestfs.pod:263 +#: ../src/guestfs.pod:269 msgid "" "To write a small file with fixed content, use L</guestfs_write>. To create " "a file of all zeroes, use L</guestfs_truncate_size> (sparse) or " @@ -36543,19 +36688,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:269 +#: ../src/guestfs.pod:275 msgid "" "To upload a single file, use L</guestfs_upload>. This call has no limits on " "file content or size (even files larger than 4 GB)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:272 +#: ../src/guestfs.pod:278 msgid "To upload multiple files, see L</guestfs_tar_in> and L</guestfs_tgz_in>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:274 +#: ../src/guestfs.pod:280 msgid "" "However the fastest way to upload I<large numbers of arbitrary files> is to " "turn them into a squashfs or CD ISO (see L<mksquashfs(8)> and " @@ -36569,12 +36714,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:285 +#: ../src/guestfs.pod:291 msgid "COPYING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:287 +#: ../src/guestfs.pod:293 msgid "" "There are various different commands for copying between files and devices " "and in and out of the guest filesystem. These are summarised in the table " @@ -36582,51 +36727,51 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:293 +#: ../src/guestfs.pod:299 msgid "B<file> to B<file>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:295 +#: ../src/guestfs.pod:301 msgid "" "Use L</guestfs_cp> to copy a single file, or L</guestfs_cp_a> to copy " "directories recursively." msgstr "" #. type: textblock -#: ../src/guestfs.pod:298 +#: ../src/guestfs.pod:304 msgid "To copy part of a file (offset and size) use L</guestfs_copy_file_to_file>." msgstr "" #. type: =item -#: ../src/guestfs.pod:301 +#: ../src/guestfs.pod:307 msgid "B<file> to B<device>" msgstr "" #. type: =item -#: ../src/guestfs.pod:303 +#: ../src/guestfs.pod:309 msgid "B<device> to B<file>" msgstr "" #. type: =item -#: ../src/guestfs.pod:305 +#: ../src/guestfs.pod:311 msgid "B<device> to B<device>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:307 +#: ../src/guestfs.pod:313 msgid "" "Use L</guestfs_copy_file_to_device>, L</guestfs_copy_device_to_file>, or " "L</guestfs_copy_device_to_device>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:310 +#: ../src/guestfs.pod:316 msgid "Example: duplicate the contents of an LV:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:312 +#: ../src/guestfs.pod:318 #, no-wrap msgid "" " guestfs_copy_device_to_device (g,\n" @@ -36637,7 +36782,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:317 +#: ../src/guestfs.pod:323 msgid "" "The destination (C</dev/VG/Copy>) must be at least as large as the source " "(C</dev/VG/Original>). To copy less than the whole source device, use the " @@ -36645,7 +36790,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:321 +#: ../src/guestfs.pod:327 #, no-wrap msgid "" " guestfs_copy_device_to_device (g,\n" @@ -36656,32 +36801,32 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:326 +#: ../src/guestfs.pod:332 msgid "B<file on the host> to B<file or device>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:328 +#: ../src/guestfs.pod:334 msgid "Use L</guestfs_upload>. See L</UPLOADING> above." msgstr "" #. type: =item -#: ../src/guestfs.pod:330 +#: ../src/guestfs.pod:336 msgid "B<file or device> to B<file on the host>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:332 +#: ../src/guestfs.pod:338 msgid "Use L</guestfs_download>. See L</DOWNLOADING> above." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:336 +#: ../src/guestfs.pod:342 msgid "UPLOADING AND DOWNLOADING TO PIPES AND FILE DESCRIPTORS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:338 +#: ../src/guestfs.pod:344 msgid "" "Calls like L</guestfs_upload>, L</guestfs_download>, L</guestfs_tar_in>, " "L</guestfs_tar_out> etc appear to only take filenames as arguments, so it " @@ -36692,12 +36837,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:346 +#: ../src/guestfs.pod:352 msgid "For example, L<virt-cat(1)> writes its output to stdout by doing:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:349 +#: ../src/guestfs.pod:355 #, no-wrap msgid "" " guestfs_download (g, filename, \"/dev/stdout\");\n" @@ -36705,12 +36850,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:351 +#: ../src/guestfs.pod:357 msgid "and you can write tar output to a file descriptor C<fd> by doing:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:353 +#: ../src/guestfs.pod:359 #, no-wrap msgid "" " char devfd[64];\n" @@ -36720,26 +36865,26 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:357 +#: ../src/guestfs.pod:363 msgid "LISTING FILES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:359 +#: ../src/guestfs.pod:365 msgid "" "L</guestfs_ll> is just designed for humans to read (mainly when using the " "L<guestfish(1)>-equivalent command C<ll>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:362 +#: ../src/guestfs.pod:368 msgid "" "L</guestfs_ls> is a quick way to get a list of files in a directory from " "programs, as a flat list of strings." msgstr "" #. type: textblock -#: ../src/guestfs.pod:365 +#: ../src/guestfs.pod:371 msgid "" "L</guestfs_readdir> is a programmatic way to get a list of files in a " "directory, plus additional information about each one. It is more " @@ -36747,19 +36892,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:369 +#: ../src/guestfs.pod:375 msgid "" "L</guestfs_find> and L</guestfs_find0> can be used to recursively list " "files." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:372 +#: ../src/guestfs.pod:378 msgid "RUNNING COMMANDS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:374 +#: ../src/guestfs.pod:380 msgid "" "Although libguestfs is primarily an API for manipulating files inside guest " "images, we also provide some limited facilities for running commands inside " @@ -36767,55 +36912,55 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:378 +#: ../src/guestfs.pod:384 msgid "There are many limitations to this:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:384 +#: ../src/guestfs.pod:390 msgid "" "The kernel version that the command runs under will be different from what " "it expects." msgstr "" #. type: textblock -#: ../src/guestfs.pod:389 +#: ../src/guestfs.pod:395 msgid "" "If the command needs to communicate with daemons, then most likely they " "won't be running." msgstr "" #. type: textblock -#: ../src/guestfs.pod:394 +#: ../src/guestfs.pod:400 msgid "The command will be running in limited memory." msgstr "" #. type: textblock -#: ../src/guestfs.pod:398 +#: ../src/guestfs.pod:404 msgid "" "The network may not be available unless you enable it (see " "L</guestfs_set_network>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:403 +#: ../src/guestfs.pod:409 msgid "Only supports Linux guests (not Windows, BSD, etc)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:407 +#: ../src/guestfs.pod:413 msgid "Architecture limitations (eg. won't work for a PPC guest on an X86 host)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:412 +#: ../src/guestfs.pod:418 msgid "" "For SELinux guests, you may need to enable SELinux and load policy first. " "See L</SELINUX> in this manpage." msgstr "" #. type: textblock -#: ../src/guestfs.pod:417 +#: ../src/guestfs.pod:423 msgid "" "I<Security:> It is not safe to run commands from untrusted, possibly " "malicious guests. These commands may attempt to exploit your program by " @@ -36827,7 +36972,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:426 +#: ../src/guestfs.pod:432 msgid "" "A secure alternative is to use libguestfs to install a \"firstboot\" script " "(a script which runs when the guest next boots normally), and to have this " @@ -36837,26 +36982,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:434 +#: ../src/guestfs.pod:440 msgid "" "The two main API calls to run commands are L</guestfs_command> and " "L</guestfs_sh> (there are also variations)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:437 +#: ../src/guestfs.pod:443 msgid "" "The difference is that L</guestfs_sh> runs commands using the shell, so any " "shell globs, redirections, etc will work." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:440 +#: ../src/guestfs.pod:446 msgid "CONFIGURATION FILES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:442 +#: ../src/guestfs.pod:448 msgid "" "To read and write configuration files in Linux guest filesystems, we " "strongly recommend using Augeas. For example, Augeas understands how to " @@ -36865,7 +37010,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:447 +#: ../src/guestfs.pod:453 msgid "" "The main Augeas calls are bound through the C<guestfs_aug_*> APIs. We don't " "document Augeas itself here because there is excellent documentation on the " @@ -36873,7 +37018,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:451 +#: ../src/guestfs.pod:457 msgid "" "If you don't want to use Augeas (you fool!) then try calling " "L</guestfs_read_lines> to get the file as a list of lines which you can " @@ -36881,24 +37026,24 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:455 +#: ../src/guestfs.pod:461 msgid "SELINUX" msgstr "" #. type: textblock -#: ../src/guestfs.pod:457 +#: ../src/guestfs.pod:463 msgid "" "We support SELinux guests. To ensure that labeling happens correctly in " "SELinux guests, you need to enable SELinux and load the guest's policy:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:465 +#: ../src/guestfs.pod:471 msgid "Before launching, do:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:467 +#: ../src/guestfs.pod:473 #, no-wrap msgid "" " guestfs_set_selinux (g, 1);\n" @@ -36906,14 +37051,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:471 +#: ../src/guestfs.pod:477 msgid "" "After mounting the guest's filesystem(s), load the policy. This is best " "done by running the L<load_policy(8)> command in the guest itself:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:475 +#: ../src/guestfs.pod:481 #, no-wrap msgid "" " guestfs_sh (g, \"/usr/sbin/load_policy\");\n" @@ -36921,21 +37066,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:477 +#: ../src/guestfs.pod:483 msgid "" "(Older versions of C<load_policy> require you to specify the name of the " "policy file)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:482 +#: ../src/guestfs.pod:488 msgid "" "Optionally, set the security context for the API. The correct security " "context to use can only be known by inspecting the guest. As an example:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:486 +#: ../src/guestfs.pod:492 #, no-wrap msgid "" " guestfs_setcon (g, \"unconfined_u:unconfined_r:unconfined_t:s0\");\n" @@ -36943,24 +37088,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:490 +#: ../src/guestfs.pod:496 msgid "This will work for running commands and editing existing files." msgstr "" #. type: textblock -#: ../src/guestfs.pod:492 +#: ../src/guestfs.pod:498 msgid "" "When new files are created, you may need to label them explicitly, for " "example by running the external command C<restorecon pathname>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:496 +#: ../src/guestfs.pod:502 msgid "UMASK" msgstr "" #. type: textblock -#: ../src/guestfs.pod:498 +#: ../src/guestfs.pod:504 msgid "" "Certain calls are affected by the current file mode creation mask (the " "\"umask\"). In particular ones which create files or directories, such as " @@ -36970,14 +37115,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:504 +#: ../src/guestfs.pod:510 msgid "" "The default umask is C<022>, so files are created with modes such as C<0644> " "and directories with C<0755>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:507 +#: ../src/guestfs.pod:513 msgid "" "There are two ways to avoid being affected by umask. Either set umask to 0 " "(call C<guestfs_umask (g, 0)> early after launching). Or call " @@ -36985,12 +37130,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:511 +#: ../src/guestfs.pod:517 msgid "For more information about umask, see L<umask(2)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:515 +#: ../src/guestfs.pod:521 msgid "" "Libguestfs allows you to access Linux guests which have been encrypted using " "whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) " @@ -36999,21 +37144,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:521 +#: ../src/guestfs.pod:527 msgid "" "Use L</guestfs_vfs_type> to identify LUKS-encrypted block devices (it " "returns the string C<crypto_LUKS>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:524 +#: ../src/guestfs.pod:530 msgid "" "Then open these devices by calling L</guestfs_luks_open>. Obviously you " "will require the passphrase!" msgstr "" #. type: textblock -#: ../src/guestfs.pod:527 +#: ../src/guestfs.pod:533 msgid "" "Opening a LUKS device creates a new device mapper device called " "C</dev/mapper/mapname> (where C<mapname> is the string you supply to " @@ -37022,7 +37167,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:533 +#: ../src/guestfs.pod:539 msgid "" "LVM volume groups on the device can be made visible by calling " "L</guestfs_vgscan> followed by L</guestfs_vg_activate_all>. The logical " @@ -37030,7 +37175,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:537 +#: ../src/guestfs.pod:543 msgid "" "Use the reverse process to close a LUKS device. Unmount any logical volumes " "on it, deactivate the volume groups by caling C<guestfs_vg_activate (g, 0, " @@ -37040,12 +37185,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:544 +#: ../src/guestfs.pod:550 msgid "INSPECTION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:546 +#: ../src/guestfs.pod:552 msgid "" "Libguestfs has APIs for inspecting an unknown disk image to find out if it " "contains operating systems, an install CD or a live CD. (These APIs used to " @@ -37055,14 +37200,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:553 +#: ../src/guestfs.pod:559 msgid "" "Add all disks belonging to the unknown virtual machine and call " "L</guestfs_launch> in the usual way." msgstr "" #. type: textblock -#: ../src/guestfs.pod:556 +#: ../src/guestfs.pod:562 msgid "" "Then call L</guestfs_inspect_os>. This function uses other libguestfs calls " "and certain heuristics, and returns a list of operating systems that were " @@ -37075,7 +37220,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:565 +#: ../src/guestfs.pod:571 msgid "" "For each root, you can then call various C<guestfs_inspect_get_*> functions " "to get additional details about that operating system. For example, call " @@ -37084,7 +37229,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:571 +#: ../src/guestfs.pod:577 msgid "" "Un*x-like and Linux-based operating systems usually consist of several " "filesystems which are mounted at boot time (for example, a separate boot " @@ -37095,7 +37240,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:578 +#: ../src/guestfs.pod:584 #, no-wrap msgid "" " /boot => /dev/sda1\n" @@ -37105,14 +37250,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:582 +#: ../src/guestfs.pod:588 msgid "" "The caller can then make calls to L</guestfs_mount_options> to mount the " "filesystems as suggested." msgstr "" #. type: textblock -#: ../src/guestfs.pod:585 +#: ../src/guestfs.pod:591 msgid "" "Be careful to mount filesystems in the right order (eg. C</> before " "C</usr>). Sorting the keys of the hash by length, shortest first, should " @@ -37120,7 +37265,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:589 +#: ../src/guestfs.pod:595 msgid "" "Inspection currently only works for some common operating systems. " "Contributors are welcome to send patches for other operating systems that we " @@ -37128,7 +37273,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:593 +#: ../src/guestfs.pod:599 msgid "" "Encrypted disks must be opened before inspection. See L</ENCRYPTED DISKS> " "for more details. The L</guestfs_inspect_os> function just ignores any " @@ -37136,7 +37281,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:597 +#: ../src/guestfs.pod:603 msgid "" "A note on the implementation: The call L</guestfs_inspect_os> performs " "inspection and caches the results in the guest handle. Subsequent calls to " @@ -37149,19 +37294,19 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:606 +#: ../src/guestfs.pod:612 msgid "INSPECTING INSTALL DISKS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:608 +#: ../src/guestfs.pod:614 msgid "" "Libguestfs (since 1.9.4) can detect some install disks, install CDs, live " "CDs and more." msgstr "" #. type: textblock -#: ../src/guestfs.pod:611 +#: ../src/guestfs.pod:617 msgid "" "Call L</guestfs_inspect_get_format> to return the format of the operating " "system, which currently can be C<installed> (a regular operating system) or " @@ -37169,7 +37314,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:615 +#: ../src/guestfs.pod:621 msgid "" "Further information is available about the operating system that can be " "installed using the regular inspection APIs like " @@ -37178,7 +37323,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:620 +#: ../src/guestfs.pod:626 msgid "" "Some additional information specific to installer disks is also available " "from the L</guestfs_inspect_is_live>, L</guestfs_inspect_is_netinst> and " @@ -37186,24 +37331,24 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:625 +#: ../src/guestfs.pod:631 msgid "SPECIAL CONSIDERATIONS FOR WINDOWS GUESTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:627 +#: ../src/guestfs.pod:633 msgid "" "Libguestfs can mount NTFS partitions. It does this using the " "L<http://www.ntfs-3g.org/> driver." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:630 +#: ../src/guestfs.pod:636 msgid "DRIVE LETTERS AND PATHS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:632 +#: ../src/guestfs.pod:638 msgid "" "DOS and Windows still use drive letters, and the filesystems are always " "treated as case insensitive by Windows itself, and therefore you might find " @@ -37213,14 +37358,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:638 +#: ../src/guestfs.pod:644 msgid "" "Drive letter mappings can be found using inspection (see L</INSPECTION> and " "L</guestfs_inspect_get_drive_mappings>)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:641 +#: ../src/guestfs.pod:647 msgid "" "Dealing with separator characters (backslash vs forward slash) is outside " "the scope of libguestfs, but usually a simple character replacement will " @@ -37228,33 +37373,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:645 +#: ../src/guestfs.pod:651 msgid "" "To resolve the case insensitivity of paths, call " "L</guestfs_case_sensitive_path>." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:648 +#: ../src/guestfs.pod:654 msgid "LONG FILENAMES ON NTFS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:650 +#: ../src/guestfs.pod:656 msgid "" "NTFS supports filenames up to 255 characters long. \"Character\" means a 2 " "byte UTF-16 codepoint which can encode the most common Unicode codepoints." msgstr "" #. type: textblock -#: ../src/guestfs.pod:654 +#: ../src/guestfs.pod:660 msgid "" "Most Linux filesystems support filenames up to 255 I<bytes>. This means you " "may get an error:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:657 +#: ../src/guestfs.pod:663 #, no-wrap msgid "" " File name too long\n" @@ -37262,14 +37407,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:659 +#: ../src/guestfs.pod:665 msgid "" "when you copy a file from NTFS to a Linux filesystem if the name, when " "reencoded as UTF-8, would exceed 255 bytes in length." msgstr "" #. type: textblock -#: ../src/guestfs.pod:662 +#: ../src/guestfs.pod:668 msgid "" "This will most often happen when using non-ASCII names that are longer than " "~127 characters (eg. Greek, Cyrillic) or longer than ~85 characters (Asian " @@ -37277,7 +37422,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:666 +#: ../src/guestfs.pod:672 msgid "" "A workaround is not to try to store such long filenames on Linux native " "filesystems. Since the L<tar(1)> format can store unlimited length " @@ -37285,12 +37430,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:670 +#: ../src/guestfs.pod:676 msgid "ACCESSING THE WINDOWS REGISTRY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:672 +#: ../src/guestfs.pod:678 msgid "" "Libguestfs also provides some help for decoding Windows Registry \"hive\" " "files, through the library C<hivex> which is part of the libguestfs project " @@ -37301,12 +37446,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:680 +#: ../src/guestfs.pod:686 msgid "SYMLINKS ON NTFS-3G FILESYSTEMS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:682 +#: ../src/guestfs.pod:688 msgid "" "Ntfs-3g tries to rewrite \"Junction Points\" and NTFS \"symbolic links\" to " "provide something which looks like a Linux symlink. The way it tries to do " @@ -37314,12 +37459,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:686 +#: ../src/guestfs.pod:692 msgid "L<http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:688 +#: ../src/guestfs.pod:694 msgid "" "The essential problem is that ntfs-3g simply does not have enough " "information to do a correct job. NTFS links can contain drive letters and " @@ -37329,7 +37474,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:695 +#: ../src/guestfs.pod:701 msgid "" "Instead if you encounter a symbolic link on an ntfs-3g filesystem, use " "L</guestfs_lgetxattr> to read the C<system.ntfs_reparse_data> extended " @@ -37338,36 +37483,36 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:700 +#: ../src/guestfs.pod:706 msgid "EXTENDED ATTRIBUTES ON NTFS-3G FILESYSTEMS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:702 +#: ../src/guestfs.pod:708 msgid "" "There are other useful extended attributes that can be read from ntfs-3g " "filesystems (using L</guestfs_getxattr>). See:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:705 +#: ../src/guestfs.pod:711 msgid "L<http://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/>" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:707 +#: ../src/guestfs.pod:713 msgid "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:709 +#: ../src/guestfs.pod:715 msgid "" "Although we don't want to discourage you from using the C API, we will " "mention here that the same API is also available in other languages." msgstr "" #. type: textblock -#: ../src/guestfs.pod:712 +#: ../src/guestfs.pod:718 msgid "" "The API is broadly identical in all supported languages. This means that " "the C call C<guestfs_add_drive_ro(g,file)> is C<$g-E<gt>add_drive_ro($file)> " @@ -37377,14 +37522,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:718 +#: ../src/guestfs.pod:724 msgid "" "Error messages are automatically transformed into exceptions if the language " "supports it." msgstr "" #. type: textblock -#: ../src/guestfs.pod:721 +#: ../src/guestfs.pod:727 msgid "" "We don't try to \"object orientify\" parts of the API in OO languages, " "although contributors are welcome to write higher level APIs above what we " @@ -37392,58 +37537,58 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:727 +#: ../src/guestfs.pod:733 msgid "B<C++>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:729 +#: ../src/guestfs.pod:735 msgid "" "You can use the I<guestfs.h> header file from C++ programs. The C++ API is " "identical to the C API. C++ classes and exceptions are not used." msgstr "" #. type: =item -#: ../src/guestfs.pod:733 +#: ../src/guestfs.pod:739 msgid "B<C#>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:735 +#: ../src/guestfs.pod:741 msgid "" "The C# bindings are highly experimental. Please read the warnings at the " "top of C<csharp/Libguestfs.cs>." msgstr "" #. type: =item -#: ../src/guestfs.pod:738 +#: ../src/guestfs.pod:744 msgid "B<Erlang>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:740 +#: ../src/guestfs.pod:746 msgid "See L<guestfs-erlang(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:742 +#: ../src/guestfs.pod:748 msgid "B<GObject>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:744 +#: ../src/guestfs.pod:750 msgid "" "Experimental GObject bindings (with GObject Introspection support) are " "available. See the C<gobject> directory in the source." msgstr "" #. type: =item -#: ../src/guestfs.pod:747 +#: ../src/guestfs.pod:753 msgid "B<Haskell>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:749 +#: ../src/guestfs.pod:755 msgid "" "This is the only language binding that is working but incomplete. Only " "calls which return simple integers have been bound in Haskell, and we are " @@ -37451,96 +37596,96 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:753 +#: ../src/guestfs.pod:759 msgid "B<Java>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:755 +#: ../src/guestfs.pod:761 msgid "" "Full documentation is contained in the Javadoc which is distributed with " "libguestfs. For examples, see L<guestfs-java(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:758 +#: ../src/guestfs.pod:764 msgid "B<OCaml>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:760 +#: ../src/guestfs.pod:766 msgid "See L<guestfs-ocaml(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:762 +#: ../src/guestfs.pod:768 msgid "B<Perl>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:764 +#: ../src/guestfs.pod:770 msgid "See L<guestfs-perl(3)> and L<Sys::Guestfs(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:766 +#: ../src/guestfs.pod:772 msgid "B<PHP>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:768 +#: ../src/guestfs.pod:774 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:771 +#: ../src/guestfs.pod:777 msgid "The PHP binding only works correctly on 64 bit machines." msgstr "" #. type: =item -#: ../src/guestfs.pod:773 +#: ../src/guestfs.pod:779 msgid "B<Python>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:775 +#: ../src/guestfs.pod:781 msgid "See L<guestfs-python(3)>." msgstr "" #. type: =item -#: ../src/guestfs.pod:777 +#: ../src/guestfs.pod:783 msgid "B<Ruby>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:779 +#: ../src/guestfs.pod:785 msgid "See L<guestfs-ruby(3)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:781 +#: ../src/guestfs.pod:787 msgid "For JRuby, use the Java bindings." msgstr "" #. type: =item -#: ../src/guestfs.pod:783 +#: ../src/guestfs.pod:789 msgid "B<shell scripts>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:785 +#: ../src/guestfs.pod:791 msgid "See L<guestfish(1)>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:789 +#: ../src/guestfs.pod:795 msgid "LIBGUESTFS GOTCHAS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:791 +#: ../src/guestfs.pod:797 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 " @@ -37548,7 +37693,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:795 +#: ../src/guestfs.pod:801 msgid "" "Since we developed libguestfs and the associated tools, there are several " "things we would have designed differently, but are now stuck with for " @@ -37557,19 +37702,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:803 +#: ../src/guestfs.pod:809 msgid "Autosync / forgetting to sync." msgstr "" #. type: textblock -#: ../src/guestfs.pod:805 +#: ../src/guestfs.pod:811 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:808 +#: ../src/guestfs.pod:814 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 " @@ -37577,7 +37722,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:812 +#: ../src/guestfs.pod:818 #, no-wrap msgid "" " guestfs_set_autosync (g, 1);\n" @@ -37585,7 +37730,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:814 +#: ../src/guestfs.pod:820 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> " @@ -37593,7 +37738,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:818 +#: ../src/guestfs.pod:824 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 " @@ -37601,7 +37746,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:822 +#: ../src/guestfs.pod:828 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 " @@ -37609,19 +37754,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:826 +#: ../src/guestfs.pod:832 msgid "Mount option C<-o sync> should not be the default." msgstr "" #. type: textblock -#: ../src/guestfs.pod:828 +#: ../src/guestfs.pod:834 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:831 +#: ../src/guestfs.pod:837 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 " @@ -37629,31 +37774,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:835 +#: ../src/guestfs.pod:841 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:838 +#: ../src/guestfs.pod:844 msgid "Read-only should be the default." msgstr "" #. type: textblock -#: ../src/guestfs.pod:840 +#: ../src/guestfs.pod:846 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:843 +#: ../src/guestfs.pod:849 msgid "This would reduce the potential to corrupt live VM images." msgstr "" #. type: textblock -#: ../src/guestfs.pod:845 +#: ../src/guestfs.pod:851 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 " @@ -37661,12 +37806,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:849 +#: ../src/guestfs.pod:855 msgid "guestfish command line is hard to use." msgstr "" #. type: textblock -#: ../src/guestfs.pod:851 +#: ../src/guestfs.pod:857 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 " @@ -37676,12 +37821,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:858 +#: ../src/guestfs.pod:864 msgid "guestfish megabyte modifiers don't work right on all commands" msgstr "" #. type: textblock -#: ../src/guestfs.pod:860 +#: ../src/guestfs.pod:866 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 " @@ -37691,12 +37836,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:867 +#: ../src/guestfs.pod:873 msgid "The most common is L</guestfs_lvcreate>. The guestfish command:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:869 +#: ../src/guestfs.pod:875 #, no-wrap msgid "" " lvcreate LV VG 100M\n" @@ -37704,7 +37849,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:871 +#: ../src/guestfs.pod:877 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 " @@ -37713,19 +37858,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:876 +#: ../src/guestfs.pod:882 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:879 +#: ../src/guestfs.pod:885 msgid "Ambiguity between devices and paths" msgstr "" #. type: textblock -#: ../src/guestfs.pod:881 +#: ../src/guestfs.pod:887 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 " @@ -37733,7 +37878,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:886 +#: ../src/guestfs.pod:892 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>. " @@ -37742,7 +37887,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:892 +#: ../src/guestfs.pod:898 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 " @@ -37752,7 +37897,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:898 +#: ../src/guestfs.pod:904 #, no-wrap msgid "" " type path = Path of string | Device of int | Partition of int * int\n" @@ -37760,12 +37905,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:900 +#: ../src/guestfs.pod:906 msgid "which would allow you to pass arguments like:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:902 +#: ../src/guestfs.pod:908 #, no-wrap msgid "" " Path \"/foo/bar\"\n" @@ -37776,26 +37921,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:907 +#: ../src/guestfs.pod:913 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:912 +#: ../src/guestfs.pod:918 msgid "KEYS AND PASSPHRASES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:914 +#: ../src/guestfs.pod:920 msgid "" "Certain libguestfs calls take a parameter that contains sensitive key " "material, passed in as a C string." msgstr "" #. type: textblock -#: ../src/guestfs.pod:917 +#: ../src/guestfs.pod:923 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 " @@ -37804,7 +37949,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:922 +#: ../src/guestfs.pod:928 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, " @@ -37812,19 +37957,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:927 +#: ../src/guestfs.pod:933 msgid "MULTIPLE HANDLES AND MULTIPLE THREADS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:929 +#: ../src/guestfs.pod:935 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:932 +#: ../src/guestfs.pod:938 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 " @@ -37832,33 +37977,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:936 +#: ../src/guestfs.pod:942 msgid "" "See the graphical program guestfs-browser for one possible architecture for " "multithreaded programs using libvirt and libguestfs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:939 +#: ../src/guestfs.pod:945 msgid "PATH" msgstr "" #. type: textblock -#: ../src/guestfs.pod:941 +#: ../src/guestfs.pod:947 msgid "" "Libguestfs needs a supermin appliance, which it finds by looking along an " "internal path." msgstr "" #. type: textblock -#: ../src/guestfs.pod:944 +#: ../src/guestfs.pod:950 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:947 +#: ../src/guestfs.pod:953 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 " @@ -37869,12 +38014,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:954 +#: ../src/guestfs.pod:960 msgid "QEMU WRAPPERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:956 +#: ../src/guestfs.pod:962 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 " @@ -37882,7 +38027,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:960 +#: ../src/guestfs.pod:966 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 " @@ -37891,14 +38036,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:965 +#: ../src/guestfs.pod:971 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:968 +#: ../src/guestfs.pod:974 #, no-wrap msgid "" " #!/bin/sh -\n" @@ -37909,7 +38054,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:972 +#: ../src/guestfs.pod:978 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 " @@ -37917,7 +38062,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:976 +#: ../src/guestfs.pod:982 #, no-wrap msgid "" " LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n" @@ -37925,14 +38070,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:978 +#: ../src/guestfs.pod:984 msgid "" "Note that libguestfs also calls qemu with the -help and -version options in " "order to determine features." msgstr "" #. type: textblock -#: ../src/guestfs.pod:981 +#: ../src/guestfs.pod:987 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 " @@ -37942,7 +38087,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:990 +#: ../src/guestfs.pod:996 #, no-wrap msgid "" " i=0\n" @@ -37960,7 +38105,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1002 +#: ../src/guestfs.pod:1008 #, no-wrap msgid "" " exec qemu-kvm -machine pc,accel=tcg \"${args[@]}\"\n" @@ -37968,19 +38113,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1004 +#: ../src/guestfs.pod:1010 msgid "ATTACHING TO RUNNING DAEMONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1006 +#: ../src/guestfs.pod:1012 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:1009 +#: ../src/guestfs.pod:1015 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 " @@ -37988,12 +38133,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1013 +#: ../src/guestfs.pod:1019 msgid "Using guestfs_set_attach_method" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1015 +#: ../src/guestfs.pod:1021 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 " @@ -38001,14 +38146,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1019 +#: ../src/guestfs.pod:1025 msgid "" "The normal attach method is C<appliance>, where a small appliance is created " "containing the daemon, and then the library connects to this." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1022 +#: ../src/guestfs.pod:1028 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 " @@ -38016,7 +38161,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1026 +#: ../src/guestfs.pod:1032 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 " @@ -38024,12 +38169,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1030 +#: ../src/guestfs.pod:1036 msgid "Using guestfs_add_domain with live flag" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1032 +#: ../src/guestfs.pod:1038 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 " @@ -38038,7 +38183,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1038 +#: ../src/guestfs.pod:1044 #, no-wrap msgid "" " <domain>\n" @@ -38056,14 +38201,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1050 +#: ../src/guestfs.pod:1056 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:1053 +#: ../src/guestfs.pod:1059 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 " @@ -38071,19 +38216,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1057 +#: ../src/guestfs.pod:1063 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:1061 +#: ../src/guestfs.pod:1067 msgid "ABI GUARANTEE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1063 +#: ../src/guestfs.pod:1069 msgid "" "We guarantee the libguestfs ABI (binary interface), for public, high-level " "actions as outlined in this section. Although we will deprecate some " @@ -38093,12 +38238,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1069 +#: ../src/guestfs.pod:1075 msgid "BLOCK DEVICE NAMING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1071 +#: ../src/guestfs.pod:1077 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 " @@ -38113,7 +38258,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1083 +#: ../src/guestfs.pod:1089 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 " @@ -38121,7 +38266,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1087 +#: ../src/guestfs.pod:1093 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 " @@ -38129,7 +38274,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1092 +#: ../src/guestfs.pod:1098 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 " @@ -38138,7 +38283,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1098 +#: ../src/guestfs.pod:1104 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 " @@ -38146,12 +38291,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1103 +#: ../src/guestfs.pod:1109 msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1105 +#: ../src/guestfs.pod:1111 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 " @@ -38161,7 +38306,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1111 +#: ../src/guestfs.pod:1117 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 " @@ -38169,54 +38314,54 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1119 +#: ../src/guestfs.pod:1125 msgid "Is the string a parameter which is a device or partition name?" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1123 +#: ../src/guestfs.pod:1129 msgid "Does the string begin with C</dev/sd>?" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1127 +#: ../src/guestfs.pod:1133 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:1132 +#: ../src/guestfs.pod:1138 msgid "Replace initial C</dev/sd> string with C</dev/hd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1134 +#: ../src/guestfs.pod:1140 msgid "For example, change C</dev/sda2> to C</dev/hda2>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1136 +#: ../src/guestfs.pod:1142 msgid "If that named device exists, use it. If not, continue." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1140 +#: ../src/guestfs.pod:1146 msgid "Replace initial C</dev/sd> string with C</dev/vd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1142 +#: ../src/guestfs.pod:1148 msgid "If that named device exists, use it. If not, return an error." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1146 +#: ../src/guestfs.pod:1152 msgid "PORTABILITY CONCERNS WITH BLOCK DEVICE NAMING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1148 +#: ../src/guestfs.pod:1154 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 " @@ -38224,38 +38369,38 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1152 +#: ../src/guestfs.pod:1158 msgid "" "Where possible for maximum future portability programs using libguestfs " "should use these future-proof techniques:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1159 +#: ../src/guestfs.pod:1165 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:1162 +#: ../src/guestfs.pod:1168 msgid "Since those device names exist by definition, they will never be translated." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1167 +#: ../src/guestfs.pod:1173 msgid "" "Use higher level ways to identify filesystems, such as LVM names, UUIDs and " "filesystem labels." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1172 +#: ../src/guestfs.pod:1178 msgid "NULL DISKS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1174 +#: ../src/guestfs.pod:1180 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 " @@ -38263,46 +38408,46 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1178 +#: ../src/guestfs.pod:1184 msgid "A null disk has the following properties:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1184 +#: ../src/guestfs.pod:1190 msgid "" "A null disk will appear as a normal device, eg. in calls to " "L</guestfs_list_devices>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1189 +#: ../src/guestfs.pod:1195 msgid "You may add C<\"/dev/null\"> multiple times." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1193 +#: ../src/guestfs.pod:1199 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:1198 +#: ../src/guestfs.pod:1204 msgid "Null disks are used for three main purposes:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1204 +#: ../src/guestfs.pod:1210 msgid "Performance testing of libguestfs (see L<guestfs-performance(1)>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1208 +#: ../src/guestfs.pod:1214 msgid "The internal test suite." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1212 +#: ../src/guestfs.pod:1218 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 " @@ -38310,12 +38455,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1216 +#: ../src/guestfs.pod:1222 msgid "For example, to test if a feature is available, use code like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1218 +#: ../src/guestfs.pod:1224 #, no-wrap msgid "" " guestfs_h *g;\n" @@ -38324,7 +38469,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1221 +#: ../src/guestfs.pod:1227 #, no-wrap msgid "" " g = guestfs_create ();\n" @@ -38340,19 +38485,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1235 +#: ../src/guestfs.pod:1241 msgid "" "This section discusses security implications of using libguestfs, " "particularly with untrusted or malicious guests or disk images." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1238 +#: ../src/guestfs.pod:1244 msgid "GENERAL SECURITY CONSIDERATIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1240 +#: ../src/guestfs.pod:1246 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 " @@ -38362,42 +38507,42 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1250 +#: ../src/guestfs.pod:1256 msgid "the data (file etc) not being present" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1254 +#: ../src/guestfs.pod:1260 msgid "being present but empty" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1258 +#: ../src/guestfs.pod:1264 msgid "being much larger than normal" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1262 +#: ../src/guestfs.pod:1268 msgid "containing arbitrary 8 bit data" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1266 +#: ../src/guestfs.pod:1272 msgid "being in an unexpected character encoding" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1270 +#: ../src/guestfs.pod:1276 msgid "containing homoglyphs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1274 +#: ../src/guestfs.pod:1280 msgid "SECURITY OF MOUNTING FILESYSTEMS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1276 +#: ../src/guestfs.pod:1282 msgid "" "When you mount a filesystem under Linux, mistakes in the kernel filesystem " "(VFS) module can sometimes be escalated into exploits by deliberately " @@ -38413,7 +38558,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1289 +#: ../src/guestfs.pod:1295 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 " @@ -38427,19 +38572,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1300 +#: ../src/guestfs.pod:1306 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:1303 +#: ../src/guestfs.pod:1309 msgid "PROTOCOL SECURITY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1305 +#: ../src/guestfs.pod:1311 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 " @@ -38449,12 +38594,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1311 +#: ../src/guestfs.pod:1317 msgid "INSPECTION SECURITY" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1313 +#: ../src/guestfs.pod:1319 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 " @@ -38463,7 +38608,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1319 +#: ../src/guestfs.pod:1325 msgid "" "Guest configuration may be altered in unusual ways by the administrator of " "the virtual machine, and may not reflect reality (particularly for untrusted " @@ -38474,7 +38619,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1327 +#: ../src/guestfs.pod:1333 msgid "" "The inspection API parses guest configuration using two external libraries: " "Augeas (Linux configuration) and hivex (Windows Registry). Both are " @@ -38484,12 +38629,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1333 +#: ../src/guestfs.pod:1339 msgid "RUNNING UNTRUSTED GUEST COMMANDS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1335 +#: ../src/guestfs.pod:1341 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 " @@ -38499,24 +38644,24 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1341 +#: ../src/guestfs.pod:1347 msgid "CVE-2010-3851" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1343 +#: ../src/guestfs.pod:1349 msgid "L<https://bugzilla.redhat.com/642934>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1345 +#: ../src/guestfs.pod:1351 msgid "" "This security bug concerns the automatic disk format detection that qemu " "does on disk images." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1348 +#: ../src/guestfs.pod:1354 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 " @@ -38525,7 +38670,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1353 +#: ../src/guestfs.pod:1359 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 " @@ -38534,7 +38679,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1358 +#: ../src/guestfs.pod:1364 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 " @@ -38546,24 +38691,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1366 +#: ../src/guestfs.pod:1372 msgid "In libguestfs this is rather hard to exploit except under two circumstances:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1373 +#: ../src/guestfs.pod:1379 msgid "You have enabled the network or have opened the disk in write mode." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1377 +#: ../src/guestfs.pod:1383 msgid "" "You are also running untrusted code from the guest (see L</RUNNING " "COMMANDS>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1382 +#: ../src/guestfs.pod:1388 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 " @@ -38572,31 +38717,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1387 +#: ../src/guestfs.pod:1393 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:1390 +#: ../src/guestfs.pod:1396 msgid "" "For libguestfs tools, use the I<--format> command line parameter as " "appropriate." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1393 +#: ../src/guestfs.pod:1399 msgid "CONNECTION MANAGEMENT" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1395 +#: ../src/guestfs.pod:1401 msgid "guestfs_h *" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1397 +#: ../src/guestfs.pod:1403 msgid "" "C<guestfs_h> is the opaque type representing a connection handle. Create a " "handle by calling L</guestfs_create>. Call L</guestfs_close> to free the " @@ -38604,19 +38749,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1401 +#: ../src/guestfs.pod:1407 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:1404 +#: ../src/guestfs.pod:1410 msgid "guestfs_create" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1406 +#: ../src/guestfs.pod:1412 #, no-wrap msgid "" " guestfs_h *guestfs_create (void);\n" @@ -38624,19 +38769,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1408 +#: ../src/guestfs.pod:1414 msgid "Create a connection handle." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1410 +#: ../src/guestfs.pod:1416 msgid "" "On success this returns a non-NULL pointer to a handle. On error it returns " "NULL." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1413 +#: ../src/guestfs.pod:1419 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 " @@ -38644,24 +38789,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1417 +#: ../src/guestfs.pod:1423 msgid "After configuring the handle, you have to call L</guestfs_launch>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1419 +#: ../src/guestfs.pod:1425 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:1422 +#: ../src/guestfs.pod:1428 msgid "guestfs_close" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1424 +#: ../src/guestfs.pod:1430 #, no-wrap msgid "" " void guestfs_close (guestfs_h *g);\n" @@ -38669,19 +38814,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1426 +#: ../src/guestfs.pod:1432 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:1429 +#: ../src/guestfs.pod:1435 msgid "The correct way to close the handle is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1431 +#: ../src/guestfs.pod:1437 #, no-wrap msgid "" " if (guestfs_shutdown (g) == -1) {\n" @@ -38692,51 +38837,51 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1436 +#: ../src/guestfs.pod:1442 msgid "L</guestfs_shutdown> is only needed if B<all> of the following are true:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1442 +#: ../src/guestfs.pod:1448 msgid "one or more disks were added in read-write mode, I<and>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1446 +#: ../src/guestfs.pod:1452 msgid "guestfs_launch was called, I<and>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1450 +#: ../src/guestfs.pod:1456 msgid "you made some changes, I<and>" msgstr "" #. type: =item -#: ../src/guestfs.pod:1452 +#: ../src/guestfs.pod:1458 msgid "4" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1454 +#: ../src/guestfs.pod:1460 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:1459 +#: ../src/guestfs.pod:1465 msgid "ERROR HANDLING" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1461 +#: ../src/guestfs.pod:1467 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:1464 +#: ../src/guestfs.pod:1470 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 " @@ -38744,7 +38889,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1468 +#: ../src/guestfs.pod:1474 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 " @@ -38752,7 +38897,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1473 +#: ../src/guestfs.pod:1479 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 " @@ -38760,7 +38905,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1477 +#: ../src/guestfs.pod:1483 #, no-wrap msgid "" " if (guestfs_launch (g) == -1)\n" @@ -38769,21 +38914,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1480 +#: ../src/guestfs.pod:1486 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:1483 +#: ../src/guestfs.pod:1489 msgid "" "For other programs the caller will almost certainly want to install an " "alternate error handler or do error handling in-line like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1486 +#: ../src/guestfs.pod:1492 #, no-wrap msgid "" " /* This disables the default behaviour of printing errors\n" @@ -38793,7 +38938,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1490 +#: ../src/guestfs.pod:1496 #, no-wrap msgid "" " if (guestfs_launch (g) == -1) {\n" @@ -38810,7 +38955,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1501 +#: ../src/guestfs.pod:1507 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 " @@ -38818,7 +38963,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1505 +#: ../src/guestfs.pod:1511 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 " @@ -38828,12 +38973,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1511 +#: ../src/guestfs.pod:1517 msgid "guestfs_last_error" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1513 +#: ../src/guestfs.pod:1519 #, no-wrap msgid "" " const char *guestfs_last_error (guestfs_h *g);\n" @@ -38841,26 +38986,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1515 +#: ../src/guestfs.pod:1521 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:1519 +#: ../src/guestfs.pod:1525 msgid "" "The lifetime of the returned string is until the next error occurs, or " "L</guestfs_close> is called." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1522 +#: ../src/guestfs.pod:1528 msgid "guestfs_last_errno" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1524 +#: ../src/guestfs.pod:1530 #, no-wrap msgid "" " int guestfs_last_errno (guestfs_h *g);\n" @@ -38868,27 +39013,27 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1526 +#: ../src/guestfs.pod:1532 msgid "This returns the last error number (errno) that happened on C<g>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1528 +#: ../src/guestfs.pod:1534 msgid "If successful, an errno integer not equal to zero is returned." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1530 +#: ../src/guestfs.pod:1536 msgid "If no error, this returns 0. This call can return 0 in three situations:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1537 +#: ../src/guestfs.pod:1543 msgid "There has not been any error on the handle." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1541 +#: ../src/guestfs.pod:1547 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 " @@ -38896,14 +39041,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1547 +#: ../src/guestfs.pod:1553 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:1553 +#: ../src/guestfs.pod:1559 msgid "" "Libguestfs tries to convert the errno from inside the applicance into a " "corresponding errno for the caller (not entirely trivial: the appliance " @@ -38914,12 +39059,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1561 +#: ../src/guestfs.pod:1567 msgid "guestfs_set_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1563 +#: ../src/guestfs.pod:1569 #, no-wrap msgid "" " typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n" @@ -38932,7 +39077,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1570 +#: ../src/guestfs.pod:1576 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 " @@ -38940,14 +39085,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1574 +#: ../src/guestfs.pod:1580 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:1577 +#: ../src/guestfs.pod:1583 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 " @@ -38955,22 +39100,22 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1581 +#: ../src/guestfs.pod:1587 msgid "The default handler prints messages on C<stderr>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1583 +#: ../src/guestfs.pod:1589 msgid "If you set C<cb> to C<NULL> then I<no> handler is called." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1585 +#: ../src/guestfs.pod:1591 msgid "guestfs_get_error_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1587 +#: ../src/guestfs.pod:1593 #, no-wrap msgid "" " guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n" @@ -38979,17 +39124,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1590 +#: ../src/guestfs.pod:1596 msgid "Returns the current error handler callback." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1592 +#: ../src/guestfs.pod:1598 msgid "guestfs_set_out_of_memory_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1594 +#: ../src/guestfs.pod:1600 #, no-wrap msgid "" " typedef void (*guestfs_abort_cb) (void);\n" @@ -38999,29 +39144,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1598 +#: ../src/guestfs.pod:1604 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:1601 +#: ../src/guestfs.pod:1607 msgid "The default is to call L<abort(3)>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1603 +#: ../src/guestfs.pod:1609 msgid "You cannot set C<cb> to C<NULL>. You can't ignore out of memory situations." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1606 +#: ../src/guestfs.pod:1612 msgid "guestfs_get_out_of_memory_handler" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1608 +#: ../src/guestfs.pod:1614 #, no-wrap msgid "" " guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n" @@ -39029,37 +39174,37 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1610 +#: ../src/guestfs.pod:1616 msgid "This returns the current out of memory handler." msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1612 +#: ../src/guestfs.pod:1618 msgid "API CALLS" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1616 +#: ../src/guestfs.pod:1622 msgid "STRUCTURES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1618 +#: ../src/guestfs.pod:1624 msgid "@STRUCTS@" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1620 +#: ../src/guestfs.pod:1626 msgid "AVAILABILITY" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1622 +#: ../src/guestfs.pod:1628 msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1624 +#: ../src/guestfs.pod:1630 msgid "" "Using L</guestfs_available> you can test availability of the following " "groups of functions. This test queries the appliance to see if the " @@ -39067,17 +39212,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1629 +#: ../src/guestfs.pod:1635 msgid "@AVAILABILITY@" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1631 +#: ../src/guestfs.pod:1637 msgid "GUESTFISH supported COMMAND" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1633 +#: ../src/guestfs.pod:1639 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 " @@ -39085,19 +39230,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1638 +#: ../src/guestfs.pod:1644 msgid "SINGLE CALLS AT COMPILE TIME" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1640 +#: ../src/guestfs.pod:1646 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:1643 +#: ../src/guestfs.pod:1649 #, no-wrap msgid "" " #define LIBGUESTFS_HAVE_DD 1\n" @@ -39105,12 +39250,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1645 +#: ../src/guestfs.pod:1651 msgid "if L</guestfs_dd> is available." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1647 +#: ../src/guestfs.pod:1653 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 " @@ -39118,7 +39263,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1652 +#: ../src/guestfs.pod:1658 #, no-wrap msgid "" " AC_CHECK_LIB([guestfs],[guestfs_create])\n" @@ -39127,19 +39272,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1655 +#: ../src/guestfs.pod:1661 msgid "" "which would result in C<HAVE_GUESTFS_DD> being either defined or not defined " "in your program." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1658 +#: ../src/guestfs.pod:1664 msgid "SINGLE CALLS AT RUN TIME" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1660 +#: ../src/guestfs.pod:1666 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 " @@ -39149,7 +39294,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1667 +#: ../src/guestfs.pod:1673 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 " @@ -39157,7 +39302,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1671 +#: ../src/guestfs.pod:1677 #, no-wrap msgid "" " #include <stdio.h>\n" @@ -39169,7 +39314,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1677 +#: ../src/guestfs.pod:1683 #, no-wrap msgid "" " main ()\n" @@ -39181,7 +39326,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1683 +#: ../src/guestfs.pod:1689 #, no-wrap msgid "" " /* Test if the function guestfs_dd is really available. */\n" @@ -39196,7 +39341,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1692 +#: ../src/guestfs.pod:1698 #, no-wrap msgid "" " if (!has_function)\n" @@ -39215,7 +39360,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1705 +#: ../src/guestfs.pod:1711 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 " @@ -39223,7 +39368,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1710 +#: ../src/guestfs.pod:1716 #, no-wrap msgid "" " Requires: libguestfs >= 1.0.80\n" @@ -39231,12 +39376,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:1712 +#: ../src/guestfs.pod:1718 msgid "CALLS WITH OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1714 +#: ../src/guestfs.pod:1720 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 " @@ -39244,7 +39389,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1719 +#: ../src/guestfs.pod:1725 #, no-wrap msgid "" " int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);\n" @@ -39252,14 +39397,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1721 +#: ../src/guestfs.pod:1727 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:1724 +#: ../src/guestfs.pod:1730 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename, -1);\n" @@ -39267,12 +39412,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1726 +#: ../src/guestfs.pod:1732 msgid "With a single optional argument:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1728 +#: ../src/guestfs.pod:1734 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -39282,12 +39427,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1732 +#: ../src/guestfs.pod:1738 msgid "With two:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1734 +#: ../src/guestfs.pod:1740 #, no-wrap msgid "" " guestfs_add_drive_opts (g, filename,\n" @@ -39298,19 +39443,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1739 +#: ../src/guestfs.pod:1745 msgid "" "and so forth. Don't forget the terminating C<-1> otherwise Bad Things will " "happen!" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1742 +#: ../src/guestfs.pod:1748 msgid "USING va_list FOR OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1744 +#: ../src/guestfs.pod:1750 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 " @@ -39318,7 +39463,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1748 +#: ../src/guestfs.pod:1754 #, no-wrap msgid "" " int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,\n" @@ -39327,12 +39472,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1751 +#: ../src/guestfs.pod:1757 msgid "CONSTRUCTING OPTIONAL ARGUMENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1753 +#: ../src/guestfs.pod:1759 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 " @@ -39342,7 +39487,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1759 +#: ../src/guestfs.pod:1765 #, no-wrap msgid "" " struct guestfs_add_drive_opts_argv {\n" @@ -39357,12 +39502,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1768 +#: ../src/guestfs.pod:1774 msgid "You could call it like this:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1770 +#: ../src/guestfs.pod:1776 #, no-wrap msgid "" " struct guestfs_add_drive_opts_argv optargs = {\n" @@ -39375,7 +39520,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1777 +#: ../src/guestfs.pod:1783 #, no-wrap msgid "" " guestfs_add_drive_opts_argv (g, filename, &optargs);\n" @@ -39383,29 +39528,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1785 +#: ../src/guestfs.pod:1791 msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1790 +#: ../src/guestfs.pod:1796 msgid "You do not need to fill in all fields of the structure." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1794 +#: ../src/guestfs.pod:1800 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:1799 +#: ../src/guestfs.pod:1805 msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1801 +#: ../src/guestfs.pod:1807 msgid "" "In other languages, optional arguments are expressed in the way that is " "natural for that language. We refer you to the language-specific " @@ -39413,17 +39558,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1805 +#: ../src/guestfs.pod:1811 msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:1807 +#: ../src/guestfs.pod:1813 msgid "SETTING CALLBACKS TO HANDLE EVENTS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1809 +#: ../src/guestfs.pod:1815 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 " @@ -39435,7 +39580,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1818 +#: ../src/guestfs.pod:1824 msgid "" "Handles generate events when certain things happen, such as log messages " "being generated, progress messages during long-running operations, or the " @@ -39447,7 +39592,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1826 +#: ../src/guestfs.pod:1832 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 " @@ -39456,31 +39601,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1831 +#: ../src/guestfs.pod:1837 msgid "" "Events may contain a payload, usually nothing (void), an array of 64 bit " "unsigned integers, or a message buffer. Payloads are discussed later on." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1835 +#: ../src/guestfs.pod:1841 msgid "CLASSES OF EVENTS" msgstr "" #. type: =item -#: ../src/guestfs.pod:1839 +#: ../src/guestfs.pod:1845 msgid "GUESTFS_EVENT_CLOSE (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1842 +#: ../src/guestfs.pod:1848 msgid "" "The callback function will be called while the handle is being closed " "(synchronously from L</guestfs_close>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1845 +#: ../src/guestfs.pod:1851 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 " @@ -39491,19 +39636,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1852 +#: ../src/guestfs.pod:1858 msgid "" "If no callback is registered: the handle is closed without any callback " "being invoked." msgstr "" #. type: =item -#: ../src/guestfs.pod:1855 +#: ../src/guestfs.pod:1861 msgid "GUESTFS_EVENT_SUBPROCESS_QUIT (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1858 +#: ../src/guestfs.pod:1864 msgid "" "The callback function will be called when the child process quits, either " "asynchronously or if killed by L</guestfs_kill_subprocess>. (This " @@ -39511,17 +39656,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1862 ../src/guestfs.pod:1871 ../src/guestfs.pod:1988 +#: ../src/guestfs.pod:1868 ../src/guestfs.pod:1877 ../src/guestfs.pod:1994 msgid "If no callback is registered: the event is ignored." msgstr "" #. type: =item -#: ../src/guestfs.pod:1864 +#: ../src/guestfs.pod:1870 msgid "GUESTFS_EVENT_LAUNCH_DONE (payload type: void)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1867 +#: ../src/guestfs.pod:1873 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 " @@ -39529,12 +39674,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:1873 +#: ../src/guestfs.pod:1879 msgid "GUESTFS_EVENT_PROGRESS (payload type: array of 4 x uint64_t)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1876 +#: ../src/guestfs.pod:1882 msgid "" "Some long-running operations can generate progress messages. If this " "callback is registered, then it will be called each time a progress message " @@ -39544,14 +39689,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1882 +#: ../src/guestfs.pod:1888 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:1885 +#: ../src/guestfs.pod:1891 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 " @@ -39560,24 +39705,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1890 +#: ../src/guestfs.pod:1896 msgid "The only defined and stable parts of the API are:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1896 +#: ../src/guestfs.pod:1902 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:1901 +#: ../src/guestfs.pod:1907 msgid "0 E<lt>= C<position> E<lt>= C<total>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1905 +#: ../src/guestfs.pod:1911 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 " @@ -39585,7 +39730,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1909 +#: ../src/guestfs.pod:1915 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 " @@ -39593,7 +39738,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1915 +#: ../src/guestfs.pod:1921 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 " @@ -39602,7 +39747,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1920 +#: ../src/guestfs.pod:1926 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 " @@ -39610,14 +39755,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1924 +#: ../src/guestfs.pod:1930 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:1929 +#: ../src/guestfs.pod:1935 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 " @@ -39626,31 +39771,31 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1935 +#: ../src/guestfs.pod:1941 msgid "If no callback is registered: progress messages are discarded." msgstr "" #. type: =item -#: ../src/guestfs.pod:1937 +#: ../src/guestfs.pod:1943 msgid "GUESTFS_EVENT_APPLIANCE (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1940 +#: ../src/guestfs.pod:1946 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:1943 +#: ../src/guestfs.pod:1949 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:1946 ../src/guestfs.pod:1960 +#: ../src/guestfs.pod:1952 ../src/guestfs.pod:1966 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 " @@ -39658,62 +39803,62 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:1951 +#: ../src/guestfs.pod:1957 msgid "GUESTFS_EVENT_LIBRARY (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1954 +#: ../src/guestfs.pod:1960 msgid "" "The callback function is called whenever a log message is generated by the " "library part of libguestfs." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1957 +#: ../src/guestfs.pod:1963 msgid "" "If the verbose flag (L</guestfs_set_verbose>) is set then additional debug " "messages are generated." msgstr "" #. type: =item -#: ../src/guestfs.pod:1965 +#: ../src/guestfs.pod:1971 msgid "GUESTFS_EVENT_TRACE (payload type: message buffer)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1968 +#: ../src/guestfs.pod:1974 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:1971 +#: ../src/guestfs.pod:1977 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:1975 +#: ../src/guestfs.pod:1981 msgid "GUESTFS_EVENT_ENTER (payload type: function name)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:1978 +#: ../src/guestfs.pod:1984 msgid "The callback function is called whenever a libguestfs function is entered." msgstr "" #. type: textblock -#: ../src/guestfs.pod:1981 +#: ../src/guestfs.pod:1987 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:1984 +#: ../src/guestfs.pod:1990 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 " @@ -39721,12 +39866,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:1992 +#: ../src/guestfs.pod:1998 msgid "guestfs_set_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:1994 +#: ../src/guestfs.pod:2000 #, no-wrap msgid "" " int guestfs_set_event_callback (guestfs_h *g,\n" @@ -39738,14 +39883,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2000 +#: ../src/guestfs.pod:2006 msgid "" "This function registers a callback (C<cb>) for all event classes in the " "C<event_bitmask>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2003 +#: ../src/guestfs.pod:2009 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>. " @@ -39754,40 +39899,40 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2009 +#: ../src/guestfs.pod:2015 msgid "C<flags> should always be passed as 0." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2011 +#: ../src/guestfs.pod:2017 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:2014 +#: ../src/guestfs.pod:2020 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:2017 +#: ../src/guestfs.pod:2023 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:2020 +#: ../src/guestfs.pod:2026 msgid "" "Callbacks remain in effect until they are deleted, or until the handle is " "closed." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2023 +#: ../src/guestfs.pod:2029 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 " @@ -39795,12 +39940,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2027 +#: ../src/guestfs.pod:2033 msgid "guestfs_delete_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2029 +#: ../src/guestfs.pod:2035 #, no-wrap msgid "" " void guestfs_delete_event_callback (guestfs_h *g, int event_handle);\n" @@ -39808,7 +39953,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2031 +#: ../src/guestfs.pod:2037 msgid "" "Delete a callback that was previously registered. C<event_handle> should be " "the integer that was returned by a previous call to " @@ -39816,12 +39961,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2035 +#: ../src/guestfs.pod:2041 msgid "guestfs_event_callback" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2037 +#: ../src/guestfs.pod:2043 #, no-wrap msgid "" " typedef void (*guestfs_event_callback) (\n" @@ -39836,12 +39981,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2046 +#: ../src/guestfs.pod:2052 msgid "This is the type of the event callback function that you have to provide." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2049 +#: ../src/guestfs.pod:2055 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 " @@ -39849,7 +39994,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2053 +#: ../src/guestfs.pod:2059 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 " @@ -39858,7 +40003,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2058 +#: ../src/guestfs.pod:2064 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 " @@ -39866,19 +40011,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2062 +#: ../src/guestfs.pod:2068 msgid "" "C<array> and C<array_len> is an array of 64 bit unsigned integers. At the " "moment this is only used for progress messages." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2065 +#: ../src/guestfs.pod:2071 msgid "EXAMPLE: CAPTURING LOG MESSAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2067 +#: ../src/guestfs.pod:2073 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 " @@ -39886,7 +40031,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2071 +#: ../src/guestfs.pod:2077 msgid "" "Events associated with log messages are: C<GUESTFS_EVENT_LIBRARY>, " "C<GUESTFS_EVENT_APPLIANCE> and C<GUESTFS_EVENT_TRACE>. (Note that error " @@ -39894,14 +40039,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2076 +#: ../src/guestfs.pod:2082 msgid "" "Programs have to set up a callback to capture the classes of events of " "interest:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2079 +#: ../src/guestfs.pod:2085 #, no-wrap msgid "" " int eh =\n" @@ -39917,14 +40062,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2089 +#: ../src/guestfs.pod:2095 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:2092 +#: ../src/guestfs.pod:2098 #, no-wrap msgid "" " static void\n" @@ -39945,12 +40090,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2107 +#: ../src/guestfs.pod:2113 msgid "CANCELLING LONG TRANSFERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2109 +#: ../src/guestfs.pod:2115 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 " @@ -39959,12 +40104,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2114 +#: ../src/guestfs.pod:2120 msgid "guestfs_user_cancel" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2116 +#: ../src/guestfs.pod:2122 #, no-wrap msgid "" " void guestfs_user_cancel (guestfs_h *g);\n" @@ -39972,12 +40117,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2118 +#: ../src/guestfs.pod:2124 msgid "C<guestfs_user_cancel> cancels the current upload or download operation." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2121 +#: ../src/guestfs.pod:2127 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 " @@ -39985,7 +40130,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2125 +#: ../src/guestfs.pod:2131 msgid "" "The transfer that was in progress (if there is one) will stop shortly " "afterwards, and will return an error. The errno (see " @@ -39994,7 +40139,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2131 +#: ../src/guestfs.pod:2137 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 " @@ -40002,12 +40147,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2135 +#: ../src/guestfs.pod:2141 msgid "There are two common places that you might call C<guestfs_user_cancel>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2137 +#: ../src/guestfs.pod:2143 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 " @@ -40016,19 +40161,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2142 +#: ../src/guestfs.pod:2148 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:2146 +#: ../src/guestfs.pod:2152 msgid "PRIVATE DATA AREA" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2148 +#: ../src/guestfs.pod:2154 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 " @@ -40036,12 +40181,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2153 +#: ../src/guestfs.pod:2159 msgid "To attach a named piece of data, use the following call:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2155 +#: ../src/guestfs.pod:2161 #, no-wrap msgid "" " void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n" @@ -40049,7 +40194,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2157 +#: ../src/guestfs.pod:2163 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 " @@ -40057,7 +40202,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2161 +#: ../src/guestfs.pod:2167 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 " @@ -40067,12 +40212,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2167 +#: ../src/guestfs.pod:2173 msgid "To retrieve the pointer, use:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2169 +#: ../src/guestfs.pod:2175 #, no-wrap msgid "" " void *guestfs_get_private (guestfs_h *g, const char *key);\n" @@ -40080,7 +40225,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2171 +#: ../src/guestfs.pod:2177 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 " @@ -40088,7 +40233,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2175 +#: ../src/guestfs.pod:2181 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 " @@ -40099,12 +40244,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2182 +#: ../src/guestfs.pod:2188 msgid "To walk over all entries, use these two functions:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2184 +#: ../src/guestfs.pod:2190 #, no-wrap msgid "" " void *guestfs_first_private (guestfs_h *g, const char **key_rtn);\n" @@ -40112,7 +40257,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2186 +#: ../src/guestfs.pod:2192 #, no-wrap msgid "" " void *guestfs_next_private (guestfs_h *g, const char **key_rtn);\n" @@ -40120,7 +40265,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2188 +#: ../src/guestfs.pod:2194 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 " @@ -40130,7 +40275,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2194 +#: ../src/guestfs.pod:2200 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 " @@ -40138,17 +40283,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2198 +#: ../src/guestfs.pod:2204 msgid "Notes about walking over entries:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2204 +#: ../src/guestfs.pod:2210 msgid "You must not call C<guestfs_set_private> while walking over the entries." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2209 +#: ../src/guestfs.pod:2215 msgid "" "The handle maintains an internal iterator which is reset when you call " "C<guestfs_first_private>. This internal iterator is invalidated when you " @@ -40156,12 +40301,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2215 +#: ../src/guestfs.pod:2221 msgid "If you have set the data pointer associated with a key to C<NULL>, ie:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2217 +#: ../src/guestfs.pod:2223 #, no-wrap msgid "" " guestfs_set_private (g, key, NULL);\n" @@ -40169,26 +40314,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2219 +#: ../src/guestfs.pod:2225 msgid "then that C<key> is not returned when walking." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2223 +#: ../src/guestfs.pod:2229 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:2229 +#: ../src/guestfs.pod:2235 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:2232 +#: ../src/guestfs.pod:2238 #, no-wrap msgid "" " const char *key;\n" @@ -40202,14 +40347,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2240 +#: ../src/guestfs.pod:2246 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:2243 +#: ../src/guestfs.pod:2249 #, no-wrap msgid "" " const char *key;\n" @@ -40224,7 +40369,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2252 +#: ../src/guestfs.pod:2258 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 " @@ -40232,7 +40377,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2256 +#: ../src/guestfs.pod:2262 #, no-wrap msgid "" " const char *key;\n" @@ -40254,7 +40399,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2272 +#: ../src/guestfs.pod:2278 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 " @@ -40263,12 +40408,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2277 +#: ../src/guestfs.pod:2283 msgid "SYSTEMTAP" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2279 +#: ../src/guestfs.pod:2285 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 " @@ -40276,12 +40421,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2283 +#: ../src/guestfs.pod:2289 msgid "You can list all the static markers by doing:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2285 +#: ../src/guestfs.pod:2291 #, no-wrap msgid "" " stap -l 'process(\"/usr/lib*/libguestfs.so.0\")\n" @@ -40290,26 +40435,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2288 +#: ../src/guestfs.pod:2294 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:2291 +#: ../src/guestfs.pod:2297 msgid "SYSTEMTAP SCRIPT EXAMPLE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2293 +#: ../src/guestfs.pod:2299 msgid "" "This script contains examples of displaying both the static markers and some " "ordinary C entry points:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2296 +#: ../src/guestfs.pod:2302 #, no-wrap msgid "" " global last;\n" @@ -40317,7 +40462,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2298 +#: ../src/guestfs.pod:2304 #, no-wrap msgid "" " function display_time () {\n" @@ -40330,7 +40475,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2305 +#: ../src/guestfs.pod:2311 #, no-wrap msgid "" " printf (\"%d (+%d):\", now, delta);\n" @@ -40339,7 +40484,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2308 +#: ../src/guestfs.pod:2314 #, no-wrap msgid "" " probe begin {\n" @@ -40350,7 +40495,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2313 +#: ../src/guestfs.pod:2319 #, no-wrap msgid "" " /* Display all calls to static markers. */\n" @@ -40363,7 +40508,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2320 +#: ../src/guestfs.pod:2326 #, no-wrap msgid "" " /* Display all calls to guestfs_mkfs* functions. */\n" @@ -40376,7 +40521,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2327 +#: ../src/guestfs.pod:2333 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 " @@ -40385,7 +40530,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2332 +#: ../src/guestfs.pod:2338 #, no-wrap msgid "" " # stap /tmp/test.stap\n" @@ -40394,17 +40539,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2335 +#: ../src/guestfs.pod:2341 msgid "In another terminal, run a guestfish command such as this:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2339 +#: ../src/guestfs.pod:2345 msgid "In the first terminal, stap trace output similar to this is shown:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2341 +#: ../src/guestfs.pod:2347 #, no-wrap msgid "" " 1318248056692655 (+0):\tlaunch_start\n" @@ -40418,24 +40563,24 @@ msgid "" msgstr "" #. type: =end -#: ../src/guestfs.pod:2348 ../src/guestfs.pod:2353 +#: ../src/guestfs.pod:2354 ../src/guestfs.pod:2359 msgid "html" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2350 +#: ../src/guestfs.pod:2356 msgid "" "<!-- old anchor for the next section --> <a " "name=\"state_machine_and_low_level_event_api\"/>" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2355 +#: ../src/guestfs.pod:2361 msgid "ARCHITECTURE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2357 +#: ../src/guestfs.pod:2363 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 " @@ -40443,7 +40588,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2361 +#: ../src/guestfs.pod:2367 #, no-wrap msgid "" " ___________________\n" @@ -40469,14 +40614,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2381 +#: ../src/guestfs.pod:2387 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:2384 +#: ../src/guestfs.pod:2390 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 " @@ -40488,7 +40633,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2393 +#: ../src/guestfs.pod:2399 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 " @@ -40499,17 +40644,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2400 +#: ../src/guestfs.pod:2406 msgid "STATE MACHINE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2402 +#: ../src/guestfs.pod:2408 msgid "libguestfs uses a state machine to model the child process:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2404 +#: ../src/guestfs.pod:2410 #, no-wrap msgid "" " |\n" @@ -40537,7 +40682,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2426 +#: ../src/guestfs.pod:2432 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), " @@ -40546,7 +40691,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2431 +#: ../src/guestfs.pod:2437 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 " @@ -40554,14 +40699,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2435 +#: ../src/guestfs.pod:2441 msgid "" "Configuration commands for qemu such as L</guestfs_add_drive> can only be " "issued when in the CONFIG state." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2438 +#: ../src/guestfs.pod:2444 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 " @@ -40570,7 +40715,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2444 +#: ../src/guestfs.pod:2450 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 " @@ -40580,7 +40725,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2450 +#: ../src/guestfs.pod:2456 msgid "" "Finally, the child process sends asynchronous messages back to the main " "program, such as kernel log messages. You can register a callback to " @@ -40588,17 +40733,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2454 +#: ../src/guestfs.pod:2460 msgid "INTERNALS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2456 +#: ../src/guestfs.pod:2462 msgid "APPLIANCE BOOT PROCESS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2458 +#: ../src/guestfs.pod:2464 msgid "" "This process has evolved and continues to evolve. The description here " "corresponds only to the current version of libguestfs and is provided for " @@ -40606,55 +40751,55 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2462 +#: ../src/guestfs.pod:2468 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:2467 +#: ../src/guestfs.pod:2473 msgid "Create the appliance" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2469 +#: ../src/guestfs.pod:2475 msgid "" "C<febootstrap-supermin-helper> is invoked to create the kernel, a small " "initrd and the appliance." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2472 +#: ../src/guestfs.pod:2478 msgid "" "The appliance is cached in C</var/tmp/.guestfs-E<lt>UIDE<gt>> (or in another " "directory if C<TMPDIR> is set)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2475 +#: ../src/guestfs.pod:2481 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:2479 +#: ../src/guestfs.pod:2485 msgid "Start qemu and boot the kernel" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2481 +#: ../src/guestfs.pod:2487 msgid "qemu is invoked to boot the kernel." msgstr "" #. type: =item -#: ../src/guestfs.pod:2483 +#: ../src/guestfs.pod:2489 msgid "Run the initrd" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2485 +#: ../src/guestfs.pod:2491 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 " @@ -40662,21 +40807,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2489 +#: ../src/guestfs.pod:2495 msgid "" "The initrd is a cpio archive called " "C</var/tmp/.guestfs-E<lt>UIDE<gt>/initrd>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2492 +#: ../src/guestfs.pod:2498 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:2495 +#: ../src/guestfs.pod:2501 #, no-wrap msgid "" " febootstrap: ext2 mini initrd starting up\n" @@ -40687,12 +40832,12 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2500 +#: ../src/guestfs.pod:2506 msgid "Find and mount the appliance device" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2502 +#: ../src/guestfs.pod:2508 msgid "" "The appliance is a sparse file containing an ext2 filesystem which contains " "a familiar (although reduced in size) Linux operating system. It would " @@ -40700,33 +40845,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2506 +#: ../src/guestfs.pod:2512 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:2509 +#: ../src/guestfs.pod:2515 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:2512 +#: ../src/guestfs.pod:2518 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:2516 +#: ../src/guestfs.pod:2522 msgid "If this works successfully you will see messages such as:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2518 +#: ../src/guestfs.pod:2524 #, no-wrap msgid "" " febootstrap: picked /sys/block/vdb/dev as root device\n" @@ -40738,19 +40883,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2524 +#: ../src/guestfs.pod:2530 msgid "" "Note that C<Starting /init script ...> indicates that the appliance's init " "script is now running." msgstr "" #. type: =item -#: ../src/guestfs.pod:2527 +#: ../src/guestfs.pod:2533 msgid "Initialize the appliance" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2529 +#: ../src/guestfs.pod:2535 msgid "" "The appliance itself now initializes itself. This involves starting certain " "processes like C<udev>, possibly printing some debug information, and " @@ -40758,19 +40903,19 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:2533 +#: ../src/guestfs.pod:2539 msgid "The daemon" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2535 +#: ../src/guestfs.pod:2541 msgid "" "Finally the daemon (C<guestfsd>) runs inside the appliance. If it runs you " "should see:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2538 +#: ../src/guestfs.pod:2544 #, no-wrap msgid "" " verbose daemon enabled\n" @@ -40778,14 +40923,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2540 +#: ../src/guestfs.pod:2546 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:2543 +#: ../src/guestfs.pod:2549 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 " @@ -40793,19 +40938,19 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2549 +#: ../src/guestfs.pod:2555 msgid "COMMUNICATION PROTOCOL" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2551 +#: ../src/guestfs.pod:2557 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:2554 +#: ../src/guestfs.pod:2560 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 " @@ -40813,14 +40958,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2558 +#: ../src/guestfs.pod:2564 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:2561 +#: ../src/guestfs.pod:2567 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 " @@ -40830,17 +40975,17 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2568 +#: ../src/guestfs.pod:2574 msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2570 +#: ../src/guestfs.pod:2576 msgid "For ordinary functions, the request message is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2572 +#: ../src/guestfs.pod:2578 #, no-wrap msgid "" " total length (header + arguments,\n" @@ -40851,7 +40996,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2577 +#: ../src/guestfs.pod:2583 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 " @@ -40860,21 +41005,21 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2583 +#: ../src/guestfs.pod:2589 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:2586 +#: ../src/guestfs.pod:2592 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:2590 +#: ../src/guestfs.pod:2596 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 " @@ -40886,12 +41031,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2598 +#: ../src/guestfs.pod:2604 msgid "The reply message for ordinary functions is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2600 +#: ../src/guestfs.pod:2606 #, no-wrap msgid "" " total length (header + ret,\n" @@ -40902,26 +41047,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2605 +#: ../src/guestfs.pod:2611 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:2608 +#: ../src/guestfs.pod:2614 msgid "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2611 +#: ../src/guestfs.pod:2617 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:2614 +#: ../src/guestfs.pod:2620 #, no-wrap msgid "" " total length (header + error,\n" @@ -40932,19 +41077,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2619 +#: ../src/guestfs.pod:2625 msgid "" "The C<guestfs_message_error> structure contains the error message as a " "string." msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2622 +#: ../src/guestfs.pod:2628 msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2624 +#: ../src/guestfs.pod:2630 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 " @@ -40952,7 +41097,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2628 +#: ../src/guestfs.pod:2634 #, no-wrap msgid "" " total length (header + arguments,\n" @@ -40966,12 +41111,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2636 +#: ../src/guestfs.pod:2642 msgid "The \"sequence of chunks\" is:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2638 +#: ../src/guestfs.pod:2644 #, no-wrap msgid "" " length of chunk (not including length word itself)\n" @@ -40985,7 +41130,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2646 +#: ../src/guestfs.pod:2652 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 " @@ -40993,7 +41138,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2650 +#: ../src/guestfs.pod:2656 msgid "" "At time of writing there are no functions that have more than one FileIn " "parameter. However this is (theoretically) supported, by sending the " @@ -41002,7 +41147,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2655 +#: ../src/guestfs.pod:2661 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 " @@ -41011,7 +41156,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2661 +#: ../src/guestfs.pod:2667 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 " @@ -41023,7 +41168,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2670 +#: ../src/guestfs.pod:2676 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 " @@ -41033,19 +41178,19 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2676 +#: ../src/guestfs.pod:2682 msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2678 +#: ../src/guestfs.pod:2684 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:2681 +#: ../src/guestfs.pod:2687 #, no-wrap msgid "" " total length (header + ret,\n" @@ -41059,12 +41204,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2689 +#: ../src/guestfs.pod:2695 msgid "INITIAL MESSAGE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2691 +#: ../src/guestfs.pod:2697 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 " @@ -41072,12 +41217,12 @@ msgid "" msgstr "" #. type: =head3 -#: ../src/guestfs.pod:2695 +#: ../src/guestfs.pod:2701 msgid "PROGRESS NOTIFICATION MESSAGES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2697 +#: ../src/guestfs.pod:2703 msgid "" "The daemon may send progress notification messages at any time. These are " "distinguished by the normal length word being replaced by " @@ -41085,7 +41230,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2701 +#: ../src/guestfs.pod:2707 msgid "" "The library turns them into progress callbacks (see " "L</GUESTFS_EVENT_PROGRESS>) if there is a callback registered, or discards " @@ -41093,7 +41238,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2705 +#: ../src/guestfs.pod:2711 msgid "" "The daemon self-limits the frequency of progress messages it sends (see " "C<daemon/proto.c:notify_progress>). Not all calls generate progress " @@ -41101,12 +41246,12 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2709 +#: ../src/guestfs.pod:2715 msgid "LIBGUESTFS VERSION NUMBERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2711 +#: ../src/guestfs.pod:2717 msgid "" "Since April 2010, libguestfs has started to make separate development and " "stable releases, along with corresponding branches in our git repository. " @@ -41114,7 +41259,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2716 +#: ../src/guestfs.pod:2722 #, no-wrap msgid "" " even numbers for stable: 1.2.x, 1.4.x, ...\n" @@ -41131,12 +41276,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2727 +#: ../src/guestfs.pod:2733 msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2729 +#: ../src/guestfs.pod:2735 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 " @@ -41146,26 +41291,26 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2735 +#: ../src/guestfs.pod:2741 msgid "Our criteria for backporting changes are:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2741 +#: ../src/guestfs.pod:2747 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:2747 +#: ../src/guestfs.pod:2753 msgid "" "Bug fixes which are not controversial, fix obvious problems, and have been " "well tested are backported." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2752 +#: ../src/guestfs.pod:2758 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 " @@ -41173,7 +41318,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2758 +#: ../src/guestfs.pod:2764 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 " @@ -41181,7 +41326,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2764 +#: ../src/guestfs.pod:2770 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 " @@ -41192,17 +41337,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:2772 +#: ../src/guestfs.pod:2778 msgid "EXTENDING LIBGUESTFS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2774 +#: ../src/guestfs.pod:2780 msgid "ADDING A NEW API ACTION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2776 +#: ../src/guestfs.pod:2782 msgid "" "Large amounts of boilerplate code in libguestfs (RPC, bindings, " "documentation) are generated, and this makes it easy to extend the " @@ -41210,19 +41355,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2780 +#: ../src/guestfs.pod:2786 msgid "To add a new API action there are two changes:" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2786 +#: ../src/guestfs.pod:2792 msgid "" "You need to add a description of the call (name, parameters, return type, " "tests, documentation) to C<generator/generator_actions.ml>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2789 +#: ../src/guestfs.pod:2795 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 " @@ -41233,7 +41378,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2797 +#: ../src/guestfs.pod:2803 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 " @@ -41243,7 +41388,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2803 +#: ../src/guestfs.pod:2809 msgid "" "For library-only actions of the second type, add to the " "C<non_daemon_functions> list. Since these functions are serviced by the " @@ -41253,36 +41398,36 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2811 +#: ../src/guestfs.pod:2817 msgid "Implement the action (in C):" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2813 +#: ../src/guestfs.pod:2819 msgid "" "For daemon actions, implement the function C<do_E<lt>nameE<gt>> in the " "C<daemon/> directory." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2816 +#: ../src/guestfs.pod:2822 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:2819 +#: ../src/guestfs.pod:2825 msgid "In either case, use another function as an example of what to do." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2823 +#: ../src/guestfs.pod:2829 msgid "After making these changes, use C<make> to compile." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2825 +#: ../src/guestfs.pod:2831 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 " @@ -41290,12 +41435,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2829 +#: ../src/guestfs.pod:2835 msgid "ADDING TESTS FOR AN API ACTION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2831 +#: ../src/guestfs.pod:2837 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 " @@ -41305,61 +41450,61 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2838 +#: ../src/guestfs.pod:2844 msgid "" "The following describes the test environment used when you add an API test " "in C<generator_actions.ml>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2841 +#: ../src/guestfs.pod:2847 msgid "The test environment has 4 block devices:" msgstr "" #. type: =item -#: ../src/guestfs.pod:2845 +#: ../src/guestfs.pod:2851 msgid "C</dev/sda> 500MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2847 +#: ../src/guestfs.pod:2853 msgid "General block device for testing." msgstr "" #. type: =item -#: ../src/guestfs.pod:2849 +#: ../src/guestfs.pod:2855 msgid "C</dev/sdb> 50MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2851 +#: ../src/guestfs.pod:2857 msgid "" "C</dev/sdb1> is an ext2 filesystem used for testing filesystem write " "operations." msgstr "" #. type: =item -#: ../src/guestfs.pod:2854 +#: ../src/guestfs.pod:2860 msgid "C</dev/sdc> 10MB" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2856 +#: ../src/guestfs.pod:2862 msgid "Used in a few tests where two block devices are needed." msgstr "" #. type: =item -#: ../src/guestfs.pod:2858 +#: ../src/guestfs.pod:2864 msgid "C</dev/sdd>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2860 +#: ../src/guestfs.pod:2866 msgid "ISO with fixed content (see C<images/test.iso>)." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2864 +#: ../src/guestfs.pod:2870 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 " @@ -41367,7 +41512,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2868 +#: ../src/guestfs.pod:2874 msgid "" "Each test starts with an initial scenario, selected using one of the " "C<Init*> expressions, described in C<generator/generator_types.ml>. These " @@ -41377,7 +41522,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2874 +#: ../src/guestfs.pod:2880 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 " @@ -41387,14 +41532,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2880 +#: ../src/guestfs.pod:2886 msgid "" "In addition, packagers can skip individual tests by setting environment " "variables before running C<make check>." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2883 +#: ../src/guestfs.pod:2889 #, no-wrap msgid "" " SKIP_TEST_<CMD>_<NUM>=1\n" @@ -41402,12 +41547,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2885 +#: ../src/guestfs.pod:2891 msgid "eg: C<SKIP_TEST_COMMAND_3=1> skips test #3 of L</guestfs_command>." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2889 +#: ../src/guestfs.pod:2895 #, no-wrap msgid "" " SKIP_TEST_<CMD>=1\n" @@ -41415,17 +41560,17 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2891 +#: ../src/guestfs.pod:2897 msgid "eg: C<SKIP_TEST_ZEROFREE=1> skips all L</guestfs_zerofree> tests." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2893 +#: ../src/guestfs.pod:2899 msgid "Packagers can run only certain tests by setting for example:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2895 +#: ../src/guestfs.pod:2901 #, no-wrap msgid "" " TEST_ONLY=\"vfs_type zerofree\"\n" @@ -41433,29 +41578,29 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2897 +#: ../src/guestfs.pod:2903 msgid "" "See C<tests/c-api/tests.c> for more details of how these environment " "variables work." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2900 +#: ../src/guestfs.pod:2906 msgid "DEBUGGING NEW API ACTIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2902 +#: ../src/guestfs.pod:2908 msgid "Test new actions work before submitting them." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2904 +#: ../src/guestfs.pod:2910 msgid "You can use guestfish to try out new commands." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2906 +#: ../src/guestfs.pod:2912 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 " @@ -41463,12 +41608,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2910 +#: ../src/guestfs.pod:2916 msgid "FORMATTING CODE AND OTHER CONVENTIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2912 +#: ../src/guestfs.pod:2918 msgid "" "Our C source code generally adheres to some basic code-formatting " "conventions. The existing code base is not totally consistent on this " @@ -41478,14 +41623,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2918 +#: ../src/guestfs.pod:2924 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:2921 +#: ../src/guestfs.pod:2927 #, no-wrap msgid "" " ;;; In libguestfs, indent with spaces everywhere (not TABs).\n" @@ -41501,7 +41646,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2931 +#: ../src/guestfs.pod:2937 #, no-wrap msgid "" " ;;; When editing C sources in libguestfs, use this style.\n" @@ -41519,12 +41664,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2943 +#: ../src/guestfs.pod:2949 msgid "Enable warnings when compiling (and fix any problems this finds):" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2946 +#: ../src/guestfs.pod:2952 #, no-wrap msgid "" " ./configure --enable-gcc-warnings\n" @@ -41532,12 +41677,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2948 +#: ../src/guestfs.pod:2954 msgid "Useful targets are:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2950 +#: ../src/guestfs.pod:2956 #, no-wrap msgid "" " make syntax-check -j1 -k # checks for various syntax and\n" @@ -41546,7 +41691,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2953 +#: ../src/guestfs.pod:2959 #, no-wrap msgid "" " make check # runs the test suite\n" @@ -41554,7 +41699,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:2955 +#: ../src/guestfs.pod:2961 #, no-wrap msgid "" " make extra-tests # in-depth testing using valgrind\n" @@ -41563,43 +41708,43 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2958 +#: ../src/guestfs.pod:2964 msgid "DAEMON CUSTOM PRINTF FORMATTERS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2960 +#: ../src/guestfs.pod:2966 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:2965 +#: ../src/guestfs.pod:2971 msgid "%Q" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2967 +#: ../src/guestfs.pod:2973 msgid "" "Simple shell quoted string. Any spaces or other shell characters are " "escaped for you." msgstr "" #. type: =item -#: ../src/guestfs.pod:2970 +#: ../src/guestfs.pod:2976 msgid "%R" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2972 +#: ../src/guestfs.pod:2978 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:2979 +#: ../src/guestfs.pod:2985 #, no-wrap msgid "" " asprintf (&cmd, \"cat %R\", path);\n" @@ -41607,12 +41752,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2981 +#: ../src/guestfs.pod:2987 msgid "would produce C<cat /sysroot/some\\ path\\ with\\ spaces>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2983 +#: ../src/guestfs.pod:2989 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 " @@ -41621,12 +41766,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2989 +#: ../src/guestfs.pod:2995 msgid "SUBMITTING YOUR NEW API ACTIONS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2991 +#: ../src/guestfs.pod:2997 msgid "" "Submit patches to the mailing list: " "L<http://www.redhat.com/mailman/listinfo/libguestfs> and CC to " @@ -41634,17 +41779,17 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:2995 +#: ../src/guestfs.pod:3001 msgid "INTERNATIONALIZATION (I18N) SUPPORT" msgstr "" #. type: textblock -#: ../src/guestfs.pod:2997 +#: ../src/guestfs.pod:3003 msgid "We support i18n (gettext anyhow) in the library." msgstr "" #. type: textblock -#: ../src/guestfs.pod:2999 +#: ../src/guestfs.pod:3005 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 " @@ -41653,115 +41798,115 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3005 +#: ../src/guestfs.pod:3011 msgid "" "Debugging messages are never translated, since they are intended for the " "programmers." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3008 +#: ../src/guestfs.pod:3014 msgid "SOURCE CODE SUBDIRECTORIES" msgstr "" #. type: =item -#: ../src/guestfs.pod:3012 +#: ../src/guestfs.pod:3018 msgid "C<align>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3014 +#: ../src/guestfs.pod:3020 msgid "L<virt-alignment-scan(1)> command and documentation." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3018 +#: ../src/guestfs.pod:3024 msgid "The libguestfs appliance, build scripts and so on." msgstr "" #. type: =item -#: ../src/guestfs.pod:3020 +#: ../src/guestfs.pod:3026 msgid "C<cat>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3022 +#: ../src/guestfs.pod:3028 msgid "" "The L<virt-cat(1)>, L<virt-filesystems(1)> and L<virt-ls(1)> commands and " "documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3025 +#: ../src/guestfs.pod:3031 msgid "C<clone>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3027 +#: ../src/guestfs.pod:3033 msgid "" "Tools for cloning virtual machines. Currently contains L<virt-sysprep(1)> " "command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3030 +#: ../src/guestfs.pod:3036 msgid "C<contrib>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3032 +#: ../src/guestfs.pod:3038 msgid "Outside contributions, experimental parts." msgstr "" #. type: =item -#: ../src/guestfs.pod:3034 +#: ../src/guestfs.pod:3040 msgid "C<daemon>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3036 +#: ../src/guestfs.pod:3042 msgid "" "The daemon that runs inside the libguestfs appliance and carries out " "actions." msgstr "" #. type: =item -#: ../src/guestfs.pod:3039 +#: ../src/guestfs.pod:3045 msgid "C<df>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3041 +#: ../src/guestfs.pod:3047 msgid "L<virt-df(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3043 +#: ../src/guestfs.pod:3049 msgid "C<edit>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3045 +#: ../src/guestfs.pod:3051 msgid "L<virt-edit(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3047 +#: ../src/guestfs.pod:3053 msgid "C<examples>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3049 +#: ../src/guestfs.pod:3055 msgid "C API example code." msgstr "" #. type: =item -#: ../src/guestfs.pod:3051 +#: ../src/guestfs.pod:3057 msgid "C<fish>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3053 +#: ../src/guestfs.pod:3059 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)>, " @@ -41769,79 +41914,79 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3059 +#: ../src/guestfs.pod:3065 msgid "L<virt-format(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3061 +#: ../src/guestfs.pod:3067 msgid "C<fuse>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3063 +#: ../src/guestfs.pod:3069 msgid "L<guestmount(1)>, FUSE (userspace filesystem) built on top of libguestfs." msgstr "" #. type: =item -#: ../src/guestfs.pod:3065 +#: ../src/guestfs.pod:3071 msgid "C<generator>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3067 +#: ../src/guestfs.pod:3073 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:3070 +#: ../src/guestfs.pod:3076 msgid "C<inspector>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3072 +#: ../src/guestfs.pod:3078 msgid "L<virt-inspector(1)>, the virtual machine image inspector." msgstr "" #. type: =item -#: ../src/guestfs.pod:3074 +#: ../src/guestfs.pod:3080 msgid "C<logo>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3076 +#: ../src/guestfs.pod:3082 msgid "Logo used on the website. The fish is called Arthur by the way." msgstr "" #. type: =item -#: ../src/guestfs.pod:3078 +#: ../src/guestfs.pod:3084 msgid "C<m4>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3080 +#: ../src/guestfs.pod:3086 msgid "M4 macros used by autoconf." msgstr "" #. type: =item -#: ../src/guestfs.pod:3082 +#: ../src/guestfs.pod:3088 msgid "C<po>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3084 +#: ../src/guestfs.pod:3090 msgid "Translations of simple gettext strings." msgstr "" #. type: =item -#: ../src/guestfs.pod:3086 +#: ../src/guestfs.pod:3092 msgid "C<po-docs>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3088 +#: ../src/guestfs.pod:3094 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 " @@ -41849,139 +41994,139 @@ msgid "" msgstr "" #. type: =item -#: ../src/guestfs.pod:3092 +#: ../src/guestfs.pod:3098 msgid "C<rescue>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3094 +#: ../src/guestfs.pod:3100 msgid "L<virt-rescue(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3096 +#: ../src/guestfs.pod:3102 msgid "C<resize>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3098 +#: ../src/guestfs.pod:3104 msgid "L<virt-resize(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3100 +#: ../src/guestfs.pod:3106 msgid "C<sparsify>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3102 +#: ../src/guestfs.pod:3108 msgid "L<virt-sparsify(1)> command and documentation." msgstr "" #. type: =item -#: ../src/guestfs.pod:3104 +#: ../src/guestfs.pod:3110 msgid "C<src>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3106 +#: ../src/guestfs.pod:3112 msgid "Source code to the C library." msgstr "" #. type: =item -#: ../src/guestfs.pod:3108 +#: ../src/guestfs.pod:3114 msgid "C<test-tool>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3110 +#: ../src/guestfs.pod:3116 msgid "" "Test tool for end users to test if their qemu/kernel combination will work " "with libguestfs." msgstr "" #. type: =item -#: ../src/guestfs.pod:3113 +#: ../src/guestfs.pod:3119 msgid "C<tests>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3115 +#: ../src/guestfs.pod:3121 msgid "Tests." msgstr "" #. type: =item -#: ../src/guestfs.pod:3117 +#: ../src/guestfs.pod:3123 msgid "C<tools>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3119 +#: ../src/guestfs.pod:3125 msgid "Command line tools written in Perl (L<virt-win-reg(1)> and many others)." msgstr "" #. type: =item -#: ../src/guestfs.pod:3121 +#: ../src/guestfs.pod:3127 msgid "C<csharp>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3123 +#: ../src/guestfs.pod:3129 msgid "C<erlang>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3125 +#: ../src/guestfs.pod:3131 msgid "C<gobject>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3127 +#: ../src/guestfs.pod:3133 msgid "C<haskell>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3129 +#: ../src/guestfs.pod:3135 msgid "C<java>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3131 +#: ../src/guestfs.pod:3137 msgid "C<ocaml>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3133 +#: ../src/guestfs.pod:3139 msgid "C<php>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3135 +#: ../src/guestfs.pod:3141 msgid "C<perl>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3137 +#: ../src/guestfs.pod:3143 msgid "C<python>" msgstr "" #. type: =item -#: ../src/guestfs.pod:3139 +#: ../src/guestfs.pod:3145 msgid "C<ruby>" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3141 +#: ../src/guestfs.pod:3147 msgid "Language bindings." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3145 +#: ../src/guestfs.pod:3151 msgid "MAKING A STABLE RELEASE" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3147 +#: ../src/guestfs.pod:3153 msgid "" "When we make a stable release, there are several steps documented here. See " "L</LIBGUESTFS VERSION NUMBERS> for general information about the stable " @@ -41989,32 +42134,32 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3155 +#: ../src/guestfs.pod:3161 msgid "Check C<make && make check> works on at least Fedora, Debian and Ubuntu." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3160 +#: ../src/guestfs.pod:3166 msgid "Finalize RELEASE-NOTES." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3164 +#: ../src/guestfs.pod:3170 msgid "Update ROADMAP." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3168 +#: ../src/guestfs.pod:3174 msgid "Run C<src/api-support/update-from-tarballs.sh>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3172 +#: ../src/guestfs.pod:3178 msgid "Push and pull from Transifex." msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3176 +#: ../src/guestfs.pod:3182 #, no-wrap msgid "" " tx push -s\n" @@ -42022,12 +42167,12 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3178 +#: ../src/guestfs.pod:3184 msgid "to push the latest POT files to Transifex. Then run:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3180 +#: ../src/guestfs.pod:3186 #, no-wrap msgid "" " ./tx-pull.sh\n" @@ -42035,24 +42180,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3182 +#: ../src/guestfs.pod:3188 msgid "which is a wrapper to pull the latest translated C<*.po> files." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3186 +#: ../src/guestfs.pod:3192 msgid "" "Create new stable and development directories under " "L<http://libguestfs.org/download>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3191 +#: ../src/guestfs.pod:3197 msgid "Create the branch in git:" msgstr "" #. type: verbatim -#: ../src/guestfs.pod:3193 +#: ../src/guestfs.pod:3199 #, no-wrap msgid "" " git tag -a 1.XX.0 -m \"Version 1.XX.0 (stable)\"\n" @@ -42063,17 +42208,17 @@ msgid "" msgstr "" #. type: =head1 -#: ../src/guestfs.pod:3200 +#: ../src/guestfs.pod:3206 msgid "LIMITS" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3202 +#: ../src/guestfs.pod:3208 msgid "PROTOCOL LIMITS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3204 +#: ../src/guestfs.pod:3210 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 " @@ -42084,7 +42229,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3212 +#: ../src/guestfs.pod:3218 msgid "" "A simple call such as L</guestfs_cat> returns its result (the file data) in " "a simple string. Because this string is at some point internally encoded as " @@ -42093,7 +42238,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3218 +#: ../src/guestfs.pod:3224 msgid "" "In order to transfer large files into and out of the guest filesystem, you " "need to use particular calls that support this. The sections L</UPLOADING> " @@ -42101,24 +42246,24 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3222 +#: ../src/guestfs.pod:3228 msgid "" "You might also consider mounting the disk image using our FUSE filesystem " "support (L<guestmount(1)>)." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3225 +#: ../src/guestfs.pod:3231 msgid "MAXIMUM NUMBER OF DISKS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3227 +#: ../src/guestfs.pod:3233 msgid "When using virtio disks (the default) the current limit is B<25> disks." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3230 +#: ../src/guestfs.pod:3236 msgid "" "Virtio itself consumes 1 virtual PCI slot per disk, and PCI is limited to 31 " "slots. However febootstrap only understands disks with names C</dev/vda> " @@ -42127,14 +42272,14 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3235 +#: ../src/guestfs.pod:3241 msgid "" "We are working to substantially raise this limit in future versions but it " "requires complex changes to qemu." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3238 +#: ../src/guestfs.pod:3244 msgid "" "In future versions of libguestfs it should also be possible to \"hot plug\" " "disks (add and remove disks after calling L</guestfs_launch>). This also " @@ -42142,41 +42287,41 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3242 +#: ../src/guestfs.pod:3248 msgid "MAXIMUM NUMBER OF PARTITIONS PER DISK" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3244 +#: ../src/guestfs.pod:3250 msgid "Virtio limits the maximum number of partitions per disk to B<15>." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3246 +#: ../src/guestfs.pod:3252 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:3249 +#: ../src/guestfs.pod:3255 msgid "" "If you attach a disk with more than 15 partitions, the extra partitions are " "ignored by libguestfs." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3252 +#: ../src/guestfs.pod:3258 msgid "MAXIMUM SIZE OF A DISK" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3254 +#: ../src/guestfs.pod:3260 msgid "Probably the limit is between 2**63-1 and 2**64-1 bytes." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3256 +#: ../src/guestfs.pod:3262 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 " @@ -42184,7 +42329,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3260 +#: ../src/guestfs.pod:3266 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 " @@ -42194,19 +42339,19 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3266 +#: ../src/guestfs.pod:3272 msgid "" "For the hugest disk image files, we recommend using XFS on the host for " "storage." msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3269 +#: ../src/guestfs.pod:3275 msgid "MAXIMUM SIZE OF A PARTITION" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3271 +#: ../src/guestfs.pod:3277 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 " @@ -42214,7 +42359,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3275 +#: ../src/guestfs.pod:3281 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 " @@ -42222,12 +42367,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3280 +#: ../src/guestfs.pod:3286 msgid "MAXIMUM SIZE OF A FILESYSTEM, FILES, DIRECTORIES" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3282 +#: ../src/guestfs.pod:3288 msgid "" "This depends on the filesystem type. libguestfs itself does not impose any " "known limit. Consult Wikipedia or the filesystem documentation to find out " @@ -42235,12 +42380,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3286 +#: ../src/guestfs.pod:3292 msgid "MAXIMUM UPLOAD AND DOWNLOAD" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3288 +#: ../src/guestfs.pod:3294 msgid "" "The API functions L</guestfs_upload>, L</guestfs_download>, " "L</guestfs_tar_in>, L</guestfs_tar_out> and the like allow unlimited sized " @@ -42248,12 +42393,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../src/guestfs.pod:3292 +#: ../src/guestfs.pod:3298 msgid "INSPECTION LIMITS" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3294 +#: ../src/guestfs.pod:3300 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 " @@ -42263,33 +42408,33 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3320 +#: ../src/guestfs.pod:3326 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:3332 +#: ../src/guestfs.pod:3338 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:3341 +#: ../src/guestfs.pod:3347 msgid "See also L</QEMU WRAPPERS> above." msgstr "" #. type: textblock -#: ../src/guestfs.pod:3345 +#: ../src/guestfs.pod:3351 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:3363 +#: ../src/guestfs.pod:3369 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)>, " @@ -42306,7 +42451,7 @@ msgid "" msgstr "" #. type: textblock -#: ../src/guestfs.pod:3402 +#: ../src/guestfs.pod:3408 msgid "" "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, " "L<lvm(8)>, L<disktype(1)>." @@ -42340,14 +42485,6 @@ msgstr "" msgid "If you suspect a problem in libguestfs, then just run:" msgstr "" -#. type: verbatim -#: ../test-tool/libguestfs-test-tool.pod:21 -#, no-wrap -msgid "" -" libguestfs-test-tool\n" -"\n" -msgstr "" - #. type: textblock #: ../test-tool/libguestfs-test-tool.pod:23 msgid "It will print lots of diagnostic messages." @@ -43521,88 +43658,88 @@ msgid "" msgstr "" #. type: =head1 -#: ../tools/virt-win-reg.pl:556 +#: ../tools/virt-win-reg.pl:546 msgid "SUPPORTED SYSTEMS" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:558 +#: ../tools/virt-win-reg.pl:548 msgid "" "The program currently supports Windows NT-derived guests starting with " "Windows XP through to at least Windows 7." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:561 +#: ../tools/virt-win-reg.pl:551 msgid "The following Registry keys are supported:" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:565 +#: ../tools/virt-win-reg.pl:555 msgid "C<HKEY_LOCAL_MACHINE\\SAM>" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:567 +#: ../tools/virt-win-reg.pl:557 msgid "C<HKEY_LOCAL_MACHINE\\SECURITY>" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:569 +#: ../tools/virt-win-reg.pl:559 msgid "C<HKEY_LOCAL_MACHINE\\SOFTWARE>" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:571 +#: ../tools/virt-win-reg.pl:561 msgid "C<HKEY_LOCAL_MACHINE\\SYSTEM>" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:573 +#: ../tools/virt-win-reg.pl:563 msgid "C<HKEY_USERS\\.DEFAULT>" msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:575 +#: ../tools/virt-win-reg.pl:565 msgid "C<HKEY_USERS\\I<SID>>" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:577 +#: ../tools/virt-win-reg.pl:567 msgid "where I<SID> is a Windows User SID (eg. C<S-1-5-18>)." msgstr "" #. type: =item -#: ../tools/virt-win-reg.pl:579 +#: ../tools/virt-win-reg.pl:569 msgid "C<HKEY_USERS\\I<username>>" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:581 +#: ../tools/virt-win-reg.pl:571 msgid "where I<username> is a local user name (this is a libguestfs extension)." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:585 +#: ../tools/virt-win-reg.pl:575 msgid "" "You can use C<HKLM> as a shorthand for C<HKEY_LOCAL_MACHINE>, and C<HKU> for " "C<HKEY_USERS>." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:588 +#: ../tools/virt-win-reg.pl:578 msgid "" "The literal keys C<HKEY_USERS\\$SID> and C<HKEY_CURRENT_USER> are not " "supported (there is no \"current user\")." msgstr "" #. type: =head1 -#: ../tools/virt-win-reg.pl:591 +#: ../tools/virt-win-reg.pl:581 msgid "ENCODING" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:593 +#: ../tools/virt-win-reg.pl:583 msgid "" "C<virt-win-reg> expects that regedit files have already been reencoded in " "the local encoding. Usually on Linux hosts, this means UTF-8 with " @@ -43612,14 +43749,14 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:599 +#: ../tools/virt-win-reg.pl:589 msgid "" "To reencode a file from Windows format to Linux (before processing it with " "the I<--merge> option), you would do something like this:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:602 +#: ../tools/virt-win-reg.pl:592 #, no-wrap msgid "" " iconv -f utf-16le -t utf-8 < win.reg | dos2unix > linux.reg\n" @@ -43627,14 +43764,14 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:604 +#: ../tools/virt-win-reg.pl:594 msgid "" "To go in the opposite direction, after exporting and before sending the file " "to a Windows user, do something like this:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:607 +#: ../tools/virt-win-reg.pl:597 #, no-wrap msgid "" " unix2dos linux.reg | iconv -f utf-8 -t utf-16le > win.reg\n" @@ -43642,12 +43779,12 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:609 +#: ../tools/virt-win-reg.pl:599 msgid "For more information about encoding, see L<Win::Hivex::Regedit(3)>." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:611 +#: ../tools/virt-win-reg.pl:601 msgid "" "If you are unsure about the current encoding, use the L<file(1)> command. " "Recent versions of Windows regedit.exe produce a UTF-16LE file with " @@ -43655,7 +43792,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:615 +#: ../tools/virt-win-reg.pl:605 #, no-wrap msgid "" " $ file software.reg\n" @@ -43665,17 +43802,17 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:619 +#: ../tools/virt-win-reg.pl:609 msgid "This file would need conversion before you could I<--merge> it." msgstr "" #. type: =head1 -#: ../tools/virt-win-reg.pl:621 +#: ../tools/virt-win-reg.pl:611 msgid "CurrentControlSet etc." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:623 +#: ../tools/virt-win-reg.pl:613 msgid "" "Registry keys like C<CurrentControlSet> don't really exist in the Windows " "Registry at the level of the hive file, and therefore you cannot modify " @@ -43683,7 +43820,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:627 +#: ../tools/virt-win-reg.pl:617 msgid "" "C<CurrentControlSet> is usually an alias for C<ControlSet001>. In some " "circumstances it might refer to another control set. The way to find out is " @@ -43691,7 +43828,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:631 +#: ../tools/virt-win-reg.pl:621 #, no-wrap msgid "" " # virt-win-reg WindowsGuest 'HKLM\\SYSTEM\\Select'\n" @@ -43704,27 +43841,27 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:638 +#: ../tools/virt-win-reg.pl:628 msgid "\"Current\" is the one which Windows will choose when it boots." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:640 +#: ../tools/virt-win-reg.pl:630 msgid "Similarly, other C<Current...> keys in the path may need to be replaced." msgstr "" #. type: =head1 -#: ../tools/virt-win-reg.pl:643 +#: ../tools/virt-win-reg.pl:633 msgid "DELETING REGISTRY KEYS AND VALUES" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:645 +#: ../tools/virt-win-reg.pl:635 msgid "To delete a whole registry key, use the syntax:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:647 +#: ../tools/virt-win-reg.pl:637 #, no-wrap msgid "" " [-HKEY_LOCAL_MACHINE\\Foo]\n" @@ -43732,12 +43869,12 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:649 +#: ../tools/virt-win-reg.pl:639 msgid "To delete a single value within a key, use the syntax:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:651 +#: ../tools/virt-win-reg.pl:641 #, no-wrap msgid "" " [HKEY_LOCAL_MACHINE\\Foo]\n" @@ -43746,24 +43883,24 @@ msgid "" msgstr "" #. type: =head1 -#: ../tools/virt-win-reg.pl:654 +#: ../tools/virt-win-reg.pl:644 msgid "WINDOWS TIPS" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:656 +#: ../tools/virt-win-reg.pl:646 msgid "" "Note that some of these tips modify the guest disk image. The guest I<must> " "be shut off, else you will get disk corruption." msgstr "" #. type: =head2 -#: ../tools/virt-win-reg.pl:659 +#: ../tools/virt-win-reg.pl:649 msgid "RUNNING A BATCH SCRIPT WHEN A USER LOGS IN" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:661 +#: ../tools/virt-win-reg.pl:651 msgid "" "Prepare a DOS batch script, VBScript or executable. Upload this using " "L<guestfish(1)>. For this example the script is called C<test.bat> and it " @@ -43771,7 +43908,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:665 +#: ../tools/virt-win-reg.pl:655 #, no-wrap msgid "" " guestfish -i -d WindowsGuest upload test.bat /test.bat\n" @@ -43779,12 +43916,12 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:667 +#: ../tools/virt-win-reg.pl:657 msgid "Prepare a regedit file containing the registry change:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:669 +#: ../tools/virt-win-reg.pl:659 #, no-wrap msgid "" " cat > test.reg <<'EOF'\n" @@ -43795,7 +43932,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:674 +#: ../tools/virt-win-reg.pl:664 msgid "" "In this example we use the key C<RunOnce> which means that the script will " "run precisely once when the first user logs in. If you want it to run every " @@ -43803,12 +43940,12 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:678 +#: ../tools/virt-win-reg.pl:668 msgid "Now update the registry:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:680 +#: ../tools/virt-win-reg.pl:670 #, no-wrap msgid "" " virt-win-reg --merge WindowsGuest test.reg\n" @@ -43816,12 +43953,12 @@ msgid "" msgstr "" #. type: =head2 -#: ../tools/virt-win-reg.pl:682 +#: ../tools/virt-win-reg.pl:672 msgid "INSTALLING A SERVICE" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:684 +#: ../tools/virt-win-reg.pl:674 msgid "" "This section assumes you are familiar with Windows services, and you either " "have a program which handles the Windows Service Control Protocol directly " @@ -43830,7 +43967,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:689 +#: ../tools/virt-win-reg.pl:679 msgid "" "First upload the program and optionally the service wrapper. In this case " "the test program is called C<test.exe> and we are using the RHSrvAny " @@ -43838,7 +43975,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:693 +#: ../tools/virt-win-reg.pl:683 #, no-wrap msgid "" " guestfish -i -d WindowsGuest <<EOF\n" @@ -43849,7 +43986,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:698 +#: ../tools/virt-win-reg.pl:688 msgid "" "Prepare a regedit file containing the registry changes. In this example, " "the first registry change is needed for the service itself or the service " @@ -43858,7 +43995,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:703 +#: ../tools/virt-win-reg.pl:693 #, no-wrap msgid "" " cat > service.reg <<'EOF'\n" @@ -43873,7 +44010,7 @@ msgid "" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:712 +#: ../tools/virt-win-reg.pl:702 #, no-wrap msgid "" " [HKLM\\SYSTEM\\ControlSet001\\services\\RHSrvAny\\Parameters]\n" @@ -43884,7 +44021,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:723 +#: ../tools/virt-win-reg.pl:713 msgid "" "For use of C<ControlSet001> see the section above in this manual page. You " "may need to adjust this according to the control set that is in use by the " @@ -43892,7 +44029,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:729 +#: ../tools/virt-win-reg.pl:719 msgid "" "C<\"ObjectName\"> controls the privileges that the service will have. An " "alternative is C<\"ObjectName\"=\"LocalSystem\"> which would be the most " @@ -43900,19 +44037,19 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:735 +#: ../tools/virt-win-reg.pl:725 msgid "" "For the meaning of the magic numbers, see this Microsoft KB article: " "L<http://support.microsoft.com/kb/103000>." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:740 +#: ../tools/virt-win-reg.pl:730 msgid "Update the registry:" msgstr "" #. type: verbatim -#: ../tools/virt-win-reg.pl:742 +#: ../tools/virt-win-reg.pl:732 #, no-wrap msgid "" " virt-win-reg --merge WindowsGuest service.reg\n" @@ -43920,7 +44057,7 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:746 +#: ../tools/virt-win-reg.pl:736 msgid "" "Be careful when passing parameters containing C<\\> (backslash) in the " "shell. Usually you will have to use 'single quotes' or double backslashes " @@ -43928,12 +44065,12 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:750 +#: ../tools/virt-win-reg.pl:740 msgid "Paths and value names are case-insensitive." msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:759 +#: ../tools/virt-win-reg.pl:749 msgid "" "L<hivex(3)>, L<hivexsh(1)>, L<hivexregedit(1)>, L<guestfs(3)>, " "L<guestfish(1)>, L<virt-cat(1)>, L<Sys::Guestfs(3)>, " @@ -43942,6 +44079,6 @@ msgid "" msgstr "" #. type: textblock -#: ../tools/virt-win-reg.pl:778 +#: ../tools/virt-win-reg.pl:768 msgid "Copyright (C) 2010 Red Hat Inc." msgstr "" |