Annotation of 43BSD/contrib/icon/pifuncs/ttyctl.c, revision 1.1.1.1

1.1       root        1: /*
                      2: #      TTYCTL(3.icon)
                      3: #
                      4: #      Control of terminal attributes
                      5: #
                      6: #      Steven B. Wampler
                      7: #
                      8: #      Last modified 8/19/84
                      9: #
                     10: */
                     11: 
                     12: #include "../h/rt.h"
                     13: #ifdef VAX
                     14: #include <sgtty.h>
                     15: #define TIOCQSIZ        (('t'<<8)|65)
                     16: 
                     17: int oldttyflags = -1234;
                     18: 
                     19: Xstty(nargs)                                            /* set tty device flags */
                     20: int nargs;
                     21:    {
                     22:    register int oldflags, i, n;
                     23:    long l;
                     24:    struct sgttyb oldmodes;
                     25:    struct descrip arg;
                     26: 
                     27:    ioctl(2,TIOCGETP,&oldmodes);                         /* old modes */
                     28:    oldflags = oldmodes.sg_flags;
                     29:    if (oldttyflags == -1234)                            /* save if 1st call */
                     30:       oldttyflags = oldflags;
                     31: 
                     32:    for (n = 1; n <= nargs; n++) {
                     33:       arg = ARG(n);
                     34:       if (cvint(&arg, &l) == NULL)
                     35:          runerr(101, &arg);
                     36:       i = (int)l;
                     37:       if (l < 0)                                        /* turn off flag */
                     38:          oldmodes.sg_flags &= ~-(int)l;
                     39:       else                                              /* turn on flag */
                     40:          oldmodes.sg_flags |= (int)l;
                     41:       }
                     42: 
                     43:    ioctl(2,TIOCSETP,&oldmodes);                         /* new modes */
                     44:    mkint(oldflags, &ARG(0));                            /* return old modes */
                     45:    }
                     46: 
                     47: Procblock(stty,-1)
                     48: 
                     49: Xrestty(nargs)                                          /* reset tty to original state */
                     50: int nargs;
                     51:    {                    /* if original state unknown, makes a guess */
                     52:    register int oldflags;
                     53:    struct sgttyb oldmodes;
                     54: 
                     55:    ioctl(2,TIOCGETP,&oldmodes);
                     56:    oldflags = oldmodes.sg_flags;
                     57:    oldmodes.sg_flags = (oldttyflags == -1234) ? 0330 : oldttyflags;
                     58:    ioctl(2,TIOCSETP,&oldmodes);
                     59:    mkint(oldflags, &ARG(0));                             /* return old modes */
                     60:    }
                     61: 
                     62: Procblock(restty,0)
                     63: 
                     64: Xkeyin(nargs)
                     65: int nargs;
                     66:   {
                     67:   long count;
                     68:   count = 0;
                     69:   ioctl(0, FIONREAD, &count);
                     70: 
                     71:   if (count == 0L)
                     72:      fail();
                     73: 
                     74:   ARG(0) = nulldesc;
                     75:   }
                     76: 
                     77: Procblock(keyin,0)
                     78: #endif VAX

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.