summaryrefslogtreecommitdiffstats
path: root/ruby.c
diff options
context:
space:
mode:
authorocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-02-01 13:27:47 +0000
committerocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-02-01 13:27:47 +0000
commit853b56ba0858996fb986ddd520d38e9c7ecdc042 (patch)
tree4c272cba2f525ce2a6c0bc630fc2bf63f24d79f4 /ruby.c
parent5adc8318383ee9bf23f2147dfc18a93fb85254e6 (diff)
downloadruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.tar.gz
ruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.tar.xz
ruby-853b56ba0858996fb986ddd520d38e9c7ecdc042.zip
* configure.in, hash.c (ruby_setenv): use setenv(3) and unsetenv(3)
where they are supported. modifing environ variable seems to segfault solaris 10. [ruby-core:7276] [ruby-dev:28270] * ruby.c (set_arg0): if use setenv(3), environ space cannot be used for altering argv[0]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@9868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ruby.c b/ruby.c
index f80c08b70..797905155 100644
--- a/ruby.c
+++ b/ruby.c
@@ -971,7 +971,14 @@ VALUE rb_progname;
VALUE rb_argv;
VALUE rb_argv0;
-#if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE) && !defined(DOSISH)
+#if defined(PSTAT_SETCMD) || defined(HAVE_SETPROCTITLE)
+#elif defined(_WIN32)
+#elif defined(HAVE_SETENV) && defined(HAVE_UNSETENV)
+#else
+#define USE_ENVSPACE_FOR_ARG0
+#endif
+
+#ifdef USE_ENVSPACE_FOR_ARG0
static struct {
char *begin, *end;
} envspace;
@@ -1047,7 +1054,7 @@ set_arg0(val, id)
break;
}
}
-#ifndef DOSISH
+#if defined(USE_ENVSPACE_FOR_ARG0)
if (s + 1 == envspace.begin) {
s = envspace.end;
ruby_setenv("", NULL); /* duplicate environ vars */