3

Consider this:

echo -n a > /tmp/a
echo -n b > /tmp/b
diff -B /tmp/a /tmp/b

Clearly, the two files are different, yet, diff seems to think that the files are identical. I've managed to reproduce this problem on Ubuntu 14.04 with diffutils 3.3, on CloudLinux 5.10 with diffutils 2.8.1, and also Ubuntu 10.04 with diffutils 2.8.1.

If I don't use the -B option, the problem goes away. If the files do end with a newline, the problem goes away. If the files contain more than 1 character, the problem goes away.

I've tried searching the web for an explanation for this behavior but haven't been successful.

Can someone explain what's going on?

And, what is the simplest workaround that I could use for this - the -B behavior is important for me.

Navin
  • 133
  • 5

1 Answers1

1

Sounds like a bug to me. I tried this with Ubuntu 14.04. Go on and report the bug.

With some of the output modes (ed script, side-by-side) even -B works, but not with the others.

jaba@jaba-ubuntu:~/diffbug$ diff -e -B a b
1c
b
.
diff: a: No newline at end of file

diff: b: No newline at end of file

jaba@jaba-ubuntu:~/diffbug$ diff -y -B a b
a                               bjaba@jaba-ubuntu:~/diffbug$