3681
|
1 /* s/ file for System V release 4.2. */
|
|
2
|
|
3 #include "usg5-4.h"
|
|
4
|
|
5 /* pcg@aber.ac.uk says this is useless since fork does copy-on-write
|
|
6 #define HAVE_VFORK */
|
|
7 /* fnf@cygnus.com says these exist. */
|
|
8 #define HAVE_TCATTR
|
|
9 #define HAVE_GETHOSTNAME
|
|
10 #if 0 /* autoconf should take care of this. */
|
|
11 #define HAVE_RANDOM
|
|
12 #endif
|
|
13 /* #define HAVE_GETWD (appears to be buggy on SVR4.2) */
|
|
14
|
|
15 /* Info from fnf@cygnus.com suggests this is appropriate. */
|
|
16 #define POSIX_SIGNALS
|
|
17
|
|
18 /* We don't need the definition from usg5-3.h with POSIX_SIGNALS. */
|
|
19 #undef sigsetmask
|
|
20 #undef HAVE_SYSV_SIGPAUSE
|
|
21
|
|
22 /* This is the same definition as in usg5-4.h, but with sigblock/sigunblock
|
|
23 rather than sighold/sigrelse, which appear to be BSD4.1 specific and won't
|
|
24 work if POSIX_SIGNALS is defined. It may also be appropriate for SVR4.x
|
|
25 (x<2) but I'm not sure. fnf@cygnus.com */
|
|
26 /* This sets the name of the slave side of the PTY. On SysVr4,
|
|
27 grantpt(3) forks a subprocess, so keep sigchld_handler() from
|
|
28 intercepting that death. If any child but grantpt's should die
|
|
29 within, it should be caught after sigrelse(2). */
|
|
30
|
|
31 #undef PTY_TTY_NAME_SPRINTF
|
|
32 #define PTY_TTY_NAME_SPRINTF \
|
|
33 { \
|
|
34 char *ptsname(), *ptyname; \
|
|
35 \
|
|
36 sigblock(sigmask(SIGCLD)); \
|
|
37 if (grantpt(fd) == -1) \
|
|
38 fatal("could not grant slave pty"); \
|
|
39 sigunblock(sigmask(SIGCLD)); \
|
|
40 if (unlockpt(fd) == -1) \
|
|
41 fatal("could not unlock slave pty"); \
|
|
42 if (!(ptyname = ptsname(fd))) \
|
|
43 fatal ("could not enable slave pty"); \
|
|
44 strncpy(pty_name, ptyname, sizeof(pty_name)); \
|
|
45 pty_name[sizeof(pty_name) - 1] = 0; \
|
|
46 }
|