MCPcopy Create free account
hub / github.com/Genivia/ugrep / file_encoding

Method file_encoding

lib/input.cpp:1237–1421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1235}
1236
1237void Input::file_encoding(unsigned short enc, const unsigned short *page)
1238{
1239 if (file_ && utfx_ != enc)
1240 {
1241 if (utfx_ == file_encoding::plain && ulen_ > 0)
1242 {
1243 // translate (non-BOM) plain bytes (1 to 4 bytes) buffered in utf8_[]
1244 unsigned char buf[sizeof(utf8_)];
1245 std::memcpy(buf, utf8_, sizeof(utf8_));
1246 unsigned char *b = buf;
1247 char *t = utf8_;
1248 int c1, c2;
1249 switch (enc)
1250 {
1251 case file_encoding::latin:
1252 while (ulen_-- > 0)
1253 {
1254 c1 = *b++;
1255 if (c1 < 0x80)
1256 *t++ = static_cast<char>(c1);
1257 else
1258 t += utf8(c1, t);
1259 }
1260 uidx_ = 0;
1261 ulen_ = static_cast<unsigned short>(t - utf8_);
1262 break;
1263 case file_encoding::cp437:
1264 case file_encoding::cp850:
1265 case file_encoding::cp858:
1266 case file_encoding::ebcdic:
1267 case file_encoding::cp1250:
1268 case file_encoding::cp1251:
1269 case file_encoding::cp1252:
1270 case file_encoding::cp1253:
1271 case file_encoding::cp1254:
1272 case file_encoding::cp1255:
1273 case file_encoding::cp1256:
1274 case file_encoding::cp1257:
1275 case file_encoding::cp1258:
1276 case file_encoding::iso8859_2:
1277 case file_encoding::iso8859_3:
1278 case file_encoding::iso8859_4:
1279 case file_encoding::iso8859_5:
1280 case file_encoding::iso8859_6:
1281 case file_encoding::iso8859_7:
1282 case file_encoding::iso8859_8:
1283 case file_encoding::iso8859_9:
1284 case file_encoding::iso8859_10:
1285 case file_encoding::iso8859_11:
1286 case file_encoding::iso8859_13:
1287 case file_encoding::iso8859_14:
1288 case file_encoding::iso8859_15:
1289 case file_encoding::iso8859_16:
1290 case file_encoding::macroman:
1291 case file_encoding::koi8_r:
1292 case file_encoding::koi8_u:
1293 case file_encoding::koi8_ru:
1294 page_ = codepages[enc - file_encoding::latin - 1];

Callers 2

get_stdinMethod · 0.45
fileMethod · 0.45

Calls 1

utf8Function · 0.70

Tested by

no test coverage detected