diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2014-12-27 23:59:29 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2014-12-27 23:59:29 -0800 |
commit | 200accac63deae99eb9656b26363c85648bd6748 (patch) | |
tree | bd0461e34cb47f0f4f26e339efbc5cda479b0c2b /Completion/compinstall | |
parent | 1cd802357096b60561b1a50c0c23ab357bbc0de3 (diff) | |
download | zsh-200accac63deae99eb9656b26363c85648bd6748.tar.gz zsh-200accac63deae99eb9656b26363c85648bd6748.tar.xz zsh-200accac63deae99eb9656b26363c85648bd6748.zip |
34067: safe tempfile creation, part 1
Diffstat (limited to 'Completion/compinstall')
-rw-r--r-- | Completion/compinstall | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Completion/compinstall b/Completion/compinstall index c04543c57..7d34ee4d8 100644 --- a/Completion/compinstall +++ b/Completion/compinstall @@ -1958,11 +1958,14 @@ if [[ -z $ifile || -d $ifile ]] || fi local tmpout=${TMPPREFIX:-/tmp/zsh}compinstall$$ +mv -f =(:) $tmpout && # safe tempfile creation +mv -f =(:) ${tmpout}x || return 1 + # # Assemble the complete set of lines to # insert. # -__ci_output >$tmpout +__ci_output >>$tmpout if [[ -n $ifile ]]; then if [[ $ifile != *(zshrc|zlogin|zshenv) ]]; then @@ -1984,15 +1987,15 @@ future use." fi if { { grep "$endline" $ifile >/dev/null 2>&1 && sed -e "/^[ ]*$endline/r $tmpout -/^[ ]*$startline/,/^[ ]*$endline/d" $ifile >${tmpout}2 } || - { cp $ifile ${tmpout}2 && cat $tmpout >>${tmpout}2 } } && - cp ${tmpout}2 $ifile && rm -f ${tmpout}2; then +/^[ ]*$startline/,/^[ ]*$endline/d" $ifile >>${tmpout}x } || + { cp $ifile ${tmpout}x && cat $tmpout >>${tmpout}x } } && + cp ${tmpout}x $ifile && rm -f ${tmpout}x; then print "\nSuccessfully added compinstall lines to $ifile." rm -f $tmpout else print "\nFailure adding lines to $ifile. Lines left in \`$tmpout'" fi - rm -f ${tmpout}2 + rm -f ${tmpout}x elif read -q key'?Print them to stdout instead ([y]es, [n]o)? '; then cat $tmpout rm -f $tmpout |