Annotation of researchv10no/netfs/serv/r50.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * ascii<>radix50
        !             3:  */
        !             4: 
        !             5: #define        BADC    0100
        !             6: 
        !             7: static char r50c[128] = {
        !             8:        BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,
        !             9:        BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,
        !            10:        BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,
        !            11:        BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   BADC,
        !            12:        000,    BADC,   BADC,   BADC,   033,    BADC,   BADC,   BADC,
        !            13:        BADC,   BADC,   BADC,   BADC,   BADC,   BADC,   034,    BADC,
        !            14:        036,    037,    040,    041,    042,    043,    044,    045,
        !            15:        046,    047,    BADC,   BADC,   BADC,   BADC,   BADC,   BADC,
        !            16:        BADC,   001,    002,    003,    004,    005,    006,    007,
        !            17:        010,    011,    012,    013,    014,    015,    016,    017,
        !            18:        020,    021,    022,    023,    024,    025,    026,    027,
        !            19:        030,    031,    032,    BADC,   BADC,   BADC,   BADC,   BADC,
        !            20:        BADC,   001,    002,    003,    004,    005,    006,    007,
        !            21:        010,    011,    012,    013,    014,    015,    016,    017,
        !            22:        020,    021,    022,    023,    024,    025,    026,    027,
        !            23:        030,    031,    032,    BADC,   BADC,   BADC,   BADC,   BADC
        !            24: };
        !            25: 
        !            26: static char r50a[] = " abcdefghijklmnopqrstuvwxyz$.?0123456789";
        !            27: 
        !            28: /*
        !            29:  * convert up to three characters
        !            30:  * from ascii to r50
        !            31:  * advances s; returns the r50
        !            32:  * -1 means an error
        !            33:  */
        !            34: int
        !            35: ator50(s)
        !            36: register char **s;
        !            37: {
        !            38:        register char c;
        !            39:        register int i;
        !            40:        register unsigned short r;
        !            41: 
        !            42:        r = 0;
        !            43:        for (i = 0; i < 3 && (c = **s) != 0 ; i++) {
        !            44:                if (c & 0200)
        !            45:                        return (-1);
        !            46:                if ((c = r50c[c]) == BADC)
        !            47:                        return (-1);
        !            48:                r *= 050;
        !            49:                r += c;
        !            50:                (*s)++;
        !            51:        }
        !            52:        for (; i < 3; i++)
        !            53:                r *= 050;               /* justify */
        !            54:        return (r);
        !            55: }
        !            56: 
        !            57: /*
        !            58:  * convert r50 to ascii,
        !            59:  * suppressing leading blanks
        !            60:  * s is where to put the string;
        !            61:  * the new s is returned.
        !            62:  * s had best have at least three characters remaining
        !            63:  */
        !            64: 
        !            65: char *
        !            66: r50toa(s, x)
        !            67: register unsigned short x;
        !            68: register char *s;
        !            69: {
        !            70:        register unsigned char  c;
        !            71: 
        !            72:        if (x) {
        !            73:                c = x % 050;
        !            74:                x /= 050;
        !            75:                if (x)
        !            76:                        s = r50toa(s, x);
        !            77:                *s++ = r50a[c];
        !            78:        }
        !            79:        return (s);
        !            80: }

unix.superglobalmegacorp.com

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