Revision 92c0e657

b/vl.c
52 52
#include <sys/stat.h>
53 53
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
54 54
#include <libutil.h>
55
#include <sys/sysctl.h>
55 56
#else
56 57
#include <util.h>
57 58
#endif
......
2276 2277
    }
2277 2278
#elif defined(__FreeBSD__)
2278 2279
    {
2279
        int len;
2280
        len = readlink("/proc/curproc/file", buf, sizeof(buf) - 1);
2281
        if (len > 0) {
2282
            buf[len] = 0;
2280
        static int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
2281
        size_t len = sizeof(buf) - 1;
2282

  
2283
        *buf = '\0';
2284
        if (!sysctl(mib, sizeof(mib)/sizeof(*mib), buf, &len, NULL, 0) &&
2285
            *buf) {
2286
            buf[sizeof(buf) - 1] = '\0';
2283 2287
            p = buf;
2284 2288
        }
2285 2289
    }

Also available in: Unified diff