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.


Reply via email to