tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg-config difference when run in pkgsrc vs normal run?



On Sun, Jul 07, 2024 at 02:19:14AM +0300, Andrew Randrianasulu wrote:
> Another part of our unportability related to way we use /proc for getting
> our own executable name/path. Is there more portable way to do so?

That is indeed very tricky to do and AFAIK no portable way exists.
A good example how to do it on NetBSD w/o /proc requirement is in
src/lib/libexecinfo/backtrace.c:

---8<---
#ifdef __linux__
#define SELF    "/proc/self/exe"
#else
#include <sys/sysctl.h>
#define SELF    "/proc/curproc/file"
#endif

static int
open_self(int flags)
{
        const char *pathname = SELF;
#ifdef KERN_PROC_PATHNAME
        static const int name[] = {
                CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME,
        };
        char path[MAXPATHLEN];
        size_t len;

        len = sizeof(path);
        if (sysctl(name, __arraycount(name), path, &len, NULL, 0) != -1)
                pathname = path;
#endif
        return open(pathname, flags);
}
--->8---


Martin


Home | Main Index | Thread Index | Old Index