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.