summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lua_core.c20
-rw-r--r--src/main.c4
-rw-r--r--src/state.c8
3 files changed, 23 insertions, 9 deletions
diff --git a/src/lua_core.c b/src/lua_core.c
index 15dfe70..c254a9d 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -1007,18 +1007,32 @@ static void cursorEnterInputEvent( GLFWwindow* window, int enter ) {
lua_pop( L, -1 );
}
-bool luaInit() {
+bool luaInit( int argn, const char **argc ) {
state->luaState = luaL_newstate();
+ lua_State *L = state->luaState;
- luaL_openlibs( state->luaState );
+ luaL_openlibs( L );
- if ( state->luaState == NULL ) {
+ if ( L == NULL ) {
TraceLog( LOG_WARNING, "%s", "Failed to init Lua" );
return false;
}
defineGlobals();
+ /* Set arguments. */
+ lua_getglobal( L, "RL" );
+ lua_newtable( L );
+ lua_setfield( L, -2, "arg" );
+ lua_getglobal( L, "RL" );
+ lua_getfield( L, -1, "arg" );
+
+ for ( int i = 0; i < argn; i++ ) {
+ lua_pushstring( L, argc[i] );
+ lua_rawseti( L, -2, i + 1 );
+ }
+ lua_pop( L, -1 );
+
return true;
}
diff --git a/src/main.c b/src/main.c
index 4b90b08..fc64e86 100644
--- a/src/main.c
+++ b/src/main.c
@@ -48,7 +48,7 @@ int main( int argn, const char **argc ) {
}
if ( interpret_mode ) {
- stateInitInterpret();
+ stateInitInterpret( argn, argc );
lua_State *L = state->luaState;
lua_pushcfunction( L, luaTraceback );
@@ -63,7 +63,7 @@ int main( int argn, const char **argc ) {
}
else {
printVersion();
- stateInit( exePath );
+ stateInit( argn, argc, exePath );
luaRegister();
state->run = luaCallMain();
diff --git a/src/state.c b/src/state.c
index 2e1a50f..d1a3329 100644
--- a/src/state.c
+++ b/src/state.c
@@ -6,7 +6,7 @@
State *state;
-bool stateInit( const char *exePath ) {
+bool stateInit( int argn, const char **argc, const char *exePath ) {
state = malloc( sizeof( State ) );
state->exePath = malloc( STRING_LEN * sizeof( char ) );
@@ -107,15 +107,15 @@ bool stateInit( const char *exePath ) {
}
if ( state->run ) {
InitAudioDevice();
- state->run = luaInit();
+ state->run = luaInit( argn, argc );
}
return state->run;
}
-void stateInitInterpret() {
+void stateInitInterpret( int argn, const char **argc ) {
state = malloc( sizeof( State ) );
- luaInit();
+ luaInit( argn, argc );
}
void stateFree() {