sorry, I didn’t test it. I either missed the mail or was so busy I forgot it. 
my linux machine is the one I use to work, so I’ll patch it tomorrow or as soon 
as I can. I’ll let you know if it works.

thanks for the patch!



> This doesn't actually fix the problem for me on Linux, does it for both
> of you?
> 
> 
> On Sun, Mar 02, 2014 at 03:18:10PM +0000, Balazs Kezes wrote:
>> 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


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to