|
23 | 23 | # * z -l foo # list matches instead of cd |
24 | 24 | # * z -c foo # restrict matches to subdirs of $PWD |
25 | 25 |
|
26 | | -case $(uname -a) in |
27 | | - SunOS*) awk() { nawk "$@"; } ;; |
28 | | -esac |
29 | | - |
30 | 26 | [ -d "${_Z_DATA:-$HOME/.z}" ] && { |
31 | 27 | echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." |
32 | 28 | } |
33 | 29 |
|
| 30 | +_z_pick_awk_flavor() { |
| 31 | + if [ -z "$_Z_AWK" ]; then |
| 32 | + local awk; for awk in mawk gawk original-awk nawk awk; do |
| 33 | + command -v $awk > /dev/null 2>&1 && _Z_AWK=$awk && break |
| 34 | + done |
| 35 | + fi |
| 36 | +} |
| 37 | + |
34 | 38 | _z() { |
35 | 39 |
|
36 | 40 | local datafile="${_Z_DATA:-$HOME/.z}" |
|
65 | 69 |
|
66 | 70 | # maintain the data file |
67 | 71 | local tempfile="$datafile.$RANDOM" |
68 | | - _z_dirs | awk -v path="$*" -v now="$(date +%s)" -F"|" ' |
| 72 | + _z_dirs | $_Z_AWK -v path="$*" -v now="$(date +%s)" -F"|" ' |
69 | 73 | BEGIN { |
70 | 74 | rank[path] = 1 |
71 | 75 | time[path] = now |
@@ -98,7 +102,7 @@ _z() { |
98 | 102 |
|
99 | 103 | # tab completion |
100 | 104 | elif [ "$1" = "--complete" -a -s "$datafile" ]; then |
101 | | - _z_dirs | awk -v q="$2" -F"|" ' |
| 105 | + _z_dirs | $_Z_AWK -v q="$2" -F"|" ' |
102 | 106 | BEGIN { |
103 | 107 | q = substr(q, 3) |
104 | 108 | if( q == tolower(q) ) imatch = 1 |
@@ -138,7 +142,7 @@ _z() { |
138 | 142 | [ -f "$datafile" ] || return |
139 | 143 |
|
140 | 144 | local cd |
141 | | - cd="$( < <( _z_dirs ) awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' |
| 145 | + cd="$( < <( _z_dirs ) $_Z_AWK -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' |
142 | 146 | function frecent(rank, time) { |
143 | 147 | # relate frequency and time |
144 | 148 | dx = t - time |
@@ -214,6 +218,8 @@ _z() { |
214 | 218 | fi |
215 | 219 | } |
216 | 220 |
|
| 221 | +_z_pick_awk_flavor |
| 222 | + |
217 | 223 | alias ${_Z_CMD:-z}='_z 2>&1' |
218 | 224 |
|
219 | 225 | [ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P" |
|
0 commit comments