diff options
-rw-r--r-- | osdep-darwin.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/osdep-darwin.c b/osdep-darwin.c index c5820df6..9cac1311 100644 --- a/osdep-darwin.c +++ b/osdep-darwin.c @@ -20,6 +20,7 @@ #include <sys/sysctl.h> #include <event.h> +#include <libproc.h> #include <stdlib.h> #include <string.h> #include <unistd.h> @@ -52,6 +53,16 @@ osdep_get_name(int fd, unused char *tty) char * osdep_get_cwd(pid_t pid) { + static char wd[PATH_MAX]; + struct proc_vnodepathinfo pathinfo; + int ret; + + ret = proc_pidinfo( + pid, PROC_PIDVNODEPATHINFO, 0, &pathinfo, sizeof pathinfo); + if (ret == sizeof pathinfo) { + strlcpy(wd, pathinfo.pvi_cdir.vip_path, sizeof wd); + return (wd); + } return (NULL); } |