** Replace in the path (on the top of the stack) any occurrence ** of LUA_EXEC_DIR with the executable's path. */
| 151 | ** of LUA_EXEC_DIR with the executable's path. |
| 152 | */ |
| 153 | static void setprogdir (lua_State *L) { |
| 154 | char buff[MAX_PATH + 1]; |
| 155 | char *lb; |
| 156 | DWORD nsize = sizeof(buff)/sizeof(char); |
| 157 | DWORD n = GetModuleFileNameA(NULL, buff, nsize); /* get exec. name */ |
| 158 | if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL) |
| 159 | luaL_error(L, "unable to get ModuleFileName"); |
| 160 | else { |
| 161 | *lb = '\0'; /* cut name on the last '\\' to get the path */ |
| 162 | luaL_gsub(L, lua_tostring(L, -1), LUA_EXEC_DIR, buff); |
| 163 | lua_remove(L, -2); /* remove original string */ |
| 164 | } |
| 165 | } |
| 166 | |
| 167 | |
| 168 |
no test coverage detected