diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-24 16:10:43 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-24 16:10:43 +0000 |
commit | 22f1db4b8e349c8a7a4894113d06d7f438f988fa (patch) | |
tree | a50b6394c4d8b52a776fbd3252542708fb2b6962 | |
parent | e7e0eeb084ee48e659e13a313e14528e7c66e903 (diff) |
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-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/mkmf.rb | 1 | ||||
-rw-r--r-- | test/mkmf/test_find_executable.rb | 7 |
3 files changed, 16 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Fri Mar 25 01:10:42 2016 Sebastian Schuberth <[email protected]> + + * 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 <[email protected]> * 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 |