MCPcopy Create free account
hub / github.com/WheretIB/nullc / guess_buffer_encoding

Function guess_buffer_encoding

external/pugixml/pugixml.cpp:1004–1026  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1002 }
1003
1004 xml_encoding guess_buffer_encoding(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
1005 {
1006 // look for BOM in first few bytes
1007 if (d0 == 0 && d1 == 0 && d2 == 0xfe && d3 == 0xff) return encoding_utf32_be;
1008 if (d0 == 0xff && d1 == 0xfe && d2 == 0 && d3 == 0) return encoding_utf32_le;
1009 if (d0 == 0xfe && d1 == 0xff) return encoding_utf16_be;
1010 if (d0 == 0xff && d1 == 0xfe) return encoding_utf16_le;
1011 if (d0 == 0xef && d1 == 0xbb && d2 == 0xbf) return encoding_utf8;
1012
1013 // look for <, <? or <?xm in various encodings
1014 if (d0 == 0 && d1 == 0 && d2 == 0 && d3 == 0x3c) return encoding_utf32_be;
1015 if (d0 == 0x3c && d1 == 0 && d2 == 0 && d3 == 0) return encoding_utf32_le;
1016 if (d0 == 0 && d1 == 0x3c && d2 == 0 && d3 == 0x3f) return encoding_utf16_be;
1017 if (d0 == 0x3c && d1 == 0 && d2 == 0x3f && d3 == 0) return encoding_utf16_le;
1018 if (d0 == 0x3c && d1 == 0x3f && d2 == 0x78 && d3 == 0x6d) return encoding_utf8;
1019
1020 // look for utf16 < followed by node name (this may fail, but is better than utf8 since it's zero terminated so early)
1021 if (d0 == 0 && d1 == 0x3c) return encoding_utf16_be;
1022 if (d0 == 0x3c && d1 == 0) return encoding_utf16_le;
1023
1024 // no known BOM detected, assume utf8
1025 return encoding_utf8;
1026 }
1027
1028 xml_encoding get_buffer_encoding(xml_encoding encoding, const void* contents, size_t size)
1029 {

Callers 1

get_buffer_encodingFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected