summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-11-07 21:57:24 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2025-11-07 21:57:24 +0900
commit41865bb6712a14ad1fc2e729316b4e2d8452babc (patch)
tree19f9bdf45c3a618242e0e29e9a9451a0b9aed5df
parent1f32464a2dcaf641c9fd77a323a13e44dd1d2670 (diff)
Use `IO.popen` instead of `IO.foreach` with pipe
-rwxr-xr-xwin32/mkexports.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/win32/mkexports.rb b/win32/mkexports.rb
index 1a9f474be2..44bda94990 100755
--- a/win32/mkexports.rb
+++ b/win32/mkexports.rb
@@ -138,7 +138,11 @@ end
class Exports::Cygwin < Exports
def self.nm
- @@nm ||= RbConfig::CONFIG["NM"]
+ @@nm ||=
+ begin
+ require 'shellwords'
+ RbConfig::CONFIG["NM"].shellsplit
+ end
end
def exports(*)
@@ -146,7 +150,9 @@ class Exports::Cygwin < Exports
end
def each_line(objs, &block)
- IO.foreach("|#{self.class.nm} --extern-only --defined-only #{objs.join(' ')}", &block)
+ IO.popen([*self.class.nm, *%w[--extern-only --defined-only], *objs]) do |f|
+ f.each(&block)
+ end
end
def each_export(objs)