Index: Makefile
==================================================================
--- Makefile
+++ Makefile
@@ -1,10 +1,10 @@
 CC = gcc
 PKG_CONFIG = pkg-config
-CFLAGS = -Wall -g3 $(shell $(PKG_CONFIG) --cflags fuse) $(TCL_CFLAGS)
+CFLAGS = -Wall -g3 $(shell $(PKG_CONFIG) --cflags fuse) $(shell $(PKG_CONFIG) --cflags sqlite3) $(TCL_CFLAGS)
 LDFLAGS = $(TCL_LDFLAGS)
-LIBS = $(shell $(PKG_CONFIG) --libs fuse) $(TCL_LIBS)
+LIBS = $(shell $(PKG_CONFIG) --libs fuse) $(shell $(PKG_CONFIG) --libs sqlite3) $(TCL_LIBS)
 PREFIX = /usr/local
 prefix = $(PREFIX)
 bindir = $(prefix)/bin
 
 ifneq ($(TCLKIT_SDK_DIR),)

Index: appfs.c
==================================================================
--- appfs.c
+++ appfs.c
@@ -224,11 +224,12 @@
 	.read		= appfs_fuse_read
 };
 
 int main(int argc, char **argv) {
 	const char *cachedir = APPFS_CACHEDIR;
-	int tcl_ret;
+	char dbfilename[1024];
+	int tcl_ret, snprintf_ret, sqlite_ret;
 
 	globalThread.interp = Tcl_CreateInterp();
 	if (globalThread.interp == NULL) {
 		fprintf(stderr, "Unable to create Tcl Interpreter.  Aborting.\n");
 
@@ -261,10 +262,24 @@
 	tcl_ret = appfs_Tcl_Eval(globalThread.interp, 1, "::appfs::init");
 	if (tcl_ret != TCL_OK) {
 		fprintf(stderr, "Unable to initialize Tcl AppFS script (::appfs::init).  Aborting.\n");
 		fprintf(stderr, "Tcl Error is: %s\n", Tcl_GetStringResult(globalThread.interp));
 
+		return(1);
+	}
+
+	snprintf_ret = snprintf(dbfilename, sizeof(dbfilename), "%s/%s", cachedir, "cache.db");
+	if (snprintf_ret >= sizeof(dbfilename)) {
+		fprintf(stderr, "Unable to set database filename.  Aborting.\n");
+
+		return(1);
+	}
+
+	sqlite_ret = sqlite3_open(dbfilename, &globalThread.db);
+	if (sqlite_ret != SQLITE_OK) {
+		fprintf(stderr, "Unable to open database: %s\n", dbfilename);
+
 		return(1);
 	}
 
 #ifdef APPFS_TEST_DRIVER
 	return(appfs_test_driver());