⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crmgr.c

📁 harvest是一个下载html网页得机器人
💻 C
📖 第 1 页 / 共 2 页
字号:
      } else if(!strcmp(argv[i], "-lob")){        lob = TRUE;      } else if(!strcmp(argv[i], "-n")){        nb = TRUE;      } else if(!strcmp(argv[i], "-start")){        if(++i >= argc) usage();        start = atoi(argv[i]);      } else if(!strcmp(argv[i], "-max")){        if(++i >= argc) usage();        max = atoi(argv[i]);      } else {        usage();      }    } else if(!name){      name = argv[i];    } else if(!key){      key = argv[i];    } else {      usage();    }  }  if(!name || !key || start < 0) usage();  if(kx){    kbuf = hextoobj(key, &ksiz);  } else if(ki){    kbuf = dectoiobj(key, &ksiz);  } else {    kbuf = mystrdup(key);    ksiz = -1;  }  if(kbuf){    rv = doget(name, kbuf, ksiz, start, max, ox, lob, nb);  } else {    fprintf(stderr, "%s: out of memory\n", progname);    rv = 1;  }  free(kbuf);  return rv;}/* parse arguments of list command */int runlist(int argc, char **argv){  char *name;  int i, ox, rv;  name = NULL;  ox = FALSE;  for(i = 2; i < argc; i++){    if(!name && argv[i][0] == '-'){      if(!strcmp(argv[i], "-ox")){        ox = TRUE;      } else {        usage();      }    } else if(!name){      name = argv[i];    } else {      usage();    }  }  if(!name) usage();  rv = dolist(name, ox);  return rv;}/* parse arguments of optimize command */int runoptimize(int argc, char **argv){  char *name;  int i, bnum, align, rv;  name = NULL;  bnum = -1;  align = ALIGNSIZ;  for(i = 2; i < argc; i++){    if(!name && argv[i][0] == '-'){      if(!strcmp(argv[i], "-bnum")){        if(++i >= argc) usage();        bnum = atoi(argv[i]);      } else if(!strcmp(argv[i], "-na")){        align = 0;      } else {        usage();      }    } else if(!name){      name = argv[i];    } else {      usage();    }  }  if(!name) usage();  rv = dooptimize(name, bnum, align);  return rv;}/* parse arguments of inform command */int runinform(int argc, char **argv){  char *name;  int i, rv;  name = NULL;  for(i = 2; i < argc; i++){    if(!name && argv[i][0] == '-'){      usage();    } else if(!name){      name = argv[i];    } else {      usage();    }  }  if(!name) usage();  rv = doinform(name);  return rv;}/* parse arguments of remove command */int runremove(int argc, char **argv){  char *name;  int i, rv;  name = NULL;  for(i = 2; i < argc; i++){    if(!name && argv[i][0] == '-'){      usage();    } else if(!name){      name = argv[i];    } else {      usage();    }  }  if(!name) usage();  rv = doremove(name);  return rv;}/* print an error message */void pdperror(const char *name){  fprintf(stderr, "%s: %s: %s\n", progname, name, dperrmsg(dpecode));}/* print an object */void printobj(const char *obj, int size){  int i;  for(i = 0; i < size; i++){    putchar(obj[i]);  }}/* print an object as a hexadecimal string */void printobjhex(const char *obj, int size){  int i;  for(i = 0; i < size; i++){    printf("%s%02X", i > 0 ? " " : "", ((const unsigned char *)obj)[i]);  }}/* perform create command */int docreate(const char *name, int bnum, int dnum){  CURIA *curia;  if(!(curia = cropen(name, CR_OWRITER | CR_OCREAT | CR_OTRUNC, bnum, dnum))){    pdperror(name);    return 1;  }  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform put command */int doput(const char *name, const char *kbuf, int ksiz,          const char *vbuf, int vsiz, int dmode, int lob, int align){  CURIA *curia;  if(!(curia = cropen(name, CR_OWRITER, -1, -1))){    pdperror(name);    return 1;  }  if(align > 0 && !crsetalign(curia, ALIGNSIZ)){    pdperror(name);    crclose(curia);    return 1;  }  if(lob){    if(!crputlob(curia, kbuf, ksiz, vbuf, vsiz, dmode)){      pdperror(name);      crclose(curia);      return 1;    }  } else {    if(!crput(curia, kbuf, ksiz, vbuf, vsiz, dmode)){      pdperror(name);      crclose(curia);      return 1;    }  }  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform out command */int doout(const char *name, const char *kbuf, int ksiz, int lob){  CURIA *curia;  if(!(curia = cropen(name, CR_OWRITER, -1, -1))){    pdperror(name);    return 1;  }  if(lob){    if(!croutlob(curia, kbuf, ksiz)){      pdperror(name);      crclose(curia);      return 1;    }  } else {    if(!crout(curia, kbuf, ksiz)){      pdperror(name);      crclose(curia);      return 1;    }  }  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform get command */int doget(const char *name, const char *kbuf, int ksiz, int start, int max,          int ox, int lob, int nb){  CURIA *curia;  char *vbuf;  int vsiz;  if(!(curia = cropen(name, CR_OREADER, -1, -1))){    pdperror(name);    return 1;  }  if(lob){    if(!(vbuf = crgetlob(curia, kbuf, ksiz, start, max, &vsiz))){      pdperror(name);      crclose(curia);      return 1;    }  } else {    if(!(vbuf = crget(curia, kbuf, ksiz, start, max, &vsiz))){      pdperror(name);      crclose(curia);      return 1;    }  }  if(ox){    printobjhex(vbuf, vsiz);  } else {    printobj(vbuf, vsiz);  }  free(vbuf);  if(!nb) putchar('\n');  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform list command */int dolist(const char *name, int ox){  CURIA *curia;  char *kbuf, *vbuf;  int ksiz, vsiz;  if(!(curia = cropen(name, CR_OREADER, -1, -1))){    pdperror(name);    return 1;  }  criterinit(curia);  while((kbuf = criternext(curia, &ksiz)) != NULL){    if(!(vbuf = crget(curia, kbuf, ksiz, 0, -1, &vsiz))){      pdperror(name);      free(kbuf);      break;    }    if(ox){      printobjhex(kbuf, ksiz);      putchar('\t');      printobjhex(vbuf, vsiz);    } else {      printobj(kbuf, ksiz);      putchar('\t');      printobj(vbuf, vsiz);    }    putchar('\n');    free(vbuf);    free(kbuf);  }  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform optimize command */int dooptimize(const char *name, int bnum, int align){  CURIA *curia;  if(!(curia = cropen(name, CR_OWRITER, -1, -1))){    pdperror(name);    return 1;  }  if(align > 0 && !crsetalign(curia, ALIGNSIZ)){    pdperror(name);    crclose(curia);    return 1;  }  if(!croptimize(curia, bnum)){    pdperror(name);    crclose(curia);    return 1;  }  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform inform command */int doinform(const char *name){  CURIA *curia;  if(!(curia = cropen(name, CR_OREADER, -1, -1))){    pdperror(name);    return 1;  }  printf("name: %s\n", crname(curia));  printf("file size: %d\n", crfsiz(curia));  printf("all buckets: %d\n", crbnum(curia));  printf("used buckets: %d\n", crbusenum(curia));  printf("records: %d\n", crrnum(curia));  printf("inode number: %d\n", crinode(curia));  printf("LOB records: %d\n", crrnumlob(curia));  if(!crclose(curia)){    pdperror(name);    return 1;  }  return 0;}/* perform remove command */int doremove(const char *name){  if(!crremove(name)){    pdperror(name);    return 1;  }  return 0;}/* END OF FILE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -