#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
+#include <sys/stat.h>
#include "bgzf.h"
#include "tabix.h"
-#define PACKAGE_VERSION "0.1.2 (r543)"
+#define PACKAGE_VERSION "0.1.5 (r560)"
static int fetch_func(int l, const char *s, void *data)
{
int main(int argc, char *argv[])
{
- int c, skip = -1, meta = -1;
+ int c, skip = -1, meta = -1, list_chrms = 0, force = 0;
ti_conf_t conf = ti_conf_gff;
- while ((c = getopt(argc, argv, "p:s:b:e:0S:c:")) >= 0) {
+ while ((c = getopt(argc, argv, "p:s:b:e:0S:c:lf")) >= 0) {
switch (c) {
case '0': conf.preset |= TI_FLAG_UCSC; break;
case 'S': skip = atoi(optarg); break;
case 's': conf.sc = atoi(optarg); break;
case 'b': conf.bc = atoi(optarg); break;
case 'e': conf.ec = atoi(optarg); break;
+ case 'l': list_chrms = 1; break;
+ case 'f': force = 1; break;
}
}
if (skip >= 0) conf.line_skip = skip;
fprintf(stderr, " -S INT skip first INT lines [0]\n");
fprintf(stderr, " -c CHAR symbol for comment/meta lines [#]\n");
fprintf(stderr, " -0 zero-based coordinate\n");
+ fprintf(stderr, " -l list chromosome names\n");
+ fprintf(stderr, " -f force to overwrite the index\n");
fprintf(stderr, "\n");
return 1;
}
- if (optind + 1 == argc)
+ if (list_chrms)
+ return ti_list_chromosomes(argv[optind]);
+ if (optind + 1 == argc) {
+ if (force == 0) {
+ struct stat buf;
+ char *fnidx = calloc(strlen(argv[optind]) + 5, 1);
+ strcat(strcpy(fnidx, argv[optind]), ".tbi");
+ if (stat(fnidx, &buf) == 0) {
+ fprintf(stderr, "[tabix] the index file exists. Please use '-f' to overwrite.\n");
+ free(fnidx);
+ return 1;
+ }
+ free(fnidx);
+ }
return ti_index_build(argv[optind], &conf);
+ }
{ // retrieve
BGZF *fp;
fp = bgzf_open(argv[optind], "r");