From 89e21a0c2f00811f8ed5c3af9a3b2efee985502c Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 9 Mar 2009 15:06:22 +0000 Subject: * configure.in (load_relative): new option to enable load path relative to libruby_so. * ruby.c (ruby_init_loadpath_safe): added the case using dladdr(). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'ruby.c') diff --git a/ruby.c b/ruby.c index b9a8ce27a..e712c2656 100644 --- a/ruby.c +++ b/ruby.c @@ -26,6 +26,9 @@ #ifdef __hpux #include #endif +#if defined(LOAD_RELATIVE) && defined(HAVE_DLADDR) +#include +#endif #ifdef HAVE_UNISTD_H #include @@ -352,10 +355,16 @@ ruby_init_loadpath_safe(int safe_level) char *p; int rest; + libpath[0] = '\0'; #if defined _WIN32 || defined __CYGWIN__ GetModuleFileName(libruby, libpath, sizeof libpath); #elif defined(__EMX__) _execname(libpath, sizeof(libpath) - 1); +#elif defined(HAVE_DLADDR) + Dl_info dli; + if (dladdr(ruby_init_loadpath_safe, &dli)) { + strlcpy(libpath, dli.dli_fname, sizeof(libpath)); + } #endif libpath[sizeof(libpath) - 1] = '\0'; -- cgit