From: nobu.nokada@... Date: 2005-08-24T07:45:40+09:00 Subject: Re: File.extname edge case bug? Hi, At Wed, 24 Aug 2005 07:21:32 +0900, Daniel Berger wrote in [ruby-core:05658]: > > mathew wrote: > > > I think any string which *ends* with a "." should return "". I don't > > think the start of the string should have anything to do with the output > > of extname. > > Based on this, which I think is correct, I submit the following patch. I've > also included a test suite and some benchmarks. Sorry for any wrappage. You don't consider the case no suffix but path contains a dot. Try: File.extname("foo.bar/zot") Index: file.c =================================================================== RCS file: /cvs/ruby/src/ruby/file.c,v retrieving revision 1.200 diff -U2 -p -r1.200 file.c --- file.c 30 Jun 2005 06:20:08 -0000 1.200 +++ file.c 23 Aug 2005 22:39:51 -0000 @@ -2770,5 +2770,5 @@ rb_file_s_extname(klass, fname) 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! */ -- Nobu Nakada