From f18065f469e302711f9d98813ee72549dfa21ce8 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 7 Oct 2014 02:17:10 +0000 Subject: etc.c: try confstr on Mac OS X * ext/etc/etc.c (etc_systmpdir): try user temporary directory by confstr() on Mac OS X. c.f. http://www.opensource.apple.com/source/ruby/ruby-104/patches/ext_etc_etc.c.diff git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/etc/etc.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'ext/etc') diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 0a70c27874..6560dd9461 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -640,7 +640,22 @@ etc_systmpdir(void) if (!len) return Qnil; tmpdir = rb_w32_conv_from_wchar(path, rb_filesystem_encoding()); #else - tmpdir = rb_filesystem_str_new_cstr("/tmp"); + const char default_tmp[] = "/tmp"; + const char *tmpstr = default_tmp; + size_t tmplen = 0; +# if defined _CS_DARWIN_USER_TEMP_DIR + #ifndef MAXPATHLEN + #define MAXPATHLEN 1024 + #endif + char path[MAXPATHLEN]; + size_t len; + len = confstr(_CS_DARWIN_USER_TEMP_DIR, path, sizeof(path)); + if (len > 0) { + tmpstr = path; + tmplen = len - 1; + } +# endif + tmpdir = rb_filesystem_str_new(tmpstr, tmplen); #endif FL_UNSET(tmpdir, FL_TAINT); return tmpdir; -- cgit v1.2.3