[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23103] Re: enable-install-rdoc (was Re: --prefix and DESTDIR for bccwin32)

From: nobu.nakada@...
Date: 2004-03-02 05:35:23 UTC
List: ruby-dev #23103
なかだです。

At Mon, 1 Mar 2004 23:08:46 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:23089]:
> |最近、コマンドの実行に失敗するとsystemがfalseを返すかわりに例外
> |を上げるようになったためです。
> 
> コミットしてください。

他も調べてみました。systemがfalseを返すことに依存している部分は
一応なさそうですが、IO.popenからの例外やProcess.spawnを使ったほ
うがよさそうなところがいくつか。

それと、IO.popenやProcess.spawnでコマンド名とargv[0]を別にした
場合、実行できなかったときの例外のメッセージが間違ってました。


* io.c (pipe_open): erred program name should be reported by
  exceptions, instead of the first argument.

* process.c (rb_spawn): ditto.


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.261
diff -u -2 -p -d -r1.261 io.c
--- io.c	25 Feb 2004 12:17:39 -0000	1.261
+++ io.c	2 Mar 2004 05:11:21 -0000
@@ -2609,10 +2609,13 @@ pipe_open(argc, argv, pname, mode)
 #elif defined(_WIN32)
     int openmode = rb_io_mode_modenum(mode);
-    char *cmd = pname, *prog = NULL;
+    char *prog = NULL;
 #endif
+    char *cmd = pname;
 
     if (!pname) {
 	arg0 = rb_check_argv(argc, argv);
 	if (arg0) pname = StringValuePtr(arg0);
+	cmd = pname;
+	if (!pname) pname = RSTRING(argv[0])->ptr;
     }
 
@@ -2640,5 +2643,5 @@ pipe_open(argc, argv, pname, mode)
 	arg.exec.argc = argc;
 	arg.exec.argv = argv;
-	arg.exec.prog = pname;
+	arg.exec.prog = cmd;
 	pid = rb_fork(&status, popen_exec, &arg);
     }
@@ -2693,8 +2696,8 @@ pipe_open(argc, argv, pname, mode)
 #else
     if (argc > 0) {
-	prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
-	pname = StringValuePtr(prog);
+	arg0 = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
+	cmd = StringValuePtr(arg0);
     }
-    fpr = popen(pname, mode);
+    fpr = popen(cmd, mode);
 
     if (!fpr) rb_sys_fail(pname);
Index: process.c
===================================================================
RCS file: /cvs/ruby/src/ruby/process.c,v
retrieving revision 1.99
diff -u -2 -p -d -r1.99 process.c
--- process.c	25 Feb 2004 17:35:13 -0000	1.99
+++ process.c	2 Mar 2004 05:18:28 -0000
@@ -1477,4 +1477,5 @@ rb_spawn(argc, argv)
     earg.prog = prog ? RSTRING(prog)->ptr : 0;
     status = rb_fork(&status, (int (*)_((void*)))rb_exec, &earg);
+    if (prog) argv[0] = prog;
 #elif defined HAVE_SPAWNV
     if (!argc) {
@@ -1484,5 +1485,7 @@ rb_spawn(argc, argv)
 	status = proc_spawn_n(argc, argv, prog);
     }
+    if (prog) argv[0] = prog;
 #else
+    if (prog) argv[0] = prog;
     prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
     status = system(StringValuePtr(prog));
Index: lib/drb/extservm.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/drb/extservm.rb,v
retrieving revision 1.1
diff -u -2 -p -d -r1.1 extservm.rb
--- lib/drb/extservm.rb	18 Jun 2003 15:43:10 -0000	1.1
+++ lib/drb/extservm.rb	2 Mar 2004 01:04:18 -0000
@@ -85,9 +85,5 @@ module DRb
 	@servers[name] = false
       end
-      if RUBY_PLATFORM =~ /mswin32/
-	system("cmd /c start /b #{command} #{DRb.uri} #{name}")
-      else
-	system("#{command} #{DRb.uri} #{name} &")
-      end
+      Process.spawn("#{command} #{DRb.uri} #{name}")
     end
   end
Index: lib/rdoc/ri/ri_display.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/rdoc/ri/ri_display.rb,v
retrieving revision 1.2
diff -u -2 -p -d -r1.2 ri_display.rb
--- lib/rdoc/ri/ri_display.rb	12 Jan 2004 03:11:25 -0000	1.2
+++ lib/rdoc/ri/ri_display.rb	1 Mar 2004 19:20:58 -0000
@@ -197,8 +197,15 @@ class  DefaultDisplay
   def setup_pager
     unless @options.use_stdout
-      require 'tempfile'
-
-      @save_stdout = STDOUT.clone
-      STDOUT.reopen(Tempfile.new("ri_"))
+      for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
+        begin
+          pager = IO.popen(pager, "w")
+        rescue
+        else
+          @save_stdout = STDOUT.clone
+          STDOUT.reopen(pager)
+          return
+        end
+      end
+      @options.use_stdout = true
     end
   end
@@ -208,18 +215,6 @@ class  DefaultDisplay
   def page_output
     unless @options.use_stdout
-      path = STDOUT.path
       STDOUT.reopen(@save_stdout)
       @save_stdout = nil
-      paged = false
-      for pager in [ ENV['PAGER'], "less", "more <", 'pager' ].compact.uniq
-        if system("#{pager} #{path}")
-          paged = true
-          break
-        end
-      end
-      if !paged
-        @options.use_stdout = true
-        puts File.read(path)
-      end
     end
   end
Index: lib/rdoc/diagram.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/rdoc/diagram.rb,v
retrieving revision 1.2
diff -u -2 -p -d -r1.2 diagram.rb
--- lib/rdoc/diagram.rb	3 Dec 2003 04:20:22 -0000	1.2
+++ lib/rdoc/diagram.rb	1 Mar 2004 18:51:40 -0000
@@ -296,5 +296,5 @@ module RDoc
       end
       
-      system "dot -T#{op_type} #{src} -o #{dot}"
+      system "dot", "-T#{op_type}", src, "-o", dot
 
       # Now construct the imagemap wrapper around
Index: lib/rdoc/generators/chm_generator.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/rdoc/generators/chm_generator.rb,v
retrieving revision 1.1
diff -u -2 -p -d -r1.1 chm_generator.rb
--- lib/rdoc/generators/chm_generator.rb	1 Dec 2003 07:12:48 -0000	1.1
+++ lib/rdoc/generators/chm_generator.rb	1 Mar 2004 18:52:42 -0000
@@ -5,5 +5,5 @@ module Generators
   class CHMGenerator < HTMLGenerator
 
-    HHC_PATH = "c:\\Program Files\\HTML Help Workshop\\hhc.exe"
+    HHC_PATH = "c:/Program Files/HTML Help Workshop/hhc.exe"
 
     # Standard generator factory
@@ -104,5 +104,5 @@ module Generators
     # Invoke the windows help compiler to compiler the project
     def compile_project
-      system("\"#{HHC_PATH}\" #@project_name")
+      system(HHC_PATH, @project_name)
     end
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread