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/