1: /* ttym.c - miscellaneous routines */
   2: 
   3: #include <pwd.h>
   4: #ifndef NSIG
   5: #include <signal.h>
   6: #endif	NSIG
   7: #include <sys/time.h>
   8: 
   9: /*  */
  10: 
  11: static  ttym (fd, command, line, user, vec)
  12: int     fd;
  13: char   *command,
  14:        *line,
  15:        *user,
  16:       **vec;
  17: {
  18:     int     (*pstat) ();
  19:     char   *ap,
  20:            *term,
  21:            *myself,
  22:            *getlogin (),
  23:            *rindex (),
  24:            *ttyname ();
  25:     struct passwd  *pw,
  26:                    *getpwuid ();
  27: 
  28:     if ((term = ap = ttyname (2)) && (term = rindex (term, '/')))
  29:     term++;
  30:     if (term == NULL || *term == NULL)
  31:     term = ap;
  32:     if ((myself = getlogin ()) == NULL || *myself == NULL)
  33:     myself = (pw = getpwuid (getuid ())) ? pw -> pw_name : NULL;
  34: 
  35:     pstat = signal (SIGPIPE, SIG_IGN);
  36:     (void) write (fd, command, strlen (command));
  37:     (void) write (fd, "", 1);
  38: 
  39:     if (term)
  40:     (void) write (fd, term, strlen (term));
  41:     (void) write (fd, "", 1);
  42: 
  43:     if (myself)
  44:     (void) write (fd, myself, strlen (myself));
  45:     (void) write (fd, "", 1);
  46: 
  47:     if (line && *line)
  48:     (void) write (fd, line, strlen (line));
  49:     (void) write (fd, "", 1);
  50: 
  51:     if (user && *user)
  52:     (void) write (fd, user, strlen (user));
  53:     (void) write (fd, "", 1);
  54: 
  55:     if (vec)
  56:     while (ap = *vec++) {
  57:         (void) write (fd, ap, strlen (ap));
  58:         (void) write (fd, "", 1);
  59:     }
  60: 
  61:     (void) write (fd, "", 1);
  62:     (void) signal (SIGPIPE, pstat);
  63: }
  64: 
  65: /*  */
  66: 
  67: static int  ttyv (fd)
  68: int     fd;
  69: {
  70:     int     ifds,
  71:         nbits;
  72:     char    c;
  73:     struct timeval tv;
  74: 
  75:     ifds = 1 << fd;
  76:     nbits = getdtablesize();
  77:     tv.tv_sec = SMLWAIT;
  78:     tv.tv_usec = 0;
  79:     if (select (nbits, &ifds, (int *) 0, (int *) 0, &tv) <= 0
  80:         || read (fd, &c, 1) != 1)
  81:     return NOTOK;
  82:     if (c == NULL)
  83:     return fd;
  84:     putc (c, stderr);
  85: 
  86:     (void) ttyf (fd, stderr);
  87:     return NOTOK;
  88: }
  89: 
  90: 
  91: static int  ttyf (fd, f)
  92: int     fd;
  93: FILE * f;
  94: {
  95:     int     i;
  96:     char    buffer[BUFSIZ];
  97: 
  98:     while ((i = read (fd, buffer, sizeof buffer)) > 0)
  99:     (void) fwrite (buffer, sizeof (char), i, f);
 100:     return i;
 101: }

Defined functions

ttyf defined in line 91; used 1 times
  • in line 86
ttym defined in line 11; never used
ttyv defined in line 67; never used

Usage of this include

ttym.c used 1 times
Last modified: 1985-12-20
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 775
Valid CSS Valid XHTML 1.0 Strict