On Mon, Aug 31, 2015 at 12:17:06PM -0400, Ross Mohn wrote:
> Over the weekend, I finally put in the hours to figure out why dvtm's
> copymode works fine at home, but doesn't work at all on my servers at
> the office. At work, I use shared UNIX hosts without root access. I
> compile with
>     PREFIX=~/local
> so that I have my own compiled apps and customizations. My dvtm terminal
> info files are installed under $PREFIX, and when I'm running inside dvtm
> I have set
>     TERMINFO=~/local/share/terminfo
> 
> The problem occurs when the child process of vt_forkpty() calls execvp()
> to switch to the editor program. The environment variable TERM is set to
> dvtm-256color, but TERMINFO is not set. The call to execvp() is
> successful, but the editor crashes because it doesn't understand the
> TERM (I tested with vis, vim, and less). I don't know the best way to
> fix this so for myself, for now, I just hardcoded
>     setenv("TERMINFO", "~/local/share/terminfo", 1);
> after the setenv() line for TERM.

Environment variables should be passed on. I just tried the following:

 $ TEST=Hello dvtm

Then within dvtm the variable is available as can be confirmed by:

 $ env | grep TEST

Now enter copy mode (to vis) where we run:

 :r ! env | grep TEST

The variable is read as expected ...

> I thought through some actual solutions, but none seemed to fit well.
> I'd love to hear some ideas!
> 
> Incidentally, the fprintf(stderr, ...) statement after execvp() doesn't
> do anything because the child's stderr doesn't go anywhere meaningful.

I can confirm this, but do not really understand why it is happening.
There is a loop which closes any file descriptor >= 3 which should leave
stderr intact. 

-- 
 Marc André Tanner >< http://www.brain-dump.org/ >< GPG key: CF7D56C0

Reply via email to