summaryrefslogtreecommitdiffstats
path: root/ruby.c
diff options
context:
space:
mode:
authoreban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-09 14:11:23 +0000
committereban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-09 14:11:23 +0000
commit44ef524a269a50429225bf454868c6b829977334 (patch)
tree79dce744500a20647ab1648bf17ef2c8a8f69414 /ruby.c
parent5b7968511ad96fbfa4033420e58b2461aa32a647 (diff)
downloadruby-44ef524a269a50429225bf454868c6b829977334.tar.gz
ruby-44ef524a269a50429225bf454868c6b829977334.tar.xz
ruby-44ef524a269a50429225bf454868c6b829977334.zip
ruby.c (ruby_init_loadpath): convert '\' to '/'
before finding executable file path. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/ruby.c b/ruby.c
index 2438bd9b9..5d92800d3 100644
--- a/ruby.c
+++ b/ruby.c
@@ -214,13 +214,23 @@ 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(__EMX__)
_execname(libpath, FILENAME_MAX);
#endif
- p = strrchr(libpath, '\\');
+
+#ifndef CharNext /* defined as CharNext[AW] on Windows. */
+#define CharNext(p) ((p) + 1)
+#endif
+
+ for (p = libpath; *p; p = CharNext(p))
+ if (*p == '\\')
+ *p = '/';
+
+ p = strrchr(libpath, '/');
if (p) {
*p = 0;
- if (p-libpath > 3 && !strcasecmp(p-4, "\\bin")) {
+ if (p-libpath > 3 && !strcasecmp(p-4, "/bin")) {
p -= 4;
*p = 0;
}
@@ -229,14 +239,6 @@ ruby_init_loadpath()
p = libpath + 1;
}
-#if !defined(__CYGWIN32__)
-#ifndef CharNext /* defined as CharNext[AW] on Windows. */
-#define CharNext(p) ((p) + 1)
-#endif
- for (p = libpath; *p; p = CharNext(p))
- if (*p == '\\')
- *p = '/';
-#endif
rest = FILENAME_MAX - (p - libpath);
#define RUBY_RELATIVE(path) (strncpy(p, (path), rest), libpath)