Sun, 17 Dec 2023 15:33:50 +0100
fix faulty string to int conversion utilities
Probably it was expected that errno is set to EINVAL when illegal characters are encountered. But this is not standard and does not happen on every system, allowing illegal strings to be parsed as valid integers.
676
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
1 | dav_completion_build_args() { |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
2 | local word |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
3 | for i in "${!COMP_WORDS[@]}"; do |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
4 | word="${COMP_WORDS[$i]}" |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
5 | if [[ "$word" =~ ^\'|^\" ]]; then |
684
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
6 | printf "%s\n" "$word" |
676
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
7 | else |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
8 | echo "$word" | xargs printf "%s" |
684
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
9 | printf "\n" |
676
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
10 | fi |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
11 | done |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
12 | } |
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
13 | |
431
1e8592657a01
adds semi-functional bash completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | dav_completion() { |
676
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
15 | local cmd |
434
bc173bae3caa
improves dav-bash-completion.bash
Mike Becker <universe@uap-core.de>
parents:
431
diff
changeset
|
16 | local out |
bc173bae3caa
improves dav-bash-completion.bash
Mike Becker <universe@uap-core.de>
parents:
431
diff
changeset
|
17 | local cmd_res |
bc173bae3caa
improves dav-bash-completion.bash
Mike Becker <universe@uap-core.de>
parents:
431
diff
changeset
|
18 | |
676
fb466ba2edc5
bash completion now handles spaces correctly in both quoted and unquoted strings
Mike Becker <universe@uap-core.de>
parents:
673
diff
changeset
|
19 | cmd="${COMP_WORDS[0]} complete $COMP_CWORD" |
684
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
20 | out=$(dav_completion_build_args | $cmd 2> /dev/null) |
435
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
21 | cmd_res=$? |
434
bc173bae3caa
improves dav-bash-completion.bash
Mike Becker <universe@uap-core.de>
parents:
431
diff
changeset
|
22 | |
673
8e7e56cfc103
adds support for quotes in dav bash completion
Mike Becker <universe@uap-core.de>
parents:
457
diff
changeset
|
23 | if [[ $cmd_res -eq 10 ]]; then |
435
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
24 | compopt -o nospace |
684
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
25 | fi |
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
26 | |
a4b4257c1a5f
improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
676
diff
changeset
|
27 | |
673
8e7e56cfc103
adds support for quotes in dav bash completion
Mike Becker <universe@uap-core.de>
parents:
457
diff
changeset
|
28 | if [[ $cmd_res -eq 12 ]]; then |
435
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
29 | compopt -o default |
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
30 | COMPREPLY=() |
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
31 | else |
434
bc173bae3caa
improves dav-bash-completion.bash
Mike Becker <universe@uap-core.de>
parents:
431
diff
changeset
|
32 | IFS=$'\n' declare -ga 'COMPREPLY=($out)' |
435
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
33 | fi |
431
1e8592657a01
adds semi-functional bash completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
34 | } |
1e8592657a01
adds semi-functional bash completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
435
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
36 | complete -F dav_completion dav |
def0359fb48f
adds some error detection to completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
434
diff
changeset
|
37 |