|
|
1.1 root 1: #include "stdio.h"
2: #include "cbt.h"
3: extern char *malloc(), *realloc();
4: extern mbuf bkey();
5: extern bfile *bopen();
6: int rflag;
7: int rsize = 64;
8: mbuf key, rec;
9: char tabchar = '\t';
10: main(argc, argv) char **argv;
11: {
12: rec.mdata = malloc(rsize);
13: key.mdata = malloc(NDSZ);
14: for(argc--, argv++; argc > 0; argc--, argv++) {
15: switch(*argv[0]) {
16: case '-':
17: if(argv[0][1] == 'R')
18: rflag = 1;
19: else fprintf(stderr, "unknown option %s\n", argv[0]);
20: break;
21: default:
22: copy(argv[0]);
23: break;
24: }
25: }
26: exit(0);
27: }
28: copy(s) char *s;
29: { bfile *bt;
30: int n;
31: bt = bopen(s, 0);
32: if(bt == NULL) {
33: perror(s);
34: exit(1);
35: }
36: if(bfirst(bt) == EOF) {
37: fprintf(stderr, "%s empty\n", s);
38: return;
39: }
40: while((n = breclen(bt)) != EOF) {
41: if(n > rsize) {
42: rsize = n;
43: rec.mdata = realloc(rec.mdata, rsize);
44: }
45: (void) bread(bt, &key, &rec);
46: if(!rflag) {
47: out(key);
48: putchar(tabchar);
49: out(rec);
50: putchar('\n');
51: }
52: else {
53: fwrite((char *)&key.mlen, 1, sizeof(short), stdout);
54: fwrite(key.mdata, key.mlen, 1, stdout);
55: fwrite((char *)&rec.mlen, 1, sizeof(short), stdout);
56: fwrite(rec.mdata, rec.mlen, 1, stdout);
57: }
58:
59: }
60: bclose(bt);
61: }
62: out(a) mbuf a;
63: { int i;
64: for(i = 0; i < a.mlen; i++) putchar(*(a.mdata + i));
65: }
66: static struct D { struct D *a; char *b;} VER = {&VER,"\n81/4/8:btcat.c\n"};
67: /*1110000011011001*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.