unsigned int playlist_loadlist_mainload(struct playlist_side_info *psi,char *listname,unsigned int loadtype,char *filtermask) { struct listhandler_s *listhand; struct playlist_entry_info *laste; char loaddir[MAX_PATHNAMELEN]; display_clear_timed_message(); display_message(0,0,"Loading list (press ESC to stop) ..."); laste=psi->lastentry; if(loadtype&PLL_STDIN){ load_m3u(psi,stdin,mpxplay_playlist_startdir(),filtermask); }else{ listhand=select_listhandler_by_ext(listname); if(listhand){ pds_getpath_from_fullname(loaddir,listname); listhand->loadlist(psi,listname,loaddir,filtermask); } } if(psi->lastentry>=psi->firstentry) playlist_enable_side(psi); else playlist_disable_side_full(psi); clear_message(); if(psi->lastentry>laste) return 1; return 0; }
static DB_playItem_t * m3uplug_load (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data) { char resolved_fname[PATH_MAX]; char *res = realpath (fname, resolved_fname); if (res) { fname = resolved_fname; } const char *ext = strrchr (fname, '.'); if (ext) { ext++; } DB_playItem_t *ret = NULL; int tried_pls = 0; if (ext && !strcasecmp (ext, "pls")) { tried_pls = 1; ret = load_pls (plt, after, fname, pabort, cb, user_data); } if (!ret) { ret = load_m3u (plt, after, fname, pabort, cb, user_data); } if (!ret && !tried_pls) { ret = load_pls (plt, after, fname, pabort, cb, user_data); } return ret; }
static int open_load_m3u(struct playlist_side_info *psi,char *listname,char *loaddir,char *filtermask) { void *listfile; int retcode; if((listfile=mpxplay_diskdrive_textfile_open(NULL,listname,(O_RDONLY|O_TEXT)))==NULL) return MPXPLAY_ERROR_FILEHAND_CANTOPEN; if(psi->lastentry<=psi->firstsong) psi->savelist_textcodetype=mpxplay_diskdrive_textfile_config(listfile,MPXPLAY_DISKTEXTFILE_CFGFUNCNUM_GET_TEXTCODETYPE_SRC,NULL,NULL); retcode=load_m3u(psi,listfile,loaddir,filtermask); mpxplay_diskdrive_textfile_close(listfile); return retcode; }