From c4608279afc59aa6418ce7ebb3369b3e6dc631fb Mon Sep 17 00:00:00 2001 From: Max Howell Date: Fri, 22 May 2009 14:02:11 +0100 Subject: [PATCH] More rigorous regexp escaping --- Cellar/homebrew/brewkit.rb | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Cellar/homebrew/brewkit.rb b/Cellar/homebrew/brewkit.rb index 0c831f9bba..87ae0de878 100644 --- a/Cellar/homebrew/brewkit.rb +++ b/Cellar/homebrew/brewkit.rb @@ -149,20 +149,16 @@ private end end - def inreplace(path, before, after) - before=before.to_s - after=after.to_s + before=before.to_s.gsub('"', '\"').gsub('/', '\/') + after=after.to_s.gsub('"', '\"').gsub('/', '\/') - before.gsub! '"', '\"' - after.gsub! '"', '\"' - before.gsub! '|', '\|"' - after.gsub! '|', '\|"' # we're not using Ruby because the perl script is more concise #TODO the above escapes are worse, use a proper ruby script :P #TODO optimise it by taking before and after as arrays #Bah, just make the script writers do it themselves with a standard collect block - `perl -pi -e "s|#{before}|#{after}|g" "#{path}"` + #TODO use ed -- less to escape + `perl -pi -e "s/#{before}/#{after}/g" "#{path}"` end def system cmd