On 12/10/2013 12:54 AM, Eric Blake wrote: > On 12/09/2013 12:18 PM, Pádraig Brady wrote: >> On 12/09/2013 06:43 PM, Andreas Schwab wrote: >>> Pádraig Brady <[email protected]> writes: >>> >>>> diff --git a/tests/readlink/multi.sh b/tests/readlink/multi.sh >>>> index 3b91544..dc4ba87 100755 >>>> --- a/tests/readlink/multi.sh >>>> +++ b/tests/readlink/multi.sh >>>> @@ -40,7 +40,7 @@ compare exp out || fail=1 >>>> # Note the edge case that the last xargs run may not have a delimiter >>>> rm out || framework_failure_ >>>> printf '/1\0/1\0/1' > exp || framework_failure_ >>>> -printf '/1 /1 /1' | xargs -n2 readlink -n -m --zero >> out || fail=1 >>>> +printf '/1 /1 /1 ' | xargs -n2 readlink -n -m --zero >> out || fail=1 >>> >>> Still wrong. >>> >>> <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html>: >>> >>> The standard input shall be a text file. >> >> A "text file" doesn't have to have a new line AFAIK, >> so the above should be fine. > > A text file must either end in newline or be empty; your approach does > neither.
This is beside the point for xargs as space is a delimiter, but POSIX says: Text file = "A file that contains characters organized into zero or more lines..." That suggests to me a newline is not required. If it is required I'd suggest changing that description. > Why not just: > > readlink -n -m --zero /1 /1 >> out || fail=1 > readlink -n -m --zero /1 >> out || fail=1 > > and just avoid the printf and xargs altogether? The point was to demonstrate an edge case possible with xargs, so a comment would suffice I suppose. thanks, Pádraig.
