mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
File completion: fix incomplete multibyte support
Upon encountering two filenames with multibyte characters starting with the same byte, a partial multibyte character was completed. Reproducer (to run in UTF-8 locale): $ touch XXXá XXXë $ : XX <== pres tab $ : XXX^? <== partial multibyte character appears Note: á is $'\xc3\xa1' and ë is $'\xc3\xab' (same initial byte). src/cmd/ksh93/edit/completion.c: - Add multibyte support to the charcmp() and overlaid() functions. Thanks to Harald van Dijk for useful code and suggestions. - Add a few missing mbinit() calls. The state of multibyte processing must be reset before starting a new loop in case a previous processing run was interrupted mid-character. src/cmd/ksh93/tests/pty.sh: - Add test based on Harald's reproducer. Resolves: https://github.com/ksh93/ksh/issues/223
This commit is contained in:
parent
936a1939a8
commit
33d0f004de
4 changed files with 37 additions and 5 deletions
|
@ -772,5 +772,18 @@ w echo $? ~\t
|
|||
u 42 /tmp
|
||||
!
|
||||
|
||||
# err_exit #
|
||||
((SHOPT_MULTIBYTE)) &&
|
||||
[[ ${LC_ALL:-${LC_CTYPE:-${LANG:-}}} =~ [Uu][Tt][Ff]-?8 ]] &&
|
||||
touch $'XXX\xc3\xa1' $'XXX\xc3\xab' &&
|
||||
tst $LINENO <<"!"
|
||||
L autocomplete should not fill partial multibyte characters
|
||||
# https://github.com/ksh93/ksh/issues/223
|
||||
d 15
|
||||
p :test-1:
|
||||
w : XX\t
|
||||
r ^:test-1: : XXX\r\n$
|
||||
!
|
||||
|
||||
# ======
|
||||
exit $((Errors<125?Errors:125))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue