Mercurial > mplayer.hg
view cfgparser.h @ 8203:3af4919d9c5f
When you called mplayer with the absolute path to the video and the VOBSUB
subtitle is in a rar archive, mplayer tried to find the files in the archive
with the absolute path. The patch fixes the problem by getting rid of the
full path just trying the filename.
patch by Uwe.Reder@3SOFT.de
author | arpi |
---|---|
date | Sat, 16 Nov 2002 03:04:33 +0000 |
parents | 487cfc28525d |
children | d054f589ee03 |
line wrap: on
line source
/* * command line and config file parser */ #ifdef NEW_CONFIG #ifdef MP_DEBUG #warning "NEW_CONFIG defined but still using the old cfgparser.h" #endif #include "m_config.h" #include "m_option.h" #else #ifndef __CONFIG_H #define __CONFIG_H #define CONF_TYPE_FLAG 0 #define CONF_TYPE_INT 1 #define CONF_TYPE_FLOAT 2 #define CONF_TYPE_STRING 3 #define CONF_TYPE_FUNC 4 #define CONF_TYPE_FUNC_PARAM 5 #define CONF_TYPE_PRINT 6 #define CONF_TYPE_FUNC_FULL 7 #define CONF_TYPE_SUBCONFIG 8 #define CONF_TYPE_STRING_LIST 9 #define CONF_TYPE_POSITION 10 #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) #define CONF_RANGE (CONF_MIN|CONF_MAX) #define CONF_NOCFG (1<<2) #define CONF_NOCMD (1<<3) #define CONF_GLOBAL (1<<4) #define CONF_NOSAVE (1<<5) #define CONF_OLD (1<<6) typedef struct config config_t; typedef struct m_config m_config_t; typedef struct config_save config_save_t; struct play_tree; typedef void (*cfg_default_func_t)(config_t *, char*); struct config { char *name; void *p; unsigned int type; unsigned int flags; float min,max; /* Use this field when your need to do something before a new value is assigned to your option */ cfg_default_func_t default_func; }; struct m_config { config_t** opt_list; config_save_t** config_stack; int cs_level; int parser_mode; /* COMMAND_LINE or CONFIG_FILE */ int flags; char* sub_conf; // When we save a subconfig struct play_tree* pt; // play tree we use for playlist option, etc struct play_tree* last_entry; // last added entry struct play_tree* last_parent; // if last_entry is NULL we must create child of this int recursion_depth; }; struct config_save { config_t* opt; union { int as_int; float as_float; void* as_pointer; off_t as_off_t; } param; char* opt_name; }; typedef int (*cfg_func_arg_param_t)(config_t *, char *, char *); typedef int (*cfg_func_param_t)(config_t *, char *); typedef int (*cfg_func_t)(config_t *); /* parse_config_file returns: * -1 on error (can't malloc, invalid option...) * 0 if can't open configfile * 1 on success */ int m_config_parse_config_file(m_config_t *config, char *conffile); /* parse_command_line returns: * -1 on error (invalid option...) * 1 otherwise */ int m_config_parse_command_line(m_config_t* config, int argc, char **argv); m_config_t* m_config_new(struct play_tree* pt); void m_config_free(m_config_t* config); void m_config_push(m_config_t* config); /* * Return 0 on error 1 on success */ int m_config_pop(m_config_t* config); /* * Return 0 on error 1 on success */ int m_config_register_options(m_config_t *config,config_t *args); /* * For all the following function when it's a subconfig option * you must give an option name like 'tv:channel' and not just * 'channel' */ /* * Return 1 on sucess 0 on failure */ int m_config_set_option(m_config_t *config,char *opt, char *param); /* * Get the config struct defining an option * Return NULL on error */ config_t* m_config_get_option(m_config_t *config, char* arg); /* * Get the p field of the struct defining an option * Return NULL on error */ void* m_config_get_option_ptr(m_config_t *config, char* arg); /* * Tell is an option is alredy set or not * Return -1 one error (requested option arg exist) * Otherwise 0 or 1 */ int m_config_is_option_set(m_config_t *config, char* arg); /* * Return 0 on error 1 on success */ int m_config_switch_flag(m_config_t *config, char* opt); /* * Return 0 on error 1 on success */ int m_config_set_flag(m_config_t *config, char* opt, int max); /* * Return the value of a flag (O or 1) and -1 on error */ int m_config_get_flag(m_config_t *config, char* opt); /* * Set the value of an int option * Return 0 on error 1 on success */ int m_config_set_int(m_config_t *config, char* arg,int val); /* * Get the value of an int option * Return the option value or -1 on error * If err_ret is not NULL it's set to 1 on error */ int m_config_get_int (m_config_t *config, char* arg,int* err_ret); /* * Set the value of a float option * Return 0 on error 1 on success */ int m_config_set_float(m_config_t *config, char* arg,float val); /* * Get the value of a float option * Return the option value or -1 on error * If err_ret is not NULL it's set to 1 on error */ float m_config_get_float (m_config_t *config, char* arg,int* err_ret); #endif /* __CONFIG_H */ #endif /* NEW_CONFIG */