Version 1.5.15.
[libguestfs.git] / po-docs / ja.po
1 # SOME DESCRIPTIVE TITLE.
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
10 "POT-Creation-Date: 2010-09-15 20:33+0200\n"
11 "PO-Revision-Date: 2010-09-02 14:46+0100\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 # type: =encoding
19 #: ../src/guestfs.pod:1 ../fish/guestfish.pod:1
20 #: ../test-tool/libguestfs-test-tool.pod:1 ../fuse/guestmount.pod:1
21 #: ../inspector/virt-inspector.pl:36 ../tools/virt-cat.pl:30
22 #: ../tools/virt-df.pl:32 ../tools/virt-edit.pl:31
23 #: ../tools/virt-list-filesystems.pl:28 ../tools/virt-list-partitions.pl:28
24 #: ../tools/virt-ls.pl:31 ../tools/virt-make-fs.pl:33
25 #: ../tools/virt-rescue.pl:29 ../tools/virt-resize.pl:38
26 #: ../tools/virt-tar.pl:30 ../tools/virt-win-reg.pl:34
27 msgid "utf8"
28 msgstr ""
29
30 # type: =head1
31 #: ../src/guestfs.pod:3 ../fish/guestfish.pod:3
32 #: ../test-tool/libguestfs-test-tool.pod:3 ../fuse/guestmount.pod:3
33 #: ../inspector/virt-inspector.pl:38 ../tools/virt-cat.pl:32
34 #: ../tools/virt-df.pl:34 ../tools/virt-edit.pl:33
35 #: ../tools/virt-list-filesystems.pl:30 ../tools/virt-list-partitions.pl:30
36 #: ../tools/virt-ls.pl:33 ../tools/virt-make-fs.pl:35
37 #: ../tools/virt-rescue.pl:31 ../tools/virt-resize.pl:40
38 #: ../tools/virt-tar.pl:32 ../tools/virt-win-reg.pl:36
39 msgid "NAME"
40 msgstr "名前"
41
42 # type: textblock
43 #: ../src/guestfs.pod:5
44 msgid "guestfs - Library for accessing and modifying virtual machine images"
45 msgstr ""
46
47 # type: =head1
48 #: ../src/guestfs.pod:7 ../fish/guestfish.pod:7
49 #: ../test-tool/libguestfs-test-tool.pod:7 ../fuse/guestmount.pod:7
50 #: ../inspector/virt-inspector.pl:42 ../tools/virt-cat.pl:36
51 #: ../tools/virt-df.pl:38 ../tools/virt-edit.pl:37
52 #: ../tools/virt-list-filesystems.pl:34 ../tools/virt-list-partitions.pl:34
53 #: ../tools/virt-ls.pl:37 ../tools/virt-make-fs.pl:39
54 #: ../tools/virt-rescue.pl:35 ../tools/virt-resize.pl:44
55 #: ../tools/virt-tar.pl:36 ../tools/virt-win-reg.pl:40
56 msgid "SYNOPSIS"
57 msgstr ""
58
59 # type: verbatim
60 #: ../src/guestfs.pod:9
61 #, no-wrap
62 msgid ""
63 " #include <guestfs.h>\n"
64 " \n"
65 msgstr ""
66
67 # type: verbatim
68 #: ../src/guestfs.pod:11
69 #, no-wrap
70 msgid ""
71 " guestfs_h *g = guestfs_create ();\n"
72 " guestfs_add_drive (g, \"guest.img\");\n"
73 " guestfs_launch (g);\n"
74 " guestfs_mount (g, \"/dev/sda1\", \"/\");\n"
75 " guestfs_touch (g, \"/hello\");\n"
76 " guestfs_umount (g, \"/\");\n"
77 " guestfs_sync (g);\n"
78 " guestfs_close (g);\n"
79 "\n"
80 msgstr ""
81
82 # type: verbatim
83 #: ../src/guestfs.pod:20
84 #, no-wrap
85 msgid ""
86 " cc prog.c -o prog -lguestfs\n"
87 "or:\n"
88 " cc prog.c -o prog `pkg-config libguestfs --cflags --libs`\n"
89 "\n"
90 msgstr ""
91
92 # type: =head1
93 #: ../src/guestfs.pod:24 ../fish/guestfish.pod:115
94 #: ../test-tool/libguestfs-test-tool.pod:11 ../fuse/guestmount.pod:16
95 #: ../inspector/virt-inspector.pl:48 ../tools/virt-cat.pl:42
96 #: ../tools/virt-df.pl:46 ../tools/virt-edit.pl:51
97 #: ../tools/virt-list-filesystems.pl:40 ../tools/virt-list-partitions.pl:40
98 #: ../tools/virt-ls.pl:43 ../tools/virt-make-fs.pl:47
99 #: ../tools/virt-rescue.pl:51 ../tools/virt-resize.pl:50
100 #: ../tools/virt-tar.pl:73 ../tools/virt-win-reg.pl:64
101 msgid "DESCRIPTION"
102 msgstr ""
103
104 # type: textblock
105 #: ../src/guestfs.pod:26
106 msgid ""
107 "Libguestfs is a library for accessing and modifying guest disk images.  "
108 "Amongst the things this is good for: making batch configuration changes to "
109 "guests, getting disk used/free statistics (see also: virt-df), migrating "
110 "between virtualization systems (see also: virt-p2v), performing partial "
111 "backups, performing partial guest clones, cloning guests and changing "
112 "registry/UUID/hostname info, and much else besides."
113 msgstr ""
114
115 # type: textblock
116 #: ../src/guestfs.pod:34
117 msgid ""
118 "Libguestfs uses Linux kernel and qemu code, and can access any type of guest "
119 "filesystem that Linux and qemu can, including but not limited to: ext2/3/4, "
120 "btrfs, FAT and NTFS, LVM, many different disk partition schemes, qcow, "
121 "qcow2, vmdk."
122 msgstr ""
123
124 # type: textblock
125 #: ../src/guestfs.pod:39
126 msgid ""
127 "Libguestfs provides ways to enumerate guest storage (eg. partitions, LVs, "
128 "what filesystem is in each LV, etc.).  It can also run commands in the "
129 "context of the guest.  Also you can access filesystems over FUSE."
130 msgstr ""
131
132 # type: textblock
133 #: ../src/guestfs.pod:44
134 msgid ""
135 "Libguestfs is a library that can be linked with C and C++ management "
136 "programs (or management programs written in OCaml, Perl, Python, Ruby, Java, "
137 "PHP, Haskell or C#).  You can also use it from shell scripts or the command "
138 "line."
139 msgstr ""
140
141 # type: textblock
142 #: ../src/guestfs.pod:49
143 msgid ""
144 "You don't need to be root to use libguestfs, although obviously you do need "
145 "enough permissions to access the disk images."
146 msgstr ""
147
148 # type: textblock
149 #: ../src/guestfs.pod:52
150 msgid ""
151 "Libguestfs is a large API because it can do many things.  For a gentle "
152 "introduction, please read the L</API OVERVIEW> section next."
153 msgstr ""
154
155 # type: =head1
156 #: ../src/guestfs.pod:55
157 msgid "API OVERVIEW"
158 msgstr ""
159
160 # type: textblock
161 #: ../src/guestfs.pod:57
162 msgid ""
163 "This section provides a gentler overview of the libguestfs API.  We also try "
164 "to group API calls together, where that may not be obvious from reading "
165 "about the individual calls in the main section of this manual."
166 msgstr ""
167
168 # type: =head2
169 #: ../src/guestfs.pod:62
170 msgid "HANDLES"
171 msgstr ""
172
173 # type: textblock
174 #: ../src/guestfs.pod:64
175 msgid ""
176 "Before you can use libguestfs calls, you have to create a handle.  Then you "
177 "must add at least one disk image to the handle, followed by launching the "
178 "handle, then performing whatever operations you want, and finally closing "
179 "the handle.  By convention we use the single letter C<g> for the name of the "
180 "handle variable, although of course you can use any name you want."
181 msgstr ""
182
183 # type: textblock
184 #: ../src/guestfs.pod:71
185 msgid "The general structure of all libguestfs-using programs looks like this:"
186 msgstr ""
187
188 # type: verbatim
189 #: ../src/guestfs.pod:74
190 #, no-wrap
191 msgid ""
192 " guestfs_h *g = guestfs_create ();\n"
193 " \n"
194 msgstr ""
195
196 # type: verbatim
197 #: ../src/guestfs.pod:76
198 #, no-wrap
199 msgid ""
200 " /* Call guestfs_add_drive additional times if there are\n"
201 "  * multiple disk images.\n"
202 "  */\n"
203 " guestfs_add_drive (g, \"guest.img\");\n"
204 " \n"
205 msgstr ""
206
207 # type: verbatim
208 #: ../src/guestfs.pod:81
209 #, no-wrap
210 msgid ""
211 " /* Most manipulation calls won't work until you've launched\n"
212 "  * the handle 'g'.  You have to do this _after_ adding drives\n"
213 "  * and _before_ other commands.\n"
214 "  */\n"
215 " guestfs_launch (g);\n"
216 " \n"
217 msgstr ""
218
219 # type: verbatim
220 #: ../src/guestfs.pod:87
221 #, no-wrap
222 msgid ""
223 " /* Now you can examine what partitions, LVs etc are available.\n"
224 "  */\n"
225 " char **partitions = guestfs_list_partitions (g);\n"
226 " char **logvols = guestfs_lvs (g);\n"
227 " \n"
228 msgstr ""
229
230 # type: verbatim
231 #: ../src/guestfs.pod:92
232 #, no-wrap
233 msgid ""
234 " /* To access a filesystem in the image, you must mount it.\n"
235 "  */\n"
236 " guestfs_mount (g, \"/dev/sda1\", \"/\");\n"
237 " \n"
238 msgstr ""
239
240 # type: verbatim
241 #: ../src/guestfs.pod:96
242 #, no-wrap
243 msgid ""
244 " /* Now you can perform filesystem actions on the guest\n"
245 "  * disk image.\n"
246 "  */\n"
247 " guestfs_touch (g, \"/hello\");\n"
248 " \n"
249 msgstr ""
250
251 # type: verbatim
252 #: ../src/guestfs.pod:101
253 #, no-wrap
254 msgid ""
255 " /* You only need to call guestfs_sync if you have made\n"
256 "  * changes to the guest image.  (But if you've made changes\n"
257 "  * then you *must* sync).  See also: guestfs_umount and\n"
258 "  * guestfs_umount_all calls.\n"
259 "  */\n"
260 " guestfs_sync (g);\n"
261 " \n"
262 msgstr ""
263
264 # type: verbatim
265 #: ../src/guestfs.pod:108
266 #, no-wrap
267 msgid ""
268 " /* Close the handle 'g'. */\n"
269 " guestfs_close (g);\n"
270 "\n"
271 msgstr ""
272
273 # type: textblock
274 #: ../src/guestfs.pod:111
275 msgid ""
276 "The code above doesn't include any error checking.  In real code you should "
277 "check return values carefully for errors.  In general all functions that "
278 "return integers return C<-1> on error, and all functions that return "
279 "pointers return C<NULL> on error.  See section L</ERROR HANDLING> below for "
280 "how to handle errors, and consult the documentation for each function call "
281 "below to see precisely how they return error indications."
282 msgstr ""
283
284 # type: =head2
285 #: ../src/guestfs.pod:119
286 msgid "DISK IMAGES"
287 msgstr ""
288
289 # type: textblock
290 #: ../src/guestfs.pod:121
291 msgid ""
292 "The image filename (C<\"guest.img\"> in the example above) could be a disk "
293 "image from a virtual machine, a L<dd(1)> copy of a physical hard disk, an "
294 "actual block device, or simply an empty file of zeroes that you have created "
295 "through L<posix_fallocate(3)>.  Libguestfs lets you do useful things to all "
296 "of these."
297 msgstr ""
298
299 # type: textblock
300 #: ../src/guestfs.pod:127
301 msgid ""
302 "You can add a disk read-only using L</guestfs_add_drive_ro>, in which case "
303 "libguestfs won't modify the file."
304 msgstr ""
305
306 # type: textblock
307 #: ../src/guestfs.pod:130
308 msgid ""
309 "Be extremely cautious if the disk image is in use, eg. if it is being used "
310 "by a virtual machine.  Adding it read-write will almost certainly cause disk "
311 "corruption, but adding it read-only is safe."
312 msgstr ""
313
314 # type: textblock
315 #: ../src/guestfs.pod:134
316 msgid ""
317 "You must add at least one disk image, and you may add multiple disk images.  "
318 "In the API, the disk images are usually referred to as C</dev/sda> (for the "
319 "first one you added), C</dev/sdb> (for the second one you added), etc."
320 msgstr ""
321
322 # type: textblock
323 #: ../src/guestfs.pod:139
324 msgid ""
325 "Once L</guestfs_launch> has been called you cannot add any more images.  You "
326 "can call L</guestfs_list_devices> to get a list of the device names, in the "
327 "order that you added them.  See also L</BLOCK DEVICE NAMING> below."
328 msgstr ""
329
330 # type: =head2
331 #: ../src/guestfs.pod:144
332 msgid "MOUNTING"
333 msgstr ""
334
335 # type: textblock
336 #: ../src/guestfs.pod:146
337 msgid ""
338 "Before you can read or write files, create directories and so on in a disk "
339 "image that contains filesystems, you have to mount those filesystems using "
340 "L</guestfs_mount>.  If you already know that a disk image contains (for "
341 "example) one partition with a filesystem on that partition, then you can "
342 "mount it directly:"
343 msgstr ""
344
345 # type: verbatim
346 #: ../src/guestfs.pod:152
347 #, no-wrap
348 msgid ""
349 " guestfs_mount (g, \"/dev/sda1\", \"/\");\n"
350 "\n"
351 msgstr ""
352
353 # type: textblock
354 #: ../src/guestfs.pod:154
355 msgid ""
356 "where C</dev/sda1> means literally the first partition (C<1>) of the first "
357 "disk image that we added (C</dev/sda>).  If the disk contains Linux LVM2 "
358 "logical volumes you could refer to those instead (eg. C</dev/VG/LV>)."
359 msgstr ""
360
361 # type: textblock
362 #: ../src/guestfs.pod:158
363 msgid ""
364 "If you are given a disk image and you don't know what it contains then you "
365 "have to find out.  Libguestfs can do that too: use L</"
366 "guestfs_list_partitions> and L</guestfs_lvs> to list possible partitions and "
367 "LVs, and either try mounting each to see what is mountable, or else examine "
368 "them with L</guestfs_vfs_type> or L</guestfs_file>.  Libguestfs also has a "
369 "set of APIs for inspection of disk images (see L</INSPECTION> below).  But "
370 "you might find it easier to look at higher level programs built on top of "
371 "libguestfs, in particular L<virt-inspector(1)>."
372 msgstr ""
373
374 # type: textblock
375 #: ../src/guestfs.pod:168
376 msgid ""
377 "To mount a disk image read-only, use L</guestfs_mount_ro>.  There are "
378 "several other variations of the C<guestfs_mount_*> call."
379 msgstr ""
380
381 # type: =head2
382 #: ../src/guestfs.pod:171
383 msgid "FILESYSTEM ACCESS AND MODIFICATION"
384 msgstr ""
385
386 # type: textblock
387 #: ../src/guestfs.pod:173
388 msgid ""
389 "The majority of the libguestfs API consists of fairly low-level calls for "
390 "accessing and modifying the files, directories, symlinks etc on mounted "
391 "filesystems.  There are over a hundred such calls which you can find listed "
392 "in detail below in this man page, and we don't even pretend to cover them "
393 "all in this overview."
394 msgstr ""
395
396 # type: textblock
397 #: ../src/guestfs.pod:179
398 msgid ""
399 "Specify filenames as full paths, starting with C<\"/\"> and including the "
400 "mount point."
401 msgstr ""
402
403 # type: textblock
404 #: ../src/guestfs.pod:182
405 msgid ""
406 "For example, if you mounted a filesystem at C<\"/\"> and you want to read "
407 "the file called C<\"etc/passwd\"> then you could do:"
408 msgstr ""
409
410 # type: verbatim
411 #: ../src/guestfs.pod:185
412 #, no-wrap
413 msgid ""
414 " char *data = guestfs_cat (g, \"/etc/passwd\");\n"
415 "\n"
416 msgstr ""
417
418 # type: textblock
419 #: ../src/guestfs.pod:187
420 msgid ""
421 "This would return C<data> as a newly allocated buffer containing the full "
422 "content of that file (with some conditions: see also L</DOWNLOADING> below), "
423 "or C<NULL> if there was an error."
424 msgstr ""
425
426 # type: textblock
427 #: ../src/guestfs.pod:191
428 msgid ""
429 "As another example, to create a top-level directory on that filesystem "
430 "called C<\"var\"> you would do:"
431 msgstr ""
432
433 # type: verbatim
434 #: ../src/guestfs.pod:194
435 #, no-wrap
436 msgid ""
437 " guestfs_mkdir (g, \"/var\");\n"
438 "\n"
439 msgstr ""
440
441 # type: textblock
442 #: ../src/guestfs.pod:196
443 msgid "To create a symlink you could do:"
444 msgstr ""
445
446 # type: verbatim
447 #: ../src/guestfs.pod:198
448 #, no-wrap
449 msgid ""
450 " guestfs_ln_s (g, \"/etc/init.d/portmap\",\n"
451 "               \"/etc/rc3.d/S30portmap\");\n"
452 "\n"
453 msgstr ""
454
455 # type: textblock
456 #: ../src/guestfs.pod:201
457 msgid ""
458 "Libguestfs will reject attempts to use relative paths and there is no "
459 "concept of a current working directory."
460 msgstr ""
461
462 # type: textblock
463 #: ../src/guestfs.pod:204
464 msgid ""
465 "Libguestfs can return errors in many situations: for example if the "
466 "filesystem isn't writable, or if a file or directory that you requested "
467 "doesn't exist.  If you are using the C API (documented here)  you have to "
468 "check for those error conditions after each call.  (Other language bindings "
469 "turn these errors into exceptions)."
470 msgstr ""
471
472 # type: textblock
473 #: ../src/guestfs.pod:210
474 msgid ""
475 "File writes are affected by the per-handle umask, set by calling L</"
476 "guestfs_umask> and defaulting to 022.  See L</UMASK>."
477 msgstr ""
478
479 # type: =head2
480 #: ../src/guestfs.pod:213
481 msgid "PARTITIONING"
482 msgstr ""
483
484 # type: textblock
485 #: ../src/guestfs.pod:215
486 msgid ""
487 "Libguestfs contains API calls to read, create and modify partition tables on "
488 "disk images."
489 msgstr ""
490
491 # type: textblock
492 #: ../src/guestfs.pod:218
493 msgid ""
494 "In the common case where you want to create a single partition covering the "
495 "whole disk, you should use the L</guestfs_part_disk> call:"
496 msgstr ""
497
498 # type: verbatim
499 #: ../src/guestfs.pod:222
500 #, no-wrap
501 msgid ""
502 " const char *parttype = \"mbr\";\n"
503 " if (disk_is_larger_than_2TB)\n"
504 "   parttype = \"gpt\";\n"
505 " guestfs_part_disk (g, \"/dev/sda\", parttype);\n"
506 "\n"
507 msgstr ""
508
509 # type: textblock
510 #: ../src/guestfs.pod:227
511 msgid ""
512 "Obviously this effectively wipes anything that was on that disk image before."
513 msgstr ""
514
515 # type: =head2
516 #: ../src/guestfs.pod:230
517 msgid "LVM2"
518 msgstr ""
519
520 # type: textblock
521 #: ../src/guestfs.pod:232
522 msgid ""
523 "Libguestfs provides access to a large part of the LVM2 API, such as L</"
524 "guestfs_lvcreate> and L</guestfs_vgremove>.  It won't make much sense unless "
525 "you familiarize yourself with the concepts of physical volumes, volume "
526 "groups and logical volumes."
527 msgstr ""
528
529 # type: textblock
530 #: ../src/guestfs.pod:237
531 msgid ""
532 "This author strongly recommends reading the LVM HOWTO, online at L<http://"
533 "tldp.org/HOWTO/LVM-HOWTO/>."
534 msgstr ""
535
536 # type: =head2
537 #: ../src/guestfs.pod:240
538 msgid "DOWNLOADING"
539 msgstr ""
540
541 # type: textblock
542 #: ../src/guestfs.pod:242
543 msgid ""
544 "Use L</guestfs_cat> to download small, text only files.  This call is "
545 "limited to files which are less than 2 MB and which cannot contain any ASCII "
546 "NUL (C<\\0>) characters.  However it has a very simple to use API."
547 msgstr ""
548
549 # type: textblock
550 #: ../src/guestfs.pod:247
551 msgid ""
552 "L</guestfs_read_file> can be used to read files which contain arbitrary 8 "
553 "bit data, since it returns a (pointer, size) pair.  However it is still "
554 "limited to \"small\" files, less than 2 MB."
555 msgstr ""
556
557 # type: textblock
558 #: ../src/guestfs.pod:251
559 msgid ""
560 "L</guestfs_download> can be used to download any file, with no limits on "
561 "content or size (even files larger than 4 GB)."
562 msgstr ""
563
564 # type: textblock
565 #: ../src/guestfs.pod:254
566 msgid ""
567 "To download multiple files, see L</guestfs_tar_out> and L</guestfs_tgz_out>."
568 msgstr ""
569
570 # type: =head2
571 #: ../src/guestfs.pod:257
572 msgid "UPLOADING"
573 msgstr ""
574
575 # type: textblock
576 #: ../src/guestfs.pod:259
577 msgid ""
578 "It's often the case that you want to write a file or files to the disk image."
579 msgstr ""
580
581 # type: textblock
582 #: ../src/guestfs.pod:262
583 msgid ""
584 "To write a small file with fixed content, use L</guestfs_write>.  To create "
585 "a file of all zeroes, use L</guestfs_truncate_size> (sparse) or L</"
586 "guestfs_fallocate64> (with all disk blocks allocated).  There are a variety "
587 "of other functions for creating test files, for example L</guestfs_fill> and "
588 "L</guestfs_fill_pattern>."
589 msgstr ""
590
591 # type: textblock
592 #: ../src/guestfs.pod:268
593 msgid ""
594 "To upload a single file, use L</guestfs_upload>.  This call has no limits on "
595 "file content or size (even files larger than 4 GB)."
596 msgstr ""
597
598 # type: textblock
599 #: ../src/guestfs.pod:271
600 msgid ""
601 "To upload multiple files, see L</guestfs_tar_in> and L</guestfs_tgz_in>."
602 msgstr ""
603
604 # type: textblock
605 #: ../src/guestfs.pod:273
606 msgid ""
607 "However the fastest way to upload I<large numbers of arbitrary files> is to "
608 "turn them into a squashfs or CD ISO (see L<mksquashfs(8)> and L<mkisofs(8)"
609 ">), then attach this using L</guestfs_add_drive_ro>.  If you add the drive "
610 "in a predictable way (eg. adding it last after all other drives) then you "
611 "can get the device name from L</guestfs_list_devices> and mount it directly "
612 "using L</guestfs_mount_ro>.  Note that squashfs images are sometimes non-"
613 "portable between kernel versions, and they don't support labels or UUIDs.  "
614 "If you want to pre-build an image or you need to mount it using a label or "
615 "UUID, use an ISO image instead."
616 msgstr ""
617
618 # type: =head2
619 #: ../src/guestfs.pod:284
620 msgid "COPYING"
621 msgstr ""
622
623 # type: textblock
624 #: ../src/guestfs.pod:286
625 msgid ""
626 "There are various different commands for copying between files and devices "
627 "and in and out of the guest filesystem.  These are summarised in the table "
628 "below."
629 msgstr ""
630
631 # type: =item
632 #: ../src/guestfs.pod:292
633 msgid "B<file> to B<file>"
634 msgstr ""
635
636 # type: textblock
637 #: ../src/guestfs.pod:294
638 msgid ""
639 "Use L</guestfs_cp> to copy a single file, or L</guestfs_cp_a> to copy "
640 "directories recursively."
641 msgstr ""
642
643 # type: =item
644 #: ../src/guestfs.pod:297
645 msgid "B<file or device> to B<file or device>"
646 msgstr ""
647
648 # type: textblock
649 #: ../src/guestfs.pod:299
650 msgid ""
651 "Use L</guestfs_dd> which efficiently uses L<dd(1)> to copy between files and "
652 "devices in the guest."
653 msgstr ""
654
655 # type: textblock
656 #: ../src/guestfs.pod:302
657 msgid "Example: duplicate the contents of an LV:"
658 msgstr ""
659
660 # type: verbatim
661 #: ../src/guestfs.pod:304
662 #, no-wrap
663 msgid ""
664 " guestfs_dd (g, \"/dev/VG/Original\", \"/dev/VG/Copy\");\n"
665 "\n"
666 msgstr ""
667
668 # type: textblock
669 #: ../src/guestfs.pod:306
670 msgid ""
671 "The destination (C</dev/VG/Copy>) must be at least as large as the source "
672 "(C</dev/VG/Original>).  To copy less than the whole source device, use L</"
673 "guestfs_copy_size>."
674 msgstr ""
675
676 # type: =item
677 #: ../src/guestfs.pod:310
678 msgid "B<file on the host> to B<file or device>"
679 msgstr ""
680
681 # type: textblock
682 #: ../src/guestfs.pod:312
683 msgid "Use L</guestfs_upload>.  See L</UPLOADING> above."
684 msgstr ""
685
686 # type: =item
687 #: ../src/guestfs.pod:314
688 msgid "B<file or device> to B<file on the host>"
689 msgstr ""
690
691 # type: textblock
692 #: ../src/guestfs.pod:316
693 msgid "Use L</guestfs_download>.  See L</DOWNLOADING> above."
694 msgstr ""
695
696 # type: =head2
697 #: ../src/guestfs.pod:320
698 msgid "LISTING FILES"
699 msgstr ""
700
701 # type: textblock
702 #: ../src/guestfs.pod:322
703 msgid ""
704 "L</guestfs_ll> is just designed for humans to read (mainly when using the "
705 "L<guestfish(1)>-equivalent command C<ll>)."
706 msgstr ""
707
708 # type: textblock
709 #: ../src/guestfs.pod:325
710 msgid ""
711 "L</guestfs_ls> is a quick way to get a list of files in a directory from "
712 "programs, as a flat list of strings."
713 msgstr ""
714
715 # type: textblock
716 #: ../src/guestfs.pod:328
717 msgid ""
718 "L</guestfs_readdir> is a programmatic way to get a list of files in a "
719 "directory, plus additional information about each one.  It is more "
720 "equivalent to using the L<readdir(3)> call on a local filesystem."
721 msgstr ""
722
723 # type: textblock
724 #: ../src/guestfs.pod:332
725 msgid ""
726 "L</guestfs_find> and L</guestfs_find0> can be used to recursively list files."
727 msgstr ""
728
729 # type: =head2
730 #: ../src/guestfs.pod:335
731 msgid "RUNNING COMMANDS"
732 msgstr ""
733
734 # type: textblock
735 #: ../src/guestfs.pod:337
736 msgid ""
737 "Although libguestfs is primarily an API for manipulating files inside guest "
738 "images, we also provide some limited facilities for running commands inside "
739 "guests."
740 msgstr ""
741
742 # type: textblock
743 #: ../src/guestfs.pod:341
744 msgid "There are many limitations to this:"
745 msgstr ""
746
747 # type: =item
748 #: ../src/guestfs.pod:345 ../src/guestfs.pod:350 ../src/guestfs.pod:355
749 #: ../src/guestfs.pod:359 ../src/guestfs.pod:364 ../src/guestfs.pod:368
750 #: ../src/guestfs.pod:373 ../src/guestfs.pod:1223 ../src/guestfs.pod:1228
751 #: ../src/guestfs.pod:1232 ../src/guestfs.pod:1334 ../src/guestfs.pod:1338
752 #: ../src/guestfs.pod:1342 ../src/guestfs.pod:1347 ../src/guestfs.pod:1355
753 #: ../src/guestfs.pod:1374 ../src/guestfs.pod:1382 ../src/guestfs.pod:1612
754 #: ../src/guestfs.pod:1618 ../src/guestfs.pod:1623 ../src/guestfs.pod:1629
755 #: ../src/guestfs.pod:1736 ../src/guestfs.pod:1740 ../src/guestfs.pod:1744
756 #: ../src/guestfs.pod:1748 ../src/guestfs-actions.pod:14
757 #: ../src/guestfs-actions.pod:21 ../src/guestfs-actions.pod:372
758 #: ../src/guestfs-actions.pod:380 ../src/guestfs-actions.pod:387
759 #: ../src/guestfs-actions.pod:394 ../src/guestfs-actions.pod:1257
760 #: ../src/guestfs-actions.pod:1261 ../src/guestfs-actions.pod:1265
761 #: ../src/guestfs-actions.pod:1269 ../src/guestfs-actions.pod:1277
762 #: ../src/guestfs-actions.pod:1281 ../src/guestfs-actions.pod:1285
763 #: ../src/guestfs-actions.pod:1295 ../src/guestfs-actions.pod:1299
764 #: ../src/guestfs-actions.pod:1303 ../src/guestfs-actions.pod:1426
765 #: ../src/guestfs-actions.pod:1430 ../src/guestfs-actions.pod:1435
766 #: ../src/guestfs-actions.pod:1440 ../src/guestfs-actions.pod:1492
767 #: ../src/guestfs-actions.pod:1496 ../src/guestfs-actions.pod:1501
768 #: ../fish/guestfish.pod:309 ../fish/guestfish.pod:313
769 #: ../fish/guestfish.pod:317 ../fish/guestfish.pod:321
770 #: ../fish/guestfish-actions.pod:13 ../fish/guestfish-actions.pod:20
771 #: ../fish/guestfish-actions.pod:300 ../fish/guestfish-actions.pod:308
772 #: ../fish/guestfish-actions.pod:315 ../fish/guestfish-actions.pod:322
773 #: ../fish/guestfish-actions.pod:998 ../fish/guestfish-actions.pod:1002
774 #: ../fish/guestfish-actions.pod:1006 ../fish/guestfish-actions.pod:1010
775 #: ../fish/guestfish-actions.pod:1018 ../fish/guestfish-actions.pod:1022
776 #: ../fish/guestfish-actions.pod:1026 ../fish/guestfish-actions.pod:1036
777 #: ../fish/guestfish-actions.pod:1040 ../fish/guestfish-actions.pod:1044
778 #: ../fish/guestfish-actions.pod:1134 ../fish/guestfish-actions.pod:1138
779 #: ../fish/guestfish-actions.pod:1143 ../fish/guestfish-actions.pod:1148
780 #: ../fish/guestfish-actions.pod:1190 ../fish/guestfish-actions.pod:1194
781 #: ../fish/guestfish-actions.pod:1199 ../tools/virt-resize.pl:324
782 #: ../tools/virt-resize.pl:329 ../tools/virt-resize.pl:339
783 msgid "*"
784 msgstr ""
785
786 # type: textblock
787 #: ../src/guestfs.pod:347
788 msgid ""
789 "The kernel version that the command runs under will be different from what "
790 "it expects."
791 msgstr ""
792
793 # type: textblock
794 #: ../src/guestfs.pod:352
795 msgid ""
796 "If the command needs to communicate with daemons, then most likely they "
797 "won't be running."
798 msgstr ""
799
800 # type: textblock
801 #: ../src/guestfs.pod:357
802 msgid "The command will be running in limited memory."
803 msgstr ""
804
805 # type: textblock
806 #: ../src/guestfs.pod:361
807 msgid ""
808 "The network may not be available unless you enable it (see L</"
809 "guestfs_set_network>)."
810 msgstr ""
811
812 # type: textblock
813 #: ../src/guestfs.pod:366
814 msgid "Only supports Linux guests (not Windows, BSD, etc)."
815 msgstr ""
816
817 # type: textblock
818 #: ../src/guestfs.pod:370
819 msgid ""
820 "Architecture limitations (eg. won't work for a PPC guest on an X86 host)."
821 msgstr ""
822
823 # type: textblock
824 #: ../src/guestfs.pod:375
825 msgid ""
826 "For SELinux guests, you may need to enable SELinux and load policy first.  "
827 "See L</SELINUX> in this manpage."
828 msgstr ""
829
830 # type: textblock
831 #: ../src/guestfs.pod:380
832 msgid ""
833 "The two main API calls to run commands are L</guestfs_command> and L</"
834 "guestfs_sh> (there are also variations)."
835 msgstr ""
836
837 # type: textblock
838 #: ../src/guestfs.pod:383
839 msgid ""
840 "The difference is that L</guestfs_sh> runs commands using the shell, so any "
841 "shell globs, redirections, etc will work."
842 msgstr ""
843
844 # type: =head2
845 #: ../src/guestfs.pod:386
846 msgid "CONFIGURATION FILES"
847 msgstr ""
848
849 # type: textblock
850 #: ../src/guestfs.pod:388
851 msgid ""
852 "To read and write configuration files in Linux guest filesystems, we "
853 "strongly recommend using Augeas.  For example, Augeas understands how to "
854 "read and write, say, a Linux shadow password file or X.org configuration "
855 "file, and so avoids you having to write that code."
856 msgstr ""
857
858 # type: textblock
859 #: ../src/guestfs.pod:393
860 msgid ""
861 "The main Augeas calls are bound through the C<guestfs_aug_*> APIs.  We don't "
862 "document Augeas itself here because there is excellent documentation on the "
863 "L<http://augeas.net/> website."
864 msgstr ""
865
866 # type: textblock
867 #: ../src/guestfs.pod:397
868 msgid ""
869 "If you don't want to use Augeas (you fool!) then try calling L</"
870 "guestfs_read_lines> to get the file as a list of lines which you can iterate "
871 "over."
872 msgstr ""
873
874 # type: =head2
875 #: ../src/guestfs.pod:401
876 msgid "SELINUX"
877 msgstr ""
878
879 # type: textblock
880 #: ../src/guestfs.pod:403
881 msgid ""
882 "We support SELinux guests.  To ensure that labeling happens correctly in "
883 "SELinux guests, you need to enable SELinux and load the guest's policy:"
884 msgstr ""
885
886 # type: =item
887 #: ../src/guestfs.pod:409
888 msgid "1."
889 msgstr ""
890
891 # type: textblock
892 #: ../src/guestfs.pod:411
893 msgid "Before launching, do:"
894 msgstr ""
895
896 # type: verbatim
897 #: ../src/guestfs.pod:413
898 #, no-wrap
899 msgid ""
900 " guestfs_set_selinux (g, 1);\n"
901 "\n"
902 msgstr ""
903
904 # type: =item
905 #: ../src/guestfs.pod:415
906 msgid "2."
907 msgstr ""
908
909 # type: textblock
910 #: ../src/guestfs.pod:417
911 msgid ""
912 "After mounting the guest's filesystem(s), load the policy.  This is best "
913 "done by running the L<load_policy(8)> command in the guest itself:"
914 msgstr ""
915
916 # type: verbatim
917 #: ../src/guestfs.pod:421
918 #, no-wrap
919 msgid ""
920 " guestfs_sh (g, \"/usr/sbin/load_policy\");\n"
921 "\n"
922 msgstr ""
923
924 # type: textblock
925 #: ../src/guestfs.pod:423
926 msgid ""
927 "(Older versions of C<load_policy> require you to specify the name of the "
928 "policy file)."
929 msgstr ""
930
931 # type: =item
932 #: ../src/guestfs.pod:426
933 msgid "3."
934 msgstr ""
935
936 # type: textblock
937 #: ../src/guestfs.pod:428
938 msgid ""
939 "Optionally, set the security context for the API.  The correct security "
940 "context to use can only be known by inspecting the guest.  As an example:"
941 msgstr ""
942
943 # type: verbatim
944 #: ../src/guestfs.pod:432
945 #, no-wrap
946 msgid ""
947 " guestfs_setcon (g, \"unconfined_u:unconfined_r:unconfined_t:s0\");\n"
948 "\n"
949 msgstr ""
950
951 # type: textblock
952 #: ../src/guestfs.pod:436
953 msgid "This will work for running commands and editing existing files."
954 msgstr ""
955
956 # type: textblock
957 #: ../src/guestfs.pod:438
958 msgid ""
959 "When new files are created, you may need to label them explicitly, for "
960 "example by running the external command C<restorecon pathname>."
961 msgstr ""
962
963 # type: =head2
964 #: ../src/guestfs.pod:442
965 msgid "UMASK"
966 msgstr ""
967
968 # type: textblock
969 #: ../src/guestfs.pod:444
970 msgid ""
971 "Certain calls are affected by the current file mode creation mask (the "
972 "\"umask\").  In particular ones which create files or directories, such as "
973 "L</guestfs_touch>, L</guestfs_mknod> or L</guestfs_mkdir>.  This affects "
974 "either the default mode that the file is created with or modifies the mode "
975 "that you supply."
976 msgstr ""
977
978 # type: textblock
979 #: ../src/guestfs.pod:450
980 msgid ""
981 "The default umask is C<022>, so files are created with modes such as C<0644> "
982 "and directories with C<0755>."
983 msgstr ""
984
985 # type: textblock
986 #: ../src/guestfs.pod:453
987 msgid ""
988 "There are two ways to avoid being affected by umask.  Either set umask to 0 "
989 "(call C<guestfs_umask (g, 0)> early after launching).  Or call L</"
990 "guestfs_chmod> after creating each file or directory."
991 msgstr ""
992
993 # type: textblock
994 #: ../src/guestfs.pod:457
995 msgid "For more information about umask, see L<umask(2)>."
996 msgstr ""
997
998 # type: =head1
999 #: ../src/guestfs.pod:459 ../fish/guestfish.pod:559
1000 msgid "ENCRYPTED DISKS"
1001 msgstr ""
1002
1003 # type: textblock
1004 #: ../src/guestfs.pod:461
1005 msgid ""
1006 "Libguestfs allows you to access Linux guests which have been encrypted using "
1007 "whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) "
1008 "standard.  This includes nearly all whole disk encryption systems used by "
1009 "modern Linux guests."
1010 msgstr ""
1011
1012 # type: textblock
1013 #: ../src/guestfs.pod:467
1014 msgid ""
1015 "Use L</guestfs_vfs_type> to identify LUKS-encrypted block devices (it "
1016 "returns the string C<crypto_LUKS>)."
1017 msgstr ""
1018
1019 # type: textblock
1020 #: ../src/guestfs.pod:470
1021 msgid ""
1022 "Then open these devices by calling L</guestfs_luks_open>.  Obviously you "
1023 "will require the passphrase!"
1024 msgstr ""
1025
1026 # type: textblock
1027 #: ../src/guestfs.pod:473
1028 msgid ""
1029 "Opening a LUKS device creates a new device mapper device called C</dev/"
1030 "mapper/mapname> (where C<mapname> is the string you supply to L</"
1031 "guestfs_luks_open>).  Reads and writes to this mapper device are decrypted "
1032 "from and encrypted to the underlying block device respectively."
1033 msgstr ""
1034
1035 # type: textblock
1036 #: ../src/guestfs.pod:479
1037 msgid ""
1038 "LVM volume groups on the device can be made visible by calling L</"
1039 "guestfs_vgscan> followed by L</guestfs_vg_activate_all>.  The logical volume"
1040 "(s) can now be mounted in the usual way."
1041 msgstr ""
1042
1043 # type: textblock
1044 #: ../src/guestfs.pod:483
1045 msgid ""
1046 "Use the reverse process to close a LUKS device.  Unmount any logical volumes "
1047 "on it, deactivate the volume groups by caling C<guestfs_vg_activate (g, 0, "
1048 "[\"/dev/VG\"])>.  Then close the mapper device by calling L</"
1049 "guestfs_luks_close> on the C</dev/mapper/mapname> device (I<not> the "
1050 "underlying encrypted block device)."
1051 msgstr ""
1052
1053 # type: =head2
1054 #: ../src/guestfs.pod:490
1055 msgid "INSPECTION"
1056 msgstr ""
1057
1058 # type: textblock
1059 #: ../src/guestfs.pod:492
1060 msgid ""
1061 "Libguestfs has APIs for inspecting an unknown disk image to find out if it "
1062 "contains operating systems.  (These APIs used to be in a separate Perl-only "
1063 "library called L<Sys::Guestfs::Lib(3)> but since version 1.5.3 the most "
1064 "frequently used part of this library has been rewritten in C and moved into "
1065 "the core code)."
1066 msgstr ""
1067
1068 # type: textblock
1069 #: ../src/guestfs.pod:498
1070 msgid ""
1071 "Add all disks belonging to the unknown virtual machine and call L</"
1072 "guestfs_launch> in the usual way."
1073 msgstr ""
1074
1075 # type: textblock
1076 #: ../src/guestfs.pod:501
1077 msgid ""
1078 "Then call L</guestfs_inspect_os>.  This function uses other libguestfs calls "
1079 "and certain heuristics, and returns a list of operating systems that were "
1080 "found.  An empty list means none were found.  A single element is the root "
1081 "filesystem of the operating system.  For dual- or multi-boot guests, "
1082 "multiple roots can be returned, each one corresponding to a separate "
1083 "operating system.  (Multi-boot virtual machines are extremely rare in the "
1084 "world of virtualization, but since this scenario can happen, we have built "
1085 "libguestfs to deal with it.)"
1086 msgstr ""
1087
1088 # type: textblock
1089 #: ../src/guestfs.pod:510
1090 msgid ""
1091 "For each root, you can then call various C<guestfs_inspect_get_*> functions "
1092 "to get additional details about that operating system.  For example, call L</"
1093 "guestfs_inspect_get_type> to return the string C<windows> or C<linux> for "
1094 "Windows and Linux-based operating systems respectively."
1095 msgstr ""
1096
1097 # type: textblock
1098 #: ../src/guestfs.pod:516
1099 msgid ""
1100 "Un*x-like and Linux-based operating systems usually consist of several "
1101 "filesystems which are mounted at boot time (for example, a separate boot "
1102 "partition mounted on C</boot>).  The inspection rules are able to detect how "
1103 "filesystems correspond to mount points.  Call "
1104 "C<guestfs_inspect_get_mountpoints> to get this mapping.  It might return a "
1105 "hash table like this example:"
1106 msgstr ""
1107
1108 # type: verbatim
1109 #: ../src/guestfs.pod:523
1110 #, no-wrap
1111 msgid ""
1112 " /boot => /dev/sda1\n"
1113 " /     => /dev/vg_guest/lv_root\n"
1114 " /usr  => /dev/vg_guest/lv_usr\n"
1115 "\n"
1116 msgstr ""
1117
1118 # type: textblock
1119 #: ../src/guestfs.pod:527
1120 msgid ""
1121 "The caller can then make calls to L</guestfs_mount_options> to mount the "
1122 "filesystems as suggested."
1123 msgstr ""
1124
1125 # type: textblock
1126 #: ../src/guestfs.pod:530
1127 msgid ""
1128 "Be careful to mount filesystems in the right order (eg. C</> before C</"
1129 "usr>).  Sorting the keys of the hash by length, shortest first, should work."
1130 msgstr ""
1131
1132 # type: textblock
1133 #: ../src/guestfs.pod:534
1134 msgid ""
1135 "Inspection currently only works for some common operating systems.  "
1136 "Contributors are welcome to send patches for other operating systems that we "
1137 "currently cannot detect."
1138 msgstr ""
1139
1140 # type: textblock
1141 #: ../src/guestfs.pod:538
1142 msgid ""
1143 "Encrypted disks must be opened before inspection.  See L</ENCRYPTED DISKS> "
1144 "for more details.  The L</guestfs_inspect_os> function just ignores any "
1145 "encrypted devices."
1146 msgstr ""
1147
1148 # type: textblock
1149 #: ../src/guestfs.pod:542
1150 msgid ""
1151 "A note on the implementation: The call L</guestfs_inspect_os> performs "
1152 "inspection and caches the results in the guest handle.  Subsequent calls to "
1153 "C<guestfs_inspect_get_*> return this cached information, but I<do not> re-"
1154 "read the disks.  If you change the content of the guest disks, you can redo "
1155 "inspection by calling L</guestfs_inspect_os> again."
1156 msgstr ""
1157
1158 # type: =head2
1159 #: ../src/guestfs.pod:549
1160 msgid "SPECIAL CONSIDERATIONS FOR WINDOWS GUESTS"
1161 msgstr ""
1162
1163 # type: textblock
1164 #: ../src/guestfs.pod:551
1165 msgid ""
1166 "Libguestfs can mount NTFS partitions.  It does this using the L<http://www."
1167 "ntfs-3g.org/> driver."
1168 msgstr ""
1169
1170 # type: textblock
1171 #: ../src/guestfs.pod:554
1172 msgid ""
1173 "DOS and Windows still use drive letters, and the filesystems are always "
1174 "treated as case insensitive by Windows itself, and therefore you might find "
1175 "a Windows configuration file referring to a path like C<c:\\windows"
1176 "\\system32>.  When the filesystem is mounted in libguestfs, that directory "
1177 "might be referred to as C</WINDOWS/System32>."
1178 msgstr ""
1179
1180 # type: textblock
1181 #: ../src/guestfs.pod:560
1182 msgid ""
1183 "Drive letter mappings are outside the scope of libguestfs.  You have to use "
1184 "libguestfs to read the appropriate Windows Registry and configuration files, "
1185 "to determine yourself how drives are mapped (see also L<hivex(3)> and L<virt-"
1186 "inspector(1)>)."
1187 msgstr ""
1188
1189 # type: textblock
1190 #: ../src/guestfs.pod:565
1191 msgid ""
1192 "Replacing backslash characters with forward slash characters is also outside "
1193 "the scope of libguestfs, but something that you can easily do."
1194 msgstr ""
1195
1196 # type: textblock
1197 #: ../src/guestfs.pod:568
1198 msgid ""
1199 "Where we can help is in resolving the case insensitivity of paths.  For "
1200 "this, call L</guestfs_case_sensitive_path>."
1201 msgstr ""
1202
1203 # type: textblock
1204 #: ../src/guestfs.pod:571
1205 msgid ""
1206 "Libguestfs also provides some help for decoding Windows Registry \"hive\" "
1207 "files, through the library C<hivex> which is part of the libguestfs project "
1208 "although ships as a separate tarball.  You have to locate and download the "
1209 "hive file(s) yourself, and then pass them to C<hivex> functions.  See also "
1210 "the programs L<hivexml(1)>, L<hivexsh(1)>, L<hivexregedit(1)> and L<virt-win-"
1211 "reg(1)> for more help on this issue."
1212 msgstr ""
1213
1214 # type: =head2
1215 #: ../src/guestfs.pod:579
1216 msgid "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES"
1217 msgstr ""
1218
1219 # type: textblock
1220 #: ../src/guestfs.pod:581
1221 msgid ""
1222 "Although we don't want to discourage you from using the C API, we will "
1223 "mention here that the same API is also available in other languages."
1224 msgstr ""
1225
1226 # type: textblock
1227 #: ../src/guestfs.pod:584
1228 msgid ""
1229 "The API is broadly identical in all supported languages.  This means that "
1230 "the C call C<guestfs_mount(g,path)> is C<$g-E<gt>mount($path)> in Perl, C<g."
1231 "mount(path)> in Python, and C<Guestfs.mount g path> in OCaml.  In other "
1232 "words, a straightforward, predictable isomorphism between each language."
1233 msgstr ""
1234
1235 # type: textblock
1236 #: ../src/guestfs.pod:590
1237 msgid ""
1238 "Error messages are automatically transformed into exceptions if the language "
1239 "supports it."
1240 msgstr ""
1241
1242 # type: textblock
1243 #: ../src/guestfs.pod:593
1244 msgid ""
1245 "We don't try to \"object orientify\" parts of the API in OO languages, "
1246 "although contributors are welcome to write higher level APIs above what we "
1247 "provide in their favourite languages if they wish."
1248 msgstr ""
1249
1250 # type: =item
1251 #: ../src/guestfs.pod:599
1252 msgid "B<C++>"
1253 msgstr ""
1254
1255 # type: textblock
1256 #: ../src/guestfs.pod:601
1257 msgid ""
1258 "You can use the I<guestfs.h> header file from C++ programs.  The C++ API is "
1259 "identical to the C API.  C++ classes and exceptions are not used."
1260 msgstr ""
1261
1262 # type: =item
1263 #: ../src/guestfs.pod:605
1264 msgid "B<C#>"
1265 msgstr ""
1266
1267 # type: textblock
1268 #: ../src/guestfs.pod:607
1269 msgid ""
1270 "The C# bindings are highly experimental.  Please read the warnings at the "
1271 "top of C<csharp/Libguestfs.cs>."
1272 msgstr ""
1273
1274 # type: =item
1275 #: ../src/guestfs.pod:610
1276 msgid "B<Haskell>"
1277 msgstr ""
1278
1279 # type: textblock
1280 #: ../src/guestfs.pod:612
1281 msgid ""
1282 "This is the only language binding that is working but incomplete.  Only "
1283 "calls which return simple integers have been bound in Haskell, and we are "
1284 "looking for help to complete this binding."
1285 msgstr ""
1286
1287 # type: =item
1288 #: ../src/guestfs.pod:616
1289 msgid "B<Java>"
1290 msgstr ""
1291
1292 # type: textblock
1293 #: ../src/guestfs.pod:618
1294 msgid ""
1295 "Full documentation is contained in the Javadoc which is distributed with "
1296 "libguestfs."
1297 msgstr ""
1298
1299 # type: =item
1300 #: ../src/guestfs.pod:621
1301 msgid "B<OCaml>"
1302 msgstr ""
1303
1304 # type: textblock
1305 #: ../src/guestfs.pod:623
1306 msgid "For documentation see the file C<guestfs.mli>."
1307 msgstr ""
1308
1309 # type: =item
1310 #: ../src/guestfs.pod:625
1311 msgid "B<Perl>"
1312 msgstr ""
1313
1314 # type: textblock
1315 #: ../src/guestfs.pod:627
1316 msgid "For documentation see L<Sys::Guestfs(3)>."
1317 msgstr ""
1318
1319 # type: =item
1320 #: ../src/guestfs.pod:629
1321 msgid "B<PHP>"
1322 msgstr ""
1323
1324 # type: textblock
1325 #: ../src/guestfs.pod:631
1326 msgid ""
1327 "For documentation see C<README-PHP> supplied with libguestfs sources or in "
1328 "the php-libguestfs package for your distribution."
1329 msgstr ""
1330
1331 # type: textblock
1332 #: ../src/guestfs.pod:634
1333 msgid "The PHP binding only works correctly on 64 bit machines."
1334 msgstr ""
1335
1336 # type: =item
1337 #: ../src/guestfs.pod:636
1338 msgid "B<Python>"
1339 msgstr ""
1340
1341 # type: textblock
1342 #: ../src/guestfs.pod:638
1343 msgid "For documentation do:"
1344 msgstr ""
1345
1346 # type: verbatim
1347 #: ../src/guestfs.pod:640
1348 #, no-wrap
1349 msgid ""
1350 " $ python\n"
1351 " >>> import guestfs\n"
1352 " >>> help (guestfs)\n"
1353 "\n"
1354 msgstr ""
1355
1356 # type: =item
1357 #: ../src/guestfs.pod:644
1358 msgid "B<Ruby>"
1359 msgstr ""
1360
1361 # type: textblock
1362 #: ../src/guestfs.pod:646
1363 msgid ""
1364 "Use the Guestfs module.  There is no Ruby-specific documentation, but you "
1365 "can find examples written in Ruby in the libguestfs source."
1366 msgstr ""
1367
1368 # type: =item
1369 #: ../src/guestfs.pod:649
1370 msgid "B<shell scripts>"
1371 msgstr ""
1372
1373 # type: textblock
1374 #: ../src/guestfs.pod:651
1375 msgid "For documentation see L<guestfish(1)>."
1376 msgstr ""
1377
1378 # type: =head2
1379 #: ../src/guestfs.pod:655
1380 msgid "LIBGUESTFS GOTCHAS"
1381 msgstr ""
1382
1383 # type: textblock
1384 #: ../src/guestfs.pod:657
1385 msgid ""
1386 "L<http://en.wikipedia.org/wiki/Gotcha_(programming)>: \"A feature of a "
1387 "system [...] that works in the way it is documented but is counterintuitive "
1388 "and almost invites mistakes.\""
1389 msgstr ""
1390
1391 # type: textblock
1392 #: ../src/guestfs.pod:661
1393 msgid ""
1394 "Since we developed libguestfs and the associated tools, there are several "
1395 "things we would have designed differently, but are now stuck with for "
1396 "backwards compatibility or other reasons.  If there is ever a libguestfs 2.0 "
1397 "release, you can expect these to change.  Beware of them."
1398 msgstr ""
1399
1400 # type: =item
1401 #: ../src/guestfs.pod:669
1402 msgid "Autosync / forgetting to sync."
1403 msgstr ""
1404
1405 # type: textblock
1406 #: ../src/guestfs.pod:671
1407 msgid ""
1408 "When modifying a filesystem from C or another language, you B<must> unmount "
1409 "all filesystems and call L</guestfs_sync> explicitly before you close the "
1410 "libguestfs handle.  You can also call:"
1411 msgstr ""
1412
1413 # type: verbatim
1414 #: ../src/guestfs.pod:675
1415 #, no-wrap
1416 msgid ""
1417 " guestfs_set_autosync (g, 1);\n"
1418 "\n"
1419 msgstr ""
1420
1421 # type: textblock
1422 #: ../src/guestfs.pod:677
1423 msgid ""
1424 "to have the unmount/sync done automatically for you when the handle 'g' is "
1425 "closed.  (This feature is called \"autosync\", L</guestfs_set_autosync> q.v.)"
1426 msgstr ""
1427
1428 # type: textblock
1429 #: ../src/guestfs.pod:681
1430 msgid ""
1431 "If you forget to do this, then it is entirely possible that your changes "
1432 "won't be written out, or will be partially written, or (very rarely) that "
1433 "you'll get disk corruption."
1434 msgstr ""
1435
1436 # type: textblock
1437 #: ../src/guestfs.pod:685
1438 msgid ""
1439 "Note that in L<guestfish(3)> autosync is the default.  So quick and dirty "
1440 "guestfish scripts that forget to sync will work just fine, which can make "
1441 "this very puzzling if you are trying to debug a problem."
1442 msgstr ""
1443
1444 # type: =item
1445 #: ../src/guestfs.pod:689
1446 msgid "Mount option C<-o sync> should not be the default."
1447 msgstr ""
1448
1449 # type: textblock
1450 #: ../src/guestfs.pod:691
1451 msgid ""
1452 "If you use L</guestfs_mount>, then C<-o sync,noatime> are added implicitly.  "
1453 "However C<-o sync> does not add any reliability benefit, but does have a "
1454 "very large performance impact."
1455 msgstr ""
1456
1457 # type: textblock
1458 #: ../src/guestfs.pod:695
1459 msgid ""
1460 "The work around is to use L</guestfs_mount_options> and set the mount "
1461 "options that you actually want to use."
1462 msgstr ""
1463
1464 # type: =item
1465 #: ../src/guestfs.pod:698
1466 msgid "Read-only should be the default."
1467 msgstr ""
1468
1469 # type: textblock
1470 #: ../src/guestfs.pod:700
1471 msgid ""
1472 "In L<guestfish(3)>, I<--ro> should be the default, and you should have to "
1473 "specify I<--rw> if you want to make changes to the image."
1474 msgstr ""
1475
1476 # type: textblock
1477 #: ../src/guestfs.pod:703
1478 msgid "This would reduce the potential to corrupt live VM images."
1479 msgstr ""
1480
1481 # type: textblock
1482 #: ../src/guestfs.pod:705
1483 msgid ""
1484 "Note that many filesystems change the disk when you just mount and unmount, "
1485 "even if you didn't perform any writes.  You need to use L</"
1486 "guestfs_add_drive_ro> to guarantee that the disk is not changed."
1487 msgstr ""
1488
1489 # type: =item
1490 #: ../src/guestfs.pod:709
1491 msgid "guestfish command line is hard to use."
1492 msgstr ""
1493
1494 # type: textblock
1495 #: ../src/guestfs.pod:711
1496 msgid ""
1497 "C<guestfish disk.img> doesn't do what people expect (open C<disk.img> for "
1498 "examination).  It tries to run a guestfish command C<disk.img> which doesn't "
1499 "exist, so it fails.  In earlier versions of guestfish the error message was "
1500 "also unintuitive, but we have corrected this since.  Like the Bourne shell, "
1501 "we should have used C<guestfish -c command> to run commands."
1502 msgstr ""
1503
1504 # type: =item
1505 #: ../src/guestfs.pod:718
1506 msgid "guestfish megabyte modifiers don't work right on all commands"
1507 msgstr ""
1508
1509 # type: textblock
1510 #: ../src/guestfs.pod:720
1511 msgid ""
1512 "In recent guestfish you can use C<1M> to mean 1 megabyte (and similarly for "
1513 "other modifiers).  What guestfish actually does is to multiply the number "
1514 "part by the modifier part and pass the result to the C API.  However this "
1515 "doesn't work for a few APIs which aren't expecting bytes, but are already "
1516 "expecting some other unit (eg. megabytes)."
1517 msgstr ""
1518
1519 # type: textblock
1520 #: ../src/guestfs.pod:727
1521 msgid "The most common is L</guestfs_lvcreate>.  The guestfish command:"
1522 msgstr ""
1523
1524 # type: verbatim
1525 #: ../src/guestfs.pod:729
1526 #, no-wrap
1527 msgid ""
1528 " lvcreate LV VG 100M\n"
1529 "\n"
1530 msgstr ""
1531
1532 # type: textblock
1533 #: ../src/guestfs.pod:731
1534 msgid ""
1535 "does not do what you might expect.  Instead because L</guestfs_lvcreate> is "
1536 "already expecting megabytes, this tries to create a 100 I<terabyte> (100 "
1537 "megabytes * megabytes) logical volume.  The error message you get from this "
1538 "is also a little obscure."
1539 msgstr ""
1540
1541 # type: textblock
1542 #: ../src/guestfs.pod:736
1543 msgid ""
1544 "This could be fixed in the generator by specially marking parameters and "
1545 "return values which take bytes or other units."
1546 msgstr ""
1547
1548 # type: =item
1549 #: ../src/guestfs.pod:739
1550 msgid "Library should return errno with error messages."
1551 msgstr ""
1552
1553 # type: textblock
1554 #: ../src/guestfs.pod:741
1555 msgid ""
1556 "It would be a nice-to-have to be able to get the original value of 'errno' "
1557 "from inside the appliance along error paths (where set).  Currently "
1558 "L<guestmount(1)> goes through hoops to try to reverse the error message "
1559 "string into an errno, see the function error() in fuse/guestmount.c."
1560 msgstr ""
1561
1562 # type: textblock
1563 #: ../src/guestfs.pod:747
1564 msgid ""
1565 "In libguestfs 1.5.4, the protocol was changed so that the Linux errno is "
1566 "sent back from the daemon."
1567 msgstr ""
1568
1569 # type: =head2
1570 #: ../src/guestfs.pod:752
1571 msgid "PROTOCOL LIMITS"
1572 msgstr ""
1573
1574 # type: textblock
1575 #: ../src/guestfs.pod:754
1576 msgid ""
1577 "Internally libguestfs uses a message-based protocol to pass API calls and "
1578 "their responses to and from a small \"appliance\" (see L</INTERNALS> for "
1579 "plenty more detail about this).  The maximum message size used by the "
1580 "protocol is slightly less than 4 MB.  For some API calls you may need to be "
1581 "aware of this limit.  The API calls which may be affected are individually "
1582 "documented, with a link back to this section of the documentation."
1583 msgstr ""
1584
1585 # type: textblock
1586 #: ../src/guestfs.pod:762
1587 msgid ""
1588 "A simple call such as L</guestfs_cat> returns its result (the file data) in "
1589 "a simple string.  Because this string is at some point internally encoded as "
1590 "a message, the maximum size that it can return is slightly under 4 MB.  If "
1591 "the requested file is larger than this then you will get an error."
1592 msgstr ""
1593
1594 # type: textblock
1595 #: ../src/guestfs.pod:768
1596 msgid ""
1597 "In order to transfer large files into and out of the guest filesystem, you "
1598 "need to use particular calls that support this.  The sections L</UPLOADING> "
1599 "and L</DOWNLOADING> document how to do this."
1600 msgstr ""
1601
1602 # type: textblock
1603 #: ../src/guestfs.pod:772
1604 msgid ""
1605 "You might also consider mounting the disk image using our FUSE filesystem "
1606 "support (L<guestmount(1)>)."
1607 msgstr ""
1608
1609 # type: =head2
1610 #: ../src/guestfs.pod:775
1611 msgid "KEYS AND PASSPHRASES"
1612 msgstr ""
1613
1614 # type: textblock
1615 #: ../src/guestfs.pod:777
1616 msgid ""
1617 "Certain libguestfs calls take a parameter that contains sensitive key "
1618 "material, passed in as a C string."
1619 msgstr ""
1620
1621 # type: textblock
1622 #: ../src/guestfs.pod:780
1623 msgid ""
1624 "In the future we would hope to change the libguestfs implementation so that "
1625 "keys are L<mlock(2)>-ed into physical RAM, and thus can never end up in "
1626 "swap.  However this is I<not> done at the moment, because of the complexity "
1627 "of such an implementation."
1628 msgstr ""
1629
1630 # type: textblock
1631 #: ../src/guestfs.pod:785
1632 msgid ""
1633 "Therefore you should be aware that any key parameter you pass to libguestfs "
1634 "might end up being written out to the swap partition.  If this is a concern, "
1635 "scrub the swap partition or don't use libguestfs on encrypted devices."
1636 msgstr ""
1637
1638 # type: =head1
1639 #: ../src/guestfs.pod:790
1640 msgid "CONNECTION MANAGEMENT"
1641 msgstr ""
1642
1643 # type: =head2
1644 #: ../src/guestfs.pod:792
1645 msgid "guestfs_h *"
1646 msgstr ""
1647
1648 # type: textblock
1649 #: ../src/guestfs.pod:794
1650 msgid ""
1651 "C<guestfs_h> is the opaque type representing a connection handle.  Create a "
1652 "handle by calling L</guestfs_create>.  Call L</guestfs_close> to free the "
1653 "handle and release all resources used."
1654 msgstr ""
1655
1656 # type: textblock
1657 #: ../src/guestfs.pod:798
1658 msgid ""
1659 "For information on using multiple handles and threads, see the section L</"
1660 "MULTIPLE HANDLES AND MULTIPLE THREADS> below."
1661 msgstr ""
1662
1663 # type: =head2
1664 #: ../src/guestfs.pod:801
1665 msgid "guestfs_create"
1666 msgstr ""
1667
1668 # type: verbatim
1669 #: ../src/guestfs.pod:803
1670 #, no-wrap
1671 msgid ""
1672 " guestfs_h *guestfs_create (void);\n"
1673 "\n"
1674 msgstr ""
1675
1676 # type: textblock
1677 #: ../src/guestfs.pod:805
1678 msgid "Create a connection handle."
1679 msgstr ""
1680
1681 # type: textblock
1682 #: ../src/guestfs.pod:807
1683 msgid "You have to call L</guestfs_add_drive> on the handle at least once."
1684 msgstr ""
1685
1686 # type: textblock
1687 #: ../src/guestfs.pod:809
1688 msgid ""
1689 "This function returns a non-NULL pointer to a handle on success or NULL on "
1690 "error."
1691 msgstr ""
1692
1693 # type: textblock
1694 #: ../src/guestfs.pod:812
1695 msgid "After configuring the handle, you have to call L</guestfs_launch>."
1696 msgstr ""
1697
1698 # type: textblock
1699 #: ../src/guestfs.pod:814
1700 msgid ""
1701 "You may also want to configure error handling for the handle.  See L</ERROR "
1702 "HANDLING> section below."
1703 msgstr ""
1704
1705 # type: =head2
1706 #: ../src/guestfs.pod:817
1707 msgid "guestfs_close"
1708 msgstr ""
1709
1710 # type: verbatim
1711 #: ../src/guestfs.pod:819
1712 #, no-wrap
1713 msgid ""
1714 " void guestfs_close (guestfs_h *g);\n"
1715 "\n"
1716 msgstr ""
1717
1718 # type: textblock
1719 #: ../src/guestfs.pod:821
1720 msgid "This closes the connection handle and frees up all resources used."
1721 msgstr ""
1722
1723 # type: =head1
1724 #: ../src/guestfs.pod:823
1725 msgid "ERROR HANDLING"
1726 msgstr ""
1727
1728 # type: textblock
1729 #: ../src/guestfs.pod:825
1730 msgid ""
1731 "The convention in all functions that return C<int> is that they return C<-1> "
1732 "to indicate an error.  You can get additional information on errors by "
1733 "calling L</guestfs_last_error> and/or by setting up an error handler with L</"
1734 "guestfs_set_error_handler>."
1735 msgstr ""
1736
1737 # type: textblock
1738 #: ../src/guestfs.pod:830
1739 msgid "The default error handler prints the information string to C<stderr>."
1740 msgstr ""
1741
1742 # type: textblock
1743 #: ../src/guestfs.pod:832
1744 msgid ""
1745 "Out of memory errors are handled differently.  The default action is to call "
1746 "L<abort(3)>.  If this is undesirable, then you can set a handler using L</"
1747 "guestfs_set_out_of_memory_handler>."
1748 msgstr ""
1749
1750 # type: =head2
1751 #: ../src/guestfs.pod:836
1752 msgid "guestfs_last_error"
1753 msgstr ""
1754
1755 # type: verbatim
1756 #: ../src/guestfs.pod:838
1757 #, no-wrap
1758 msgid ""
1759 " const char *guestfs_last_error (guestfs_h *g);\n"
1760 "\n"
1761 msgstr ""
1762
1763 # type: textblock
1764 #: ../src/guestfs.pod:840
1765 msgid ""
1766 "This returns the last error message that happened on C<g>.  If there has not "
1767 "been an error since the handle was created, then this returns C<NULL>."
1768 msgstr ""
1769
1770 # type: textblock
1771 #: ../src/guestfs.pod:844
1772 msgid ""
1773 "The lifetime of the returned string is until the next error occurs, or L</"
1774 "guestfs_close> is called."
1775 msgstr ""
1776
1777 # type: textblock
1778 #: ../src/guestfs.pod:847
1779 msgid ""
1780 "The error string is not localized (ie. is always in English), because this "
1781 "makes searching for error messages in search engines give the largest number "
1782 "of results."
1783 msgstr ""
1784
1785 # type: =head2
1786 #: ../src/guestfs.pod:851
1787 msgid "guestfs_set_error_handler"
1788 msgstr ""
1789
1790 # type: verbatim
1791 #: ../src/guestfs.pod:853
1792 #, no-wrap
1793 msgid ""
1794 " typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n"
1795 "                                           void *opaque,\n"
1796 "                                           const char *msg);\n"
1797 " void guestfs_set_error_handler (guestfs_h *g,\n"
1798 "                                 guestfs_error_handler_cb cb,\n"
1799 "                                 void *opaque);\n"
1800 "\n"
1801 msgstr ""
1802
1803 # type: textblock
1804 #: ../src/guestfs.pod:860
1805 msgid ""
1806 "The callback C<cb> will be called if there is an error.  The parameters "
1807 "passed to the callback are an opaque data pointer and the error message "
1808 "string."
1809 msgstr ""
1810
1811 # type: textblock
1812 #: ../src/guestfs.pod:864
1813 msgid ""
1814 "Note that the message string C<msg> is freed as soon as the callback "
1815 "function returns, so if you want to stash it somewhere you must make your "
1816 "own copy."
1817 msgstr ""
1818
1819 # type: textblock
1820 #: ../src/guestfs.pod:868
1821 msgid "The default handler prints messages on C<stderr>."
1822 msgstr ""
1823
1824 # type: textblock
1825 #: ../src/guestfs.pod:870
1826 msgid "If you set C<cb> to C<NULL> then I<no> handler is called."
1827 msgstr ""
1828
1829 # type: =head2
1830 #: ../src/guestfs.pod:872
1831 msgid "guestfs_get_error_handler"
1832 msgstr ""
1833
1834 # type: verbatim
1835 #: ../src/guestfs.pod:874
1836 #, no-wrap
1837 msgid ""
1838 " guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n"
1839 "                                                     void **opaque_rtn);\n"
1840 "\n"
1841 msgstr ""
1842
1843 # type: textblock
1844 #: ../src/guestfs.pod:877
1845 msgid "Returns the current error handler callback."
1846 msgstr ""
1847
1848 # type: =head2
1849 #: ../src/guestfs.pod:879
1850 msgid "guestfs_set_out_of_memory_handler"
1851 msgstr ""
1852
1853 # type: verbatim
1854 #: ../src/guestfs.pod:881
1855 #, no-wrap
1856 msgid ""
1857 " typedef void (*guestfs_abort_cb) (void);\n"
1858 " int guestfs_set_out_of_memory_handler (guestfs_h *g,\n"
1859 "                                        guestfs_abort_cb);\n"
1860 "\n"
1861 msgstr ""
1862
1863 # type: textblock
1864 #: ../src/guestfs.pod:885
1865 msgid ""
1866 "The callback C<cb> will be called if there is an out of memory situation.  "
1867 "I<Note this callback must not return>."
1868 msgstr ""
1869
1870 # type: textblock
1871 #: ../src/guestfs.pod:888
1872 msgid "The default is to call L<abort(3)>."
1873 msgstr ""
1874
1875 # type: textblock
1876 #: ../src/guestfs.pod:890
1877 msgid ""
1878 "You cannot set C<cb> to C<NULL>.  You can't ignore out of memory situations."
1879 msgstr ""
1880
1881 # type: =head2
1882 #: ../src/guestfs.pod:893
1883 msgid "guestfs_get_out_of_memory_handler"
1884 msgstr ""
1885
1886 # type: verbatim
1887 #: ../src/guestfs.pod:895
1888 #, no-wrap
1889 msgid ""
1890 " guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n"
1891 "\n"
1892 msgstr ""
1893
1894 # type: textblock
1895 #: ../src/guestfs.pod:897
1896 msgid "This returns the current out of memory handler."
1897 msgstr ""
1898
1899 # type: =head1
1900 #: ../src/guestfs.pod:899
1901 msgid "PATH"
1902 msgstr ""
1903
1904 # type: textblock
1905 #: ../src/guestfs.pod:901
1906 msgid ""
1907 "Libguestfs needs a kernel and initrd.img, which it finds by looking along an "
1908 "internal path."
1909 msgstr ""
1910
1911 # type: textblock
1912 #: ../src/guestfs.pod:904
1913 msgid ""
1914 "By default it looks for these in the directory C<$libdir/guestfs> (eg. C</"
1915 "usr/local/lib/guestfs> or C</usr/lib64/guestfs>)."
1916 msgstr ""
1917
1918 # type: textblock
1919 #: ../src/guestfs.pod:907
1920 msgid ""
1921 "Use L</guestfs_set_path> or set the environment variable L</LIBGUESTFS_PATH> "
1922 "to change the directories that libguestfs will search in.  The value is a "
1923 "colon-separated list of paths.  The current directory is I<not> searched "
1924 "unless the path contains an empty element or C<.>.  For example "
1925 "C<LIBGUESTFS_PATH=:/usr/lib/guestfs> would search the current directory and "
1926 "then C</usr/lib/guestfs>."
1927 msgstr ""
1928
1929 # type: =head1
1930 #: ../src/guestfs.pod:914
1931 msgid "HIGH-LEVEL API ACTIONS"
1932 msgstr ""
1933
1934 # type: =head2
1935 #: ../src/guestfs.pod:916
1936 msgid "ABI GUARANTEE"
1937 msgstr ""
1938
1939 # type: textblock
1940 #: ../src/guestfs.pod:918
1941 msgid ""
1942 "We guarantee the libguestfs ABI (binary interface), for public, high-level "
1943 "actions as outlined in this section.  Although we will deprecate some "
1944 "actions, for example if they get replaced by newer calls, we will keep the "
1945 "old actions forever.  This allows you the developer to program in confidence "
1946 "against the libguestfs API."
1947 msgstr ""
1948
1949 # type: textblock
1950 #: ../src/guestfs.pod:924 ../fish/guestfish.pod:926
1951 msgid "@ACTIONS@"
1952 msgstr ""
1953
1954 # type: =head1
1955 #: ../src/guestfs.pod:926
1956 msgid "STRUCTURES"
1957 msgstr ""
1958
1959 # type: textblock
1960 #: ../src/guestfs.pod:928
1961 msgid "@STRUCTS@"
1962 msgstr ""
1963
1964 # type: =head1
1965 #: ../src/guestfs.pod:930
1966 msgid "AVAILABILITY"
1967 msgstr ""
1968
1969 # type: =head2
1970 #: ../src/guestfs.pod:932
1971 msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE"
1972 msgstr ""
1973
1974 # type: textblock
1975 #: ../src/guestfs.pod:934
1976 msgid ""
1977 "Using L</guestfs_available> you can test availability of the following "
1978 "groups of functions.  This test queries the appliance to see if the "
1979 "appliance you are currently using supports the functionality."
1980 msgstr ""
1981
1982 # type: textblock
1983 #: ../src/guestfs.pod:939
1984 msgid "@AVAILABILITY@"
1985 msgstr ""
1986
1987 # type: =head2
1988 #: ../src/guestfs.pod:941
1989 msgid "GUESTFISH supported COMMAND"
1990 msgstr ""
1991
1992 # type: textblock
1993 #: ../src/guestfs.pod:943
1994 msgid ""
1995 "In L<guestfish(3)> there is a handy interactive command C<supported> which "
1996 "prints out the available groups and whether they are supported by this build "
1997 "of libguestfs.  Note however that you have to do C<run> first."
1998 msgstr ""
1999
2000 # type: =head2
2001 #: ../src/guestfs.pod:948
2002 msgid "SINGLE CALLS AT COMPILE TIME"
2003 msgstr ""
2004
2005 # type: textblock
2006 #: ../src/guestfs.pod:950
2007 msgid ""
2008 "Since version 1.5.8, C<E<lt>guestfs.hE<gt>> defines symbols for each C API "
2009 "function, such as:"
2010 msgstr ""
2011
2012 # type: verbatim
2013 #: ../src/guestfs.pod:953
2014 #, no-wrap
2015 msgid ""
2016 " #define LIBGUESTFS_HAVE_DD 1\n"
2017 "\n"
2018 msgstr ""
2019
2020 # type: textblock
2021 #: ../src/guestfs.pod:955
2022 msgid "if L</guestfs_dd> is available."
2023 msgstr ""
2024
2025 # type: textblock
2026 #: ../src/guestfs.pod:957
2027 msgid ""
2028 "Before version 1.5.8, if you needed to test whether a single libguestfs "
2029 "function is available at compile time, we recommended using build tools such "
2030 "as autoconf or cmake.  For example in autotools you could use:"
2031 msgstr ""
2032
2033 # type: verbatim
2034 #: ../src/guestfs.pod:962
2035 #, no-wrap
2036 msgid ""
2037 " AC_CHECK_LIB([guestfs],[guestfs_create])\n"
2038 " AC_CHECK_FUNCS([guestfs_dd])\n"
2039 "\n"
2040 msgstr ""
2041
2042 # type: textblock
2043 #: ../src/guestfs.pod:965
2044 msgid ""
2045 "which would result in C<HAVE_GUESTFS_DD> being either defined or not defined "
2046 "in your program."
2047 msgstr ""
2048
2049 # type: =head2
2050 #: ../src/guestfs.pod:968
2051 msgid "SINGLE CALLS AT RUN TIME"
2052 msgstr ""
2053
2054 # type: textblock
2055 #: ../src/guestfs.pod:970
2056 msgid ""
2057 "Testing at compile time doesn't guarantee that a function really exists in "
2058 "the library.  The reason is that you might be dynamically linked against a "
2059 "previous I<libguestfs.so> (dynamic library)  which doesn't have the call.  "
2060 "This situation unfortunately results in a segmentation fault, which is a "
2061 "shortcoming of the C dynamic linking system itself."
2062 msgstr ""
2063
2064 # type: textblock
2065 #: ../src/guestfs.pod:977
2066 msgid ""
2067 "You can use L<dlopen(3)> to test if a function is available at run time, as "
2068 "in this example program (note that you still need the compile time check as "
2069 "well):"
2070 msgstr ""
2071
2072 # type: verbatim
2073 #: ../src/guestfs.pod:981
2074 #, no-wrap
2075 msgid ""
2076 " #include <stdio.h>\n"
2077 " #include <stdlib.h>\n"
2078 " #include <unistd.h>\n"
2079 " #include <dlfcn.h>\n"
2080 " #include <guestfs.h>\n"
2081 " \n"
2082 msgstr ""
2083
2084 # type: verbatim
2085 #: ../src/guestfs.pod:987
2086 #, no-wrap
2087 msgid ""
2088 " main ()\n"
2089 " {\n"
2090 " #ifdef LIBGUESTFS_HAVE_DD\n"
2091 "   void *dl;\n"
2092 "   int has_function;\n"
2093 " \n"
2094 msgstr ""
2095
2096 # type: verbatim
2097 #: ../src/guestfs.pod:993
2098 #, no-wrap
2099 msgid ""
2100 "   /* Test if the function guestfs_dd is really available. */\n"
2101 "   dl = dlopen (NULL, RTLD_LAZY);\n"
2102 "   if (!dl) {\n"
2103 "     fprintf (stderr, \"dlopen: %s\\n\", dlerror ());\n"
2104 "     exit (EXIT_FAILURE);\n"
2105 "   }\n"
2106 "   has_function = dlsym (dl, \"guestfs_dd\") != NULL;\n"
2107 "   dlclose (dl);\n"
2108 " \n"
2109 msgstr ""
2110
2111 # type: verbatim
2112 #: ../src/guestfs.pod:1002
2113 #, no-wrap
2114 msgid ""
2115 "   if (!has_function)\n"
2116 "     printf (\"this libguestfs.so does NOT have guestfs_dd function\\n\");\n"
2117 "   else {\n"
2118 "     printf (\"this libguestfs.so has guestfs_dd function\\n\");\n"
2119 "     /* Now it's safe to call\n"
2120 "     guestfs_dd (g, \"foo\", \"bar\");\n"
2121 "     */\n"
2122 "   }\n"
2123 " #else\n"
2124 "   printf (\"guestfs_dd function was not found at compile time\\n\");\n"
2125 " #endif\n"
2126 "  }\n"
2127 "\n"
2128 msgstr ""
2129
2130 # type: textblock
2131 #: ../src/guestfs.pod:1015
2132 msgid ""
2133 "You may think the above is an awful lot of hassle, and it is.  There are "
2134 "other ways outside of the C linking system to ensure that this kind of "
2135 "incompatibility never arises, such as using package versioning:"
2136 msgstr ""
2137
2138 # type: verbatim
2139 #: ../src/guestfs.pod:1020
2140 #, no-wrap
2141 msgid ""
2142 " Requires: libguestfs >= 1.0.80\n"
2143 "\n"
2144 msgstr ""
2145
2146 # type: =end
2147 #: ../src/guestfs.pod:1022 ../src/guestfs.pod:1027
2148 msgid "html"
2149 msgstr ""
2150
2151 # type: textblock
2152 #: ../src/guestfs.pod:1024
2153 msgid ""
2154 "<!-- old anchor for the next section --> <a name="
2155 "\"state_machine_and_low_level_event_api\"/>"
2156 msgstr ""
2157
2158 # type: =head1
2159 #: ../src/guestfs.pod:1029
2160 msgid "ARCHITECTURE"
2161 msgstr ""
2162
2163 # type: textblock
2164 #: ../src/guestfs.pod:1031
2165 msgid ""
2166 "Internally, libguestfs is implemented by running an appliance (a special "
2167 "type of small virtual machine) using L<qemu(1)>.  Qemu runs as a child "
2168 "process of the main program."
2169 msgstr ""
2170
2171 # type: verbatim
2172 #: ../src/guestfs.pod:1035
2173 #, no-wrap
2174 msgid ""
2175 "  ___________________\n"
2176 " /                   \\\n"
2177 " | main program      |\n"
2178 " |                   |\n"
2179 " |                   |           child process / appliance\n"
2180 " |                   |           __________________________\n"
2181 " |                   |          / qemu                     \\\n"
2182 " +-------------------+   RPC    |      +-----------------+ |\n"
2183 " | libguestfs     <--------------------> guestfsd        | |\n"
2184 " |                   |          |      +-----------------+ |\n"
2185 " \\___________________/          |      | Linux kernel    | |\n"
2186 "                                |      +--^--------------+ |\n"
2187 "                                \\_________|________________/\n"
2188 "                                          |\n"
2189 "                                   _______v______\n"
2190 "                                  /              \\\n"
2191 "                                  | Device or    |\n"
2192 "                                  | disk image   |\n"
2193 "                                  \\______________/\n"
2194 "\n"
2195 msgstr ""
2196
2197 # type: textblock
2198 #: ../src/guestfs.pod:1055
2199 msgid ""
2200 "The library, linked to the main program, creates the child process and hence "
2201 "the appliance in the L</guestfs_launch> function."
2202 msgstr ""
2203
2204 # type: textblock
2205 #: ../src/guestfs.pod:1058
2206 msgid ""
2207 "Inside the appliance is a Linux kernel and a complete stack of userspace "
2208 "tools (such as LVM and ext2 programs) and a small controlling daemon called "
2209 "L</guestfsd>.  The library talks to L</guestfsd> using remote procedure "
2210 "calls (RPC).  There is a mostly one-to-one correspondence between libguestfs "
2211 "API calls and RPC calls to the daemon.  Lastly the disk image(s) are "
2212 "attached to the qemu process which translates device access by the "
2213 "appliance's Linux kernel into accesses to the image."
2214 msgstr ""
2215
2216 # type: textblock
2217 #: ../src/guestfs.pod:1067
2218 msgid ""
2219 "A common misunderstanding is that the appliance \"is\" the virtual machine.  "
2220 "Although the disk image you are attached to might also be used by some "
2221 "virtual machine, libguestfs doesn't know or care about this.  (But you will "
2222 "care if both libguestfs's qemu process and your virtual machine are trying "
2223 "to update the disk image at the same time, since these usually results in "
2224 "massive disk corruption)."
2225 msgstr ""
2226
2227 # type: =head1
2228 #: ../src/guestfs.pod:1074
2229 msgid "STATE MACHINE"
2230 msgstr ""
2231
2232 # type: textblock
2233 #: ../src/guestfs.pod:1076
2234 msgid "libguestfs uses a state machine to model the child process:"
2235 msgstr ""
2236
2237 # type: verbatim
2238 #: ../src/guestfs.pod:1078
2239 #, no-wrap
2240 msgid ""
2241 "                         |\n"
2242 "                    guestfs_create\n"
2243 "                         |\n"
2244 "                         |\n"
2245 "                     ____V_____\n"
2246 "                    /          \\\n"
2247 "                    |  CONFIG  |\n"
2248 "                    \\__________/\n"
2249 "                     ^ ^   ^  \\\n"
2250 "                    /  |    \\  \\ guestfs_launch\n"
2251 "                   /   |    _\\__V______\n"
2252 "                  /    |   /           \\\n"
2253 "                 /     |   | LAUNCHING |\n"
2254 "                /      |   \\___________/\n"
2255 "               /       |       /\n"
2256 "              /        |  guestfs_launch\n"
2257 "             /         |     /\n"
2258 "    ______  /        __|____V\n"
2259 "   /      \\ ------> /        \\\n"
2260 "   | BUSY |         | READY  |\n"
2261 "   \\______/ <------ \\________/\n"
2262 "\n"
2263 msgstr ""
2264
2265 # type: textblock
2266 #: ../src/guestfs.pod:1100
2267 msgid ""
2268 "The normal transitions are (1) CONFIG (when the handle is created, but there "
2269 "is no child process), (2) LAUNCHING (when the child process is booting up), "
2270 "(3) alternating between READY and BUSY as commands are issued to, and "
2271 "carried out by, the child process."
2272 msgstr ""
2273
2274 # type: textblock
2275 #: ../src/guestfs.pod:1105
2276 msgid ""
2277 "The guest may be killed by L</guestfs_kill_subprocess>, or may die "
2278 "asynchronously at any time (eg. due to some internal error), and that causes "
2279 "the state to transition back to CONFIG."
2280 msgstr ""
2281
2282 # type: textblock
2283 #: ../src/guestfs.pod:1109
2284 msgid ""
2285 "Configuration commands for qemu such as L</guestfs_add_drive> can only be "
2286 "issued when in the CONFIG state."
2287 msgstr ""
2288
2289 # type: textblock
2290 #: ../src/guestfs.pod:1112
2291 msgid ""
2292 "The API offers one call that goes from CONFIG through LAUNCHING to READY.  "
2293 "L</guestfs_launch> blocks until the child process is READY to accept "
2294 "commands (or until some failure or timeout).  L</guestfs_launch> internally "
2295 "moves the state from CONFIG to LAUNCHING while it is running."
2296 msgstr ""
2297
2298 # type: textblock
2299 #: ../src/guestfs.pod:1118
2300 msgid ""
2301 "API actions such as L</guestfs_mount> can only be issued when in the READY "
2302 "state.  These API calls block waiting for the command to be carried out (ie. "
2303 "the state to transition to BUSY and then back to READY).  There are no non-"
2304 "blocking versions, and no way to issue more than one command per handle at "
2305 "the same time."
2306 msgstr ""
2307
2308 # type: textblock
2309 #: ../src/guestfs.pod:1124
2310 msgid ""
2311 "Finally, the child process sends asynchronous messages back to the main "
2312 "program, such as kernel log messages.  You can register a callback to "
2313 "receive these messages."
2314 msgstr ""
2315
2316 # type: =head2
2317 #: ../src/guestfs.pod:1128
2318 msgid "SETTING CALLBACKS TO HANDLE EVENTS"
2319 msgstr ""
2320
2321 # type: textblock
2322 #: ../src/guestfs.pod:1130
2323 msgid ""
2324 "The child process generates events in some situations.  Current events "
2325 "include: receiving a log message, the child process exits."
2326 msgstr ""
2327
2328 # type: textblock
2329 #: ../src/guestfs.pod:1133
2330 msgid ""
2331 "Use the C<guestfs_set_*_callback> functions to set a callback for different "
2332 "types of events."
2333 msgstr ""
2334
2335 # type: textblock
2336 #: ../src/guestfs.pod:1136
2337 msgid ""
2338 "Only I<one callback of each type> can be registered for each handle.  "
2339 "Calling C<guestfs_set_*_callback> again overwrites the previous callback of "
2340 "that type.  Cancel all callbacks of this type by calling this function with "
2341 "C<cb> set to C<NULL>."
2342 msgstr ""
2343
2344 # type: =head2
2345 #: ../src/guestfs.pod:1141
2346 msgid "guestfs_set_log_message_callback"
2347 msgstr ""
2348
2349 # type: verbatim
2350 #: ../src/guestfs.pod:1143
2351 #, no-wrap
2352 msgid ""
2353 " typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque,\n"
2354 "                                         char *buf, int len);\n"
2355 " void guestfs_set_log_message_callback (guestfs_h *g,\n"
2356 "                                        guestfs_log_message_cb cb,\n"
2357 "                                        void *opaque);\n"
2358 "\n"
2359 msgstr ""
2360
2361 # type: textblock
2362 #: ../src/guestfs.pod:1149
2363 msgid ""
2364 "The callback function C<cb> will be called whenever qemu or the guest writes "
2365 "anything to the console."
2366 msgstr ""
2367
2368 # type: textblock
2369 #: ../src/guestfs.pod:1152
2370 msgid "Use this function to capture kernel messages and similar."
2371 msgstr ""
2372
2373 # type: textblock
2374 #: ../src/guestfs.pod:1154
2375 msgid ""
2376 "Normally there is no log message handler, and log messages are just "
2377 "discarded."
2378 msgstr ""
2379
2380 # type: =head2
2381 #: ../src/guestfs.pod:1157
2382 msgid "guestfs_set_subprocess_quit_callback"
2383 msgstr ""
2384
2385 # type: verbatim
2386 #: ../src/guestfs.pod:1159
2387 #, no-wrap
2388 msgid ""
2389 " typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);\n"
2390 " void guestfs_set_subprocess_quit_callback (guestfs_h *g,\n"
2391 "                                            guestfs_subprocess_quit_cb cb,\n"
2392 "                                            void *opaque);\n"
2393 "\n"
2394 msgstr ""
2395
2396 # type: textblock
2397 #: ../src/guestfs.pod:1164
2398 msgid ""
2399 "The callback function C<cb> will be called when the child process quits, "
2400 "either asynchronously or if killed by L</guestfs_kill_subprocess>.  (This "
2401 "corresponds to a transition from any state to the CONFIG state)."
2402 msgstr ""
2403
2404 # type: =head2
2405 #: ../src/guestfs.pod:1169
2406 msgid "guestfs_set_launch_done_callback"
2407 msgstr ""
2408
2409 # type: verbatim
2410 #: ../src/guestfs.pod:1171
2411 #, no-wrap
2412 msgid ""
2413 " typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);\n"
2414 " void guestfs_set_launch_done_callback (guestfs_h *g,\n"
2415 "                                        guestfs_launch_done_cb cb,\n"
2416 "                                        void *opaque);\n"
2417 "\n"
2418 msgstr ""
2419
2420 # type: textblock
2421 #: ../src/guestfs.pod:1176
2422 msgid ""
2423 "The callback function C<cb> will be called when the child process becomes "
2424 "ready first time after it has been launched.  (This corresponds to a "
2425 "transition from LAUNCHING to the READY state)."
2426 msgstr ""
2427
2428 # type: =head2
2429 #: ../src/guestfs.pod:1180
2430 msgid "guestfs_set_close_callback"
2431 msgstr ""
2432
2433 # type: verbatim
2434 #: ../src/guestfs.pod:1182
2435 #, no-wrap
2436 msgid ""
2437 " typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);\n"
2438 " void guestfs_set_close_callback (guestfs_h *g,\n"
2439 "                                  guestfs_close_cb cb,\n"
2440 "                                  void *opaque);\n"
2441 "\n"
2442 msgstr ""
2443
2444 # type: textblock
2445 #: ../src/guestfs.pod:1187
2446 msgid ""
2447 "The callback function C<cb> will be called while the handle is being closed "
2448 "(synchronously from L</guestfs_close>)."
2449 msgstr ""
2450
2451 # type: textblock
2452 #: ../src/guestfs.pod:1190
2453 msgid ""
2454 "Note that libguestfs installs an L<atexit(3)> handler to try to clean up "
2455 "handles that are open when the program exits.  This means that this callback "
2456 "might be called indirectly from L<exit(3)>, which can cause unexpected "
2457 "problems in higher-level languages (eg. if your HLL interpreter has already "
2458 "been cleaned up by the time this is called, and if your callback then jumps "
2459 "into some HLL function)."
2460 msgstr ""
2461
2462 # type: =head2
2463 #: ../src/guestfs.pod:1198
2464 msgid "guestfs_set_progress_callback"
2465 msgstr ""
2466
2467 # type: verbatim
2468 #: ../src/guestfs.pod:1200
2469 #, no-wrap
2470 msgid ""
2471 " typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque,\n"
2472 "                                      int proc_nr, int serial,\n"
2473 "                                      uint64_t position, uint64_t total);\n"
2474 " void guestfs_set_progress_callback (guestfs_h *g,\n"
2475 "                                     guestfs_progress_cb cb,\n"
2476 "                                     void *opaque);\n"
2477 "\n"
2478 msgstr ""
2479
2480 # type: textblock
2481 #: ../src/guestfs.pod:1207
2482 msgid ""
2483 "Some long-running operations can generate progress messages.  If this "
2484 "callback is registered, then it will be called each time a progress message "
2485 "is generated (usually two seconds after the operation started, and three "
2486 "times per second thereafter until it completes, although the frequency may "
2487 "change in future versions)."
2488 msgstr ""
2489
2490 # type: textblock
2491 #: ../src/guestfs.pod:1213
2492 msgid ""
2493 "The callback receives two numbers: C<position> and C<total>.  The units of "
2494 "C<total> are not defined, although for some operations C<total> may relate "
2495 "in some way to the amount of data to be transferred (eg. in bytes or "
2496 "megabytes), and C<position> may be the portion which has been transferred."
2497 msgstr ""
2498
2499 # type: textblock
2500 #: ../src/guestfs.pod:1219
2501 msgid "The only defined and stable parts of the API are:"
2502 msgstr ""
2503
2504 # type: textblock
2505 #: ../src/guestfs.pod:1225
2506 msgid ""
2507 "The callback can display to the user some type of progress bar or indicator "
2508 "which shows the ratio of C<position>:C<total>."
2509 msgstr ""
2510
2511 # type: textblock
2512 #: ../src/guestfs.pod:1230
2513 msgid "0 E<lt>= C<position> E<lt>= C<total>"
2514 msgstr ""
2515
2516 # type: textblock
2517 #: ../src/guestfs.pod:1234
2518 msgid ""
2519 "If any progress notification is sent during a call, then a final progress "
2520 "notification is always sent when C<position> = C<total>."
2521 msgstr ""
2522
2523 # type: textblock
2524 #: ../src/guestfs.pod:1237
2525 msgid ""
2526 "This is to simplify caller code, so callers can easily set the progress "
2527 "indicator to \"100%\" at the end of the operation, without requiring special "
2528 "code to detect this case."
2529 msgstr ""
2530
2531 # type: textblock
2532 #: ../src/guestfs.pod:1243
2533 msgid ""
2534 "The callback also receives the procedure number and serial number of the "
2535 "call.  These are only useful for debugging protocol issues, and the callback "
2536 "can normally ignore them.  The callback may want to print these numbers in "
2537 "error messages or debugging messages."
2538 msgstr ""
2539
2540 # type: =head1
2541 #: ../src/guestfs.pod:1248
2542 msgid "PRIVATE DATA AREA"
2543 msgstr ""
2544
2545 # type: textblock
2546 #: ../src/guestfs.pod:1250
2547 msgid ""
2548 "You can attach named pieces of private data to the libguestfs handle, and "
2549 "fetch them by name for the lifetime of the handle.  This is called the "
2550 "private data area and is only available from the C API."
2551 msgstr ""
2552
2553 # type: textblock
2554 #: ../src/guestfs.pod:1254
2555 msgid "To attach a named piece of data, use the following call:"
2556 msgstr ""
2557
2558 # type: verbatim
2559 #: ../src/guestfs.pod:1256
2560 #, no-wrap
2561 msgid ""
2562 " void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
2563 "\n"
2564 msgstr ""
2565
2566 # type: textblock
2567 #: ../src/guestfs.pod:1258
2568 msgid ""
2569 "C<key> is the name to associate with this data, and C<data> is an arbitrary "
2570 "pointer (which can be C<NULL>).  Any previous item with the same name is "
2571 "overwritten."
2572 msgstr ""
2573
2574 # type: textblock
2575 #: ../src/guestfs.pod:1262
2576 msgid ""
2577 "You can use any C<key> you want, but names beginning with an underscore "
2578 "character are reserved for internal libguestfs purposes (for implementing "
2579 "language bindings).  It is recommended to prefix the name with some unique "
2580 "string to avoid collisions with other users."
2581 msgstr ""
2582
2583 # type: textblock
2584 #: ../src/guestfs.pod:1267
2585 msgid "To retrieve the pointer, use:"
2586 msgstr ""
2587
2588 # type: verbatim
2589 #: ../src/guestfs.pod:1269
2590 #, no-wrap
2591 msgid ""
2592 " void *guestfs_get_private (guestfs_h *g, const char *key);\n"
2593 "\n"
2594 msgstr ""
2595
2596 # type: textblock
2597 #: ../src/guestfs.pod:1271
2598 msgid ""
2599 "This function returns C<NULL> if either no data is found associated with "
2600 "C<key>, or if the user previously set the C<key>'s C<data> pointer to "
2601 "C<NULL>."
2602 msgstr ""
2603
2604 # type: textblock
2605 #: ../src/guestfs.pod:1275
2606 msgid ""
2607 "Libguestfs does not try to look at or interpret the C<data> pointer in any "
2608 "way.  As far as libguestfs is concerned, it need not be a valid pointer at "
2609 "all.  In particular, libguestfs does I<not> try to free the data when the "
2610 "handle is closed.  If the data must be freed, then the caller must either "
2611 "free it before calling L</guestfs_close> or must set up a close callback to "
2612 "do it (see L</guestfs_set_close_callback>, and note that only one callback "
2613 "can be registered for a handle)."
2614 msgstr ""
2615
2616 # type: textblock
2617 #: ../src/guestfs.pod:1283
2618 msgid ""
2619 "The private data area is implemented using a hash table, and should be "
2620 "reasonably efficient for moderate numbers of keys."
2621 msgstr ""
2622
2623 # type: =head1
2624 #: ../src/guestfs.pod:1286
2625 msgid "BLOCK DEVICE NAMING"
2626 msgstr ""
2627
2628 # type: textblock
2629 #: ../src/guestfs.pod:1288
2630 msgid ""
2631 "In the kernel there is now quite a profusion of schemata for naming block "
2632 "devices (in this context, by I<block device> I mean a physical or virtual "
2633 "hard drive).  The original Linux IDE driver used names starting with C</dev/"
2634 "hd*>.  SCSI devices have historically used a different naming scheme, C</dev/"
2635 "sd*>.  When the Linux kernel I<libata> driver became a popular replacement "
2636 "for the old IDE driver (particularly for SATA devices) those devices also "
2637 "used the C</dev/sd*> scheme.  Additionally we now have virtual machines with "
2638 "paravirtualized drivers.  This has created several different naming systems, "
2639 "such as C</dev/vd*> for virtio disks and C</dev/xvd*> for Xen PV disks."
2640 msgstr ""
2641
2642 # type: textblock
2643 #: ../src/guestfs.pod:1300
2644 msgid ""
2645 "As discussed above, libguestfs uses a qemu appliance running an embedded "
2646 "Linux kernel to access block devices.  We can run a variety of appliances "
2647 "based on a variety of Linux kernels."
2648 msgstr ""
2649
2650 # type: textblock
2651 #: ../src/guestfs.pod:1304
2652 msgid ""
2653 "This causes a problem for libguestfs because many API calls use device or "
2654 "partition names.  Working scripts and the recipe (example) scripts that we "
2655 "make available over the internet could fail if the naming scheme changes."
2656 msgstr ""
2657
2658 # type: textblock
2659 #: ../src/guestfs.pod:1309
2660 msgid ""
2661 "Therefore libguestfs defines C</dev/sd*> as the I<standard naming scheme>.  "
2662 "Internally C</dev/sd*> names are translated, if necessary, to other names as "
2663 "required.  For example, under RHEL 5 which uses the C</dev/hd*> scheme, any "
2664 "device parameter C</dev/sda2> is translated to C</dev/hda2> transparently."
2665 msgstr ""
2666
2667 # type: textblock
2668 #: ../src/guestfs.pod:1315
2669 msgid ""
2670 "Note that this I<only> applies to parameters.  The L</guestfs_list_devices>, "
2671 "L</guestfs_list_partitions> and similar calls return the true names of the "
2672 "devices and partitions as known to the appliance."
2673 msgstr ""
2674
2675 # type: =head2
2676 #: ../src/guestfs.pod:1320
2677 msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION"
2678 msgstr ""
2679
2680 # type: textblock
2681 #: ../src/guestfs.pod:1322
2682 msgid ""
2683 "Usually this translation is transparent.  However in some (very rare)  cases "
2684 "you may need to know the exact algorithm.  Such cases include where you use "
2685 "L</guestfs_config> to add a mixture of virtio and IDE devices to the qemu-"
2686 "based appliance, so have a mixture of C</dev/sd*> and C</dev/vd*> devices."
2687 msgstr ""
2688
2689 # type: textblock
2690 #: ../src/guestfs.pod:1328
2691 msgid ""
2692 "The algorithm is applied only to I<parameters> which are known to be either "
2693 "device or partition names.  Return values from functions such as L</"
2694 "guestfs_list_devices> are never changed."
2695 msgstr ""
2696
2697 # type: textblock
2698 #: ../src/guestfs.pod:1336
2699 msgid "Is the string a parameter which is a device or partition name?"
2700 msgstr ""
2701
2702 # type: textblock
2703 #: ../src/guestfs.pod:1340
2704 msgid "Does the string begin with C</dev/sd>?"
2705 msgstr ""
2706
2707 # type: textblock
2708 #: ../src/guestfs.pod:1344
2709 msgid ""
2710 "Does the named device exist? If so, we use that device.  However if I<not> "
2711 "then we continue with this algorithm."
2712 msgstr ""
2713
2714 # type: textblock
2715 #: ../src/guestfs.pod:1349
2716 msgid "Replace initial C</dev/sd> string with C</dev/hd>."
2717 msgstr ""
2718
2719 # type: textblock
2720 #: ../src/guestfs.pod:1351
2721 msgid "For example, change C</dev/sda2> to C</dev/hda2>."
2722 msgstr ""
2723
2724 # type: textblock
2725 #: ../src/guestfs.pod:1353
2726 msgid "If that named device exists, use it.  If not, continue."
2727 msgstr ""
2728
2729 # type: textblock
2730 #: ../src/guestfs.pod:1357
2731 msgid "Replace initial C</dev/sd> string with C</dev/vd>."
2732 msgstr ""
2733
2734 # type: textblock
2735 #: ../src/guestfs.pod:1359
2736 msgid "If that named device exists, use it.  If not, return an error."
2737 msgstr ""
2738
2739 # type: =head2
2740 #: ../src/guestfs.pod:1363
2741 msgid "PORTABILITY CONCERNS"
2742 msgstr ""
2743
2744 # type: textblock
2745 #: ../src/guestfs.pod:1365
2746 msgid ""
2747 "Although the standard naming scheme and automatic translation is useful for "
2748 "simple programs and guestfish scripts, for larger programs it is best not to "
2749 "rely on this mechanism."
2750 msgstr ""
2751
2752 # type: textblock
2753 #: ../src/guestfs.pod:1369
2754 msgid ""
2755 "Where possible for maximum future portability programs using libguestfs "
2756 "should use these future-proof techniques:"
2757 msgstr ""
2758
2759 # type: textblock
2760 #: ../src/guestfs.pod:1376
2761 msgid ""
2762 "Use L</guestfs_list_devices> or L</guestfs_list_partitions> to list actual "
2763 "device names, and then use those names directly."
2764 msgstr ""
2765
2766 # type: textblock
2767 #: ../src/guestfs.pod:1379
2768 msgid ""
2769 "Since those device names exist by definition, they will never be translated."
2770 msgstr ""
2771
2772 # type: textblock
2773 #: ../src/guestfs.pod:1384
2774 msgid ""
2775 "Use higher level ways to identify filesystems, such as LVM names, UUIDs and "
2776 "filesystem labels."
2777 msgstr ""
2778
2779 # type: =head1
2780 #: ../src/guestfs.pod:1389
2781 msgid "INTERNALS"
2782 msgstr ""
2783
2784 # type: =head2
2785 #: ../src/guestfs.pod:1391
2786 msgid "COMMUNICATION PROTOCOL"
2787 msgstr ""
2788
2789 # type: textblock
2790 #: ../src/guestfs.pod:1393
2791 msgid ""
2792 "Don't rely on using this protocol directly.  This section documents how it "
2793 "currently works, but it may change at any time."
2794 msgstr ""
2795
2796 # type: textblock
2797 #: ../src/guestfs.pod:1396
2798 msgid ""
2799 "The protocol used to talk between the library and the daemon running inside "
2800 "the qemu virtual machine is a simple RPC mechanism built on top of XDR (RFC "
2801 "1014, RFC 1832, RFC 4506)."
2802 msgstr ""
2803
2804 # type: textblock
2805 #: ../src/guestfs.pod:1400
2806 msgid ""
2807 "The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
2808 "this file is automatically generated)."
2809 msgstr ""
2810
2811 # type: textblock
2812 #: ../src/guestfs.pod:1403
2813 msgid ""
2814 "There are two broad cases, ordinary functions that don't have any C<FileIn> "
2815 "and C<FileOut> parameters, which are handled with very simple request/reply "
2816 "messages.  Then there are functions that have any C<FileIn> or C<FileOut> "
2817 "parameters, which use the same request and reply messages, but they may also "
2818 "be followed by files sent using a chunked encoding."
2819 msgstr ""
2820
2821 # type: =head3
2822 #: ../src/guestfs.pod:1410
2823 msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
2824 msgstr ""
2825
2826 # type: textblock
2827 #: ../src/guestfs.pod:1412
2828 msgid "For ordinary functions, the request message is:"
2829 msgstr ""
2830
2831 # type: verbatim
2832 #: ../src/guestfs.pod:1414
2833 #, no-wrap
2834 msgid ""
2835 " total length (header + arguments,\n"
2836 "      but not including the length word itself)\n"
2837 " struct guestfs_message_header (encoded as XDR)\n"
2838 " struct guestfs_<foo>_args (encoded as XDR)\n"
2839 "\n"
2840 msgstr ""
2841
2842 # type: textblock
2843 #: ../src/guestfs.pod:1419
2844 msgid ""
2845 "The total length field allows the daemon to allocate a fixed size buffer "
2846 "into which it slurps the rest of the message.  As a result, the total length "
2847 "is limited to C<GUESTFS_MESSAGE_MAX> bytes (currently 4MB), which means the "
2848 "effective size of any request is limited to somewhere under this size."
2849 msgstr ""
2850
2851 # type: textblock
2852 #: ../src/guestfs.pod:1425
2853 msgid ""
2854 "Note also that many functions don't take any arguments, in which case the "
2855 "C<guestfs_I<foo>_args> is completely omitted."
2856 msgstr ""
2857
2858 # type: textblock
2859 #: ../src/guestfs.pod:1428
2860 msgid ""
2861 "The header contains the procedure number (C<guestfs_proc>) which is how the "
2862 "receiver knows what type of args structure to expect, or none at all."
2863 msgstr ""
2864
2865 # type: textblock
2866 #: ../src/guestfs.pod:1432
2867 msgid "The reply message for ordinary functions is:"
2868 msgstr ""
2869
2870 # type: verbatim
2871 #: ../src/guestfs.pod:1434
2872 #, no-wrap
2873 msgid ""
2874 " total length (header + ret,\n"
2875 "      but not including the length word itself)\n"
2876 " struct guestfs_message_header (encoded as XDR)\n"
2877 " struct guestfs_<foo>_ret (encoded as XDR)\n"
2878 "\n"
2879 msgstr ""
2880
2881 # type: textblock
2882 #: ../src/guestfs.pod:1439
2883 msgid ""
2884 "As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
2885 "functions that return no formal return values."
2886 msgstr ""
2887
2888 # type: textblock
2889 #: ../src/guestfs.pod:1442
2890 msgid ""
2891 "As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
2892 msgstr ""
2893
2894 # type: textblock
2895 #: ../src/guestfs.pod:1445
2896 msgid ""
2897 "In the case of an error, a flag is set in the header, and the reply message "
2898 "is slightly changed:"
2899 msgstr ""
2900
2901 # type: verbatim
2902 #: ../src/guestfs.pod:1448
2903 #, no-wrap
2904 msgid ""
2905 " total length (header + error,\n"
2906 "      but not including the length word itself)\n"
2907 " struct guestfs_message_header (encoded as XDR)\n"
2908 " struct guestfs_message_error (encoded as XDR)\n"
2909 "\n"
2910 msgstr ""
2911
2912 # type: textblock
2913 #: ../src/guestfs.pod:1453
2914 msgid ""
2915 "The C<guestfs_message_error> structure contains the error message as a "
2916 "string."
2917 msgstr ""
2918
2919 # type: =head3
2920 #: ../src/guestfs.pod:1456
2921 msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
2922 msgstr ""
2923
2924 # type: textblock
2925 #: ../src/guestfs.pod:1458
2926 msgid ""
2927 "A C<FileIn> parameter indicates that we transfer a file I<into> the guest.  "
2928 "The normal request message is sent (see above).  However this is followed by "
2929 "a sequence of file chunks."
2930 msgstr ""
2931
2932 # type: verbatim
2933 #: ../src/guestfs.pod:1462
2934 #, no-wrap
2935 msgid ""
2936 " total length (header + arguments,\n"
2937 "      but not including the length word itself,\n"
2938 "      and not including the chunks)\n"
2939 " struct guestfs_message_header (encoded as XDR)\n"
2940 " struct guestfs_<foo>_args (encoded as XDR)\n"
2941 " sequence of chunks for FileIn param #0\n"
2942 " sequence of chunks for FileIn param #1 etc.\n"
2943 "\n"
2944 msgstr ""
2945
2946 # type: textblock
2947 #: ../src/guestfs.pod:1470
2948 msgid "The \"sequence of chunks\" is:"
2949 msgstr ""
2950
2951 # type: verbatim
2952 #: ../src/guestfs.pod:1472
2953 #, no-wrap
2954 msgid ""
2955 " length of chunk (not including length word itself)\n"
2956 " struct guestfs_chunk (encoded as XDR)\n"
2957 " length of chunk\n"
2958 " struct guestfs_chunk (encoded as XDR)\n"
2959 "   ...\n"
2960 " length of chunk\n"
2961 " struct guestfs_chunk (with data.data_len == 0)\n"
2962 "\n"
2963 msgstr ""
2964
2965 # type: textblock
2966 #: ../src/guestfs.pod:1480
2967 msgid ""
2968 "The final chunk has the C<data_len> field set to zero.  Additionally a flag "
2969 "is set in the final chunk to indicate either successful completion or early "
2970 "cancellation."
2971 msgstr ""
2972
2973 # type: textblock
2974 #: ../src/guestfs.pod:1484
2975 msgid ""
2976 "At time of writing there are no functions that have more than one FileIn "
2977 "parameter.  However this is (theoretically) supported, by sending the "
2978 "sequence of chunks for each FileIn parameter one after another (from left to "
2979 "right)."
2980 msgstr ""
2981
2982 # type: textblock
2983 #: ../src/guestfs.pod:1489
2984 msgid ""
2985 "Both the library (sender) I<and> the daemon (receiver) may cancel the "
2986 "transfer.  The library does this by sending a chunk with a special flag set "
2987 "to indicate cancellation.  When the daemon sees this, it cancels the whole "
2988 "RPC, does I<not> send any reply, and goes back to reading the next request."
2989 msgstr ""
2990
2991 # type: textblock
2992 #: ../src/guestfs.pod:1495
2993 msgid ""
2994 "The daemon may also cancel.  It does this by writing a special word "
2995 "C<GUESTFS_CANCEL_FLAG> to the socket.  The library listens for this during "
2996 "the transfer, and if it gets it, it will cancel the transfer (it sends a "
2997 "cancel chunk).  The special word is chosen so that even if cancellation "
2998 "happens right at the end of the transfer (after the library has finished "
2999 "writing and has started listening for the reply), the \"spurious\" cancel "
3000 "flag will not be confused with the reply message."
3001 msgstr ""
3002
3003 # type: textblock
3004 #: ../src/guestfs.pod:1504
3005 msgid ""
3006 "This protocol allows the transfer of arbitrary sized files (no 32 bit "
3007 "limit), and also files where the size is not known in advance (eg. from "
3008 "pipes or sockets).  However the chunks are rather small "
3009 "(C<GUESTFS_MAX_CHUNK_SIZE>), so that neither the library nor the daemon need "
3010 "to keep much in memory."
3011 msgstr ""
3012
3013 # type: =head3
3014 #: ../src/guestfs.pod:1510
3015 msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
3016 msgstr ""
3017
3018 # type: textblock
3019 #: ../src/guestfs.pod:1512
3020 msgid ""
3021 "The protocol for FileOut parameters is exactly the same as for FileIn "
3022 "parameters, but with the roles of daemon and library reversed."
3023 msgstr ""
3024
3025 # type: verbatim
3026 #: ../src/guestfs.pod:1515
3027 #, no-wrap
3028 msgid ""
3029 " total length (header + ret,\n"
3030 "      but not including the length word itself,\n"
3031 "      and not including the chunks)\n"
3032 " struct guestfs_message_header (encoded as XDR)\n"
3033 " struct guestfs_<foo>_ret (encoded as XDR)\n"
3034 " sequence of chunks for FileOut param #0\n"
3035 " sequence of chunks for FileOut param #1 etc.\n"
3036 "\n"
3037 msgstr ""
3038
3039 # type: =head3
3040 #: ../src/guestfs.pod:1523
3041 msgid "INITIAL MESSAGE"
3042 msgstr ""
3043
3044 # type: textblock
3045 #: ../src/guestfs.pod:1525
3046 msgid ""
3047 "When the daemon launches it sends an initial word (C<GUESTFS_LAUNCH_FLAG>) "
3048 "which indicates that the guest and daemon is alive.  This is what L</"
3049 "guestfs_launch> waits for."
3050 msgstr ""
3051
3052 # type: =head3
3053 #: ../src/guestfs.pod:1529
3054 msgid "PROGRESS NOTIFICATION MESSAGES"
3055 msgstr ""
3056
3057 # type: textblock
3058 #: ../src/guestfs.pod:1531
3059 msgid ""
3060 "The daemon may send progress notification messages at any time.  These are "
3061 "distinguished by the normal length word being replaced by "
3062 "C<GUESTFS_PROGRESS_FLAG>, followed by a fixed size progress message."
3063 msgstr ""
3064
3065 # type: textblock
3066 #: ../src/guestfs.pod:1535
3067 msgid ""
3068 "The library turns them into progress callbacks (see "
3069 "C<guestfs_set_progress_callback>) if there is a callback registered, or "
3070 "discards them if not."
3071 msgstr ""
3072
3073 # type: textblock
3074 #: ../src/guestfs.pod:1539
3075 msgid ""
3076 "The daemon self-limits the frequency of progress messages it sends (see "
3077 "C<daemon/proto.c:notify_progress>).  Not all calls generate progress "
3078 "messages."
3079 msgstr ""
3080
3081 # type: =head1
3082 #: ../src/guestfs.pod:1543
3083 msgid "MULTIPLE HANDLES AND MULTIPLE THREADS"
3084 msgstr ""
3085
3086 # type: textblock
3087 #: ../src/guestfs.pod:1545
3088 msgid ""
3089 "All high-level libguestfs actions are synchronous.  If you want to use "
3090 "libguestfs asynchronously then you must create a thread."
3091 msgstr ""
3092
3093 # type: textblock
3094 #: ../src/guestfs.pod:1548
3095 msgid ""
3096 "Only use the handle from a single thread.  Either use the handle exclusively "
3097 "from one thread, or provide your own mutex so that two threads cannot issue "
3098 "calls on the same handle at the same time."
3099 msgstr ""
3100
3101 # type: textblock
3102 #: ../src/guestfs.pod:1552
3103 msgid ""
3104 "See the graphical program guestfs-browser for one possible architecture for "
3105 "multithreaded programs using libvirt and libguestfs."
3106 msgstr ""
3107
3108 # type: =head1
3109 #: ../src/guestfs.pod:1555
3110 msgid "QEMU WRAPPERS"
3111 msgstr ""
3112
3113 # type: textblock
3114 #: ../src/guestfs.pod:1557
3115 msgid ""
3116 "If you want to compile your own qemu, run qemu from a non-standard location, "
3117 "or pass extra arguments to qemu, then you can write a shell-script wrapper "
3118 "around qemu."
3119 msgstr ""
3120
3121 # type: textblock
3122 #: ../src/guestfs.pod:1561
3123 msgid ""
3124 "There is one important rule to remember: you I<must C<exec qemu>> as the "
3125 "last command in the shell script (so that qemu replaces the shell and "
3126 "becomes the direct child of the libguestfs-using program).  If you don't do "
3127 "this, then the qemu process won't be cleaned up correctly."
3128 msgstr ""
3129
3130 # type: textblock
3131 #: ../src/guestfs.pod:1566
3132 msgid ""
3133 "Here is an example of a wrapper, where I have built my own copy of qemu from "
3134 "source:"
3135 msgstr ""
3136
3137 # type: verbatim
3138 #: ../src/guestfs.pod:1569
3139 #, no-wrap
3140 msgid ""
3141 " #!/bin/sh -\n"
3142 " qemudir=/home/rjones/d/qemu\n"
3143 " exec $qemudir/x86_64-softmmu/qemu-system-x86_64 -L $qemudir/pc-bios \"$@\"\n"
3144 "\n"
3145 msgstr ""
3146
3147 # type: textblock
3148 #: ../src/guestfs.pod:1573
3149 msgid ""
3150 "Save this script as C</tmp/qemu.wrapper> (or wherever), C<chmod +x>, and "
3151 "then use it by setting the LIBGUESTFS_QEMU environment variable.  For "
3152 "example:"
3153 msgstr ""
3154
3155 # type: verbatim
3156 #: ../src/guestfs.pod:1577
3157 #, no-wrap
3158 msgid ""
3159 " LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n"
3160 "\n"
3161 msgstr ""
3162
3163 # type: textblock
3164 #: ../src/guestfs.pod:1579
3165 msgid ""
3166 "Note that libguestfs also calls qemu with the -help and -version options in "
3167 "order to determine features."
3168 msgstr ""
3169
3170 # type: =head1
3171 #: ../src/guestfs.pod:1582
3172 msgid "LIBGUESTFS VERSION NUMBERS"
3173 msgstr ""
3174
3175 # type: textblock
3176 #: ../src/guestfs.pod:1584
3177 msgid ""
3178 "Since April 2010, libguestfs has started to make separate development and "
3179 "stable releases, along with corresponding branches in our git repository.  "
3180 "These separate releases can be identified by version number:"
3181 msgstr ""
3182
3183 # type: verbatim
3184 #: ../src/guestfs.pod:1589
3185 #, no-wrap
3186 msgid ""
3187 "                 even numbers for stable: 1.2.x, 1.4.x, ...\n"
3188 "       .-------- odd numbers for development: 1.3.x, 1.5.x, ...\n"
3189 "       |\n"
3190 "       v\n"
3191 " 1  .  3  .  5\n"
3192 " ^           ^\n"
3193 " |           |\n"
3194 " |           `-------- sub-version\n"
3195 " |\n"
3196 " `------ always '1' because we don't change the ABI\n"
3197 "\n"
3198 msgstr ""
3199
3200 # type: textblock
3201 #: ../src/guestfs.pod:1600
3202 msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
3203 msgstr ""
3204
3205 # type: textblock
3206 #: ../src/guestfs.pod:1602
3207 msgid ""
3208 "As time passes we cherry pick fixes from the development branch and backport "
3209 "those into the stable branch, the effect being that the stable branch should "
3210 "get more stable and less buggy over time.  So the stable releases are ideal "
3211 "for people who don't need new features but would just like the software to "
3212 "work."
3213 msgstr ""
3214
3215 # type: textblock
3216 #: ../src/guestfs.pod:1608
3217 msgid "Our criteria for backporting changes are:"
3218 msgstr ""
3219
3220 # type: textblock
3221 #: ../src/guestfs.pod:1614
3222 msgid ""
3223 "Documentation changes which don't affect any code are backported unless the "
3224 "documentation refers to a future feature which is not in stable."
3225 msgstr ""
3226
3227 # type: textblock
3228 #: ../src/guestfs.pod:1620
3229 msgid ""
3230 "Bug fixes which are not controversial, fix obvious problems, and have been "
3231 "well tested are backported."
3232 msgstr ""
3233
3234 # type: textblock
3235 #: ../src/guestfs.pod:1625
3236 msgid ""
3237 "Simple rearrangements of code which shouldn't affect how it works get "
3238 "backported.  This is so that the code in the two branches doesn't get too "
3239 "far out of step, allowing us to backport future fixes more easily."
3240 msgstr ""
3241
3242 # type: textblock
3243 #: ../src/guestfs.pod:1631
3244 msgid ""
3245 "We I<don't> backport new features, new APIs, new tools etc, except in one "
3246 "exceptional case: the new feature is required in order to implement an "
3247 "important bug fix."
3248 msgstr ""
3249
3250 # type: textblock
3251 #: ../src/guestfs.pod:1637
3252 msgid ""
3253 "A new stable branch starts when we think the new features in development are "
3254 "substantial and compelling enough over the current stable branch to warrant "
3255 "it.  When that happens we create new stable and development versions 1.N.0 "
3256 "and 1.(N+1).0 [N is even].  The new dot-oh release won't necessarily be so "
3257 "stable at this point, but by backporting fixes from development, that branch "
3258 "will stabilize over time."
3259 msgstr ""
3260
3261 # type: =head1
3262 #: ../src/guestfs.pod:1645 ../fish/guestfish.pod:933
3263 #: ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:312
3264 #: ../tools/virt-rescue.pl:226
3265 msgid "ENVIRONMENT VARIABLES"
3266 msgstr ""
3267
3268 # type: =item
3269 #: ../src/guestfs.pod:1649 ../fish/guestfish.pod:953
3270 msgid "LIBGUESTFS_APPEND"
3271 msgstr ""
3272
3273 # type: textblock
3274 #: ../src/guestfs.pod:1651 ../fish/guestfish.pod:955
3275 msgid "Pass additional options to the guest kernel."
3276 msgstr ""
3277
3278 # type: =item
3279 #: ../src/guestfs.pod:1653 ../fish/guestfish.pod:957
3280 msgid "LIBGUESTFS_DEBUG"
3281 msgstr ""
3282
3283 # type: textblock
3284 #: ../src/guestfs.pod:1655
3285 msgid ""
3286 "Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages.  This has the same "
3287 "effect as calling C<guestfs_set_verbose (g, 1)>."
3288 msgstr ""
3289
3290 # type: =item
3291 #: ../src/guestfs.pod:1658 ../fish/guestfish.pod:962
3292 msgid "LIBGUESTFS_MEMSIZE"
3293 msgstr ""
3294
3295 # type: textblock
3296 #: ../src/guestfs.pod:1660 ../fish/guestfish.pod:964
3297 msgid ""
3298 "Set the memory allocated to the qemu process, in megabytes.  For example:"
3299 msgstr ""
3300
3301 # type: verbatim
3302 #: ../src/guestfs.pod:1663 ../fish/guestfish.pod:967
3303 #, no-wrap
3304 msgid ""
3305 " LIBGUESTFS_MEMSIZE=700\n"
3306 "\n"
3307 msgstr ""
3308
3309 # type: =item
3310 #: ../src/guestfs.pod:1665 ../fish/guestfish.pod:969
3311 msgid "LIBGUESTFS_PATH"
3312 msgstr ""
3313
3314 # type: textblock
3315 #: ../src/guestfs.pod:1667
3316 msgid ""
3317 "Set the path that libguestfs uses to search for kernel and initrd.img.  See "
3318 "the discussion of paths in section PATH above."
3319 msgstr ""
3320
3321 # type: =item
3322 #: ../src/guestfs.pod:1670 ../fish/guestfish.pod:974
3323 msgid "LIBGUESTFS_QEMU"
3324 msgstr ""
3325
3326 # type: textblock
3327 #: ../src/guestfs.pod:1672 ../fish/guestfish.pod:976
3328 msgid ""
3329 "Set the default qemu binary that libguestfs uses.  If not set, then the qemu "
3330 "which was found at compile time by the configure script is used."
3331 msgstr ""
3332
3333 # type: textblock
3334 #: ../src/guestfs.pod:1676
3335 msgid "See also L</QEMU WRAPPERS> above."
3336 msgstr ""
3337
3338 # type: =item
3339 #: ../src/guestfs.pod:1678 ../fish/guestfish.pod:980
3340 msgid "LIBGUESTFS_TRACE"
3341 msgstr ""
3342
3343 # type: textblock
3344 #: ../src/guestfs.pod:1680
3345 msgid ""
3346 "Set C<LIBGUESTFS_TRACE=1> to enable command traces.  This has the same "
3347 "effect as calling C<guestfs_set_trace (g, 1)>."
3348 msgstr ""
3349
3350 # type: =item
3351 #: ../src/guestfs.pod:1683 ../fish/guestfish.pod:989
3352 msgid "TMPDIR"
3353 msgstr ""
3354
3355 # type: textblock
3356 #: ../src/guestfs.pod:1685 ../fish/guestfish.pod:991
3357 msgid "Location of temporary directory, defaults to C</tmp>."
3358 msgstr ""
3359
3360 # type: textblock
3361 #: ../src/guestfs.pod:1687 ../fish/guestfish.pod:993
3362 msgid ""
3363 "If libguestfs was compiled to use the supermin appliance then each handle "
3364 "will require rather a large amount of space in this directory for short "
3365 "periods of time (~ 80 MB).  You can use C<$TMPDIR> to configure another "
3366 "directory to use in case C</tmp> is not large enough."
3367 msgstr ""
3368
3369 # type: =head1
3370 #: ../src/guestfs.pod:1695 ../fish/guestfish.pod:1051
3371 #: ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:178
3372 #: ../inspector/virt-inspector.pl:846 ../tools/virt-cat.pl:163
3373 #: ../tools/virt-df.pl:482 ../tools/virt-edit.pl:325
3374 #: ../tools/virt-list-filesystems.pl:191 ../tools/virt-list-partitions.pl:229
3375 #: ../tools/virt-ls.pl:210 ../tools/virt-make-fs.pl:527
3376 #: ../tools/virt-rescue.pl:231 ../tools/virt-resize.pl:1390
3377 #: ../tools/virt-tar.pl:257 ../tools/virt-win-reg.pl:461
3378 msgid "SEE ALSO"
3379 msgstr ""
3380
3381 # type: textblock
3382 #: ../src/guestfs.pod:1697
3383 msgid ""
3384 "L<guestfish(1)>, L<guestmount(1)>, L<virt-cat(1)>, L<virt-df(1)>, L<virt-edit"
3385 "(1)>, L<virt-inspector(1)>, L<virt-list-filesystems(1)>, L<virt-list-"
3386 "partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>, L<virt-rescue(1)>, L<virt-"
3387 "tar(1)>, L<virt-win-reg(1)>, L<qemu(1)>, L<febootstrap(1)>, L<hivex(3)>, "
3388 "L<http://libguestfs.org/>."
3389 msgstr ""
3390
3391 # type: textblock
3392 #: ../src/guestfs.pod:1715
3393 msgid ""
3394 "Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
3395 "(8)>, L<disktype(1)>."
3396 msgstr ""
3397
3398 # type: =head1
3399 #: ../src/guestfs.pod:1722 ../tools/virt-make-fs.pl:541
3400 #: ../tools/virt-win-reg.pl:476
3401 msgid "BUGS"
3402 msgstr ""
3403
3404 # type: textblock
3405 #: ../src/guestfs.pod:1724
3406 msgid "To get a list of bugs against libguestfs use this link:"
3407 msgstr ""
3408
3409 # type: textblock
3410 #: ../src/guestfs.pod:1726
3411 msgid ""
3412 "L<https://bugzilla.redhat.com/buglist.cgi?"
3413 "component=libguestfs&product=Virtualization+Tools>"
3414 msgstr ""
3415
3416 # type: textblock
3417 #: ../src/guestfs.pod:1728
3418 msgid "To report a new bug against libguestfs use this link:"
3419 msgstr ""
3420
3421 # type: textblock
3422 #: ../src/guestfs.pod:1730
3423 msgid ""
3424 "L<https://bugzilla.redhat.com/enter_bug.cgi?"
3425 "component=libguestfs&product=Virtualization+Tools>"
3426 msgstr ""
3427
3428 # type: textblock
3429 #: ../src/guestfs.pod:1732
3430 msgid "When reporting a bug, please check:"
3431 msgstr ""
3432
3433 # type: textblock
3434 #: ../src/guestfs.pod:1738
3435 msgid "That the bug hasn't been reported already."
3436 msgstr ""
3437
3438 # type: textblock
3439 #: ../src/guestfs.pod:1742
3440 msgid "That you are testing a recent version."
3441 msgstr ""
3442
3443 # type: textblock
3444 #: ../src/guestfs.pod:1746
3445 msgid "Describe the bug accurately, and give a way to reproduce it."
3446 msgstr ""
3447
3448 # type: textblock
3449 #: ../src/guestfs.pod:1750
3450 msgid ""
3451 "Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
3452 "bug report."
3453 msgstr ""
3454
3455 # type: =head1
3456 #: ../src/guestfs.pod:1755 ../fish/guestfish.pod:1067
3457 #: ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:189
3458 #: ../inspector/virt-inspector.pl:855
3459 msgid "AUTHORS"
3460 msgstr ""
3461
3462 # type: textblock
3463 #: ../src/guestfs.pod:1757 ../fish/guestfish.pod:1069
3464 #: ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:191
3465 msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
3466 msgstr ""
3467
3468 # type: =head1
3469 #: ../src/guestfs.pod:1759 ../fish/guestfish.pod:1071
3470 #: ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:193
3471 #: ../inspector/virt-inspector.pl:861 ../tools/virt-cat.pl:177
3472 #: ../tools/virt-df.pl:495 ../tools/virt-edit.pl:341
3473 #: ../tools/virt-list-filesystems.pl:207 ../tools/virt-list-partitions.pl:244
3474 #: ../tools/virt-ls.pl:225 ../tools/virt-make-fs.pl:556
3475 #: ../tools/virt-rescue.pl:245 ../tools/virt-resize.pl:1411
3476 #: ../tools/virt-tar.pl:272 ../tools/virt-win-reg.pl:491
3477 msgid "COPYRIGHT"
3478 msgstr ""
3479
3480 # type: textblock
3481 #: ../src/guestfs.pod:1761 ../fish/guestfish.pod:1073
3482 msgid "Copyright (C) 2009-2010 Red Hat Inc.  L<http://libguestfs.org/>"
3483 msgstr ""
3484
3485 # type: textblock
3486 #: ../src/guestfs.pod:1764
3487 msgid ""
3488 "This library is free software; you can redistribute it and/or modify it "
3489 "under the terms of the GNU Lesser General Public License as published by the "
3490 "Free Software Foundation; either version 2 of the License, or (at your "
3491 "option) any later version."
3492 msgstr ""
3493
3494 # type: textblock
3495 #: ../src/guestfs.pod:1769
3496 msgid ""
3497 "This library is distributed in the hope that it will be useful, but WITHOUT "
3498 "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
3499 "FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License "
3500 "for more details."
3501 msgstr ""
3502
3503 # type: textblock
3504 #: ../src/guestfs.pod:1774
3505 msgid ""
3506 "You should have received a copy of the GNU Lesser General Public License "
3507 "along with this library; if not, write to the Free Software Foundation, "
3508 "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
3509 msgstr ""
3510
3511 # type: =head2
3512 #: ../src/guestfs-actions.pod:1
3513 msgid "guestfs_add_cdrom"
3514 msgstr ""
3515
3516 # type: verbatim
3517 #: ../src/guestfs-actions.pod:3
3518 #, no-wrap
3519 msgid ""
3520 " int guestfs_add_cdrom (guestfs_h *g,\n"
3521 "\t\tconst char *filename);\n"
3522 "\n"
3523 msgstr ""
3524
3525 # type: textblock
3526 #: ../src/guestfs-actions.pod:6 ../fish/guestfish-actions.pod:5
3527 msgid "This function adds a virtual CD-ROM disk image to the guest."
3528 msgstr ""
3529
3530 # type: textblock
3531 #: ../src/guestfs-actions.pod:8 ../fish/guestfish-actions.pod:7
3532 msgid "This is equivalent to the qemu parameter C<-cdrom filename>."
3533 msgstr ""
3534
3535 # type: textblock
3536 #: ../src/guestfs-actions.pod:10 ../src/guestfs-actions.pod:1488
3537 #: ../fish/guestfish-actions.pod:9 ../fish/guestfish-actions.pod:1186
3538 msgid "Notes:"
3539 msgstr ""
3540
3541 # type: textblock
3542 #: ../src/guestfs-actions.pod:16
3543 msgid ""
3544 "This call checks for the existence of C<filename>.  This stops you from "
3545 "specifying other types of drive which are supported by qemu such as C<nbd:> "
3546 "and C<http:> URLs.  To specify those, use the general C<guestfs_config> call "
3547 "instead."
3548 msgstr ""
3549
3550 # type: textblock
3551 #: ../src/guestfs-actions.pod:23
3552 msgid ""
3553 "If you just want to add an ISO file (often you use this as an efficient way "
3554 "to transfer large files into the guest), then you should probably use "
3555 "C<guestfs_add_drive_ro> instead."
3556 msgstr ""
3557
3558 # type: textblock
3559 #: ../src/guestfs-actions.pod:29 ../src/guestfs-actions.pod:63
3560 #: ../src/guestfs-actions.pod:92 ../src/guestfs-actions.pod:103
3561 #: ../src/guestfs-actions.pod:114 ../src/guestfs-actions.pod:124
3562 #: ../src/guestfs-actions.pod:135 ../src/guestfs-actions.pod:238
3563 #: ../src/guestfs-actions.pod:255 ../src/guestfs-actions.pod:266
3564 #: ../src/guestfs-actions.pod:302 ../src/guestfs-actions.pod:324
3565 #: ../src/guestfs-actions.pod:339 ../src/guestfs-actions.pod:403
3566 #: ../src/guestfs-actions.pod:430 ../src/guestfs-actions.pod:441
3567 #: ../src/guestfs-actions.pod:453 ../src/guestfs-actions.pod:534
3568 #: ../src/guestfs-actions.pod:549 ../src/guestfs-actions.pod:560
3569 #: ../src/guestfs-actions.pod:571 ../src/guestfs-actions.pod:717
3570 #: ../src/guestfs-actions.pod:734 ../src/guestfs-actions.pod:749
3571 #: ../src/guestfs-actions.pod:824 ../src/guestfs-actions.pod:839
3572 #: ../src/guestfs-actions.pod:855 ../src/guestfs-actions.pod:866
3573 #: ../src/guestfs-actions.pod:883 ../src/guestfs-actions.pod:916
3574 #: ../src/guestfs-actions.pod:974 ../src/guestfs-actions.pod:996
3575 #: ../src/guestfs-actions.pod:1027 ../src/guestfs-actions.pod:1115
3576 #: ../src/guestfs-actions.pod:1146 ../src/guestfs-actions.pod:1346
3577 #: ../src/guestfs-actions.pod:1365 ../src/guestfs-actions.pod:1446
3578 #: ../src/guestfs-actions.pod:1794 ../src/guestfs-actions.pod:1917
3579 #: ../src/guestfs-actions.pod:1972 ../src/guestfs-actions.pod:2002
3580 #: ../src/guestfs-actions.pod:2411 ../src/guestfs-actions.pod:2423
3581 #: ../src/guestfs-actions.pod:2440 ../src/guestfs-actions.pod:2548
3582 #: ../src/guestfs-actions.pod:2559 ../src/guestfs-actions.pod:2569
3583 #: ../src/guestfs-actions.pod:2580 ../src/guestfs-actions.pod:2592
3584 #: ../src/guestfs-actions.pod:2622 ../src/guestfs-actions.pod:2686
3585 #: ../src/guestfs-actions.pod:2703 ../src/guestfs-actions.pod:2717
3586 #: ../src/guestfs-actions.pod:2737 ../src/guestfs-actions.pod:2757
3587 #: ../src/guestfs-actions.pod:2786 ../src/guestfs-actions.pod:2802
3588 #: ../src/guestfs-actions.pod:2818 ../src/guestfs-actions.pod:2830
3589 #: ../src/guestfs-actions.pod:2839 ../src/guestfs-actions.pod:2872
3590 #: ../src/guestfs-actions.pod:2885 ../src/guestfs-actions.pod:2895
3591 #: ../src/guestfs-actions.pod:2907 ../src/guestfs-actions.pod:2921
3592 #: ../src/guestfs-actions.pod:3001 ../src/guestfs-actions.pod:3018
3593 #: ../src/guestfs-actions.pod:3028 ../src/guestfs-actions.pod:3073
3594 #: ../src/guestfs-actions.pod:3088 ../src/guestfs-actions.pod:3103
3595 #: ../src/guestfs-actions.pod:3116 ../src/guestfs-actions.pod:3127
3596 #: ../src/guestfs-actions.pod:3138 ../src/guestfs-actions.pod:3152
3597 #: ../src/guestfs-actions.pod:3164 ../src/guestfs-actions.pod:3181
3598 #: ../src/guestfs-actions.pod:3212 ../src/guestfs-actions.pod:3240
3599 #: ../src/guestfs-actions.pod:3256 ../src/guestfs-actions.pod:3272
3600 #: ../src/guestfs-actions.pod:3281 ../src/guestfs-actions.pod:3295
3601 #: ../src/guestfs-actions.pod:3305 ../src/guestfs-actions.pod:3317
3602 #: ../src/guestfs-actions.pod:3329 ../src/guestfs-actions.pod:3361
3603 #: ../src/guestfs-actions.pod:3373 ../src/guestfs-actions.pod:3390
3604 #: ../src/guestfs-actions.pod:3401 ../src/guestfs-actions.pod:3415
3605 #: ../src/guestfs-actions.pod:3455 ../src/guestfs-actions.pod:3486
3606 #: ../src/guestfs-actions.pod:3497 ../src/guestfs-actions.pod:3522
3607 #: ../src/guestfs-actions.pod:3536 ../src/guestfs-actions.pod:3551
3608 #: ../src/guestfs-actions.pod:3673 ../src/guestfs-actions.pod:3725
3609 #: ../src/guestfs-actions.pod:3744 ../src/guestfs-actions.pod:3759
3610 #: ../src/guestfs-actions.pod:3785 ../src/guestfs-actions.pod:3819
3611 #: ../src/guestfs-actions.pod:3833 ../src/guestfs-actions.pod:3843
3612 #: ../src/guestfs-actions.pod:3854 ../src/guestfs-actions.pod:4086
3613 #: ../src/guestfs-actions.pod:4102 ../src/guestfs-actions.pod:4113
3614 #: ../src/guestfs-actions.pod:4122 ../src/guestfs-actions.pod:4133
3615 #: ../src/guestfs-actions.pod:4142 ../src/guestfs-actions.pod:4153
3616 #: ../src/guestfs-actions.pod:4166 ../src/guestfs-actions.pod:4184
3617 #: ../src/guestfs-actions.pod:4200 ../src/guestfs-actions.pod:4216
3618 #: ../src/guestfs-actions.pod:4231 ../src/guestfs-actions.pod:4251
3619 #: ../src/guestfs-actions.pod:4266 ../src/guestfs-actions.pod:4282
3620 #: ../src/guestfs-actions.pod:4300 ../src/guestfs-actions.pod:4316
3621 #: ../src/guestfs-actions.pod:4330 ../src/guestfs-actions.pod:4355
3622 #: ../src/guestfs-actions.pod:4376 ../src/guestfs-actions.pod:4392
3623 #: ../src/guestfs-actions.pod:4413 ../src/guestfs-actions.pod:4425
3624 #: ../src/guestfs-actions.pod:4437 ../src/guestfs-actions.pod:4453
3625 #: ../src/guestfs-actions.pod:4487 ../src/guestfs-actions.pod:4507
3626 #: ../src/guestfs-actions.pod:4530 ../src/guestfs-actions.pod:4620
3627 #: ../src/guestfs-actions.pod:4726 ../src/guestfs-actions.pod:4735
3628 #: ../src/guestfs-actions.pod:4745 ../src/guestfs-actions.pod:4755
3629 #: ../src/guestfs-actions.pod:4774 ../src/guestfs-actions.pod:4784
3630 #: ../src/guestfs-actions.pod:4794 ../src/guestfs-actions.pod:4804
3631 #: ../src/guestfs-actions.pod:4816 ../src/guestfs-actions.pod:4866
3632 #: ../src/guestfs-actions.pod:4880 ../src/guestfs-actions.pod:4893
3633 #: ../src/guestfs-actions.pod:4906 ../src/guestfs-actions.pod:4920
3634 #: ../src/guestfs-actions.pod:4930 ../src/guestfs-actions.pod:4947
3635 #: ../src/guestfs-actions.pod:4977 ../src/guestfs-actions.pod:4988
3636 #: ../src/guestfs-actions.pod:5023 ../src/guestfs-actions.pod:5033
3637 #: ../src/guestfs-actions.pod:5048 ../src/guestfs-actions.pod:5076
3638 #: ../src/guestfs-actions.pod:5180 ../src/guestfs-actions.pod:5195
3639 #: ../src/guestfs-actions.pod:5206 ../src/guestfs-actions.pod:5252
3640 #: ../src/guestfs-actions.pod:5262 ../src/guestfs-actions.pod:5299
3641 #: ../src/guestfs-actions.pod:5326 ../src/guestfs-actions.pod:5368
3642 #: ../src/guestfs-actions.pod:5391 ../src/guestfs-actions.pod:5448
3643 #: ../src/guestfs-actions.pod:5464 ../src/guestfs-actions.pod:5490
3644 msgid "This function returns 0 on success or -1 on error."
3645 msgstr ""
3646
3647 # type: =head2
3648 #: ../src/guestfs-actions.pod:31
3649 msgid "guestfs_add_drive"
3650 msgstr ""
3651
3652 # type: verbatim
3653 #: ../src/guestfs-actions.pod:33
3654 #, no-wrap
3655 msgid ""
3656 " int guestfs_add_drive (guestfs_h *g,\n"
3657 "\t\tconst char *filename);\n"
3658 "\n"
3659 msgstr ""
3660
3661 # type: textblock
3662 #: ../src/guestfs-actions.pod:36 ../fish/guestfish-actions.pod:32
3663 msgid ""
3664 "This function adds a virtual machine disk image C<filename> to the guest.  "
3665 "The first time you call this function, the disk appears as IDE disk 0 (C</"
3666 "dev/sda>) in the guest, the second time as C</dev/sdb>, and so on."
3667 msgstr ""
3668
3669 # type: textblock
3670 #: ../src/guestfs-actions.pod:41 ../fish/guestfish-actions.pod:37
3671 msgid ""
3672 "You don't necessarily need to be root when using libguestfs.  However you "
3673 "obviously do need sufficient permissions to access the filename for whatever "
3674 "operations you want to perform (ie. read access if you just want to read the "
3675 "image or write access if you want to modify the image)."
3676 msgstr ""
3677
3678 # type: textblock
3679 #: ../src/guestfs-actions.pod:47 ../fish/guestfish-actions.pod:43
3680 msgid ""
3681 "This is equivalent to the qemu parameter C<-drive file=filename,cache=off,"
3682 "if=...>."
3683 msgstr ""
3684
3685 # type: textblock
3686 #: ../src/guestfs-actions.pod:50 ../fish/guestfish-actions.pod:46
3687 msgid ""
3688 "C<cache=off> is omitted in cases where it is not supported by the underlying "
3689 "filesystem."
3690 msgstr ""
3691
3692 # type: textblock
3693 #: ../src/guestfs-actions.pod:53 ../src/guestfs-actions.pod:82
3694 msgid ""
3695 "C<if=...> is set at compile time by the configuration option C<./configure --"
3696 "with-drive-if=...>.  In the rare case where you might need to change this at "
3697 "run time, use C<guestfs_add_drive_with_if> or "
3698 "C<guestfs_add_drive_ro_with_if>."
3699 msgstr ""
3700
3701 # type: textblock
3702 #: ../src/guestfs-actions.pod:58 ../src/guestfs-actions.pod:87
3703 msgid ""
3704 "Note that this call checks for the existence of C<filename>.  This stops you "
3705 "from specifying other types of drive which are supported by qemu such as "
3706 "C<nbd:> and C<http:> URLs.  To specify those, use the general "
3707 "C<guestfs_config> call instead."
3708 msgstr ""
3709
3710 # type: =head2
3711 #: ../src/guestfs-actions.pod:65
3712 msgid "guestfs_add_drive_ro"
3713 msgstr ""
3714
3715 # type: verbatim
3716 #: ../src/guestfs-actions.pod:67
3717 #, no-wrap
3718 msgid ""
3719 " int guestfs_add_drive_ro (guestfs_h *g,\n"
3720 "\t\tconst char *filename);\n"
3721 "\n"
3722 msgstr ""
3723
3724 # type: textblock
3725 #: ../src/guestfs-actions.pod:70 ../fish/guestfish-actions.pod:63
3726 msgid "This adds a drive in snapshot mode, making it effectively read-only."
3727 msgstr ""
3728
3729 # type: textblock
3730 #: ../src/guestfs-actions.pod:73 ../fish/guestfish-actions.pod:66
3731 msgid ""
3732 "Note that writes to the device are allowed, and will be seen for the "
3733 "duration of the guestfs handle, but they are written to a temporary file "
3734 "which is discarded as soon as the guestfs handle is closed.  We don't "
3735 "currently have any method to enable changes to be committed, although qemu "
3736 "can support this."
3737 msgstr ""
3738
3739 # type: textblock
3740 #: ../src/guestfs-actions.pod:79 ../fish/guestfish-actions.pod:72
3741 msgid ""
3742 "This is equivalent to the qemu parameter C<-drive file=filename,snapshot=on,"
3743 "if=...>."
3744 msgstr ""
3745
3746 # type: =head2
3747 #: ../src/guestfs-actions.pod:94
3748 msgid "guestfs_add_drive_ro_with_if"
3749 msgstr ""
3750
3751 # type: verbatim
3752 #: ../src/guestfs-actions.pod:96
3753 #, no-wrap
3754 msgid ""
3755 " int guestfs_add_drive_ro_with_if (guestfs_h *g,\n"
3756 "\t\tconst char *filename,\n"
3757 "\t\tconst char *iface);\n"
3758 "\n"
3759 msgstr ""
3760
3761 # type: textblock
3762 #: ../src/guestfs-actions.pod:100
3763 msgid ""
3764 "This is the same as C<guestfs_add_drive_ro> but it allows you to specify the "
3765 "QEMU interface emulation to use at run time."
3766 msgstr ""
3767
3768 # type: =head2
3769 #: ../src/guestfs-actions.pod:105
3770 msgid "guestfs_add_drive_with_if"
3771 msgstr ""
3772
3773 # type: verbatim
3774 #: ../src/guestfs-actions.pod:107
3775 #, no-wrap
3776 msgid ""
3777 " int guestfs_add_drive_with_if (guestfs_h *g,\n"
3778 "\t\tconst char *filename,\n"
3779 "\t\tconst char *iface);\n"
3780 "\n"
3781 msgstr ""
3782
3783 # type: textblock
3784 #: ../src/guestfs-actions.pod:111
3785 msgid ""
3786 "This is the same as C<guestfs_add_drive> but it allows you to specify the "
3787 "QEMU interface emulation to use at run time."
3788 msgstr ""
3789
3790 # type: =head2
3791 #: ../src/guestfs-actions.pod:116
3792 msgid "guestfs_aug_clear"
3793 msgstr ""
3794
3795 # type: verbatim
3796 #: ../src/guestfs-actions.pod:118
3797 #, no-wrap
3798 msgid ""
3799 " int guestfs_aug_clear (guestfs_h *g,\n"
3800 "\t\tconst char *augpath);\n"
3801 "\n"
3802 msgstr ""
3803
3804 # type: textblock
3805 #: ../src/guestfs-actions.pod:121 ../fish/guestfish-actions.pod:103
3806 msgid ""
3807 "Set the value associated with C<path> to C<NULL>.  This is the same as the "
3808 "L<augtool(1)> C<clear> command."
3809 msgstr ""
3810
3811 # type: =head2
3812 #: ../src/guestfs-actions.pod:126
3813 msgid "guestfs_aug_close"
3814 msgstr ""
3815
3816 # type: verbatim
3817 #: ../src/guestfs-actions.pod:128
3818 #, no-wrap
3819 msgid ""
3820 " int guestfs_aug_close (guestfs_h *g);\n"
3821 "\n"
3822 msgstr ""
3823
3824 # type: textblock
3825 #: ../src/guestfs-actions.pod:130
3826 msgid ""
3827 "Close the current Augeas handle and free up any resources used by it.  After "
3828 "calling this, you have to call C<guestfs_aug_init> again before you can use "
3829 "any other Augeas functions."
3830 msgstr ""
3831
3832 # type: =head2
3833 #: ../src/guestfs-actions.pod:137
3834 msgid "guestfs_aug_defnode"
3835 msgstr ""
3836
3837 # type: verbatim
3838 #: ../src/guestfs-actions.pod:139
3839 #, no-wrap
3840 msgid ""
3841 " struct guestfs_int_bool *guestfs_aug_defnode (guestfs_h *g,\n"
3842 "\t\tconst char *name,\n"
3843 "\t\tconst char *expr,\n"
3844 "\t\tconst char *val);\n"
3845 "\n"
3846 msgstr ""
3847
3848 # type: textblock
3849 #: ../src/guestfs-actions.pod:144 ../fish/guestfish-actions.pod:119
3850 msgid ""
3851 "Defines a variable C<name> whose value is the result of evaluating C<expr>."
3852 msgstr ""
3853
3854 # type: textblock
3855 #: ../src/guestfs-actions.pod:147
3856 msgid ""
3857 "If C<expr> evaluates to an empty nodeset, a node is created, equivalent to "
3858 "calling C<guestfs_aug_set> C<expr>, C<value>.  C<name> will be the nodeset "
3859 "containing that single node."
3860 msgstr ""
3861
3862 # type: textblock
3863 #: ../src/guestfs-actions.pod:151 ../fish/guestfish-actions.pod:126
3864 msgid ""
3865 "On success this returns a pair containing the number of nodes in the "
3866 "nodeset, and a boolean flag if a node was created."
3867 msgstr ""
3868
3869 # type: textblock
3870 #: ../src/guestfs-actions.pod:155
3871 msgid ""
3872 "This function returns a C<struct guestfs_int_bool *>, or NULL if there was "
3873 "an error.  I<The caller must call C<guestfs_free_int_bool> after use>."
3874 msgstr ""
3875
3876 # type: =head2
3877 #: ../src/guestfs-actions.pod:159
3878 msgid "guestfs_aug_defvar"
3879 msgstr ""
3880
3881 # type: verbatim
3882 #: ../src/guestfs-actions.pod:161
3883 #, no-wrap
3884 msgid ""
3885 " int guestfs_aug_defvar (guestfs_h *g,\n"
3886 "\t\tconst char *name,\n"
3887 "\t\tconst char *expr);\n"
3888 "\n"
3889 msgstr ""
3890
3891 # type: textblock
3892 #: ../src/guestfs-actions.pod:165 ../fish/guestfish-actions.pod:134
3893 msgid ""
3894 "Defines an Augeas variable C<name> whose value is the result of evaluating "
3895 "C<expr>.  If C<expr> is NULL, then C<name> is undefined."
3896 msgstr ""
3897
3898 # type: textblock
3899 #: ../src/guestfs-actions.pod:169 ../fish/guestfish-actions.pod:138
3900 msgid ""
3901 "On success this returns the number of nodes in C<expr>, or C<0> if C<expr> "
3902 "evaluates to something which is not a nodeset."
3903 msgstr ""
3904
3905 # type: textblock
3906 #: ../src/guestfs-actions.pod:172 ../src/guestfs-actions.pod:313
3907 #: ../src/guestfs-actions.pod:467 ../src/guestfs-actions.pod:492
3908 #: ../src/guestfs-actions.pod:507 ../src/guestfs-actions.pod:523
3909 #: ../src/guestfs-actions.pod:1013 ../src/guestfs-actions.pod:1328
3910 #: ../src/guestfs-actions.pod:1510 ../src/guestfs-actions.pod:1591
3911 #: ../src/guestfs-actions.pod:1622 ../src/guestfs-actions.pod:1665
3912 #: ../src/guestfs-actions.pod:1682 ../src/guestfs-actions.pod:1907
3913 #: ../src/guestfs-actions.pod:2119 ../src/guestfs-actions.pod:2137
3914 #: ../src/guestfs-actions.pod:3475 ../src/guestfs-actions.pod:3582
3915 #: ../src/guestfs-actions.pod:3913 ../src/guestfs-actions.pod:5012
3916 #: ../src/guestfs-actions.pod:5336 ../src/guestfs-actions.pod:5346
3917 #: ../src/guestfs-actions.pod:5356
3918 msgid "On error this function returns -1."
3919 msgstr ""
3920
3921 # type: =head2
3922 #: ../src/guestfs-actions.pod:174
3923 msgid "guestfs_aug_get"
3924 msgstr ""
3925
3926 # type: verbatim
3927 #: ../src/guestfs-actions.pod:176
3928 #, no-wrap
3929 msgid ""
3930 " char *guestfs_aug_get (guestfs_h *g,\n"
3931 "\t\tconst char *augpath);\n"
3932 "\n"
3933 msgstr ""
3934
3935 # type: textblock
3936 #: ../src/guestfs-actions.pod:179 ../fish/guestfish-actions.pod:145
3937 msgid ""
3938 "Look up the value associated with C<path>.  If C<path> matches exactly one "
3939 "node, the C<value> is returned."
3940 msgstr ""
3941
3942 # type: textblock
3943 #: ../src/guestfs-actions.pod:182 ../src/guestfs-actions.pod:610
3944 #: ../src/guestfs-actions.pod:625 ../src/guestfs-actions.pod:682
3945 #: ../src/guestfs-actions.pod:695 ../src/guestfs-actions.pod:786
3946 #: ../src/guestfs-actions.pod:899 ../src/guestfs-actions.pod:928
3947 #: ../src/guestfs-actions.pod:942 ../src/guestfs-actions.pod:958
3948 #: ../src/guestfs-actions.pod:1041 ../src/guestfs-actions.pod:1205
3949 #: ../src/guestfs-actions.pod:1314 ../src/guestfs-actions.pod:1459
3950 #: ../src/guestfs-actions.pod:1473 ../src/guestfs-actions.pod:1549
3951 #: ../src/guestfs-actions.pod:1567 ../src/guestfs-actions.pod:1701
3952 #: ../src/guestfs-actions.pod:1840 ../src/guestfs-actions.pod:2021
3953 #: ../src/guestfs-actions.pod:2071 ../src/guestfs-actions.pod:2187
3954 #: ../src/guestfs-actions.pod:2222 ../src/guestfs-actions.pod:2537
3955 #: ../src/guestfs-actions.pod:2958 ../src/guestfs-actions.pod:3054
3956 #: ../src/guestfs-actions.pod:3597 ../src/guestfs-actions.pod:3773
3957 #: ../src/guestfs-actions.pod:3891 ../src/guestfs-actions.pod:4029
3958 #: ../src/guestfs-actions.pod:4072 ../src/guestfs-actions.pod:4548
3959 #: ../src/guestfs-actions.pod:4561 ../src/guestfs-actions.pod:4575
3960 #: ../src/guestfs-actions.pod:4596 ../src/guestfs-actions.pod:5129
3961 #: ../src/guestfs-actions.pod:5145 ../src/guestfs-actions.pod:5160
3962 #: ../src/guestfs-actions.pod:5308 ../src/guestfs-actions.pod:5538
3963 msgid ""
3964 "This function returns a string, or NULL on error.  I<The caller must free "
3965 "the returned string after use>."
3966 msgstr ""
3967
3968 # type: =head2
3969 #: ../src/guestfs-actions.pod:185
3970 msgid "guestfs_aug_init"
3971 msgstr ""
3972
3973 # type: verbatim
3974 #: ../src/guestfs-actions.pod:187
3975 #, no-wrap
3976 msgid ""
3977 " int guestfs_aug_init (guestfs_h *g,\n"
3978 "\t\tconst char *root,\n"
3979 "\t\tint flags);\n"
3980 "\n"
3981 msgstr ""
3982
3983 # type: textblock
3984 #: ../src/guestfs-actions.pod:191 ../fish/guestfish-actions.pod:152
3985 msgid ""
3986 "Create a new Augeas handle for editing configuration files.  If there was "
3987 "any previous Augeas handle associated with this guestfs session, then it is "
3988 "closed."
3989 msgstr ""
3990
3991 # type: textblock
3992 #: ../src/guestfs-actions.pod:195
3993 msgid "You must call this before using any other C<guestfs_aug_*> commands."
3994 msgstr ""
3995
3996 # type: textblock
3997 #: ../src/guestfs-actions.pod:198 ../fish/guestfish-actions.pod:159
3998 msgid ""
3999 "C<root> is the filesystem root.  C<root> must not be NULL, use C</> instead."
4000 msgstr ""
4001
4002 # type: textblock
4003 #: ../src/guestfs-actions.pod:201 ../fish/guestfish-actions.pod:162
4004 msgid ""
4005 "The flags are the same as the flags defined in E<lt>augeas.hE<gt>, the "
4006 "logical I<or> of the following integers:"
4007 msgstr ""
4008
4009 # type: =item
4010 #: ../src/guestfs-actions.pod:207 ../fish/guestfish-actions.pod:168
4011 msgid "C<AUG_SAVE_BACKUP> = 1"
4012 msgstr ""
4013
4014 # type: textblock
4015 #: ../src/guestfs-actions.pod:209 ../fish/guestfish-actions.pod:170
4016 msgid "Keep the original file with a C<.augsave> extension."
4017 msgstr ""
4018
4019 # type: =item
4020 #: ../src/guestfs-actions.pod:211 ../fish/guestfish-actions.pod:172
4021 msgid "C<AUG_SAVE_NEWFILE> = 2"
4022 msgstr ""
4023
4024 # type: textblock
4025 #: ../src/guestfs-actions.pod:213 ../fish/guestfish-actions.pod:174
4026 msgid ""
4027 "Save changes into a file with extension C<.augnew>, and do not overwrite "
4028 "original.  Overrides C<AUG_SAVE_BACKUP>."
4029 msgstr ""
4030
4031 # type: =item
4032 #: ../src/guestfs-actions.pod:216 ../fish/guestfish-actions.pod:177
4033 msgid "C<AUG_TYPE_CHECK> = 4"
4034 msgstr ""
4035
4036 # type: textblock
4037 #: ../src/guestfs-actions.pod:218 ../fish/guestfish-actions.pod:179
4038 msgid "Typecheck lenses (can be expensive)."
4039 msgstr ""
4040
4041 # type: =item
4042 #: ../src/guestfs-actions.pod:220 ../fish/guestfish-actions.pod:181
4043 msgid "C<AUG_NO_STDINC> = 8"
4044 msgstr ""
4045
4046 # type: textblock
4047 #: ../src/guestfs-actions.pod:222 ../fish/guestfish-actions.pod:183
4048 msgid "Do not use standard load path for modules."
4049 msgstr ""
4050
4051 # type: =item
4052 #: ../src/guestfs-actions.pod:224 ../fish/guestfish-actions.pod:185
4053 msgid "C<AUG_SAVE_NOOP> = 16"
4054 msgstr ""
4055
4056 # type: textblock
4057 #: ../src/guestfs-actions.pod:226 ../fish/guestfish-actions.pod:187
4058 msgid "Make save a no-op, just record what would have been changed."
4059 msgstr ""
4060
4061 # type: =item
4062 #: ../src/guestfs-actions.pod:228 ../fish/guestfish-actions.pod:189
4063 msgid "C<AUG_NO_LOAD> = 32"
4064 msgstr ""
4065
4066 # type: textblock
4067 #: ../src/guestfs-actions.pod:230
4068 msgid "Do not load the tree in C<guestfs_aug_init>."
4069 msgstr ""
4070
4071 # type: textblock
4072 #: ../src/guestfs-actions.pod:234
4073 msgid "To close the handle, you can call C<guestfs_aug_close>."
4074 msgstr ""
4075
4076 # type: textblock
4077 #: ../src/guestfs-actions.pod:236 ../fish/guestfish-actions.pod:197
4078 msgid "To find out more about Augeas, see L<http://augeas.net/>."
4079 msgstr ""
4080
4081 # type: =head2
4082 #: ../src/guestfs-actions.pod:240
4083 msgid "guestfs_aug_insert"
4084 msgstr ""
4085
4086 # type: verbatim
4087 #: ../src/guestfs-actions.pod:242
4088 #, no-wrap
4089 msgid ""
4090 " int guestfs_aug_insert (guestfs_h *g,\n"
4091 "\t\tconst char *augpath,\n"
4092 "\t\tconst char *label,\n"
4093 "\t\tint before);\n"
4094 "\n"
4095 msgstr ""
4096
4097 # type: textblock
4098 #: ../src/guestfs-actions.pod:247 ../fish/guestfish-actions.pod:203
4099 msgid ""
4100 "Create a new sibling C<label> for C<path>, inserting it into the tree before "
4101 "or after C<path> (depending on the boolean flag C<before>)."
4102 msgstr ""
4103
4104 # type: textblock
4105 #: ../src/guestfs-actions.pod:251 ../fish/guestfish-actions.pod:207
4106 msgid ""
4107 "C<path> must match exactly one existing node in the tree, and C<label> must "
4108 "be a label, ie. not contain C</>, C<*> or end with a bracketed index C<[N]>."
4109 msgstr ""
4110
4111 # type: =head2
4112 #: ../src/guestfs-actions.pod:257
4113 msgid "guestfs_aug_load"
4114 msgstr ""
4115
4116 # type: verbatim
4117 #: ../src/guestfs-actions.pod:259
4118 #, no-wrap
4119 msgid ""
4120 " int guestfs_aug_load (guestfs_h *g);\n"
4121 "\n"
4122 msgstr ""
4123
4124 # type: textblock
4125 #: ../src/guestfs-actions.pod:261 ../fish/guestfish-actions.pod:215
4126 msgid "Load files into the tree."
4127 msgstr ""
4128
4129 # type: textblock
4130 #: ../src/guestfs-actions.pod:263 ../fish/guestfish-actions.pod:217
4131 msgid "See C<aug_load> in the Augeas documentation for the full gory details."
4132 msgstr ""
4133
4134 # type: =head2
4135 #: ../src/guestfs-actions.pod:268
4136 msgid "guestfs_aug_ls"
4137 msgstr ""
4138
4139 # type: verbatim
4140 #: ../src/guestfs-actions.pod:270
4141 #, no-wrap
4142 msgid ""
4143 " char **guestfs_aug_ls (guestfs_h *g,\n"
4144 "\t\tconst char *augpath);\n"
4145 "\n"
4146 msgstr ""
4147
4148 # type: textblock
4149 #: ../src/guestfs-actions.pod:273
4150 msgid ""
4151 "This is just a shortcut for listing C<guestfs_aug_match> C<path/*> and "
4152 "sorting the resulting nodes into alphabetical order."
4153 msgstr ""
4154
4155 # type: textblock
4156 #: ../src/guestfs-actions.pod:276 ../src/guestfs-actions.pod:289
4157 #: ../src/guestfs-actions.pod:417 ../src/guestfs-actions.pod:802
4158 #: ../src/guestfs-actions.pod:1053 ../src/guestfs-actions.pod:1069
4159 #: ../src/guestfs-actions.pod:1157 ../src/guestfs-actions.pod:1173
4160 #: ../src/guestfs-actions.pod:1404 ../src/guestfs-actions.pod:1738
4161 #: ../src/guestfs-actions.pod:1751 ../src/guestfs-actions.pod:1767
4162 #: ../src/guestfs-actions.pod:1804 ../src/guestfs-actions.pod:1825
4163 #: ../src/guestfs-actions.pod:1887 ../src/guestfs-actions.pod:1927
4164 #: ../src/guestfs-actions.pod:2093 ../src/guestfs-actions.pod:2261
4165 #: ../src/guestfs-actions.pod:2466 ../src/guestfs-actions.pod:2522
4166 #: ../src/guestfs-actions.pod:2606 ../src/guestfs-actions.pod:2935
4167 #: ../src/guestfs-actions.pod:3442 ../src/guestfs-actions.pod:3868
4168 #: ../src/guestfs-actions.pod:3954 ../src/guestfs-actions.pod:4060
4169 #: ../src/guestfs-actions.pod:4609 ../src/guestfs-actions.pod:4658
4170 #: ../src/guestfs-actions.pod:4710 ../src/guestfs-actions.pod:4826
4171 #: ../src/guestfs-actions.pod:4847 ../src/guestfs-actions.pod:5221
4172 #: ../src/guestfs-actions.pod:5238 ../src/guestfs-actions.pod:5276
4173 #: ../src/guestfs-actions.pod:5412 ../src/guestfs-actions.pod:5428
4174 #: ../src/guestfs-actions.pod:5501 ../src/guestfs-actions.pod:5517
4175 #: ../src/guestfs-actions.pod:5557 ../src/guestfs-actions.pod:5573
4176 msgid ""
4177 "This function returns a NULL-terminated array of strings (like L<environ(3)"
4178 ">), or NULL if there was an error.  I<The caller must free the strings and "
4179 "the array after use>."
4180 msgstr ""
4181
4182 # type: =head2
4183 #: ../src/guestfs-actions.pod:280
4184 msgid "guestfs_aug_match"
4185 msgstr ""
4186
4187 # type: verbatim
4188 #: ../src/guestfs-actions.pod:282
4189 #, no-wrap
4190 msgid ""
4191 " char **guestfs_aug_match (guestfs_h *g,\n"
4192 "\t\tconst char *augpath);\n"
4193 "\n"
4194 msgstr ""
4195
4196 # type: textblock
4197 #: ../src/guestfs-actions.pod:285 ../fish/guestfish-actions.pod:231
4198 msgid ""
4199 "Returns a list of paths which match the path expression C<path>.  The "
4200 "returned paths are sufficiently qualified so that they match exactly one "
4201 "node in the current tree."
4202 msgstr ""
4203
4204 # type: =head2
4205 #: ../src/guestfs-actions.pod:293
4206 msgid "guestfs_aug_mv"
4207 msgstr ""
4208
4209 # type: verbatim
4210 #: ../src/guestfs-actions.pod:295
4211 #, no-wrap
4212 msgid ""
4213 " int guestfs_aug_mv (guestfs_h *g,\n"
4214 "\t\tconst char *src,\n"
4215 "\t\tconst char *dest);\n"
4216 "\n"
4217 msgstr ""
4218
4219 # type: textblock
4220 #: ../src/guestfs-actions.pod:299 ../fish/guestfish-actions.pod:239
4221 msgid ""
4222 "Move the node C<src> to C<dest>.  C<src> must match exactly one node.  "
4223 "C<dest> is overwritten if it exists."
4224 msgstr ""
4225
4226 # type: =head2
4227 #: ../src/guestfs-actions.pod:304
4228 msgid "guestfs_aug_rm"
4229 msgstr ""
4230
4231 # type: verbatim
4232 #: ../src/guestfs-actions.pod:306
4233 #, no-wrap
4234 msgid ""
4235 " int guestfs_aug_rm (guestfs_h *g,\n"
4236 "\t\tconst char *augpath);\n"
4237 "\n"
4238 msgstr ""
4239
4240 # type: textblock
4241 #: ../src/guestfs-actions.pod:309 ../fish/guestfish-actions.pod:246
4242 msgid "Remove C<path> and all of its children."
4243 msgstr ""
4244
4245 # type: textblock
4246 #: ../src/guestfs-actions.pod:311 ../fish/guestfish-actions.pod:248
4247 msgid "On success this returns the number of entries which were removed."
4248 msgstr ""
4249
4250 # type: =head2
4251 #: ../src/guestfs-actions.pod:315
4252 msgid "guestfs_aug_save"
4253 msgstr ""
4254
4255 # type: verbatim
4256 #: ../src/guestfs-actions.pod:317
4257 #, no-wrap
4258 msgid ""
4259 " int guestfs_aug_save (guestfs_h *g);\n"
4260 "\n"
4261 msgstr ""
4262
4263 # type: textblock
4264 #: ../src/guestfs-actions.pod:319 ../fish/guestfish-actions.pod:254
4265 msgid "This writes all pending changes to disk."
4266 msgstr ""
4267
4268 # type: textblock
4269 #: ../src/guestfs-actions.pod:321
4270 msgid ""
4271 "The flags which were passed to C<guestfs_aug_init> affect exactly how files "
4272 "are saved."
4273 msgstr ""
4274
4275 # type: =head2
4276 #: ../src/guestfs-actions.pod:326
4277 msgid "guestfs_aug_set"
4278 msgstr ""
4279
4280 # type: verbatim
4281 #: ../src/guestfs-actions.pod:328
4282 #, no-wrap
4283 msgid ""
4284 " int guestfs_aug_set (guestfs_h *g,\n"
4285 "\t\tconst char *augpath,\n"
4286 "\t\tconst char *val);\n"
4287 "\n"
4288 msgstr ""
4289
4290 # type: textblock
4291 #: ../src/guestfs-actions.pod:332 ../fish/guestfish-actions.pod:263
4292 msgid "Set the value associated with C<path> to C<val>."
4293 msgstr ""
4294
4295 # type: textblock
4296 #: ../src/guestfs-actions.pod:334
4297 msgid ""
4298 "In the Augeas API, it is possible to clear a node by setting the value to "
4299 "NULL.  Due to an oversight in the libguestfs API you cannot do that with "
4300 "this call.  Instead you must use the C<guestfs_aug_clear> call."
4301 msgstr ""
4302
4303 # type: =head2
4304 #: ../src/guestfs-actions.pod:341
4305 msgid "guestfs_available"
4306 msgstr ""
4307
4308 # type: verbatim
4309 #: ../src/guestfs-actions.pod:343
4310 #, no-wrap
4311 msgid ""
4312 " int guestfs_available (guestfs_h *g,\n"
4313 "\t\tchar *const *groups);\n"
4314 "\n"
4315 msgstr ""
4316
4317 # type: textblock
4318 #: ../src/guestfs-actions.pod:346 ../fish/guestfish-actions.pod:274
4319 msgid ""
4320 "This command is used to check the availability of some groups of "
4321 "functionality in the appliance, which not all builds of the libguestfs "
4322 "appliance will be able to provide."
4323 msgstr ""
4324
4325 # type: textblock
4326 #: ../src/guestfs-actions.pod:350
4327 msgid ""
4328 "The libguestfs groups, and the functions that those groups correspond to, "
4329 "are listed in L<guestfs(3)/AVAILABILITY>.  You can also fetch this list at "
4330 "runtime by calling C<guestfs_available_all_groups>."
4331 msgstr ""
4332
4333 # type: textblock
4334 #: ../src/guestfs-actions.pod:355 ../fish/guestfish-actions.pod:283
4335 msgid ""
4336 "The argument C<groups> is a list of group names, eg: C<[\"inotify\", \"augeas"
4337 "\"]> would check for the availability of the Linux inotify functions and "
4338 "Augeas (configuration file editing) functions."
4339 msgstr ""
4340
4341 # type: textblock
4342 #: ../src/guestfs-actions.pod:360 ../fish/guestfish-actions.pod:288
4343 msgid "The command returns no error if I<all> requested groups are available."
4344 msgstr ""
4345
4346 # type: textblock
4347 #: ../src/guestfs-actions.pod:362 ../fish/guestfish-actions.pod:290
4348 msgid ""
4349 "It fails with an error if one or more of the requested groups is unavailable "
4350 "in the appliance."
4351 msgstr ""
4352
4353 # type: textblock
4354 #: ../src/guestfs-actions.pod:365 ../fish/guestfish-actions.pod:293
4355 msgid ""
4356 "If an unknown group name is included in the list of groups then an error is "
4357 "always returned."
4358 msgstr ""
4359
4360 # type: textblock
4361 #: ../src/guestfs-actions.pod:368 ../fish/guestfish-actions.pod:296
4362 msgid "I<Notes:>"
4363 msgstr ""
4364
4365 # type: textblock
4366 #: ../src/guestfs-actions.pod:374
4367 msgid "You must call C<guestfs_launch> before calling this function."
4368 msgstr ""
4369
4370 # type: textblock
4371 #: ../src/guestfs-actions.pod:376 ../fish/guestfish-actions.pod:304
4372 msgid ""
4373 "The reason is because we don't know what groups are supported by the "
4374 "appliance/daemon until it is running and can be queried."
4375 msgstr ""
4376
4377 # type: textblock
4378 #: ../src/guestfs-actions.pod:382 ../fish/guestfish-actions.pod:310
4379 msgid ""
4380 "If a group of functions is available, this does not necessarily mean that "
4381 "they will work.  You still have to check for errors when calling individual "
4382 "API functions even if they are available."
4383 msgstr ""
4384
4385 # type: textblock
4386 #: ../src/guestfs-actions.pod:389 ../fish/guestfish-actions.pod:317
4387 msgid ""
4388 "It is usually the job of distro packagers to build complete functionality "
4389 "into the libguestfs appliance.  Upstream libguestfs, if built from source "
4390 "with all requirements satisfied, will support everything."
4391 msgstr ""
4392
4393 # type: textblock
4394 #: ../src/guestfs-actions.pod:396
4395 msgid ""
4396 "This call was added in version C<1.0.80>.  In previous versions of "
4397 "libguestfs all you could do would be to speculatively execute a command to "
4398 "find out if the daemon implemented it.  See also C<guestfs_version>."
4399 msgstr ""
4400
4401 # type: =head2
4402 #: ../src/guestfs-actions.pod:405
4403 msgid "guestfs_available_all_groups"
4404 msgstr ""
4405
4406 # type: verbatim
4407 #: ../src/guestfs-actions.pod:407
4408 #, no-wrap
4409 msgid ""
4410 " char **guestfs_available_all_groups (guestfs_h *g);\n"
4411 "\n"
4412 msgstr ""
4413
4414 # type: textblock
4415 #: ../src/guestfs-actions.pod:409
4416 msgid ""
4417 "This command returns a list of all optional groups that this daemon knows "
4418 "about.  Note this returns both supported and unsupported groups.  To find "
4419 "out which ones the daemon can actually support you have to call "
4420 "C<guestfs_available> on each member of the returned list."
4421 msgstr ""
4422
4423 # type: textblock
4424 #: ../src/guestfs-actions.pod:415
4425 msgid "See also C<guestfs_available> and L<guestfs(3)/AVAILABILITY>."
4426 msgstr ""
4427
4428 # type: =head2
4429 #: ../src/guestfs-actions.pod:421
4430 msgid "guestfs_base64_in"
4431 msgstr ""
4432
4433 # type: verbatim
4434 #: ../src/guestfs-actions.pod:423
4435 #, no-wrap
4436 msgid ""
4437 " int guestfs_base64_in (guestfs_h *g,\n"
4438 "\t\tconst char *base64file,\n"
4439 "\t\tconst char *filename);\n"
4440 "\n"
4441 msgstr ""
4442
4443 # type: textblock
4444 #: ../src/guestfs-actions.pod:427 ../fish/guestfish-actions.pod:347
4445 msgid ""
4446 "This command uploads base64-encoded data from C<base64file> to C<filename>."
4447 msgstr ""
4448
4449 # type: =head2
4450 #: ../src/guestfs-actions.pod:432
4451 msgid "guestfs_base64_out"
4452 msgstr ""
4453
4454 # type: verbatim
4455 #: ../src/guestfs-actions.pod:434
4456 #, no-wrap
4457 msgid ""
4458 " int guestfs_base64_out (guestfs_h *g,\n"
4459 "\t\tconst char *filename,\n"
4460 "\t\tconst char *base64file);\n"
4461 "\n"
4462 msgstr ""
4463
4464 # type: textblock
4465 #: ../src/guestfs-actions.pod:438 ../fish/guestfish-actions.pod:356
4466 msgid ""
4467 "This command downloads the contents of C<filename>, writing it out to local "
4468 "file C<base64file> encoded as base64."
4469 msgstr ""
4470
4471 # type: =head2
4472 #: ../src/guestfs-actions.pod:443
4473 msgid "guestfs_blockdev_flushbufs"
4474 msgstr ""
4475
4476 # type: verbatim
4477 #: ../src/guestfs-actions.pod:445
4478 #, no-wrap
4479 msgid ""
4480 " int guestfs_blockdev_flushbufs (guestfs_h *g,\n"
4481 "\t\tconst char *device);\n"
4482 "\n"
4483 msgstr ""
4484
4485 # type: textblock
4486 #: ../src/guestfs-actions.pod:448 ../fish/guestfish-actions.pod:365
4487 msgid ""
4488 "This tells the kernel to flush internal buffers associated with C<device>."
4489 msgstr ""
4490
4491 # type: textblock
4492 #: ../src/guestfs-actions.pod:451 ../src/guestfs-actions.pod:465
4493 #: ../src/guestfs-actions.pod:477 ../src/guestfs-actions.pod:490
4494 #: ../src/guestfs-actions.pod:505 ../src/guestfs-actions.pod:521
4495 #: ../src/guestfs-actions.pod:532 ../src/guestfs-actions.pod:547
4496 #: ../src/guestfs-actions.pod:558 ../src/guestfs-actions.pod:569
4497 #: ../fish/guestfish-actions.pod:368 ../fish/guestfish-actions.pod:379
4498 #: ../fish/guestfish-actions.pod:388 ../fish/guestfish-actions.pod:398
4499 #: ../fish/guestfish-actions.pod:410 ../fish/guestfish-actions.pod:423
4500 #: ../fish/guestfish-actions.pod:431 ../fish/guestfish-actions.pod:442
4501 #: ../fish/guestfish-actions.pod:450 ../fish/guestfish-actions.pod:458
4502 msgid "This uses the L<blockdev(8)> command."
4503 msgstr ""
4504
4505 # type: =head2
4506 #: ../src/guestfs-actions.pod:455
4507 msgid "guestfs_blockdev_getbsz"
4508 msgstr ""
4509
4510 # type: verbatim
4511 #: ../src/guestfs-actions.pod:457
4512 #, no-wrap
4513 msgid ""
4514 " int guestfs_blockdev_getbsz (guestfs_h *g,\n"
4515 "\t\tconst char *device);\n"
4516 "\n"
4517 msgstr ""
4518
4519 # type: textblock
4520 #: ../src/guestfs-actions.pod:460 ../fish/guestfish-actions.pod:374
4521 msgid "This returns the block size of a device."
4522 msgstr ""
4523
4524 # type: textblock
4525 #: ../src/guestfs-actions.pod:462 ../src/guestfs-actions.pod:544
4526 #: ../fish/guestfish-actions.pod:376 ../fish/guestfish-actions.pod:439
4527 msgid ""
4528 "(Note this is different from both I<size in blocks> and I<filesystem block "
4529 "size>)."
4530 msgstr ""
4531
4532 # type: =head2
4533 #: ../src/guestfs-actions.pod:469
4534 msgid "guestfs_blockdev_getro"
4535 msgstr ""
4536
4537 # type: verbatim
4538 #: ../src/guestfs-actions.pod:471
4539 #, no-wrap
4540 msgid ""
4541 " int guestfs_blockdev_getro (guestfs_h *g,\n"
4542 "\t\tconst char *device);\n"
4543 "\n"
4544 msgstr ""
4545
4546 # type: textblock
4547 #: ../src/guestfs-actions.pod:474 ../fish/guestfish-actions.pod:385
4548 msgid ""
4549 "Returns a boolean indicating if the block device is read-only (true if read-"
4550 "only, false if not)."
4551 msgstr ""
4552
4553 # type: textblock
4554 #: ../src/guestfs-actions.pod:479 ../src/guestfs-actions.pod:1087
4555 #: ../src/guestfs-actions.pod:1099 ../src/guestfs-actions.pod:1531
4556 #: ../src/guestfs-actions.pod:1539 ../src/guestfs-actions.pod:1599
4557 #: ../src/guestfs-actions.pod:1642 ../src/guestfs-actions.pod:1654
4558 #: ../src/guestfs-actions.pod:1673 ../src/guestfs-actions.pod:1690
4559 #: ../src/guestfs-actions.pod:2275 ../src/guestfs-actions.pod:2286
4560 #: ../src/guestfs-actions.pod:2298 ../src/guestfs-actions.pod:2309
4561 #: ../src/guestfs-actions.pod:2322 ../src/guestfs-actions.pod:2334
4562 #: ../src/guestfs-actions.pod:2347 ../src/guestfs-actions.pod:2358
4563 #: ../src/guestfs-actions.pod:2368 ../src/guestfs-actions.pod:2379
4564 #: ../src/guestfs-actions.pod:2391 ../src/guestfs-actions.pod:2403
4565 #: ../src/guestfs-actions.pod:3567
4566 msgid "This function returns a C truth value on success or -1 on error."
4567 msgstr ""
4568
4569 # type: =head2
4570 #: ../src/guestfs-actions.pod:481
4571 msgid "guestfs_blockdev_getsize64"
4572 msgstr ""
4573
4574 # type: verbatim
4575 #: ../src/guestfs-actions.pod:483
4576 #, no-wrap
4577 msgid ""
4578 " int64_t guestfs_blockdev_getsize64 (guestfs_h *g,\n"
4579 "\t\tconst char *device);\n"
4580 "\n"
4581 msgstr ""
4582
4583 # type: textblock
4584 #: ../src/guestfs-actions.pod:486 ../fish/guestfish-actions.pod:394
4585 msgid "This returns the size of the device in bytes."
4586 msgstr ""
4587
4588 # type: textblock
4589 #: ../src/guestfs-actions.pod:488
4590 msgid "See also C<guestfs_blockdev_getsz>."
4591 msgstr ""
4592
4593 # type: =head2
4594 #: ../src/guestfs-actions.pod:494
4595 msgid "guestfs_blockdev_getss"
4596 msgstr ""
4597
4598 # type: verbatim
4599 #: ../src/guestfs-actions.pod:496
4600 #, no-wrap
4601 msgid ""
4602 " int guestfs_blockdev_getss (guestfs_h *g,\n"
4603 "\t\tconst char *device);\n"
4604 "\n"
4605 msgstr ""
4606
4607 # type: textblock
4608 #: ../src/guestfs-actions.pod:499 ../fish/guestfish-actions.pod:404
4609 msgid ""
4610 "This returns the size of sectors on a block device.  Usually 512, but can be "
4611 "larger for modern devices."
4612 msgstr ""
4613
4614 # type: textblock
4615 #: ../src/guestfs-actions.pod:502
4616 msgid ""
4617 "(Note, this is not the size in sectors, use C<guestfs_blockdev_getsz> for "
4618 "that)."
4619 msgstr ""
4620
4621 # type: =head2
4622 #: ../src/guestfs-actions.pod:509
4623 msgid "guestfs_blockdev_getsz"
4624 msgstr ""
4625
4626 # type: verbatim
4627 #: ../src/guestfs-actions.pod:511
4628 #, no-wrap
4629 msgid ""
4630 " int64_t guestfs_blockdev_getsz (guestfs_h *g,\n"
4631 "\t\tconst char *device);\n"
4632 "\n"
4633 msgstr ""
4634
4635 # type: textblock
4636 #: ../src/guestfs-actions.pod:514 ../fish/guestfish-actions.pod:416
4637 msgid ""
4638 "This returns the size of the device in units of 512-byte sectors (even if "
4639 "the sectorsize isn't 512 bytes ... weird)."
4640 msgstr ""
4641
4642 # type: textblock
4643 #: ../src/guestfs-actions.pod:517
4644 msgid ""
4645 "See also C<guestfs_blockdev_getss> for the real sector size of the device, "
4646 "and C<guestfs_blockdev_getsize64> for the more useful I<size in bytes>."
4647 msgstr ""
4648
4649 # type: =head2
4650 #: ../src/guestfs-actions.pod:525
4651 msgid "guestfs_blockdev_rereadpt"
4652 msgstr ""
4653
4654 # type: verbatim
4655 #: ../src/guestfs-actions.pod:527
4656 #, no-wrap
4657 msgid ""
4658 " int guestfs_blockdev_rereadpt (guestfs_h *g,\n"
4659 "\t\tconst char *device);\n"
4660 "\n"
4661 msgstr ""
4662
4663 # type: textblock
4664 #: ../src/guestfs-actions.pod:530 ../fish/guestfish-actions.pod:429
4665 msgid "Reread the partition table on C<device>."
4666 msgstr ""
4667
4668 # type: =head2
4669 #: ../src/guestfs-actions.pod:536
4670 msgid "guestfs_blockdev_setbsz"
4671 msgstr ""
4672
4673 # type: verbatim
4674 #: ../src/guestfs-actions.pod:538
4675 #, no-wrap
4676 msgid ""
4677 " int guestfs_blockdev_setbsz (guestfs_h *g,\n"
4678 "\t\tconst char *device,\n"
4679 "\t\tint blocksize);\n"
4680 "\n"
4681 msgstr ""
4682
4683 # type: textblock
4684 #: ../src/guestfs-actions.pod:542 ../fish/guestfish-actions.pod:437
4685 msgid "This sets the block size of a device."
4686 msgstr ""
4687
4688 # type: =head2
4689 #: ../src/guestfs-actions.pod:551
4690 msgid "guestfs_blockdev_setro"
4691 msgstr ""
4692
4693 # type: verbatim
4694 #: ../src/guestfs-actions.pod:553
4695 #, no-wrap
4696 msgid ""
4697 " int guestfs_blockdev_setro (guestfs_h *g,\n"
4698 "\t\tconst char *device);\n"
4699 "\n"
4700 msgstr ""
4701
4702 # type: textblock
4703 #: ../src/guestfs-actions.pod:556 ../fish/guestfish-actions.pod:448
4704 msgid "Sets the block device named C<device> to read-only."
4705 msgstr ""
4706
4707 # type: =head2
4708 #: ../src/guestfs-actions.pod:562
4709 msgid "guestfs_blockdev_setrw"
4710 msgstr ""
4711
4712 # type: verbatim
4713 #: ../src/guestfs-actions.pod:564
4714 #, no-wrap
4715 msgid ""
4716 " int guestfs_blockdev_setrw (guestfs_h *g,\n"
4717 "\t\tconst char *device);\n"
4718 "\n"
4719 msgstr ""
4720
4721 # type: textblock
4722 #: ../src/guestfs-actions.pod:567 ../fish/guestfish-actions.pod:456
4723 msgid "Sets the block device named C<device> to read-write."
4724 msgstr ""
4725
4726 # type: =head2
4727 #: ../src/guestfs-actions.pod:573
4728 msgid "guestfs_case_sensitive_path"
4729 msgstr ""
4730
4731 # type: verbatim
4732 #: ../src/guestfs-actions.pod:575
4733 #, no-wrap
4734 msgid ""
4735 " char *guestfs_case_sensitive_path (guestfs_h *g,\n"
4736 "\t\tconst char *path);\n"
4737 "\n"
4738 msgstr ""
4739
4740 # type: textblock
4741 #: ../src/guestfs-actions.pod:578 ../fish/guestfish-actions.pod:464
4742 msgid ""
4743 "This can be used to resolve case insensitive paths on a filesystem which is "
4744 "case sensitive.  The use case is to resolve paths which you have read from "
4745 "Windows configuration files or the Windows Registry, to the true path."
4746 msgstr ""
4747
4748 # type: textblock
4749 #: ../src/guestfs-actions.pod:583 ../fish/guestfish-actions.pod:469
4750 msgid ""
4751 "The command handles a peculiarity of the Linux ntfs-3g filesystem driver "
4752 "(and probably others), which is that although the underlying filesystem is "
4753 "case-insensitive, the driver exports the filesystem to Linux as case-"
4754 "sensitive."
4755 msgstr ""
4756
4757 # type: textblock
4758 #: ../src/guestfs-actions.pod:588 ../fish/guestfish-actions.pod:474
4759 msgid ""
4760 "One consequence of this is that special directories such as C<c:\\windows> "
4761 "may appear as C</WINDOWS> or C</windows> (or other things) depending on the "
4762 "precise details of how they were created.  In Windows itself this would not "
4763 "be a problem."
4764 msgstr ""
4765
4766 # type: textblock
4767 #: ../src/guestfs-actions.pod:594 ../fish/guestfish-actions.pod:480
4768 msgid ""
4769 "Bug or feature? You decide: L<http://www.tuxera.com/community/ntfs-3g-faq/"
4770 "#posixfilenames1>"
4771 msgstr ""
4772
4773 # type: textblock
4774 #: ../src/guestfs-actions.pod:597 ../fish/guestfish-actions.pod:483
4775 msgid ""
4776 "This function resolves the true case of each element in the path and returns "
4777 "the case-sensitive path."
4778 msgstr ""
4779
4780 # type: textblock
4781 #: ../src/guestfs-actions.pod:600
4782 msgid ""
4783 "Thus C<guestfs_case_sensitive_path> (\"/Windows/System32\")  might return C<"
4784 "\"/WINDOWS/system32\"> (the exact return value would depend on details of "
4785 "how the directories were originally created under Windows)."
4786 msgstr ""
4787
4788 # type: textblock
4789 #: ../src/guestfs-actions.pod:605 ../fish/guestfish-actions.pod:491
4790 msgid "I<Note>: This function does not handle drive names, backslashes etc."
4791 msgstr ""
4792
4793 # type: textblock
4794 #: ../src/guestfs-actions.pod:608
4795 msgid "See also C<guestfs_realpath>."
4796 msgstr ""
4797
4798 # type: =head2
4799 #: ../src/guestfs-actions.pod:613
4800 msgid "guestfs_cat"
4801 msgstr ""
4802
4803 # type: verbatim
4804 #: ../src/guestfs-actions.pod:615
4805 #, no-wrap
4806 msgid ""
4807 " char *guestfs_cat (guestfs_h *g,\n"
4808 "\t\tconst char *path);\n"
4809 "\n"
4810 msgstr ""
4811
4812 # type: textblock
4813 #: ../src/guestfs-actions.pod:618 ../src/guestfs-actions.pod:3944
4814 #: ../fish/guestfish-actions.pod:500 ../fish/guestfish-actions.pod:3039
4815 msgid "Return the contents of the file named C<path>."
4816 msgstr ""
4817
4818 # type: textblock
4819 #: ../src/guestfs-actions.pod:620
4820 msgid ""
4821 "Note that this function cannot correctly handle binary files (specifically, "
4822 "files containing C<\\0> character which is treated as end of string).  For "
4823 "those you need to use the C<guestfs_read_file> or C<guestfs_download> "
4824 "functions which have a more complex interface."
4825 msgstr ""
4826
4827 # type: textblock
4828 #: ../src/guestfs-actions.pod:628 ../src/guestfs-actions.pod:789
4829 #: ../src/guestfs-actions.pod:806 ../src/guestfs-actions.pod:1057
4830 #: ../src/guestfs-actions.pod:1073 ../src/guestfs-actions.pod:1161
4831 #: ../src/guestfs-actions.pod:1177 ../src/guestfs-actions.pod:1408
4832 #: ../src/guestfs-actions.pod:1755 ../src/guestfs-actions.pod:1771
4833 #: ../src/guestfs-actions.pod:1808 ../src/guestfs-actions.pod:1829
4834 #: ../src/guestfs-actions.pod:1843 ../src/guestfs-actions.pod:1869
4835 #: ../src/guestfs-actions.pod:3807 ../src/guestfs-actions.pod:3915
4836 #: ../src/guestfs-actions.pod:3936 ../src/guestfs-actions.pod:4662
4837 #: ../src/guestfs-actions.pod:4714 ../src/guestfs-actions.pod:4830
4838 #: ../src/guestfs-actions.pod:4851 ../src/guestfs-actions.pod:5370
4839 #: ../src/guestfs-actions.pod:5393 ../src/guestfs-actions.pod:5416
4840 #: ../src/guestfs-actions.pod:5432 ../src/guestfs-actions.pod:5505
4841 #: ../src/guestfs-actions.pod:5521 ../src/guestfs-actions.pod:5561
4842 #: ../src/guestfs-actions.pod:5577 ../fish/guestfish-actions.pod:507
4843 #: ../fish/guestfish-actions.pod:642 ../fish/guestfish-actions.pod:654
4844 #: ../fish/guestfish-actions.pod:836 ../fish/guestfish-actions.pod:846
4845 #: ../fish/guestfish-actions.pod:913 ../fish/guestfish-actions.pod:923
4846 #: ../fish/guestfish-actions.pod:1118 ../fish/guestfish-actions.pod:1391
4847 #: ../fish/guestfish-actions.pod:1401 ../fish/guestfish-actions.pod:1429
4848 #: ../fish/guestfish-actions.pod:1444 ../fish/guestfish-actions.pod:1454
4849 #: ../fish/guestfish-actions.pod:1473 ../fish/guestfish-actions.pod:2941
4850 #: ../fish/guestfish-actions.pod:3017 ../fish/guestfish-actions.pod:3032
4851 #: ../fish/guestfish-actions.pod:3593 ../fish/guestfish-actions.pod:3639
4852 #: ../fish/guestfish-actions.pod:3724 ../fish/guestfish-actions.pod:3739
4853 #: ../fish/guestfish-actions.pod:4122 ../fish/guestfish-actions.pod:4140
4854 #: ../fish/guestfish-actions.pod:4157 ../fish/guestfish-actions.pod:4167
4855 #: ../fish/guestfish-actions.pod:4215 ../fish/guestfish-actions.pod:4225
4856 #: ../fish/guestfish-actions.pod:4254 ../fish/guestfish-actions.pod:4264
4857 msgid ""
4858 "Because of the message protocol, there is a transfer limit of somewhere "
4859 "between 2MB and 4MB.  See L<guestfs(3)/PROTOCOL LIMITS>."
4860 msgstr ""
4861
4862 # type: =head2
4863 #: ../src/guestfs-actions.pod:631
4864 msgid "guestfs_checksum"
4865 msgstr ""
4866
4867 # type: verbatim
4868 #: ../src/guestfs-actions.pod:633
4869 #, no-wrap
4870 msgid ""
4871 " char *guestfs_checksum (guestfs_h *g,\n"
4872 "\t\tconst char *csumtype,\n"
4873 "\t\tconst char *path);\n"
4874 "\n"
4875 msgstr ""
4876
4877 # type: textblock
4878 #: ../src/guestfs-actions.pod:637 ../fish/guestfish-actions.pod:514
4879 msgid ""
4880 "This call computes the MD5, SHAx or CRC checksum of the file named C<path>."
4881 msgstr ""
4882
4883 # type: textblock
4884 #: ../src/guestfs-actions.pod:640 ../fish/guestfish-actions.pod:517
4885 msgid ""
4886 "The type of checksum to compute is given by the C<csumtype> parameter which "
4887 "must have one of the following values:"
4888 msgstr ""
4889
4890 # type: =item
4891 #: ../src/guestfs-actions.pod:645 ../fish/guestfish-actions.pod:522
4892 msgid "C<crc>"
4893 msgstr ""
4894
4895 # type: textblock
4896 #: ../src/guestfs-actions.pod:647 ../fish/guestfish-actions.pod:524
4897 msgid ""
4898 "Compute the cyclic redundancy check (CRC) specified by POSIX for the "
4899 "C<cksum> command."
4900 msgstr ""
4901
4902 # type: =item
4903 #: ../src/guestfs-actions.pod:650 ../fish/guestfish-actions.pod:527
4904 msgid "C<md5>"
4905 msgstr ""
4906
4907 # type: textblock
4908 #: ../src/guestfs-actions.pod:652 ../fish/guestfish-actions.pod:529
4909 msgid "Compute the MD5 hash (using the C<md5sum> program)."
4910 msgstr ""
4911
4912 # type: =item
4913 #: ../src/guestfs-actions.pod:654 ../fish/guestfish-actions.pod:531
4914 msgid "C<sha1>"
4915 msgstr ""
4916
4917 # type: textblock
4918 #: ../src/guestfs-actions.pod:656 ../fish/guestfish-actions.pod:533
4919 msgid "Compute the SHA1 hash (using the C<sha1sum> program)."
4920 msgstr ""
4921
4922 # type: =item
4923 #: ../src/guestfs-actions.pod:658 ../fish/guestfish-actions.pod:535
4924 msgid "C<sha224>"
4925 msgstr ""
4926
4927 # type: textblock
4928 #: ../src/guestfs-actions.pod:660 ../fish/guestfish-actions.pod:537
4929 msgid "Compute the SHA224 hash (using the C<sha224sum> program)."
4930 msgstr ""