diff options
| author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-11-18 07:51:19 +0000 |
|---|---|---|
| committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-11-18 07:51:19 +0000 |
| commit | 97ba9ac38ea260b17c7482c1230146b5135aae02 (patch) | |
| tree | bf31b7e71dcbb1a4690b7b240c7f6a6b925765e9 /file.c | |
| parent | ba4de825d2378ea23fe019560bfe1b90d2b5c384 (diff) | |
| download | ruby-97ba9ac38ea260b17c7482c1230146b5135aae02.tar.gz ruby-97ba9ac38ea260b17c7482c1230146b5135aae02.tar.xz ruby-97ba9ac38ea260b17c7482c1230146b5135aae02.zip | |
* file.c (file_s_dirname): added checks for some patterns with drive
letter. fixed: [ruby-dev:27738]
* test/ruby/test_path.rb (test_dirname): added tests for above
patterns.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
| -rw-r--r-- | file.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -2638,9 +2638,16 @@ rb_file_s_dirname(VALUE klass, VALUE fname) } if (p == name) return rb_str_new2("."); +#ifdef DOSISH_DRIVE_LETTER + if (has_drive_letter(name) && isdirsep(*(name + 2))) { + dirname = rb_str_new(name, 3); + rb_str_cat(dirname, skiproot(name + 2), p - skiproot(name + 2)); + } + else +#endif dirname = rb_str_new(name, p - name); #ifdef DOSISH_DRIVE_LETTER - if (root == name + 2 && name[1] == ':') + if (has_drive_letter(name) && root == name + 2 && p - name == 2) rb_str_cat(dirname, ".", 1); #endif OBJ_INFECT(dirname, fname); |
