From: lilo_booter Date: Tue, 25 Jan 2005 12:32:07 +0000 (+0000) Subject: Localised data storage and utf-8 properties X-Git-Url: http://research.m1stereo.tv/gitweb?a=commitdiff_plain;h=421997fe7b5ef0735d706c3976ef90fa5b65bd99;p=melted Localised data storage and utf-8 properties git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@628 d19143bc-622f-0410-bfdd-b5b2a6649095 --- diff --git a/src/modules/westley/consumer_westley.c b/src/modules/westley/consumer_westley.c index 87ab12d..8bf93c9 100644 --- a/src/modules/westley/consumer_westley.c +++ b/src/modules/westley/consumer_westley.c @@ -189,12 +189,10 @@ static void serialise_properties( serialise_context context, mlt_properties prop strcmp( name, "height" ) != 0 ) { char *value = mlt_properties_get_value( properties, i ); - p = xmlNewChild( node, NULL, "property", NULL ); - xmlNewProp( p, "name", mlt_properties_get_name( properties, i ) ); if ( strcmp( context->root, "" ) && !strncmp( value, context->root, strlen( context->root ) ) ) - xmlNodeSetContent( p, value + strlen( context->root ) + 1 ); - else - xmlNodeSetContent( p, value ); + value += strlen( context->root ) + 1; + p = xmlNewTextChild( node, NULL, "property", value ); + xmlNewProp( p, "name", name ); } } } @@ -213,12 +211,10 @@ static void serialise_store_properties( serialise_context context, mlt_propertie char *value = mlt_properties_get_value( properties, i ); if ( value != NULL ) { - p = xmlNewChild( node, NULL, "property", NULL ); - xmlNewProp( p, "name", mlt_properties_get_name( properties, i ) ); - if ( context->root != NULL && strcmp( context->root, "" ) && !strncmp( value, context->root, strlen( context->root ) ) ) - xmlNodeSetContent( p, value + strlen( context->root ) + 1 ); - else - xmlNodeSetContent( p, value ); + if ( strcmp( context->root, "" ) && !strncmp( value, context->root, strlen( context->root ) ) ) + value += strlen( context->root ) + 1; + p = xmlNewTextChild( node, NULL, "property", value ); + xmlNewProp( p, "name", name ); } } } @@ -704,13 +700,13 @@ static int consumer_start( mlt_consumer this ) { xmlChar *buffer = NULL; int length = 0; - xmlDocDumpMemory( doc, &buffer, &length ); + xmlDocDumpMemoryEnc( doc, &buffer, &length, "utf-8" ); mlt_properties_set( properties, resource, buffer ); xmlFree( buffer ); } else { - xmlSaveFormatFile( resource, doc, 1 ); + xmlSaveFormatFileEnc( resource, doc, "utf-8", 1 ); } // Close the document diff --git a/src/modules/westley/producer_westley.c b/src/modules/westley/producer_westley.c index 111a7e2..f929ca5 100644 --- a/src/modules/westley/producer_westley.c +++ b/src/modules/westley/producer_westley.c @@ -931,7 +931,7 @@ static void on_start_property( deserialise_context context, const xmlChar *name, if ( context->property != NULL ) mlt_properties_set( properties, context->property, value == NULL ? "" : value ); - + // Tell parser to collect any further nodes for serialisation context->is_value = 1; @@ -967,7 +967,7 @@ static void on_end_property( deserialise_context context, const xmlChar *name ) xmlFreeDoc( context->value_doc ); context->value_doc = NULL; } - + // Close this property handling free( context->property ); context->property = NULL; @@ -1145,6 +1145,8 @@ static void on_internal_subset( void *ctx, const xmlChar* name, params_to_entities( context ); } +// TODO: Check this with Dan... I think this is for westley parameterisation +// but it's breaking standard escaped entities (like < etc). static void on_entity_declaration( void *ctx, const xmlChar* name, int type, const xmlChar* publicId, const xmlChar* systemId, xmlChar* content) { @@ -1154,7 +1156,8 @@ static void on_entity_declaration( void *ctx, const xmlChar* name, int type, xmlAddDocEntity( context->entity_doc, name, type, publicId, systemId, content ); } -xmlEntityPtr on_get_entity( void *ctx, const xmlChar* name ) +// TODO: Check this functionality (see on_entity_declaration) +static xmlEntityPtr on_get_entity( void *ctx, const xmlChar* name ) { struct _xmlParserCtxt *xmlcontext = ( struct _xmlParserCtxt* )ctx; deserialise_context context = ( deserialise_context )( xmlcontext->_private ); @@ -1301,7 +1304,7 @@ mlt_producer producer_westley_init( int info, char *data ) sax->cdataBlock = on_characters; sax->internalSubset = on_internal_subset; sax->entityDecl = on_entity_declaration; - sax->getEntity = on_get_entity; + //sax->getEntity = on_get_entity; // Setup libxml2 SAX parsing xmlInitParser();