Annotation of researchv10no/cmd/f2c/misc/cdstest.c, revision 1.1

1.1     ! root        1: /* For debugging, read ASCII numbers on stdin, write them in
        !             2:  * compressed and expanded form on stdout.  Numbers without
        !             3:  * a decimal point are taken to be unsigned integers.
        !             4:  */
        !             5: 
        !             6: #include <stdio.h>
        !             7: 
        !             8: char *
        !             9: nonbln(s)
        !            10: char *s;
        !            11: {
        !            12:        char c;
        !            13:        if (s)
        !            14:                for(; c = *s; s++)
        !            15:                        if (c > ' ') return s;
        !            16:        return 0;
        !            17:        }
        !            18: 
        !            19: char *
        !            20: nextbln(s)
        !            21: char *s;
        !            22: {
        !            23:        while(*s > ' ') s++;
        !            24:        return s;
        !            25:        }
        !            26: 
        !            27:  char *
        !            28: Alloc(n)
        !            29:  int n;
        !            30: {
        !            31:        extern char *malloc();
        !            32:        register char *rv;
        !            33:        rv = malloc(n);
        !            34:        if (!rv) {
        !            35:                fprintf(stderr, "malloc(%d) failure!\n", n);
        !            36:                exit(1);
        !            37:                }
        !            38:        return rv;
        !            39:        }
        !            40: 
        !            41: fatal(msg)
        !            42:  char *msg;
        !            43: {
        !            44:        fprintf(stderr, "*** %s ***\n", msg);
        !            45:        exit(1);
        !            46:        }
        !            47: 
        !            48:  static char *memlast;
        !            49: 
        !            50:  char *
        !            51: mem(n)
        !            52:  int n;
        !            53: {
        !            54:        static char buf[512];
        !            55:        if (n > sizeof(buf)) {
        !            56:                fprintf(stderr, "mem(%d) failure!\n", n);
        !            57:                exit(1);
        !            58:                }
        !            59:        memlast = buf+n;
        !            60:        memset(buf, '?', n);
        !            61:        return buf;
        !            62:        }
        !            63: 
        !            64: main()
        !            65: {
        !            66:        char buf[1024], c, *s, *s1, *z;
        !            67:        extern char *cds();
        !            68: 
        !            69:        while(s = fgets(buf,sizeof(buf),stdin)) {
        !            70:                while(s = nonbln(s)) {
        !            71:                        s1 = nextbln(s);
        !            72:                        c = *s1;
        !            73:                        *s1 = 0;
        !            74:                        z = cds(s,0);
        !            75:                        *memlast = '?';
        !            76:                        printf("%s --> %s (len %d)\n",
        !            77:                                        s, z, strlen(z));
        !            78:                        if (memlast[-1])
        !            79:                                printf("expected memlast[-1] = 0, but got %c\n",
        !            80:                                        memlast[-1]);
        !            81:                        if (z[0] != '-' && z[-1] != '-')
        !            82:                                printf("z[0] = %c, z[-1] = %c, and neither is -\n",
        !            83:                                        z[0],z[-1]);
        !            84:                        *s1 = c;
        !            85:                        s = s1;
        !            86:                        }
        !            87:                }
        !            88:        }

unix.superglobalmegacorp.com

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