diff options
| author | Jack Nagel | 2015-03-13 20:59:17 -0400 |
|---|---|---|
| committer | Jack Nagel | 2015-03-14 20:45:21 -0400 |
| commit | db05618561550c36d2d41b0ff5e6fea4bd6019d2 (patch) | |
| tree | a81bd276dd2dfa4538f023a5d66bd3c6713df50b /Library | |
| parent | b03faffcc10ab7d174c8164d28739e71f9c9ce97 (diff) | |
| download | brew-db05618561550c36d2d41b0ff5e6fea4bd6019d2.tar.bz2 | |
Use Dir.mktmpdir instead of shelling out to mktemp
Closes Homebrew/homebrew#37616.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/extend/fileutils.rb | 28 |
1 files changed, 12 insertions, 16 deletions
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 |
