X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fnfsdcld%2Fsqlite.c;fp=utils%2Fnfsdcld%2Fsqlite.c;h=a198c34aa6537737a350da2081a0819007482336;hb=53f6dbee36fb72acb9a88413fc35c4e71200d3b8;hp=f70568e1b4726df61aba872269ccdfc7e4aba97e;hpb=3e859abefffafd8718b5f1f76da7b129fc18e281;p=nfs-utils.git diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c index f70568e..a198c34 100644 --- a/utils/nfsdcld/sqlite.c +++ b/utils/nfsdcld/sqlite.c @@ -251,3 +251,39 @@ out_err: sqlite3_finalize(stmt); return ret; } + +/* Remove a client record */ +int +sqlite_remove_client(const unsigned char *clname, const size_t namelen) +{ + int ret; + sqlite3_stmt *stmt = NULL; + + ret = sqlite3_prepare_v2(dbh, "DELETE FROM clients WHERE id==?", -1, + &stmt, NULL); + if (ret != SQLITE_OK) { + xlog(L_ERROR, "%s: statement prepare failed: %s", + __func__, sqlite3_errmsg(dbh)); + goto out_err; + } + + ret = sqlite3_bind_blob(stmt, 1, (const void *)clname, namelen, + SQLITE_STATIC); + if (ret != SQLITE_OK) { + xlog(L_ERROR, "%s: bind blob failed: %s", __func__, + sqlite3_errmsg(dbh)); + goto out_err; + } + + ret = sqlite3_step(stmt); + if (ret == SQLITE_DONE) + ret = SQLITE_OK; + else + xlog(L_ERROR, "%s: unexpected return code from delete: %d", + __func__, ret); + +out_err: + xlog(D_GENERAL, "%s: returning %d", __func__, ret); + sqlite3_finalize(stmt); + return ret; +}