From 48a3ced7ed28a144e082fff5941fe82362336bef Mon Sep 17 00:00:00 2001 From: Pierre Ynard Date: Wed, 16 Sep 2009 14:31:25 +0200 Subject: [PATCH] Fix parsing of float-typed variables Apparently, since 'setlocale( LC_NUMERIC, "C" );' was removed from libvlc initialization 3 years ago, the syntax to set configuration variables of floating point types has changed and become dependent on the current locale ("0.5" vs. "0,5" etc). Some places have been converted to the use of us_atof() which is locale-independent; fix all the remaining ones too. --- modules/access/v4l.c | 5 +++-- modules/access/v4l2.c | 5 +++-- modules/codec/x264.c | 10 ++++++---- src/config/chain.c | 3 ++- src/misc/variables.c | 5 +++-- src/video_output/vout_intf.c | 2 +- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/modules/access/v4l.c b/modules/access/v4l.c index bc89025fdb..1a73ef5a9e 100644 --- a/modules/access/v4l.c +++ b/modules/access/v4l.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -631,8 +632,8 @@ static void ParseMRL( demux_t *p_demux ) } else if( !strncmp( psz_parser, "fps=", strlen( "fps=" ) ) ) { - p_sys->f_fps = strtof( psz_parser + strlen( "fps=" ), - &psz_parser ); + p_sys->f_fps = us_strtof( psz_parser + strlen( "fps=" ), + &psz_parser ); } else if( !strncmp( psz_parser, "adev=", strlen( "adev=" ) ) || !strncmp( psz_parser, "samplerate=", strlen( "samplerate=" ) ) diff --git a/modules/access/v4l2.c b/modules/access/v4l2.c index 0d85e84d63..864333b704 100644 --- a/modules/access/v4l2.c +++ b/modules/access/v4l2.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -790,8 +791,8 @@ static void ParseMRL( demux_sys_t *p_sys, char *psz_path, vlc_object_t *p_obj ) } else if( !strncmp( psz_parser, "fps=", strlen( "fps=" ) ) ) { - p_sys->f_fps = strtof( psz_parser + strlen( "fps=" ), - &psz_parser ); + p_sys->f_fps = us_strtof( psz_parser + strlen( "fps=" ), + &psz_parser ); } else if( !strncmp( psz_parser, "io=", strlen( "io=" ) ) ) { diff --git a/modules/codec/x264.c b/modules/codec/x264.c index dad242d562..9b2b6780b6 100644 --- a/modules/codec/x264.c +++ b/modules/codec/x264.c @@ -32,6 +32,7 @@ #include #include #include +#include #ifdef PTW32_STATIC_LIB #include @@ -947,8 +948,8 @@ static int Open ( vlc_object_t *p_this ) if( val.psz_string ) { char *p = strchr( val.psz_string, ':' ); - p_sys->param.analyse.f_psy_rd = atof( val.psz_string ); - p_sys->param.analyse.f_psy_trellis = p ? atof( p+1 ) : 0; + p_sys->param.analyse.f_psy_rd = us_atof( val.psz_string ); + p_sys->param.analyse.f_psy_trellis = p ? us_atof( p+1 ) : 0; free( val.psz_string ); } @@ -957,8 +958,9 @@ static int Open ( vlc_object_t *p_this ) var_Get( p_enc, SOUT_CFG_PREFIX "level", &val ); if( val.psz_string ) { - if( atof (val.psz_string) < 6 ) - p_sys->param.i_level_idc = (int) ( 10 * atof (val.psz_string) + .5); + if( us_atof (val.psz_string) < 6 ) + p_sys->param.i_level_idc = (int) (10 * us_atof (val.psz_string) + + .5); else p_sys->param.i_level_idc = atoi (val.psz_string); free( val.psz_string ); diff --git a/src/config/chain.c b/src/config/chain.c index 13661e5bdf..2b1b6add70 100644 --- a/src/config/chain.c +++ b/src/config/chain.c @@ -33,6 +33,7 @@ #include #include "libvlc.h" +#include #include "vlc_interface.h" @@ -382,7 +383,7 @@ void __config_ChainParse( vlc_object_t *p_this, const char *psz_prefix, NULL, 0 ); break; case VLC_VAR_FLOAT: - val.f_float = atof( cfg->psz_value ? cfg->psz_value : "0" ); + val.f_float = us_atof( cfg->psz_value ? cfg->psz_value : "0" ); break; case VLC_VAR_STRING: case VLC_VAR_MODULE: diff --git a/src/misc/variables.c b/src/misc/variables.c index 8c4122d483..714ed58a09 100644 --- a/src/misc/variables.c +++ b/src/misc/variables.c @@ -29,6 +29,7 @@ #endif #include +#include #include "variables.h" #include "libvlc.h" @@ -1122,7 +1123,7 @@ void var_OptionParse( vlc_object_t *p_obj, const char *psz_option, break; case VLC_VAR_FLOAT: - val.f_float = atof( psz_value ); + val.f_float = us_atof( psz_value ); break; case VLC_VAR_STRING: @@ -1596,7 +1597,7 @@ int __var_Command( vlc_object_t *p_this, const char *psz_name, i_ret = var_SetInteger( p_obj, psz_cmd, atoi( psz_arg ) ); break; case VLC_VAR_FLOAT: - i_ret = var_SetFloat( p_obj, psz_cmd, atof( psz_arg ) ); + i_ret = var_SetFloat( p_obj, psz_cmd, us_atof( psz_arg ) ); break; case VLC_VAR_STRING: i_ret = var_SetString( p_obj, psz_cmd, psz_arg ); diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index d267a4a5e5..f05ad3c277 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -269,7 +269,7 @@ void vout_IntfInit( vout_thread_t *p_vout ) } else { - i_aspect = atof( val.psz_string ); + i_aspect = us_atof( val.psz_string ); vlc_ureduce( &i_aspect_num, &i_aspect_den, i_aspect *VOUT_ASPECT_FACTOR, VOUT_ASPECT_FACTOR, 0 ); } -- 2.39.2