diff options
author | folke <folke@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-08-15 19:26:22 +0000 |
---|---|---|
committer | folke <folke@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-08-15 19:26:22 +0000 |
commit | 5663ecf375687742403f710b586638d8445f3ca3 (patch) | |
tree | 582577b863bc12bef4c8e18b8574eac1fdb333ee /cfgparser.c | |
parent | df5f98af287d0f13f2fa9454928b176b9ad1e0cd (diff) | |
download | mpv-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.c | 24 |
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; |