summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ai/ai_scanner.cpp4
-rw-r--r--src/company_cmd.cpp2
-rw-r--r--src/debug.cpp6
-rw-r--r--src/game/game_scanner.cpp4
-rw-r--r--src/gamelog.cpp2
-rw-r--r--src/genworld.cpp3
-rw-r--r--src/misc_gui.cpp2
-rw-r--r--src/network/network.cpp13
-rw-r--r--src/network/network_chat_gui.cpp2
-rw-r--r--src/network/network_client.cpp4
-rw-r--r--src/network/network_gui.cpp2
-rw-r--r--src/network/network_udp.cpp2
-rw-r--r--src/newgrf_gui.cpp2
-rw-r--r--src/openttd.cpp10
-rw-r--r--src/os/unix/unix.cpp5
-rw-r--r--src/saveload/saveload.cpp2
-rw-r--r--src/screenshot.cpp6
-rw-r--r--src/script/api/script_admin.cpp2
-rw-r--r--src/script/api/script_controller.cpp12
-rw-r--r--src/script/script_config.cpp3
-rw-r--r--src/script/script_info.cpp10
-rw-r--r--src/script/script_scanner.cpp2
-rw-r--r--src/settings.cpp12
-rw-r--r--src/strings.cpp4
-rw-r--r--src/video/allegro_v.cpp2
-rw-r--r--src/video/sdl_v.cpp2
26 files changed, 61 insertions, 59 deletions
diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp
index 262b833d7..ad66f03c6 100644
--- a/src/ai/ai_scanner.cpp
+++ b/src/ai/ai_scanner.cpp
@@ -120,7 +120,7 @@ AIInfo *AIScannerInfo::FindInfo(const char *nameParam, int versionParam, bool fo
if (force_exact_match) {
/* Try to find a direct 'name.version' match */
char ai_name_tmp[1024];
- snprintf(ai_name_tmp, sizeof(ai_name_tmp), "%s.%d", ai_name, versionParam);
+ seprintf(ai_name_tmp, lastof(ai_name_tmp), "%s.%d", ai_name, versionParam);
strtolower(ai_name_tmp);
if (this->info_list.find(ai_name_tmp) != this->info_list.end()) return static_cast<AIInfo *>(this->info_list[ai_name_tmp]);
}
@@ -160,7 +160,7 @@ AILibrary *AIScannerLibrary::FindLibrary(const char *library, int version)
{
/* Internally we store libraries as 'library.version' */
char library_name[1024];
- snprintf(library_name, sizeof(library_name), "%s.%d", library, version);
+ seprintf(library_name, lastof(library_name), "%s.%d", library, version);
strtolower(library_name);
/* Check if the library + version exists */
diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp
index 35b87459c..97095d3c9 100644
--- a/src/company_cmd.cpp
+++ b/src/company_cmd.cpp
@@ -1168,7 +1168,7 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u
if (c->name_1 == STR_SV_UNNAMED && c->name == NULL) {
char buf[80];
- snprintf(buf, lengthof(buf), "%s Transport", text);
+ seprintf(buf, lastof(buf), "%s Transport", text);
DoCommand(0, 0, 0, DC_EXEC, CMD_RENAME_COMPANY, buf);
}
}
diff --git a/src/debug.cpp b/src/debug.cpp
index b5d6b97b5..ad99dc38d 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -113,7 +113,7 @@ static void debug_print(const char *dbg, const char *buf)
if (_debug_socket != INVALID_SOCKET) {
char buf2[1024 + 32];
- snprintf(buf2, lengthof(buf2), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
+ seprintf(buf2, lastof(buf2), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
/* Sending out an error when this fails would be nice, however... the error
* would have to be send over this failing socket which won't work. */
send(_debug_socket, buf2, (int)strlen(buf2), 0);
@@ -238,10 +238,10 @@ const char *GetDebugString()
memset(dbgstr, 0, sizeof(dbgstr));
i = debug_level;
- snprintf(dbgstr, sizeof(dbgstr), "%s=%d", i->name, *i->level);
+ seprintf(dbgstr, lastof(dbgstr), "%s=%d", i->name, *i->level);
for (i++; i != endof(debug_level); i++) {
- snprintf(dbgval, sizeof(dbgval), ", %s=%d", i->name, *i->level);
+ seprintf(dbgval, lastof(dbgval), ", %s=%d", i->name, *i->level);
strecat(dbgstr, dbgval, lastof(dbgstr));
}
diff --git a/src/game/game_scanner.cpp b/src/game/game_scanner.cpp
index 5cdb30845..a251f3386 100644
--- a/src/game/game_scanner.cpp
+++ b/src/game/game_scanner.cpp
@@ -61,7 +61,7 @@ GameInfo *GameScannerInfo::FindInfo(const char *nameParam, int versionParam, boo
if (force_exact_match) {
/* Try to find a direct 'name.version' match */
char game_name_tmp[1024];
- snprintf(game_name_tmp, sizeof(game_name_tmp), "%s.%d", game_name, versionParam);
+ seprintf(game_name_tmp, lastof(game_name_tmp), "%s.%d", game_name, versionParam);
strtolower(game_name_tmp);
if (this->info_list.find(game_name_tmp) != this->info_list.end()) return static_cast<GameInfo *>(this->info_list[game_name_tmp]);
}
@@ -101,7 +101,7 @@ GameLibrary *GameScannerLibrary::FindLibrary(const char *library, int version)
{
/* Internally we store libraries as 'library.version' */
char library_name[1024];
- snprintf(library_name, sizeof(library_name), "%s.%d", library, version);
+ seprintf(library_name, lastof(library_name), "%s.%d", library, version);
strtolower(library_name);
/* Check if the library + version exists */
diff --git a/src/gamelog.cpp b/src/gamelog.cpp
index e0853584d..7d6b5dafe 100644
--- a/src/gamelog.cpp
+++ b/src/gamelog.cpp
@@ -189,7 +189,7 @@ void GamelogPrint(GamelogPrintProc *proc)
for (const LoggedAction *la = _gamelog_action; la != laend; la++) {
assert((uint)la->at < GLAT_END);
- snprintf(buf, GAMELOG_BUF_LEN, "Tick %u: %s", (uint)la->tick, la_text[(uint)la->at]);
+ seprintf(buf, lastof(buf), "Tick %u: %s", (uint)la->tick, la_text[(uint)la->at]);
proc(buf);
const LoggedChange *lcend = &la->change[la->changes];
diff --git a/src/genworld.cpp b/src/genworld.cpp
index d90c9ad4d..804e46d75 100644
--- a/src/genworld.cpp
+++ b/src/genworld.cpp
@@ -33,6 +33,7 @@
#include "error.h"
#include "game/game.hpp"
#include "game/game_instance.hpp"
+#include "string_func.h"
#include "safeguards.h"
@@ -202,7 +203,7 @@ static void _GenerateWorld(void *)
if (_debug_desync_level > 0) {
char name[MAX_PATH];
- snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date);
+ seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date);
SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false);
}
} catch (...) {
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
index 61e38b237..52dba71b9 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -211,7 +211,7 @@ public:
/* Location */
char tmp[16];
- snprintf(tmp, lengthof(tmp), "0x%.4X", tile);
+ seprintf(tmp, lastof(tmp), "0x%.4X", tile);
SetDParam(0, TileX(tile));
SetDParam(1, TileY(tile));
SetDParam(2, GetTileZ(tile));
diff --git a/src/network/network.cpp b/src/network/network.cpp
index c22615a95..5eefb850d 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -199,7 +199,7 @@ const char *GenerateCompanyPasswordHash(const char *password, const char *passwo
char salted_password[NETWORK_SERVER_ID_LENGTH];
memset(salted_password, 0, sizeof(salted_password));
- snprintf(salted_password, sizeof(salted_password), "%s", password);
+ seprintf(salted_password, lastof(salted_password), "%s", password);
/* Add the game seed and the server's ID as the salt. */
for (uint i = 0; i < NETWORK_SERVER_ID_LENGTH - 1; i++) {
salted_password[i] ^= password_server_id[i] ^ (password_game_seed >> (i % 32));
@@ -213,8 +213,7 @@ const char *GenerateCompanyPasswordHash(const char *password, const char *passwo
checksum.Append(salted_password, sizeof(salted_password) - 1);
checksum.Finish(digest);
- for (int di = 0; di < 16; di++) sprintf(hashed_password + di * 2, "%02x", digest[di]);
- hashed_password[lengthof(hashed_password) - 1] = '\0';
+ for (int di = 0; di < 16; di++) seprintf(hashed_password + di * 2, lastof(hashed_password), "%02x", digest[di]);
return hashed_password;
}
@@ -703,7 +702,7 @@ void NetworkClientConnectGame(NetworkAddress address, CompanyID join_as, const c
static void NetworkInitGameInfo()
{
if (StrEmpty(_settings_client.network.server_name)) {
- snprintf(_settings_client.network.server_name, sizeof(_settings_client.network.server_name), "Unnamed Server");
+ seprintf(_settings_client.network.server_name, lastof(_settings_client.network.server_name), "Unnamed Server");
}
/* The server is a client too */
@@ -1028,18 +1027,18 @@ static void NetworkGenerateServerId()
char coding_string[NETWORK_NAME_LENGTH];
int di;
- snprintf(coding_string, sizeof(coding_string), "%d%s", (uint)Random(), "OpenTTD Server ID");
+ seprintf(coding_string, lastof(coding_string), "%d%s", (uint)Random(), "OpenTTD Server ID");
/* Generate the MD5 hash */
checksum.Append((const uint8*)coding_string, strlen(coding_string));
checksum.Finish(digest);
for (di = 0; di < 16; ++di) {
- sprintf(hex_output + di * 2, "%02x", digest[di]);
+ seprintf(hex_output + di * 2, lastof(hex_output), "%02x", digest[di]);
}
/* _settings_client.network.network_id is our id */
- snprintf(_settings_client.network.network_id, sizeof(_settings_client.network.network_id), "%s", hex_output);
+ seprintf(_settings_client.network.network_id, lastof(_settings_client.network.network_id), "%s", hex_output);
}
void NetworkStartDebugLog(NetworkAddress address)
diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp
index 2a06082dd..f8a0867f3 100644
--- a/src/network/network_chat_gui.cpp
+++ b/src/network/network_chat_gui.cpp
@@ -428,7 +428,7 @@ struct NetworkChatWindow : public Window {
len = strlen(cur_name);
if (tb_len < len && strncasecmp(cur_name, tb_buf, tb_len) == 0) {
/* Save the data it was before completion */
- if (!second_scan) snprintf(_chat_tab_completion_buf, lengthof(_chat_tab_completion_buf), "%s", tb->buf);
+ if (!second_scan) seprintf(_chat_tab_completion_buf, lastof(_chat_tab_completion_buf), "%s", tb->buf);
_chat_tab_completion_active = true;
/* Change to the found name. Add ': ' if we are at the start of the line (pretty) */
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp
index 10e3695b7..8098c00c2 100644
--- a/src/network/network_client.cpp
+++ b/src/network/network_client.cpp
@@ -958,7 +958,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p)
switch (action) {
case NETWORK_ACTION_CHAT_CLIENT:
/* For speaking to client we need the client-name */
- snprintf(name, sizeof(name), "%s", ci_to->client_name);
+ seprintf(name, lastof(name), "%s", ci_to->client_name);
ci = NetworkClientInfo::GetByClientID(_network_own_client_id);
break;
@@ -979,7 +979,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p)
}
} else {
/* Display message from somebody else */
- snprintf(name, sizeof(name), "%s", ci_to->client_name);
+ seprintf(name, lastof(name), "%s", ci_to->client_name);
ci = ci_to;
}
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index 09c2623e7..0580dc95c 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -756,7 +756,7 @@ public:
case WID_NG_JOIN: // Join Game
if (this->server != NULL) {
- snprintf(_settings_client.network.last_host, sizeof(_settings_client.network.last_host), "%s", this->server->address.GetHostname());
+ seprintf(_settings_client.network.last_host, lastof(_settings_client.network.last_host), "%s", this->server->address.GetHostname());
_settings_client.network.last_port = this->server->address.GetPort();
ShowNetworkLobbyWindow(this->server);
}
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp
index 46d8fddef..731d51ca0 100644
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -384,7 +384,7 @@ void ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(Packet *p, NetworkAd
}
if (item->info.hostname[0] == '\0') {
- snprintf(item->info.hostname, sizeof(item->info.hostname), "%s", client_addr->GetHostname());
+ seprintf(item->info.hostname, lastof(item->info.hostname), "%s", client_addr->GetHostname());
}
if (client_addr->GetAddress()->ss_family == AF_INET6) {
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 2ca944c04..9cbbded69 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -90,7 +90,7 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint
/* Prepare and draw GRF ID */
char buff[256];
- snprintf(buff, lengthof(buff), "%08X", BSWAP32(c->ident.grfid));
+ seprintf(buff, lastof(buff), "%08X", BSWAP32(c->ident.grfid));
SetDParamStr(0, buff);
y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_GRF_ID);
diff --git a/src/openttd.cpp b/src/openttd.cpp
index f3c62ba8e..4dcd49fbf 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -1090,7 +1090,7 @@ void SwitchToMode(SwitchMode new_mode)
case SM_NEWGAME: // New Game --> 'Random game'
#ifdef ENABLE_NETWORK
if (_network_server) {
- snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "Random Map");
+ seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "Random Map");
}
#endif /* ENABLE_NETWORK */
MakeNewGame(false, new_mode == SM_NEWGAME);
@@ -1117,7 +1117,7 @@ void SwitchToMode(SwitchMode new_mode)
DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE);
#ifdef ENABLE_NETWORK
if (_network_server) {
- snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title);
+ seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "%s (Loaded game)", _file_to_saveload.title);
}
#endif /* ENABLE_NETWORK */
}
@@ -1127,7 +1127,7 @@ void SwitchToMode(SwitchMode new_mode)
case SM_START_HEIGHTMAP: // Load a heightmap and start a new game from it
#ifdef ENABLE_NETWORK
if (_network_server) {
- snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title);
+ seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title);
}
#endif /* ENABLE_NETWORK */
MakeNewGame(true, true);
@@ -1373,7 +1373,7 @@ void StateGameLoop()
if (_debug_desync_level > 2 && _date_fract == 0 && (_date & 0x1F) == 0) {
/* Save the desync savegame if needed. */
char name[MAX_PATH];
- snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date);
+ seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date);
SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false);
}
@@ -1425,7 +1425,7 @@ static void DoAutosave()
static int _autosave_ctr = 0;
/* generate a savegame name and number according to _settings_client.gui.max_num_autosaves */
- snprintf(buf, sizeof(buf), "autosave%d.sav", _autosave_ctr);
+ seprintf(buf, lastof(buf), "autosave%d.sav", _autosave_ctr);
if (++_autosave_ctr >= _settings_client.gui.max_num_autosaves) _autosave_ctr = 0;
}
diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp
index ddbf0fe36..4020aeba2 100644
--- a/src/os/unix/unix.cpp
+++ b/src/os/unix/unix.cpp
@@ -15,6 +15,7 @@
#include "../../crashlog.h"
#include "../../core/random_func.hpp"
#include "../../debug.h"
+#include "../../string_func.h"
#include <dirent.h>
@@ -107,13 +108,13 @@ bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb
#if defined(__MORPHOS__) || defined(__AMIGAOS__)
/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */
if (FiosIsRoot(path)) {
- res = snprintf(filename, lengthof(filename), "%s:%s", path, ent->d_name);
+ res = seprintf(filename, lastof(filename), "%s:%s", path, ent->d_name);
} else // XXX - only next line!
#else
assert(path[strlen(path) - 1] == PATHSEPCHAR);
if (strlen(path) > 2) assert(path[strlen(path) - 2] != PATHSEPCHAR);
#endif
- res = snprintf(filename, lengthof(filename), "%s%s", path, ent->d_name);
+ res = seprintf(filename, lastof(filename), "%s%s", path, ent->d_name);
/* Could we fully concatenate the path and filename? */
if (res >= (int)lengthof(filename) || res < 0) return false;
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 34b396ddc..707c85510 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -2614,7 +2614,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check)
/* loader for this savegame type is not implemented? */
if (fmt->init_load == NULL) {
char err_str[64];
- snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name);
+ seprintf(err_str, lastof(err_str), "Loader for '%s' is not available.", fmt->name);
SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str);
}
diff --git a/src/screenshot.cpp b/src/screenshot.cpp
index 799be36d2..6882e0905 100644
--- a/src/screenshot.cpp
+++ b/src/screenshot.cpp
@@ -718,12 +718,12 @@ static const char *MakeScreenshotName(const char *default_fn, const char *ext, b
/* Add extension to screenshot file */
size_t len = strlen(_screenshot_name);
- snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, ".%s", ext);
+ seprintf(&_screenshot_name[len], lastof(_screenshot_name), ".%s", ext);
const char *screenshot_dir = crashlog ? _personal_dir : FiosGetScreenshotDir();
for (uint serial = 1;; serial++) {
- if (snprintf(_full_screenshot_name, lengthof(_full_screenshot_name), "%s%s", screenshot_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) {
+ if (seprintf(_full_screenshot_name, lastof(_full_screenshot_name), "%s%s", screenshot_dir, _screenshot_name) >= (int)lengthof(_full_screenshot_name)) {
/* We need more characters than MAX_PATH -> end with error */
_full_screenshot_name[0] = '\0';
break;
@@ -731,7 +731,7 @@ static const char *MakeScreenshotName(const char *default_fn, const char *ext, b
if (!generate) break; // allow overwriting of non-automatic filenames
if (!FileExists(_full_screenshot_name)) break;
/* If file exists try another one with same name, but just with a higher index */
- snprintf(&_screenshot_name[len], lengthof(_screenshot_name) - len, "#%u.%s", serial, ext);
+ seprintf(&_screenshot_name[len], lastof(_screenshot_name) - len, "#%u.%s", serial, ext);
}
return _full_screenshot_name;
diff --git a/src/script/api/script_admin.cpp b/src/script/api/script_admin.cpp
index 9027b29a2..a84f999dd 100644
--- a/src/script/api/script_admin.cpp
+++ b/src/script/api/script_admin.cpp
@@ -30,7 +30,7 @@
sq_getinteger(vm, index, &res);
char buf[10];
- snprintf(buf, sizeof(buf), "%d", (int32)res);
+ seprintf(buf, lastof(buf), "%d", (int32)res);
data = buf;
return true;
}
diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp
index 7f8df248d..4c3a5cd6e 100644
--- a/src/script/api/script_controller.cpp
+++ b/src/script/api/script_controller.cpp
@@ -53,7 +53,7 @@
ScriptObject::GetActiveInstance()->Pause();
char log_message[1024];
- snprintf(log_message, sizeof(log_message), "Break: %s", message);
+ seprintf(log_message, lastof(log_message), "Break: %s", message);
ScriptLog::Log(ScriptLog::LOG_SQ_ERROR, log_message);
/* Inform script developer that his script has been paused and
@@ -115,13 +115,13 @@ ScriptController::~ScriptController()
/* Internally we store libraries as 'library.version' */
char library_name[1024];
- snprintf(library_name, sizeof(library_name), "%s.%d", library, version);
+ seprintf(library_name, lastof(library_name), "%s.%d", library, version);
strtolower(library_name);
ScriptInfo *lib = ScriptObject::GetActiveInstance()->FindLibrary(library, version);
if (lib == NULL) {
char error[1024];
- snprintf(error, sizeof(error), "couldn't find library '%s' with version %d", library, version);
+ seprintf(error, lastof(error), "couldn't find library '%s' with version %d", library, version);
throw sq_throwerror(vm, OTTD2SQ(error));
}
@@ -138,7 +138,7 @@ ScriptController::~ScriptController()
int next_number = ++controller->loaded_library_count;
/* Create a new fake internal name */
- snprintf(fake_class, sizeof(fake_class), "_internalNA%d", next_number);
+ seprintf(fake_class, lastof(fake_class), "_internalNA%d", next_number);
/* Load the library in a 'fake' namespace, so we can link it to the name the user requested */
sq_pushroottable(vm);
@@ -147,7 +147,7 @@ ScriptController::~ScriptController()
/* Load the library */
if (!engine->LoadScript(vm, lib->GetMainScript(), false)) {
char error[1024];
- snprintf(error, sizeof(error), "there was a compile error when importing '%s' version %d", library, version);
+ seprintf(error, lastof(error), "there was a compile error when importing '%s' version %d", library, version);
throw sq_throwerror(vm, OTTD2SQ(error));
}
/* Create the fake class */
@@ -166,7 +166,7 @@ ScriptController::~ScriptController()
sq_pushstring(vm, OTTD2SQ(lib->GetInstanceName()), -1);
if (SQ_FAILED(sq_get(vm, -2))) {
char error[1024];
- snprintf(error, sizeof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version);
+ seprintf(error, lastof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version);
throw sq_throwerror(vm, OTTD2SQ(error));
}
HSQOBJECT obj;
diff --git a/src/script/script_config.cpp b/src/script/script_config.cpp
index 7842a3a9d..48a1459d9 100644
--- a/src/script/script_config.cpp
+++ b/src/script/script_config.cpp
@@ -14,6 +14,7 @@
#include "../core/random_func.hpp"
#include "script_info.hpp"
#include "../textfile_gui.h"
+#include "../string_func.h"
#include "../safeguards.h"
@@ -188,7 +189,7 @@ void ScriptConfig::SettingsToString(char *string, size_t size) const
string[0] = '\0';
for (SettingValueList::const_iterator it = this->settings.begin(); it != this->settings.end(); it++) {
char no[10];
- snprintf(no, sizeof(no), "%d", (*it).second);
+ seprintf(no, lastof(no), "%d", (*it).second);
/* Check if the string would fit in the destination */
size_t needed_size = strlen((*it).first) + 1 + strlen(no) + 1;
diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp
index f3ea1747b..27bcec1eb 100644
--- a/src/script/script_info.cpp
+++ b/src/script/script_info.cpp
@@ -50,7 +50,7 @@ bool ScriptInfo::CheckMethod(const char *name) const
{
if (!this->engine->MethodExists(*this->SQ_instance, name)) {
char error[1024];
- snprintf(error, sizeof(error), "your info.nut/library.nut doesn't have the method '%s'", name);
+ seprintf(error, lastof(error), "your info.nut/library.nut doesn't have the method '%s'", name);
this->engine->ThrowError(error);
return false;
}
@@ -195,7 +195,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
items |= 0x100;
} else {
char error[1024];
- snprintf(error, sizeof(error), "unknown setting property '%s'", key);
+ seprintf(error, lastof(error), "unknown setting property '%s'", key);
this->engine->ThrowError(error);
return SQ_ERROR;
}
@@ -208,7 +208,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
* be set for the same config item. */
if ((items & 0x200) != 0 && (config.flags & SCRIPTCONFIG_RANDOM) != 0) {
char error[1024];
- snprintf(error, sizeof(error), "Setting both random_deviation and SCRIPTCONFIG_RANDOM is not allowed");
+ seprintf(error, lastof(error), "Setting both random_deviation and SCRIPTCONFIG_RANDOM is not allowed");
this->engine->ThrowError(error);
return SQ_ERROR;
}
@@ -219,7 +219,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
uint mask = (config.flags & SCRIPTCONFIG_BOOLEAN) ? 0x1F3 : 0x1FF;
if (items != mask) {
char error[1024];
- snprintf(error, sizeof(error), "please define all properties of a setting (min/max not allowed for booleans)");
+ seprintf(error, lastof(error), "please define all properties of a setting (min/max not allowed for booleans)");
this->engine->ThrowError(error);
return SQ_ERROR;
}
@@ -242,7 +242,7 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
if (config == NULL) {
char error[1024];
- snprintf(error, sizeof(error), "Trying to add labels for non-defined setting '%s'", setting_name);
+ seprintf(error, lastof(error), "Trying to add labels for non-defined setting '%s'", setting_name);
this->engine->ThrowError(error);
return SQ_ERROR;
}
diff --git a/src/script/script_scanner.cpp b/src/script/script_scanner.cpp
index b90f63cd8..578068592 100644
--- a/src/script/script_scanner.cpp
+++ b/src/script/script_scanner.cpp
@@ -114,7 +114,7 @@ void ScriptScanner::RegisterScript(ScriptInfo *info)
strtolower(script_original_name);
char script_name[1024];
- snprintf(script_name, sizeof(script_name), "%s.%d", script_original_name, info->GetVersion());
+ seprintf(script_name, lastof(script_name), "%s.%d", script_original_name, info->GetVersion());
/* Check if GetShortName follows the rules */
if (strlen(info->GetShortName()) != 4) {
diff --git a/src/settings.cpp b/src/settings.cpp
index 1a015c43c..c7d9e2b32 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1537,7 +1537,7 @@ static void SaveVersionInConfig(IniFile *ini)
IniGroup *group = ini->GetGroup("version");
char version[9];
- snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version);
+ seprintf(version, lastof(version), "%08X", _openttd_newgrf_version);
const char * const versions[][2] = {
{ "version_string", _openttd_revision },
@@ -2040,9 +2040,9 @@ void IConsoleGetSetting(const char *name, bool force_newgame)
IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s'", name, (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr);
} else {
if (sd->desc.cmd == SDT_BOOLX) {
- snprintf(value, sizeof(value), (*(const bool*)ptr != 0) ? "on" : "off");
+ seprintf(value, lastof(value), (*(const bool*)ptr != 0) ? "on" : "off");
} else {
- snprintf(value, sizeof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv));
+ seprintf(value, lastof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv));
}
IConsolePrintF(CC_WARNING, "Current value for '%s' is: '%s' (min: %s%d, max: %u)",
@@ -2066,11 +2066,11 @@ void IConsoleListSettings(const char *prefilter)
const void *ptr = GetVariableAddress(&GetGameSettings(), &sd->save);
if (sd->desc.cmd == SDT_BOOLX) {
- snprintf(value, lengthof(value), (*(const bool *)ptr != 0) ? "on" : "off");
+ seprintf(value, lastof(value), (*(const bool *)ptr != 0) ? "on" : "off");
} else if (sd->desc.cmd == SDT_STRING) {
- snprintf(value, sizeof(value), "%s", (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr);
+ seprintf(value, lastof(value), "%s", (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ) ? *(const char * const *)ptr : (const char *)ptr);
} else {
- snprintf(value, lengthof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv));
+ seprintf(value, lastof(value), sd->desc.min < 0 ? "%d" : "%u", (int32)ReadValue(ptr, sd->save.conv));
}
IConsolePrintF(CC_DEFAULT, "%s = %s", sd->desc.name, value);
}
diff --git a/src/strings.cpp b/src/strings.cpp
index 64692ef00..23a8804ab 100644
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -433,8 +433,8 @@ static char *FormatTinyOrISODate(char *buff, Date date, StringID str, const char
char day[3];
char month[3];
/* We want to zero-pad the days and months */
- snprintf(day, lengthof(day), "%02i", ymd.day);
- snprintf(month, lengthof(month), "%02i", ymd.month + 1);
+ seprintf(day, lastof(day), "%02i", ymd.day);
+ seprintf(month, lastof(month), "%02i", ymd.month + 1);
int64 args[] = {(int64)(size_t)day, (int64)(size_t)month, ymd.year};
StringParameters tmp_params(args);
diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp
index e7c7b828b..c75bcfb2e 100644
--- a/src/video/allegro_v.cpp
+++ b/src/video/allegro_v.cpp
@@ -224,7 +224,7 @@ static bool CreateMainSurface(uint w, uint h)
InitPalette();
char caption[32];
- snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision);
+ seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision);
set_window_title(caption);
enable_hardware_cursor();
diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp
index ff0fffd9c..6ec5269d5 100644
--- a/src/video/sdl_v.cpp
+++ b/src/video/sdl_v.cpp
@@ -418,7 +418,7 @@ bool VideoDriver_SDL::CreateMainSurface(uint w, uint h)
NOT_REACHED();
}
- snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision);
+ seprintf(caption, lastof(caption), "OpenTTD %s", _openttd_revision);
SDL_CALL SDL_WM_SetCaption(caption, caption);
GameSizeChanged();