Commit 48a3ced7 authored by Pierre Ynard's avatar Pierre Ynard

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.
parent a9b60a5e
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <vlc_demux.h> #include <vlc_demux.h>
#include <vlc_access.h> #include <vlc_access.h>
#include <vlc_picture.h> #include <vlc_picture.h>
#include <vlc_charset.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/mman.h> #include <sys/mman.h>
...@@ -631,8 +632,8 @@ static void ParseMRL( demux_t *p_demux ) ...@@ -631,8 +632,8 @@ static void ParseMRL( demux_t *p_demux )
} }
else if( !strncmp( psz_parser, "fps=", strlen( "fps=" ) ) ) else if( !strncmp( psz_parser, "fps=", strlen( "fps=" ) ) )
{ {
p_sys->f_fps = strtof( psz_parser + strlen( "fps=" ), p_sys->f_fps = us_strtof( psz_parser + strlen( "fps=" ),
&psz_parser ); &psz_parser );
} }
else if( !strncmp( psz_parser, "adev=", strlen( "adev=" ) ) else if( !strncmp( psz_parser, "adev=", strlen( "adev=" ) )
|| !strncmp( psz_parser, "samplerate=", strlen( "samplerate=" ) ) || !strncmp( psz_parser, "samplerate=", strlen( "samplerate=" ) )
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_access.h> #include <vlc_access.h>
#include <vlc_charset.h>
#include <vlc_demux.h> #include <vlc_demux.h>
#include <vlc_input.h> #include <vlc_input.h>
...@@ -790,8 +791,8 @@ static void ParseMRL( demux_sys_t *p_sys, char *psz_path, vlc_object_t *p_obj ) ...@@ -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=" ) ) ) else if( !strncmp( psz_parser, "fps=", strlen( "fps=" ) ) )
{ {
p_sys->f_fps = strtof( psz_parser + strlen( "fps=" ), p_sys->f_fps = us_strtof( psz_parser + strlen( "fps=" ),
&psz_parser ); &psz_parser );
} }
else if( !strncmp( psz_parser, "io=", strlen( "io=" ) ) ) else if( !strncmp( psz_parser, "io=", strlen( "io=" ) ) )
{ {
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_sout.h> #include <vlc_sout.h>
#include <vlc_codec.h> #include <vlc_codec.h>
#include <vlc_charset.h>
#ifdef PTW32_STATIC_LIB #ifdef PTW32_STATIC_LIB
#include <pthread.h> #include <pthread.h>
...@@ -947,8 +948,8 @@ static int Open ( vlc_object_t *p_this ) ...@@ -947,8 +948,8 @@ static int Open ( vlc_object_t *p_this )
if( val.psz_string ) if( val.psz_string )
{ {
char *p = strchr( 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_rd = us_atof( val.psz_string );
p_sys->param.analyse.f_psy_trellis = p ? atof( p+1 ) : 0; p_sys->param.analyse.f_psy_trellis = p ? us_atof( p+1 ) : 0;
free( val.psz_string ); free( val.psz_string );
} }
...@@ -957,8 +958,9 @@ static int Open ( vlc_object_t *p_this ) ...@@ -957,8 +958,9 @@ static int Open ( vlc_object_t *p_this )
var_Get( p_enc, SOUT_CFG_PREFIX "level", &val ); var_Get( p_enc, SOUT_CFG_PREFIX "level", &val );
if( val.psz_string ) if( val.psz_string )
{ {
if( atof (val.psz_string) < 6 ) if( us_atof (val.psz_string) < 6 )
p_sys->param.i_level_idc = (int) ( 10 * atof (val.psz_string) + .5); p_sys->param.i_level_idc = (int) (10 * us_atof (val.psz_string)
+ .5);
else else
p_sys->param.i_level_idc = atoi (val.psz_string); p_sys->param.i_level_idc = atoi (val.psz_string);
free( val.psz_string ); free( val.psz_string );
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <vlc_common.h> #include <vlc_common.h>
#include "libvlc.h" #include "libvlc.h"
#include <vlc_charset.h>
#include "vlc_interface.h" #include "vlc_interface.h"
...@@ -382,7 +383,7 @@ void __config_ChainParse( vlc_object_t *p_this, const char *psz_prefix, ...@@ -382,7 +383,7 @@ void __config_ChainParse( vlc_object_t *p_this, const char *psz_prefix,
NULL, 0 ); NULL, 0 );
break; break;
case VLC_VAR_FLOAT: 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; break;
case VLC_VAR_STRING: case VLC_VAR_STRING:
case VLC_VAR_MODULE: case VLC_VAR_MODULE:
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#endif #endif
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_charset.h>
#include "variables.h" #include "variables.h"
#include "libvlc.h" #include "libvlc.h"
...@@ -1122,7 +1123,7 @@ void var_OptionParse( vlc_object_t *p_obj, const char *psz_option, ...@@ -1122,7 +1123,7 @@ void var_OptionParse( vlc_object_t *p_obj, const char *psz_option,
break; break;
case VLC_VAR_FLOAT: case VLC_VAR_FLOAT:
val.f_float = atof( psz_value ); val.f_float = us_atof( psz_value );
break; break;
case VLC_VAR_STRING: case VLC_VAR_STRING:
...@@ -1596,7 +1597,7 @@ int __var_Command( vlc_object_t *p_this, const char *psz_name, ...@@ -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 ) ); i_ret = var_SetInteger( p_obj, psz_cmd, atoi( psz_arg ) );
break; break;
case VLC_VAR_FLOAT: 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; break;
case VLC_VAR_STRING: case VLC_VAR_STRING:
i_ret = var_SetString( p_obj, psz_cmd, psz_arg ); i_ret = var_SetString( p_obj, psz_cmd, psz_arg );
......
...@@ -269,7 +269,7 @@ void vout_IntfInit( vout_thread_t *p_vout ) ...@@ -269,7 +269,7 @@ void vout_IntfInit( vout_thread_t *p_vout )
} }
else else
{ {
i_aspect = atof( val.psz_string ); i_aspect = us_atof( val.psz_string );
vlc_ureduce( &i_aspect_num, &i_aspect_den, vlc_ureduce( &i_aspect_num, &i_aspect_den,
i_aspect *VOUT_ASPECT_FACTOR, VOUT_ASPECT_FACTOR, 0 ); i_aspect *VOUT_ASPECT_FACTOR, VOUT_ASPECT_FACTOR, 0 );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment