home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / sps2 / part03 / findtty.c < prev    next >
C/C++ Source or Header  |  1991-01-08  |  1KB  |  59 lines

  1. # ifndef lint
  2. static char SccsId[] =  "@(#)findtty.c    1.4\t8/6/90" ;
  3. # endif
  4.  
  5. # include       "sps.h"
  6. # include       <h/ioctl.h>
  7. # ifdef SUNOS40
  8. # include       <h/stream.h>
  9. # else
  10. # include       <h/tty.h>
  11. # endif
  12. # ifdef SUNOS41
  13. # include    <h/session.h>
  14. # endif
  15.  
  16. /* FINDTTY - Attempts to determine to which tty a process is connected */
  17. struct ttyline  *findtty ( p )
  18.  
  19. register struct process         *p ;
  20.  
  21. {
  22.     register struct ttyline *lp ;
  23.     extern struct info      Info ;
  24.     extern struct ttyline   Notty ;
  25. # ifdef SUNOS41
  26.     struct sess        *s ;
  27.     extern struct sess    *find_session () ;
  28. # else
  29.     extern union userstate  User ;
  30. # endif SUNOS41
  31.  
  32.  
  33. # ifdef SUNOS41
  34.     if ( !p->pr_p.p_pgrp || !p->pr_p.p_sessp )
  35.         return ( &Notty ) ;
  36.     s = find_session( p->pr_p.p_sessp ) ;
  37.     if ( s == 0 || s->s_ttyp == 0 )
  38.         return &Notty;
  39.     for ( lp = Info.i_ttyline ; lp->l_name[0] ; lp++ )
  40.         if ( lp->l_dev == s->s_ttyd )
  41.             return ( lp ) ;
  42.     /* Kludge from outer space    ++sja */
  43.     if ( s->s_ttyd == 256 )
  44.         return &Info.i_ttyline[0] ;
  45.     return ( &Notty ) ;
  46. # else
  47. #  ifdef ULTRIX30
  48.     if ( !p->pr_p.p_pgrp || !p->pr_p.p_ttyp )
  49. #  else
  50.     if ( !p->pr_p.p_pgrp || !User.u_us.u_ttyp )
  51. #  endif
  52.         return ( &Notty ) ;
  53.     for ( lp = Info.i_ttyline ; lp->l_name[0] ; lp++ )
  54.         if ( lp->l_dev == User.u_us.u_ttyd )
  55.             return ( lp ) ;
  56.     return ( &Notty ) ;
  57. #endif SUNOS41
  58. }
  59.