diff options
| author | Alexander <alex@cogarr.net> | 2019-02-10 18:16:04 -0500 |
|---|---|---|
| committer | Alexander <alex@cogarr.net> | 2019-02-10 18:16:04 -0500 |
| commit | 83a85531ae789e2f30da2379990899f815f53ff1 (patch) | |
| tree | 81140ea86f6e3d7808b218597874ea927555ef0d /src/server/lua_api/load_io.cpp | |
| parent | 1482e03dd238643ff47278e207e6450f14011acf (diff) | |
| download | brokengine-83a85531ae789e2f30da2379990899f815f53ff1.tar.gz brokengine-83a85531ae789e2f30da2379990899f815f53ff1.tar.bz2 brokengine-83a85531ae789e2f30da2379990899f815f53ff1.zip | |
Added new element, added server-specific code for networking
Added a new element for client gui: iguicombobox
Added a part of the engine specifically for the server
so server is no longer just a stripped down client
Diffstat (limited to 'src/server/lua_api/load_io.cpp')
| -rw-r--r-- | src/server/lua_api/load_io.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/server/lua_api/load_io.cpp b/src/server/lua_api/load_io.cpp new file mode 100644 index 0000000..af471b1 --- /dev/null +++ b/src/server/lua_api/load_io.cpp @@ -0,0 +1,63 @@ + +extern "C" { + #include <lua.h> + #include <lauxlib.h> + #include <lualib.h> +} +#include <server/lua_api/load_io.hpp> +//STL +#include <stdio.h> +#include <stdlib.h> +#include <dirent.h> + +#define epath "../data" +#define epathlen sizeof(epath) + +/*Add an io.dir(path) function, which lists all the files in (path)*/ +int dirpath(lua_State *L){ + if(!lua_isstring(L,-1)){ + lua_pushstring(L,"io.dir() requires a string as argument #1"); + lua_error(L); + } + size_t pathstrlen; + const char *pathstr = lua_tolstring(L,-1,&pathstrlen); + //printf("got pathstr: %s\n",pathstr); + //char tpathstr[pathstrlen + epathlen + 1 + 1]; //+1 for null, +1 for / + //memcpy(tpathstr,epath,epathlen); + //tpathstr[epathlen] = '/'; + //memcpy(tpathstr+epathlen,pathstr,pathstrlen); + //tpathstr[pathstrlen + epathlen + 1] = '\0'; + //printf("tpathstr is: \"%s\"\n",tpathstr); + //lua_pop(L,1); + DIR *dir; + struct dirent *ent; + const char *tpathstr = pathstr; + dir = opendir(tpathstr); + if(dir == NULL){ + perror("Cannot open"); + lua_pushstring(L,"Failed to open directory: "); + lua_pushstring(L,tpathstr); + lua_concat(L,2); + lua_error(L); + } + int i = 1; + ent = readdir(dir); + lua_newtable(L); + while( (ent = readdir(dir)) != NULL){ + lua_pushinteger(L,i); + lua_pushstring(L,ent->d_name); + lua_settable(L,-3); + i++; + } + closedir(dir); + return 1; +} + + +void load_iofuncs(lua_State* L){ + lua_getglobal(L,"io"); + + lua_pushcfunction(L,dirpath); + lua_setfield(L,-2,"dir"); + lua_pop(L,1); +} |
