Package: moreutils

combine's xor does not handle named pipes correctly.  The same bug is
triggered if a file is read from stdin.  I'll send a possible fix after
knowing the bug number.


Used zsh syntax in a nutshell:
    <(cmd) creates a named pipe with cmd's output as content
    =(cmd) creates a real file with cmd's output as content

These commands were run on Debian stable, but combine in stable and sid
is the same (except for the used Perl version):

  $ : this is correct:
  $ combine =(seq 1 2) xor =(seq 2 3)
  1
  3

  $ : these are equivalent, and both wrong:
  $ combine <(seq 1 2) xor =(seq 2 3)
  1
  2
  3
  $ seq 1 2 | combine - xor =(seq 2 3)
  1
  2
  3

  $ : also wrong:
  $ combine =(seq 1 2) xor <(seq 2 3)
  1
  $ combine <(seq 1 2) xor <(seq 2 3)
  1


The reason for this is that compare_xor($$) runs compare_not($$) twice
and compare_not($$) reads the content of both filenames passed as
arguments to it.  The first time a pipe is read, the contents of the
file is returned and reading stops when EOF is read.  The second time
EOF is read, EOF is returned immediately, thus the file is assumed to be
empty by compare_not($$).

For example, if you run combine <(seq 1 2) xor =(seq 2 3), combine
should do the same as:
    combine =(seq 1 2) not =(seq 2 3)  -->  prints 1
    combine =(seq 2 3) not =(seq 1 2)  -->  prints 3
but it does:
    combine =(seq 1 2) not =(seq 2 3)  -->  prints 1
    combine =(seq 2 3) not =(:)        -->  prints 2 and 3


JFYI: The next Ubuntu LTS is going to be released soonish and they won't
merge packages from Debian anymore unless they are asked to do so.


Regards
Carsten



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to