6 int bcfview(int argc, char *argv[]);
7 int bcf_main_index(int argc, char *argv[]);
9 #define BUF_SIZE 0x10000
11 int bcf_cat(int n, char * const *fn)
16 buf = malloc(BUF_SIZE);
17 out = bcf_open("-", "w");
18 for (i = 0; i < n; ++i) {
23 in = bcf_open(fn[i], "r");
25 if (i == 0) bcf_hdr_write(out, h);
28 fstat(knet_fileno(in->fp->x.fpr), &s);
30 while (knet_tell(in->fp->x.fpr) < end) {
31 int size = knet_tell(in->fp->x.fpr) + BUF_SIZE < end? BUF_SIZE : end - knet_tell(in->fp->x.fpr);
32 knet_read(in->fp->x.fpr, buf, size);
33 fwrite(buf, 1, size, out->fp->x.fpw);
36 abort(); // FIXME: not implemented
45 int main(int argc, char *argv[])
48 fprintf(stderr, "\n");
49 fprintf(stderr, "Usage: bcftools <command> <arguments>\n\n");
50 fprintf(stderr, "Command: view print, extract, convert and call SNPs from BCF\n");
51 fprintf(stderr, " index index BCF\n");
52 fprintf(stderr, " cat concatenate BCFs\n");
53 fprintf(stderr, "\n");
56 if (strcmp(argv[1], "view") == 0) return bcfview(argc-1, argv+1);
57 else if (strcmp(argv[1], "index") == 0) return bcf_main_index(argc-1, argv+1);
58 else if (strcmp(argv[1], "cat") == 0) return bcf_cat(argc-2, argv+2);
60 fprintf(stderr, "[main] Unrecognized command.\n");