use mktemp to prevent file clobbering (d'oh!). closes #9

This commit is contained in:
rupa committed 2011-01-27 14:22:57 -05:00
1 parent 3f418bab5d
commit 5142b69212
1 file changed
+7 -5
+7 -5
View File
@@ -32,6 +32,7 @@ z() {
[ "$*" = "$HOME" ] && return
# maintain the file
local tempfile="$(mktemp $datafile.XXXXXX)" || return
awk -v path="$*" -v now="$(date +%s)" -F"|" '
BEGIN {
rank[path] = 1
@@ -52,8 +53,8 @@ z() {
for( i in rank ) print i "|" 0.9*rank[i] "|" time[i] # aging
} else for( i in rank ) print i "|" rank[i] "|" time[i]
}
' "$datafile" 2>/dev/null > "$datafile.tmp"
mv -f "$datafile.tmp" "$datafile"
' "$datafile" 2>/dev/null > "$tempfile"
mv -f "$tempfile" "$datafile"
# tab completion
elif [ "$1" = "--complete" ]; then
@@ -92,7 +93,8 @@ z() {
# no file yet
[ -f "$datafile" ] || return
local cd="$(awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -v tmpfl="$datafile.tmp" -F"|" '
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"|" '
function frecent(rank, time) {
dx = t-time
if( dx < 3600 ) return rank*4
@@ -153,9 +155,9 @@ z() {
}
' "$datafile")"
if [ $? -gt 0 ]; then
rm -f "$datafile.tmp"
rm -f "$tempfile"
else
mv -f "$datafile.tmp" "$datafile"
mv -f "$tempfile" "$datafile"
[ "$cd" ] && cd "$cd"
fi
fi