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

  1. # ifndef lint
  2. static char SccsId[] =  "@(#)flagsetup.c    1.1\t10/1/88" ;
  3. # endif
  4.  
  5. # include       "sps.h"
  6. # include       "flags.h"
  7. # include       <h/ioctl.h>
  8. # ifdef SUNOS40
  9. # include       <h/stream.h>
  10. # endif
  11. # include       <h/tty.h>
  12.  
  13. /*
  14. ** FLAGSETUP - Replaces any users or processes specified by flagdecode()
  15. ** with numerical equivalents. The lists are terminated by negative values.
  16. ** or null pointers. Ttystatus() must have been previously called to
  17. ** initialise the Info structure with chaos tty values.
  18. */
  19. flagsetup ()
  20. {
  21.     register union flaglist *fp ;
  22.     register char           *chp ;
  23.     register int            i ;
  24.     register struct ttyline *lp ;
  25.     int                     found ;
  26.     extern struct flags     Flg ;
  27.     extern struct info      Info ;
  28.  
  29.     /* Look for specified users */
  30.     if ( Flg.flg_U )                
  31.     {
  32.         if ( !Flg.flg_Ulist->f_chp )
  33.             prexit( "sps - User name was expected after -u flag\n");
  34.         for ( fp = Flg.flg_Ulist ; chp = fp->f_chp ; fp++ )
  35.         {
  36.             found = 0 ;
  37.             for ( i = 0 ; i < MAXUSERS ; i++ )
  38.                 if ( !strncmp( chp, Info.i_hnames[i].h_uname,
  39.                     UNAMELEN ) )
  40.                 {
  41.                     fp->f_uid = Info.i_hnames[i].h_uid ;
  42.                     found = 1 ;
  43.                     break ;
  44.                 }
  45.             if ( !found )
  46.                 prexit( "sps - Unknown user: %s\n", chp ) ;
  47.         }
  48.         fp->f_uid = -1 ;
  49.     }
  50.     /* Look for specified process ids */
  51.     if ( Flg.flg_P )                
  52.     {
  53.         if ( !Flg.flg_Plist->f_chp )
  54.             prexit(
  55.                  "sps - Process id was expected after -p flag\n" ) ;
  56.         for ( fp = Flg.flg_Plist ; chp = fp->f_chp ; fp++ )
  57.         {
  58.             if ( chp[0] < '0' || chp[0] > '9' )
  59.                 prexit( "sps - Bad process id: %s\n", chp ) ;
  60.             fp->f_pid = atoi( chp ) ;
  61.         }
  62.         fp->f_pid = -1 ;
  63.     }
  64.     /* Look for specified ttys */
  65.     if ( !Flg.flg_T )               
  66.         return ;
  67.     if ( !Flg.flg_Tlist->f_chp )
  68.         prexit( "sps - Tty name was expected after -t flag\n" ) ;
  69.     for ( fp = Flg.flg_Tlist ; chp = fp->f_chp ; fp++ )
  70.     {       /* Under VMUNIX, all ttys have two character names.
  71.            Thus, a flag of the form `t 8' should be expanded to
  72.            become `t 08'. */
  73.         if ( !chp[1] )
  74.             chp[1] = chp[0], chp[0] = '0' ;
  75.         found = 0 ;
  76.         for ( lp = Info.i_ttyline ; lp->l_name[0] ; lp++ )
  77.             if ( !strncmp( chp, lp->l_name, 2 ) )
  78.             {
  79.                 fp->f_ttyline = lp ;
  80.                 found = 1 ;
  81.                 break ;
  82.             }
  83.         if ( !found )
  84.             prexit( "sps - Unknown tty name: %.2s\n", chp ) ;
  85.     }
  86.     fp->f_ttyline = (struct ttyline*)0 ;
  87. }
  88.