summaryrefslogtreecommitdiffstats
path: root/cfgparser.c
diff options
context:
space:
mode:
authorfolke <folke@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-15 19:26:22 +0000
committerfolke <folke@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-15 19:26:22 +0000
commit5663ecf375687742403f710b586638d8445f3ca3 (patch)
tree582577b863bc12bef4c8e18b8574eac1fdb333ee /cfgparser.c
parentdf5f98af287d0f13f2fa9454928b176b9ad1e0cd (diff)
downloadmpv-5663ecf375687742403f710b586638d8445f3ca3.tar.bz2
mpv-5663ecf375687742403f710b586638d8445f3ca3.tar.xz
New feature for option processing: CONF_TYPE_FUNC_FULL
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1537 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'cfgparser.c')
-rw-r--r--cfgparser.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/cfgparser.c b/cfgparser.c
index 5cb1315198..97f54bdbd3 100644
--- a/cfgparser.c
+++ b/cfgparser.c
@@ -14,10 +14,6 @@
#include <string.h>
#include <errno.h>
-#define ERR_NOT_AN_OPTION -1
-#define ERR_MISSING_PARAM -2
-#define ERR_OUT_OF_RANGE -3
-#define ERR_FUNC_ERR -4
#define COMMAND_LINE 0
#define CONFIG_FILE 1
@@ -65,6 +61,14 @@ static int read_option(char *opt, char *param)
char *endptr;
for (i = 0; i < nr_options; i++) {
+ int namelength;
+ /* allow 'aa*' in config.name */
+ namelength=strlen(config[i].name);
+ if ( (config[i].name[namelength-1]=='*') &&
+ !memcmp(opt, config[i].name, namelength-1))
+ break;
+
+
if (!strcasecmp(opt, config[i].name))
break;
}
@@ -93,6 +97,7 @@ static int read_option(char *opt, char *param)
!strcasecmp(param, "si") ||
!strcasecmp(param, "igen") ||
!strcasecmp(param, "y") ||
+ !strcasecmp(param, "j") ||
!strcasecmp(param, "i") ||
!strcmp(param, "1"))
*((int *) config[i].p) = config[i].max;
@@ -202,6 +207,17 @@ static int read_option(char *opt, char *param)
}
ret = 1;
break;
+ case CONF_TYPE_FUNC_FULL:
+ if (param!=NULL && param[0]=='-'){
+ ret=((cfg_func_arg_param_t) config[i].p)(config + i, opt, NULL);
+ if (ret>=0) ret=0;
+ /* if we return >=0: param is processed again (if there is any) */
+ }else{
+ ret=((cfg_func_arg_param_t) config[i].p)(config + i, opt, param);
+ /* if we return 0: need no param, precess it again */
+ /* if we return 1: accepted param */
+ }
+ break;
case CONF_TYPE_FUNC:
if ((((cfg_func_t) config[i].p)(config + i)) < 0) {
ret = ERR_FUNC_ERR;