X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fnfsdcld%2Fsqlite.c;h=9e357741fee7deef3b83ed4bbed50389322622fe;hp=01bba1a13c276d80aef95a0af7ea43e3ade6cd6b;hb=09d9011c66e518ca7fd01d41607845b940f58c8f;hpb=1b0d2b29df2e089bbcabc37a4cd716a448d48a5e diff --git a/utils/nfsdcld/sqlite.c b/utils/nfsdcld/sqlite.c index 01bba1a..9e35774 100644 --- a/utils/nfsdcld/sqlite.c +++ b/utils/nfsdcld/sqlite.c @@ -38,6 +38,7 @@ #include "config.h" #endif /* HAVE_CONFIG_H */ +#include #include #include #include @@ -360,3 +361,30 @@ out_err: sqlite3_finalize(stmt); return ret; } + +/* + * remove any client records that were not reclaimed since grace_start. + */ +int +sqlite_remove_unreclaimed(time_t grace_start) +{ + int ret; + char *err = NULL; + + ret = snprintf(buf, sizeof(buf), "DELETE FROM clients WHERE time < %ld", + grace_start); + if (ret < 0) { + return ret; + } else if ((size_t)ret >= sizeof(buf)) { + ret = -EINVAL; + return ret; + } + + ret = sqlite3_exec(dbh, buf, NULL, NULL, &err); + if (ret != SQLITE_OK) + xlog(L_ERROR, "%s: delete failed: %s", __func__, err); + + xlog(D_GENERAL, "%s: returning %d", __func__, ret); + sqlite3_free(err); + return ret; +}