X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=cint%2Frun_exams.cpp;fp=cint%2Frun_exams.cpp;h=dabf467bd1a48f8f8606f7a4356f58ec122825b3;hp=0000000000000000000000000000000000000000;hb=0d9b6e6d134917a8fb5cf76ade55dcbaf01acb28;hpb=3c47d2bc7b421bd504404a8a664349252dddda3a diff --git a/cint/run_exams.cpp b/cint/run_exams.cpp new file mode 100644 index 00000000..dabf467b --- /dev/null +++ b/cint/run_exams.cpp @@ -0,0 +1,36 @@ +/* run_exams.cpp, a launcher that sets variables to start ginaccint.bin. + * This is necessary because Cint is not libtoolized and so may need to have + * LD_LIBRARY_PATH and CINTSYSDIR set. (This cannot be done by a shell-script + * because the #!-mechanism works only once and we want to enable the user to + * write scripts using that mechanism.) */ + +#include +#include +#include +#include +#include "launch.h" + +extern char **environ; + +int main(int argc, char * *argv) +{ + // what to start + string binprog = "./ginaccint.bin"; + + // extend LD_LIBRARY_PATH by ../ginac/.libs, so ginaccint.bin really finds libginac + const char * LD_LIBRARY_PATH = getenv("LD_LIBRARY_PATH"); + if (LD_LIBRARY_PATH == NULL) + setenv("LD_LIBRARY_PATH", "../ginac/.libs", 1); + else + setenv("LD_LIBRARY_PATH", (string(LD_LIBRARY_PATH)+':'+"../ginac/.libs").c_str(), 1); + + // hard-wire CINTSYSDIR, inherited from configure + setenv("CINTSYSDIR", CINTSYSDIR.c_str(), 1); + + // execute the real thing + int error = execve(binprog.c_str(), argv, environ); + + // only gets here on error + cerr << argv[0] << ": cannot exec " << binprog << endl; + return error; +}