shithub: lua9

Download patch

ref: 3c77420b78c6c828c66a5a31bf4d685e289a21e1
parent: 4d255d3f3e8bba62cdf62a4b1202d83f686b05b8
author: telephil9 <telephil9@gmail.com>
date: Wed Oct 28 02:17:39 EDT 2020

Pass command line arguments through arg table

	Command line arguments are now available through the global arg table.
	As with the standard lua interpreter, positive indices are arguments, program
	and script names are at indices <= 0.

--- a/lua9.c
+++ b/lua9.c
@@ -25,6 +25,22 @@
 	{ NULL, NULL },
 };
 
+static void 
+createargtable (lua_State *L, char **argv, int argc, int script)
+{
+	int i, narg;
+
+	if (script == argc)
+		script = 0;  /* no script name? */
+	narg = argc - (script + 1);  /* number of positive indices */
+	lua_createtable(L, narg, script + 1);
+	for (i = 0; i < argc; i++) {
+	  lua_pushstring(L, argv[i]);
+	  lua_rawseti(L, -2, i - script);
+	}
+	lua_setglobal(L, "arg");
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -39,6 +55,7 @@
 		luaL_requiref(L, lib->name, lib->func, 1);
 		lua_pop(L, 1);
 	}
+	createargtable(L, argv, argc, 1);
 	r = luaL_dofile(L, argc > 1 ? argv[1] : NULL);
 	if(r != LUA_OK){
 		s = luaL_checkstring(L, lua_gettop(L));