[comp.soft-sys.andrew] "GetPty" doesn't look at all 64 pty's on BSD systems

guy@auspex.auspex.com (Guy Harris) (10/24/89)

"GetPty", on BSD and HP-UX systems, thinks that the only pseudo-ttys on
the system are named "/dev/ttyp0" through "/dev/ttypf".  In
fact, since 4.2BSD, as I remember, there could be up to 64, in banks
"/dev/tty[pqrs]" (the driver can support more, but BSD programs
generally search only those 4 banks).  If the same is true for HP-UX,
here's a fix to "overhead/util/lib/getpty.c" to make "GetPty" search all
64 pseudo-ttys:

*** getpty.c.dist	Thu Oct 19 16:53:51 1989
--- getpty.c	Thu Oct 19 17:22:44 1989
***************
*** 27,35 ****
  
  
  #ifdef hpux
! #define MASTER_PTY_PREFIX "/dev/ptym/ptyp"
! #define SLAVE_PTY_PREFIX "/dev/pty/ttyp"
! #define MAX_PTYS 16
  #endif /* HPUX */
  
  #ifdef AIX
--- 27,35 ----
  
  
  #ifdef hpux
! #define MASTER_PTY_PREFIX "/dev/ptym/pty"
! #define SLAVE_PTY_PREFIX "/dev/pty/tty"
! #define MAX_PTYS 64
  #endif /* HPUX */
  
  #ifdef AIX
***************
*** 39,47 ****
  #endif /* AIX */
  
  #ifndef MASTER_PTY_PREFIX
! #define MASTER_PTY_PREFIX "/dev/ptyp"
! #define SLAVE_PTY_PREFIX "/dev/ttyp"
! #define MAX_PTYS 16
  #endif
  
  static char *GetPtyNumberString(num)
--- 39,47 ----
  #endif /* AIX */
  
  #ifndef MASTER_PTY_PREFIX
! #define MASTER_PTY_PREFIX "/dev/pty"
! #define SLAVE_PTY_PREFIX "/dev/tty"
! #define MAX_PTYS 64
  #endif
  
  static char *GetPtyNumberString(num)
***************
*** 51,64 ****
  
  #ifdef AIX
      sprintf(ptyNum, "%d", num);
! #else 
!     if (num < 10)  {
! 	sprintf(ptyNum, "%d", num);
!     }
!     else  {
! 	ptyNum[0] = 'a' + num - 10;
! 	ptyNum[1] = '\0';
!     }
  #endif /* AIX */
      return ptyNum;
  }
--- 51,58 ----
  
  #ifdef AIX
      sprintf(ptyNum, "%d", num);
! #else
!     sprintf(ptyNum, "%c%c", 'p' + num/16, "0123456789abcdef"[num%16]);
  #endif /* AIX */
      return ptyNum;
  }