about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-11-20 20:35:37 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-11-20 20:35:37 -0800
commitfa6faaa70093a88bfa3ad2f4414ff0b0c84f7c74 (patch)
tree11f2e18752eab70ab86cfae33606ad2818a2a931 /src
parent6bdc3d17a7d0abfeeaa8708472fbbbcf83c847f1 (diff)
downloadteliva-fa6faaa70093a88bfa3ad2f4414ff0b0c84f7c74.tar.gz
extract a helper
Diffstat (limited to 'src')
-rw-r--r--src/lua.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/lua.c b/src/lua.c
index 3668529..213e8cf 100644
--- a/src/lua.c
+++ b/src/lua.c
@@ -640,6 +640,21 @@ static int handle_luainit (lua_State *L) {
 }
 
 
+/* roughly equivalent to:
+ *  globalname = require(filename) */
+static int dorequire (lua_State *L, const char *filename, const char *globalname) {
+  int status = luaL_loadfile(L, filename) || docall(L, /*nargs*/0, /*don't clean up stack*/0);
+  if (status != 0) return report(L, status);
+  if (lua_isnil(L, -1)) {
+    endwin();
+    printf("%s didn't return a module\n", filename);
+    exit(1);
+  }
+  lua_setglobal(L, globalname);
+  return 0;
+}
+
+
 struct Smain {
   int argc;
   char **argv;
@@ -657,14 +672,8 @@ static int pmain (lua_State *L) {
   if (argv[0] && argv[0][0]) progname = argv[0];
   lua_gc(L, LUA_GCSTOP, 0);  /* stop collector during initialization */
   luaL_openlibs(L);  /* open libraries */
-  status = luaL_loadfile(L, "src/lcurses/curses.lua") || docall(L, /*nargs*/0, /*don't clean up stack*/0);
-  if (status != 0) return report(L, status);
-  if (lua_isnil(L, -1)) {
-    endwin();
-    printf("lcurses/curses.lua didn't return a module\n");
-    exit(1);
-  }
-  lua_setglobal(L, "curses");
+  status = dorequire(L, "src/lcurses/curses.lua", "curses");
+  if (status != 0) return 0;
   lua_gc(L, LUA_GCRESTART, 0);
   s->status = handle_luainit(L);
   if (s->status != 0) return 0;