Annotation of researchv10no/cmd/btree/slvg2.c, revision 1.1

1.1     ! root        1: /* takes the output fromt slvg | sort and puts it back into
        !             2:  * form suitable for btbuild -R
        !             3:  * it reduces the two byte codes, and it only keeps the
        !             4:  * last version of each record.
        !             5:  * the input format is
        !             6:  * key tab 8-bytes-of-sequence 4-byete-of-value-len value newline
        !             7:  */
        !             8: #include "stdio.h"
        !             9: #define BUF    20000
        !            10: char bufa[BUF], bufb[BUF];
        !            11: char *old = bufa;
        !            12: char *new = bufb;
        !            13: int len;
        !            14: 
        !            15: main()
        !            16: {      char *p, *q;
        !            17:        int c, i;
        !            18: loop:
        !            19:        for(p = new; (c = getchar()) != '\t' && c != EOF; *p++ = c)
        !            20:                if(p - new >= BUF) {
        !            21:                        fprintf(stderr, "recompile slvg2 with more BUF\n");
        !            22:                        exit(1);
        !            23:                }
        !            24:        if(c == EOF)
        !            25:                exit(0);
        !            26:        *p++ = 0;
        !            27:        for(i = 0; i < 8; i++)
        !            28:                getchar();
        !            29:        if((p - new != len || strcmp(old, new) != 0) && len > 0) {
        !            30:                out(old);
        !            31:                dorest();
        !            32:        }
        !            33:        len = p - new;
        !            34:        q = old;
        !            35:        old = new;
        !            36:        new = q;
        !            37:        ignore();
        !            38:        goto loop;
        !            39: }
        !            40: 
        !            41: out(s)
        !            42: char *s;
        !            43: {      short n;
        !            44:        char c;
        !            45:        n = (len - 1)/2;
        !            46:        fwrite((char *)&n, 1, 2, stdout);
        !            47:        for(; *s; s++) {
        !            48:                c = (*s - '3') << 6;
        !            49:                c |= *++s- ' ';
        !            50:                putchar(c);
        !            51:        }
        !            52: }
        !            53: 
        !            54: ignore()
        !            55: {      int c;
        !            56:        while((c = getchar()) != '\n' && c != EOF)
        !            57:                ;
        !            58:        if(c == EOF)
        !            59:                exit(0);
        !            60: }
        !            61: 
        !            62: dorest()
        !            63: {      unsigned short n;
        !            64:        int i;
        !            65:        /* 4 bytes of length */
        !            66:        for(i = n = 0; i < 4; i++)
        !            67:                n |= (getchar() - 'a') << (4*i);
        !            68:        fwrite((char *)&n, 1, 2, stdout);
        !            69:        while((i = getchar()) != '\n' && i != EOF) {
        !            70:                n = (i - '3') << 6;
        !            71:                n |= getchar() - ' ';
        !            72:                putchar(n);
        !            73:        }
        !            74: }
        !            75: static struct D { struct D *a; char *b;} VER = {&VER,"\n81/8/9:slvg2.c\n"};
        !            76: /*0010100001111110*/
        !            77: /*1110001101011101*/

unix.superglobalmegacorp.com

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