From db05618561550c36d2d41b0ff5e6fea4bd6019d2 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 13 Mar 2015 20:59:17 -0400 Subject: Use Dir.mktmpdir instead of shelling out to mktemp Closes Homebrew/homebrew#37616. --- Library/Homebrew/extend/fileutils.rb | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/extend/fileutils.rb b/Library/Homebrew/extend/fileutils.rb index aa1735cb1..a29128378 100644 --- a/Library/Homebrew/extend/fileutils.rb +++ b/Library/Homebrew/extend/fileutils.rb @@ -1,4 +1,5 @@ -require 'fileutils' +require "fileutils" +require "tmpdir" # We enhance FileUtils to make our Formula code more readable. module FileUtils @@ -6,24 +7,19 @@ module FileUtils # Create a temporary directory then yield. When the block returns, # recursively delete the temporary directory. def mktemp(prefix=name) - # I used /tmp rather than `mktemp -td` because that generates a directory - # name with exotic characters like + in it, and these break badly written - # scripts that don't escape strings before trying to regexp them :( - - # If the user has FileVault enabled, then we can't mv symlinks from the - # /tmp volume to the other volume. So we let the user override the tmp - # prefix if they need to. - - tempd = with_system_path { `mktemp -d #{HOMEBREW_TEMP}/#{prefix}-XXXXXX` }.strip - raise "Failed to create sandbox" if tempd.empty? - prevd = pwd - cd(tempd) + prev = pwd + tmp = Dir.mktmpdir(prefix, HOMEBREW_TEMP) begin - yield + cd(tmp) + + begin + yield + ensure + cd(prev) + end ensure - cd(prevd) - ignore_interrupts { rm_r(tempd) } + ignore_interrupts { rm_r(tmp) } end end module_function :mktemp -- cgit v1.2.3