static int test_db_del(T *db) { int r = 0, i, ks, vs; char kdata[256], *vdata; TEST_START() for (i = 0; i < l_kvcnt; i++) { sprintf(kdata, "%s-%d", kpattern, i); ks = strlen(kdata); if (dbver == 1) { #if 0 r = db_del(db, kdata, ks); #endif } else { r = HIDB2(db_del)(db, kdata, ks); } if (r != 0) return r; } TEST_FIN() return 0; }
void caltrap_del(int nargs, char **args, int nphysargs) { int id; if (nargs != 1) fatalerr_delargno(); assert(nargs <= nphysargs); id = atoi(args[0]); db_del(id); }
int handle(const int fd, db_t *db, sbuf_t *in, sbuf_t *out) { ssize_t err; ssize_t len; char *key; uint32_t klen; uint32_t vlen; int argc; int arglen; char argv[ARGC_MAX][ARGV_MAX]; if ((err = sbuf_recv(fd, in, &len)) <= 0 && len == 0) { if (err == -1) { fprintf(stdout, "db-server: socket %d recv %s\n", fd, strerror(errno)); } return HANDLE_CLOSE; } arglen = argparse(in->buf, in->len, &argc, argv, ARGC_MAX); if (argc < 1 || arglen == -1) { fprintf(stderr, "db-server: socket %d malformed request\n", fd); return HANDLE_CLOSE; } if (strcmp(argv[0], "set") == 0 && argc >= 5) { key = argv[1]; klen = strlen(key); vlen = atoi(argv[4]); if (vlen + arglen > in->max) { fprintf(stderr, "db-server: socket %d too large value\n", fd); return HANDLE_CLOSE; } if (vlen + arglen > in->len) { return HANDLE_NEEDMOREIN; } if (db_put(db, key, klen, in->buf + arglen, vlen) == DB_OK) { out->len = sprintf(out->buf, "STORED\r\n"); } else { out->len = sprintf(out->buf, "ERROR\r\n"); } } else if (strcmp(argv[0], "get") == 0 && argc >= 2) { key = argv[1]; klen = strlen(key); if ((vlen = db_get(db, key, klen, valbuf, VALBUF_LEN)) != 0) { if (vlen > VALBUF_LEN) return HANDLE_CLOSE; out->len = snprintf(out->buf, out->max, "VALUE %.*s %d %d\r\n%.*s\r\nEND\r\n", klen, key, 0, vlen, vlen, valbuf); } else { out->len = sprintf(out->buf, "END\r\n"); } } else if (strcmp(argv[0], "delete") == 0 && argc >= 2) { key = argv[1]; klen = strlen(key); if ((db_del(db, key, klen)) != 0) { out->len = snprintf(out->buf, out->max, "DELETED\r\n"); } else { out->len = snprintf(out->buf, out->max, "NOT_FOUND\r\n"); } } else { return HANDLE_CLOSE; } if ((err = sbuf_send(fd, out, &len)) <= 0 && len == 0) { if (err == -1) { fprintf(stdout, "db-server: socket %d send %s\n", fd, strerror(errno)); } return HANDLE_CLOSE; } if (out->off < out->len) { return HANDLE_NEEDMOREOUT; } return HANDLE_FINISH; }
int main(int argc, char** argv) { char* args; /* no option, print usage */ if (argc < 2) { usage(); return 0; } config_load(); /* connect to the db or error */ if (db_connect()) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 0; } /* compile the arguments */ args = get_args(argc,argv); /* if listing notes */ if (strcmp(argv[1],"list") == 0) { db_list(args); }else{ /* if null argument print usage */ if (args == NULL || argc <3) { usage(); /* if creating a new note */ }else if (strcmp(argv[1],"new") == 0 || strcmp(argv[1],"create") == 0) { db_new(args); /* if opening/editing an existing note */ }else if (strcmp(argv[1],"open") == 0 || strcmp(argv[1],"edit") == 0) { db_edit(args); /* append to a note if data is on stdin */ }else if (strcmp(argv[1],"append") == 0) { if (isatty(STDIN_FILENO)) { db_edit(args); }else{ db_append(args); } /* encrypt a new or existing note */ }else if (strcmp(argv[1],"encrypt") == 0) { db_encrypt(args); /* decrypt an existing note */ }else if (strcmp(argv[1],"decrypt") == 0) { db_decrypt(args); /* display an existing note */ }else if (strcmp(argv[1],"show") == 0) { db_show(args); /* if deleting note/s */ }else if (strcmp(argv[1],"del") == 0) { db_del(args); /* unknown option, print usage */ }else{ usage(); } } /* free args if we can */ if (args != NULL) free(args); /* close the database */ sqlite3_close(db); /* save config */ config_save(); return 0; }
Dict::~Dict() { db_del((Sdict_build*)_wordDict); _wordDict = NULL; return; }