changeset 8894:e6a83b140b39

better error handling for invalud suboptions
author arpi
date Sat, 11 Jan 2003 17:32:45 +0000
parents 268b3fbc35b7
children f51cf48503f3
files m_config.c
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/m_config.c	Sat Jan 11 17:01:23 2003 +0000
+++ b/m_config.c	Sat Jan 11 17:32:45 2003 +0000
@@ -215,7 +215,7 @@
 
   co = m_config_get_co(config,arg);
   if(!co){
-    mp_msg(MSGT_CFGPARSER, MSGL_ERR,"Unknown option: %s\n",arg);
+//    mp_msg(MSGT_CFGPARSER, MSGL_ERR,"Unknown option: %s\n",arg);
     return M_OPT_UNKNOW;
   }
 
@@ -241,6 +241,7 @@
     // Parse the child options
     r = m_option_parse(co->opt,arg,param,&lst,config->mode);
     // Set them now
+    if(r >= 0)
     for(i = 0 ; lst && lst[2*i] ; i++) {
       int l = strlen(co->name) + 1 + strlen(lst[2*i]) + 1;
       if(r >= 0) {
@@ -248,7 +249,13 @@
 	char n[l];
 	sprintf(n,"%s:%s",co->name,lst[2*i]);
 	sr = m_config_parse_option(config,n,lst[2*i+1],set);
-	if(sr < 0) r = sr;
+	if(sr < 0){
+	  if(sr == M_OPT_UNKNOW){
+	    mp_msg(MSGT_CFGPARSER, MSGL_ERR,"Error: option '%s' has no suboption '%s'\n",co->name,lst[2*i]);
+	    r = M_OPT_INVALID;
+	  } else
+	    r = sr;
+	}
       }
       free(lst[2*i]);
       free(lst[2*i+1]);