static int be_file_open(prop_t *page, const char *url) { struct fa_stat fs; char errbuf[200]; if(fa_stat(url, &fs, errbuf, sizeof(errbuf))) return nav_open_error(page, errbuf); return fs.fs_type == CONTENT_DIR ? file_open_dir(page, url) : file_open_file(page, url, &fs); }
static int be_file_open(prop_t *page, const char *url, int sync) { struct fa_stat fs; char errbuf[200]; if(fa_stat(url, &fs, errbuf, sizeof(errbuf))) { nav_open_error(page, errbuf); } else if(fs.fs_type == CONTENT_DIR) { file_open_dir(page, url, fs.fs_mtime); } else { file_open_file(page, url, &fs); } return 0; }
static int file_open_file(prop_t *page, const char *url, struct fa_stat *fs) { char redir[URL_MAX]; char errbuf[200]; int c; prop_t *meta; meta = prop_create_root("metadata"); c = fa_probe(meta, url, redir, sizeof(redir), errbuf, sizeof(errbuf), fs, 1); switch(c) { case CONTENT_ARCHIVE: case CONTENT_ALBUM: prop_destroy(meta); return file_open_dir(page, redir); case CONTENT_AUDIO: if(!file_open_audio(page, url)) { prop_destroy(meta); return 0; } playqueue_play(url, meta, 0); return playqueue_open(page); case CONTENT_VIDEO: case CONTENT_DVD: prop_destroy(meta); return backend_open_video(page, url); case CONTENT_IMAGE: return file_open_image(page, meta); case CONTENT_PLUGIN: plugin_open_file(page, url); return 0; default: prop_destroy(meta); return nav_open_error(page, errbuf); } }