From 7f65573e68f1cf6d17202ea39aef87d53413a087 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Mon, 28 May 2018 17:31:48 -0400 Subject: [PATCH] Bash completion: ignore namespace for xmllint parsing MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit xmllint cli does not "easily" support namespace. One can use the local_name() xpath function and other "trick". The simplest trick for bash completion is to ignore the namespace altogether. Replacing "xmlns" by "ignore" does the job. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- extras/lttng-bash_completion | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extras/lttng-bash_completion b/extras/lttng-bash_completion index ef1a71ab3..c7482c545 100644 --- a/extras/lttng-bash_completion +++ b/extras/lttng-bash_completion @@ -18,7 +18,7 @@ # Generates COMPREPLY with the existing session names _lttng_complete_sessions() { local sessions - sessions=$(lttng --mi xml list | xmllint --xpath "//command/output/sessions/session/name" - 2>/dev/null | sed -e 's///g' -e $'s/<\/name>/\\n/g') + sessions=$(lttng --mi xml list | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/sessions/session/name" - 2>/dev/null | sed -e 's///g' -e $'s/<\/name>/\\n/g') COMPREPLY=( $(compgen -W "${sessions}" -- $cur) ) return } @@ -27,7 +27,7 @@ _lttng_complete_sessions() { # Generates COMPREPLY with the available kernel event _lttng_complete_kernel_events() { local kernel_event - kernel_event=$(lttng --mi xml list -k | xmllint --xpath "//command/output/domains/domain[./type = 'KERNEL']/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") + kernel_event=$(lttng --mi xml list -k |sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'KERNEL']/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") COMPREPLY=( $(compgen -W "${kernel_event}" -- $cur) ) return } @@ -35,7 +35,7 @@ _lttng_complete_kernel_events() { # Generates COMPREPLY with the available ust event _lttng_complete_ust_events() { local ust_event - ust_event=$(lttng --mi xml list -u | xmllint --xpath "//command/output/domains/domain[./type = 'UST']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") + ust_event=$(lttng --mi xml list -u | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'UST']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") COMPREPLY=( $(compgen -W "${ust_event}" -- $cur) ) return } @@ -43,7 +43,7 @@ _lttng_complete_ust_events() { # Generates COMPREPLY with the available jul event _lttng_complete_jul_events() { local jul_event - jul_event=$(lttng --mi xml list -j | xmllint --xpath "//command/output/domains/domain[./type = 'JUL']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") + jul_event=$(lttng --mi xml list -j | sed '2 s/xmlns/ignore/g' | xmllint --xpath "//command/output/domains/domain[./type = 'JUL']/pids/pid/events/event/name" - 2>/dev/null | sed -e "s///g" -e $"s/<\/name>/\\n/g") COMPREPLY=( $(compgen -W "${jul_event}" -- $cur) ) return } -- 2.34.1