← Back to team overview

widelands-dev team mailing list archive

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