X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=ginge.git;a=blobdiff_plain;f=common%2Fcmn.c;fp=common%2Fcmn.c;h=9f802babb8a590efd29e75ce8e7dcd247863b26a;hp=0000000000000000000000000000000000000000;hb=3adc9ccb6566130bde29eeaf5c126f28c57c57d5;hpb=2ce69bdff40e40fb1c1954e0883d95de271cecc7 diff --git a/common/cmn.c b/common/cmn.c new file mode 100644 index 0000000..9f802ba --- /dev/null +++ b/common/cmn.c @@ -0,0 +1,43 @@ +#ifdef LOADER +#include "../loader/realfuncs.h" +#endif +#include +#include +#include + +#include "cmn.h" + +int make_local_path(char *buf, size_t size, const char *file) +{ + ssize_t ret; + char *p; + + ret = readlink("/proc/self/exe", buf, size - 1); + if (ret < 0) { + perror("readlink"); + goto err; + } + buf[ret] = 0; + + p = strrchr(buf, '/'); + if (p == NULL) + goto err; + p++; + + if (strstr(p, ".so")) { + p = getenv("GINGE_ROOT"); + if (p == NULL) + goto err; + strcpy(buf, p); + p = buf + strlen(buf); + } + + snprintf(p, size - (p - buf), "%s", file); + + return 0; + +err: + fprintf(stderr, "ginge: can't determine root, buf: \"%s\"\n", buf); + return -1; +} +