From 72bbf692d4961f65fb4f5303767489bf088a571c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandros=20Koz=C3=A1k?= Date: Tue, 23 Jan 2018 09:24:26 -0800 Subject: [PATCH] Pick a git flavor and assign it to $_Z_AWK --- z.sh | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/z.sh b/z.sh index a64b130..1ef9bb6 100644 --- a/z.sh +++ b/z.sh @@ -23,14 +23,18 @@ # * z -l foo # list matches instead of cd # * z -c foo # restrict matches to subdirs of $PWD -case $(uname -a) in - SunOS*) awk() { nawk "$@"; } ;; -esac - [ -d "${_Z_DATA:-$HOME/.z}" ] && { echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." } +_z_pick_awk_flavor() { + if [ -z "$_Z_AWK" ]; then + local awk; for awk in mawk gawk original-awk nawk awk; do + command -v $awk > /dev/null 2>&1 && _Z_AWK=$awk && break + done + fi +} + _z() { local datafile="${_Z_DATA:-$HOME/.z}" @@ -65,7 +69,7 @@ _z() { # maintain the data file local tempfile="$datafile.$RANDOM" - _z_dirs | awk -v path="$*" -v now="$(date +%s)" -F"|" ' + _z_dirs | $_Z_AWK -v path="$*" -v now="$(date +%s)" -F"|" ' BEGIN { rank[path] = 1 time[path] = now @@ -98,7 +102,7 @@ _z() { # tab completion elif [ "$1" = "--complete" -a -s "$datafile" ]; then - _z_dirs | awk -v q="$2" -F"|" ' + _z_dirs | $_Z_AWK -v q="$2" -F"|" ' BEGIN { q = substr(q, 3) if( q == tolower(q) ) imatch = 1 @@ -138,7 +142,7 @@ _z() { [ -f "$datafile" ] || return local cd - cd="$( < <( _z_dirs ) awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' + cd="$( < <( _z_dirs ) $_Z_AWK -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' function frecent(rank, time) { # relate frequency and time dx = t - time @@ -214,6 +218,8 @@ _z() { fi } +_z_pick_awk_flavor + alias ${_Z_CMD:-z}='_z 2>&1' [ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P"