mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 12:37:02 +00:00
Improve NetBSD KERN_PROC2 bit, mostly from Kamil Rytarowski.
This commit is contained in:
@ -80,30 +80,32 @@ osdep_get_name(int fd, __unused char *tty)
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
buf = NULL;
|
buf = NULL;
|
||||||
len = sizeof(bestp);
|
len = sizeof bestp;
|
||||||
|
|
||||||
mib[0] = CTL_KERN;
|
mib[0] = CTL_KERN;
|
||||||
mib[1] = KERN_PROC2;
|
mib[1] = KERN_PROC2;
|
||||||
mib[2] = KERN_PROC_PGRP;
|
mib[2] = KERN_PROC_PGRP;
|
||||||
mib[4] = sizeof (*buf);
|
mib[4] = sizeof *buf;
|
||||||
mib[5] = 0;
|
|
||||||
|
|
||||||
retry:
|
retry:
|
||||||
|
mib[5] = 0;
|
||||||
|
|
||||||
if (sysctl(mib, __arraycount(mib), NULL, &len, NULL, 0) == -1)
|
if (sysctl(mib, __arraycount(mib), NULL, &len, NULL, 0) == -1)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
if ((newbuf = realloc(buf, len * sizeof (*buf))) == NULL)
|
if ((newbuf = realloc(buf, len)) == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
buf = newbuf;
|
buf = newbuf;
|
||||||
|
|
||||||
mib[5] = len / sizeof(*buf);
|
mib[5] = len / (sizeof *buf);
|
||||||
if (sysctl(mib, __arraycount(mib), buf, &len, NULL, 0) == -1) {
|
if (sysctl(mib, __arraycount(mib), buf, &len, NULL, 0) == -1) {
|
||||||
if (errno == ENOMEM)
|
if (errno == ENOMEM)
|
||||||
goto retry; /* possible infinite loop? */
|
goto retry;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
bestp = NULL;
|
bestp = NULL;
|
||||||
for (i = 0; i < len / sizeof (*buf); i++) {
|
for (i = 0; i < len / (sizeof *buf); i++) {
|
||||||
if (buf[i].p_tdev != sb.st_rdev)
|
if (buf[i].p_tdev != sb.st_rdev)
|
||||||
continue;
|
continue;
|
||||||
if (bestp == NULL)
|
if (bestp == NULL)
|
||||||
|
Reference in New Issue
Block a user