+// vim:shiftwidth=2:expandtab
#ifdef LOADER
#include "../loader/realfuncs.h"
#endif
ssize_t ret;
char *p;
- ret = readlink("/proc/self/exe", buf, size - 1);
- if (ret < 0) {
- perror("readlink");
- goto err;
+ p = getenv("GINGE_ROOT");
+ if (p != NULL) {
+ strncpy(buf, p, size);
+ buf[size - 1] = 0;
+ p = buf + strlen(buf);
}
- buf[ret] = 0;
-
- p = strrchr(buf, '/');
- if (p == NULL)
- goto err;
- p++;
+ else {
+ ret = readlink("/proc/self/exe", buf, size - 1);
+ if (ret < 0) {
+ perror("readlink");
+ goto err;
+ }
+ buf[ret] = 0;
- if (strstr(p, ".so")) {
- p = getenv("GINGE_ROOT");
+ p = strrchr(buf, '/');
if (p == NULL)
goto err;
- strcpy(buf, p);
- p = buf + strlen(buf);
+ p++;
}
snprintf(p, size - (p - buf), "%s", file);