From 1ead7d380ab85946f156ef64a0bc6324691b1704 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Wed, 13 Jan 2010 05:37:58 +0000 Subject: [PATCH] Escape any spaces in path during strip step Not using path.basename for mktemp due to risk of bugs due to incorrect escaping. But mainly, mktemp gives a unique name and this operation is procedural. --- Library/Homebrew/brew.h.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 32688d64c9..f11448d212 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -442,11 +442,13 @@ private puts "strip #{path}" if ARGV.verbose? path.chmod 0644 # so we can strip unless path.stat.nlink > 1 - `strip #{args} #{path}` + system "strip", *(args+path) else + path = path.to_s.gsub ' ', '\\ ' + # strip unlinks the file and recreates it, thus breaking hard links! # is this expected behaviour? patch does it too… still, this fixes it - tmp = `/usr/bin/mktemp -t #{path.basename}`.chomp + tmp = `/usr/bin/mktemp -t homebrew_strip`.chomp `/usr/bin/strip #{args} -o #{tmp} #{path}` `/bin/cat #{tmp} > #{path}` File.unlink tmp