+ if(MAPDB_EXISTS(_curr_repo))
+ {
+ RepoData* repo_p;
+ for(repo_p = _curr_repo; repo_p; repo_p = repo_p->layers)
+ {
+ if(repo_p->is_sqlite)
+ {
+ if(repo_p->sqlite_db)
+ {
+ sqlite3_close(repo_p->sqlite_db);
+ repo_p->sqlite_db = NULL;
+ }
+ }
+ else
+ {
+ if (repo_p->gdbm_db) {
+ gdbm_close(repo_p->gdbm_db);
+ repo_p->gdbm_db = NULL;
+ }
+ }
+ }
+ }
+
+ /* Go through layer repos and empty ephemeral ones. */
+ for(curr = _repo_list; curr; curr = curr->next)
+ {
+ RepoData *repo;
+ for(repo = ((RepoData*)curr->data)->layers; repo; repo = repo->layers)
+ {
+ if(repo->layer_refresh_interval != 0)
+ {
+ printf("Clearing database: %s\n", repo->name);
+ if(repo->is_sqlite)
+ {
+ sqlite3 *db;
+ if(SQLITE_OK == sqlite3_open(repo->db_filename, &db))
+ sqlite3_exec(db, "delete from maps;", NULL, NULL, NULL);
+ sqlite3_exec(db, "vacuum;", NULL, NULL, NULL);
+ }
+ else
+ {
+ /* Just delete the file and re-create. */
+ g_remove(repo->db_filename);
+ close(g_creat(repo->db_filename, 0644));
+ }
+ }
+ }
+ }
+
+ g_mutex_unlock(_mapdb_mutex);
+
+ vprintf("%s(): return\n", __PRETTY_FUNCTION__);