MCPcopy Create free account
hub / github.com/Aloshi/EmulationStation / xml_encoding guess_buffer_encoding

Function xml_encoding guess_buffer_encoding

src/pugiXML/pugixml.cpp:1108–1130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1106 }
1107
1108 PUGI__FN xml_encoding guess_buffer_encoding(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
1109 {
1110 // look for BOM in first few bytes
1111 if (d0 == 0 && d1 == 0 && d2 == 0xfe && d3 == 0xff) return encoding_utf32_be;
1112 if (d0 == 0xff && d1 == 0xfe && d2 == 0 && d3 == 0) return encoding_utf32_le;
1113 if (d0 == 0xfe && d1 == 0xff) return encoding_utf16_be;
1114 if (d0 == 0xff && d1 == 0xfe) return encoding_utf16_le;
1115 if (d0 == 0xef && d1 == 0xbb && d2 == 0xbf) return encoding_utf8;
1116
1117 // look for <, <? or <?xm in various encodings
1118 if (d0 == 0 && d1 == 0 && d2 == 0 && d3 == 0x3c) return encoding_utf32_be;
1119 if (d0 == 0x3c && d1 == 0 && d2 == 0 && d3 == 0) return encoding_utf32_le;
1120 if (d0 == 0 && d1 == 0x3c && d2 == 0 && d3 == 0x3f) return encoding_utf16_be;
1121 if (d0 == 0x3c && d1 == 0 && d2 == 0x3f && d3 == 0) return encoding_utf16_le;
1122 if (d0 == 0x3c && d1 == 0x3f && d2 == 0x78 && d3 == 0x6d) return encoding_utf8;
1123
1124 // look for utf16 < followed by node name (this may fail, but is better than utf8 since it's zero terminated so early)
1125 if (d0 == 0 && d1 == 0x3c) return encoding_utf16_be;
1126 if (d0 == 0x3c && d1 == 0) return encoding_utf16_le;
1127
1128 // no known BOM detected, assume utf8
1129 return encoding_utf8;
1130 }
1131
1132 PUGI__FN xml_encoding get_buffer_encoding(xml_encoding encoding, const void* contents, size_t size)
1133 {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected