[pacman-dev] [PATCH] bash-completion: use POSIX character classes in regular expressions

Eli Schwartz eschwartz at archlinux.org
Tue Jun 25 21:20:06 UTC 2019


bash uses POSIX extended regular expressions via regex(3), which does
not guarantee support for shorthand character classes. Although glibc
supports it, msys2-runtime does not.

Make sure the completion script works (hopefully) everywhere by being
more portable.

Fixes: https://github.com/msys2/MSYS2-packages/pull/1549

Original-patch-by: plotasse <platos at protonmail.ch>
Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
---
 scripts/completion/bash_completion.in | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/completion/bash_completion.in b/scripts/completion/bash_completion.in
index a1ab9fec..915004e2 100644
--- a/scripts/completion/bash_completion.in
+++ b/scripts/completion/bash_completion.in
@@ -24,7 +24,7 @@ _arch_ptr2comp() {
 }
 
 _arch_incomp() {
-  local r="\s-(-${1#* }\s|\w*${1% *})"; [[ $COMP_LINE =~ $r ]]
+  local r="[[:space:]]-(-${1#* }[[:space:]]|[[:alnum:]_]*${1% *})"; [[ $COMP_LINE =~ $r ]]
 }
 
 _pacman_keyids() {
@@ -77,7 +77,7 @@ _makepkg() {
   _init_completion || return
   if [[ $prev = @(-p|--config) ]]; then
     compopt -o default
-  elif [[ ! $prev =~ ^-(-(config|help|key|version)$|\w*[Vh]) ]]; then
+  elif [[ ! $prev =~ ^-(-(config|help|key|version)$|[[:alnum:]_]*[Vh]) ]]; then
     opts=('allsource asdeps check clean cleanbuild config force geninteg help
            holdver ignorearch install key log needed noarchive nobuild nocheck
            nocolor noconfirm nodeps noextract noprepare noprogressbar nosign
@@ -127,7 +127,7 @@ _pacman() {
 
   if [[ $? != 0 ]]; then
     _arch_ptr2comp core
-  elif [[ ! $prev =~ ^-\w*[Vbhr] &&
+  elif [[ ! $prev =~ ^-[[:alnum:]_]*[Vbhr] &&
     ! $prev = --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|logfile|root|version) ]]
   then
     [[ $cur = -* ]] && _arch_ptr2comp ${o#* } common ||
-- 
2.22.0


More information about the pacman-dev mailing list