@@ -, +, @@ --- opengl.eselect | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/opengl.eselect +++ a/opengl.eselect @@ -71,13 +71,13 @@ upgrade_file() { [[ -f ${file} ]] || return filename=$(basename "${file}") - if [[ -f ${filename} || ( -L ${filename} && ! -e ${filename} ) ]] ; then - rm -f "${filename}" || die -q "Failed to delete ${workdir}/${filename}" - fi - - #echo "DEBUG: ln -s \"${linkfile}\" \"${filename}\"" + #echo "DEBUG: ln -sf \"${linkfile}\" \"${filename}\"" if [[ "x${REMOVE_ONLY}" == "xfalse" ]]; then - ln -s "${linkfile}" "${filename}" || die -q "Failed to create symlink ${workdir}/${filename}" + # Upgrade the file atomically. #508708 + ln -sf "${linkfile}" "${filename}~" || die -q "Failed to create symlink ${workdir}/${filename}~" + mv -f "${filename}~" "${filename}" || die -q "Failed to update ${workdir}/${filename}" + elif [[ -f ${filename} || ( -L ${filename} && ! -e ${filename} ) ]] ; then + rm -f "${filename}" || die -q "Failed to delete ${workdir}/${filename}" fi } --