svn commit: r336754 - in head/usr.bin/diff: . tests
Xin LI
delphij at FreeBSD.org
Fri Jul 27 05:21:21 UTC 2018
Author: delphij
Date: Fri Jul 27 05:21:20 2018
New Revision: 336754
URL: https://svnweb.freebsd.org/changeset/base/336754
Log:
Improve --strip-trailing-cr handling:
- Advance ctold for f1 and ctnew for f2
- ungetc() if the character is unexpected
- Don't break early when we hit the combination on one side
PR: 230049
Reported by: maskray <emacsray gmail com>
Reviewed by: bapt, maskray
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D16451
Modified:
head/usr.bin/diff/diffreg.c
head/usr.bin/diff/tests/diff_test.sh
Modified: head/usr.bin/diff/diffreg.c
==============================================================================
--- head/usr.bin/diff/diffreg.c Fri Jul 27 01:20:34 2018 (r336753)
+++ head/usr.bin/diff/diffreg.c Fri Jul 27 05:21:20 2018 (r336754)
@@ -720,19 +720,22 @@ check(FILE *f1, FILE *f2, int flags)
}
ctold++;
ctnew++;
- if (flags & D_STRIPCR) {
+ if (flags & D_STRIPCR && (c == '\r' || d == '\r')) {
if (c == '\r') {
if ((c = getc(f1)) == '\n') {
- ctnew++;
- break;
+ ctold++;
+ } else {
+ ungetc(c, f1);
}
}
if (d == '\r') {
if ((d = getc(f2)) == '\n') {
- ctold++;
- break;
+ ctnew++;
+ } else {
+ ungetc(d, f2);
}
}
+ break;
}
if ((flags & D_FOLDBLANKS) && isspace(c) &&
isspace(d)) {
Modified: head/usr.bin/diff/tests/diff_test.sh
==============================================================================
--- head/usr.bin/diff/tests/diff_test.sh Fri Jul 27 01:20:34 2018 (r336753)
+++ head/usr.bin/diff/tests/diff_test.sh Fri Jul 27 05:21:20 2018 (r336754)
@@ -8,6 +8,7 @@ atf_test_case ifdef
atf_test_case group_format
atf_test_case side_by_side
atf_test_case brief_format
+atf_test_case b230049
simple_body()
{
@@ -52,6 +53,15 @@ unified_body()
diff -u9999 -L input_c1.in -L input_c2.in "$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in"
}
+b230049_body()
+{
+ printf 'a\nb\r\nc\n' > b230049_a.in
+ printf 'a\r\nb\r\nc\r\n' > b230049_b.in
+ atf_check -o empty -s eq:0 \
+ diff -up --strip-trailing-cr -L b230049_a.in -L b230049_b.in \
+ b230049_a.in b230049_b.in
+}
+
header_body()
{
export TZ=UTC
@@ -150,4 +160,5 @@ atf_init_test_cases()
atf_add_test_case group_format
atf_add_test_case side_by_side
atf_add_test_case brief_format
+ atf_add_test_case b230049
}
More information about the svn-src-all
mailing list