aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-24 16:10:43 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-24 16:10:43 +0000
commit22f1db4b8e349c8a7a4894113d06d7f438f988fa (patch)
treea50b6394c4d8b52a776fbd3252542708fb2b6962
parente7e0eeb084ee48e659e13a313e14528e7c66e903 (diff)
downloadruby-22f1db4b8e349c8a7a4894113d06d7f438f988fa.tar.gz
mkmf: Unquote directory strings
* lib/mkmf.rb (find_executable0): On Windows, it is actually valid to surround individual PATH directory entries with double quotes. Remove these before joining the path as otherwise the literal quotes would become part of the path, resulting in the executable not to be found. [Fix GH-1305] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/mkmf.rb1
-rw-r--r--test/mkmf/test_find_executable.rb7
3 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index da790ffa8f..eeffdcfc42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Mar 25 01:10:42 2016 Sebastian Schuberth <sschuberth@gmail.com>
+
+ * lib/mkmf.rb (find_executable0): On Windows, it is actually valid
+ to surround individual PATH directory entries with double
+ quotes. Remove these before joining the path as otherwise the
+ literal quotes would become part of the path, resulting in the
+ executable not to be found. [Fix GH-1305]
+
Thu Mar 24 22:38:18 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (FMT, FMTV): remove recursive-assignments to get rid
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 6e23db8575..31bee93c97 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -1551,6 +1551,7 @@ SRC
end
file = nil
path.each do |dir|
+ dir.sub!(/\A"(.*)"\z/m, '\1') if $mswin or $mingw
return file if executable_file.call(file = File.join(dir, bin))
if exts
exts.each {|ext| executable_file.call(ext = file + ext) and return ext}
diff --git a/test/mkmf/test_find_executable.rb b/test/mkmf/test_find_executable.rb
index ad48e5193c..7ffc28ecc8 100644
--- a/test/mkmf/test_find_executable.rb
+++ b/test/mkmf/test_find_executable.rb
@@ -47,5 +47,12 @@ class TestMkmf
assert_nil(result)
end
end
+
+ if /mingw|mswin/ =~ RUBY_PLATFORM
+ def test_quoted_path_on_windows
+ ENV["PATH"] = %["#{@tmpdir}"]
+ test_find_executable
+ end
+ end
end
end