mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-08 03:13:48 -05:00
[bash,zsh] Fix the version check for mawk (#4574)
We have been checking the mawk version by extracting <x>, <y>, <z>, and <d> part from "mawk <x>.<y>.<z> <d>" in the output of the "mawk -W version" and testing <x>, <y>, <z>, and <d> using an arithmetic evalaution. However, <d> is ensured to be an integer only in "x.y.z >= 1.3.4". Otherwise, it may cause a syntax error in the arithmetic evaluation. The mawk started to include the date as an integer in the <d> position only from mawk-1.3.3-20090721. We should first check that "x.y.z >= 1.3.4" and then check the value of "d". In case, "mawk -W version" produces a completely different text, we should also redirect stderr of the arithmetic commands to /dev/null.
This commit is contained in:
@@ -26,7 +26,10 @@ __fzf_exec_awk() {
|
|||||||
# version >= 1.3.4
|
# version >= 1.3.4
|
||||||
local n x y z d
|
local n x y z d
|
||||||
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
||||||
[[ $n == mawk ]] && ((d >= 20230302 && (x * 1000 + y) * 1000 + z >= 1003004)) && __fzf_awk=mawk
|
[[ $n == mawk ]] &&
|
||||||
|
(((x * 1000 + y) * 1000 + z >= 1003004)) 2> /dev/null &&
|
||||||
|
((d >= 20230302)) 2> /dev/null &&
|
||||||
|
__fzf_awk=mawk
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Note: macOS awk has a quirk that it stops processing at all when it sees
|
# Note: macOS awk has a quirk that it stops processing at all when it sees
|
||||||
|
|||||||
@@ -51,7 +51,10 @@ __fzf_exec_awk() {
|
|||||||
elif command -v mawk > /dev/null 2>&1; then
|
elif command -v mawk > /dev/null 2>&1; then
|
||||||
local n x y z d
|
local n x y z d
|
||||||
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
||||||
[[ $n == mawk ]] && ((d >= 20230302 && (x * 1000 + y) * 1000 + z >= 1003004)) && __fzf_awk=mawk
|
[[ $n == mawk ]] &&
|
||||||
|
(((x * 1000 + y) * 1000 + z >= 1003004)) 2> /dev/null &&
|
||||||
|
((d >= 20230302)) 2> /dev/null &&
|
||||||
|
__fzf_awk=mawk
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
LC_ALL=C exec "$__fzf_awk" "$@"
|
LC_ALL=C exec "$__fzf_awk" "$@"
|
||||||
|
|||||||
@@ -115,7 +115,10 @@ __fzf_exec_awk() {
|
|||||||
elif command -v mawk > /dev/null 2>&1; then
|
elif command -v mawk > /dev/null 2>&1; then
|
||||||
local n x y z d
|
local n x y z d
|
||||||
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
||||||
[[ $n == mawk ]] && ((d >= 20230302 && (x * 1000 + y) * 1000 + z >= 1003004)) && __fzf_awk=mawk
|
[[ $n == mawk ]] &&
|
||||||
|
(((x * 1000 + y) * 1000 + z >= 1003004)) 2> /dev/null &&
|
||||||
|
((d >= 20230302)) 2> /dev/null &&
|
||||||
|
__fzf_awk=mawk
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
LC_ALL=C exec "$__fzf_awk" "$@"
|
LC_ALL=C exec "$__fzf_awk" "$@"
|
||||||
|
|||||||
@@ -38,7 +38,10 @@ __fzf_exec_awk() {
|
|||||||
elif command -v mawk > /dev/null 2>&1; then
|
elif command -v mawk > /dev/null 2>&1; then
|
||||||
local n x y z d
|
local n x y z d
|
||||||
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
||||||
[[ $n == mawk ]] && ((d >= 20230302 && (x * 1000 + y) * 1000 + z >= 1003004)) && __fzf_awk=mawk
|
[[ $n == mawk ]] &&
|
||||||
|
(((x * 1000 + y) * 1000 + z >= 1003004)) 2> /dev/null &&
|
||||||
|
((d >= 20230302)) 2> /dev/null &&
|
||||||
|
__fzf_awk=mawk
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
LC_ALL=C exec "$__fzf_awk" "$@"
|
LC_ALL=C exec "$__fzf_awk" "$@"
|
||||||
|
|||||||
@@ -58,7 +58,10 @@ __fzf_exec_awk() {
|
|||||||
elif command -v mawk > /dev/null 2>&1; then
|
elif command -v mawk > /dev/null 2>&1; then
|
||||||
local n x y z d
|
local n x y z d
|
||||||
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
IFS=' .' read -r n x y z d <<< $(command mawk -W version 2> /dev/null)
|
||||||
[[ $n == mawk ]] && ((d >= 20230302 && (x * 1000 + y) * 1000 + z >= 1003004)) && __fzf_awk=mawk
|
[[ $n == mawk ]] &&
|
||||||
|
(((x * 1000 + y) * 1000 + z >= 1003004)) 2> /dev/null &&
|
||||||
|
((d >= 20230302)) 2> /dev/null &&
|
||||||
|
__fzf_awk=mawk
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
LC_ALL=C exec "$__fzf_awk" "$@"
|
LC_ALL=C exec "$__fzf_awk" "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user