[前][次][番号順一覧][スレッド一覧]

ruby-changes:12351

From: yugui <ko1@a...>
Date: Sun, 12 Jul 2009 23:45:10 +0900 (JST)
Subject: [ruby-changes:12351] Ruby:r24046 (ruby_1_9_1): merges r23891 from trunk into ruby_1_9_1.

yugui	2009-07-12 23:44:54 +0900 (Sun, 12 Jul 2009)

  New Revision: 24046

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24046

  Log:
    merges r23891 from trunk into ruby_1_9_1.
    --
    * dln.c (dln_find_1): fix for files with dots.  [ruby-dev:38588]

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/dln.c
    branches/ruby_1_9_1/test/ruby/test_system.rb
    branches/ruby_1_9_1/version.h

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 24045)
+++ ruby_1_9_1/ChangeLog	(revision 24046)
@@ -1,3 +1,7 @@
+Mon Jun 29 18:55:55 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* dln.c (dln_find_1): fix for files with dots.  [ruby-dev:38588]
+
 Mon Jun 29 17:14:31 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* file.c (file_expand_path): should copy original encoding.
Index: ruby_1_9_1/dln.c
===================================================================
--- ruby_1_9_1/dln.c	(revision 24045)
+++ ruby_1_9_1/dln.c	(revision 24046)
@@ -1520,7 +1520,12 @@
     struct stat st;
     int i, fspace;
 #ifdef DOSISH
-    int is_abs = 0, has_path = 0, has_ext = 0;
+    static const char extension[][5] = {
+	".exe", ".com", ".cmd", ".bat",
+    };
+    size_t j;
+    int is_abs = 0, has_path = 0;
+    const char *ext = 0;
     const char *p = fname;
 #endif
 
@@ -1547,23 +1552,31 @@
 	switch (*p) {
 	  case '/': case '\\':
 	    has_path = 1;
-	    has_ext = 0;
+	    ext = 0;
 	    p++;
 	    break;
 	  case '.':
-	    has_ext = 1;
+	    ext = p;
 	    p++;
 	    break;
 	  default:
 	    p = CharNext(p);
 	}
     }
+    if (ext) {
+	for (j = 0; STRCASECMP(ext, extension[j]); j++) {
+	    if (j == sizeof(extension) / sizeof(extension[0])) {
+		ext = 0;
+		break;
+	    }
+	}
+    }
     ep = bp = 0;
     if (!exe_flag) {
 	RETURN_IF(is_abs);
     }
     else if (has_path) {
-	RETURN_IF(has_ext);
+	RETURN_IF(ext);
 	i = p - fname;
 	if (i + 1 > size) goto toolong;
 	fspace = size - i - 1;
@@ -1644,15 +1657,7 @@
 	memcpy(bp, fname, i + 1);
 
 #if defined(DOSISH)
-	if (exe_flag && !has_ext) {
-	    static const char extension[][5] = {
-#if defined(__EMX__) || defined(_WIN32)
-		".exe", ".com", ".cmd", ".bat",
-/* end of __EMX__ or _WIN32 */
-#endif
-	    };
-	    int j;
-
+	if (exe_flag && !ext) {
 	  needs_extension:
 	    for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) {
 		if (fspace < strlen(extension[j])) {
Index: ruby_1_9_1/version.h
===================================================================
--- ruby_1_9_1/version.h	(revision 24045)
+++ ruby_1_9_1/version.h	(revision 24046)
@@ -1,6 +1,6 @@
 #define RUBY_VERSION "1.9.1"
 #define RUBY_RELEASE_DATE "2009-07-12"
-#define RUBY_PATCHLEVEL 209
+#define RUBY_PATCHLEVEL 210
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_1/test/ruby/test_system.rb
===================================================================
--- ruby_1_9_1/test/ruby/test_system.rb	(revision 24045)
+++ ruby_1_9_1/test/ruby/test_system.rb	(revision 24046)
@@ -59,6 +59,28 @@
 
       File.unlink tmpfilename or `/bin/rm -f "#{tmpfilename}"`
       File.unlink "#{tmpfilename}.bak" or `/bin/rm -f "#{tmpfilename}.bak"`
+
+      if /mswin|mingw/ =~ RUBY_PLATFORM
+        testname = '[ruby-dev:38588]'
+        batch = "batch_tmp.#{$$}"
+        tmpfilename = "#{tmpdir}/#{batch}.bat"
+        open(tmpfilename, "wb") {|f| f.print "\r\n"}
+        assert(system(tmpfilename), testname)
+        assert(system("#{tmpdir}/#{batch}"), testname)
+        assert(system(tmpfilename, "1"), testname)
+        assert(system("#{tmpdir}/#{batch}", "1"), testname)
+        begin
+          path = ENV["PATH"]
+          ENV["PATH"] = "#{tmpdir.tr(File::SEPARATOR, File::ALT_SEPARATOR)}#{File::PATH_SEPARATOR + path if path}"
+          assert(system("#{batch}.bat"), testname)
+          assert(system(batch), testname)
+          assert(system("#{batch}.bat", "1"), testname)
+          assert(system(batch, "1"), testname)
+        ensure
+          ENV["PATH"] = path
+        end
+        File.unlink tmpfilename
+      end
     }
   end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]