Bug no diff: saída errada para arquivos de um caracter sem nova linha [closed]

3

Considere isso:

echo -n a > /tmp/a
echo -n b > /tmp/b
diff -B /tmp/a /tmp/b
Claramente, os dois arquivos são diferentes, mas o diff parece pensar que os arquivos são idênticos. Eu consegui reproduzir este problema no Ubuntu 14.04 com o diffutils 3.3, no CloudLinux 5.10 com o diffutils 2.8.1, e também no Ubuntu 10.04 com o diffutils 2.8.1.

Se eu não usar a opção -B, o problema desaparece. Se os arquivos terminarem com uma nova linha, o problema desaparece. Se os arquivos contiverem mais de 1 caractere, o problema desaparece.

Eu tentei pesquisar na web uma explicação para esse comportamento, mas não obtive êxito.

Alguém pode explicar o que está acontecendo?

E qual é a solução mais simples que eu poderia usar para isso - o comportamento -B é importante para mim.

    
por Navin 03.09.2014 / 10:56

1 resposta

1

Soa como um bug para mim. Eu tentei isso com o Ubuntu 14.04. Vá em frente e relate o bug.

Com alguns dos modos de saída (ed script, side-by-side) mesmo -B funciona, mas não com os outros.

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$ 
    
por 03.09.2014 / 11:41

Tags