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/