Commit | Line | Data |
---|---|---|
aa149fde | 1 | #ifndef lint |
1e40e125 | 2 | static char sccsid[] = "@(#)wwenviron.c 3.12 %G%"; |
aa149fde EW |
3 | #endif |
4 | ||
5 | #include "ww.h" | |
1e40e125 | 6 | #include <sys/signal.h> |
aa149fde | 7 | |
224ba859 EW |
8 | /* |
9 | * Set up the environment of this process to run in window 'wp'. | |
224ba859 | 10 | */ |
aa149fde EW |
11 | wwenviron(wp) |
12 | register struct ww *wp; | |
13 | { | |
14 | register i; | |
950f1780 | 15 | int pgrp = getpid(); |
aa149fde | 16 | |
7ecf4dca EW |
17 | if ((i = open("/dev/tty", 0)) < 0) |
18 | goto bad; | |
eec72f58 | 19 | if (ioctl(i, (int)TIOCNOTTY, (char *)0) < 0) |
7ecf4dca | 20 | goto bad; |
aa149fde | 21 | (void) close(i); |
7ecf4dca EW |
22 | if ((i = wp->ww_socket) < 0 && (i = open(wp->ww_ttyname, 2)) < 0) |
23 | goto bad; | |
eec72f58 EW |
24 | (void) dup2(i, 0); |
25 | (void) dup2(i, 1); | |
26 | (void) dup2(i, 2); | |
27 | for (i = wwdtablesize - 1; i > 2; i--) | |
28 | (void) close(i); | |
7ecf4dca | 29 | (void) ioctl(0, (int)TIOCSPGRP, (char *)&pgrp); |
950f1780 | 30 | (void) setpgrp(pgrp, pgrp); |
1e40e125 | 31 | (void) signal(SIGPIPE, SIG_DFL); |
4222244b | 32 | (void) sprintf(wwwintermcap, "TERMCAP=%sco#%d:li#%d:%s%s%s%s", |
78be6843 EW |
33 | WWT_TERMCAP, wp->ww_w.nc, wp->ww_w.nr, |
34 | wwavailmodes & WWM_REV ? WWT_REV : "", | |
35 | wwavailmodes & WWM_UL ? WWT_UL : "", | |
36 | wwavailmodes & WWM_GRP ? WWT_GRP : "", | |
37 | wwkeys); | |
7ecf4dca EW |
38 | return 0; |
39 | bad: | |
40 | wwerrno = WWE_SYS; | |
41 | return -1; | |
aa149fde | 42 | } |