summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2019-08-23 23:43:20 +0800
committerruki <[email protected]>2019-08-23 16:20:03 +0800
commit8e5875a886b5a4a82cf1350ebfcbc55f34262e80 (patch)
tree400a57dc9c8096c214a947db164cabf4e2a514ef /core/src
parent01e7af7426fc0d1b461efbe57d9ed137fb1894ee (diff)
detect luajit bitcode file
Diffstat (limited to 'core/src')
-rw-r--r--core/src/xmake/io/file_open.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/core/src/xmake/io/file_open.c b/core/src/xmake/io/file_open.c
index fa39fc125..46e63cd62 100644
--- a/core/src/xmake/io/file_open.c
+++ b/core/src/xmake/io/file_open.c
@@ -52,7 +52,12 @@ static tb_size_t xm_io_file_detect_charset(tb_byte_t const** data_ptr, tb_long_t
tb_size_t charset = XM_IO_FILE_ENCODING_BINARY;
do
{
- if (size >= 3 && data[0] == 239 && data[1] == 187 && data[2] == 191) // utf-8 with bom
+ // is luajit bitcode? open as binary
+ if (size >= 3 && data[0] == 27 && data[1] == 'L' && data[2] == 'J')
+ break;
+
+ // utf-8 with bom
+ if (size >= 3 && data[0] == 239 && data[1] == 187 && data[2] == 191)
{
charset = TB_CHARSET_TYPE_UTF8;
data += 3; // skip bom
@@ -60,13 +65,15 @@ static tb_size_t xm_io_file_detect_charset(tb_byte_t const** data_ptr, tb_long_t
}
if (size >= 2)
{
- if (data[0] == 254 && data[1] == 255) // utf16be
+ // utf16be
+ if (data[0] == 254 && data[1] == 255)
{
charset = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_BE;
data += 2; // skip bom
break;
}
- else if (data[0] == 255 && data[1] == 254) // utf16le
+ // utf16le
+ else if (data[0] == 255 && data[1] == 254)
{
charset = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_LE;
data += 2; // skip bom