Annotation of researchv9/jtools/src/sunlib/kbdrcv.c, revision 1.1

1.1     ! root        1: #include "jerq.h"
        !             2: #include "rcv.h"
        !             3: 
        !             4: #define RCVBUFSIZE     1024
        !             5: #define        HIBUF           1000
        !             6: #define        LOWBUF          256
        !             7: 
        !             8: static unsigned char rcvbuffer[RCVBUFSIZE];    /* buffer for rcv input */
        !             9: struct Jrcvbuf Jrcvbuf = {rcvbuffer, rcvbuffer, rcvbuffer, 0, RCVBUFSIZE, 0 };
        !            10: 
        !            11: rcvchar ()
        !            12: {
        !            13:        int i;
        !            14: 
        !            15:        if (!Jrcvbuf.cnt)
        !            16:                return -1;
        !            17:        i = *Jrcvbuf.out++;
        !            18:        if(Jrcvbuf.out == &Jrcvbuf.buf[Jrcvbuf.size])
        !            19:                Jrcvbuf.out = Jrcvbuf.buf;
        !            20:        if(--Jrcvbuf.cnt == 0)
        !            21:                P->state &= ~RCV;
        !            22:        if (Jrcvbuf.blocked && Jrcvbuf.cnt <= LOWBUF)
        !            23:                Jrcvbuf.blocked = 0;
        !            24:        return(i);
        !            25: }
        !            26: 
        !            27: rcvbfill(buf, cnt)
        !            28: register unsigned char *buf;
        !            29: {
        !            30:        register i;
        !            31:        unsigned char *ebuf;
        !            32: 
        !            33:        if (Jrcvbuf.cnt == Jrcvbuf.size)
        !            34:                return;
        !            35:        ebuf = &Jrcvbuf.buf[Jrcvbuf.size];
        !            36:        i = min (cnt, Jrcvbuf.size - Jrcvbuf.cnt);
        !            37:        P->state |= RCV;
        !            38:        Jrcvbuf.cnt += i;
        !            39:        if (Jrcvbuf.cnt >= HIBUF)
        !            40:                Jrcvbuf.blocked = 1;
        !            41:        while (i--) {
        !            42:                *Jrcvbuf.in++ = *buf++;
        !            43:                if (Jrcvbuf.in == ebuf)
        !            44:                        Jrcvbuf.in = Jrcvbuf.buf;
        !            45:        }
        !            46: }
        !            47: 
        !            48: #define KBDBUFSIZE     128
        !            49: static unsigned char kbdbuffer[KBDBUFSIZE];    /* buffer for kbd input */
        !            50: static struct {
        !            51:        unsigned char *buf;
        !            52:        unsigned char *in;
        !            53:        unsigned char *out;
        !            54:        int cnt;
        !            55:        int size;
        !            56: } kbdbuf = {kbdbuffer, kbdbuffer, kbdbuffer, 0, KBDBUFSIZE};
        !            57: 
        !            58: kbdchar ()
        !            59: {
        !            60:        int i;
        !            61: 
        !            62:        if(!kbdbuf.cnt)
        !            63:                return -1;
        !            64:        i = *kbdbuf.out++;
        !            65:        if(kbdbuf.out == &kbdbuf.buf[kbdbuf.size])
        !            66:                kbdbuf.out = kbdbuf.buf;
        !            67:        if(--kbdbuf.cnt == 0)
        !            68:                P->state &= ~KBD;
        !            69:        return(i);
        !            70: }
        !            71: 
        !            72: kbdread (cp)
        !            73: unsigned char *cp;
        !            74: {
        !            75:        if(kbdbuf.cnt == kbdbuf.size)
        !            76:                return;
        !            77:        *kbdbuf.in++ = *cp;
        !            78:        kbdbuf.cnt++;
        !            79:        if(kbdbuf.in == &kbdbuf.buf[kbdbuf.size])
        !            80:                kbdbuf.in = kbdbuf.buf;
        !            81: }

unix.superglobalmegacorp.com

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