Translated using Weblate (Italian)
[oweals/minetest.git] / src / rollback.cpp
index ac4324cabd25efd4ff9e858b9723effbbe9e9eca..3cd9c7ce7c63c2e4ca748480dc7a2191924a1d99 100644 (file)
@@ -42,6 +42,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        }
 #define SQLOK(f) SQLRES(f, SQLITE_OK)
 
+#define SQLOK_ERRSTREAM(s, m)                             \
+       if ((s) != SQLITE_OK) {                               \
+               errorstream << "RollbackManager: " << (m) << ": " \
+                       << sqlite3_errmsg(db) << std::endl;           \
+       }
+
+#define FINALIZE_STATEMENT(statement) \
+       SQLOK_ERRSTREAM(sqlite3_finalize(statement), "Failed to finalize " #statement)
 
 class ItemStackRow : public ItemStack {
 public:
@@ -83,8 +91,7 @@ struct Entity {
 
 RollbackManager::RollbackManager(const std::string & world_path,
                IGameDef * gamedef_) :
-       gamedef(gamedef_),
-       current_actor_is_guess(false)
+       gamedef(gamedef_)
 {
        verbosestream << "RollbackManager::RollbackManager(" << world_path
                << ")" << std::endl;
@@ -109,17 +116,17 @@ RollbackManager::~RollbackManager()
 {
        flush();
 
-       SQLOK(sqlite3_finalize(stmt_insert));
-       SQLOK(sqlite3_finalize(stmt_replace));
-       SQLOK(sqlite3_finalize(stmt_select));
-       SQLOK(sqlite3_finalize(stmt_select_range));
-       SQLOK(sqlite3_finalize(stmt_select_withActor));
-       SQLOK(sqlite3_finalize(stmt_knownActor_select));
-       SQLOK(sqlite3_finalize(stmt_knownActor_insert));
-       SQLOK(sqlite3_finalize(stmt_knownNode_select));
-       SQLOK(sqlite3_finalize(stmt_knownNode_insert));
-
-       SQLOK(sqlite3_close(db));
+       FINALIZE_STATEMENT(stmt_insert);
+       FINALIZE_STATEMENT(stmt_replace);
+       FINALIZE_STATEMENT(stmt_select);
+       FINALIZE_STATEMENT(stmt_select_range);
+       FINALIZE_STATEMENT(stmt_select_withActor);
+       FINALIZE_STATEMENT(stmt_knownActor_select);
+       FINALIZE_STATEMENT(stmt_knownActor_insert);
+       FINALIZE_STATEMENT(stmt_knownNode_select);
+       FINALIZE_STATEMENT(stmt_knownNode_insert);
+
+       SQLOK_ERRSTREAM(sqlite3_close(db), "Could not close db");
 }
 
 
@@ -570,35 +577,34 @@ const std::list<RollbackAction> RollbackManager::rollbackActionsFromActionRows(
 {
        std::list<RollbackAction> actions;
 
-       for (std::list<ActionRow>::const_iterator it = rows.begin();
-                       it != rows.end(); ++it) {
+       for (const ActionRow &row : rows) {
                RollbackAction action;
-               action.actor     = (it->actor) ? getActorName(it->actor) : "";
-               action.unix_time = it->timestamp;
-               action.type      = static_cast<RollbackAction::Type>(it->type);
+               action.actor     = (row.actor) ? getActorName(row.actor) : "";
+               action.unix_time = row.timestamp;
+               action.type      = static_cast<RollbackAction::Type>(row.type);
 
                switch (action.type) {
                case RollbackAction::TYPE_MODIFY_INVENTORY_STACK:
-                       action.inventory_location = it->location.c_str();
-                       action.inventory_list     = it->list;
-                       action.inventory_index    = it->index;
-                       action.inventory_add      = it->add;
-                       action.inventory_stack    = it->stack;
+                       action.inventory_location = row.location;
+                       action.inventory_list     = row.list;
+                       action.inventory_index    = row.index;
+                       action.inventory_add      = row.add;
+                       action.inventory_stack    = row.stack;
                        if (action.inventory_stack.name.empty()) {
-                               action.inventory_stack.name = getNodeName(it->stack.id);
+                               action.inventory_stack.name = getNodeName(row.stack.id);
                        }
                        break;
 
                case RollbackAction::TYPE_SET_NODE:
-                       action.p            = v3s16(it->x, it->y, it->z);
-                       action.n_old.name   = getNodeName(it->oldNode);
-                       action.n_old.param1 = it->oldParam1;
-                       action.n_old.param2 = it->oldParam2;
-                       action.n_old.meta   = it->oldMeta;
-                       action.n_new.name   = getNodeName(it->newNode);
-                       action.n_new.param1 = it->newParam1;
-                       action.n_new.param2 = it->newParam2;
-                       action.n_new.meta   = it->newMeta;
+                       action.p            = v3s16(row.x, row.y, row.z);
+                       action.n_old.name   = getNodeName(row.oldNode);
+                       action.n_old.param1 = row.oldParam1;
+                       action.n_old.param2 = row.oldParam2;
+                       action.n_old.meta   = row.oldMeta;
+                       action.n_new.name   = getNodeName(row.newNode);
+                       action.n_new.param1 = row.newParam1;
+                       action.n_new.param2 = row.newParam2;
+                       action.n_new.meta   = row.newMeta;
                        break;
 
                default:
@@ -863,7 +869,7 @@ void RollbackManager::setActor(const std::string & actor, bool is_guess)
 std::string RollbackManager::getSuspect(v3s16 p, float nearness_shortcut,
                float min_nearness)
 {
-       if (current_actor != "") {
+       if (!current_actor.empty()) {
                return current_actor;
        }
        int cur_time = time(0);
@@ -876,7 +882,7 @@ std::string RollbackManager::getSuspect(v3s16 p, float nearness_shortcut,
                if (i->unix_time < first_time) {
                        break;
                }
-               if (i->actor == "") {
+               if (i->actor.empty()) {
                        continue;
                }
                // Find position of suspect or continue
@@ -912,7 +918,7 @@ void RollbackManager::flush()
        for (iter  = action_todisk_buffer.begin();
                        iter != action_todisk_buffer.end();
                        ++iter) {
-               if (iter->actor == "") {
+               if (iter->actor.empty()) {
                        continue;
                }