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/