aboutsummaryrefslogtreecommitdiff
path: root/absl/flags/internal/usage.cc
diff options
context:
space:
mode:
authorGennadiy Rozental <rogeeff@google.com>2023-06-07 07:24:05 -0700
committerCopybara-Service <copybara-worker@google.com>2023-06-07 07:25:07 -0700
commit86aaa72a33a9f6729d6cf3f7a8d551935cf5b5f8 (patch)
tree9bd5dc3fecad8193784e96a4bb1a2d6ed16fab4c /absl/flags/internal/usage.cc
parent1285ca4b4f06e40ca0238bde7197e0cb3648a451 (diff)
downloadabseil-86aaa72a33a9f6729d6cf3f7a8d551935cf5b5f8.tar.gz
abseil-86aaa72a33a9f6729d6cf3f7a8d551935cf5b5f8.tar.bz2
abseil-86aaa72a33a9f6729d6cf3f7a8d551935cf5b5f8.zip
Update XML output to properly print special characters. Non printable characters are skipped in output. All the "whitespace-like" (including \t, \r, \n) characters printed as plain space ' '.
PiperOrigin-RevId: 538479923 Change-Id: I62dff39bb21f376d00a7b9480f8f1d31d7015e45
Diffstat (limited to 'absl/flags/internal/usage.cc')
-rw-r--r--absl/flags/internal/usage.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/absl/flags/internal/usage.cc b/absl/flags/internal/usage.cc
index 6a56fce9..13852e14 100644
--- a/absl/flags/internal/usage.cc
+++ b/absl/flags/internal/usage.cc
@@ -92,8 +92,16 @@ class XMLElement {
case '>':
out << "&gt;";
break;
+ case '\n':
+ case '\v':
+ case '\f':
+ case '\t':
+ out << " ";
+ break;
default:
- out << c;
+ if (IsValidXmlCharacter(static_cast<unsigned char>(c))) {
+ out << c;
+ }
break;
}
}
@@ -102,6 +110,7 @@ class XMLElement {
}
private:
+ static bool IsValidXmlCharacter(unsigned char c) { return c >= 0x20; }
absl::string_view tag_;
absl::string_view txt_;
};