mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* file.c (rb_file_s_extname): empty string for path name ending with a
period. fixed: [ruby-core:05651] * file.c (rb_file_join): smarter behavior at edge cases. fixed: [ruby-core:05706] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9181 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
38aeed1f94
commit
c8b2171c66
2 changed files with 21 additions and 6 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,11 @@
|
|||
Fri Sep 16 22:41:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* file.c (rb_file_s_extname): empty string for path name ending with a
|
||||
period. fixed: [ruby-core:05651]
|
||||
|
||||
* file.c (rb_file_join): smarter behavior at edge cases.
|
||||
fixed: [ruby-core:05706]
|
||||
|
||||
Fri Sep 16 18:34:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* ext/syck/node.c (syck_replace_str): was using return from the
|
||||
|
@ -119,7 +127,7 @@ Thu Sep 15 13:54:33 2005 Tanaka Akira <akr@m17n.org>
|
|||
|
||||
Thu Sep 15 11:39:18 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/lib/tk/dialog.rb: If a dialog does not show up yet,
|
||||
* ext/tk/lib/tk/dialog.rb: If a dialog does not show up yet,
|
||||
TkDialogObj#name raises an exception. [ruby-talk:156109]
|
||||
|
||||
Thu Sep 15 11:01:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
|
17
file.c
17
file.c
|
@ -2646,7 +2646,7 @@ rb_file_s_extname(VALUE klass, VALUE fname)
|
|||
p++;
|
||||
|
||||
e = strrchr(p, '.'); /* get the last dot of the last component */
|
||||
if (!e || e == p) /* no dot, or the only dot is first? */
|
||||
if (!e || e == p || !e[1]) /* no dot, or the only dot is first or end? */
|
||||
return rb_str_new2("");
|
||||
extname = rb_str_new(e, chompdirsep(e) - e); /* keep the dot, too! */
|
||||
OBJ_INFECT(extname, fname);
|
||||
|
@ -2705,7 +2705,7 @@ rb_file_join(VALUE ary, VALUE sep)
|
|||
long len, i;
|
||||
int taint = 0;
|
||||
VALUE result, tmp;
|
||||
char *name;
|
||||
char *name, *tail;
|
||||
|
||||
if (RARRAY(ary)->len == 0) return rb_str_new(0, 0);
|
||||
if (OBJ_TAINTED(ary)) taint = 1;
|
||||
|
@ -2739,11 +2739,18 @@ rb_file_join(VALUE ary, VALUE sep)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
tmp = rb_obj_as_string(tmp);
|
||||
StringValueCStr(tmp);
|
||||
}
|
||||
name = StringValueCStr(result);
|
||||
if (i > 0 && !NIL_P(sep) && !*chompdirsep(name))
|
||||
rb_str_buf_append(result, sep);
|
||||
if (i > 0 && !NIL_P(sep)) {
|
||||
tail = chompdirsep(name);
|
||||
if (isdirsep(RSTRING(tmp)->ptr[0])) {
|
||||
RSTRING(result)->len = tail - name;
|
||||
}
|
||||
else if (!*tail) {
|
||||
rb_str_buf_append(result, sep);
|
||||
}
|
||||
}
|
||||
rb_str_buf_append(result, tmp);
|
||||
if (OBJ_TAINTED(tmp)) taint = 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue