- if (luaL_dofile(L, filename)) {
- fprintf(stderr, "error: %s\n", lua_tostring(L, -1));
+ vector<string> errors;
+ bool success = false;
+ for (size_t i = 0; i < search_dirs.size(); ++i) {
+ string path = search_dirs[i] + "/" + filename;
+ int err = luaL_loadfile(L, path.c_str());
+ if (err == 0) {
+ // Success; actually call the code.
+ if (lua_pcall(L, 0, LUA_MULTRET, 0)) {
+ fprintf(stderr, "Error when running %s: %s\n", path.c_str(), lua_tostring(L, -1));
+ exit(1);
+ }
+ success = true;
+ break;
+ }
+ errors.push_back(lua_tostring(L, -1));