summaryrefslogtreecommitdiffstats
path: root/cfgparser.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-02 02:02:52 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-02 02:02:52 +0000
commit9d6aa3b64d5c0a2d9e562a14c93d132504f51f74 (patch)
treef5d4152cf4f324f5c7f28fe8b465f66028fe91c4 /cfgparser.c
parent894366d9a64b5a2574b4c883db8d9fadce52dedd (diff)
downloadmpv-9d6aa3b64d5c0a2d9e562a14c93d132504f51f74.tar.bz2
mpv-9d6aa3b64d5c0a2d9e562a14c93d132504f51f74.tar.xz
fixed subconfig, exiting on error, supporting flags
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2622 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'cfgparser.c')
-rw-r--r--cfgparser.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/cfgparser.c b/cfgparser.c
index 56f5a91272..b446b4392f 100644
--- a/cfgparser.c
+++ b/cfgparser.c
@@ -62,9 +62,10 @@ static int read_option(struct config *conf, int conf_optnr, char *opt, char *par
int ret = -1;
char *endptr;
-// printf("read_option: conf=%p optnr=%d opt='%s' param='%s'\n",
-// conf, conf_optnr, opt, param);
-
+#ifdef DEBUG
+ printf("read_option: conf=%p optnr=%d opt='%s' param='%s'\n",
+ conf, conf_optnr, opt, param);
+#endif
for (i = 0; i < conf_optnr; i++) {
int namelength;
/* allow 'aa*' in config.name */
@@ -83,8 +84,10 @@ static int read_option(struct config *conf, int conf_optnr, char *opt, char *par
ret = ERR_NOT_AN_OPTION;
goto out;
}
-// printf("read_option: name='%s' p=%p type=%d\n",
-// conf[i].name, conf[i].p, conf[i].type);
+#ifdef DEBUG
+ printf("read_option: name='%s' p=%p type=%d\n",
+ conf[i].name, conf[i].p, conf[i].type);
+#endif
if (conf[i].flags & CONF_NOCFG && parser_mode == CONFIG_FILE) {
printf("this option can only be used on command line:\n");
ret = ERR_NOT_AN_OPTION;
@@ -260,10 +263,25 @@ static int read_option(struct config *conf, int conf_optnr, char *opt, char *par
token = strtok(param, (char *)&(":"));
while(token)
{
- int i;
+ int ret;
+ int err;
- if ((i = sscanf(token, "%[^=]=%s", subopt, subparam)) == 2)
- read_option(&conf[i].p, subconf_optnr, subopt, subparam);
+ ret = sscanf(token, "%[^=]=%s", subopt, subparam);
+ switch(ret)
+ {
+ case 1:
+ case 2:
+ if ((err = read_option((struct config *)subconf, subconf_optnr, subopt, subparam)) < 0)
+ {
+ printf("Subconfig parsing returned error: %d in token: %s\n",
+ err, token);
+ return(err);
+ }
+ break;
+ default:
+ printf("Invalid subconfig argument! ('%s')\n", token);
+ return(ERR_NOT_AN_OPTION);
+ }
// printf("token: '%s', i=%d, subopt='%s, subparam='%s'\n", token, i, subopt, subparam);
token = strtok(NULL, (char *)&(":"));
}
@@ -527,7 +545,6 @@ next:
printf("Error %d while parsing option: '%s'!\n",
tmp, opt);
goto err_out;
- /* break; */
default:
i += tmp;
break;