Skip to content

Commit

Permalink
main: fix issues with "ble/bin/awk"
Browse files Browse the repository at this point in the history
* ble/bin/awk: fix the version detection for nawk
* ble/bin/awk (macOS): fix a problem that locale variables were not exported
* ble/bin/awk (macOS): set "LC_COLLATE=C"
  • Loading branch information
akinomyoga committed Dec 10, 2024
1 parent 169ed8b commit b0a7adc
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
13 changes: 8 additions & 5 deletions ble.pp
Original file line number Diff line number Diff line change
Expand Up @@ -1354,8 +1354,10 @@ function ble/bin/awk/.instantiate {
if ble/bin#get-path nawk; then
[[ $path == ./* || $path == ../* ]] && path=$PWD/$path
# Note: Some distribution (like Ubuntu) provides gawk as "nawk" by
# default. To avoid wrongly picking gawk as nawk, we need to check the
# version output from the command.
# default. To avoid wrongly picking up gawk as nawk, we need to check the
# version output from the command. 2024-12-10 In KaKi87's server [1],
# Debian 12 provided mawk as "nawk".
# [1] https://github.com/akinomyoga/ble.sh/issues/535#issuecomment-2528258996
local version
ble/util/assign version '"$path" -W version' 2>/dev/null </dev/null
if [[ $version != *'GNU Awk'* && $version != *mawk* ]]; then
Expand Down Expand Up @@ -1393,7 +1395,8 @@ function ble/bin/awk/.instantiate {
elif ble/bin#get-path awk; then
[[ $path == ./* || $path == ../* ]] && path=$PWD/$path
local version
ble/util/assign version '"$path" -W version || "$path" --version' 2>/dev/null </dev/null
ble/util/assign version '"$path" -W version' 2>/dev/null </dev/null && [[ $version ]] ||
ble/util/assign version '"$path" --version' 2>/dev/null </dev/null
if [[ $version == *'GNU Awk'* ]]; then
_ble_bin_awk_type=gawk
elif [[ $version == *mawk* ]]; then
Expand All @@ -1411,9 +1414,9 @@ function ble/bin/awk/.instantiate {
# る。テスト不可能だが、そもそも nawk は UTF-8 に対応していない前提な
# ので、取り敢えず LC_CTYPE=C で実行する。
function ble/bin/awk {
local LC_ALL= LC_CTYPE=C 2>/dev/null
local -x LC_ALL= LC_CTYPE=C LC_COLLATE=C 2>/dev/null
/usr/bin/awk -v AWKTYPE=nawk "$@"; local ext=$?
ble/util/unlocal LC_ALL LC_CTYPE 2>/dev/null
ble/util/unlocal LC_ALL LC_CTYPE LC_COLLATE 2>/dev/null
return "$ext"
}
elif [[ $_ble_bin_awk_type == [gmn]awk ]] && ! ble/is-function "ble/bin/$_ble_bin_awk_type" ; then
Expand Down
1 change: 1 addition & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
- mandb: fix incorrect use of `groff` in place of `nroff` `#D2245` e0ffc418
- edit: fix fd broken by ble-attach of new session in user space (reported by JohEngstrom) `#D2271` 49f97618 670c7ea0
- util (`ble-import`): do not specify arguments to `-C callback` `#D2277` 4f0e94a2
- main: fix issues with `ble/bin/awk` (reported by devidw) `#D2292` xxxxxxxx

## Compatibility

Expand Down
29 changes: 29 additions & 0 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7522,6 +7522,35 @@ bash_tips
Done (実装ログ)
-------------------------------------------------------------------------------

2024-10-20

* complete: macOS awk の "towc: multibyte conversion failure on: '...'"エラー (reported by devidw) [#D2292]
https://github.com/akinomyoga/ble.sh/issues/515

Ref #D1974

x fixed: macOS awk の workaround として LC_CTYPE を指定していたが単に local
を指定しているだけなので呼び出している awk に対してちゃんと環境変数として
渡せていなかったのではないか。local -x として宣言する必要がある。

更に LC_CTYPE だけでなく LC_COLLATE についてもちゃんと指定しないと正規表
現の中にある範囲指定が正しく動作しない (可能性がある)。

https://github.com/akinomyoga/ble.sh/issues/515#issuecomment-2425177424
を見る限りは LC_CTYPE さえ指定していれば問題は発生しない様である。なので、
報告された問題は、本来、前回の workaround の LC_CTYPE が正しく export さ
れていれば発生しなかった筈の物である。

x fixed: nawk の判定が正しく動作していない。

"$path" -W version || "$path" --version

で version を取得しようとしているが、nawk は "-W" に対応してないというエ
ラーメッセージが出るにも拘らず 'version' を AWK script だと思って実行し、
成功する。従って "$path" --version が呼び出されずに version 文字列の取得
に失敗する。"$path" -W version の実行結果を確認して、それが空だった時は
"$path" --version を使う様に変更する事にした。

2024-10-19

* complete: make menu-item styles configurable (requested by simonLeary42) [#D2291]
Expand Down

0 comments on commit b0a7adc

Please sign in to comment.