extern "C" { #include #include #include } #include //STL #include #include #include //#define epath "../data" //#define epathlen sizeof(epath) /*Add an io.dir(path) function, which lists all the files in (path)*/ //UPDATE: Moved to shared code //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); }