diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-26 11:37:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-26 11:37:01 +0000 |
commit | 6b88dd2698760ef2e2306e3e79a0ed9fe159a12c (patch) | |
tree | cd3b580d1449865c3023ab6d7bdea068d8245c78 /win32 | |
parent | 58742627af428650799118179639b2793372819a (diff) |
file.c: home directory from system
* file.c (rb_default_home_dir): resolve home directory from the
system database when HOME is not set. [Feature #12695]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r-- | win32/file.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/win32/file.c b/win32/file.c index c0efb7b091..b50c61292d 100644 --- a/win32/file.c +++ b/win32/file.c @@ -237,6 +237,19 @@ append_wstr(VALUE dst, const WCHAR *ws, ssize_t len, UINT cp, rb_encoding *enc) } VALUE +rb_default_home_dir(VALUE result) +{ + const WCHAR *dir = rb_w32_home_dir(); + if (!dir) { + rb_raise(rb_eArgError, "couldn't find HOME environment -- expanding `~'"); + } + append_wstr(result, dir, -1, + rb_w32_filecp(), rb_filesystem_encoding()); + xfree(dir); + return result; +} + +VALUE rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_name, VALUE result) { size_t size = 0, whome_len = 0; |