static int get_percentage(const char *url) { void *db = metadb_get(); int remain, done; int rval; if(db == NULL) return 0; remain = count_items(db, "SELECT count(*) " "FROM item " "WHERE url LIKE ?1 " "AND contenttype = 1 " "AND indexstatus == 0", url); if(remain) { done = count_items(db, "SELECT count(*) " "FROM item " "WHERE url LIKE ?1 " "AND contenttype = 1 " "AND indexstatus > 1", url); rval = MIN(done * 100 / (done+remain), 100); } else { rval = 100; } metadb_close(db); return rval; }
static void * bmdb_thread(void *aux) { bmdb_t *b = aux; void *db = metadb_get(); bmdb_query_exec(db, b); metadb_close(db); bmdb_destroy(b); return NULL; }
static void file_open_file(prop_t *page, const char *url, fa_stat_t *fs) { char errbuf[200]; metadata_t *md; void *db = metadb_get(); md = metadb_metadata_get(db, url, fs->fs_mtime); metadb_close(db); if(md == NULL) md = fa_probe_metadata(url, errbuf, sizeof(errbuf), NULL); if(md == NULL) { nav_open_errorf(page, _("Unable to open file: %s"), errbuf); return; } if(md->md_redirect != NULL) url = md->md_redirect; prop_t *meta = prop_create_root("metadata"); metadata_to_proptree(md, meta, 0); switch(md->md_contenttype) { case CONTENT_ARCHIVE: case CONTENT_ALBUM: file_open_browse(page, url, fs->fs_mtime); break; case CONTENT_AUDIO: if(!file_open_audio(page, url)) { break; } playqueue_play(url, meta, 0); playqueue_open(page); meta = NULL; break; case CONTENT_VIDEO: case CONTENT_DVD: backend_open_video(page, url, 0); break; case CONTENT_IMAGE: file_open_image(page, meta); meta = NULL; break; case CONTENT_PLUGIN: plugin_open_file(page, url); break; default: nav_open_errorf(page, _("Can't handle content type %d"), md->md_contenttype); break; } prop_destroy(meta); metadata_destroy(md); }