diff options
author | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-06-22 21:13:46 +0200 |
---|---|---|
committer | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-06-22 21:56:20 +0200 |
commit | 42589a768d7c83e06724299c9f5b317748ad0334 (patch) | |
tree | 5d71ae7f3331d65156cef1a903eed91276f85955 /plugins | |
parent | e4356b73870ac67242146fd66b3fda4d177e6d26 (diff) |
m3u: fixed loading pls files with relative pathes
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/m3u/m3u.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/plugins/m3u/m3u.c b/plugins/m3u/m3u.c index 9c13a9e8..9c1372a9 100644 --- a/plugins/m3u/m3u.c +++ b/plugins/m3u/m3u.c @@ -242,13 +242,18 @@ load_m3u (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, int *pab static DB_playItem_t * pls_insert_file (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, const char *uri, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data, const char *title, const char *length) { trace ("pls_insert_file uri: %s\n", uri); + trace ("pls_insert_file fname: %s\n", fname); DB_playItem_t *it = NULL; const char *slash = NULL; if (strrchr (uri, '/')) { it = deadbeef->plt_insert_file2 (0, plt, after, uri, pabort, cb, user_data); } - else if (slash = strrchr (fname, '/')) { + + if (!it) { + slash = strrchr (fname, '/'); + } + if (slash) { int l = strlen (uri); char fullpath[slash - fname + l + 2]; memcpy (fullpath, fname, slash - fname + 1); @@ -269,6 +274,7 @@ pls_insert_file (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, c static DB_playItem_t * load_pls (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, int *pabort, int (*cb)(DB_playItem_t *it, void *data), void *user_data) { + trace ("load_pls %s\n", fname); const char *slash = strrchr (fname, '/'); DB_FILE *fp = deadbeef->fopen (fname); if (!fp) { @@ -430,8 +436,7 @@ load_pls (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, int *pab trace ("length%d=%s\n", idx, length); } else { - trace ("invalid entry in pls file: %s\n", p); - break; + trace ("pls: skipping unrecognized entry in pls file: %s\n", p); } while (e < end && *e < 0x20) { e++; |