summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-03 11:20:31 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-03 11:20:31 +0000
commit4b6dffad02114175e59729eeb38b5db19c01e571 (patch)
tree6670d9fc55dcd61ef25bd527f056fb47697633ae /ruby.c
parent29cef5f795043a048a58874d90de0dfe01aa12ea (diff)
* bcc32/mkexports.rb: to work on cygwin via telnet.
[ruby-win32:358] * ext/tcltklib/tcltklib.c (ip_invoke): requires command name argument. [ruby-dev:18438] * eval.c (ruby_init, ruby_options): Init_stack() with local location. (ruby-bugs-ja:PR#277) * eval.c (rb_call0): disable trace call. [ruby-dev:18074] * eval.c (eval, rb_load): enable trace call. [ruby-dev:18074] * eval.c (rb_f_require): set source file name for extension libraries. [ruby-dev:18445] * ruby.c (translate_char): translate a character in a string; DOSISH only. [ruby-dev:18274] * ruby.c (ruby_init_loadpath): added argv[0] handling under Human68K. [ruby-dev:18274] * ruby.c (proc_options): translate directory separator in $0 to '/'. [ruby-dev:18274] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/ruby.c b/ruby.c
index e6adcc7614..a9dde28241 100644
--- a/ruby.c
+++ b/ruby.c
@@ -203,10 +203,30 @@ ruby_incpush(path)
}
}
-#if defined _WIN32 || defined __CYGWIN__ || defined __DJGPP__ || defined __EMX__
+#if defined DOSISH || defined __CYGWIN__
#define LOAD_RELATIVE 1
#endif
+#ifdef DOSISH
+static inline void translate_char _((char *, int, int));
+
+static inline void
+translate_char(p, from, to)
+ char *p;
+ int from, to;
+{
+ while (*p) {
+ if ((unsigned char)*p == from)
+ *p = to;
+#ifdef CharNext /* defined as CharNext[AW] on Windows. */
+ p = CharNext(p);
+#else
+ p += mblen(p, MB_CUR_MAX);
+#endif
+ }
+}
+#endif
+
void
ruby_init_loadpath()
{
@@ -224,19 +244,16 @@ ruby_init_loadpath()
#elif defined(DJGPP)
extern char *__dos_argv0;
strncpy(libpath, __dos_argv0, FILENAME_MAX);
-#define CharNext(p) ((p) + mblen(p, MB_CUR_MAX))
+#elif defined(__human68k__)
+ extern char **_argv;
+ strncpy(libpath, _argv[0], FILENAME_MAX);
#elif defined(__EMX__)
_execname(libpath, FILENAME_MAX);
#endif
-#ifndef CharNext /* defined as CharNext[AW] on Windows. */
-#define CharNext(p) ((p) + 1)
+#ifdef DOSISH
+ translate_char(libpath, '\\', '/');
#endif
-
- for (p = libpath; *p; p = CharNext(p))
- if (*p == '\\')
- *p = '/';
-
p = strrchr(libpath, '/');
if (p) {
*p = 0;
@@ -711,6 +728,9 @@ proc_options(argc, argv)
if (!e_script) {
argc--; argv++;
}
+#ifdef DOSISH
+ translate_char(script, '\\', '/');
+#endif
}
ruby_script(script);