diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-16 06:20:23 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-16 06:20:23 +0000 |
commit | 3694f1dda70923b2acc66af6553c422ba87daddd (patch) | |
tree | 0d45296d39a940100f86a76f75a4a345312a78a7 /ext | |
parent | 724f1f4a6e3698d1a34ca3442a6cb3e890e94a99 (diff) | |
download | ruby-3694f1dda70923b2acc66af6553c422ba87daddd.tar.gz |
* ext/tmpdir: split from lib/tmpdir.rb.
* win32/win32.c (rb_w32_system_tmpdir): extracted from init_env.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/tmpdir/extconf.rb | 6 | ||||
-rw-r--r-- | ext/tmpdir/tmpdir.c | 32 |
2 files changed, 38 insertions, 0 deletions
diff --git a/ext/tmpdir/extconf.rb b/ext/tmpdir/extconf.rb new file mode 100644 index 0000000000..a283f851b0 --- /dev/null +++ b/ext/tmpdir/extconf.rb @@ -0,0 +1,6 @@ +case +when have_func("rb_w32_system_tmpdir") + ok = true # win32 +else +end +create_makefile("tmpdir") if ok diff --git a/ext/tmpdir/tmpdir.c b/ext/tmpdir/tmpdir.c new file mode 100644 index 0000000000..f046713b63 --- /dev/null +++ b/ext/tmpdir/tmpdir.c @@ -0,0 +1,32 @@ +#include <ruby/ruby.h> +#include <ruby/encoding.h> + +#define numberof(array) (sizeof(array) / sizeof(*array)) + +#ifdef HAVE_RB_W32_SYSTEM_TMPDIR +UINT rb_w32_system_tmpdir(WCHAR *path, UINT len); +VALUE rb_w32_conv_from_wchar(const WCHAR *wstr, rb_encoding *enc); +#endif + +static VALUE +system_tmpdir(void) +{ +#ifdef HAVE_RB_W32_SYSTEM_TMPDIR + WCHAR path[_MAX_PATH]; + UINT len = rb_w32_system_tmpdir(path, numberof(path)); + if (!len) return Qnil; + return rb_w32_conv_from_wchar(path, rb_filesystem_encoding()); +#else + return rb_filesystem_str_new_cstr("/tmp"); +#endif +} + +/* + * sets Dir.@@systmpdir. + */ +void +Init_tmpdir(void) +{ + rb_cvar_set(rb_cDir, rb_intern_const("@@systmpdir"), + rb_obj_freeze(system_tmpdir())); +} |