X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fconfiguration.h;h=b2d6b2108ed83d8378e4791ff402f6b3f40ffc30;hb=4ba8f356f3e17c19f7e1f632a5d090057459c2bb;hp=bbdda91e26116b7cc1c87b546c4aae1f4288bf71;hpb=d2adc9f3c197dfb3b148db04d24f838d7f0befcd;p=vlc diff --git a/include/configuration.h b/include/configuration.h index bbdda91e26..b2d6b2108e 100644 --- a/include/configuration.h +++ b/include/configuration.h @@ -3,7 +3,7 @@ * This file describes the programming interface for the configuration module. * It includes functions allowing to declare, get or set configuration options. ***************************************************************************** - * Copyright (C) 1999, 2000 VideoLAN + * Copyright (C) 1999, 2000 the VideoLAN team * $Id$ * * Authors: Gildas Bazin @@ -80,12 +80,13 @@ #define SUBCAT_VIDEO_SUBPIC 305 #define CAT_INPUT 4 - #define SUBCAT_INPUT_ACCESS 401 - #define SUBCAT_INPUT_DEMUX 402 - #define SUBCAT_INPUT_VCODEC 403 - #define SUBCAT_INPUT_ACODEC 404 - #define SUBCAT_INPUT_SCODEC 405 - #define SUBCAT_INPUT_ADVANCED 406 + #define SUBCAT_INPUT_GENERAL 401 + #define SUBCAT_INPUT_ACCESS 402 + #define SUBCAT_INPUT_ACCESS_FILTER 403 + #define SUBCAT_INPUT_DEMUX 404 + #define SUBCAT_INPUT_VCODEC 405 + #define SUBCAT_INPUT_ACODEC 406 + #define SUBCAT_INPUT_SCODEC 407 #define CAT_SOUT 5 #define SUBCAT_SOUT_GENERAL 501 @@ -145,6 +146,9 @@ struct module_config_t char **ppsz_action_text; /* Friendly names for actions */ int i_action; /* actions list size */ + /* Deprecated */ + char *psz_current; /* Good option name */ + vlc_bool_t b_strict; /* Transitionnal or strict */ /* Misc */ vlc_mutex_t *p_lock; /* Lock to use when modifying the config */ vlc_bool_t b_dirty; /* Dirty flag to indicate a config change */ @@ -154,6 +158,12 @@ struct module_config_t char *psz_value_orig; int i_value_orig; float f_value_orig; + + /* Option values loaded from config file */ + char *psz_value_saved; + int i_value_saved; + float f_value_saved; + vlc_bool_t b_autosave; /* Config will be auto-saved at exit time */ }; /***************************************************************************** @@ -170,6 +180,7 @@ VLC_EXPORT( void, __config_PutPsz, (vlc_object_t *, const char *, const char VLC_EXPORT( int, __config_LoadCmdLine, ( vlc_object_t *, int *, char *[], vlc_bool_t ) ); VLC_EXPORT( char *, config_GetHomeDir, ( void ) ); +VLC_EXPORT( char *, config_GetUserDir, ( void ) ); VLC_EXPORT( int, __config_LoadConfigFile, ( vlc_object_t *, const char * ) ); VLC_EXPORT( int, __config_SaveConfigFile, ( vlc_object_t *, const char * ) ); VLC_EXPORT( void, __config_ResetAll, ( vlc_object_t * ) ); @@ -198,6 +209,7 @@ VLC_EXPORT( void, config_UnsetCallbacks, ( module_config_t * ) ); /* internal only */ int config_CreateDir( vlc_object_t *, char * ); +int config_AutoSaveConfigFile( vlc_object_t * ); /***************************************************************************** * Macros used to build the configuration structure. @@ -331,7 +343,55 @@ int config_CreateDir( vlc_object_t *, char * ); if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ (i_config+11) * sizeof(module_config_t)); \ { static module_config_t tmp = { CONFIG_ITEM_BOOL, NULL, name, '\0', text, longtext, NULL, b_value }; p_config[ i_config ] = tmp; p_config[ i_config ].pf_callback = p_callback; p_config[i_config].b_advanced = advc; } - +/* For option renamed */ +#define add_deprecated( name, strict ) \ + i_config++; \ + if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ + (i_config+11) * sizeof(module_config_t)); \ + { static module_config_t tmp; \ + p_config[ i_config ] = tmp; \ + p_config[ i_config ].i_type = p_config[ i_config -1 ].i_type; \ + p_config[ i_config ].psz_name = name; \ + p_config[i_config].b_strict = strict; \ + p_config[ i_config ].psz_current = p_config[ i_config-1].psz_current?p_config[ i_config-1 ].psz_current:p_config[ i_config-1 ].psz_name; } +/* For option suppressed*/ +#define add_suppressed_bool( name ) \ + i_config++; \ + if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ + (i_config+11) * sizeof(module_config_t)); \ + { static module_config_t tmp; \ + p_config[ i_config ] = tmp; \ + p_config[ i_config ].i_type = CONFIG_ITEM_BOOL; \ + p_config[ i_config ].psz_name = name; \ + p_config[ i_config ].psz_current = "SUPPRESSED"; } + +#define add_suppressed_integer( name ) \ + i_config++; \ + if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ + (i_config+11) * sizeof(module_config_t)); \ + { static module_config_t tmp; \ + p_config[ i_config ] = tmp; \ + p_config[ i_config ].i_type = CONFIG_ITEM_INTEGER; \ + p_config[ i_config ].psz_name = name; \ + p_config[ i_config ].psz_current = "SUPPRESSED"; } +#define add_suppressed_float( name ) \ + i_config++; \ + if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ + (i_config+11) * sizeof(module_config_t)); \ + { static module_config_t tmp; \ + p_config[ i_config ] = tmp; \ + p_config[ i_config ].i_type = CONFIG_ITEM_FLOAT; \ + p_config[ i_config ].psz_name = name; \ + p_config[ i_config ].psz_current = "SUPPRESSED"; } +#define add_suppressed_string( name ) \ + i_config++; \ + if(!(i_config%10)) p_config = (module_config_t* )realloc(p_config, \ + (i_config+11) * sizeof(module_config_t)); \ + { static module_config_t tmp; \ + p_config[ i_config ] = tmp; \ + p_config[ i_config ].i_type = CONFIG_ITEM_STRING; \ + p_config[ i_config ].psz_name = name; \ + p_config[ i_config ].psz_current = "SUPPRESSED"; } /* Modifier macros for the config options (used for fine tuning) */ #define change_short( ch ) \ p_config[i_config].i_short = ch; @@ -368,3 +428,6 @@ int config_CreateDir( vlc_object_t *, char * ); p_config[i_config].ppsz_action_text[p_config[i_config].i_action] = \ action_text; \ p_config[i_config].i_action++; + +#define change_autosave() \ + p_config[i_config].b_autosave = VLC_TRUE;