summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-12-06 22:27:42 +0800
committerruki <[email protected]>2017-12-08 14:10:23 +0800
commitabe87994168053e4f420a8b7ab286c65b546eaae (patch)
tree2b245ac984055954a5407198edc26128ef173984
parent330e8a895d4706bcc6b2247990fb72a70f54f377 (diff)
disable halfdelay for curses
-rw-r--r--NOTICE.md2
-rw-r--r--core/makefile2
-rw-r--r--core/src/lcurses/lcurses.c4
-rw-r--r--xmake/core/base/object.lua109
4 files changed, 114 insertions, 3 deletions
diff --git a/NOTICE.md b/NOTICE.md
index 02b853f82..18ccf0317 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -13,7 +13,7 @@ which can be obtained at:
* HOMEPAGE:
* http://pdcurses.org/
-This product depends on 'lcurses', Lua Console User Interface,
+This product depends on 'lcurses/cui', Lua Console User Interface,
which can be obtained at:
* LICENSE:
diff --git a/core/makefile b/core/makefile
index 236e6a028..478fca71f 100644
--- a/core/makefile
+++ b/core/makefile
@@ -261,7 +261,7 @@ endif
ifeq ($(PLAT),linux)
base_LIBPATH :=
base_LIBNAMES :=
-base_LIBNAMES += $(shell if { cat detect/curses.c | $(CC) -xc - -lcurses -o /dev/null 2>/dev/null; }; then echo curses tinfo; fi )
+base_LIBNAMES += $(shell if { cat detect/curses.c | $(CC) -xc - -lcurses -o /dev/null 2>/dev/null; }; then echo curses; fi )
base_LIBNAMES += $(shell if { cat detect/readline.c | $(CC) -xc - -lreadline -o /dev/null 2>/dev/null; }; then echo readline; fi )
base_LIBNAMES += m dl pthread
endif
diff --git a/core/src/lcurses/lcurses.c b/core/src/lcurses/lcurses.c
index 704c8fab3..f379824a5 100644
--- a/core/src/lcurses/lcurses.c
+++ b/core/src/lcurses/lcurses.c
@@ -1436,12 +1436,14 @@ static int lc_raw(lua_State *L)
return 1;
}
+#if 0 // disable it because need link libtinfo.so on linux
static int lc_halfdelay(lua_State *L)
{
int tenths = luaL_checkint(L, 1);
lua_pushboolean(L, B(halfdelay(tenths)));
return 1;
}
+#endif
static int lcw_intrflush(lua_State *L)
{
@@ -2263,7 +2265,7 @@ static const luaL_reg curseslib[] =
{ "cbreak", lc_cbreak },
{ "echo", lc_echo },
{ "raw", lc_raw },
- { "halfdelay", lc_halfdelay },
+// { "halfdelay", lc_halfdelay },
/* util */
{ "unctrl", lc_unctrl },
diff --git a/xmake/core/base/object.lua b/xmake/core/base/object.lua
new file mode 100644
index 000000000..1922b0b4d
--- /dev/null
+++ b/xmake/core/base/object.lua
@@ -0,0 +1,109 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2017, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file object.lua
+--
+
+-- define module: object
+local object = object or {}
+
+-- taken from 'std' library: http://luaforge.net/projects/stdlib/
+-- and http://lua-cui.sourceforge.net/
+--
+-- create an object/class:
+-- > object/class = parent {value, ...; field = value ...}
+-- > An object's metatable is itself.
+-- > In the initialiser, unnamed values are assigned to the fields
+-- > given by _init (assuming the default _clone).
+-- > Private fields and methods start with "_"
+-- >
+--
+-- Access an object field: object.field
+-- > Call an object method: object:method (...)
+-- > Call a class method: class.method (self, ...)
+-- >
+-- > Add a field: object.field = x
+-- > Add a method: function object:method (...) ... end
+--
+
+-- permute some indices of a table
+local function permute (p, t)
+ local u = {}
+ for i, v in pairs (t) do
+ if p[i] ~= nil then
+ u[p[i]] = v
+ else
+ u[i] = v
+ end
+ end
+ return u
+end
+
+-- make a shallow copy of a table, including any
+local function clone (t)
+ local u = setmetatable ({}, getmetatable (t))
+ for i, v in pairs (t) do
+ u[i] = v
+ end
+ return u
+end
+
+-- merge two tables
+--
+-- If there are duplicate fields, u's will be used. The metatable of
+-- the returned table is that of t
+--
+local function merge (t, u)
+ local r = clone (t)
+ for i, v in pairs (u) do
+ r[i] = v
+ end
+ return r
+end
+
+-- root object
+--
+-- List of fields to be initialised by the
+-- constructor: assuming the default _clone, the
+-- numbered values in an object constructor are
+-- assigned to the fields given in _init
+--
+local object = { _init = {} }
+setmetatable (object, object)
+
+-- object constructor
+--
+-- @param initial values for fields in
+--
+-- @return new object
+--
+function object:_clone (values)
+ local object = merge(self, permute(self._init, values or {}))
+ return setmetatable (object, object)
+end
+
+-- local x = object {}
+function object.__call (...)
+ return (...)._clone (...)
+end
+
+-- return module: object
+return object