|
|
1.1 ! root 1: #include "stdio.h" ! 2: /* change the output of btsalvage or btcat -R to sortable */ ! 3: /* an 8 byte sortable sequence number is appended to each key ! 4: * that slvg2 can keep only the last record with a given key */ ! 5: ! 6: char *buf; ! 7: int buflen; ! 8: long reccnt; ! 9: extern char *malloc(), *realloc(); ! 10: ! 11: main() ! 12: { int n, i, j; ! 13: for(;;) { ! 14: if(read(0, &n, 2) == 0) ! 15: exit(0); ! 16: if(n > buflen) ! 17: space(n); ! 18: read(0, buf, n); ! 19: reccnt++; ! 20: out(buf, n, '\t'); ! 21: countout(); ! 22: read(0, &n, 2); ! 23: if(n > buflen) ! 24: space(n); ! 25: read(0, buf, n); ! 26: j = n; ! 27: for(i = 0; i < 4; i++) { ! 28: putchar('a' + (j & 0xf)); ! 29: j >>= 4; ! 30: } ! 31: out(buf, n, '\n'); ! 32: } ! 33: } ! 34: ! 35: space(n) ! 36: { ! 37: while(n > buflen) { ! 38: if(buflen == 0) ! 39: buf = malloc(buflen = 1024); ! 40: else ! 41: buf = realloc(buf, buflen += 1024); ! 42: if(buf == 0) { ! 43: fprintf(stderr, "buf[%d]failed\n", buflen); ! 44: exit(1); ! 45: } ! 46: ! 47: } ! 48: } ! 49: ! 50: out(s, n, c) ! 51: char *s; ! 52: { ! 53: while(n-- > 0) { ! 54: putchar('3' + ((*s >> 6) & 3)); ! 55: putchar((*s & 077) + ' '); ! 56: s++; ! 57: } ! 58: putchar(c); ! 59: } ! 60: ! 61: countout() ! 62: { int i, n; ! 63: n = reccnt; ! 64: for(i = 7; i >= 0; i--) ! 65: putchar('0' + ((n >> (4*i)) & 077)); ! 66: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.