This does not permit one to mix locales within a MLT process!
In other words, you can not load a document in a locale using one
decimal separator and then filter with a double property using a
different separator.
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <libxml/tree.h>
#define ID_SIZE 128
#include <libxml/tree.h>
#define ID_SIZE 128
xmlDocSetRootElement( doc, root );
xmlDocSetRootElement( doc, root );
+ // Indicate the numeric locale
+ xmlNewProp( root, _x("LC_NUMERIC"), _x( setlocale( LC_NUMERIC, NULL ) ) );
+
// If we have root, then deal with it now
if ( mlt_properties_get( properties, "root" ) != NULL )
{
// If we have root, then deal with it now
if ( mlt_properties_get( properties, "root" ) != NULL )
{
<!-- MLT XML DTD v0.2.0 -->
<!ELEMENT mlt (profile | producer | playlist | tractor | multitrack)+ >
<!-- MLT XML DTD v0.2.0 -->
<!ELEMENT mlt (profile | producer | playlist | tractor | multitrack)+ >
+<!ATTLIST mlt
+ LC_NUMERIC CDATA #IMPLIED
+ root CDATA #IMPLIED
+ profile CDATA #IMPLIED
+ title CDATA #IMPLIED
+>
<!ELEMENT profile EMPTY >
<!ATTLIST profile
name CDATA #IMPLIED
<!ELEMENT profile EMPTY >
<!ATTLIST profile
name CDATA #IMPLIED
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <libxml/parser.h>
#include <libxml/parserInternals.h> // for xmlCreateFileParserCtxt
#include <libxml/parser.h>
#include <libxml/parserInternals.h> // for xmlCreateFileParserCtxt
else if ( xmlStrcmp( name, _x("property") ) == 0 )
on_start_property( context, name, atts );
else if ( xmlStrcmp( name, _x("westley") ) == 0 || xmlStrcmp( name, _x("mlt") ) == 0 )
else if ( xmlStrcmp( name, _x("property") ) == 0 )
on_start_property( context, name, atts );
else if ( xmlStrcmp( name, _x("westley") ) == 0 || xmlStrcmp( name, _x("mlt") ) == 0 )
for ( ; atts != NULL && *atts != NULL; atts += 2 )
for ( ; atts != NULL && *atts != NULL; atts += 2 )
- mlt_properties_set( context->producer_map, ( const char * )atts[ 0 ], ( const char * )atts[ 1 ] );
+ {
+ if ( xmlStrcmp( atts[0], _x("LC_NUMERIC") ) )
+ mlt_properties_set( context->producer_map, _s( atts[0] ), _s(atts[1] ) );
+ else
+ setlocale( LC_NUMERIC, _s( atts[1] ) );
+ }
+ }
}
static void on_end_element( void *ctx, const xmlChar *name )
}
static void on_end_element( void *ctx, const xmlChar *name )