diff -ur xxgdb-1.12/calldbx.c xxgdb-1.12.last/calldbx.c --- xxgdb-1.12/calldbx.c 2005-07-30 22:21:47.000000000 +0900 +++ xxgdb-1.12.last/calldbx.c 2005-07-30 22:13:12.000000000 +0900 @@ -86,6 +86,11 @@ #include #endif /* CREATE_IO_WINDOW */ +#define Unix98 1 +#ifdef Unix98 +#include +#endif + #ifdef SVR4 #define MASTER_CLONE "/dev/ptmx" #include @@ -125,8 +130,13 @@ static int open_master() { int master; +#if Unix98 + if ((master = open("/dev/ptmx", O_RDWR)) >= 0) + return master; + exit (1); +#endif -#ifdef SVR4 /* (MJH) Use STREAMS */ +#if defined(SVR4) /* (MJH) Use STREAMS */ if((master = open(MASTER_CLONE, O_RDWR)) < 0) perror(MASTER_CLONE); @@ -167,6 +177,22 @@ { int slave; +#if Unix98 + char *slave_name = "unknown"; + void (*handler)(); + + if(((handler = signal(SIGCHLD, SIG_DFL)) != SIG_ERR) + && (grantpt(master) == 0) + && (signal(SIGCHLD, handler) == SIG_DFL) + && (unlockpt(master) == 0) + && (slave_name = ptsname(master))) { + fprintf(stderr, "open: slave %s\n", slave_name); + if ((slave = open(slave_name, O_RDWR)) >= 0) + return slave; + } + perror(slave_name); + exit(1); +#else #ifdef SVR4 /* (MJH) */ char *slave_name = "unknown"; extern char *ptsname(int master); @@ -194,6 +220,7 @@ } return slave; #endif /* SVR4 */ +#endif /* Unix98 */ } #ifdef CREATE_IO_WINDOW