Annotation of researchv9/jtools/src/pads/x11/protocol.c, revision 1.1.1.1

1.1       root        1: #define PADS_TERM
                      2: #include <pads.pri>
                      3: 
                      4: static void Proto(p)
                      5: {
                      6:        PutRemote(p);
                      7: }
                      8: 
                      9: static void CheckProto( p )
                     10: {
                     11:        if( GetRemote() != p ) ProtoErr("");
                     12: }
                     13: 
                     14: static long ShiftIn( bytes )
                     15: register bytes;
                     16: {
                     17:        register long shifter = 0;
                     18: 
                     19:        CheckProto( bytes );
                     20:        while( bytes-- ) shifter = (shifter<<8) + (GetRemote()&0xFF);
                     21:        return shifter;
                     22: }
                     23: 
                     24: long  RcvLong()  { return (long)  ShiftIn( P_LONG  ); }
                     25: short RcvShort() { return (short) ShiftIn( P_SHORT ); }
                     26: unsigned char RcvUChar() { return (unsigned char) ShiftIn( P_UCHAR ); }
                     27: 
                     28: static void ShiftOut( bytes, shifter )
                     29: register bytes;
                     30: register long shifter;
                     31: {
                     32:        Proto( bytes );
                     33:        do PutRemote( (char)(shifter>>( (--bytes)*8 )) ); while( bytes );
                     34: }
                     35: 
                     36: void SendLong(x)  long  x; { ShiftOut( P_LONG,  (long) x ); }
                     37: void SendShort(x) short x; { ShiftOut( P_SHORT, (long) x ); }
                     38: void SendUChar(x) unsigned char x; { ShiftOut( P_UCHAR, (long) x ); }
                     39: 
                     40: char *RcvString( s )
                     41: register char *s;
                     42: {
                     43:        register unsigned char len;
                     44: 
                     45:        assertf( (long) s );
                     46:        CheckProto( P_STRING );
                     47:        len = RcvUChar();
                     48:        while( len-->0 ) *s++ = GetRemote();
                     49:        *s = '\0';
                     50:        return s;
                     51: }
                     52: 
                     53: void SendString(s)
                     54: register char *s;
                     55: {
                     56:        Proto( P_STRING );
                     57:        SendUChar( strlen(s) );
                     58:        while( *s ) PutRemote(*s++); 
                     59: }

unix.superglobalmegacorp.com

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