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

ruby-changes:16573

From: usa <ko1@a...>
Date: Wed, 7 Jul 2010 13:22:46 +0900 (JST)
Subject: [ruby-changes:16573] Ruby:r28565 (trunk): * file.c (ruby_find_basename): set correct baselen.

usa	2010-07-07 13:22:30 +0900 (Wed, 07 Jul 2010)

  New Revision: 28565

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

  Log:
    * file.c (ruby_find_basename): set correct baselen.

  Modified files:
    trunk/ChangeLog
    trunk/file.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28564)
+++ ChangeLog	(revision 28565)
@@ -1,3 +1,7 @@
+Wed Jul  7 13:22:20 2010  NAKAMURA Usaku  <usa@r...>
+
+	* file.c (ruby_find_basename): set correct baselen.
+
 Wed Jul  7 13:02:59 2010  Akinori MUSHA  <knu@i...>
 
 	* vm_method.c (rb_method_boundp): respond_to?(:protected_method,
Index: file.c
===================================================================
--- file.c	(revision 28564)
+++ file.c	(revision 28565)
@@ -3430,9 +3430,9 @@
 }
 
 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
@@ -3476,12 +3476,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/

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