@@ -6049,65 +6049,110 @@ parser_lex_magic_comment_encoding_value(pm_parser_t *parser, const uint8_t *star
6049
6049
return true; \
6050
6050
}
6051
6051
6052
- // Built convenience macros to compare aliases for the same encoding.
6052
+ // A convenience macros for comparing two aliases for the same encoding.
6053
6053
#define ENCODING2(value1, value2, prebuilt) ENCODING1(value1, prebuilt) ENCODING1(value2, prebuilt)
6054
- #define ENCODING3(value1, value2, value3, prebuilt) ENCODING2(value1, value2, prebuilt) ENCODING1(value3, prebuilt)
6055
- #define ENCODING4(value1, value2, value3, value4, prebuilt) ENCODING3(value1, value2, value3, prebuilt) ENCODING1(value4, prebuilt)
6056
- #define ENCODING5(value1, value2, value3, value4, value5, prebuilt) ENCODING4(value1, value2, value3, value4, prebuilt) ENCODING1(value5, prebuilt)
6057
-
6058
- // Check most common first. (This is pretty arbitrary.)
6059
- ENCODING1("ASCII", pm_encoding_ascii);
6060
- ENCODING1("ASCII-8BIT", pm_encoding_ascii_8bit);
6061
- ENCODING1("US-ASCII", pm_encoding_ascii);
6062
- ENCODING1("BINARY", pm_encoding_ascii_8bit);
6063
- ENCODING1("Shift_JIS", pm_encoding_shift_jis);
6064
- ENCODING1("EUC-JP", pm_encoding_euc_jp);
6065
-
6066
- // Then check all the others.
6067
- ENCODING2("ANSI_X3.4-1968", "646", pm_encoding_ascii);
6068
- ENCODING1("cp51932", pm_encoding_cp51932);
6069
- ENCODING1("eucJP", pm_encoding_euc_jp);
6070
- ENCODING1("Big5", pm_encoding_big5);
6071
- ENCODING2("CP850", "IBM850", pm_encoding_cp850);
6072
- ENCODING1("CP852", pm_encoding_cp852);
6073
- ENCODING1("CP855", pm_encoding_cp855);
6074
- ENCODING2("GBK", "CP936", pm_encoding_gbk);
6075
- ENCODING2("IBM437", "CP437", pm_encoding_ibm437);
6076
- ENCODING2("IBM720", "CP720", pm_encoding_ibm720);
6077
- ENCODING2("IBM737", "CP737", pm_encoding_ibm737);
6078
- ENCODING2("IBM775", "CP775", pm_encoding_ibm775);
6079
- ENCODING2("ISO-8859-1", "ISO8859-1", pm_encoding_iso_8859_1);
6080
- ENCODING2("ISO-8859-2", "ISO8859-2", pm_encoding_iso_8859_2);
6081
- ENCODING2("ISO-8859-3", "ISO8859-3", pm_encoding_iso_8859_3);
6082
- ENCODING2("ISO-8859-4", "ISO8859-4", pm_encoding_iso_8859_4);
6083
- ENCODING2("ISO-8859-5", "ISO8859-5", pm_encoding_iso_8859_5);
6084
- ENCODING2("ISO-8859-6", "ISO8859-6", pm_encoding_iso_8859_6);
6085
- ENCODING2("ISO-8859-7", "ISO8859-7", pm_encoding_iso_8859_7);
6086
- ENCODING2("ISO-8859-8", "ISO8859-8", pm_encoding_iso_8859_8);
6087
- ENCODING2("ISO-8859-9", "ISO8859-9", pm_encoding_iso_8859_9);
6088
- ENCODING2("ISO-8859-10", "ISO8859-10", pm_encoding_iso_8859_10);
6089
- ENCODING2("ISO-8859-11", "ISO8859-11", pm_encoding_iso_8859_11);
6090
- ENCODING2("ISO-8859-13", "ISO8859-13", pm_encoding_iso_8859_13);
6091
- ENCODING2("ISO-8859-14", "ISO8859-14", pm_encoding_iso_8859_14);
6092
- ENCODING2("ISO-8859-15", "ISO8859-15", pm_encoding_iso_8859_15);
6093
- ENCODING2("ISO-8859-16", "ISO8859-16", pm_encoding_iso_8859_16);
6094
- ENCODING2("KOI8-R", "CP878", pm_encoding_koi8_r);
6095
- ENCODING4("CP65001", "locale", "external", "filesystem", pm_encoding_utf_8);
6096
- ENCODING3("UTF8-MAC", "UTF-8-MAC", "UTF-8-HFS", pm_encoding_utf8_mac);
6097
- ENCODING2("Windows-1250", "CP1250", pm_encoding_windows_1250);
6098
- ENCODING2("Windows-1251", "CP1251", pm_encoding_windows_1251);
6099
- ENCODING2("Windows-1252", "CP1252", pm_encoding_windows_1252);
6100
- ENCODING2("Windows-1253", "CP1253", pm_encoding_windows_1253);
6101
- ENCODING2("Windows-1254", "CP1254", pm_encoding_windows_1254);
6102
- ENCODING2("Windows-1255", "CP1255", pm_encoding_windows_1255);
6103
- ENCODING2("Windows-1256", "CP1256", pm_encoding_windows_1256);
6104
- ENCODING2("Windows-1257", "CP1257", pm_encoding_windows_1257);
6105
- ENCODING2("Windows-1258", "CP1258", pm_encoding_windows_1258);
6106
- ENCODING5("Windows-31J", "CP932", "csWindows31J", "SJIS", "PCK", pm_encoding_windows_31j);
6107
-
6108
- #undef ENCODING5
6109
- #undef ENCODING4
6110
- #undef ENCODING3
6054
+
6055
+ if (width >= 3) {
6056
+ switch (*start) {
6057
+ case 'A': case 'a':
6058
+ ENCODING1("ASCII", pm_encoding_ascii);
6059
+ ENCODING1("ASCII-8BIT", pm_encoding_ascii_8bit);
6060
+ ENCODING1("ANSI_X3.4-1968", pm_encoding_ascii);
6061
+ break;
6062
+ case 'B': case 'b':
6063
+ ENCODING1("BINARY", pm_encoding_ascii_8bit);
6064
+ ENCODING1("Big5", pm_encoding_big5);
6065
+ break;
6066
+ case 'C': case 'c':
6067
+ ENCODING1("CP437", pm_encoding_ibm437);
6068
+ ENCODING1("CP720", pm_encoding_ibm720);
6069
+ ENCODING1("CP737", pm_encoding_ibm737);
6070
+ ENCODING1("CP775", pm_encoding_ibm775);
6071
+ ENCODING1("CP850", pm_encoding_cp850);
6072
+ ENCODING1("CP852", pm_encoding_cp852);
6073
+ ENCODING1("CP855", pm_encoding_cp855);
6074
+ ENCODING1("CP878", pm_encoding_koi8_r);
6075
+ ENCODING2("CP932", "csWindows31J", pm_encoding_windows_31j);
6076
+ ENCODING1("CP936", pm_encoding_gbk);
6077
+ ENCODING1("CP1250", pm_encoding_windows_1250);
6078
+ ENCODING1("CP1251", pm_encoding_windows_1251);
6079
+ ENCODING1("CP1252", pm_encoding_windows_1252);
6080
+ ENCODING1("CP1253", pm_encoding_windows_1253);
6081
+ ENCODING1("CP1254", pm_encoding_windows_1254);
6082
+ ENCODING1("CP1255", pm_encoding_windows_1255);
6083
+ ENCODING1("CP1256", pm_encoding_windows_1256);
6084
+ ENCODING1("CP1257", pm_encoding_windows_1257);
6085
+ ENCODING1("CP1258", pm_encoding_windows_1258);
6086
+ ENCODING1("CP51932", pm_encoding_cp51932);
6087
+ ENCODING1("CP65001", pm_encoding_utf_8);
6088
+ break;
6089
+ case 'E': case 'e':
6090
+ ENCODING2("EUC-JP", "eucJP", pm_encoding_euc_jp);
6091
+ ENCODING1("external", pm_encoding_utf_8);
6092
+ break;
6093
+ case 'F': case 'f':
6094
+ ENCODING1("filesystem", pm_encoding_utf_8);
6095
+ break;
6096
+ case 'G': case 'g':
6097
+ ENCODING1("GBK", pm_encoding_gbk);
6098
+ break;
6099
+ case 'I': case 'i':
6100
+ ENCODING1("IBM437", pm_encoding_ibm437);
6101
+ ENCODING1("IBM720", pm_encoding_ibm720);
6102
+ ENCODING1("IBM737", pm_encoding_ibm737);
6103
+ ENCODING1("IBM775", pm_encoding_ibm775);
6104
+ ENCODING1("IBM850", pm_encoding_cp850);
6105
+ ENCODING2("ISO-8859-1", "ISO8859-1", pm_encoding_iso_8859_1);
6106
+ ENCODING2("ISO-8859-2", "ISO8859-2", pm_encoding_iso_8859_2);
6107
+ ENCODING2("ISO-8859-3", "ISO8859-3", pm_encoding_iso_8859_3);
6108
+ ENCODING2("ISO-8859-4", "ISO8859-4", pm_encoding_iso_8859_4);
6109
+ ENCODING2("ISO-8859-5", "ISO8859-5", pm_encoding_iso_8859_5);
6110
+ ENCODING2("ISO-8859-6", "ISO8859-6", pm_encoding_iso_8859_6);
6111
+ ENCODING2("ISO-8859-7", "ISO8859-7", pm_encoding_iso_8859_7);
6112
+ ENCODING2("ISO-8859-8", "ISO8859-8", pm_encoding_iso_8859_8);
6113
+ ENCODING2("ISO-8859-9", "ISO8859-9", pm_encoding_iso_8859_9);
6114
+ ENCODING2("ISO-8859-10", "ISO8859-10", pm_encoding_iso_8859_10);
6115
+ ENCODING2("ISO-8859-11", "ISO8859-11", pm_encoding_iso_8859_11);
6116
+ ENCODING2("ISO-8859-13", "ISO8859-13", pm_encoding_iso_8859_13);
6117
+ ENCODING2("ISO-8859-14", "ISO8859-14", pm_encoding_iso_8859_14);
6118
+ ENCODING2("ISO-8859-15", "ISO8859-15", pm_encoding_iso_8859_15);
6119
+ ENCODING2("ISO-8859-16", "ISO8859-16", pm_encoding_iso_8859_16);
6120
+ break;
6121
+ case 'K': case 'k':
6122
+ ENCODING1("KOI8-R", pm_encoding_koi8_r);
6123
+ break;
6124
+ case 'L': case 'l':
6125
+ ENCODING1("locale", pm_encoding_utf_8);
6126
+ break;
6127
+ case 'P': case 'p':
6128
+ ENCODING1("PCK", pm_encoding_windows_31j);
6129
+ break;
6130
+ case 'S': case 's':
6131
+ ENCODING1("Shift_JIS", pm_encoding_shift_jis);
6132
+ ENCODING1("SJIS", pm_encoding_windows_31j);
6133
+ break;
6134
+ case 'U': case 'u':
6135
+ ENCODING1("US-ASCII", pm_encoding_ascii);
6136
+ ENCODING2("UTF8-MAC", "UTF-8-HFS", pm_encoding_utf8_mac);
6137
+ break;
6138
+ case 'W': case 'w':
6139
+ ENCODING1("Windows-31J", pm_encoding_windows_31j);
6140
+ ENCODING1("Windows-1250", pm_encoding_windows_1250);
6141
+ ENCODING1("Windows-1251", pm_encoding_windows_1251);
6142
+ ENCODING1("Windows-1252", pm_encoding_windows_1252);
6143
+ ENCODING1("Windows-1253", pm_encoding_windows_1253);
6144
+ ENCODING1("Windows-1254", pm_encoding_windows_1254);
6145
+ ENCODING1("Windows-1255", pm_encoding_windows_1255);
6146
+ ENCODING1("Windows-1256", pm_encoding_windows_1256);
6147
+ ENCODING1("Windows-1257", pm_encoding_windows_1257);
6148
+ ENCODING1("Windows-1258", pm_encoding_windows_1258);
6149
+ break;
6150
+ case '6':
6151
+ ENCODING1("646", pm_encoding_ascii);
6152
+ break;
6153
+ }
6154
+ }
6155
+
6111
6156
#undef ENCODING2
6112
6157
#undef ENCODING1
6113
6158
0 commit comments