On 2/2/23 11:39, Richard W.M. Jones wrote:
> On Thu, Feb 02, 2023 at 11:29:26AM +0100, Laszlo Ersek wrote:
>> Introduce a new GTK_ENTRY field in the Output options box.  Similarly to
>> "p2v.output.misc" on the kernel cmdline, the contents of this GTK_ENTRY
>> are a comma-separated list of OPTION=VALUE options, where each option is
>> passed to virt-v2v as the argument of a separate "-oo" option.
>>
>> Refresh the manual accordingly.
>>
>> For initially populating the text entry (in case the kernel command line
>> specified "p2v.output.misc"), call the guestfs_int_join_strings() function
>> that we imported previously in this series.
>>
>> For unpacking the contents in start_conversion_clicked(), call
>> guestfs_int_split_string(), just like the generated kernel cmdline parser
>> does, in update_config_from_kernel_cmdline() [kernel-config.c].
>>
>> Cc: Alban Lecorps <alban.leco...@ubisoft.com>
>> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1792141
>> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
>> ---
>>
>> Notes:
>>     v2:
>>     
>>     - highlight "no spaces around commas" in the tooltip [Rich]
>>     
>>     - repeat the "-oo" notes in the GUI section of the manual [Rich]
>>
>>  gui.c        | 49 +++++++++++++++++++-
>>  virt-p2v.pod | 11 +++++
>>  2 files changed, 58 insertions(+), 2 deletions(-)
>>
>> diff --git a/gui.c b/gui.c
>> index f86cab649785..ce9b2455e666 100644
>> --- a/gui.c
>> +++ b/gui.c
>> @@ -116,7 +116,7 @@ static GtkWidget *conn_dlg,
>>  static GtkWidget *conv_dlg,
>>    *guestname_entry, *vcpu_topo, *vcpus_entry, *memory_entry,
>>    *vcpus_warning, *memory_warning, *target_warning_label,
>> -  *o_combo, *oc_entry, *os_entry, *of_entry, *oa_combo,
>> +  *o_combo, *oc_entry, *os_entry, *of_entry, *oa_combo, *oo_entry,
>>    *info_label,
>>    *disks_list, *removable_list, *interfaces_list;
>>  static int vcpus_entry_when_last_sensitive;
>> @@ -674,6 +674,7 @@ static void populate_removable_store (GtkListStore 
>> *removable_store,
>>  static void populate_removable (GtkTreeView *removable_list_p,
>>                                  const char * const *removable);
>>  static void populate_interfaces (GtkTreeView *interfaces_list_p);
>> +static void populate_misc_opts (GtkEntry *entry, char * const *misc);
>>  static void toggled (GtkCellRendererToggle *cell,
>>                       gchar *path_str,
>>                       gpointer data);
>> @@ -733,7 +734,7 @@ create_conversion_dialog (struct config *config,
>>    GtkWidget *target_frame, *target_vbox, *target_tbl;
>>    GtkWidget *guestname_label, *vcpus_label, *memory_label;
>>    GtkWidget *output_frame, *output_vbox, *output_tbl;
>> -  GtkWidget *o_label, *oa_label, *oc_label, *of_label, *os_label;
>> +  GtkWidget *o_label, *oa_label, *oc_label, *of_label, *os_label, *oo_label;
>>    GtkWidget *info_frame;
>>    GtkWidget *disks_frame, *disks_sw;
>>    GtkWidget *removable_frame, *removable_sw;
>> @@ -929,6 +930,25 @@ create_conversion_dialog (struct config *config,
>>    table_attach (output_tbl, oa_combo,
>>                  1, 2, row, GTK_FILL, GTK_FILL, 1, 1);
>>  
>> +  row++;
>> +  oo_label = gtk_label_new_with_mnemonic (_("M_isc. options (-oo):"));
>> +  table_attach (output_tbl, oo_label,
>> +                0, 1, row, GTK_FILL, GTK_FILL, 1, 1);
>> +  set_alignment (oo_label, 1., 0.5);
>> +  oo_entry = gtk_entry_new ();
>> +  gtk_label_set_mnemonic_widget (GTK_LABEL (oo_label), oo_entry);
>> +  gtk_widget_set_tooltip_markup (oo_entry,
>> +                                 _("A comma-separated list of "
>> +                                   "<b>OPTION=VALUE</b> output-specific "
>> +                                   "options.  Each option is passed to "
>> +                                   "virt-v2v as the argument of a separate "
>> +                                   "<b>-oo</b> option.  Do not place a 
>> space "
>> +                                   "character at either side of either 
>> comma "
>> +                                   "separator."));
>> +  populate_misc_opts (GTK_ENTRY (oo_entry), config->output.misc);
>> +  table_attach (output_tbl, oo_entry,
>> +                1, 2, row, GTK_FILL, GTK_FILL, 1, 1);
>> +
>>    gtk_box_pack_start (GTK_BOX (output_vbox), output_tbl, TRUE, TRUE, 0);
>>    gtk_container_add (GTK_CONTAINER (output_frame), output_vbox);
>>  
>> @@ -1356,6 +1376,25 @@ populate_interfaces (GtkTreeView *interfaces_list_p)
>>                      G_CALLBACK (network_edited_callback), interfaces_store);
>>  }
>>  
>> +/**
>> + * Populate the C<Misc. options> text entry.
>> + */
>> +static void
>> +populate_misc_opts (GtkEntry *entry, char * const *misc)
>> +{
>> +  char *joined;
>> +
>> +  if (misc == NULL)
>> +    return;
>> +
>> +  joined = guestfs_int_join_strings (",", misc);
>> +  if (joined == NULL)
>> +    error (EXIT_FAILURE, errno, "malloc");
>> +
>> +  gtk_entry_set_text (entry, joined);
>> +  free(joined);
>> +}
>> +
>>  static void
>>  toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
>>  {
>> @@ -2197,6 +2236,12 @@ start_conversion_clicked (GtkWidget *w, gpointer data)
>>    else
>>      config->output.storage = NULL;
>>  
>> +  str = gtk_entry_get_text (GTK_ENTRY (oo_entry));
>> +  guestfs_int_free_string_list (config->output.misc);
>> +  config->output.misc = guestfs_int_split_string (',', str);
>> +  if (config->output.misc == NULL)
>> +    error (EXIT_FAILURE, errno, "strdup");
>> +
>>    /* Display the UI for conversion. */
>>    show_running_dialog ();
>>  
>> diff --git a/virt-p2v.pod b/virt-p2v.pod
>> index ecdae46eaaf6..6008c25d6159 100644
>> --- a/virt-p2v.pod
>> +++ b/virt-p2v.pod
>> @@ -175,10 +175,21 @@ first-time virt-p2v user.
>>   │
>>   │ Output allocation (-oa): [sparse            ▼]
>>   │
>> + │     Misc. options (-oo): [___________________]
>> + │
>>  
>>  All output options and paths are relative to the conversion server
>>  (I<not> to the physical server).
>>  
>> +Note that the C<Misc. options> text entry behaves differently from the
> 
> You can use S<C<Misc. options>> which will add a non-breaking space to
> prevent the output from being wrapped (not that it's likely to be
> line-wrapped in the current position, but it might be good practice).
> 
>> +other text entries -- its format is identical to that of the
>> +C<p2v.output.misc> L<kernel command line|/KERNEL COMMAND LINE
>> +CONFIGURATION> option.  Namely, the text entry contains a
>> +comma-separated list of miscellaneous, output-specific options.  (Do
>> +not put spaces around the commas!)  Each element in the list is of the
>> +form C<OPTION=VALUE>, and each element is passed to virt-v2v as a
>> +standalone I<-oo OPTION=VALUE> option.
>> +
>>  Finally in the left hand column is an information box giving the
>>  version of virt-p2v (on the physical server) and virt-v2v (on the
>>  conversion server).  You should supply this information when reporting
> 
> Reviewed-by: Richard W.M. Jones <rjo...@redhat.com>

Thanks, I've pushed the series with the following (cumulative) diff on top 
(broken down into the appropriate patches):

diff --git a/generate-p2v-config.pl b/generate-p2v-config.pl
index 5e1d8519bd91..a79655227a86 100755
--- a/generate-p2v-config.pl
+++ b/generate-p2v-config.pl
@@ -386,8 +386,9 @@ If not specified, the default is F</var/tmp> (on the 
conversion server).",
     description => "
 Set miscellaneous output option(s) related to the selected output mode.
 This is the same as the virt-v2v I<-oo> option; each C<OPTION=VALUE>
-element in the list will be turned into a separate I<-oo OPTION=VALUE>
-option on the virt-v2v command line.  See L<virt-v2v(1)/OPTIONS>.",
+element in the list will be turned into a separate S<I<-oo
+OPTION=VALUE>> option on the virt-v2v command line.  See
+L<virt-v2v(1)/OPTIONS>.",
   ),
 );
 
