#1021. Thank You Thomas for reporting this and the patch.

v0.27.3
Robin Mills 11 years ago
parent 97aa1149c9
commit b59768df7d

@ -149,6 +149,15 @@ namespace {
exists and shouldn't be overwritten, else 0. exists and shouldn't be overwritten, else 0.
*/ */
int dontOverwrite(const std::string& path); int dontOverwrite(const std::string& path);
/*!
@brief Output a text with a given minimum number of chars, honoring
multi-byte characters correctly. Replace code in the form
os << setw(width) << myString
with
os << make_pair( myString, width)
*/
std::ostream& operator<<( std::ostream& os, std::pair< const std::string&, unsigned int> strAndWidth);
} }
// ***************************************************************************** // *****************************************************************************
@ -443,8 +452,8 @@ namespace Action {
if (Params::instance().files_.size() > 1) { if (Params::instance().files_.size() > 1) {
std::cout << std::setw(20) << path_ << " "; std::cout << std::setw(20) << path_ << " ";
} }
std::cout << std::setw(align_) std::cout << std::make_pair( label, align_)
<< label << ": "; << ": ";
} }
int Print::printTag(const Exiv2::ExifData& exifData, int Print::printTag(const Exiv2::ExifData& exifData,
@ -2009,4 +2018,16 @@ namespace {
return 0; return 0;
} }
std::ostream& operator<<( std::ostream& os, std::pair< const std::string&, unsigned int> strAndWidth)
{
const std::string& str( strAndWidth.first);
unsigned int minChCount( strAndWidth.second);
unsigned int count = mbstowcs( NULL, str.c_str(), 0); // returns 0xFFFFFFFF on error
if( count < minChCount)
{
minChCount += str.size() - count;
}
return os << std::setw( minChCount) << str;
}
} }

Loading…
Cancel
Save