diff options
| author | ame <[email protected]> | 2024-02-01 16:03:43 -0600 |
|---|---|---|
| committer | ame <[email protected]> | 2024-02-01 16:03:43 -0600 |
| commit | 582585d17a5d2b55082d9089ca3c8faed9452acf (patch) | |
| tree | fac30011871792c44bcf55d12f37affc15f210e1 /src | |
| parent | 741d7034818aa3f9328b9c558489a3541871a346 (diff) | |
fix header parsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/lua.c | 172 | ||||
| -rw-r--r-- | src/net.c | 4 |
2 files changed, 88 insertions, 88 deletions
@@ -1,87 +1,87 @@ -#include "lua.h" -#include <stdio.h> -#include "io.h" -#include <stdlib.h> -#include <string.h> -#include "i_str.h" -#include "parray.h" - -static int ii = 0; -void i_dcopy(lua_State* src, lua_State* dest, void* _seen){ - parray_t* seen = (parray_t*)_seen; - if(seen == NULL) seen = parray_init(); - size_t len; - int at, at2; - int *sp = malloc(1); - char* s; - void* whar; - int old_top = lua_gettop(src); - //printf("%i\n",ii++); - switch(lua_type(src, -1)){ - case LUA_TNUMBER: - lua_pushnumber(dest, luaL_checknumber(src, -1)); - break; - case LUA_TSTRING: - s = (char*)luaL_checklstring(src, -1, &len); - lua_pushlstring(dest, s, len); - break; - case LUA_TTABLE: - lua_newtable(dest); - at = lua_gettop(dest); - at2 = lua_gettop(src); - - *sp = at2; - whar = parray_get(seen, (void*)lua_topointer(src, at2)); - if( whar != NULL){ - //printf("%s\n",lua_tostring(src, at2)); - //printf("WHAR\n"); - - lua_pushvalue(dest, *(int*)whar); - return; - } else parray_set(seen, (void*)lua_topointer(src, at2), sp); - - lua_pushnil(src); - for(;lua_next(src, at2) != 0;){ - lua_pushvalue(src, -2); - - i_dcopy(src, dest, seen); - - lua_pushvalue(src, -2); - i_dcopy(src, dest, seen); - - lua_settable(dest, at); - lua_pop(src, 3); - } - lua_settop(dest, at); - break; - case LUA_TFUNCTION: - //lua_pushnil(dest); - //break; - if(lua_iscfunction(src, old_top)){ - //kinda silly - lua_pushcfunction(dest, lua_tocfunction(src, -1)); - break; - } - - lua_getglobal(src, "string"); - lua_pushstring(src, "dump"); - lua_gettable(src, -2); - lua_pushvalue(src, old_top); - lua_call(src, 1, 1); - - s = (char*)luaL_checklstring(src, -1, &len); - lua_pushlstring(dest, s, len); - //for(int i = 0; i != len; i++) printf("%c",s[i]); - printf("%i\n",luaL_loadbuffer(dest, s, len, "test")); - //lua_pushvalue(dest, -1); - break; - case LUA_TUSERDATA: - lua_pushlightuserdata(dest, lua_touserdata(src, -1)); - break; - default: - printf("%i\n",lua_type(src, -1)); - lua_pushnil(dest); - break; - } - //lua_settop(src, old_top); +#include "lua.h"
+#include <stdio.h>
+#include "io.h"
+#include <stdlib.h>
+#include <string.h>
+#include "i_str.h"
+#include "parray.h"
+
+static int ii = 0;
+void i_dcopy(lua_State* src, lua_State* dest, void* _seen){
+ parray_t* seen = (parray_t*)_seen;
+ if(seen == NULL) seen = parray_init();
+ size_t len;
+ int at, at2;
+ int *sp = malloc(1);
+ char* s;
+ void* whar;
+ int old_top = lua_gettop(src);
+ //printf("%i\n",ii++);
+ switch(lua_type(src, -1)){
+ case LUA_TNUMBER:
+ lua_pushnumber(dest, luaL_checknumber(src, -1));
+ break;
+ case LUA_TSTRING:
+ s = (char*)luaL_checklstring(src, -1, &len);
+ lua_pushlstring(dest, s, len);
+ break;
+ case LUA_TTABLE:
+ lua_newtable(dest);
+ at = lua_gettop(dest);
+ at2 = lua_gettop(src);
+
+ *sp = at2;
+ whar = parray_get(seen, (void*)lua_topointer(src, at2));
+ if( whar != NULL){
+ //printf("%s\n",lua_tostring(src, at2));
+ //printf("WHAR\n");
+
+ lua_pushvalue(dest, *(int*)whar);
+ return;
+ } else parray_set(seen, (void*)lua_topointer(src, at2), sp);
+
+ lua_pushnil(src);
+ for(;lua_next(src, at2) != 0;){
+ lua_pushvalue(src, -2);
+
+ i_dcopy(src, dest, seen);
+
+ lua_pushvalue(src, -2);
+ i_dcopy(src, dest, seen);
+
+ lua_settable(dest, at);
+ lua_pop(src, 3);
+ }
+ lua_settop(dest, at);
+ break;
+ case LUA_TFUNCTION:
+ //lua_pushnil(dest);
+ //break;
+ if(lua_iscfunction(src, old_top)){
+ //kinda silly
+ lua_pushcfunction(dest, lua_tocfunction(src, -1));
+ break;
+ }
+
+ lua_getglobal(src, "string");
+ lua_pushstring(src, "dump");
+ lua_gettable(src, -2);
+ lua_pushvalue(src, old_top);
+ lua_call(src, 1, 1);
+
+ s = (char*)luaL_checklstring(src, -1, &len);
+ lua_pushlstring(dest, s, len);
+ //for(int i = 0; i != len; i++) printf("%c",s[i]);
+ printf("%i\n",luaL_loadbuffer(dest, s, len, "test"));
+ //lua_pushvalue(dest, -1);
+ break;
+ case LUA_TUSERDATA:
+ lua_pushlightuserdata(dest, lua_touserdata(src, -1));
+ break;
+ default:
+ printf("%i\n",lua_type(src, -1));
+ lua_pushnil(dest);
+ break;
+ }
+ //lua_settop(src, old_top);
}
\ No newline at end of file @@ -243,7 +243,7 @@ int l_send(lua_State* L){ if(strcmp(key, "Code") != 0){
str_push(header_vs, key);
str_push(header_vs, ": ");
- str_push(header_vs, (char*)luaL_checklstring(L, -2, NULL));
+ str_push(header_vs, (char*)luaL_checklstring(L, -1, NULL));
str_push(header_vs, "\r\n");
}
lua_pop(L, 1);
@@ -467,7 +467,7 @@ int l_GET(lua_State* L){ if(paths == NULL)
paths = parray_init();
-
+
//please free this
void* v_old_paths = parray_get(paths, portc);
struct sarray_t* old_paths;
|
