[前][次][番号順一覧][スレッド一覧]

ruby-changes:11256

From: nobu <ko1@a...>
Date: Tue, 10 Mar 2009 04:56:58 +0900 (JST)
Subject: [ruby-changes:11256] Ruby:r22866 (trunk): * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX.

nobu	2009-03-10 04:56:46 +0900 (Tue, 10 Mar 2009)

  New Revision: 22866

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22866

  Log:
    * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX.
    * ruby.c (ruby_init_loadpath_safe): uses string as buffer.
    
    * symbian/setup (config_h): defines MANGLED_PATH.

  Modified files:
    trunk/ChangeLog
    trunk/configure.in
    trunk/ruby.c
    trunk/symbian/setup

Index: configure.in
===================================================================
--- configure.in	(revision 22865)
+++ configure.in	(revision 22866)
@@ -1778,6 +1778,7 @@
 	DLEXT=dll;;
     when(cygwin*|mingw*|*djgpp*)
 	LOAD_RELATIVE=1
+	AC_DEFINE(MANGLED_PATH)
 	DLEXT=so;;
     when(*)
 	DLEXT=so;;
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22865)
+++ ChangeLog	(revision 22866)
@@ -1,9 +1,15 @@
-Tue Mar 10 04:53:16 2009  Nobuyoshi Nakada  <nobu@r...>
+Tue Mar 10 04:56:44 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* configure.in (MINIRUBY): keep macro into Makefile.
 
 	* configure.in (RUBY_CHECK_SIZEOF): fix for fallback.
 
+	* configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX.
+
+	* ruby.c (ruby_init_loadpath_safe): uses string as buffer.
+
+	* symbian/setup (config_h): defines MANGLED_PATH.
+
 Tue Mar 10 03:48:27 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* ext/dl/callback/depend: fix for parallel build.
Index: symbian/setup
===================================================================
--- symbian/setup	(revision 22865)
+++ symbian/setup	(revision 22866)
@@ -163,6 +163,7 @@
 @echo>>$(1) #define HAVE_LIBPTHREAD 1
 @echo>>$(1) #define HAVE_NANOSLEEP 1
 @echo>>$(1) #define USE_ELF 1
+@echo>>$(1) #define MANGLED_PATH 1
 @echo>>$(1) #define DLEXT_MAXLEN 4
 @echo>>$(1) #define DLEXT ".dll"
 @echo>>$(1) #define DLN_NEEDS_ALT_SEPARATOR 1
Index: ruby.c
===================================================================
--- ruby.c	(revision 22865)
+++ ruby.c	(revision 22866)
@@ -169,7 +169,7 @@
 
 VALUE rb_get_load_path(void);
 
-#if defined _WIN32 || defined __CYGWIN__ || defined __SYMBIAN32__
+#ifdef MANGLED_PATH
 static VALUE
 rubylib_mangled_path(const char *s, unsigned int l)
 {
@@ -209,15 +209,8 @@
     ptr[l + newl - oldl] = 0;
     return ret;
 }
-
-static VALUE
-rubylib_mangled_path2(const char *s)
-{
-    return rubylib_mangled_path(s, strlen(s));
-}
 #else
 #define rubylib_mangled_path rb_str_new
-#define rubylib_mangled_path2 rb_str_new_cstr
 #endif
 
 static void
@@ -353,7 +346,7 @@
 #if defined LOAD_RELATIVE
     char libpath[MAXPATHLEN + 1];
     char *p;
-    int rest;
+    int baselen;
 
     libpath[0] = '\0';
 #if defined _WIN32 || defined __CYGWIN__
@@ -362,7 +355,7 @@
     _execname(libpath, sizeof(libpath) - 1);
 #elif defined(HAVE_DLADDR)
     Dl_info dli;
-    if (dladdr(ruby_init_loadpath_safe, &dli)) {
+    if (dladdr(expand_include_path, &dli)) {
 	strlcpy(libpath, dli.dli_fname, sizeof(libpath));
     }
 #endif
@@ -390,13 +383,14 @@
 	p = libpath + 1;
     }
 
-    rest = sizeof(libpath) - 1 - (p - libpath);
+    baselen = p - libpath;
 
-#define RUBY_RELATIVE(path) (strlcpy(p, (path), rest), libpath)
+#define BASEPATH() rb_str_buf_cat(rb_str_buf_new(baselen+len), libpath, baselen)
+#define RUBY_RELATIVE(path, len) rb_str_buf_cat(BASEPATH(), path, len)
 #else
-#define RUBY_RELATIVE(path) (path)
+#define RUBY_RELATIVE(path, len) rubylib_mangled_path(path, len)
 #endif
-#define incpush(path) rb_ary_push(load_path, rubylib_mangled_path2(path))
+#define incpush(path) rb_ary_push(load_path, (path))
     load_path = GET_VM()->load_path;
 
     if (safe_level == 0) {
@@ -404,12 +398,13 @@
     }
 
     while (*paths) {
-	incpush(RUBY_RELATIVE(paths));
-	paths += strlen(paths) + 1;
+	int len = strlen(paths);
+	incpush(RUBY_RELATIVE(paths, len));
+	paths += len + 1;
     }
 
     if (safe_level == 0) {
-	incpush(".");
+	rb_ary_push(load_path, rb_str_new_cstr("."));
     }
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]