diff --git a/virt-p2v.pod b/virt-p2v.pod
index 6008c25d6159..765cee082cc3 100644
--- a/virt-p2v.pod
+++ b/virt-p2v.pod
@@ -181,14 +181,14 @@ first-time virt-p2v user.
 All output options and paths are relative to the conversion server
 (I<not> to the physical server).
 
-Note that the C<Misc. options> text entry behaves differently from the
-other text entries -- its format is identical to that of the
+Note that the S<C<Misc. options>> text entry behaves differently from
+the other text entries -- its format is identical to that of the
 C<p2v.output.misc> L<kernel command line|/KERNEL COMMAND LINE
 CONFIGURATION> option.  Namely, the text entry contains a
 comma-separated list of miscellaneous, output-specific options.  (Do
 not put spaces around the commas!)  Each element in the list is of the
 form C<OPTION=VALUE>, and each element is passed to virt-v2v as a
-standalone I<-oo OPTION=VALUE> option.
+standalone S<I<-oo OPTION=VALUE>> option.
 
 Finally in the left hand column is an information box giving the
 version of virt-p2v (on the physical server) and virt-v2v (on the

I've also verified the resultant output in the HTML manual, both the rendered 
view, and the HTML source view.

Commit range f4c7ae6ba98f..62e92514e11f.

Laszlo

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to