summaryrefslogtreecommitdiffstats
path: root/playtreeparser.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-11 21:01:48 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-11 21:01:48 +0000
commit60fe584e0815a8827d4f3cc4f9a17af3dfc54d96 (patch)
tree43836eb10fa400a58b7a34e289a15c8af8315e9d /playtreeparser.c
parent05f84f844ea028549d26573f149b4f092f762c49 (diff)
downloadmpv-60fe584e0815a8827d4f3cc4f9a17af3dfc54d96.tar.bz2
mpv-60fe584e0815a8827d4f3cc4f9a17af3dfc54d96.tar.xz
This patch adds support for some silly ini-style-playlist-file-format ...
It starts with [Reference] and entries are: Ref<n>=<url> patch by Fabian Franz <FabianFranz@gmx.de> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8898 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'playtreeparser.c')
-rw-r--r--playtreeparser.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/playtreeparser.c b/playtreeparser.c
index 64d30e3478..44524f5a3f 100644
--- a/playtreeparser.c
+++ b/playtreeparser.c
@@ -328,6 +328,50 @@ parse_pls(play_tree_parser_t* p) {
return entry;
}
+/*
+ Reference Ini-Format: Each entry is assumed a reference
+ */
+play_tree_t*
+parse_ref_ini(play_tree_parser_t* p) {
+ char *line,*v;
+ play_tree_t *list = NULL, *entry = NULL;
+
+ mp_msg(MSGT_PLAYTREE,MSGL_V,"Trying reference-ini playlist...\n");
+ line = play_tree_parser_get_line(p);
+ strstrip(line);
+ if(strcasecmp(line,"[Reference]"))
+ return NULL;
+ mp_msg(MSGT_PLAYTREE,MSGL_V,"Detected reference-ini playlist format\n");
+ play_tree_parser_stop_keeping(p);
+ line = play_tree_parser_get_line(p);
+ if(!line)
+ return NULL;
+ while(line) {
+ strstrip(line);
+ if(strncasecmp(line,"Ref",3) == 0) {
+ v = pls_entry_get_value(line+3);
+ if(!v)
+ mp_msg(MSGT_PLAYTREE,MSGL_ERR,"No value in entry %s\n",line);
+ else
+ {
+ mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding entry %s\n",v);
+ entry = play_tree_new();
+ play_tree_add_file(entry,v);
+ if(list)
+ play_tree_append_entry(list,entry);
+ else
+ list = entry;
+ }
+ }
+ line = play_tree_parser_get_line(p);
+ }
+
+ if(!list) return NULL;
+ entry = play_tree_new();
+ play_tree_set_child(entry,list);
+ return entry;
+}
+
play_tree_t*
parse_m3u(play_tree_parser_t* p) {
char* line;
@@ -531,6 +575,10 @@ play_tree_parser_get_play_tree(play_tree_parser_t* p) {
tree = parse_m3u(p);
if(tree) break;
play_tree_parser_reset(p);
+
+ tree = parse_ref_ini(p);
+ if(tree) break;
+ play_tree_parser_reset(p);
// Here come the others formats ( textplain must stay the last one )
tree = parse_textplain(p);