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