diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-11-20 16:16:00 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-11-20 16:33:41 -0800 |
commit | b618bfc7cf7eb5fa498a051a17832c2cda4cca9c (patch) | |
tree | 0e5179289101da53572f9bce6c9f543d054d010a /src/lcurses/curses.c | |
parent | 8a3e81b4b0d8365baa40ff1326ed4d13b34506dc (diff) | |
download | teliva-b618bfc7cf7eb5fa498a051a17832c2cda4cca9c.tar.gz |
port changes from minimal to maximal version
From lcurseslib.c to lcurses/ directory.
Diffstat (limited to 'src/lcurses/curses.c')
-rw-r--r-- | src/lcurses/curses.c | 46 |
1 files changed, 9 insertions, 37 deletions
diff --git a/src/lcurses/curses.c b/src/lcurses/curses.c index c5f7c3e..303607a 100644 --- a/src/lcurses/curses.c +++ b/src/lcurses/curses.c @@ -111,19 +111,12 @@ Pnew_chstr(lua_State *L) #define CCR(n, v) \ lua_pushstring(L, n); \ lua_pushinteger(L, v); \ - lua_settable(L, lua_upvalueindex(1)) + lua_settable(L, -3); #define CC(s) CCR(#s, s) #define CF(i) CCR(LCURSES_STR(LCURSES_SPLICE(KEY_F, i)), KEY_F(i)) /* -** these values may be fixed only after initialization, so this is -** called from Pinitscr, after the curses driver is initialized -** -** curses table is kept at upvalue position 1, in case the global -** name is changed by the user or even in the registration phase by -** the developer -** ** some of these values are not constant so need to register ** them directly instead of using a table */ @@ -217,8 +210,8 @@ register_curses_constants(lua_State *L) ** proper cleanup) */ -static void -cleanup(void) +void +cleanup_curses(void) { if (!isendwin()) { @@ -229,31 +222,12 @@ cleanup(void) } -/*** -Initialise screen. -@function initscr -@treturn window main screen -@see initscr(3x) -*/ +extern void stack_dump(lua_State *L); static int -Pinitscr(lua_State *L) +init_stdscr(lua_State *L) { - WINDOW *w; - - /* initialize curses */ - w = initscr(); - - /* no longer used, so clean it up */ - lua_pushstring(L, RIPOFF_TABLE); - lua_pushnil(L); - lua_settable(L, LUA_REGISTRYINDEX); - - /* failed to initialize */ - if (w == NULL) - return 0; - /* return stdscr - main window */ - lc_newwin(L, w); + lc_newwin(L, stdscr); /* save main window on registry */ lua_pushstring(L, STDSCR_REGISTRY); @@ -261,10 +235,11 @@ Pinitscr(lua_State *L) lua_rawset(L, LUA_REGISTRYINDEX); /* setup curses constants - curses.xxx numbers */ + lua_pushvalue(L, -2); register_curses_constants(L); /* install cleanup handler to help in debugging and screen trashing */ - atexit(cleanup); + atexit(cleanup_curses); return 1; } @@ -1546,10 +1521,7 @@ luaopen_curses_c(lua_State *L) luaL_register(L, "curses", curseslib); - lua_pushstring(L, "initscr"); - lua_pushvalue(L, -2); - lua_pushcclosure(L, Pinitscr, 1); - lua_settable(L, -3); + init_stdscr(L); return 1; } |