Mercurial > mplayer.hg
annotate parser-mpcmd.c @ 33218:f0c2a62e3e89
Position windows initially at coordinates given in skin file.
So far, the initial positions of the main and subwindow were not
the ones specified in the skin file, but fixed defaults.
author | ib |
---|---|
date | Sat, 23 Apr 2011 08:05:27 +0000 |
parents | 059153d06619 |
children | 131d0e04a50b |
rev | line source |
---|---|
30429
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
1 /* |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
2 * This file is part of MPlayer. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
3 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
7 * (at your option) any later version. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
8 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
12 * GNU General Public License for more details. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
13 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29850
diff
changeset
|
17 */ |
18265 | 18 |
19 /// \file | |
20 /// \ingroup ConfigParsers Playtree | |
21 | |
8164 | 22 #include "config.h" |
23 | |
24 #include <stdio.h> | |
25 #include <stdlib.h> | |
26 #include <string.h> | |
27 #include <errno.h> | |
28 | |
29 #ifdef MP_DEBUG | |
30 #include <assert.h> | |
31 #endif | |
32 | |
33 #include "mp_msg.h" | |
21312 | 34 #include "help_mp.h" |
8164 | 35 #include "m_option.h" |
36 #include "m_config.h" | |
37 #include "playtree.h" | |
26263 | 38 #include "parser-mpcmd.h" |
30675
059153d06619
Add header for macosx_finder_args() instead of forward declaring it.
diego
parents:
30429
diff
changeset
|
39 #include "osdep/macosx_finder_args.h" |
8164 | 40 |
41 static int recursion_depth = 0; | |
42 static int mode = 0; | |
43 | |
44 #define GLOBAL 0 | |
45 #define LOCAL 1 | |
46 #define DROP_LOCAL 2 | |
47 | |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
48 #define dvd_range(a) (a>0 && a<256) |
8164 | 49 #define UNSET_GLOBAL (mode = LOCAL) |
50 // Use this 1 if you want to have only global option (no per file option) | |
51 // #define UNSET_GLOBAL (mode = GLOBAL) | |
52 | |
53 | |
54 static int is_entry_option(char *opt, char *param, play_tree_t** ret) { | |
55 play_tree_t* entry = NULL; | |
56 | |
57 *ret = NULL; | |
58 | |
59 if(strcasecmp(opt,"playlist") == 0) { // We handle playlist here | |
60 if(!param) | |
61 return M_OPT_MISSING_PARAM; | |
12267 | 62 |
8164 | 63 entry = parse_playlist_file(param); |
64 if(!entry) | |
12267 | 65 return -1; |
66 else { | |
67 *ret=entry; | |
68 return 1; | |
69 } | |
8164 | 70 } |
71 return 0; | |
72 } | |
73 | |
10542
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
74 static inline void add_entry(play_tree_t **last_parentp, |
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
75 play_tree_t **last_entryp, play_tree_t *entry) { |
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
76 if(*last_entryp == NULL) |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
77 play_tree_set_child(*last_parentp,entry); |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
78 else |
10542
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
79 play_tree_append_entry(*last_entryp,entry); |
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
80 *last_entryp = entry; |
10513 | 81 } |
82 | |
18265 | 83 /// Setup the \ref Config from command line arguments and build a playtree. |
84 /** \ingroup ConfigParsers | |
85 */ | |
8164 | 86 play_tree_t* |
87 m_config_parse_mp_command_line(m_config_t *config, int argc, char **argv) | |
88 { | |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
89 int i,j,start_title=-1,end_title=-1; |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
90 char *opt,*splitpos=NULL; |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
91 char entbuf[15]; |
8164 | 92 int no_more_opts = 0; |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
93 int opt_exit = 0; // flag indicating whether mplayer should exit without playing anything |
8164 | 94 play_tree_t *last_parent, *last_entry = NULL, *root; |
95 | |
96 #ifdef MP_DEBUG | |
97 assert(config != NULL); | |
98 assert(argv != NULL); | |
99 assert(argc >= 1); | |
100 #endif | |
101 | |
102 config->mode = M_COMMAND_LINE; | |
103 mode = GLOBAL; | |
27397
d47744b95b78
Give a CONFIG_ prefix to preprocessor directives that lacked one and
diego
parents:
27394
diff
changeset
|
104 #ifdef CONFIG_MACOSX_FINDER |
13909
07dadc3066f3
add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents:
12816
diff
changeset
|
105 root=macosx_finder_args(config, argc, argv); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
106 if(root) |
13909
07dadc3066f3
add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents:
12816
diff
changeset
|
107 return root; |
07dadc3066f3
add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents:
12816
diff
changeset
|
108 #endif |
07dadc3066f3
add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents:
12816
diff
changeset
|
109 |
8164 | 110 last_parent = root = play_tree_new(); |
111 /* in order to work recursion detection properly in parse_config_file */ | |
112 ++recursion_depth; | |
113 | |
114 for (i = 1; i < argc; i++) { | |
115 //next: | |
116 opt = argv[i]; | |
117 /* check for -- (no more options id.) except --help! */ | |
15245
4fdfe0860cc5
Make "mplayer -- --a" play the file --a instead of bailing out with a useless
reimar
parents:
14541
diff
changeset
|
118 if ((*opt == '-') && (*(opt+1) == '-') && (*(opt+2) == 0)) |
8164 | 119 { |
120 no_more_opts = 1; | |
121 if (i+1 >= argc) | |
122 { | |
21312 | 123 mp_msg(MSGT_CFGPARSER, MSGL_ERR, MSGTR_NoFileGivenOnCommandLine); |
8164 | 124 goto err_out; |
125 } | |
126 continue; | |
127 } | |
128 if((opt[0] == '{') && (opt[1] == '\0')) | |
129 { | |
130 play_tree_t* entry = play_tree_new(); | |
131 UNSET_GLOBAL; | |
8175 | 132 if(last_parent->flags & PLAY_TREE_RND) |
133 entry->flags |= PLAY_TREE_RND; | |
8164 | 134 if(last_entry == NULL) { |
135 play_tree_set_child(last_parent,entry); | |
136 } else { | |
137 play_tree_append_entry(last_entry,entry); | |
138 last_entry = NULL; | |
139 } | |
140 last_parent = entry; | |
141 continue; | |
142 } | |
143 | |
144 if((opt[0] == '}') && (opt[1] == '\0')) | |
145 { | |
146 if( ! last_parent || ! last_parent->parent) { | |
147 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "too much }-\n"); | |
148 goto err_out; | |
149 } | |
150 last_entry = last_parent; | |
151 last_parent = last_entry->parent; | |
152 continue; | |
153 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
154 |
8164 | 155 if ((no_more_opts == 0) && (*opt == '-') && (*(opt+1) != 0)) /* option */ |
156 { | |
13932
f845791e2823
fix: when doing -loop 0 -shuffle, the arg after shuffle was skipped
reimar
parents:
13909
diff
changeset
|
157 int tmp = 0; |
8164 | 158 /* remove trailing '-' */ |
159 opt++; | |
160 | |
161 mp_msg(MSGT_CFGPARSER, MSGL_DBG3, "this_opt = option: %s\n", opt); | |
162 // We handle here some specific option | |
17472
526abfe30498
Make -list-options work in both MPlayer and MEncoder.
albeu
parents:
16345
diff
changeset
|
163 // Loop option when it apply to a group |
526abfe30498
Make -list-options work in both MPlayer and MEncoder.
albeu
parents:
16345
diff
changeset
|
164 if(strcasecmp(opt,"loop") == 0 && |
8164 | 165 (! last_entry || last_entry->child) ) { |
166 int l; | |
18097
df9633d451dc
avoid crash when running "mplayer -loop" (dereferencing uninitialize pointer).
reimar
parents:
17472
diff
changeset
|
167 char* end = NULL; |
8400 | 168 l = (i+1<argc) ? strtol(argv[i+1],&end,0) : 0; |
18097
df9633d451dc
avoid crash when running "mplayer -loop" (dereferencing uninitialize pointer).
reimar
parents:
17472
diff
changeset
|
169 if(!end || *end != '\0') { |
21312 | 170 mp_msg(MSGT_CFGPARSER, MSGL_ERR, MSGTR_TheLoopOptionMustBeAnInteger, argv[i+1]); |
8164 | 171 tmp = ERR_OUT_OF_RANGE; |
9106 | 172 } else { |
8164 | 173 play_tree_t* pt = last_entry ? last_entry : last_parent; |
174 l = l <= 0 ? -1 : l; | |
175 pt->loop = l; | |
176 tmp = 1; | |
177 } | |
8452 | 178 } else if(strcasecmp(opt,"shuffle") == 0) { |
8175 | 179 if(last_entry && last_entry->child) |
180 last_entry->flags |= PLAY_TREE_RND; | |
181 else | |
182 last_parent->flags |= PLAY_TREE_RND; | |
8452 | 183 } else if(strcasecmp(opt,"noshuffle") == 0) { |
8175 | 184 if(last_entry && last_entry->child) |
185 last_entry->flags &= ~PLAY_TREE_RND; | |
186 else | |
187 last_parent->flags &= ~PLAY_TREE_RND; | |
8164 | 188 } else { |
25227 | 189 const m_option_t* mp_opt = NULL; |
8164 | 190 play_tree_t* entry = NULL; |
191 | |
8458 | 192 tmp = is_entry_option(opt,(i+1<argc) ? argv[i + 1] : NULL,&entry); |
8164 | 193 if(tmp > 0) { // It's an entry |
194 if(entry) { | |
10542
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
195 add_entry(&last_parent,&last_entry,entry); |
8175 | 196 if((last_parent->flags & PLAY_TREE_RND) && entry->child) |
197 entry->flags |= PLAY_TREE_RND; | |
8164 | 198 UNSET_GLOBAL; |
199 } else if(mode == LOCAL) // Entry is empty we have to drop his params | |
200 mode = DROP_LOCAL; | |
201 } else if(tmp == 0) { // 'normal' options | |
202 mp_opt = m_config_get_option(config,opt); | |
203 if (mp_opt != NULL) { // Option exist | |
204 if(mode == GLOBAL || (mp_opt->flags & M_OPT_GLOBAL)) | |
8426 | 205 tmp = (i+1<argc) ? m_config_set_option(config, opt, argv[i + 1]) |
206 : m_config_set_option(config, opt, NULL); | |
8164 | 207 else { |
8458 | 208 tmp = m_config_check_option(config, opt, (i+1<argc) ? argv[i + 1] : NULL); |
8164 | 209 if(tmp >= 0 && mode != DROP_LOCAL) { |
210 play_tree_t* pt = last_entry ? last_entry : last_parent; | |
211 play_tree_set_param(pt,opt, argv[i + 1]); | |
212 } | |
213 } | |
214 } else { | |
10595
522afd56703c
100l to albeu for his english grammar, and 10l to me becouse I noticed that lately (my backward compatibilty macro uses M_OPT_UNKNOWN)
alex
parents:
10594
diff
changeset
|
215 tmp = M_OPT_UNKNOWN; |
21312 | 216 mp_msg(MSGT_CFGPARSER, MSGL_ERR, MSGTR_UnknownOptionOnCommandLine, opt); |
8164 | 217 } |
218 } | |
219 } | |
220 | |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
221 if (tmp <= M_OPT_EXIT) { |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
222 opt_exit = 1; |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
223 tmp = M_OPT_EXIT - tmp; |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
224 } else |
9792 | 225 if (tmp < 0) { |
21312 | 226 mp_msg(MSGT_CFGPARSER, MSGL_FATAL, MSGTR_ErrorParsingOptionOnCommandLine, opt); |
8164 | 227 goto err_out; |
9792 | 228 } |
8164 | 229 i += tmp; |
230 } | |
231 else /* filename */ | |
232 { | |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
233 int is_dvdnav = strstr(argv[i],"dvdnav://") != NULL; |
8164 | 234 play_tree_t* entry = play_tree_new(); |
235 mp_msg(MSGT_CFGPARSER, MSGL_DBG2,"Adding file %s\n",argv[i]); | |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
236 // if required expand DVD filename entries like dvd://1-3 into component titles |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
237 if ( strstr(argv[i],"dvd://") != NULL || is_dvdnav) |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
238 { |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
239 int offset = is_dvdnav ? 9 : 6; |
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
240 splitpos=strstr(argv[i]+offset,"-"); |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
241 if(splitpos != NULL) |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
242 { |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
243 start_title=strtol(argv[i]+offset,NULL,10); |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
244 if (start_title<0) { //entries like dvd://-2 start title implied 1 |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
245 end_title=abs(start_title); |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
246 start_title=1; |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
247 } else { |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
248 end_title=strtol(splitpos+1,NULL,10); |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
249 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
250 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
251 if (dvd_range(start_title) && dvd_range(end_title) && (start_title<end_title)) |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
252 { |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
253 for (j=start_title;j<=end_title;j++) |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
254 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
255 if (j!=start_title) |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
256 entry=play_tree_new(); |
29850
93947ce0e2cb
Support the range syntax (like dvd://2-5) also for dvdnav.
reimar
parents:
29263
diff
changeset
|
257 snprintf(entbuf,sizeof(entbuf),is_dvdnav ? "dvdnav://%d" : "dvd://%d",j); |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
258 play_tree_add_file(entry,entbuf); |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
259 add_entry(&last_parent,&last_entry,entry); |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
260 last_entry = entry; |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
261 } |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
262 } else { |
21312 | 263 mp_msg(MSGT_CFGPARSER, MSGL_ERR, MSGTR_InvalidPlayEntry, argv[i]); |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
264 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
265 |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
266 } else { // dvd:// or dvd://x entry |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
267 play_tree_add_file(entry,argv[i]); |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
268 } |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
269 } else { |
8164 | 270 play_tree_add_file(entry,argv[i]); |
12543
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
271 } |
2cbc9f1f728f
Support dvd://start_title-end_title as requested on wishlist
rtognimp
parents:
12267
diff
changeset
|
272 |
8164 | 273 // Lock stdin if it will be used as input |
274 if(strcasecmp(argv[i],"-") == 0) | |
12816 | 275 m_config_set_option(config,"noconsolecontrols",NULL); |
10542
928c02fa9949
fix the bug where only the last file of the command line is found
pl
parents:
10513
diff
changeset
|
276 add_entry(&last_parent,&last_entry,entry); |
8164 | 277 UNSET_GLOBAL; // We start entry specific options |
278 | |
279 } | |
280 } | |
281 | |
16345
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
282 if (opt_exit) |
feb16d0117c8
allow multiple help clauses on the command line, Patch by kiriuja " mplayer-patches AH en-directo POUM net "
gpoirier
parents:
15742
diff
changeset
|
283 goto err_out; |
8164 | 284 --recursion_depth; |
285 if(last_parent != root) | |
286 mp_msg(MSGT_CFGPARSER, MSGL_ERR,"Missing }- ?\n"); | |
287 return root; | |
288 | |
289 err_out: | |
290 --recursion_depth; | |
291 play_tree_free(root,1); | |
292 return NULL; | |
293 } |