SCCS-vsn: usr.bin/window/main.c 3.35
SCCS-vsn: usr.bin/window/local.h 3.9
SCCS-vsn: usr.bin/window/wwenviron.c 3.22
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#)local.h 3.8 (Berkeley) %G%
+ * @(#)local.h 3.9 (Berkeley) %G%
#define RUNCOM ".windowrc"
#define ESCAPEC ctrl('p')
#define NLINE 48 /* default text buffer size */
#define RUNCOM ".windowrc"
#define ESCAPEC ctrl('p')
#define NLINE 48 /* default text buffer size */
-#define SHELL "/bin/sh" /* if no environment SHELL */
-static char sccsid[] = "@(#)main.c 3.34 (Berkeley) %G%";
+static char sccsid[] = "@(#)main.c 3.35 (Berkeley) %G%";
#endif /* not lint */
#include "defs.h"
#endif /* not lint */
#include "defs.h"
#include "string.h"
#include "char.h"
#include "local.h"
#include "string.h"
#include "char.h"
#include "local.h"
#define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)usage()))
#define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)usage()))
(void) usage();
}
if ((p = getenv("SHELL")) == 0)
(void) usage();
}
if ((p = getenv("SHELL")) == 0)
if ((default_shellfile = str_cpy(p)) == 0)
nomem();
if (p = rindex(default_shellfile, '/'))
if ((default_shellfile = str_cpy(p)) == 0)
nomem();
if (p = rindex(default_shellfile, '/'))
-static char sccsid[] = "@(#)wwenviron.c 3.21 (Berkeley) %G%";
+static char sccsid[] = "@(#)wwenviron.c 3.22 (Berkeley) %G%";
#endif /* not lint */
#include "ww.h"
#endif /* not lint */
#include "ww.h"
register struct ww *wp;
{
register i;
register struct ww *wp;
{
register i;
if ((i = open("/dev/tty", 0)) < 0)
goto bad;
if (ioctl(i, TIOCNOTTY, (char *)0) < 0)
goto bad;
(void) close(i);
if ((i = open("/dev/tty", 0)) < 0)
goto bad;
if (ioctl(i, TIOCNOTTY, (char *)0) < 0)
goto bad;
(void) close(i);
if ((i = wp->ww_socket) < 0) {
if ((i = open(wp->ww_ttyname, 2)) < 0)
goto bad;
if ((i = wp->ww_socket) < 0) {
if ((i = open(wp->ww_ttyname, 2)) < 0)
goto bad;
(void) dup2(i, 2);
for (i = wwdtablesize - 1; i > 2; i--)
(void) close(i);
(void) dup2(i, 2);
for (i = wwdtablesize - 1; i > 2; i--)
(void) close(i);
+#ifdef TIOCSCTTY
+ (void) setsid(0);
+ (void) ioctl(0, TIOCSCTTY, 0);
+#else
(void) ioctl(0, TIOCSPGRP, (char *)&pgrp);
(void) setpgrp(pgrp, pgrp);
(void) ioctl(0, TIOCSPGRP, (char *)&pgrp);
(void) setpgrp(pgrp, pgrp);
/* SIGPIPE is the only one we ignore */
(void) signal(SIGPIPE, SIG_DFL);
(void) sigsetmask(0);
/* SIGPIPE is the only one we ignore */
(void) signal(SIGPIPE, SIG_DFL);
(void) sigsetmask(0);