summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buf_text.c41
1 files changed, 18 insertions, 23 deletions
diff --git a/src/buf_text.c b/src/buf_text.c
index bc8d04680..472339def 100644
--- a/src/buf_text.c
+++ b/src/buf_text.c
@@ -261,34 +261,29 @@ bool git_buf_text_gather_stats(
/* Counting loop */
while (scan < end) {
unsigned char c = *scan++;
- if (c == '\r') {
- stats->cr++;
- if (scan < end && *scan == '\n')
- stats->crlf++;
- continue;
- }
- if (c == '\n') {
- stats->lf++;
- continue;
- }
- if (c == 127)
- /* DEL */
- stats->nonprintable++;
- else if (c < 32) {
- switch (c) {
- /* BS, HT, ESC and FF */
- case '\b': case '\t': case '\033': case '\014':
+
+ if (c > 0x1F && c != 0x7F)
+ stats->printable++;
+ else switch (c) {
+ case '\0':
+ stats->nul++;
+ stats->nonprintable++;
+ break;
+ case '\n':
+ stats->lf++;
+ break;
+ case '\r':
+ stats->cr++;
+ if (scan < end && *scan == '\n')
+ stats->crlf++;
+ break;
+ case '\t': case '\f': case '\v': case '\b': case 0x1b: /*ESC*/
stats->printable++;
break;
- case 0:
- stats->nul++;
- /* fall through */
default:
stats->nonprintable++;
+ break;
}
- }
- else
- stats->printable++;
}
return (stats->nul > 0 ||