- SDL_RWops* ops = new SDL_RWops();
- ops->type = 0;
- ops->hidden.unknown.data1 = file;
- ops->seek = funcSeek;
- ops->read = funcRead;
- ops->write = 0;
- ops->close = funcClose;
- return ops;
+ PHYSFS_file* file = (PHYSFS_file*) PHYSFS_openRead(filename.c_str());
+ if(!file) {
+ std::stringstream msg;
+ msg << "Couldn't open '" << filename << "': "
+ << PHYSFS_getLastError();
+ throw std::runtime_error(msg.str());
+ }
+
+ SDL_RWops* ops = new SDL_RWops();
+ ops->type = 0;
+ ops->hidden.unknown.data1 = file;
+ ops->seek = funcSeek;
+ ops->read = funcRead;
+ ops->write = 0;
+ ops->close = funcClose;
+ return ops;