-"The child process generates events in some situations. Current events "
-"include: receiving a log message, the child process exits."
+"B<Note:> This section documents the generic event mechanism introduced in "
+"libguestfs 1.10, which you should use in new code if possible. The old "
+"functions C<guestfs_set_log_message_callback>, "
+"C<guestfs_set_subprocess_quit_callback>, "
+"C<guestfs_set_launch_done_callback>, C<guestfs_set_close_callback> and "
+"C<guestfs_set_progress_callback> are no longer documented in this manual "
+"page."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1694
+msgid ""
+"Handles generate events when certain things happen, such as log messages "
+"being generated, progress messages during long-running operations, or the "
+"handle being closed. The API calls described below let you register a "
+"callback to be called when events happen. You can register multiple "
+"callbacks (for the same, different or overlapping sets of events), and "
+"individually remove callbacks. If callbacks are not removed, then they "
+"remain in force until the handle is closed."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1702
+msgid ""
+"In the current implementation, events are only generated synchronously: that "
+"means that events (and hence callbacks) can only happen while you are in the "
+"middle of making another libguestfs call. The callback is called in the "
+"same thread."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1707
+msgid ""
+"Events may contain a payload, usually nothing (void), an array of 64 bit "
+"unsigned integers, or a message buffer. Payloads are discussed later on."
+msgstr ""
+
+#. type: =head3
+#: ../src/guestfs.pod:1711
+msgid "CLASSES OF EVENTS"
+msgstr ""
+
+#. type: =item
+#: ../src/guestfs.pod:1715
+msgid "GUESTFS_EVENT_CLOSE (payload type: void)"
+# type: textblock
+#. type: textblock
+#: ../src/guestfs.pod:1973
+msgid "To retrieve the pointer, use:"
+msgstr ""
+
+# type: verbatim
+#. type: verbatim
+#: ../src/guestfs.pod:1975
+#, no-wrap
+msgid ""
+" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#. type: textblock
+#: ../src/guestfs.pod:1977
+msgid ""
+"This function returns C<NULL> if either no data is found associated with "
+"C<key>, or if the user previously set the C<key>'s C<data> pointer to "
+"C<NULL>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1981
+msgid ""
+"Libguestfs does not try to look at or interpret the C<data> pointer in any "
+"way. As far as libguestfs is concerned, it need not be a valid pointer at "
+"all. In particular, libguestfs does I<not> try to free the data when the "
+"handle is closed. If the data must be freed, then the caller must either "
+"free it before calling L</guestfs_close> or must set up a close callback to "
+"do it (see L</GUESTFS_EVENT_CLOSE>)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1988
+msgid "To walk over all entries, use these two functions:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1990
+#, no-wrap
+msgid ""
+" void *guestfs_first_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:1992
+#, no-wrap
+msgid ""
+" void *guestfs_next_private (guestfs_h *g, const char **key_rtn);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:1994
+msgid ""
+"C<guestfs_first_private> returns the first key, pointer pair (\"first\" does "
+"not have any particular meaning -- keys are not returned in any defined "
+"order). A pointer to the key is returned in C<*key_rtn> and the "
+"corresponding data pointer is returned from the function. C<NULL> is "
+"returned if there are no keys stored in the handle."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2000
+msgid ""
+"C<guestfs_next_private> returns the next key, pointer pair. The return "
+"value of this function is also C<NULL> is there are no further entries to "
+"return."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2004
+msgid "Notes about walking over entries:"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2010
+msgid ""
+"You must not call C<guestfs_set_private> while walking over the entries."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2015
+msgid ""
+"The handle maintains an internal iterator which is reset when you call "
+"C<guestfs_first_private>. This internal iterator is invalidated when you "
+"call C<guestfs_set_private>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2021
+msgid "If you have set the data pointer associated with a key to C<NULL>, ie:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2023
+#, no-wrap
+msgid ""
+" guestfs_set_private (g, key, NULL);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2025
+msgid "then that C<key> is not returned when walking."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2029
+msgid ""
+"C<*key_rtn> is only valid until the next call to C<guestfs_first_private>, "
+"C<guestfs_next_private> or C<guestfs_set_private>."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs.pod:2035
+msgid ""
+"The following example code shows how to print all keys and data pointers "
+"that are associated with the handle C<g>:"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs.pod:2038
+#, no-wrap
+msgid ""
+" const char *key;\n"
+" void *data = guestfs_first_private (g, &key);\n"
+" while (data != NULL)\n"
+" {\n"
+" printf (\"key = %s, data = %p\\n\", key, data);\n"
+" data = guestfs_next_private (g, &key);\n"
+" }\n"
+"\n"
+msgstr ""
+
-#: ../src/guestfs-actions.pod:2501 ../src/guestfs-actions.pod:3336
-#: ../src/guestfs-actions.pod:3351 ../src/guestfs-actions.pod:3371
-#: ../src/guestfs-actions.pod:3526 ../src/guestfs-actions.pod:3540
-#: ../src/guestfs-actions.pod:3553 ../src/guestfs-actions.pod:3567
-#: ../src/guestfs-actions.pod:3582 ../src/guestfs-actions.pod:3618
-#: ../src/guestfs-actions.pod:3690 ../src/guestfs-actions.pod:3710
-#: ../src/guestfs-actions.pod:3727 ../src/guestfs-actions.pod:3750
-#: ../src/guestfs-actions.pod:3773 ../src/guestfs-actions.pod:3805
-#: ../src/guestfs-actions.pod:3824 ../src/guestfs-actions.pod:3843
-#: ../src/guestfs-actions.pod:3878 ../src/guestfs-actions.pod:3890
-#: ../src/guestfs-actions.pod:3926 ../src/guestfs-actions.pod:3942
-#: ../src/guestfs-actions.pod:3955 ../src/guestfs-actions.pod:3970
-#: ../src/guestfs-actions.pod:3987 ../src/guestfs-actions.pod:4080
-#: ../src/guestfs-actions.pod:4100 ../src/guestfs-actions.pod:4113
-#: ../src/guestfs-actions.pod:4164 ../src/guestfs-actions.pod:4182
-#: ../src/guestfs-actions.pod:4200 ../src/guestfs-actions.pod:4216
-#: ../src/guestfs-actions.pod:4230 ../src/guestfs-actions.pod:4244
-#: ../src/guestfs-actions.pod:4261 ../src/guestfs-actions.pod:4276
-#: ../src/guestfs-actions.pod:4296 ../src/guestfs-actions.pod:4354
-#: ../src/guestfs-actions.pod:4427 ../src/guestfs-actions.pod:4458
-#: ../src/guestfs-actions.pod:4477 ../src/guestfs-actions.pod:4496
-#: ../src/guestfs-actions.pod:4508 ../src/guestfs-actions.pod:4525
-#: ../src/guestfs-actions.pod:4538 ../src/guestfs-actions.pod:4553
-#: ../src/guestfs-actions.pod:4568 ../src/guestfs-actions.pod:4603
-#: ../src/guestfs-actions.pod:4618 ../src/guestfs-actions.pod:4638
-#: ../src/guestfs-actions.pod:4652 ../src/guestfs-actions.pod:4669
-#: ../src/guestfs-actions.pod:4718 ../src/guestfs-actions.pod:4755
-#: ../src/guestfs-actions.pod:4769 ../src/guestfs-actions.pod:4797
-#: ../src/guestfs-actions.pod:4814 ../src/guestfs-actions.pod:4832
-#: ../src/guestfs-actions.pod:4966 ../src/guestfs-actions.pod:5023
-#: ../src/guestfs-actions.pod:5045 ../src/guestfs-actions.pod:5063
-#: ../src/guestfs-actions.pod:5095 ../src/guestfs-actions.pod:5161
-#: ../src/guestfs-actions.pod:5178 ../src/guestfs-actions.pod:5191
-#: ../src/guestfs-actions.pod:5205 ../src/guestfs-actions.pod:5494
-#: ../src/guestfs-actions.pod:5513 ../src/guestfs-actions.pod:5532
-#: ../src/guestfs-actions.pod:5544 ../src/guestfs-actions.pod:5556
-#: ../src/guestfs-actions.pod:5570 ../src/guestfs-actions.pod:5582
-#: ../src/guestfs-actions.pod:5596 ../src/guestfs-actions.pod:5612
-#: ../src/guestfs-actions.pod:5633 ../src/guestfs-actions.pod:5652
-#: ../src/guestfs-actions.pod:5671 ../src/guestfs-actions.pod:5701
-#: ../src/guestfs-actions.pod:5717 ../src/guestfs-actions.pod:5740
-#: ../src/guestfs-actions.pod:5758 ../src/guestfs-actions.pod:5777
-#: ../src/guestfs-actions.pod:5798 ../src/guestfs-actions.pod:5817
-#: ../src/guestfs-actions.pod:5834 ../src/guestfs-actions.pod:5862
-#: ../src/guestfs-actions.pod:5886 ../src/guestfs-actions.pod:5905
-#: ../src/guestfs-actions.pod:5929 ../src/guestfs-actions.pod:5944
-#: ../src/guestfs-actions.pod:5959 ../src/guestfs-actions.pod:5978
-#: ../src/guestfs-actions.pod:6015 ../src/guestfs-actions.pod:6038
-#: ../src/guestfs-actions.pod:6064 ../src/guestfs-actions.pod:6172
-#: ../src/guestfs-actions.pod:6293 ../src/guestfs-actions.pod:6305
-#: ../src/guestfs-actions.pod:6318 ../src/guestfs-actions.pod:6331
-#: ../src/guestfs-actions.pod:6353 ../src/guestfs-actions.pod:6366
-#: ../src/guestfs-actions.pod:6379 ../src/guestfs-actions.pod:6392
-#: ../src/guestfs-actions.pod:6407 ../src/guestfs-actions.pod:6466
-#: ../src/guestfs-actions.pod:6483 ../src/guestfs-actions.pod:6499
-#: ../src/guestfs-actions.pod:6515 ../src/guestfs-actions.pod:6532
-#: ../src/guestfs-actions.pod:6545 ../src/guestfs-actions.pod:6565
-#: ../src/guestfs-actions.pod:6601 ../src/guestfs-actions.pod:6615
-#: ../src/guestfs-actions.pod:6656 ../src/guestfs-actions.pod:6669
-#: ../src/guestfs-actions.pod:6687 ../src/guestfs-actions.pod:6721
-#: ../src/guestfs-actions.pod:6757 ../src/guestfs-actions.pod:6876
-#: ../src/guestfs-actions.pod:6894 ../src/guestfs-actions.pod:6908
-#: ../src/guestfs-actions.pod:6963 ../src/guestfs-actions.pod:6976
-#: ../src/guestfs-actions.pod:7021 ../src/guestfs-actions.pod:7054
-#: ../src/guestfs-actions.pod:7108 ../src/guestfs-actions.pod:7134
-#: ../src/guestfs-actions.pod:7200 ../src/guestfs-actions.pod:7219
-#: ../src/guestfs-actions.pod:7248
+#: ../src/guestfs-actions.pod:2501 ../src/guestfs-actions.pod:3375
+#: ../src/guestfs-actions.pod:3390 ../src/guestfs-actions.pod:3410
+#: ../src/guestfs-actions.pod:3565 ../src/guestfs-actions.pod:3579
+#: ../src/guestfs-actions.pod:3592 ../src/guestfs-actions.pod:3606
+#: ../src/guestfs-actions.pod:3621 ../src/guestfs-actions.pod:3657
+#: ../src/guestfs-actions.pod:3729 ../src/guestfs-actions.pod:3749
+#: ../src/guestfs-actions.pod:3766 ../src/guestfs-actions.pod:3789
+#: ../src/guestfs-actions.pod:3812 ../src/guestfs-actions.pod:3844
+#: ../src/guestfs-actions.pod:3863 ../src/guestfs-actions.pod:3882
+#: ../src/guestfs-actions.pod:3917 ../src/guestfs-actions.pod:3929
+#: ../src/guestfs-actions.pod:3965 ../src/guestfs-actions.pod:3981
+#: ../src/guestfs-actions.pod:3994 ../src/guestfs-actions.pod:4009
+#: ../src/guestfs-actions.pod:4026 ../src/guestfs-actions.pod:4119
+#: ../src/guestfs-actions.pod:4139 ../src/guestfs-actions.pod:4152
+#: ../src/guestfs-actions.pod:4203 ../src/guestfs-actions.pod:4221
+#: ../src/guestfs-actions.pod:4239 ../src/guestfs-actions.pod:4255
+#: ../src/guestfs-actions.pod:4269 ../src/guestfs-actions.pod:4283
+#: ../src/guestfs-actions.pod:4300 ../src/guestfs-actions.pod:4315
+#: ../src/guestfs-actions.pod:4335 ../src/guestfs-actions.pod:4393
+#: ../src/guestfs-actions.pod:4466 ../src/guestfs-actions.pod:4497
+#: ../src/guestfs-actions.pod:4516 ../src/guestfs-actions.pod:4535
+#: ../src/guestfs-actions.pod:4547 ../src/guestfs-actions.pod:4564
+#: ../src/guestfs-actions.pod:4577 ../src/guestfs-actions.pod:4592
+#: ../src/guestfs-actions.pod:4607 ../src/guestfs-actions.pod:4642
+#: ../src/guestfs-actions.pod:4657 ../src/guestfs-actions.pod:4677
+#: ../src/guestfs-actions.pod:4691 ../src/guestfs-actions.pod:4708
+#: ../src/guestfs-actions.pod:4757 ../src/guestfs-actions.pod:4794
+#: ../src/guestfs-actions.pod:4808 ../src/guestfs-actions.pod:4836
+#: ../src/guestfs-actions.pod:4853 ../src/guestfs-actions.pod:4871
+#: ../src/guestfs-actions.pod:5005 ../src/guestfs-actions.pod:5062
+#: ../src/guestfs-actions.pod:5084 ../src/guestfs-actions.pod:5102
+#: ../src/guestfs-actions.pod:5134 ../src/guestfs-actions.pod:5200
+#: ../src/guestfs-actions.pod:5217 ../src/guestfs-actions.pod:5230
+#: ../src/guestfs-actions.pod:5244 ../src/guestfs-actions.pod:5533
+#: ../src/guestfs-actions.pod:5552 ../src/guestfs-actions.pod:5571
+#: ../src/guestfs-actions.pod:5583 ../src/guestfs-actions.pod:5595
+#: ../src/guestfs-actions.pod:5609 ../src/guestfs-actions.pod:5621
+#: ../src/guestfs-actions.pod:5635 ../src/guestfs-actions.pod:5651
+#: ../src/guestfs-actions.pod:5672 ../src/guestfs-actions.pod:5691
+#: ../src/guestfs-actions.pod:5710 ../src/guestfs-actions.pod:5740
+#: ../src/guestfs-actions.pod:5756 ../src/guestfs-actions.pod:5779
+#: ../src/guestfs-actions.pod:5797 ../src/guestfs-actions.pod:5816
+#: ../src/guestfs-actions.pod:5837 ../src/guestfs-actions.pod:5856
+#: ../src/guestfs-actions.pod:5873 ../src/guestfs-actions.pod:5901
+#: ../src/guestfs-actions.pod:5925 ../src/guestfs-actions.pod:5944
+#: ../src/guestfs-actions.pod:5968 ../src/guestfs-actions.pod:5987
+#: ../src/guestfs-actions.pod:6002 ../src/guestfs-actions.pod:6021
+#: ../src/guestfs-actions.pod:6058 ../src/guestfs-actions.pod:6081
+#: ../src/guestfs-actions.pod:6107 ../src/guestfs-actions.pod:6215
+#: ../src/guestfs-actions.pod:6336 ../src/guestfs-actions.pod:6348
+#: ../src/guestfs-actions.pod:6361 ../src/guestfs-actions.pod:6374
+#: ../src/guestfs-actions.pod:6396 ../src/guestfs-actions.pod:6409
+#: ../src/guestfs-actions.pod:6422 ../src/guestfs-actions.pod:6435
+#: ../src/guestfs-actions.pod:6450 ../src/guestfs-actions.pod:6509
+#: ../src/guestfs-actions.pod:6526 ../src/guestfs-actions.pod:6542
+#: ../src/guestfs-actions.pod:6558 ../src/guestfs-actions.pod:6575
+#: ../src/guestfs-actions.pod:6588 ../src/guestfs-actions.pod:6608
+#: ../src/guestfs-actions.pod:6644 ../src/guestfs-actions.pod:6658
+#: ../src/guestfs-actions.pod:6699 ../src/guestfs-actions.pod:6712
+#: ../src/guestfs-actions.pod:6730 ../src/guestfs-actions.pod:6764
+#: ../src/guestfs-actions.pod:6800 ../src/guestfs-actions.pod:6919
+#: ../src/guestfs-actions.pod:6937 ../src/guestfs-actions.pod:6951
+#: ../src/guestfs-actions.pod:7006 ../src/guestfs-actions.pod:7019
+#: ../src/guestfs-actions.pod:7064 ../src/guestfs-actions.pod:7097
+#: ../src/guestfs-actions.pod:7151 ../src/guestfs-actions.pod:7177
+#: ../src/guestfs-actions.pod:7243 ../src/guestfs-actions.pod:7262
+#: ../src/guestfs-actions.pod:7291
-#: ../src/guestfs-actions.pod:2604 ../src/guestfs-actions.pod:2671
-#: ../src/guestfs-actions.pod:2691 ../src/guestfs-actions.pod:2805
-#: ../src/guestfs-actions.pod:2836 ../src/guestfs-actions.pod:2860
-#: ../src/guestfs-actions.pod:2922 ../src/guestfs-actions.pod:2945
-#: ../src/guestfs-actions.pod:3512 ../src/guestfs-actions.pod:3862
-#: ../src/guestfs-actions.pod:4032 ../src/guestfs-actions.pod:4142
-#: ../src/guestfs-actions.pod:4887 ../src/guestfs-actions.pod:5080
-#: ../src/guestfs-actions.pod:5250 ../src/guestfs-actions.pod:5428
-#: ../src/guestfs-actions.pod:5477 ../src/guestfs-actions.pod:6085
-#: ../src/guestfs-actions.pod:6101 ../src/guestfs-actions.pod:6118
-#: ../src/guestfs-actions.pod:6142 ../src/guestfs-actions.pod:6816
-#: ../src/guestfs-actions.pod:6835 ../src/guestfs-actions.pod:6853
-#: ../src/guestfs-actions.pod:7033 ../src/guestfs-actions.pod:7305
+#: ../src/guestfs-actions.pod:2608 ../src/guestfs-actions.pod:2675
+#: ../src/guestfs-actions.pod:2695 ../src/guestfs-actions.pod:2809
+#: ../src/guestfs-actions.pod:2840 ../src/guestfs-actions.pod:2864
+#: ../src/guestfs-actions.pod:2901 ../src/guestfs-actions.pod:2961
+#: ../src/guestfs-actions.pod:2984 ../src/guestfs-actions.pod:3551
+#: ../src/guestfs-actions.pod:3901 ../src/guestfs-actions.pod:4071
+#: ../src/guestfs-actions.pod:4181 ../src/guestfs-actions.pod:4926
+#: ../src/guestfs-actions.pod:5119 ../src/guestfs-actions.pod:5289
+#: ../src/guestfs-actions.pod:5467 ../src/guestfs-actions.pod:5516
+#: ../src/guestfs-actions.pod:6128 ../src/guestfs-actions.pod:6144
+#: ../src/guestfs-actions.pod:6161 ../src/guestfs-actions.pod:6185
+#: ../src/guestfs-actions.pod:6859 ../src/guestfs-actions.pod:6878
+#: ../src/guestfs-actions.pod:6896 ../src/guestfs-actions.pod:7076
+#: ../src/guestfs-actions.pod:7348
-#: ../src/guestfs-actions.pod:2629 ../src/guestfs-actions.pod:2879
-#: ../src/guestfs-actions.pod:3147 ../src/guestfs-actions.pod:3432
-#: ../src/guestfs-actions.pod:3494 ../src/guestfs-actions.pod:3599
-#: ../src/guestfs-actions.pod:4004 ../src/guestfs-actions.pod:4702
-#: ../src/guestfs-actions.pod:5222 ../src/guestfs-actions.pod:5348
-#: ../src/guestfs-actions.pod:5462 ../src/guestfs-actions.pod:6158
-#: ../src/guestfs-actions.pod:6219 ../src/guestfs-actions.pod:6274
-#: ../src/guestfs-actions.pod:6420 ../src/guestfs-actions.pod:6444
-#: ../src/guestfs-actions.pod:6926 ../src/guestfs-actions.pod:6946
-#: ../src/guestfs-actions.pod:6993 ../src/guestfs-actions.pod:7158
-#: ../src/guestfs-actions.pod:7177 ../src/guestfs-actions.pod:7262
-#: ../src/guestfs-actions.pod:7281 ../src/guestfs-actions.pod:7327
-#: ../src/guestfs-actions.pod:7346
+#: ../src/guestfs-actions.pod:2633 ../src/guestfs-actions.pod:2918
+#: ../src/guestfs-actions.pod:3186 ../src/guestfs-actions.pod:3471
+#: ../src/guestfs-actions.pod:3533 ../src/guestfs-actions.pod:3638
+#: ../src/guestfs-actions.pod:4043 ../src/guestfs-actions.pod:4741
+#: ../src/guestfs-actions.pod:5261 ../src/guestfs-actions.pod:5387
+#: ../src/guestfs-actions.pod:5501 ../src/guestfs-actions.pod:6201
+#: ../src/guestfs-actions.pod:6262 ../src/guestfs-actions.pod:6317
+#: ../src/guestfs-actions.pod:6463 ../src/guestfs-actions.pod:6487
+#: ../src/guestfs-actions.pod:6969 ../src/guestfs-actions.pod:6989
+#: ../src/guestfs-actions.pod:7036 ../src/guestfs-actions.pod:7201
+#: ../src/guestfs-actions.pod:7220 ../src/guestfs-actions.pod:7305
+#: ../src/guestfs-actions.pod:7324 ../src/guestfs-actions.pod:7370
+#: ../src/guestfs-actions.pod:7389
-#: ../src/guestfs-actions.pod:2521 ../src/guestfs-actions.pod:2602
-#: ../src/guestfs-actions.pod:2669 ../src/guestfs-actions.pod:2689
-#: ../src/guestfs-actions.pod:2717 ../src/guestfs-actions.pod:2803
-#: ../src/guestfs-actions.pod:2834 ../src/guestfs-actions.pod:2858
-#: ../src/guestfs-actions.pod:2877 ../src/guestfs-actions.pod:2920
-#: ../src/guestfs-actions.pod:2943 ../src/guestfs-actions.pod:2963
-#: ../src/guestfs-actions.pod:2980 ../src/guestfs-actions.pod:2999
-#: ../src/guestfs-actions.pod:3102 ../src/guestfs-actions.pod:3143
-#: ../fish/guestfish-actions.pod:1698 ../fish/guestfish-actions.pod:1772
-#: ../fish/guestfish-actions.pod:1824 ../fish/guestfish-actions.pod:1839
-#: ../fish/guestfish-actions.pod:1860 ../fish/guestfish-actions.pod:1924
-#: ../fish/guestfish-actions.pod:1948 ../fish/guestfish-actions.pod:1965
-#: ../fish/guestfish-actions.pod:1978 ../fish/guestfish-actions.pod:2013
-#: ../fish/guestfish-actions.pod:2029 ../fish/guestfish-actions.pod:2042
-#: ../fish/guestfish-actions.pod:2055 ../fish/guestfish-actions.pod:2070
-#: ../fish/guestfish-actions.pod:2169 ../fish/guestfish-actions.pod:2203
+#: ../src/guestfs-actions.pod:2521 ../src/guestfs-actions.pod:2606
+#: ../src/guestfs-actions.pod:2673 ../src/guestfs-actions.pod:2693
+#: ../src/guestfs-actions.pod:2721 ../src/guestfs-actions.pod:2807
+#: ../src/guestfs-actions.pod:2838 ../src/guestfs-actions.pod:2862
+#: ../src/guestfs-actions.pod:2916 ../src/guestfs-actions.pod:2959
+#: ../src/guestfs-actions.pod:2982 ../src/guestfs-actions.pod:3002
+#: ../src/guestfs-actions.pod:3019 ../src/guestfs-actions.pod:3038
+#: ../src/guestfs-actions.pod:3141 ../src/guestfs-actions.pod:3182
+#: ../fish/guestfish-actions.pod:1698 ../fish/guestfish-actions.pod:1776
+#: ../fish/guestfish-actions.pod:1828 ../fish/guestfish-actions.pod:1843
+#: ../fish/guestfish-actions.pod:1864 ../fish/guestfish-actions.pod:1928
+#: ../fish/guestfish-actions.pod:1952 ../fish/guestfish-actions.pod:1969
+#: ../fish/guestfish-actions.pod:2012 ../fish/guestfish-actions.pod:2047
+#: ../fish/guestfish-actions.pod:2063 ../fish/guestfish-actions.pod:2076
+#: ../fish/guestfish-actions.pod:2089 ../fish/guestfish-actions.pod:2104
+#: ../fish/guestfish-actions.pod:2203 ../fish/guestfish-actions.pod:2237
+#. type: =head2
+#: ../src/guestfs-actions.pod:2869
+msgid "guestfs_inspect_get_product_variant"
+msgstr ""
+
+#. type: verbatim
+#: ../src/guestfs-actions.pod:2871
+#, no-wrap
+msgid ""
+" char *\n"
+" guestfs_inspect_get_product_variant (guestfs_h *g,\n"
+" const char *root);\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs-actions.pod:2878 ../fish/guestfish-actions.pod:1978
+msgid "This returns the product variant of the inspected operating system."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs-actions.pod:2881 ../fish/guestfish-actions.pod:1981
+msgid ""
+"For Windows guests, this returns the contents of the Registry key C<HKLM"
+"\\Software\\Microsoft\\Windows NT\\CurrentVersion> C<InstallationType> which "
+"is usually a string such as C<Client> or C<Server> (other values are "
+"possible). This can be used to distinguish consumer and enterprise versions "
+"of Windows that have the same version number (for example, Windows 7 and "
+"Windows 2008 Server are both version 6.1, but the former is C<Client> and "
+"the latter is C<Server>)."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs-actions.pod:2890 ../fish/guestfish-actions.pod:1990
+msgid ""
+"For enterprise Linux guests, in future we intend this to return the product "
+"variant such as C<Desktop>, C<Server> and so on. But this is not "
+"implemented at present."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs-actions.pod:2894 ../fish/guestfish-actions.pod:1994
+msgid ""
+"If the product variant could not be determined, then the string C<unknown> "
+"is returned."
+msgstr ""
+
+#. type: textblock
+#: ../src/guestfs-actions.pod:2897
+msgid ""
+"Please read L<guestfs(3)/INSPECTION> for more details. See also "
+"C<guestfs_inspect_get_product_name>, C<guestfs_inspect_get_major_version>."
+msgstr ""
+