libvirt/tools
Michal Privoznik b889594a70 tools: Set IFS for bash completion script
The way our bash completion string is that is gets user's input
and lets virsh completion code do all the work by calling 'virsh
complete -- $INPUT". The 'complete' command is a "secret",
unlisted command that exists solely for this purpose. After it
has done it's part, it prints candidates onto stdout, each
candidate on its own line, e.g. like this:

  # virsh complete -- "net-u"
  net-undefine
  net-update
  net-uuid

These strings are then stored into a bash array $A like this:

  A=($($1 ${CMDLINE} complete -- "${INPUT[@]}" 2>/dev/null))

This array is then thrown back at bash completion to produce
desired output. So far so good. Except, when there is an option
with space. For instance:

  # virsh complete -- start --domain ""
  uefi\ duplicate
  uefi

Bash interprets that as another array item because by default,
Internal Field Separator (IFS) = set of characters that bash uses
to split words at, is: space, TAB, newline. We don't want space
nor TAB. Therefore, we have to set $IFS when storing 'virsh
complete' output into the array.

Thanks to Peter who suggested it.

Resolves: https://gitlab.com/libvirt/libvirt/-/issues/116
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2021-01-26 16:46:41 +01:00
..
bash-completion tools: Set IFS for bash completion script 2021-01-26 16:46:41 +01:00
nss meson: Fix build with -Dtest_coverage=true 2021-01-19 16:25:50 +01:00
wireshark meson: Fix build with -Dtest_coverage=true 2021-01-19 16:25:50 +01:00
libvirt_recover_xattrs.sh libvirt_recover_xattrs: Allow fixing multiple PATHs 2020-12-04 16:27:22 +01:00
libvirt_win_icon_16x16.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_32x32.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_48x48.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_64x64.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt-guests.service.in build: don't hardcode /etc in the config related files 2019-08-09 14:06:31 +01:00
libvirt-guests.sh.in libvirt-guests: Sync time for autostarted guests 2020-11-04 12:18:05 +01:00
libvirt-guests.sysconf libvirt-guests: Remove obsolete Windows comment 2020-12-07 10:38:44 +00:00
meson.build meson: Use @BASENAME@ more 2020-09-01 13:22:24 +02:00
virsh_win_icon.rc Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
virsh-backup.c virsh: limit completion of backup-{begin, dumpxml} to active domains 2020-09-14 15:52:40 +02:00
virsh-backup.h backup: Implement virsh support for backup 2019-12-10 12:41:56 +01:00
virsh-checkpoint.c Fix name prefix of VIR_DOMAIN_CHECKPOINT_REDEFINE_VALIDATE 2020-11-09 16:29:06 +00:00
virsh-checkpoint.h backup: Implement virsh support for checkpoints 2019-07-26 16:48:58 -05:00
virsh-completer-checkpoint.c virsh-completer: use g_new0 instead of VIR_ALLOC_N 2020-09-15 13:46:11 +02:00
virsh-completer-checkpoint.h tools: Separate checkpoint related completers into a file 2019-08-09 09:18:19 +02:00
virsh-completer-domain.c virsh: Fix XPATH in virshDomainDeviceAliasCompleter() 2021-01-22 10:45:54 +01:00
virsh-completer-domain.h Add lifecycle action completion to set-lifecycle-action command 2020-11-10 18:34:33 +01:00
virsh-completer-host.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-host.h virsh: Add logical CPU IDs completion for nodecpustats command 2020-11-10 18:34:02 +01:00
virsh-completer-interface.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-interface.h virsh: Add interface mac completion to iface-name command 2020-11-10 18:34:11 +01:00
virsh-completer-network.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-network.h virsh: Add mac completion to net-dhcp-leases command 2020-11-10 18:34:23 +01:00
virsh-completer-nodedev.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-nodedev.h tools: Separate nodedev related completers into a file 2019-08-09 09:10:08 +02:00
virsh-completer-nwfilter.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-nwfilter.h tools: Separate nwfilter related completers into a file 2019-08-09 09:15:36 +02:00
virsh-completer-pool.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-pool.h virsh: Introduce virshPoolTypeCompleter 2019-08-09 09:20:13 +02:00
virsh-completer-secret.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-secret.h tools: Separate secret related completers into a file 2019-08-09 09:16:28 +02:00
virsh-completer-snapshot.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-snapshot.h tools: Separate snapshot related completers into a file 2019-08-09 09:17:06 +02:00
virsh-completer-volume.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer-volume.h tools: Separate storage volume related completers into a file 2019-08-09 09:07:02 +02:00
virsh-completer.c lib: Replace VIR_AUTOSTRINGLIST with GStrv 2020-12-02 15:43:07 +01:00
virsh-completer.h virsh-completer: Drop needless #include 2019-08-09 09:18:54 +02:00
virsh-console.c src: add missing headers to various files 2021-01-06 13:15:17 +01:00
virsh-console.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-domain-monitor.c virsh: Allow listing just domain IDs 2020-11-09 11:28:23 +01:00
virsh-domain-monitor.h virsh: Fix virshDomainInterfaceSourceCompleter 2020-01-07 16:12:55 +01:00
virsh-domain.c virsh-domain: Add quotes around '%s' formatting domain name 2021-01-06 09:25:07 +01:00
virsh-domain.h virsh: Move/add some of function declarations to virsh-domain.h 2020-11-10 18:34:26 +01:00
virsh-edit.c Use G_GNUC_FALLTHROUGH instead of ATTRIBUTE_FALLTHROUGH 2019-10-15 16:14:19 +02:00
virsh-host.c virsh: Add logical CPU IDs completion for nodecpustats command 2020-11-10 18:34:02 +01:00
virsh-host.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virsh-interface.c virsh: Add interface name completion to iface-mac command 2020-11-10 18:34:16 +01:00
virsh-interface.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-network.c virsh: Add mac completion to net-dhcp-leases command 2020-11-10 18:34:23 +01:00
virsh-network.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-nodedev.c virsh: nodedev: filter by AP Matrix capability 2020-12-09 14:03:05 +01:00
virsh-nodedev.h tools: s/Nodedev/NodeDevice/ 2019-08-09 09:03:53 +02:00
virsh-nwfilter.c virsh: use g_new0 instead of vsh[CM]alloc 2020-10-06 09:01:46 +02:00
virsh-nwfilter.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-pool.c virsh: use g_new0 instead of vsh[CM]alloc 2020-10-06 09:01:46 +02:00
virsh-pool.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-secret.c virsh: use g_new0 instead of vsh[CM]alloc 2020-10-06 09:01:46 +02:00
virsh-secret.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virsh-snapshot.c virsh: use g_new0 instead of vsh[CM]alloc 2020-10-06 09:01:46 +02:00
virsh-snapshot.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virsh-util.c src: add missing headers to various files 2021-01-06 13:15:17 +01:00
virsh-util.h virsh: Track if vol-upload or vol-download work over a block device 2020-08-24 13:32:53 +02:00
virsh-volume.c virsh: use g_new0 instead of vsh[CM]alloc 2020-10-06 09:01:46 +02:00
virsh-volume.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh.c vsh: Rework how option to complete is found 2021-01-26 16:46:41 +01:00
virsh.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virt-admin-completer.c tools: use g_new0 instead of VIR_ALLOC* 2020-10-01 12:34:13 +02:00
virt-admin-completer.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-admin.c vsh: Rework how option to complete is found 2021-01-26 16:46:41 +01:00
virt-admin.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-bhyve.c virt-host-validate-bhyve.c: Reintroduce @ret to virHostValidateBhyve() 2020-05-05 14:45:58 +02:00
virt-host-validate-bhyve.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-common.c virt-host-validate: fix detection with cgroups v2 2020-11-19 01:18:35 +01:00
virt-host-validate-common.h tools: Secure guest check for AMD in virt-host-validate 2020-06-16 09:43:44 +02:00
virt-host-validate-lxc.c virt-host-validate: require freezer for LXC 2018-10-05 15:53:29 +02:00
virt-host-validate-lxc.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-qemu.c tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virt-host-validate-qemu.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virt-login-shell-helper.c Fix incorrect g_new0 conversions 2020-10-06 14:26:43 +02:00
virt-login-shell.c build: generate configmake.h in root directory 2020-01-29 14:51:39 +00:00
virt-login-shell.conf virt-login-shell: add ability to auto-detect shell from container 2016-06-10 11:03:02 +01:00
virt-pki-validate.in tools: Fix permissions for virt-pki-validate.in 2019-07-01 17:20:32 +02:00
virt-sanlock-cleanup.in build: Extract pod from source files 2016-04-25 15:40:43 +02:00
virt-xml-validate.in tools: fix XML validator detection of network port XML schema 2019-09-12 16:06:57 +01:00
vsh-table.c tools: use g_new0 instead of VIR_ALLOC* 2020-10-01 12:34:13 +02:00
vsh-table.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
vsh.c vsh: Allow double quotes imbalance for auto completion in vshCommandStringGetArg() 2021-01-26 16:46:41 +01:00
vsh.h vsh: Rework how option to complete is found 2021-01-26 16:46:41 +01:00