From 04f936c2c67a58f09bb307f9b021ab7a11b885da Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 11 Jan 2008 00:30:32 +0000 Subject: [PATCH] (svn r11811) -Fix: make compilation without networking work again (and thus move the debugdumpcommand stuff out of the network 'area'). --- config.lib | 1 + src/command.cpp | 8 +++----- src/date.cpp | 3 ++- src/debug.cpp | 17 +++++++++++++++++ src/debug.h | 6 ++++++ src/network/network.cpp | 26 ++++---------------------- src/network/network.h | 11 ----------- src/network/network_data.cpp | 7 ++----- src/openttd.cpp | 2 ++ src/players.cpp | 2 ++ src/saveload.cpp | 4 +--- src/video/sdl_v.cpp | 1 + 12 files changed, 41 insertions(+), 47 deletions(-) diff --git a/config.lib b/config.lib index ebdf4fae85..efb3082893 100644 --- a/config.lib +++ b/config.lib @@ -2242,6 +2242,7 @@ showhelp() { echo "" echo "Features and packages:" echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)" + echo " --enable_desync_debug=[LVL] enable desync debug options (LVL=[012], 0 is none" echo " --enable-profiling enables profiling" echo " --enable-dedicated compile a dedicated server (without video)" echo " --enable-static enable static compile (doesn't work for" diff --git a/src/command.cpp b/src/command.cpp index 38193d41cd..95dde1d7fe 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -18,6 +18,8 @@ #include "gfx_func.h" #include "functions.h" #include "town.h" +#include "date_func.h" +#include "debug.h" const char *_cmd_text = NULL; @@ -613,11 +615,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, return true; } #endif /* ENABLE_NETWORK */ -#ifdef DEBUG_DUMP_COMMANDS - extern Date _date; - extern DateFract _date_fract; - debug_dump_commands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_player, tile, p1, p2, cmd, _cmd_text); -#endif /* DUMP_COMMANDS */ + DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_player, tile, p1, p2, cmd, _cmd_text); /* update last build coordinate of player. */ if (tile != 0 && IsValidPlayer(_current_player)) { diff --git a/src/date.cpp b/src/date.cpp index 7c9ac12267..c6de516aa1 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -13,6 +13,7 @@ #include "functions.h" #include "date_func.h" #include "vehicle_base.h" +#include "debug.h" #ifdef DEBUG_DUMP_COMMANDS #include "saveload.h" #include "town_map.h" @@ -282,7 +283,7 @@ void IncreaseDate() char name[MAX_PATH]; snprintf(name, lengthof(name), "dmp_cmds_%d.sav", _date); SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR); - debug_dump_commands("ddc:save:%s\n", name); + DebugDumpCommands("ddc:save:%s\n", name); #endif /* DUMP_COMMANDS */ if (_opt.autosave != 0 && (_cur_month % _autosave_months[_opt.autosave]) == 0) { _do_autosave = true; diff --git a/src/debug.cpp b/src/debug.cpp index 1b811b9cc2..d6104f9b09 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -176,3 +176,20 @@ const char *GetDebugString() return dbgstr; } + +#ifdef DEBUG_DUMP_COMMANDS +#include "fileio.h" + +void CDECL DebugDumpCommands(const char *s, ...) +{ + static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR); + if (f == NULL) return; + + va_list va; + va_start(va, s); + vfprintf(f, s, va); + va_end(va); + + fflush(f); +} +#endif /* DEBUG_DUMP_COMMANDS */ diff --git a/src/debug.h b/src/debug.h index 30b495e6fd..4432a56663 100644 --- a/src/debug.h +++ b/src/debug.h @@ -132,4 +132,10 @@ const char *GetDebugString(); void ShowInfo(const char *str); void CDECL ShowInfoF(const char *str, ...); +#ifdef DEBUG_DUMP_COMMANDS + void CDECL DebugDumpCommands(const char *s, ...); +#else /* DEBUG_DUMP_COMMANDS */ + static inline void DebugDumpCommands(const char *s, ...) {} +#endif /* DEBUG_DUMP_COMMANDS */ + #endif /* DEBUG_H */ diff --git a/src/network/network.cpp b/src/network/network.cpp index 625c048212..cba0c3829e 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -34,7 +34,7 @@ extern const char _openttd_revision[]; #include "../string_func.h" #ifdef DEBUG_DUMP_COMMANDS #include "../core/alloc_func.hpp" -#endif +#endif /* DEBUG_DUMP_COMMANDS */ /* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */ assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE); @@ -193,9 +193,7 @@ void CDECL NetworkTextMessage(NetworkAction action, uint16 color, bool self_send break; } -#ifdef DEBUG_DUMP_COMMANDS - debug_dump_commands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message); -#endif /* DUMP_COMMANDS */ + DebugDumpCommands("ddc:cmsg:%d;%d;%s\n", _date, _date_fract, message); IConsolePrintF(color, "%s", message); AddChatMessage(color, duration, "%s", message); } @@ -1236,9 +1234,7 @@ static bool NetworkDoClientLoop() if (_sync_seed_1 != _random_seeds[0][0]) { #endif NetworkError(STR_NETWORK_ERR_DESYNC); -#ifdef DEBUG_DUMP_COMMANDS - debug_dump_commands("ddc:serr:%d;%d\n", _date, _date_fract); -#endif /* DUMP_COMMANDS */ + DebugDumpCommands("ddc:serr:%d;%d\n", _date, _date_fract); DEBUG(net, 0, "Sync error detected!"); NetworkClientError(NETWORK_RECV_STATUS_DESYNC, DEREF_CLIENT(0)); return false; @@ -1313,7 +1309,7 @@ void NetworkGameLoop() sscanf(&buff[8], "%d;%d;%d;%d;%d;%d;%d;%s", &next_date, &next_date_fract, &player, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text); cp->player = (Owner)player; } -#endif /* DUMP_COMMANDS */ +#endif /* DEBUG_DUMP_COMMANDS */ bool send_frame = false; @@ -1467,18 +1463,4 @@ bool IsNetworkCompatibleVersion(const char *other) return strncmp(_openttd_revision, other, NETWORK_REVISION_LENGTH - 1) == 0; } -#ifdef DEBUG_DUMP_COMMANDS -void CDECL debug_dump_commands(const char *s, ...) -{ - static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR); - if (f == NULL) return; - - va_list va; - va_start(va, s); - vfprintf(f, s, va); - va_end(va); - - fflush(f); -} -#endif /* DEBUG_DUMP_COMMANDS */ #endif /* ENABLE_NETWORK */ diff --git a/src/network/network.h b/src/network/network.h index d2a18749b4..81075d137d 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -18,17 +18,6 @@ // nothing will happen. //#define ENABLE_NETWORK_SYNC_EVERY_FRAME -/* - * Dumps all commands that are sent/received to stderr and saves every month. - * This log can become quite large over time; say in the order of two to three - * times the bandwidth used for network games. - */ -//#define DEBUG_DUMP_COMMANDS - -#ifdef DEBUG_DUMP_COMMANDS -void CDECL debug_dump_commands(const char *s, ...); -#endif /* DEBUG_DUMP_COMMANDS */ - // In theory sending 1 of the 2 seeds is enough to check for desyncs // so in theory, this next define can be left off. //#define NETWORK_SEND_DOUBLE_SEED diff --git a/src/network/network_data.cpp b/src/network/network_data.cpp index 28d6c09842..33e594256f 100644 --- a/src/network/network_data.cpp +++ b/src/network/network_data.cpp @@ -10,6 +10,7 @@ #include "../callback_table.h" #include "../core/alloc_func.hpp" #include "../string_func.h" +#include "../date_func.h" // Add a command to the local command queue void NetworkAddCommandQueue(NetworkTCPSocketHandler *cs, CommandPacket *cp) @@ -99,11 +100,7 @@ void NetworkExecuteCommand(CommandPacket *cp) cp->callback = 0; } -#ifdef DEBUG_DUMP_COMMANDS - extern Date _date; - extern DateFract _date_fract; - debug_dump_commands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->player, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text); -#endif /* DUMP_COMMANDS */ + DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->player, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text); DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND, cp->my_cmd); } diff --git a/src/openttd.cpp b/src/openttd.cpp index ab8e81c2aa..7890c3cf63 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -696,12 +696,14 @@ static void MakeNewGameDone() SettingsDisableElrail(_patches.disable_elrails); SetDefaultRailGui(); +#ifdef ENABLE_NETWORK /* We are the server, we start a new player (not dedicated), * so set the default password *if* needed. */ if (_network_server && !StrEmpty(_network_default_company_pass)) { char *password = _network_default_company_pass; NetworkChangeCompanyPassword(1, &password); } +#endif /* ENABLE_NETWORK */ MarkWholeScreenDirty(); } diff --git a/src/players.cpp b/src/players.cpp index f886e287ae..3945b2424d 100644 --- a/src/players.cpp +++ b/src/players.cpp @@ -811,10 +811,12 @@ CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (_local_player != _network_playas && _network_playas == p->index) { assert(_local_player == PLAYER_SPECTATOR); SetLocalPlayer(p->index); +#ifdef ENABLE_NETWORK if (!StrEmpty(_network_default_company_pass)) { char *password = _network_default_company_pass; NetworkChangeCompanyPassword(1, &password); } +#endif /* ENABLE_NETWORK */ MarkWholeScreenDirty(); } diff --git a/src/saveload.cpp b/src/saveload.cpp index cf34fbcb49..0a627a0dd2 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -1655,9 +1655,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) } } else { /* LOAD game */ assert(mode == SL_LOAD); - #ifdef DEBUG_DUMP_COMMANDS - debug_dump_commands("ddc:load:%s\n", filename); - #endif /* DUMP_COMMANDS */ + DebugDumpCommands("ddc:load:%s\n", filename); if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index cf0e9971d5..f52478c5d0 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -11,6 +11,7 @@ #include "../variables.h" #include "../blitter/factory.hpp" #include "../network/network.h" +#include "../core/math_func.hpp" #include "sdl_v.h" #include