+bool PatchIcon(icon_x* icon, const bf::path& dst_path) {
+ bs::error_code error;
+ bf::path icon_text(icon->text);
+ bf::path icon_path = dst_path;
+ if (strcmp(icon->lang, DEFAULT_LOCALE)) {
+ icon_path += ".";
+ icon_path += icon->lang;
+ }
+ if (icon_text.has_extension())
+ icon_path += icon_text.extension();
+ else
+ icon_path += ".png";
+
+ bf::copy_file(icon->text, icon_path,
+ bf::copy_option::overwrite_if_exists, error);
+ if (error) {
+ LOG(ERROR) << "Failed to move icon from " << icon->text << " to "
+ << icon_path;
+ return false;
+ }
+ if (icon->text)
+ free(const_cast<char*>(icon->text));
+ icon->text = strdup(icon_path.c_str());
+
+ return true;
+}
+