diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2011-12-09 16:37:29 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2011-12-09 16:37:29 +0000 |
commit | c1b994852594b23b7443e01e05257c991684ba4e (patch) | |
tree | 7cbfc1dbdeff8197e63167dee96200d122a1be72 /osdep-linux.c | |
parent | 76862acf3e8ebd3573c1b9415b32731891e5545a (diff) | |
download | rtmux-c1b994852594b23b7443e01e05257c991684ba4e.tar.gz rtmux-c1b994852594b23b7443e01e05257c991684ba4e.tar.bz2 rtmux-c1b994852594b23b7443e01e05257c991684ba4e.zip |
Change the way the working directory for new processes is discovered. If
default-path isn't empty, it is used. Otherwise:
1) If tmux neww is run from the command line, the working directory of the
client is used.
2) Otherwise use some platform specific code to retrieve the current working
directory of the process in the active pane.
3) If that fails, the directory where the session was created is used.
Idea and support code, Linux, Solaris, FreeBSD bits by Romain Francoise,
OpenBSD bits by me.
Diffstat (limited to 'osdep-linux.c')
-rw-r--r-- | osdep-linux.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/osdep-linux.c b/osdep-linux.c index b4a1a9f6..6e4430b8 100644 --- a/osdep-linux.c +++ b/osdep-linux.c @@ -60,6 +60,23 @@ osdep_get_name(int fd, unused char *tty) return (buf); } +char * +osdep_get_cwd(pid_t pid) +{ + static char target[MAXPATHLEN + 1]; + char *path; + ssize_t n; + + xasprintf(&path, "/proc/%d/cwd", pid); + n = readlink(path, target, MAXPATHLEN); + xfree(path); + if (n > 0) { + target[n] = '\0'; + return (target); + } + return (NULL); +} + struct event_base * osdep_event_init(void) { |