diff options
Diffstat (limited to 'support/texlab/crates/bibutils_sys/src/xml_encoding.c')
-rw-r--r-- | support/texlab/crates/bibutils_sys/src/xml_encoding.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/support/texlab/crates/bibutils_sys/src/xml_encoding.c b/support/texlab/crates/bibutils_sys/src/xml_encoding.c deleted file mode 100644 index 135821528c..0000000000 --- a/support/texlab/crates/bibutils_sys/src/xml_encoding.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * xml_getencoding.c - * - * Copyright (c) Chris Putnam 2007-2019 - * - * Source code released under the GPL version 2 - * - */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "charsets.h" -#include "str.h" -#include "str_conv.h" -#include "xml.h" -#include "xml_encoding.h" -#include "msvc_fix.h" - -static int -xml_getencodingr( xml *node ) -{ - int n = CHARSET_UNKNOWN, m; - str *s; - char *t; - - if ( xml_tag_matches( node, "xml" ) ) { - s = xml_attribute( node, "encoding" ); - if ( str_has_value( s ) ) { - t = str_cstr( s ); - if ( !strcasecmp( t, "UTF-8" ) ) - n = CHARSET_UNICODE; - else if ( !strcasecmp( t, "UTF8" ) ) - n = CHARSET_UNICODE; - else if ( !strcasecmp( t, "GB18030" ) ) - n = CHARSET_GB18030; - else n = charset_find( t ); - if ( n==CHARSET_UNKNOWN ) { - fprintf( stderr, "Warning: did not recognize encoding '%s'\n", t ); - } - } - } - if ( node->down ) { - m = xml_getencodingr( node->down ); - if ( m!=CHARSET_UNKNOWN ) n = m; - } - if ( node->next ) { - m = xml_getencodingr( node->next ); - if ( m!=CHARSET_UNKNOWN ) n = m; - } - - return n; -} - -int -xml_getencoding( str *s ) -{ - int file_charset = CHARSET_UNKNOWN; - str descriptor; - xml descriptxml; - char *p, *q; - - p = strstr( str_cstr( s ), "<?xml" ); - if ( !p ) p = strstr( str_cstr( s ), "<?XML" ); - if ( p ) { - q = strstr( p, "?>" ); - if ( q ) { - str_init( &descriptor ); - str_segcpy( &descriptor, p, q+2 ); - xml_init( &descriptxml ); - xml_parse( str_cstr( &descriptor ), &descriptxml ); - file_charset = xml_getencodingr( &descriptxml ); - xml_free( &descriptxml ); - str_free( &descriptor ); - str_segdel( s, p, q+2 ); - } - } - return file_charset; -} |