Annotation of researchv10no/netfs/serv/r50.c, revision 1.1.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.