diff --git a/z.sh b/z.sh index 9d4dc2b..c940a78 100755 --- a/z.sh +++ b/z.sh @@ -37,7 +37,8 @@ _z() { [ "$*" = "$HOME" ] && return # maintain the file - local tempfile="$(mktemp $datafile.XXXXXX)" || return + local tempfile + tempfile="$(mktemp $datafile.XXXXXX)" || return awk -v path="$*" -v now="$(date +%s)" -F"|" ' BEGIN { rank[path] = 1 @@ -59,7 +60,9 @@ _z() { } else for( i in rank ) print i "|" rank[i] "|" time[i] } ' "$datafile" 2>/dev/null >| "$tempfile" - env mv -f "$tempfile" "$datafile" + if [ $? -eq 0 ]; then + env mv -f "$tempfile" "$datafile" + fi # tab completion elif [ "$1" = "--complete" ]; then @@ -98,8 +101,10 @@ _z() { # no file yet [ -f "$datafile" ] || return - local tempfile="$(mktemp $datafile.XXXXXX)" || return - local cd="$(awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -v tmpfl="$tempfile" -F"|" ' + local tempfile + tempfile="$(mktemp $datafile.XXXXXX)" || return + local cd + cd="$(awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -v tmpfl="$tempfile" -F"|" ' function frecent(rank, time) { dx = t-time if( dx < 3600 ) return rank*4