mirror of
https://github.com/mpv-player/mpv.git
synced 2024-09-20 12:02:23 +02:00
New feature for option processing: CONF_TYPE_FUNC_FULL
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1537 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
df5f98af28
commit
5663ecf375
@ -2,6 +2,7 @@
|
||||
* config for cfgparser
|
||||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_FBDEV
|
||||
extern char *fb_dev_name;
|
||||
extern char *fb_mode_cfgfile;
|
||||
@ -50,12 +51,22 @@ extern char *mDisplayName;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AA
|
||||
extern int aaopt_osdcolor;
|
||||
extern int aaopt_extended;
|
||||
extern int aaopt_eight;
|
||||
extern char aaopt_driver;
|
||||
extern int vo_aa_parseoption(struct config * conf, char *opt, char * param);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* CONF_TYPE_FUNC_FULL :
|
||||
* allows own implemtations for passing the params
|
||||
*
|
||||
* the function receives parameter name and argument (if it does not start with - )
|
||||
* useful with a conf.name like 'aa*' to parse several parameters to a function
|
||||
* return 0 =ok, but we didn't need the param (could be the filename)
|
||||
* return 1 =ok, we accepted the param
|
||||
* negative values: see cfgparser.h, ERR_XXX
|
||||
*
|
||||
* by Folke
|
||||
*/
|
||||
|
||||
struct config conf[]={
|
||||
/* name, pointer, type, flags, min, max */
|
||||
{"include", cfg_include, CONF_TYPE_FUNC_PARAM, 0, 0, 0}, /* this must be the first!!! */
|
||||
@ -203,10 +214,7 @@ struct config conf[]={
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AA
|
||||
{"aaosdfont", &aaopt_osdcolor, CONF_TYPE_INT, CONF_RANGE, 0, 5 },
|
||||
{"aaextended", &aaopt_extended, CONF_TYPE_FLAG, 0, 0, 1 },
|
||||
{"aaeight", &aaopt_eight, CONF_TYPE_FLAG, 0, 0, 1 },
|
||||
{"aadriver", &aaopt_driver, CONF_TYPE_STRING, 0, 0, 0 },
|
||||
{"aa*", vo_aa_parseoption, CONF_TYPE_FUNC_FULL, 0, 0, 0 },
|
||||
#endif
|
||||
|
||||
|
||||
|
24
cfgparser.c
24
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;
|
||||
|
10
cfgparser.h
10
cfgparser.h
@ -12,6 +12,15 @@
|
||||
#define CONF_TYPE_FUNC 4
|
||||
#define CONF_TYPE_FUNC_PARAM 5
|
||||
#define CONF_TYPE_PRINT 6
|
||||
#define CONF_TYPE_FUNC_FULL 7
|
||||
|
||||
|
||||
#define ERR_NOT_AN_OPTION -1
|
||||
#define ERR_MISSING_PARAM -2
|
||||
#define ERR_OUT_OF_RANGE -3
|
||||
#define ERR_FUNC_ERR -4
|
||||
|
||||
|
||||
|
||||
#define CONF_MIN (1<<0)
|
||||
#define CONF_MAX (1<<1)
|
||||
@ -27,6 +36,7 @@ struct config {
|
||||
float min,max;
|
||||
};
|
||||
|
||||
typedef int (*cfg_func_arg_param_t)(struct config *, char *, char *);
|
||||
typedef int (*cfg_func_param_t)(struct config *, char *);
|
||||
typedef int (*cfg_func_t)(struct config *);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user