diff options
| author | crazymaster <ken.i54k@gmail.com> | 2013-07-13 03:02:00 +0900 |
|---|---|---|
| committer | crazymaster <ken.i54k@gmail.com> | 2013-07-14 21:08:45 +0900 |
| commit | 6550565af387119b080a65d71f77f1261752595b (patch) | |
| tree | aafe93e45d468b731e6e05bc59821f020f2d397b /src | |
| parent | d6d34cd0f49621c6f5ea992820c4564f5e968b73 (diff) | |
| download | libgit2-6550565af387119b080a65d71f77f1261752595b.tar.gz | |
Fix gather_stats
Diffstat (limited to 'src')
| -rw-r--r-- | src/buf_text.c | 41 |
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 || |
