COMMON: Add an optional parameter to tag2str() for printing non-printables

This time without variadic macros
This commit is contained in:
Eugene Sandulenko 2021-06-29 22:13:06 +02:00
parent 76c6bcef2b
commit f6e33231bb
No known key found for this signature in database
GPG key ID: 014D387312D34F08
2 changed files with 28 additions and 13 deletions

View file

@ -689,19 +689,24 @@ void replace(Common::String &source, const Common::String &what, const Common::S
}
}
String tag2string(uint32 tag) {
char str[5];
str[0] = (char)(tag >> 24);
str[1] = (char)(tag >> 16);
str[2] = (char)(tag >> 8);
str[3] = (char)tag;
str[4] = '\0';
// Replace non-printable chars by dot
for (int i = 0; i < 4; ++i) {
if (!Common::isPrint(str[i]))
str[i] = '.';
String tag2string(uint32 tag, bool nonPrintable) {
Common::String res;
for (int i = 3; i >= 0; i--) {
byte b = (tag >> (8 * i)) & 0xff;
if (!Common::isPrint(b)) {
if (nonPrintable) {
res += Common::String::format("\\%03o", b);
} else {
res += '.';
}
} else {
res += b;
}
}
return String(str);
return res;
}
#endif