From cb769c62e55599e9f980001830bc61d9fcaa64a9 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Tue, 8 Feb 2022 09:18:08 -0500 Subject: WHITESPACE ONLY -- expand tabs in source code This comment expands all tabs using an 8-character tab-width. You should ignore this commit when using git blame or use git blame -w. In the early days, I used to use tabs where possible for indentation, since emacs did this automatically. In recent years, I have switched to only using spaces, which means qpdf source code has been a mixture of spaces and tabs. I have avoided cleaning this up because of not wanting gratuitous whitespaces change to cloud the output of git blame, but I changed my mind after discussing with users who view qpdf source code in editors/IDEs that have other tab widths by default and in light of the fact that I am planning to start applying automatic code formatting soon. --- libqpdf/QPDF_String.cc | 174 ++++++++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) (limited to 'libqpdf/QPDF_String.cc') diff --git a/libqpdf/QPDF_String.cc b/libqpdf/QPDF_String.cc index 8f10b977..0fcec2d3 100644 --- a/libqpdf/QPDF_String.cc +++ b/libqpdf/QPDF_String.cc @@ -70,102 +70,102 @@ QPDF_String::unparse(bool force_binary) bool use_hexstring = force_binary; if (! use_hexstring) { - unsigned int nonprintable = 0; - int consecutive_printable = 0; - for (unsigned int i = 0; i < this->val.length(); ++i) - { - char ch = this->val.at(i); - // Note: do not use locale to determine printability. The - // PDF specification accepts arbitrary binary data. Some - // locales imply multibyte characters. We'll consider - // something printable if it is printable in 7-bit ASCII. - // We'll code this manually rather than being rude and - // setting locale. - if ((ch == 0) || (! (is_ascii_printable(ch) || - strchr("\n\r\t\b\f", ch)))) - { - ++nonprintable; - consecutive_printable = 0; - } - else - { - if (++consecutive_printable > 5) - { - // If there are more than 5 consecutive printable - // characters, I want to see them as such. - nonprintable = 0; - break; - } - } - } - - // Use hex notation if more than 20% of the characters are not - // printable in plain ASCII. - if (5 * nonprintable > val.length()) - { - use_hexstring = true; - } + unsigned int nonprintable = 0; + int consecutive_printable = 0; + for (unsigned int i = 0; i < this->val.length(); ++i) + { + char ch = this->val.at(i); + // Note: do not use locale to determine printability. The + // PDF specification accepts arbitrary binary data. Some + // locales imply multibyte characters. We'll consider + // something printable if it is printable in 7-bit ASCII. + // We'll code this manually rather than being rude and + // setting locale. + if ((ch == 0) || (! (is_ascii_printable(ch) || + strchr("\n\r\t\b\f", ch)))) + { + ++nonprintable; + consecutive_printable = 0; + } + else + { + if (++consecutive_printable > 5) + { + // If there are more than 5 consecutive printable + // characters, I want to see them as such. + nonprintable = 0; + break; + } + } + } + + // Use hex notation if more than 20% of the characters are not + // printable in plain ASCII. + if (5 * nonprintable > val.length()) + { + use_hexstring = true; + } } std::string result; if (use_hexstring) { - result += "<" + QUtil::hex_encode(this->val) + ">"; + result += "<" + QUtil::hex_encode(this->val) + ">"; } else { - result += "("; - for (unsigned int i = 0; i < this->val.length(); ++i) - { - char ch = this->val.at(i); - switch (ch) - { - case '\n': - result += "\\n"; - break; - - case '\r': - result += "\\r"; - break; - - case '\t': - result += "\\t"; - break; - - case '\b': - result += "\\b"; - break; - - case '\f': - result += "\\f"; - break; - - case '(': - result += "\\("; - break; - - case ')': - result += "\\)"; - break; - - case '\\': - result += "\\\\"; - break; - - default: - if (is_iso_latin1_printable(ch)) - { - result += this->val.at(i); - } - else - { - result += "\\" + QUtil::int_to_string_base( + result += "("; + for (unsigned int i = 0; i < this->val.length(); ++i) + { + char ch = this->val.at(i); + switch (ch) + { + case '\n': + result += "\\n"; + break; + + case '\r': + result += "\\r"; + break; + + case '\t': + result += "\\t"; + break; + + case '\b': + result += "\\b"; + break; + + case '\f': + result += "\\f"; + break; + + case '(': + result += "\\("; + break; + + case ')': + result += "\\)"; + break; + + case '\\': + result += "\\\\"; + break; + + default: + if (is_iso_latin1_printable(ch)) + { + result += this->val.at(i); + } + else + { + result += "\\" + QUtil::int_to_string_base( static_cast(static_cast(ch)), 8, 3); - } - break; - } - } - result += ")"; + } + break; + } + } + result += ")"; } return result; -- cgit v1.2.3-54-g00ecf