int main(int argc, char *argv[]) { int i; bool retval = true; // Set path to source directory srcdir = getenv("srcdir"); if(!srcdir) srcdir = "."; // Try all files one by one if(argc > 1) { for(i = 1; i < argc; i++) if(!testplayer(argv[i])) retval = false; } else for(i = 0; filelist[i] != NULL; i++) if(!testplayer(filelist[i])) retval = false; return retval ? EXIT_SUCCESS : EXIT_FAILURE; }
void RemotePlayer::save(std::string savedir, IGameDef *gamedef) { /* * We have to open all possible player files in the players directory * and check their player names because some file systems are not * case-sensitive and player names are case-sensitive. */ // A player to deserialize files into to check their names RemotePlayer testplayer("", gamedef->idef()); savedir += DIR_DELIM; std::string path = savedir + m_name; for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) { if (!fs::PathExists(path)) { // Open file and serialize std::ostringstream ss(std::ios_base::binary); serialize(ss); if (!fs::safeWriteToFile(path, ss.str())) { infostream << "Failed to write " << path << std::endl; } setModified(false); return; } // Open file and deserialize std::ifstream is(path.c_str(), std::ios_base::binary); if (!is.good()) { infostream << "Failed to open " << path << std::endl; return; } testplayer.deSerialize(is, path, NULL); is.close(); if (strcmp(testplayer.getName(), m_name) == 0) { // Open file and serialize std::ostringstream ss(std::ios_base::binary); serialize(ss); if (!fs::safeWriteToFile(path, ss.str())) { infostream << "Failed to write " << path << std::endl; } setModified(false); return; } path = savedir + m_name + itos(i); } infostream << "Didn't find free file for player " << m_name << std::endl; return; }