summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrazymaster <ken.i54k@gmail.com>2013-07-13 03:02:00 +0900
committercrazymaster <ken.i54k@gmail.com>2013-07-14 21:08:45 +0900
commit6550565af387119b080a65d71f77f1261752595b (patch)
treeaafe93e45d468b731e6e05bc59821f020f2d397b /src
parentd6d34cd0f49621c6f5ea992820c4564f5e968b73 (diff)
downloadlibgit2-6550565af387119b080a65d71f77f1261752595b.tar.gz
Fix gather_stats
Diffstat (limited to 'src')
-rw-r--r--src/buf_text.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/buf_text.c b/src/buf_text.c
index 443454b5f..bc8d04680 100644
--- a/src/buf_text.c
+++ b/src/buf_text.c
@@ -261,29 +261,34 @@ bool git_buf_text_gather_stats(
/* Counting loop */
while (scan < end) {
unsigned char c = *scan++;
-
- if ((c > 0x1F && c < 0x7F) || c > 0x9f)
- 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*/
+ 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':
stats->printable++;
break;
+ case 0:
+ stats->nul++;
+ /* fall through */
default:
stats->nonprintable++;
- break;
}
+ }
+ else
+ stats->printable++;
}
return (stats->nul > 0 ||