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

ruby-changes:16576

From: usa <ko1@a...>
Date: Wed, 7 Jul 2010 13:27:15 +0900 (JST)
Subject: [ruby-changes:16576] Ruby:r28568 (ruby_1_8): merge from trunk (r28565)

usa	2010-07-07 13:27:09 +0900 (Wed, 07 Jul 2010)

  New Revision: 28568

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

  Log:
    merge from trunk (r28565)
    
    * file.c (ruby_find_basename): set correct baselen.

  Modified files:
    branches/ruby_1_8/file.c

Index: ruby_1_8/file.c
===================================================================
--- ruby_1_8/file.c	(revision 28567)
+++ ruby_1_8/file.c	(revision 28568)
@@ -2859,13 +2859,13 @@
 }
 
 const char *
-ruby_find_basename(const char *name, long *len, long *ext)
+ruby_find_basename(const char *name, long *baselen, long *alllen)
 {
-    const char *p;
+    const char *p, *q, *e;
 #if defined DOSISH_DRIVE_LETTER || defined DOSISH_UNC
     const char *root;
 #endif
-    long f, n = -1;
+    long f = 0, n = -1;
 
     name = skipprefix(name);
 #if defined DOSISH_DRIVE_LETTER || defined DOSISH_UNC
@@ -2905,12 +2905,18 @@
 #else
 	n = chompdirsep(p) - p;
 #endif
+	for (q = p; q - p < n && *q == '.'; q++);
+	for (e = 0; q - p < n; q = CharNext(q)) {
+	    if (*q == '.') e = q;
+	}
+	if (e) f = e - p;
+	else f = n;
     }
 
-    if (len)
-	*len = f;
-    if (ext)
-	*ext = n;
+    if (baselen)
+	*baselen = f;
+    if (alllen)
+	*alllen = n;
     return p;
 }
 

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

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