git: e43239f5140e - main - diff: simplify the hash functions
Baptiste Daroussin
bapt at FreeBSD.org
Wed Jan 27 11:28:45 UTC 2021
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=e43239f5140e1b80de122458a2ac037172866058
commit e43239f5140e1b80de122458a2ac037172866058
Author: Baptiste Daroussin <bapt at FreeBSD.org>
AuthorDate: 2021-01-26 15:25:00 +0000
Commit: Baptiste Daroussin <bapt at FreeBSD.org>
CommitDate: 2021-01-27 11:28:26 +0000
diff: simplify the hash functions
Instead of 3 different complex case they have all been folded into a
simple on based on switch
---
usr.bin/diff/diffreg.c | 77 ++++++++++++++++++--------------------------------
1 file changed, 27 insertions(+), 50 deletions(-)
diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c
index f8c25f822147..564032751862 100644
--- a/usr.bin/diff/diffreg.c
+++ b/usr.bin/diff/diffreg.c
@@ -1349,64 +1349,41 @@ readhash(FILE *f, int flags)
sum = 1;
space = 0;
- if ((flags & (D_FOLDBLANKS|D_IGNOREBLANKS)) == 0) {
- if (flags & D_IGNORECASE)
- for (i = 0; (t = getc(f)) != '\n'; i++) {
- if (flags & D_STRIPCR && t == '\r') {
- t = getc(f);
- if (t == '\n')
- break;
- ungetc(t, f);
- }
- if (t == EOF) {
- if (i == 0)
- return (0);
+ for (i = 0;;) {
+ switch (t = getc(f)) {
+ case '\r':
+ if (flags & D_STRIPCR) {
+ t = getc(f);
+ if (t == '\n')
break;
- }
- sum = sum * 127 + chrtran(t);
- }
- else
- for (i = 0; (t = getc(f)) != '\n'; i++) {
- if (flags & D_STRIPCR && t == '\r') {
- t = getc(f);
- if (t == '\n')
- break;
- ungetc(t, f);
- }
- if (t == EOF) {
- if (i == 0)
- return (0);
- break;
- }
- sum = sum * 127 + t;
+ ungetc(t, f);
}
- } else {
- for (i = 0;;) {
- switch (t = getc(f)) {
- case '\r':
- case '\t':
- case '\v':
- case '\f':
- case ' ':
+ /* FALLTHROUGH */
+ case '\t':
+ case '\v':
+ case '\f':
+ case ' ':
+ if ((flags & (D_FOLDBLANKS|D_IGNOREBLANKS)) != 0) {
space++;
continue;
- default:
- if (space && (flags & D_IGNOREBLANKS) == 0) {
- i++;
- space = 0;
- }
- sum = sum * 127 + chrtran(t);
+ }
+ /* FALLTHROUGH */
+ default:
+ if (space && (flags & D_IGNOREBLANKS) == 0) {
i++;
- continue;
- case EOF:
- if (i == 0)
- return (0);
- /* FALLTHROUGH */
- case '\n':
- break;
+ space = 0;
}
+ sum = sum * 127 + chrtran(t);
+ i++;
+ continue;
+ case EOF:
+ if (i == 0)
+ return (0);
+ /* FALLTHROUGH */
+ case '\n':
break;
}
+ break;
}
/*
* There is a remote possibility that we end up with a zero sum.
More information about the dev-commits-src-all
mailing list