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

📄 dpmgr.c

📁 harvest是一个下载html网页得机器人
💻 C
📖 第 1 页 / 共 2 页
字号:
      if(!strcmp(argv[i], "-kx")){        kx = TRUE;      } else if(!strcmp(argv[i], "-ki")){        ki = TRUE;      } else if(!strcmp(argv[i], "-ox")){        ox = 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, 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){  DEPOT *depot;  if(!(depot = dpopen(name, DP_OWRITER | DP_OCREAT | DP_OTRUNC, bnum))){    pdperror(name);    return 1;  }  if(!dpclose(depot)){    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 align){  DEPOT *depot;  if(!(depot = dpopen(name, DP_OWRITER, -1))){    pdperror(name);    return 1;  }  if(align > 0 && !dpsetalign(depot, align)){    pdperror(name);    dpclose(depot);    return 1;  }  if(!dpput(depot, kbuf, ksiz, vbuf, vsiz, dmode)){    pdperror(name);    dpclose(depot);    return 1;  }  if(!dpclose(depot)){    pdperror(name);    return 1;  }  return 0;}/* perform out command */int doout(const char *name, const char *kbuf, int ksiz){  DEPOT *depot;  if(!(depot = dpopen(name, DP_OWRITER, -1))){    pdperror(name);    return 1;  }  if(!dpout(depot, kbuf, ksiz)){    pdperror(name);    dpclose(depot);    return 1;  }  if(!dpclose(depot)){    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 nb){  DEPOT *depot;  char *vbuf;  int vsiz;  if(!(depot = dpopen(name, DP_OREADER, -1))){    pdperror(name);    return 1;  }  if(!(vbuf = dpget(depot, kbuf, ksiz, start, max, &vsiz))){    pdperror(name);    dpclose(depot);    return 1;  }  if(ox){    printobjhex(vbuf, vsiz);  } else {    printobj(vbuf, vsiz);  }  free(vbuf);  if(!nb) putchar('\n');  if(!dpclose(depot)){    pdperror(name);    return 1;  }  return 0;}/* perform list command */int dolist(const char *name, int ox){  DEPOT *depot;  char *kbuf, *vbuf;  int ksiz, vsiz;  if(!(depot = dpopen(name, DP_OREADER, -1))){    pdperror(name);    return 1;  }  dpiterinit(depot);  while((kbuf = dpiternext(depot, &ksiz)) != NULL){    if(!(vbuf = dpget(depot, 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(!dpclose(depot)){    pdperror(name);    return 1;  }  return 0;}/* perform optimize command */int dooptimize(const char *name, int bnum, int align){  DEPOT *depot;  if(!(depot = dpopen(name, DP_OWRITER, -1))){    pdperror(name);    return 1;  }  if(align > 0 && !dpsetalign(depot, align)){    pdperror(name);    dpclose(depot);    return 1;  }  if(!dpoptimize(depot, bnum)){    pdperror(name);    dpclose(depot);    return 1;  }  if(!dpclose(depot)){    pdperror(name);    return 1;  }  return 0;}/* perform inform command */int doinform(const char *name){  DEPOT *depot;  char *tmp;  if(!(depot = dpopen(name, DP_OREADER, -1))){    pdperror(name);    return 1;  }  tmp = dpname(depot);  printf("name: %s\n", tmp ? tmp : "(null)");  free(tmp);  printf("file size: %d\n", dpfsiz(depot));  printf("all buckets: %d\n", dpbnum(depot));  printf("used buckets: %d\n", dpbusenum(depot));  printf("records: %d\n", dprnum(depot));  printf("inode number: %d\n", dpinode(depot));  if(!dpclose(depot)){    pdperror(name);    return 1;  }  return 0;}/* perform remove command */int doremove(const char *name){  if(!dpremove(name)){    pdperror(name);    return 1;  }  return 0;}/* END OF FILE */

⌨️ 快捷键说明

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