#include #include #include #include "util/util.h" #include "qidx.h" void qidx_die_err(qidx_err_t err) { char const * errstr = qidx_strerr(err); if(qidx_errno(err)) { die_errno("err: %s", errstr); } else { die("err: %s", errstr); } } void die_usage(char const * prog) { err("%s {create,search}", prog); err(" create [bamfile] [indexfile]"); die(" search [index] [bamfile] [read]"); } int main(int argc, char ** argv) { if(!argc) return 1; if(argc < 3) die_usage(argv[0]); char const * type = argv[1]; qidx_err_t err; char const * prog = argv[0]; if(strcmp(type, "create") == 0) { int option; uint32_t n_buckets = 0; uint32_t max_bucket_size = 1 << 18; while((option = getopt(argc, argv, ":b:s:")) != -1) { switch(option) { case 'b': if(1 != sscanf(optarg, "%u", &n_buckets)) { die("could not parse -b"); } break; case 's': if(1 != sscanf(optarg, "%u", &max_bucket_size)) { die("could not parse -s"); } break; case ':': die("option needs a value"); case '?': die("Unknown option %c", optopt); break; } } if(argc - optind != 3) die_usage(prog); char const * bamfile = argv[optind + 1]; char const * indexfile = argv[optind + 2]; if((err = qidx_create_index1(bamfile, indexfile, n_buckets, max_bucket_size))) { qidx_die_err(err); } } else if (strcmp(type, "search") == 0) { if(argc != 5) die_usage(prog); char const * indexfile = argv[2]; char const * bamfile = argv[3]; char const * qname = argv[4]; if((err = qidx_search_index(indexfile, bamfile, qname))) { qidx_die_err(err); } } else { die_usage(argv[0]); } }