summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpportunityLiu <[email protected]>2019-07-02 11:34:45 +0800
committerOpportunityLiu <[email protected]>2019-07-02 11:34:45 +0800
commit25533776832f2624622917e2ac1a96c243e67b6c (patch)
tree6e61422101f34f3363bd4c4ac1ece901b4d9ea0e
parentaab06410fd763538632d82dee0d68a20f2d3e986 (diff)
fix
-rw-r--r--core/src/xmake/io/open.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/core/src/xmake/io/open.c b/core/src/xmake/io/open.c
index 4e02e4f24..09311decd 100644
--- a/core/src/xmake/io/open.c
+++ b/core/src/xmake/io/open.c
@@ -60,26 +60,21 @@ tb_int_t xm_io_open(lua_State* lua)
tb_file_ref_t file = tb_file_init(path, tb_mode);
tb_size_t pathlen = tb_strlen(path);
tb_char_t* savedfull = tb_malloc_cstr(pathlen + 1);
+ tb_assert(savedfull);
tb_strcpy(savedfull, path);
if (file)
{
- tb_bool_t is_binary = mode[1] == 'b' || (update && mode[2] == 'b');
- tb_bool_t is_utf8 = tb_strstr(mode, "utf8") || tb_strstr(mode, "utf-8");
- tb_bool_t is_u16le = tb_strstr(mode, "utf16le") || tb_strstr(mode, "utf-16le");
- tb_bool_t is_u16be = tb_strstr(mode, "utf16be") || tb_strstr(mode, "utf-16be");
- tb_bool_t is_u16 = tb_strstr(mode, "utf16") || tb_strstr(mode, "utf-16");
-
tb_size_t enc = XM_IO_FILE_ENCODING_UNKNOWN;
- if (is_binary)
+ if (mode[1] == 'b' || (update && mode[2] == 'b'))
enc = XM_IO_FILE_ENCODING_BINARY;
- else if (is_utf8)
+ else if (tb_strstr(mode, "utf8") || tb_strstr(mode, "utf-8"))
enc = TB_CHARSET_TYPE_UTF8;
- else if (is_u16le)
+ else if (tb_strstr(mode, "utf16le") || tb_strstr(mode, "utf-16le"))
enc = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_LE;
- else if (is_u16be)
+ else if (tb_strstr(mode, "utf16be") || tb_strstr(mode, "utf-16be"))
enc = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_BE;
- else if (is_u16)
+ else if (tb_strstr(mode, "utf16") || tb_strstr(mode, "utf-16"))
enc = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_NE;
xm_io_file* xm_file = xm_io_newfile(lua);