diff options
| author | Paolo Bosetti <[email protected]> | 2014-01-13 17:29:57 +0100 |
|---|---|---|
| committer | Paolo Bosetti <[email protected]> | 2014-01-13 17:29:57 +0100 |
| commit | a2af349959d7cc96302cbe49fabf50ec2633e4c4 (patch) | |
| tree | 3ba9a6abfab1bc0712156debb9207b1bb4ad61aa /src/file.c | |
| parent | a613bce3f2f9c9d1633e15a5db910b1fea54039c (diff) | |
| download | mruby-a2af349959d7cc96302cbe49fabf50ec2633e4c4.tar.gz mruby-a2af349959d7cc96302cbe49fabf50ec2633e4c4.zip | |
Now the drive letter is returned as leading path element by File#dirname on Windows
Diffstat (limited to 'src/file.c')
| -rw-r--r-- | src/file.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/file.c b/src/file.c index ebc1e1392..7868eafaf 100644 --- a/src/file.c +++ b/src/file.c @@ -154,12 +154,15 @@ static mrb_value mrb_file_dirname(mrb_state *mrb, mrb_value klass) { #if defined(_WIN32) || defined(_WIN64) - char dname[_MAX_DIR]; + char dname[_MAX_DIR], vname[_MAX_DRIVE]; + char buffer[_MAX_DRIVE + _MAX_DIR]; char *path; mrb_value s; mrb_get_args(mrb, "S", &s); path = mrb_str_to_cstr(mrb, s); - _splitpath((const char*)path, NULL, dname, NULL, NULL); + _splitpath((const char*)path, vname, dname, NULL, NULL); + sprintf_s(buffer, _MAX_DRIVE + _MAX_DIR, "%s%s", vname, dname); + return mrb_str_new_cstr(mrb, buffer); #else char *dname, *path; mrb_value s; |
