|
|
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.