On 2014-02-27 22:09, Matteo Cavalleri wrote:
> $ cat /etc/hosts | less # the pipe is important here
> [...]
> so when I create a new window with e.g. something piped to less the
> new window opens on the root directory, always.

It seems that tmux tries to determine the pane's current directory by
checking the foreground process group's leader's current working
directory. In the above pipe that leader is the "cat /etc/hosts" which
has already finished when you do the split so it can't observe its cwd
at that point.

I think a reasonable fallback for this scenario would be to check the
session leader's cwd which is the shell where you start the above
pipeline. I've appended a patch which implements this in Linux.

---
diff --git a/osdep-linux.c b/osdep-linux.c
index ccac267..8942c94 100644
--- a/osdep-linux.c
+++ b/osdep-linux.c
@@ -65,7 +65,7 @@ osdep_get_cwd(int fd)
 {
        static char      target[MAXPATHLEN + 1];
        char            *path;
-       pid_t            pgrp;
+       pid_t            pgrp, sid;
        ssize_t          n;
 
        if ((pgrp = tcgetpgrp(fd)) == -1)
@@ -74,6 +74,16 @@ osdep_get_cwd(int fd)
        xasprintf(&path, "/proc/%lld/cwd", (long long) pgrp);
        n = readlink(path, target, MAXPATHLEN);
        free(path);
+
+       if (n == -1) {
+               // Try the session leader as well.
+               if (ioctl(fd, TIOCGSID, &sid) == -1)
+                       return (NULL);
+               xasprintf(&path, "/proc/%lld/cwd", (long long) sid);
+               n = readlink(path, target, MAXPATHLEN);
+               free(path);
+       }
+
        if (n > 0) {
                target[n] = '\0';
                return (target);
-- 
Balazs

------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to