From 7343b492a20fccc753e77845a1c18bede5b070f8 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 14 Apr 2016 01:30:12 +0000 Subject: ruby-runner.h * template/ruby-runner.h.in: separate configured part from ruby-runner.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby-runner.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ruby-runner.c (limited to 'ruby-runner.c') diff --git a/ruby-runner.c b/ruby-runner.c new file mode 100644 index 0000000000..c16e7c6829 --- /dev/null +++ b/ruby-runner.c @@ -0,0 +1,35 @@ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include + +#include "ruby-runner.h" + +#define STRINGIZE(expr) STRINGIZE0(expr) +#define STRINGIZE0(expr) #expr + +int +main(int argc, char **argv) +{ + static const char builddir[] = BUILDDIR; + const char *libpath = getenv(LIBPATHENV); + char c = 0; + + if (libpath) { + while ((c = *libpath) == PATH_SEP) ++libpath; + } + if (c) { + size_t n = strlen(libpath); + char *e = malloc(sizeof(builddir)+n+1); + memcpy(e, builddir, sizeof(builddir)-1); + e[sizeof(builddir)-1] = PATH_SEP; + memcpy(e+sizeof(builddir), libpath, n+1); + libpath = e; + } + else { + libpath = builddir; + } + setenv(LIBPATHENV, libpath, 1); + execv(BUILDDIR"/"STRINGIZE(RUBY_INSTALL_NAME), argv); + return -1; +} -- cgit v1.2.1