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.

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to