Пример #1
0
/* parse arguments of read command */
static int runread(int argc, char **argv){
  char *name = NULL;
  char *tstr = NULL;
  for(int i = 2; i < argc; i++){
    if(!name && argv[i][0] == '-'){
      usage();
    } else if(!name){
      name = argv[i];
    } else if(!tstr){
      tstr = argv[i];
    } else {
      usage();
    }
  }
  if(!name || !tstr) usage();
  int tnum = tcatoix(tstr);
  if(tnum < 1) usage();
  int rv = procread(name, tnum);
  return rv;
}
Пример #2
0
/* main routine */
int main(int argc, char **argv){
  g_progname = argv[0];
  g_dbgfd = INVALID_HANDLE_VALUE;
  const char *ebuf = getenv("TCDBGFD");
  if (ebuf) {
	  int debugfd = tcatoix(ebuf);
#ifdef __MINGW32__
	  g_dbgfd = (HANDLE) _get_osfhandle(debugfd);
#else
	  g_dbgfd = debugfd;
#endif
  }
  if(argc < 2) usage();
  int rv = 0;
  if(!strcmp(argv[1], "create")){
    rv = runcreate(argc, argv);
  } else if(!strcmp(argv[1], "inform")){
    rv = runinform(argc, argv);
  } else if(!strcmp(argv[1], "put")){
    rv = runput(argc, argv);
  } else if(!strcmp(argv[1], "out")){
    rv = runout(argc, argv);
  } else if(!strcmp(argv[1], "get")){
    rv = runget(argc, argv);
  } else if(!strcmp(argv[1], "list")){
    rv = runlist(argc, argv);
  } else if(!strcmp(argv[1], "search")){
    rv = runsearch(argc, argv);
  } else if(!strcmp(argv[1], "optimize")){
    rv = runoptimize(argc, argv);
  } else if(!strcmp(argv[1], "setindex")){
    rv = runsetindex(argc, argv);
  } else if(!strcmp(argv[1], "importtsv")){
    rv = runimporttsv(argc, argv);
  } else if(!strcmp(argv[1], "version") || !strcmp(argv[1], "--version")){
    rv = runversion(argc, argv);
  } else {
    usage();
  }
  return rv;
}
Пример #3
0
/* parse arguments of import command */
static int runimport(int argc, char **argv){
  char *upath = NULL;
  uint64_t lim = 0;
  for(int i = 2; i < argc; i++){
    if(!upath && argv[i][0] == '-'){
      if(!strcmp(argv[i], "-lim")){
        if(++i >= argc) usage();
        lim = tcatoix(argv[i]);
      } else {
        usage();
      }
    } else if(!upath){
      upath = argv[i];
    } else {
      usage();
    }
  }
  if(!upath) usage();
  int rv = procimport(upath, lim);
  return rv;
}
Пример #4
0
/* main routine */
int main(int argc, char **argv){
  g_progname = argv[0];
  const char *ebuf = getenv("TCRNDSEED");
  g_randseed = ebuf ? tcatoix(ebuf) : tctime() * 1000;
  srand(g_randseed);
  if(argc < 2) usage();
  int rv = 0;
  if(!strcmp(argv[1], "combo")){
    rv = runcombo(argc, argv);
  } else if(!strcmp(argv[1], "typical")){
    rv = runtypical(argc, argv);
  } else {
    usage();
  }
  if(rv != 0){
    printf("FAILED: TCRNDSEED=%u PID=%d", g_randseed, (int)getpid());
    for(int i = 0; i < argc; i++){
      printf(" %s", argv[i]);
    }
    printf("\n\n");
  }
  return rv;
}
Пример #5
0
/* parse arguments of list command */
static int runlist(int argc, char **argv){
  char *name = NULL;
  int sep = -1;
  int max = -1;
  bool pv = false;
  bool px = false;
  char *fmstr = NULL;
  for(int i = 2; i < argc; i++){
    if(!name && argv[i][0] == '-'){
      if(!strcmp(argv[i], "-sep")){
        if(++i >= argc) usage();
        sep = sepstrtochr(argv[i]);
      } else if(!strcmp(argv[i], "-m")){
        if(++i >= argc) usage();
        max = tcatoix(argv[i]);
      } else if(!strcmp(argv[i], "-pv")){
        pv = true;
      } else if(!strcmp(argv[i], "-px")){
        px = true;
      } else if(!strcmp(argv[i], "-fm")){
        if(++i >= argc) usage();
        fmstr = argv[i];
      } else {
        usage();
      }
    } else if(!name){
      name = argv[i];
    } else {
      usage();
    }
  }
  if(!name) usage();
  name = tcsprintf("%s#mode=r", name);
  int rv = proclist(name, sep, max, pv, px, fmstr);
  tcfree(name);
  return rv;
}
Пример #6
0
/* parse arguments of list command */
static int runlist(int argc, char **argv){
  char *path = NULL;
  int omode = 0;
  int max = -1;
  bool pv = false;
  bool px = false;
  char *fmstr = NULL;
  for(int i = 2; i < argc; i++){
    if(!path && argv[i][0] == '-'){
      if(!strcmp(argv[i], "-nl")){
        omode |= HDBONOLCK;
      } else if(!strcmp(argv[i], "-nb")){
        omode |= HDBOLCKNB;
      } else if(!strcmp(argv[i], "-m")){
        if(++i >= argc) usage();
        max = tcatoix(argv[i]);
      } else if(!strcmp(argv[i], "-pv")){
        pv = true;
      } else if(!strcmp(argv[i], "-px")){
        px = true;
      } else if(!strcmp(argv[i], "-fm")){
        if(++i >= argc) usage();
        fmstr = argv[i];
      } else {
        usage();
      }
    } else if(!path){
      path = argv[i];
    } else {
      usage();
    }
  }
  if(!path) usage();
  int rv = proclist(path, omode, max, pv, px, fmstr);
  return rv;
}
Пример #7
0
/* parse arguments of create command */
static int runcreate(int argc, char **argv){
  char *dbpath = NULL;
  char *sstr = NULL;
  bool fts = false;
  for(int i = 2; i < argc; i++){
    if(!dbpath && argv[i][0] == '-'){
      if(!strcmp(argv[i], "-fts")){
        fts = true;
      } else {
        usage();
      }
    } else if(!dbpath){
      dbpath = argv[i];
    } else if(!sstr){
      sstr = argv[i];
    } else {
      usage();
    }
  }
  if(!dbpath) usage();
  int scale = sstr ? tcatoix(sstr) : -1;
  int rv = proccreate(dbpath, scale, fts);
  return rv;
}
Пример #8
0
/* parse arguments of optimize command */
static int runoptimize(int argc, char **argv) {
    char *path = NULL;
    char *lmstr = NULL;
    char *nmstr = NULL;
    char *bstr = NULL;
    char *astr = NULL;
    char *fstr = NULL;
    TCCMP cmp = NULL;
    int opts = UINT8_MAX;
    int omode = 0;
    bool df = false;
    for (int i = 2; i < argc; i++) {
        if (!path && argv[i][0] == '-') {
            if (!strcmp(argv[i], "-cd")) {
                cmp = tccmpdecimal;
            } else if (!strcmp(argv[i], "-ci")) {
                cmp = tccmpint32;
            } else if (!strcmp(argv[i], "-cj")) {
                cmp = tccmpint64;
            } else if (!strcmp(argv[i], "-tl")) {
                if (opts == UINT8_MAX) opts = 0;
                opts |= BDBTLARGE;
            } else if (!strcmp(argv[i], "-td")) {
                if (opts == UINT8_MAX) opts = 0;
                opts |= BDBTDEFLATE;
            } else if (!strcmp(argv[i], "-tb")) {
                if (opts == UINT8_MAX) opts = 0;
                opts |= BDBTBZIP;
            } else if (!strcmp(argv[i], "-tt")) {
                if (opts == UINT8_MAX) opts = 0;
                opts |= BDBTTCBS;
            } else if (!strcmp(argv[i], "-tx")) {
                if (opts == UINT8_MAX) opts = 0;
                opts |= BDBTEXCODEC;
            } else if (!strcmp(argv[i], "-tz")) {
                if (opts == UINT8_MAX) opts = 0;
            } else if (!strcmp(argv[i], "-nl")) {
                omode |= BDBONOLCK;
            } else if (!strcmp(argv[i], "-nb")) {
                omode |= BDBOLCKNB;
            } else if (!strcmp(argv[i], "-df")) {
                df = true;
            } else {
                usage();
            }
        } else if (!path) {
            path = argv[i];
        } else if (!lmstr) {
            lmstr = argv[i];
        } else if (!nmstr) {
            nmstr = argv[i];
        } else if (!bstr) {
            bstr = argv[i];
        } else if (!astr) {
            astr = argv[i];
        } else if (!fstr) {
            fstr = argv[i];
        } else {
            usage();
        }
    }
    if (!path) usage();
    int lmemb = lmstr ? tcatoix(lmstr) : -1;
    int nmemb = nmstr ? tcatoix(nmstr) : -1;
    int bnum = bstr ? tcatoix(bstr) : -1;
    int apow = astr ? tcatoix(astr) : -1;
    int fpow = fstr ? tcatoix(fstr) : -1;
    int rv = procoptimize(path, lmemb, nmemb, bnum, apow, fpow, cmp, opts, omode, df);
    return rv;
}
Пример #9
0
/* parse arguments of search command */
static int runsearch(int argc, char **argv){
  char *path = NULL;
  TCLIST *conds = tcmpoollistnew(tcmpoolglobal());
  char *oname = NULL;
  char *otype = NULL;
  int omode = 0;
  int max = -1;
  int skip = -1;
  bool pv = false;
  bool px = false;
  bool kw = false;
  bool ph = false;
  int bt = 0;
  bool rm = false;
  char *mtype = NULL;
  for(int i = 2; i < argc; i++){
    if(!path && argv[i][0] == '-'){
      if(!strcmp(argv[i], "-nl")){
        omode |= TDBONOLCK;
      } else if(!strcmp(argv[i], "-nb")){
        omode |= TDBOLCKNB;
      } else if(!strcmp(argv[i], "-ord")){
        if(++i >= argc) usage();
        oname = argv[i];
        if(++i >= argc) usage();
        otype = argv[i];
      } else if(!strcmp(argv[i], "-m")){
        if(++i >= argc) usage();
        max = tcatoix(argv[i]);
      } else if(!strcmp(argv[i], "-sk")){
        if(++i >= argc) usage();
        skip = tcatoix(argv[i]);
      } else if(!strcmp(argv[i], "-kw")){
        kw = true;
      } else if(!strcmp(argv[i], "-pv")){
        pv = true;
      } else if(!strcmp(argv[i], "-px")){
        px = true;
      } else if(!strcmp(argv[i], "-ph")){
        ph = true;
      } else if(!strcmp(argv[i], "-bt")){
        if(++i >= argc) usage();
        bt = tcatoix(argv[i]);
      } else if(!strcmp(argv[i], "-rm")){
        rm = true;
      } else if(!strcmp(argv[i], "-ms")){
        if(++i >= argc) usage();
        mtype = argv[i];
      } else {
        usage();
      }
    } else if(!path){
      path = argv[i];
    } else {
      tclistpush2(conds, argv[i]);
    }
  }
  if(!path || tclistnum(conds) % 3 != 0) usage();
  int rv = procsearch(path, conds, oname, otype, omode, max, skip,
                      pv, px, kw, ph, bt, rm, mtype);
  return rv;
}