diff --git a/tools/virsh.c b/tools/virsh.c index cfc4803c1a..ddcc052855 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -7842,20 +7842,17 @@ editFile (vshControl *ctl, const char *filename) char *command; int command_ret; - editor = getenv ("EDITOR"); + editor = getenv ("VISUAL"); + if (!editor) editor = getenv ("EDITOR"); if (!editor) editor = "vi"; /* could be cruel & default to ed(1) here */ - /* Check the editor doesn't contain shell meta-characters, and if - * it does, refuse to run. + /* Check that filename doesn't contain shell meta-characters, and + * if it does, refuse to run. Follow the Unix conventions for + * EDITOR: the user can intentionally specify command options, so + * we don't protect any shell metacharacters there. Lots more + * than virsh will misbehave if EDITOR has bogus contents (which + * is why sudo scrubs it by default). */ - if (strspn (editor, ACCEPTED_CHARS) != strlen (editor)) { - vshError(ctl, - _("%s: $EDITOR environment variable contains shell meta or " - "other unacceptable characters"), - editor); - return -1; - } - /* Same for the filename. */ if (strspn (filename, ACCEPTED_CHARS) != strlen (filename)) { vshError(ctl, _("%s: temporary filename contains shell meta or other " diff --git a/tools/virsh.pod b/tools/virsh.pod index c90a7832b1..9434f312b4 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -332,8 +332,8 @@ This is equivalent to: virsh define domain.xml except that it does some error checking. -The editor used can be supplied by the C<$EDITOR> environment -variable, or if that is not defined defaults to C. +The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment +variables, and defaults to C. =item B optional I<--live> I<--suspend> I I I @@ -563,8 +563,8 @@ This is equivalent to: virsh define network.xml except that it does some error checking. -The editor used can be supplied by the C<$EDITOR> environment -variable, or if that is not defined defaults to C. +The editor used can be supplied by the C<$VISUAL> or C<$EDITOR> environment +variables, and defaults to C. =item B optional I<--inactive> or I<--all> @@ -645,10 +645,15 @@ of C The hypervisor to connect to by default. Set this to a URI, in the same format as accepted by the B option. -=item EDITOR +=item VISUAL The editor to use by the B and B options. +=item EDITOR + +The editor to use by the B and B options, if C +is not set. + =item LIBVIRT_DEBUG=LEVEL Turn on verbose debugging of all libvirt API calls. Valid levels are