📄 crmgr.c
字号:
} 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 + -