GunChleoc has proposed merging lp:~widelands-dev/widelands/boost_format into lp:widelands.
Requested reviews: Widelands Developers (widelands-dev) For more details, see: https://code.launchpad.net/~widelands-dev/widelands/boost_format/+merge/229366 Replaced most instances of snprintf with boost::format or std::to_string. Fixed a bug in txts/README.lua -- https://code.launchpad.net/~widelands-dev/widelands/boost_format/+merge/229366 Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/boost_format into lp:widelands.
=== modified file 'src/editor/tools/editor_info_tool.cc' --- src/editor/tools/editor_info_tool.cc 2014-07-14 10:45:44 +0000 +++ src/editor/tools/editor_info_tool.cc 2014-08-03 18:56:48 +0000 @@ -78,10 +78,9 @@ buf += std::string("• ") + (boost::format(_("Caps:%s")) % temp).str() + "\n"; if (f.get_owned_by() > 0) { - buf += std::string("• "); - char buf1[1024]; - snprintf(buf1, sizeof(buf1), _("Owned by: %u"), f.get_owned_by()); - buf += std::string(buf1) + "\n"; + buf += std::string("• ") + + (boost::format(_("Owned by: Player %u")) + % static_cast<unsigned int>(f.get_owned_by())).str() + "\n"; } else { buf += std::string("• ") + _("Owned by: —") + "\n"; } === modified file 'src/editor/ui_menus/editor_main_menu_load_map.cc' --- src/editor/ui_menus/editor_main_menu_load_map.cc 2014-07-20 07:43:07 +0000 +++ src/editor/ui_menus/editor_main_menu_load_map.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include <cstdio> #include <memory> +#include <string> #include <boost/format.hpp> @@ -169,12 +170,11 @@ m_descr ->set_text (_(map.get_description()) + (map.get_hint().empty() ? "" : (std::string("\n") + _(map.get_hint())))); - char buf[200]; - sprintf(buf, "%i", map.get_nrplayers()); - m_nrplayers->set_text(buf); + m_nrplayers->set_text(std::to_string(static_cast<unsigned int>(map.get_nrplayers()))); - sprintf(buf, "%ix%i", map.get_width(), map.get_height()); - m_size ->set_text(buf); + m_size ->set_text((boost::format(_("%1$ix%2$i")) + % static_cast<int>(map.get_width()) + % static_cast<int>(map.get_height())).str().c_str()); } else { m_name ->set_text(""); m_author ->set_text(""); === modified file 'src/editor/ui_menus/editor_main_menu_map_options.cc' --- src/editor/ui_menus/editor_main_menu_map_options.cc 2014-07-14 10:45:44 +0000 +++ src/editor/ui_menus/editor_main_menu_map_options.cc 2014-08-03 18:56:48 +0000 @@ -20,6 +20,9 @@ #include "editor/ui_menus/editor_main_menu_map_options.h" #include <cstdio> +#include <string> + +#include <boost/format.hpp> #include "base/i18n.h" #include "editor/editorinteractive.h" @@ -113,13 +116,12 @@ void Main_Menu_Map_Options::update() { const Widelands::Map & map = eia().egbase().map(); - char buf[200]; - sprintf(buf, "%ix%i", map.get_width(), map.get_height()); - m_size->set_text(buf); + m_size ->set_text((boost::format(_("%1$ix%2$i")) + % static_cast<int>(map.get_width()) + % static_cast<int>(map.get_height())).str().c_str()); m_author->setText(map.get_author()); m_name ->setText(map.get_name()); - sprintf(buf, "%i", map.get_nrplayers()); - m_nrplayers->set_text(buf); + m_nrplayers->set_text(std::to_string(static_cast<unsigned int>(map.get_nrplayers()))); m_descr ->set_text(map.get_description()); } === modified file 'src/editor/ui_menus/editor_main_menu_new_map.cc' --- src/editor/ui_menus/editor_main_menu_new_map.cc 2014-06-18 13:20:33 +0000 +++ src/editor/ui_menus/editor_main_menu_new_map.cc 2014-08-03 18:56:48 +0000 @@ -24,6 +24,8 @@ #include <string> #include <vector> +#include <boost/format.hpp> + #include "base/i18n.h" #include "editor/editorinteractive.h" #include "graphic/graphic.h" @@ -45,7 +47,6 @@ (parent.get_w() - 140) / 2, (parent.get_h() - 150) / 2, 140, 150, _("New Map")) { - char buffer[250]; int32_t const offsx = 5; int32_t const offsy = 30; int32_t const spacing = 5; @@ -59,9 +60,10 @@ for (m_w = 0; Widelands::MAP_DIMENSIONS[m_w] < map_extent.w; ++m_w) {} for (m_h = 0; Widelands::MAP_DIMENSIONS[m_h] < map_extent.h; ++m_h) {} } - snprintf - (buffer, sizeof(buffer), _("Width: %u"), Widelands::MAP_DIMENSIONS[m_w]); - m_width = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + + m_width = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Width: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_w])).str().c_str()); UI::Button * widthupbtn = new UI::Button (this, "width_up", @@ -79,10 +81,9 @@ posy += 20 + spacing + spacing; - snprintf - (buffer, sizeof(buffer), - _("Height: %u"), Widelands::MAP_DIMENSIONS[m_h]); - m_height = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_height = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Height: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_h])).str().c_str()); UI::Button * heightupbtn = new UI::Button (this, "height_up", @@ -124,19 +125,14 @@ assert(false); } - char buffer[200]; if (m_w < 0) m_w = 0; if (m_w >= NUMBER_OF_MAP_DIMENSIONS) m_w = NUMBER_OF_MAP_DIMENSIONS - 1; if (m_h < 0) m_h = 0; if (m_h >= NUMBER_OF_MAP_DIMENSIONS) m_h = NUMBER_OF_MAP_DIMENSIONS - 1; - snprintf - (buffer, sizeof(buffer), - _("Width: %u"), Widelands::MAP_DIMENSIONS[m_w]); - m_width ->set_text(buffer); - snprintf - (buffer, sizeof(buffer), - _("Height: %u"), Widelands::MAP_DIMENSIONS[m_h]); - m_height->set_text(buffer); + m_width ->set_text((boost::format(_("Width: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_w])).str()); + m_height->set_text((boost::format(_("Height: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_h])).str()); } void Main_Menu_New_Map::clicked_create_map() { === modified file 'src/editor/ui_menus/editor_main_menu_random_map.cc' --- src/editor/ui_menus/editor_main_menu_random_map.cc 2014-07-05 14:22:44 +0000 +++ src/editor/ui_menus/editor_main_menu_random_map.cc 2014-08-03 18:56:48 +0000 @@ -24,6 +24,8 @@ #include <string> #include <vector> +#include <boost/format.hpp> + #include "base/i18n.h" #include "editor/editorinteractive.h" #include "editor/map_generator.h" @@ -58,7 +60,6 @@ {"blackland", _("Black")}, }), m_current_world(0) { - char buffer[250]; int32_t const offsx = 5; int32_t const offsy = 5; int32_t const spacing = 5; @@ -88,9 +89,7 @@ rng.seed(clock()); rng.rand(); m_mapNumber = rng.rand(); - snprintf - (buffer, sizeof(buffer), "%u", static_cast<unsigned int>(m_mapNumber)); - m_nrEditbox->setText(buffer); + m_nrEditbox->setText(std::to_string(static_cast<unsigned int>(m_mapNumber))); posy += height + spacing + spacing + spacing; @@ -121,19 +120,18 @@ widthdownbtn->sigclicked.connect (boost::bind(&Main_Menu_New_Random_Map::button_clicked, this, MAP_W_MINUS)); - snprintf - (buffer, sizeof(buffer), _("Width: %u"), Widelands::MAP_DIMENSIONS[m_w]); m_width = - new UI::Textarea(this, posx + spacing + 20, posy, buffer); + new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Width: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_w])).str().c_str()); posy += 20 + spacing + spacing; // ---------- Height ---------- - snprintf - (buffer, sizeof(buffer), - _("Height: %u"), Widelands::MAP_DIMENSIONS[m_h]); - m_height = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_height = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Height: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_h])).str().c_str()); UI::Button * heightupbtn = new UI::Button (this, "height_up", @@ -172,8 +170,9 @@ waterdownbtn->sigclicked.connect (boost::bind(&Main_Menu_New_Random_Map::button_clicked, this, WATER_MINUS)); - snprintf(buffer, sizeof(buffer), _("Water: %u %%"), m_waterval); - m_water = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_water = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Water: %i %%")) + % static_cast<int>(m_waterval)).str().c_str()); posy += 20 + spacing + spacing; @@ -197,9 +196,9 @@ landdownbtn->sigclicked.connect (boost::bind(&Main_Menu_New_Random_Map::button_clicked, this, LAND_MINUS)); - snprintf - (buffer, sizeof(buffer), _("Land: %u %%"), m_landval); - m_land = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_land = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Land: %i %%")) + % static_cast<int>(m_landval)).str().c_str()); posy += 20 + spacing + spacing; @@ -223,9 +222,9 @@ wastelanddownbtn->sigclicked.connect (boost::bind(&Main_Menu_New_Random_Map::button_clicked, this, WASTE_MINUS)); - snprintf - (buffer, sizeof(buffer), _("Wasteland: %u %%"), m_wastelandval); - m_wasteland = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_wasteland = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Wasteland: %i %%")) + % static_cast<int>(m_wastelandval)).str().c_str()); posy += 20 + spacing + spacing; @@ -233,10 +232,9 @@ // ---------- Mountains ----------- - snprintf - (buffer, sizeof(buffer), _("Mountains: %u %%"), - 100 - m_waterval - m_landval); - m_mountains = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_mountains = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Mountains: %i %%")) + % static_cast<int>(100 - m_waterval - m_landval)).str().c_str()); posy += 20 + spacing + spacing; @@ -322,8 +320,9 @@ playerdownbtn->sigclicked.connect (boost::bind(&Main_Menu_New_Random_Map::button_clicked, this, PLAYER_MINUS)); - snprintf(buffer, sizeof(buffer), _("Players: %u"), m_pn); - m_players = new UI::Textarea(this, posx + spacing + 20, posy, buffer); + m_players = new UI::Textarea(this, posx + spacing + 20, posy, + (boost::format(_("Players: %u")) + % static_cast<unsigned int>(m_pn)).str().c_str()); posy += 20 + spacing + spacing; @@ -417,35 +416,31 @@ assert(false); } - char buffer[200]; if (m_w < 0) m_w = 0; if (m_w >= NUMBER_OF_MAP_DIMENSIONS) m_w = NUMBER_OF_MAP_DIMENSIONS - 1; if (m_h < 0) m_h = 0; if (m_h >= NUMBER_OF_MAP_DIMENSIONS) m_h = NUMBER_OF_MAP_DIMENSIONS - 1; - snprintf - (buffer, sizeof(buffer), - _("Width: %u"), Widelands::MAP_DIMENSIONS[m_w]); - m_width ->set_text(buffer); - snprintf - (buffer, sizeof(buffer), - _("Height: %u"), Widelands::MAP_DIMENSIONS[m_h]); - m_height->set_text(buffer); - - snprintf - (buffer, sizeof(buffer), _("Water: %u %%"), m_waterval); - m_water->set_text(buffer); - snprintf - (buffer, sizeof(buffer), _("Land: %u %%"), m_landval); - m_land->set_text(buffer); - snprintf - (buffer, sizeof(buffer), _("Wasteland: %u %%"), m_wastelandval); - m_wasteland->set_text(buffer); - snprintf - (buffer, sizeof(buffer), _("Mountains: %u %%"), - 100 - m_waterval - m_landval); - m_mountains->set_text(buffer); - snprintf(buffer, sizeof(buffer), _("Players: %u"), m_pn); - m_players->set_text(buffer); + + m_width ->set_text((boost::format(_("Width: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_w])).str().c_str()); + + m_height->set_text((boost::format(_("Height: %u")) + % static_cast<unsigned int>(Widelands::MAP_DIMENSIONS[m_h])).str().c_str()); + + m_water->set_text((boost::format(_("Water: %i %%")) + % static_cast<int>(m_waterval)).str().c_str()); + + m_land->set_text((boost::format(_("Land: %i %%")) + % static_cast<int>(m_landval)).str().c_str()); + + m_wasteland->set_text((boost::format(_("Wasteland: %i %%")) + % static_cast<int>(m_wastelandval)).str().c_str()); + + m_mountains->set_text((boost::format(_("Mountains: %i %%")) + % static_cast<int>(100 - m_waterval - m_landval)).str().c_str()); + + m_players->set_text((boost::format(_("Players: %u")) + % static_cast<unsigned int>(m_pn)).str().c_str()); nr_edit_box_changed(); // Update ID String } === modified file 'src/editor/ui_menus/editor_main_menu_save_map.cc' --- src/editor/ui_menus/editor_main_menu_save_map.cc 2014-07-20 07:43:07 +0000 +++ src/editor/ui_menus/editor_main_menu_save_map.cc 2014-08-03 18:56:48 +0000 @@ -230,12 +230,11 @@ m_author->set_text(map.get_author ()); m_descr ->set_text(map.get_description()); - char buf[200]; - sprintf(buf, "%i", map.get_nrplayers()); - m_nrplayers->set_text(buf); + m_nrplayers->set_text(std::to_string(static_cast<unsigned int>(map.get_nrplayers()))); - sprintf(buf, "%ix%i", map.get_width(), map.get_height()); - m_size->set_text(buf); + m_size->set_text((boost::format(_("%1$ix%2$i")) + % static_cast<int>(map.get_width()) + % static_cast<int>(map.get_height())).str().c_str()); } else { m_name ->set_text(FileSystem::FS_Filename(name)); m_author ->set_text(""); === modified file 'src/editor/ui_menus/editor_tool_change_height_options_menu.cc' --- src/editor/ui_menus/editor_tool_change_height_options_menu.cc 2014-07-26 16:37:37 +0000 +++ src/editor/ui_menus/editor_tool_change_height_options_menu.cc 2014-08-03 18:56:48 +0000 @@ -20,6 +20,7 @@ #include "editor/ui_menus/editor_tool_change_height_options_menu.h" #include <cstdio> +#include <string> #include "base/i18n.h" #include "editor/editorinteractive.h" @@ -190,9 +191,8 @@ /// Update all the textareas, so that they represent the correct values. void Editor_Tool_Change_Height_Options_Menu::update() { - char buf[250]; - sprintf(buf, "%i", m_increase_tool.get_change_by()); - m_change_by_value.set_text(buf); - sprintf(buf, "%i", m_increase_tool.set_tool().get_interval().min); - m_set_to_value.set_text(buf); + m_change_by_value.set_text(std::to_string(m_increase_tool.get_change_by())); + + m_set_to_value.set_text(std::to_string( + static_cast<unsigned int>(m_increase_tool.set_tool().get_interval().min))); } === modified file 'src/editor/ui_menus/editor_tool_change_resources_options_menu.cc' --- src/editor/ui_menus/editor_tool_change_resources_options_menu.cc 2014-07-14 10:45:44 +0000 +++ src/editor/ui_menus/editor_tool_change_resources_options_menu.cc 2014-08-03 18:56:48 +0000 @@ -20,6 +20,7 @@ #include "editor/ui_menus/editor_tool_change_resources_options_menu.h" #include <cstdio> +#include <string> #include "base/i18n.h" #include "editor/editorinteractive.h" @@ -226,11 +227,11 @@ * Update all the textareas, so that they represent the correct values */ void Editor_Tool_Change_Resources_Options_Menu::update() { - char buf[250]; - sprintf(buf, "%i", m_increase_tool.get_change_by()); - m_change_by_value.set_text(buf); - sprintf(buf, "%i", m_increase_tool.set_tool().get_set_to()); - m_set_to_value.set_text(buf); + + m_change_by_value.set_text(std::to_string(m_increase_tool.get_change_by())); + + m_set_to_value.set_text(std::to_string( + static_cast<unsigned int>(m_increase_tool.set_tool().get_set_to()))); m_cur_selection.set_text (ref_cast<Editor_Interactive, UI::Panel>(*get_parent()).egbase() === modified file 'src/editor/ui_menus/editor_tool_noise_height_options_menu.cc' --- src/editor/ui_menus/editor_tool_noise_height_options_menu.cc 2014-07-26 16:37:37 +0000 +++ src/editor/ui_menus/editor_tool_noise_height_options_menu.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <cstdio> +#include <boost/format.hpp> + #include "base/i18n.h" #include "editor/editorinteractive.h" #include "editor/tools/editor_decrease_height_tool.h" @@ -141,17 +143,16 @@ * Update all textareas */ void Editor_Tool_Noise_Height_Options_Menu::update() { - char buffer[200]; const Widelands::HeightInterval height_interval = m_noise_tool.get_interval(); - snprintf(buffer, sizeof(buffer), _("Minimum: %u"), height_interval.min); - m_lower_label.set_text(buffer); - snprintf(buffer, sizeof(buffer), _("Maximum: %u"), height_interval.max); - m_upper_label.set_text(buffer); - - snprintf - (buffer, sizeof(buffer), - _("Set value: %u"), m_noise_tool.set_tool().get_interval().min); - m_set_label.set_text(buffer); + + m_lower_label.set_text((boost::format(_("Minimum: %u")) + % static_cast<unsigned int>(height_interval.min)).str()); + + m_upper_label.set_text((boost::format(_("Maximum: %u")) + % static_cast<unsigned int>(height_interval.max)).str()); + + m_set_label.set_text((boost::format(_("Set value: %u")) + % static_cast<unsigned int>(m_noise_tool.set_tool().get_interval().min)).str()); select_correct_tool(); } === modified file 'src/editor/ui_menus/editor_toolsize_menu.cc' --- src/editor/ui_menus/editor_toolsize_menu.cc 2014-07-14 10:45:44 +0000 +++ src/editor/ui_menus/editor_toolsize_menu.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <cstdio> +#include <boost/format.hpp> + #include "base/i18n.h" #include "editor/editorinteractive.h" #include "editor/tools/editor_tool.h" @@ -71,9 +73,8 @@ eia().set_sel_radius(val); m_decrease.set_enabled(0 < val); m_increase.set_enabled (val < MAX_TOOL_AREA); - char buffer[250]; - snprintf(buffer, sizeof(buffer), _("Current Size: %u"), val + 1); - m_textarea.set_text(buffer); + m_textarea.set_text((boost::format(_("Current Size: %u")) + % static_cast<unsigned int>(val + 1)).str()); } === modified file 'src/io/dedicated_log.cc' --- src/io/dedicated_log.cc 2014-06-08 21:47:45 +0000 +++ src/io/dedicated_log.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "io/dedicated_log.h" +#include <string> + #include <boost/format.hpp> #include "base/i18n.h" @@ -165,13 +167,13 @@ temp += "<tr><td class=\"infoname\">Server MOTD</td><td class=\"info\">" + d_motd + "</td></tr>\n"; temp += "<tr><td class=\"infoname\">Started on</td><td class=\"info\">" + d_start + "</td></tr>\n"; temp += "<tr><td class=\"infoname\">Logins</td><td class=\"info\">"; - temp += (boost::format("%u") % d_logins).str() + "</td></tr>\n"; + temp += std::to_string(d_logins) + "</td></tr>\n"; temp += "<tr><td class=\"infoname\">Logouts</td><td class=\"info\">"; - temp += (boost::format("%u") % d_logouts).str() + "</td></tr>\n"; + temp += std::to_string(d_logouts) + "</td></tr>\n"; temp += "<tr><td class=\"infoname\">Chat messages</td><td class=\"info\">"; - temp += (boost::format("%u") % d_chatmessages).str() + "</td></tr>\n"; + temp += std::to_string(d_chatmessages) + "</td></tr>\n"; temp += "<tr><td class=\"infoname\">Games started</td><td class=\"info\">"; - temp += (boost::format("%u") % d_games.size()).str() + "</td></tr>\n"; + temp += std::to_string(d_games.size()) + "</td></tr>\n"; if (!d_games.empty()) { // Games information temp += "</table><br><table class=\"infogames\">\n"; === modified file 'src/io/filesystem/zip_filesystem.cc' --- src/io/filesystem/zip_filesystem.cc 2014-07-26 10:43:23 +0000 +++ src/io/filesystem/zip_filesystem.cc 2014-08-03 18:56:48 +0000 @@ -27,6 +27,8 @@ #include <cstring> #include <string> +#include <boost/format.hpp> + #include "base/wexception.h" #include "io/filesystem/filesystem_exceptions.h" #include "io/filesystem/zip_exceptions.h" @@ -327,13 +329,11 @@ break; if (len < 0) { unzCloseCurrentFile(m_unzipfile); - char buf[200]; - snprintf(buf, sizeof(buf), "read error %i", len); throw ZipOperation_error ("ZipFilesystem::Load", fname, m_zipfilename, - buf); + (boost::format("read error %i") % len).str().c_str()); } totallen += len; === modified file 'src/logic/critter.cc' --- src/logic/critter.cc 2014-07-28 17:12:07 +0000 +++ src/logic/critter.cc 2014-08-03 18:56:48 +0000 @@ -21,7 +21,9 @@ #include <cstdio> #include <memory> +#include <string> +#include <boost/format.hpp> #include <stdint.h> #include "base/wexception.h" @@ -48,9 +50,7 @@ std::vector<std::string> section_to_strings(Section* section) { std::vector<std::string> return_value; for (uint32_t idx = 0;; ++idx) { - char buffer[32]; - snprintf(buffer, sizeof(buffer), "%i", idx); - char const* const string = section->get_string(buffer, nullptr); + char const* const string = section->get_string(std::to_string(idx).c_str(), nullptr); if (!string) break; return_value.emplace_back(string); @@ -154,8 +154,7 @@ add_attributes(attributes, std::set<uint32_t>()); } - char defaultpics[256]; - snprintf(defaultpics, sizeof(defaultpics), "%s_walk_!!_??.png", _name); + const std::string defaultpics = (boost::format("%s_walk_!!_??.png") % _name).str().c_str(); m_walk_anims.parse(*this, directory, prof, "walk", false, defaultpics); while (Section::Value const * const v = global_s.get_next_val("program")) { === modified file 'src/logic/militarysite.cc' --- src/logic/militarysite.cc 2014-08-02 10:14:12 +0000 +++ src/logic/militarysite.cc 2014-08-03 18:56:48 +0000 @@ -137,12 +137,12 @@ /** TRANSLATORS: %3% is the maximum number of soldier slots in the building */ *s = (boost::format(ngettext("%1%(+%2%) soldier (+%3%)", "%1%(+%2%) soldiers (+%3%)", stationed)) - % stationed % present % (stationed - present) % (m_capacity - stationed)).str(); + % present % (stationed - present) % (m_capacity - stationed)).str(); } else { /** TRANSLATORS: %1% is the number of soldiers the plural refers to */ /** TRANSLATORS: %2% are currently open soldier slots in the building */ *s += (boost::format(ngettext("%1%(+%2%) soldier", "%1%(+%2%) soldiers", stationed)) - % stationed % present).str(); + % present % (stationed - present)).str(); } } } === modified file 'src/logic/single_player_game_settings_provider.cc' --- src/logic/single_player_game_settings_provider.cc 2014-07-20 07:45:17 +0000 +++ src/logic/single_player_game_settings_provider.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "logic/single_player_game_settings_provider.h" +#include <boost/format.hpp> + #include "ai/computer_player.h" #include "logic/tribe.h" @@ -82,9 +84,8 @@ player.tribe = s.tribes.at(0).name; player.random_tribe = false; player.initialization_index = 0; - char buf[200]; - snprintf(buf, sizeof(buf), "%s %u", _("Player"), oldplayers + 1); - player.name = buf; + player.name = (boost::format(_("Player %u")) + % static_cast<unsigned int>(oldplayers + 1)).str(); player.team = 0; // Set default computerplayer ai type if (player.state == PlayerSettings::stateComputer) { === modified file 'src/logic/soldier.cc' --- src/logic/soldier.cc 2014-07-28 16:59:54 +0000 +++ src/logic/soldier.cc 2014-08-03 18:56:48 +0000 @@ -22,6 +22,8 @@ #include <cstdio> #include <list> +#include <boost/format.hpp> + #include "base/macros.h" #include "base/wexception.h" #include "economy/economy.h" @@ -129,28 +131,29 @@ m_attack_pics_fn .resize(m_max_attack_level + 1); m_defense_pics_fn.resize(m_max_defense_level + 1); m_evade_pics_fn .resize(m_max_evade_level + 1); - char buffer[256]; + std::string dir = directory; dir += "/"; for (uint32_t i = 0; i <= m_max_hp_level; ++i) { - snprintf(buffer, sizeof(buffer), "hp_level_%u_pic", i); m_hp_pics_fn[i] = dir; - m_hp_pics_fn[i] += global_s.get_safe_string(buffer); + m_hp_pics_fn[i] += global_s.get_safe_string((boost::format("hp_level_%u_pic") + % static_cast<unsigned int>(i)).str().c_str()); + } for (uint32_t i = 0; i <= m_max_attack_level; ++i) { - snprintf(buffer, sizeof(buffer), "attack_level_%u_pic", i); m_attack_pics_fn[i] = dir; - m_attack_pics_fn[i] += global_s.get_safe_string(buffer); + m_attack_pics_fn[i] += global_s.get_safe_string((boost::format("attack_level_%u_pic") + % static_cast<unsigned int>(i)).str().c_str()); } for (uint32_t i = 0; i <= m_max_defense_level; ++i) { - snprintf(buffer, sizeof(buffer), "defense_level_%u_pic", i); m_defense_pics_fn[i] = dir; - m_defense_pics_fn[i] += global_s.get_safe_string(buffer); + m_defense_pics_fn[i] += global_s.get_safe_string((boost::format("defense_level_%u_pic") + % static_cast<unsigned int>(i)).str().c_str()); } for (uint32_t i = 0; i <= m_max_evade_level; ++i) { - snprintf(buffer, sizeof(buffer), "evade_level_%i_pic", i); m_evade_pics_fn[i] = dir; - m_evade_pics_fn[i] += global_s.get_safe_string(buffer); + m_evade_pics_fn[i] += global_s.get_safe_string((boost::format("evade_level_%u_pic") + % static_cast<unsigned int>(i)).str().c_str()); } { /// Battle animations @@ -1546,34 +1549,34 @@ get_position().field->get_immovable(); BaseImmovable const * const immovable_dest = map[dest] .get_immovable(); - char buffer[2048]; - snprintf - (buffer, sizeof(buffer), - "The game engine has encountered a logic error. The %s " - "#%u of player %u could not find a way from (%i, %i) " - "(with %s immovable) to the opponent (%s #%u of player " - "%u) at (%i, %i) (with %s immovable). The %s will now " - "desert (but will not be executed). Strange things may " - "happen. No solution for this problem has been " - "implemented yet. (bug #536066) (The game has been " - "paused.)", - descr().descname().c_str(), serial(), owner().player_number(), - get_position().x, get_position().y, - immovable_position ? - immovable_position->descr().descname().c_str() : ("no"), - opponent.descr().descname().c_str(), opponent.serial(), - opponent.owner().player_number(), - dest.x, dest.y, - immovable_dest ? - immovable_dest->descr().descname().c_str() : ("no"), - descr().descname().c_str()); + + std::string messagetext = + (boost::format("The game engine has encountered a logic error. The %s " + "#%u of player %u could not find a way from (%i, %i) " + "(with %s immovable) to the opponent (%s #%u of player " + "%u) at (%i, %i) (with %s immovable). The %s will now " + "desert (but will not be executed). Strange things may " + "happen. No solution for this problem has been " + "implemented yet. (bug #536066) (The game has been " + "paused.)") + % descr().descname().c_str() + % static_cast<unsigned int>(serial()) + % static_cast<unsigned int>(owner().player_number()) + % static_cast<int>(get_position().x) % static_cast<int>(get_position().y) + % (immovable_position ? immovable_position->descr().descname().c_str() : ("no")) + % opponent.descr().descname().c_str() + % static_cast<unsigned int>(opponent.serial()) + % static_cast<unsigned int>(opponent.owner().player_number()) + % static_cast<int>(dest.x) % static_cast<int>(dest.y) + % (immovable_dest ? immovable_dest->descr().descname().c_str() : ("no")) + % descr().descname().c_str()).str(); owner().add_message (game, *new Message ("game engine", game.get_gametime(), Forever(), _("Logic error"), - buffer, + messagetext, get_position(), m_serial)); opponent.owner().add_message @@ -1582,7 +1585,7 @@ ("game engine", game.get_gametime(), Forever(), _("Logic error"), - buffer, + messagetext, opponent.get_position(), m_serial)); game.gameController()->setDesiredSpeed(0); === modified file 'src/logic/trainingsite.cc' --- src/logic/trainingsite.cc 2014-07-30 08:42:52 +0000 +++ src/logic/trainingsite.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <cstdio> +#include <boost/format.hpp> + #include "base/i18n.h" #include "base/macros.h" #include "economy/request.h" @@ -655,9 +657,9 @@ upgrade.lastattempt = level; upgrade.lastsuccess = false; - char buf[200]; - sprintf(buf, "%s%d", upgrade.prefix.c_str(), level); - return program_start(game, buf); + return program_start(game, (boost::format("%s%i") + % upgrade.prefix.c_str() + % static_cast<int>(level)).str().c_str()); } TrainingSite::Upgrade * TrainingSite::get_upgrade(tAttribute const atr) === modified file 'src/logic/tribe.cc' --- src/logic/tribe.cc 2014-07-28 18:03:51 +0000 +++ src/logic/tribe.cc 2014-08-03 18:56:48 +0000 @@ -23,6 +23,7 @@ #include <memory> #include <boost/algorithm/string.hpp> +#include <boost/format.hpp> #include "base/i18n.h" #include "base/macros.h" @@ -400,13 +401,11 @@ return idx; } - char buffer[256]; - int32_t i = 1; int32_t num_indicators = 0; for (;;) { - snprintf(buffer, sizeof(buffer), "resi_%s%i", res->name().c_str(), i); - if (get_immovable_index(buffer) == -1) + const std::string resi_filename = (boost::format("resi_%s%i") % res->name().c_str() % i).str(); + if (get_immovable_index(resi_filename) == -1) break; ++i; ++num_indicators; @@ -432,15 +431,9 @@ if (static_cast<int32_t>(amount) < res->max_amount()) bestmatch += 1; // Resi start with 1, not 0 - snprintf - (buffer, sizeof(buffer), "resi_%s%i", res->name().c_str(), bestmatch); - - // NoLog("Resource(%s): Indicator '%s' for amount = %u\n", - //res->get_name(), buffer, amount); - - - - return get_immovable_index(buffer); + return get_immovable_index((boost::format("resi_%s%i") + % res->name().c_str() + % static_cast<int>(bestmatch)).str().c_str()); } /* === modified file 'src/logic/warehouse.cc' --- src/logic/warehouse.cc 2014-07-28 16:59:54 +0000 +++ src/logic/warehouse.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <algorithm> +#include <boost/format.hpp> + #include "base/deprecated.h" #include "base/log.h" #include "base/macros.h" @@ -451,16 +453,12 @@ (ref_cast<Game, Editor_Game_Base>(egbase), 4000); log("Message: adding (wh) (%s) %i \n", to_string(descr().type()).c_str(), player.player_number()); - char message[2048]; - snprintf - (message, sizeof(message), - _("A new %s was added to your economy."), - descr().descname().c_str()); send_message (ref_cast<Game, Editor_Game_Base>(egbase), "warehouse", descr().descname(), - message, + (boost::format(_("A new %s was added to your economy.")) + % descr().descname().c_str()).str(), true); } === modified file 'src/logic/worker.cc' --- src/logic/worker.cc 2014-08-01 12:57:17 +0000 +++ src/logic/worker.cc 2014-08-03 18:56:48 +0000 @@ -23,6 +23,8 @@ #include <memory> #include <tuple> +#include <boost/format.hpp> + #include "base/macros.h" #include "base/wexception.h" #include "economy/economy.h" @@ -933,15 +935,13 @@ { // Geologist also sends a message notifying the player if (rdescr->detectable() && position.field->get_resources_amount()) { - char message[1024]; // TODO(sirver): this is very wrong: It assumes a directory layout // that might not be around forever. - snprintf(message, - sizeof(message), - "<rt image=world/resources/pics/%s4.png>" - "<p font-size=14 font-face=DejaVuSerif>%s</p></rt>", - rdescr->name().c_str(), - _("A geologist found resources.")); + const std::string message = + (boost::format("<rt image=world/resources/pics/%s4.png>" + "<p font-size=14 font-face=DejaVuSerif>%s</p></rt>") + % rdescr->name().c_str() + % _("A geologist found resources.")).str().c_str(); // We should add a message to the player's message queue - but only, // if there is not already a similar one in list. @@ -1838,18 +1838,17 @@ descr().get_right_walk_anims(does_carry_ware()))) { molog("[return]: Failed to return\n"); - char buffer[2048]; - snprintf - (buffer, sizeof(buffer), - _ ("Your %s can't find a way home and will likely die."), - descr().descname().c_str()); + const std::string message = + (boost::format(_("Your %s can't find a way home and will likely die.")) + % descr().descname().c_str()).str().c_str(); + owner().add_message (game, *new Message ("game engine", game.get_gametime(), Forever(), _("Worker got lost!"), - buffer, + message, get_position()), m_serial); set_location(nullptr); === modified file 'src/logic/worker_program.cc' --- src/logic/worker_program.cc 2014-07-28 16:59:54 +0000 +++ src/logic/worker_program.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "logic/worker_program.h" +#include <string> + #include "graphic/graphic.h" #include "helper.h" #include "logic/findnode.h" @@ -65,10 +67,9 @@ for (uint32_t idx = 0;; ++idx) { try { - char buf[32]; - - snprintf(buf, sizeof(buf), "%i", idx); - char const * const string = program_s.get_string(buf, nullptr); + char const * const string = program_s.get_string( + std::to_string(static_cast<unsigned int>(idx)).c_str(), + nullptr); if (!string) break; === modified file 'src/map_io/widelands_map_allowed_building_types_data_packet.cc' --- src/map_io/widelands_map_allowed_building_types_data_packet.cc 2014-07-28 14:17:07 +0000 +++ src/map_io/widelands_map_allowed_building_types_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_allowed_building_types_data_packet.h" +#include <boost/format.hpp> + #include "base/macros.h" #include "logic/game.h" #include "logic/game_data_error.h" @@ -68,10 +70,9 @@ (Building_Index i = tribe.get_nrbuildings(); 0 < i;) player->allow_building_type(--i, false); - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); try { - Section & s = prof.get_safe_section(buffer); + Section & s = prof.get_safe_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); bool allowed; while (const char * const name = s.get_next_bool(nullptr, &allowed)) { @@ -107,9 +108,8 @@ Player_Number const nr_players = egbase.map().get_nrplayers(); iterate_players_existing_const(p, nr_players, egbase, player) { const Tribe_Descr & tribe = player->tribe(); - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - Section & section = prof.create_section(buffer); + Section & section = prof.create_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); // Write for all buildings if it is enabled. Building_Index const nr_buildings = tribe.get_nrbuildings(); === modified file 'src/map_io/widelands_map_allowed_worker_types_data_packet.cc' --- src/map_io/widelands_map_allowed_worker_types_data_packet.cc 2014-07-28 16:59:54 +0000 +++ src/map_io/widelands_map_allowed_worker_types_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_allowed_worker_types_data_packet.h" +#include <boost/format.hpp> + #include "base/macros.h" #include "logic/game.h" #include "logic/game_data_error.h" @@ -55,10 +57,9 @@ if (packet_version == CURRENT_PACKET_VERSION) { iterate_players_existing(p, egbase.map().get_nrplayers(), egbase, player) { const Tribe_Descr & tribe = player->tribe(); - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); try { - Section* s = prof.get_section(buffer); + Section* s = prof.get_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); if (s == nullptr) continue; @@ -92,9 +93,8 @@ bool forbidden_worker_seen = false; iterate_players_existing_const(p, egbase.map().get_nrplayers(), egbase, player) { const Tribe_Descr & tribe = player->tribe(); - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - Section & section = prof.create_section(buffer); + Section & section = prof.create_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); // Only write the workers which are disabled. for (Ware_Index b = 0; b < tribe.get_nrworkers(); ++b) { === modified file 'src/map_io/widelands_map_player_names_and_tribes_data_packet.cc' --- src/map_io/widelands_map_player_names_and_tribes_data_packet.cc 2014-07-28 14:17:07 +0000 +++ src/map_io/widelands_map_player_names_and_tribes_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_player_names_and_tribes_data_packet.h" +#include <boost/format.hpp> + #include "logic/editor_game_base.h" #include "logic/game_data_error.h" #include "logic/map.h" @@ -65,9 +67,8 @@ if (packet_version <= CURRENT_PACKET_VERSION) { Player_Number const nr_players = map->get_nrplayers(); iterate_player_numbers(p, nr_players) { - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - Section & s = prof.get_safe_section(buffer); + Section & s = prof.get_safe_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); map->set_scenario_player_name (p, s.get_string("name", "")); map->set_scenario_player_tribe (p, s.get_string("tribe", "")); map->set_scenario_player_ai (p, s.get_string("ai", "")); @@ -93,9 +94,8 @@ const Map & map = egbase.map(); Player_Number const nr_players = map.get_nrplayers(); iterate_player_numbers(p, nr_players) { - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - Section & s = prof.create_section(buffer); + Section & s = prof.create_section((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str()); s.set_string("name", map.get_scenario_player_name (p)); s.set_string("tribe", map.get_scenario_player_tribe (p)); s.set_string("ai", map.get_scenario_player_ai (p)); === modified file 'src/map_io/widelands_map_player_position_data_packet.cc' --- src/map_io/widelands_map_player_position_data_packet.cc 2014-07-28 14:17:07 +0000 +++ src/map_io/widelands_map_player_position_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_player_position_data_packet.h" +#include <boost/format.hpp> + #include "logic/editor_game_base.h" #include "logic/game_data_error.h" #include "logic/map.h" @@ -48,9 +50,10 @@ Player_Number const nr_players = map.get_nrplayers(); iterate_player_numbers(p, nr_players) { try { - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - map.set_starting_pos(p, get_safe_coords(buffer, extent, &s)); + map.set_starting_pos(p, + get_safe_coords((boost::format("player_%u") + % static_cast<unsigned int>(p)).str().c_str(), + extent, &s)); } catch (const _wexception & e) { throw game_data_error("player %u: %s", p, e.what()); } @@ -76,9 +79,8 @@ const Map & map = egbase.map(); const Player_Number nr_players = map.get_nrplayers(); iterate_player_numbers(p, nr_players) { - char buffer[10]; - snprintf(buffer, sizeof(buffer), "player_%u", p); - set_coords(buffer, map.get_starting_pos(p), &s); + set_coords((boost::format("player_%u") % static_cast<unsigned int>(p)).str().c_str(), + map.get_starting_pos(p), &s); } prof.write("player_position", false, fs); === modified file 'src/map_io/widelands_map_players_messages_data_packet.cc' --- src/map_io/widelands_map_players_messages_data_packet.cc 2014-07-28 14:23:03 +0000 +++ src/map_io/widelands_map_players_messages_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_players_messages_data_packet.h" +#include <boost/format.hpp> + #include "logic/game_data_error.h" #include "logic/player.h" #include "map_io/coords_profile.h" @@ -31,7 +33,6 @@ #define CURRENT_PACKET_VERSION 1 #define PLAYERDIRNAME_TEMPLATE "player/%u" #define FILENAME_TEMPLATE PLAYERDIRNAME_TEMPLATE "/messages" -#define FILENAME_SIZE 19 void Map_Players_Messages_Data_Packet::Read (FileSystem & fs, Editor_Game_Base & egbase, bool, MapMapObjectLoader & mol) @@ -43,10 +44,11 @@ Player_Number const nr_players = map .get_nrplayers(); iterate_players_existing(p, nr_players, egbase, player) try { - char filename[FILENAME_SIZE]; - snprintf(filename, sizeof(filename), FILENAME_TEMPLATE, p); Profile prof; - try {prof.read(filename, nullptr, fs);} catch (...) {continue;} + try { + prof.read((boost::format(FILENAME_TEMPLATE) % static_cast<unsigned int>(p)).str().c_str(), + nullptr, fs); + } catch (...) {continue;} prof.get_safe_section("global").get_positive ("packet_version", CURRENT_PACKET_VERSION); MessageQueue & messages = player->messages(); @@ -242,11 +244,10 @@ s.set_int ("serial", fileindex); } } - char filename[FILENAME_SIZE]; - snprintf(filename, sizeof(filename), PLAYERDIRNAME_TEMPLATE, p); - fs.EnsureDirectoryExists(filename); - snprintf(filename, sizeof(filename), FILENAME_TEMPLATE, p); - prof.write(filename, false, fs); + fs.EnsureDirectoryExists((boost::format(PLAYERDIRNAME_TEMPLATE) + % static_cast<unsigned int>(p)).str().c_str()); + prof.write((boost::format(FILENAME_TEMPLATE) + % static_cast<unsigned int>(p)).str().c_str(), false, fs); } } === modified file 'src/map_io/widelands_map_players_view_data_packet.cc' --- src/map_io/widelands_map_players_view_data_packet.cc 2014-07-28 16:59:54 +0000 +++ src/map_io/widelands_map_players_view_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -22,6 +22,8 @@ #include <iostream> #include <typeinfo> +#include <boost/format.hpp> + #include "base/log.h" #include "base/macros.h" #include "economy/flag.h" @@ -1176,10 +1178,10 @@ char filename[FILENAME_SIZE]; - snprintf(filename, sizeof(filename), PLAYERDIRNAME_TEMPLATE, plnum); - fs.EnsureDirectoryExists(filename); - snprintf(filename, sizeof(filename), DIRNAME_TEMPLATE, plnum); - fs.EnsureDirectoryExists(filename); + fs.EnsureDirectoryExists((boost::format(PLAYERDIRNAME_TEMPLATE) + % static_cast<unsigned int>(plnum)).str().c_str()); + fs.EnsureDirectoryExists((boost::format(DIRNAME_TEMPLATE) + % static_cast<unsigned int>(plnum)).str().c_str()); WRITE (unseen_times_file, === modified file 'src/map_io/widelands_map_port_spaces_data_packet.cc' --- src/map_io/widelands_map_port_spaces_data_packet.cc 2014-07-28 14:17:07 +0000 +++ src/map_io/widelands_map_port_spaces_data_packet.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "map_io/widelands_map_port_spaces_data_packet.h" +#include <string> + #include <boost/algorithm/string.hpp> #include "base/deprecated.h" @@ -50,11 +52,9 @@ if (!num) return; - char buf[8]; // there won't be that many port spaces... definitely! Section & s2 = prof.get_safe_section("port_spaces"); for (uint16_t i = 0; i < num; ++i) { - snprintf(buf, sizeof(buf), "%u", i); - map.set_port_space(get_safe_coords(buf, ext, &s2), true); + map.set_port_space(get_safe_coords(std::to_string(static_cast<unsigned int>(i)), ext, &s2), true); } } else throw game_data_error @@ -95,14 +95,12 @@ } const uint16_t num = port_spaces.size(); - char buf[8]; // there won't be that many port spaces... Definitely! s1.set_int("number_of_port_spaces", num); Section & s2 = prof.create_section("port_spaces"); int i = 0; for (const Coords& c : port_spaces) { - snprintf(buf, sizeof(buf), "%u", i++); - set_coords(buf, c, &s2); + set_coords(std::to_string(i++), c, &s2); } prof.write("port_spaces", false, fs); } === modified file 'src/network/netclient.cc' --- src/network/netclient.cc 2014-07-25 20:16:31 +0000 +++ src/network/netclient.cc 2014-08-03 18:56:48 +0000 @@ -22,6 +22,7 @@ #include <memory> #include <boost/algorithm/string/predicate.hpp> +#include <boost/format.hpp> #include <boost/lexical_cast.hpp> #include "base/i18n.h" @@ -297,9 +298,8 @@ std::string NetClient::getGameDescription() { - char buf[200]; - snprintf(buf, sizeof(buf), "network player %i", d->settings.playernum); - return buf; + return (boost::format("network player %u") + % static_cast<unsigned int>(d->settings.playernum)).str(); } void NetClient::report_result === modified file 'src/network/nethost.cc' --- src/network/nethost.cc 2014-07-26 10:43:23 +0000 +++ src/network/nethost.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include <memory> #include <sstream> +#include <string> #include <boost/algorithm/string/predicate.hpp> #include <boost/format.hpp> @@ -1418,11 +1419,8 @@ std::string NetHost::getGameDescription() { - char buf[200]; - snprintf - (buf, sizeof(buf), - "network player %i (host)", d->settings.users.at(0).position); - return buf; + return (boost::format("network player %u (host)") + % static_cast<unsigned int>(d->settings.users.at(0).position)).str(); } const GameSettings& NetHost::settings() @@ -2000,11 +1998,8 @@ std::string NetHost::getComputerPlayerName(uint8_t const playernum) { std::string name; - uint32_t suffix = playernum; do { - char buf[200]; - snprintf(buf, sizeof(buf), _("Computer %u"), ++suffix); - name = buf; + name = (boost::format(_("Computer %u")) % static_cast<unsigned int>(++playernum)).str(); } while (haveUserName(name, playernum)); return name; } @@ -2075,9 +2070,7 @@ if (haveUserName(effective_name, client.usernum)) { uint32_t i = 2; do { - char buf[32]; - snprintf(buf, sizeof(buf), "%u", i++); - effective_name = (boost::format(_("Player %s")) % buf).str(); + effective_name = (boost::format(_("Player %u")) % i++).str(); } while (haveUserName(effective_name, client.usernum)); } @@ -2264,16 +2257,20 @@ // inform the other clients about the problem regulary if (deltanow - d->clients.at(i).lastdelta > 30) { - char buf[5]; - //snprintf(buf, sizeof(buf), "%li", deltanow); - snprintf(buf, sizeof(buf), ngettext("%li second", "%li seconds", deltanow), deltanow); + std::string seconds = (boost::format(ngettext("%li second", "%li seconds", deltanow)) + % deltanow).str(); sendSystemMessageCode - ("CLIENT_HUNG", d->settings.users.at(d->clients.at(i).usernum).name, buf); + ("CLIENT_HUNG", + d->settings.users.at(d->clients.at(i).usernum).name, + seconds.c_str()); + d->clients.at(i).lastdelta = deltanow; if (m_is_dedicated) { - snprintf(buf, sizeof(buf), "%li", 300 - deltanow); + seconds = (boost::format("%li") % (300 - deltanow)).str(); sendSystemMessageCode - ("CLIENT_HUNG_AUTOKICK", d->settings.users.at(d->clients.at(i).usernum).name, buf); + ("CLIENT_HUNG_AUTOKICK", + d->settings.users.at(d->clients.at(i).usernum).name, + seconds.c_str()); } } === modified file 'src/profile/profile.cc' --- src/profile/profile.cc 2014-07-25 20:40:51 +0000 +++ src/profile/profile.cc 2014-08-03 18:56:48 +0000 @@ -490,9 +490,7 @@ */ void Section::set_int(char const * const name, int32_t const value) { - char buffer[sizeof("-2147483649")]; - sprintf(buffer, "%i", value); - set_string(name, buffer); + set_string(name, std::to_string(value)); } === modified file 'src/scripting/lua_bases.cc' --- src/scripting/lua_bases.cc 2014-07-28 16:59:54 +0000 +++ src/scripting/lua_bases.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "scripting/lua_bases.h" +#include <boost/format.hpp> + #include "economy/economy.h" #include "logic/checkstep.h" #include "logic/constants.h" @@ -315,10 +317,8 @@ } int L_PlayerBase::__tostring(lua_State * L) { - char rv[40]; - snprintf - (rv, sizeof(rv), "Player(%i)", get(L, get_egbase(L)).player_number()); - lua_pushstring(L, rv); + lua_pushstring(L, (boost::format("Player(%i)") + % static_cast<unsigned int>(get(L, get_egbase(L)).player_number())).str().c_str()); return 1; } /* RST === modified file 'src/scripting/lua_map.cc' --- src/scripting/lua_map.cc 2014-07-28 18:34:07 +0000 +++ src/scripting/lua_map.cc 2014-08-03 18:56:48 +0000 @@ -3522,9 +3522,9 @@ */ // Hash is used to identify a class in a Set int L_Field::get___hash(lua_State * L) { - char buf[25]; - snprintf(buf, sizeof(buf), "%i_%i", m_c.x, m_c.y); - lua_pushstring(L, buf); + lua_pushstring(L, (boost::format("%i_%i") + % static_cast<unsigned int>(m_c.x) + % static_cast<unsigned int>(m_c.y)).str().c_str()); return 1; } @@ -3852,9 +3852,9 @@ return 1; } int L_Field::__tostring(lua_State * L) { - char buf[100]; - snprintf(buf, sizeof(buf), "Field(%i,%i)", m_c.x, m_c.y); - lua_pushstring(L, buf); + lua_pushstring(L, (boost::format("Field(%i,%i)") + % static_cast<unsigned int>(m_c.x) + % static_cast<unsigned int>(m_c.y)).str().c_str()); return 1; } === modified file 'src/ui_basic/helpwindow.cc' --- src/ui_basic/helpwindow.cc 2014-07-28 16:59:54 +0000 +++ src/ui_basic/helpwindow.cc 2014-08-03 18:56:48 +0000 @@ -20,6 +20,7 @@ #include "ui_basic/helpwindow.h" #include <memory> +#include <string> #include <boost/format.hpp> @@ -49,9 +50,9 @@ : Window(parent, "help_window", 0, 0, 20, 20, (boost::format(_("Help: %s")) % caption).str().c_str()), textarea(new Multiline_Textarea(this, 5, 5, 30, 30, std::string(), Align_Left)), - m_h1((format("%u") % (fontsize < 12 ? 18 : fontsize * 3 / 2)).str()), - m_h2((format("%u") % (fontsize < 12 ? 12 : fontsize)).str()), - m_p ((format("%u") % (fontsize < 12 ? 10 : fontsize * 5 / 6)).str()), + m_h1(std::to_string(fontsize < 12 ? 18 : fontsize * 3 / 2)), + m_h2(std::to_string(fontsize < 12 ? 12 : fontsize)), + m_p (std::to_string(fontsize < 12 ? 10 : fontsize * 5 / 6)), m_fn(ui_fn().substr(0, ui_fn().size() - 4)) // Font file - .ttf { // Begin the text with the caption === modified file 'src/ui_basic/spinbox.cc' --- src/ui_basic/spinbox.cc 2014-07-25 19:15:23 +0000 +++ src/ui_basic/spinbox.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <vector> +#include <boost/format.hpp> + #include "base/deprecated.h" #include "base/i18n.h" #include "base/wexception.h" @@ -103,11 +105,10 @@ textw = w - butw * 32 / 5; } - char buf[64]; - snprintf(buf, sizeof(buf), "%i %s", sbi->value, sbi->unit.c_str()); - sbi->text = new UI::Textarea - (this, butw * 16 / 5, 0, textw, h, buf, Align_Center); + (this, butw * 16 / 5, 0, textw, h, + (boost::format("%i %s") % sbi->value % sbi->unit.c_str()).str(), + Align_Center); sbi->butPlus = new Button (this, "+", @@ -170,9 +171,7 @@ } } if (!was_in_list) { - char buf[64]; - snprintf(buf, sizeof(buf), "%i %s", sbi->value, sbi->unit.c_str()); - sbi->text->set_text(buf); + sbi->text->set_text((boost::format("%i %s") % sbi->value % sbi->unit.c_str()).str()); } sbi->butMinus->set_enabled(sbi->min < sbi->value); @@ -333,9 +332,7 @@ void SpinBox::remove_replacement(int32_t value) { if (int32_t i = findReplacement(value) >= 0) { - char buf[64]; - snprintf(buf, sizeof(buf), "%i %s", value, sbi->unit.c_str()); - sbi->valrep[i].text = buf; + sbi->valrep[i].text = (boost::format("%i %s") % value % sbi->unit.c_str()).str(); } } === modified file 'src/ui_fsmenu/base.cc' --- src/ui_fsmenu/base.cc 2014-07-05 14:22:44 +0000 +++ src/ui_fsmenu/base.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <cstdio> +#include <boost/format.hpp> + #include "base/log.h" #include "base/wexception.h" #include "graphic/font.h" @@ -56,9 +58,8 @@ d(new Data) { // Load background graphics - char buffer[256]; - snprintf(buffer, sizeof(buffer), "pics/%s", bgpic); - d->res_background = ImageTransformations::resize(g_gr->images().get(buffer), get_w(), get_h()); + const std::string bgpicpath = (boost::format("pics/%s") % bgpic).str(); + d->res_background = ImageTransformations::resize(g_gr->images().get(bgpicpath), get_w(), get_h()); d->textstyle_small = UI::TextStyle::ui_small(); d->textstyle_small.font = UI::Font::get(ui_fn(), fs_small()); === modified file 'src/ui_fsmenu/editor_mapselect.cc' --- src/ui_fsmenu/editor_mapselect.cc 2014-07-20 07:46:24 +0000 +++ src/ui_fsmenu/editor_mapselect.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include <cstdio> #include <memory> +#include <string> #include <boost/format.hpp> @@ -175,12 +176,10 @@ m_descr .set_text (_(map.get_description()) + (map.get_hint().empty() ? "" : (std::string("\n") + _(map.get_hint())))); - char buf[200]; - sprintf(buf, "%i", map.get_nrplayers()); - m_nr_players.set_text(buf); + m_nr_players.set_text(std::to_string(static_cast<unsigned int>(map.get_nrplayers()))); - sprintf(buf, "%ix%i", map.get_width(), map.get_height()); - m_size .set_text(buf); + /** TRANSLATORS: These are map coordinates */ + m_size .set_text((boost::format(_("%1$ix%2$i")) % map.get_width() % map.get_height()).str()); } else { m_name .set_text(std::string()); m_author .set_text(std::string()); === modified file 'src/ui_fsmenu/launch_mpg.cc' --- src/ui_fsmenu/launch_mpg.cc 2014-07-14 10:45:44 +0000 +++ src/ui_fsmenu/launch_mpg.cc 2014-08-03 18:56:48 +0000 @@ -548,25 +548,21 @@ std::unique_ptr<FileSystem> l_fs(g_fs->MakeSubFileSystem(m_settings->settings().mapfilename.c_str())); Profile prof; prof.read("map/player_names", nullptr, *l_fs); - std::string strbuf; std::string infotext = _("Saved players are:"); std::string player_save_name [MAX_PLAYERS]; std::string player_save_tribe[MAX_PLAYERS]; std::string player_save_ai [MAX_PLAYERS]; - char buf[32]; uint8_t i = 1; for (; i <= m_nr_players; ++i) { infotext += "\n* "; - strbuf = std::string(); - snprintf(buf, sizeof(buf), "player_%u", i); - Section & s = prof.get_safe_section(buf); + Section & s = prof.get_safe_section((boost::format("player_%u") + % static_cast<unsigned int>(i)).str().c_str()); player_save_name [i - 1] = s.get_string("name"); player_save_tribe[i - 1] = s.get_string("tribe"); player_save_ai [i - 1] = s.get_string("ai"); - snprintf(buf, sizeof(buf), _("Player %u"), i); - infotext += buf; + infotext += (boost::format(_("Player %u")) % static_cast<unsigned int>(i)).str(); if (player_save_tribe[i - 1].empty()) { std::string closed_string = (boost::format("\\<%s\\>") % _("closed")).str(); @@ -594,9 +590,8 @@ m_settings->setPlayerTribe(i - 1, player_save_tribe[i - 1]); // get translated tribename - strbuf = "tribes/" + player_save_tribe[i - 1]; - strbuf += "/conf"; - Profile tribe(strbuf.c_str(), nullptr, "tribe_" + player_save_tribe[i - 1]); + Profile tribe((new std::string("tribes/" + player_save_tribe[i - 1] + "/conf"))->c_str(), + nullptr, "tribe_" + player_save_tribe[i - 1]); Section & global = tribe.get_safe_section("tribe"); player_save_tribe[i - 1] = global.get_safe_string("name"); infotext += " ("; === modified file 'src/ui_fsmenu/loadgame.cc' --- src/ui_fsmenu/loadgame.cc 2014-07-14 10:45:44 +0000 +++ src/ui_fsmenu/loadgame.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include <cstdio> #include <memory> +#include <string> #include <boost/format.hpp> @@ -234,16 +235,14 @@ m_tamapname.set_text(_(gpdp.get_mapname())); } - char buf[20]; uint32_t gametime = gpdp.get_gametime(); m_tagametime.set_text(gametimestring(gametime)); if (gpdp.get_number_of_players() > 0) { - sprintf(buf, "%i", gpdp.get_number_of_players()); + m_ta_players.set_text(std::to_string(static_cast<unsigned int>(gpdp.get_number_of_players()))); } else { - sprintf(buf, "%s", _("Unknown")); + m_ta_players.set_text(_("Unknown")); } - m_ta_players.set_text(buf); m_ta_win_condition.set_text(gpdp.get_win_condition()); std::string minimap_path = gpdp.get_minimap_path(); === modified file 'src/ui_fsmenu/loadreplay.cc' --- src/ui_fsmenu/loadreplay.cc 2014-07-05 14:22:44 +0000 +++ src/ui_fsmenu/loadreplay.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "ui_fsmenu/loadreplay.h" +#include <string> + #include <boost/algorithm/string/predicate.hpp> #include <boost/format.hpp> @@ -192,16 +194,14 @@ m_delete.set_enabled(true); m_tamapname.set_text(gpdp.get_mapname()); - char buf[20]; uint32_t gametime = gpdp.get_gametime(); m_tagametime.set_text(gametimestring(gametime)); if (gpdp.get_number_of_players() > 0) { - sprintf(buf, "%i", gpdp.get_number_of_players()); + m_ta_players.set_text(std::to_string(static_cast<unsigned int>(gpdp.get_number_of_players()))); } else { - sprintf(buf, "%s", _("Unknown")); + m_ta_players.set_text(_("Unknown")); } - m_ta_players.set_text(buf); m_ta_win_condition.set_text(gpdp.get_win_condition()); } else { === modified file 'src/ui_fsmenu/mapselect.cc' --- src/ui_fsmenu/mapselect.cc 2014-07-25 20:40:51 +0000 +++ src/ui_fsmenu/mapselect.cc 2014-08-03 18:56:48 +0000 @@ -20,6 +20,7 @@ #include <cstdio> #include <memory> +#include <string> #include <boost/format.hpp> @@ -250,16 +251,12 @@ const MapData & map = m_maps_data[m_table.get_selected()]; if (map.width) { - char buf[256]; - // Translate the map data i18n::Textdomain td("maps"); m_name .set_text(_(map.name)); m_author .set_text(map.author); - sprintf(buf, "%-4ux%4u", map.width, map.height); - m_size .set_text(buf); - sprintf(buf, "%i", map.nrplayers); - m_nr_players.set_text(buf); + m_size .set_text((boost::format("%-4ux%4u") % map.width % map.height).str()); + m_nr_players.set_text(std::to_string(static_cast<unsigned int>(map.nrplayers))); m_descr .set_text(_(map.description) + (map.hint.empty() ? "" : (std::string("\n") + _(map.hint)))); m_load_map_as_scenario.set_enabled(map.scenario); } else { === modified file 'src/wlapplication.cc' --- src/wlapplication.cc 2014-07-25 22:17:48 +0000 +++ src/wlapplication.cc 2014-08-03 18:56:48 +0000 @@ -560,11 +560,11 @@ } g_fs->EnsureDirectoryExists(SCREENSHOT_DIR); for (uint32_t nr = 0; nr < 10000; ++nr) { - char buffer[256]; - snprintf(buffer, sizeof(buffer), SCREENSHOT_DIR "/shot%04u.png", nr); - if (g_fs->FileExists(buffer)) + const std::string filename = (boost::format(SCREENSHOT_DIR "/shot%04u.png") + % static_cast<unsigned int>(nr)).str().c_str(); + if (g_fs->FileExists(filename)) continue; - g_gr->screenshot(buffer); + g_gr->screenshot(filename); break; } } === modified file 'src/wui/attack_box.cc' --- src/wui/attack_box.cc 2014-07-05 14:22:44 +0000 +++ src/wui/attack_box.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,10 @@ #include "wui/attack_box.h" +#include <string> + +#include <boost/format.hpp> + #include "base/macros.h" #include "graphic/graphic.h" #include "logic/soldier.h" @@ -119,7 +123,6 @@ assert(m_less_soldiers); assert(m_add_soldiers); - char buf[20]; int32_t max_attackers = get_max_attackers(); if (m_slider_soldiers->get_max_value() != max_attackers) @@ -129,11 +132,12 @@ m_add_soldiers->set_enabled(max_attackers > m_slider_soldiers->get_value()); m_less_soldiers ->set_enabled(m_slider_soldiers->get_value() > 0); - sprintf(buf, "%u / %u", m_slider_soldiers->get_value(), max_attackers); - m_text_soldiers->set_text(buf); + /** TRANSLATORS: %1% of %2% soldiers. Used in Attack box. */ + m_text_soldiers->set_text((boost::format(_("%1% / %2%")) + % m_slider_soldiers->get_value() + % max_attackers).str()); - sprintf(buf, "%u", max_attackers); - m_add_soldiers->set_title(buf); + m_add_soldiers->set_title(std::to_string(max_attackers)); } void AttackBox::init() { === modified file 'src/wui/building_statistics_menu.cc' --- src/wui/building_statistics_menu.cc 2014-07-28 18:03:51 +0000 +++ src/wui/building_statistics_menu.cc 2014-08-03 18:56:48 +0000 @@ -22,6 +22,7 @@ #include <vector> #include <boost/bind.hpp> +#include <boost/format.hpp> #include "base/i18n.h" #include "base/macros.h" @@ -468,30 +469,27 @@ uint32_t const percent = static_cast<uint32_t> (static_cast<float>(total_prod) / static_cast<float>(nr_owned)); - snprintf(buffer, sizeof(buffer), "%3u", percent); + te->set_string(Columns::Prod, (boost::format("%3u") % percent).str()); // space-pad for sort if (is_selected) { m_progbar.set_state(percent); m_btn[Prev_Unproductive]->set_enabled(true); m_btn[Next_Unproductive]->set_enabled(true); } } else { - snprintf(buffer, sizeof(buffer), " "); + te->set_string(Columns::Prod, " "); if (is_selected) { m_btn[Prev_Unproductive]->set_enabled(false); m_btn[Next_Unproductive]->set_enabled(false); } } - te->set_string(Columns::Prod, buffer); // number of this buildings - snprintf(buffer, sizeof(buffer), "%3u", nr_owned); // space-pad for sort - te->set_string(Columns::Owned, buffer); + te->set_string(Columns::Owned, (boost::format("%3u") % nr_owned).str()); // space-pad for sort if (is_selected) m_owned.set_text(buffer); // number of currently builds - snprintf(buffer, sizeof(buffer), "%3u", nr_build); // space-pad for sort - te->set_string(Columns::Build, buffer); + te->set_string(Columns::Build, (boost::format("%3u") % nr_build).str()); // space-pad for sort if (is_selected) m_in_build.set_text(buffer); } === modified file 'src/wui/buildingwindow.cc' --- src/wui/buildingwindow.cc 2014-07-28 16:59:54 +0000 +++ src/wui/buildingwindow.cc 2014-08-03 18:56:48 +0000 @@ -228,17 +228,19 @@ if (owner.is_building_type_allowed(enhancement)) { const Widelands::BuildingDescr & building_descr = *tribe.get_building_descr(enhancement); - char buffer[128]; - snprintf - (buffer, sizeof(buffer), - _("Enhance to %s"), building_descr.descname().c_str()); + + std::string tooltip = (boost::format(_("Enhance to %s")) + % building_descr.descname().c_str()).str() + + "<br><font size=11>" + _("Construction costs:") + "</font><br>" + + waremap_to_richtext(tribe, building_descr.enhancement_cost()); + UI::Button * enhancebtn = new UI::Button (capsbuttons, "enhance", 0, 0, 34, 34, g_gr->images().get("pics/but4.png"), building_descr.get_icon(), - std::string(buffer) + "<br><font size=11>" + _("Construction costs:") + "</font><br>" + - waremap_to_richtext(tribe, building_descr.enhancement_cost())); + tooltip); + // button id = building id enhancebtn->sigclicked.connect([this, enhancement] {act_enhance(enhancement);}); capsbuttons->add === modified file 'src/wui/encyclopedia_window.cc' --- src/wui/encyclopedia_window.cc 2014-08-01 12:57:17 +0000 +++ src/wui/encyclopedia_window.cc 2014-08-03 18:56:48 +0000 @@ -191,15 +191,13 @@ // Make sure to detect if someone changes the type so that it // needs more than 3 decimal digits to represent. static_assert(sizeof(temp_group.second) == 1, "Number is too big for 3 char string."); - char amount_string[4]; // Space for 3 digits + terminator. - sprintf(amount_string, "%u", temp_group.second); // picture only of first ware type in group UI::Table<uintptr_t>::Entry_Record & tableEntry = condTable.add(0); tableEntry.set_picture (0, tribe.get_ware_descr(*ware_types.begin())->icon(), ware_type_names); - tableEntry.set_string (1, amount_string); + tableEntry.set_string(1, std::to_string(static_cast<unsigned int>(temp_group.second))); condTable.set_sort_column(0); condTable.sort(); } === modified file 'src/wui/game_debug_ui.cc' --- src/wui/game_debug_ui.cc 2014-07-28 14:23:03 +0000 +++ src/wui/game_debug_ui.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include "wui/game_debug_ui.h" #include <cstdio> +#include <string> #include <boost/format.hpp> @@ -155,11 +156,8 @@ (this, 0, 0, g_gr->images().get("pics/but1.png")) { - char buffer[128]; - m_serial = obj.serial(); - snprintf(buffer, sizeof(buffer), "%u", m_serial); - set_title(buffer); + set_title(std::to_string(m_serial)); obj.create_debug_panels(parent.egbase(), m_tabs); @@ -182,10 +180,7 @@ } UI::Window::think(); } else { - char buffer[128]; - - snprintf(buffer, sizeof(buffer), "DEAD: %u", m_serial); - set_title(buffer); + set_title((boost::format("DEAD: %u") % m_serial).str().c_str()); } } @@ -274,7 +269,6 @@ void FieldDebugWindow::think() { std::string str; - char buffer[512]; UI::Window::think(); @@ -284,10 +278,11 @@ .egbase(); { Widelands::Player_Number const owner = m_coords.field->get_owned_by(); - snprintf - (buffer, sizeof(buffer), "(%i, %i)\nheight: %u\nowner: %u\n", - m_coords.x, m_coords.y, m_coords.field->get_height(), owner); - str += buffer; + str += (boost::format("(%i, %i)\nheight: %u\nowner: %u\n") + % m_coords.x % m_coords.y + % static_cast<unsigned int>(m_coords.field->get_height()) + % static_cast<unsigned int>(owner)).str(); + if (owner) { Widelands::NodeCaps const buildcaps = egbase.player(owner).get_buildcaps(m_coords); @@ -313,35 +308,30 @@ Widelands::Player_Number const nr_players = m_map.get_nrplayers(); iterate_players_existing_const(plnum, nr_players, egbase, player) { const Widelands::Player::Field & player_field = player->fields()[i]; - snprintf(buffer, sizeof(buffer), "Player %u:\n", plnum); - str += buffer; - snprintf - (buffer, sizeof(buffer), - " military influence: %u\n", player_field.military_influence); - str += buffer; + str += (boost::format("Player %u:\n") % static_cast<unsigned int>(plnum)).str(); + str += (boost::format(" military influence: %u\n") + % static_cast<unsigned int>(player_field.military_influence)).str(); + Widelands::Vision const vision = player_field.vision; - snprintf(buffer, sizeof(buffer), " vision: %u\n", vision); - str += buffer; + str += (boost::format(" vision: %u\n") % static_cast<unsigned int>(vision)).str(); { Widelands::Time const time_last_surveyed = player_field.time_triangle_last_surveyed[Widelands::TCoords<>::D]; if (time_last_surveyed != Widelands::Never()) { - snprintf - (buffer, sizeof(buffer), - " D triangle last surveyed at %u: amount %u\n", - time_last_surveyed, player_field.resource_amounts.d); - str += buffer; + str += (boost::format(" D triangle last surveyed at %u: amount %u\n") + % time_last_surveyed + % static_cast<unsigned int>(player_field.resource_amounts.d)).str(); + } else str += " D triangle never surveyed\n"; } { Widelands::Time const time_last_surveyed = player_field.time_triangle_last_surveyed[Widelands::TCoords<>::R]; if (time_last_surveyed != Widelands::Never()) { - snprintf - (buffer, sizeof(buffer), - " R triangle last surveyed at %u: amount %u\n", - time_last_surveyed, player_field.resource_amounts.r); - str += buffer; + str += (boost::format(" R triangle last surveyed at %u: amount %u\n") + % time_last_surveyed + % static_cast<unsigned int>(player_field.resource_amounts.r)).str(); + } else str += " R triangle never surveyed\n"; } switch (vision) { @@ -352,21 +342,17 @@ animation_name = "(seen an animation)"; } - snprintf - (buffer, sizeof(buffer), - " last seen at %u:\n" - " owner: %u\n" - " immovable animation:\n%s\n" - " ", - player_field.time_node_last_unseen, - player_field.owner, - animation_name.c_str()); - str += buffer; + str += (boost::format(" last seen at %u:\n" + " owner: %u\n" + " immovable animation:\n%s\n" + " ") + % player_field.time_node_last_unseen + % static_cast<unsigned int>(player_field.owner) + % animation_name.c_str()).str(); break; } default: - snprintf(buffer, sizeof(buffer), " seen %u times\n", vision - 1); - str += buffer; + str += (boost::format(" seen %u times\n") % static_cast<unsigned int>(vision - 1)).str(); break; } } @@ -374,16 +360,11 @@ Widelands::Resource_Index ridx = m_coords.field->get_resources(); int ramount = m_coords.field->get_resources_amount(); int startingAmount = m_coords.field->get_starting_res_amount(); - snprintf(buffer, - sizeof(buffer), - "Resource: %s\n", - ibase().egbase().world().get_resource(ridx)->name().c_str()); - - str += buffer; - - snprintf - (buffer, sizeof(buffer), " Amount: %i/%i\n", ramount, startingAmount); - str += buffer; + + str += (boost::format("Resource: %s\n") + % ibase().egbase().world().get_resource(ridx)->name().c_str()).str(); + + str += (boost::format(" Amount: %i/%i\n") % ramount % startingAmount).str(); } m_ui_field.set_text(str.c_str()); @@ -391,10 +372,9 @@ // Immovable information if (Widelands::BaseImmovable * const imm = m_coords.field->get_immovable()) { - snprintf - (buffer, sizeof(buffer), - "%s (%u)", imm->descr().name().c_str(), imm->serial()); - m_ui_immovable.set_title(buffer); + m_ui_immovable.set_title((boost::format("%s (%u)") + % imm->descr().name().c_str() + % static_cast<unsigned int>(imm->serial())).str().c_str()); m_ui_immovable.set_enabled(true); } else { m_ui_immovable.set_title("no immovable"); @@ -439,7 +419,7 @@ m_ui_bobs.add( (boost::format("%s (%u)") % temp_bob->descr().name() - % temp_bob->serial()).str().c_str(), + % static_cast<unsigned int>(temp_bob->serial())).str().c_str(), temp_bob->serial()); } } === modified file 'src/wui/game_summary.cc' --- src/wui/game_summary.cc 2014-07-14 10:45:44 +0000 +++ src/wui/game_summary.cc 2014-08-03 18:56:48 +0000 @@ -138,16 +138,15 @@ UI::Table<uintptr_t const>::Entry_Record & te = m_players_table->add(i); // Player name & pic - // Boost doesn't handle uint8_t as integers - uint16_t player_number = pes.player; std::string pic_path = - (boost::format("pics/genstats_enable_plr_0%|1$u|.png") % player_number).str(); + (boost::format("pics/genstats_enable_plr_0%|1$u|.png") + % static_cast<unsigned int>(pes.player)).str(); const Image* pic = g_gr->images().get(pic_path); te.set_picture(0, pic, p->get_name()); // Team - uint16_t team_number = p->team_number(); std::string team_str = - (boost::format("%|1$u|") % team_number).str(); + (boost::format("%|1$u|") + % static_cast<unsigned int>(p->team_number())).str(); te.set_string(1, team_str); // Status std::string stat_str; @@ -186,9 +185,9 @@ m_title_area->set_text ((boost::format(_("%s won!")) % single_won->get_name()).str()); } else { - uint16_t team_number = team_won; m_title_area->set_text - ((boost::format(_("Team %|1$u| won!")) % team_number).str()); + ((boost::format(_("Team %|1$u| won!")) + % static_cast<unsigned int>(team_won)).str()); } } m_players_table->update(); === modified file 'src/wui/general_statistics_menu.cc' --- src/wui/general_statistics_menu.cc 2014-07-25 13:45:18 +0000 +++ src/wui/general_statistics_menu.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,8 @@ #include <memory> +#include <boost/format.hpp> + #include "base/i18n.h" #include "graphic/graphic.h" #include "graphic/rendertarget.h" @@ -145,14 +147,14 @@ iterate_players_existing_novar(p, nr_players, game) ++plr_in_game; iterate_players_existing_const(p, nr_players, game, player) { - char buffer[36]; - snprintf(buffer, sizeof(buffer), "pics/genstats_enable_plr_%02u.png", p); + const std::string pic = (boost::format("pics/genstats_enable_plr_%02u.png") + % static_cast<unsigned int>(p)).str().c_str(); UI::Button & cb = *new UI::Button (hbox1, "playerbutton", 0, 0, 25, 25, g_gr->images().get("pics/but4.png"), - g_gr->images().get(buffer), + g_gr->images().get(pic), player->get_name().c_str()); cb.sigclicked.connect (boost::bind(&General_Statistics_Menu::cb_changed_to, this, p)); === modified file 'src/wui/interactive_base.cc' --- src/wui/interactive_base.cc 2014-07-28 14:23:03 +0000 +++ src/wui/interactive_base.cc 2014-08-03 18:56:48 +0000 @@ -307,9 +307,9 @@ static std::string speedString(uint32_t const speed) { if (speed) { - char buffer[32]; - snprintf(buffer, sizeof(buffer), ("%u.%ux"), speed / 1000, speed / 100 % 10); - return buffer; + return (boost::format("%u.%ux") + % (speed / 1000) + % (speed / 100 % 10)).str(); } return _("PAUSE"); } === modified file 'src/wui/multiplayersetupgroup.cc' --- src/wui/multiplayersetupgroup.cc 2014-07-24 18:22:30 +0000 +++ src/wui/multiplayersetupgroup.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "wui/multiplayersetupgroup.h" +#include <string> + #include <boost/format.hpp> #include "base/i18n.h" @@ -113,24 +115,26 @@ } else { name->set_text(us.name); if (m_save != us.position) { - char buf[42] = "pics/menu_tab_watch.png"; - char buf2[128]; + const char* pic; + const char* temp_tooltip; if (us.position < UserSettings::highestPlayernum()) { - snprintf - (buf, sizeof(buf), - "pics/genstats_enable_plr_0%i.png", us.position + 1); - snprintf(buf2, sizeof(buf2), _("Player %i"), us.position + 1); - } else - snprintf(buf2, sizeof(buf2), _("Spectator")); + pic = (boost::format("pics/genstats_enable_plr_0%u.png") + % static_cast<unsigned int>(us.position + 1)).str().c_str(); + temp_tooltip = (boost::format(_("Player %u")) + % static_cast<unsigned int>(us.position + 1)).str().c_str(); + } else { + pic = "pics/menu_tab_watch.png"; + temp_tooltip = _("Spectator"); + } // Either Button if changeable OR text if not if (m_id == s->settings().usernum) { - type->set_pic(g_gr->images().get(buf)); - type->set_tooltip(buf2); + type->set_pic(g_gr->images().get(pic)); + type->set_tooltip(temp_tooltip); type->set_visible(true); } else { - type_icon->setIcon(g_gr->images().get(buf)); - type_icon->set_tooltip(buf2); + type_icon->setIcon(g_gr->images().get(pic)); + type_icon->set_tooltip(temp_tooltip); type_icon->set_visible(true); } m_save = us.position; @@ -168,11 +172,11 @@ m_tribenames(tn) { set_size(w, h); - char buf[42]; - snprintf - (buf, sizeof(buf), "pics/fsel_editor_set_player_0%i_pos.png", id + 1); + + const std::string pic = (boost::format("pics/fsel_editor_set_player_0%i_pos.png") + % static_cast<unsigned int>(id + 1)).str().c_str(); player = - new UI::Icon(this, 0, 0, h, h, g_gr->images().get(buf)); + new UI::Icon(this, 0, 0, h, h, g_gr->images().get(pic)); add(player, UI::Box::AlignCenter); type = new UI::Button (this, "player_type", @@ -283,12 +287,12 @@ type ->set_tooltip(_("Shared in")); type ->set_pic(g_gr->images().get("pics/shared_in.png")); - char pic[42], hover[128]; - snprintf(pic, sizeof(pic), "pics/fsel_editor_set_player_0%i_pos.png", player_setting.shared_in); - snprintf(hover, sizeof(hover), _("Player %i"), player_setting.shared_in); + const std::string pic = (boost::format("pics/fsel_editor_set_player_0%u_pos.png") + % static_cast<unsigned int>(player_setting.shared_in)).str().c_str(); tribe->set_pic(g_gr->images().get(pic)); - tribe->set_tooltip(hover); + tribe->set_tooltip((boost::format(_("Player %u")) + % static_cast<unsigned int>(player_setting.shared_in)).str().c_str()); team ->set_visible(false); team ->set_enabled(false); @@ -339,9 +343,7 @@ tribe->set_flat(false); if (player_setting.team) { - char buf[64]; - snprintf(buf, sizeof(buf), "%i", player_setting.team); - team->set_title(buf); + team->set_title(std::to_string(static_cast<unsigned int>(player_setting.team))); } else { team->set_title("--"); } === modified file 'src/wui/playerdescrgroup.cc' --- src/wui/playerdescrgroup.cc 2014-07-24 18:22:30 +0000 +++ src/wui/playerdescrgroup.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "wui/playerdescrgroup.h" +#include <string> + #include <boost/format.hpp> #include "base/i18n.h" @@ -212,9 +214,7 @@ d->plr_name->set_text(player.name); if (player.team) { - char buf[64]; - snprintf(buf, sizeof(buf), "%i", player.team); - d->btnPlayerTeam->set_title(buf); + d->btnPlayerTeam->set_title(std::to_string(static_cast<unsigned int>(player.team))); } else { d->btnPlayerTeam->set_title("--"); } === modified file 'src/wui/plot_area.cc' --- src/wui/plot_area.cc 2014-07-20 07:46:50 +0000 +++ src/wui/plot_area.cc 2014-08-03 18:56:48 +0000 @@ -21,6 +21,7 @@ #include "wui/plot_area.h" #include <cstdio> +#include <string> #include <boost/format.hpp> #include <boost/lexical_cast.hpp> @@ -367,7 +368,7 @@ // print the maximal value into the top right corner draw_value - ((format("%u") % max).str(), RGBColor(60, 125, 0), + (std::to_string(max), RGBColor(60, 125, 0), Point(get_inner_w() - space_at_right - 2, spacing + 2), dst); // plot the pixels @@ -570,7 +571,7 @@ } //print the min and max values draw_value - ((boost::format("%u") % highest_scale).str(), RGBColor(60, 125, 0), + (std::to_string(highest_scale), RGBColor(60, 125, 0), Point(get_inner_w() - space_at_right - 2, spacing + 2), dst); draw_value === modified file 'src/wui/productionsitewindow.cc' --- src/wui/productionsitewindow.cc 2014-07-28 16:59:54 +0000 +++ src/wui/productionsitewindow.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,8 @@ #include "wui/productionsitewindow.h" +#include <boost/format.hpp> + #include "economy/request.h" #include "graphic/graphic.h" #include "logic/constructionsite.h" @@ -173,14 +175,11 @@ assert(worker->descr().becomes() != Widelands::INVALID_INDEX); // Fill upgrade status - char buffer[7]; - snprintf - (buffer, sizeof(buffer), - "%i/%i", - worker->get_current_experience(), - worker->descr().get_needed_experience()); - - er.set_string(1, buffer); + /** TRANSLATORS: %1% = the experience a worker has */ + /** TRANSLATORS: %2% = the experience a worker needs to reach the next level */ + er.set_string(1, (boost::format(_("%1%/%2%")) + % worker->get_current_experience() + % worker->descr().get_needed_experience()).str()); er.set_string (2, worker->descr().tribe().get_worker_descr (worker->descr().becomes())->descname()); === modified file 'src/wui/watchwindow.cc' --- src/wui/watchwindow.cc 2014-07-26 10:43:23 +0000 +++ src/wui/watchwindow.cc 2014-08-03 18:56:48 +0000 @@ -19,6 +19,7 @@ #include "wui/watchwindow.h" +#include <string> #include <vector> #include "base/i18n.h" @@ -203,9 +204,8 @@ void WatchWindow::toggle_buttons() { for (uint32_t i = 0; i < NUM_VIEWS; ++i) { if (i < views.size()) { - char buffer[32]; - snprintf(buffer, sizeof(buffer), "%i", i + 1); - view_btns[i]->set_title(buffer); + //(boost::format("%u soldier") % stationed).str() + view_btns[i]->set_title(std::to_string(i + 1)); view_btns[i]->set_enabled(true); } else { view_btns[i]->set_title("-"); === modified file 'txts/README.lua' --- txts/README.lua 2014-03-25 06:18:48 +0000 +++ txts/README.lua 2014-08-03 18:56:48 +0000 @@ -1,5 +1,4 @@ include "scripting/formatting.lua" -include "scripting/format_help.lua" set_textdomain("texts")
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp