summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2016-06-30 22:20:17 +0800
committerruki <[email protected]>2016-06-30 22:20:17 +0800
commitbae0d55fc4ecae6294a8d4260e876f274dc30f00 (patch)
treebc3c2a714a5095326e229d17629c9845d0662c2e /core/src
parentc7e6e28ffb33d121b7773d06ffea5b08af4c1165 (diff)
sort template and add strcmp for string
Diffstat (limited to 'core/src')
-rwxr-xr-xcore/src/xmake/machine.c4
-rwxr-xr-xcore/src/xmake/makefile1
-rwxr-xr-xcore/src/xmake/string/strcmp.c55
3 files changed, 59 insertions, 1 deletions
diff --git a/core/src/xmake/machine.c b/core/src/xmake/machine.c
index 3b11aef70..616de4eec 100755
--- a/core/src/xmake/machine.c
+++ b/core/src/xmake/machine.c
@@ -77,6 +77,7 @@ tb_int_t xm_path_translate(lua_State* lua);
tb_int_t xm_path_is_absolute(lua_State* lua);
// the string functions
+tb_int_t xm_string_strcmp(lua_State* lua);
tb_int_t xm_string_endswith(lua_State* lua);
tb_int_t xm_string_startswith(lua_State* lua);
@@ -127,7 +128,8 @@ static luaL_Reg const g_path_functions[] =
// the string functions
static luaL_Reg const g_string_functions[] =
{
- { "endswith", xm_string_endswith }
+ { "strcmp", xm_string_strcmp }
+, { "endswith", xm_string_endswith }
, { "startswith", xm_string_startswith }
, { tb_null, tb_null }
};
diff --git a/core/src/xmake/makefile b/core/src/xmake/makefile
index 8d2ca97f4..77a12034b 100755
--- a/core/src/xmake/makefile
+++ b/core/src/xmake/makefile
@@ -37,6 +37,7 @@ xmake_C_FILES += \
path/absolute \
path/translate \
path/is_absolute \
+ string/strcmp \
string/endswith \
string/startswith \
process/open \
diff --git a/core/src/xmake/string/strcmp.c b/core/src/xmake/string/strcmp.c
new file mode 100755
index 000000000..e5036360f
--- /dev/null
+++ b/core/src/xmake/string/strcmp.c
@@ -0,0 +1,55 @@
+/*!The Automatic Cross-platform Build Tool
+ *
+ * XMake is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * XMake is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XMake;
+ * If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
+ *
+ * Copyright (C) 2015 - 2016, ruki All rights reserved.
+ *
+ * @author ruki
+ * @file strcmp.c
+ *
+ */
+
+/* //////////////////////////////////////////////////////////////////////////////////////
+ * trace
+ */
+#define TB_TRACE_MODULE_NAME "strcmp"
+#define TB_TRACE_MODULE_DEBUG (0)
+
+/* //////////////////////////////////////////////////////////////////////////////////////
+ * includes
+ */
+#include "prefix.h"
+
+/* //////////////////////////////////////////////////////////////////////////////////////
+ * implementation
+ */
+
+// string:strcmp(s1, s2)
+tb_int_t xm_string_strcmp(lua_State* lua)
+{
+ // check
+ tb_assert_and_check_return_val(lua, 0);
+
+ // get the strings
+ tb_char_t const* s1 = luaL_checkstring(lua, 1);
+ tb_char_t const* s2 = luaL_checkstring(lua, 2);
+ tb_check_return_val(s1 && s2, 0);
+
+ // compare them
+ lua_pushinteger(lua, tb_strcmp(s1, s2));
+
+ // ok
+ return 1;
+}