widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #02629
Re: [Merge] lp:~widelands-dev/widelands/boost_format into lp:widelands
Review: Needs Fixing
There are a couple of static_casts<> from int to unsigned int. They should not be needed imho. The only cast that is needed for integers using boost::format is from (int8 or Uint8) to any other integer - because format() interprets then as char/uchar, i.e. a single character. Could you remove them where possible?
Diff comments:
> === 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 19:13:57 +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 19:13:57 +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 19:13:57 +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"))
weird formatting. please, no whitespace before ->.
> + % 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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 19:13:57 +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 'test/maps/lua_testsuite.wmf/scripting/baseimmovables.lua'
> --- test/maps/lua_testsuite.wmf/scripting/baseimmovables.lua 2014-07-28 18:30:11 +0000
> +++ test/maps/lua_testsuite.wmf/scripting/baseimmovables.lua 2014-08-03 19:13:57 +0000
> @@ -98,7 +98,7 @@
> self.none = map:place_immovable("pebble1", map:get_field(19, 10))
> self.small = map:place_immovable("aspen_summer_old", map:get_field(18, 10))
> self.medium = player1:place_building(
> - "burners_house", map:get_field(10,10), false, true
> + "charcoal_kiln", map:get_field(10,10), false, true
> )
> self.big = map:place_immovable("greenland_stones4", map:get_field(20, 10))
> self.big_building = player1:place_building(
> @@ -135,8 +135,8 @@
> function immovable_property_tests:test_name_tree()
> assert_equal("aspen_summer_old", self.small.descr.name)
> end
> -function immovable_property_tests:test_name_charcoal_burner()
> - assert_equal("burners_house", self.medium.descr.name)
> +function immovable_property_tests:test_name_charcoal_kiln()
> + assert_equal("charcoal_kiln", self.medium.descr.name)
> end
> function immovable_property_tests:test_name_stone()
> assert_equal("greenland_stones4", self.big.descr.name)
> @@ -151,9 +151,9 @@
> function immovable_property_tests:test_type_tree()
> assert_equal("immovable", self.small.descr.type_name)
> end
> -function immovable_property_tests:test_type_charcoal_burner()
> +function immovable_property_tests:test_type_charcoal_kiln()
> assert_equal("productionsite", self.medium.descr.type_name)
> - assert_equal("burners_house", self.medium.descr.name)
> + assert_equal("charcoal_kiln", self.medium.descr.name)
> end
> function immovable_property_tests:test_type_stone()
> assert_equal("immovable", self.big.descr.type_name)
> @@ -171,7 +171,7 @@
> assert_equal(1, #self.small.fields)
> assert_equal(map:get_field(18,10), self.small.fields[1])
> end
> -function immovable_property_tests:test_fields_charcoal_burner()
> +function immovable_property_tests:test_fields_charcoal_kiln()
> assert_equal(1, #self.medium.fields)
> assert_equal(map:get_field(10,10), self.medium.fields[1])
> end
>
> === modified file 'test/maps/lua_testsuite.wmf/scripting/immovables_descriptions.lua'
> --- test/maps/lua_testsuite.wmf/scripting/immovables_descriptions.lua 2014-07-26 09:48:21 +0000
> +++ test/maps/lua_testsuite.wmf/scripting/immovables_descriptions.lua 2014-08-03 19:13:57 +0000
> @@ -352,7 +352,7 @@
>
> function test_descr:test_producers()
> local ware_description = egbase:get_ware_description("barbarians","coal")
> - assert_equal("burners_house", ware_description.producers[1].name)
> + assert_equal("charcoal_kiln", ware_description.producers[1].name)
> assert_equal("deeper_coalmine", ware_description.producers[2].name)
> assert_equal("deep_coalmine", ware_description.producers[3].name)
> assert_equal("coalmine", ware_description.producers[4].name)
>
> === modified file 'txts/README.lua'
> --- txts/README.lua 2014-03-25 06:18:48 +0000
> +++ txts/README.lua 2014-08-03 19:13:57 +0000
> @@ -1,5 +1,4 @@
> include "scripting/formatting.lua"
> -include "scripting/format_help.lua"
>
> set_textdomain("texts")
>
>
--
https://code.launchpad.net/~widelands-dev/widelands/boost_format/+merge/229366
Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/boost_format.
References