Annotation of 43BSD/contrib/icon/pifuncs/ttyctl.c, revision 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.