#include "config.h"
#endif /* HAVE_CONFIG_H */
+#include <dirent.h>
#include <errno.h>
#include <event.h>
#include <stdbool.h>
#define CLD_SQLITE_SCHEMA_VERSION 1
-#ifndef CLD_SQLITE_TOPDIR
-#define CLD_SQLITE_TOPDIR NFS_STATEDIR "/nfsdcld"
-#endif
-
/* in milliseconds */
#define CLD_SQLITE_BUSY_TIMEOUT 10000
char *err = NULL;
sqlite3_stmt *stmt = NULL;
- sqlite_topdir = topdir ? topdir : CLD_SQLITE_TOPDIR;
+ sqlite_topdir = topdir;
ret = mkdir_if_not_exist(sqlite_topdir);
if (ret)
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;
+}