Skip to content
Permalink
Browse files

Player file directory must be only created when using file backend.

Also ensure on each player save that the directory exists
  • Loading branch information...
nerzhul committed Jan 4, 2019
1 parent cf224c9 commit 07177190734b0e5c17be18d0bf5d509c5226af2f
Showing with 8 additions and 4 deletions.
  1. +7 −0 src/database/database-files.cpp
  2. +1 −1 src/database/database-files.h
  3. +0 −3 src/serverenvironment.cpp
@@ -31,6 +31,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
// This backend is intended to be used on Minetest 0.4.16 only for the transition backend
// for player files

PlayerDatabaseFiles::PlayerDatabaseFiles(const std::string &savedir) : m_savedir(savedir)
{
fs::CreateDir(m_savedir);
}

void PlayerDatabaseFiles::serialize(std::ostringstream &os, RemotePlayer *player)
{
// Utilize a Settings object for storing values
@@ -58,6 +63,8 @@ void PlayerDatabaseFiles::serialize(std::ostringstream &os, RemotePlayer *player

void PlayerDatabaseFiles::savePlayer(RemotePlayer *player)
{
fs::CreateDir(m_savedir);

std::string savedir = m_savedir + DIR_DELIM;
std::string path = savedir + player->getName();
bool path_found = false;
@@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class PlayerDatabaseFiles : public PlayerDatabase
{
public:
PlayerDatabaseFiles(const std::string &savedir) : m_savedir(savedir) {}
PlayerDatabaseFiles(const std::string &savedir);
virtual ~PlayerDatabaseFiles() = default;

void savePlayer(RemotePlayer *player);
@@ -544,9 +544,6 @@ void ServerEnvironment::kickAllPlayers(AccessDeniedCode reason,

void ServerEnvironment::saveLoadedPlayers()
{
std::string players_path = m_path_world + DIR_DELIM + "players";
fs::CreateDir(players_path);

for (RemotePlayer *player : m_players) {
if (player->checkModified() || (player->getPlayerSAO() &&
player->getPlayerSAO()->getMeta().isModified())) {

0 comments on commit 0717719

Please sign in to comment.
You can’t perform that action at this time.