Subject: Re: bug#8154: du: issue with `--files0-from=DIR'

From: Jim Meyering <[email-masked]>
Date: Wed, 02 Mar 2011 18:35:22 +0100

Pádraig Brady wrote:
> On 02/03/11 17:10, Paul Eggert wrote:
>> On 03/02/2011 07:09 AM, Jim Meyering wrote:
>>> -  struct argv_iterator *ai = malloc (sizeof *ai);
>>> +  struct argv_iterator *ai;
>>> +  struct stat st;
>>> +
>>> +  if (fstat (fileno (fp),&st) == 0&&  S_ISDIR (st.st_mode))
>>> +    {
>>> +      errno = EISDIR;
>>> +      return NULL;
>>> +    }
>>> +
>>> +  ai = malloc (sizeof *ai);
>>
>> My kneejerk reaction is that this part of the patch
>> should not be needed (though other fixes obviously are).
>> There are lots of reasons that the stream could fail:
>> why check for directories specially?  Just let the
>> stream fail in the way that it normally would; this
>> keeps the code smaller and simpler.  On an ancient
>> host where "cat dir/" works, "du --files0-from=dir/"
>> should not arbitrarily fail.
>
> I thought that at first too, but it seems like
> it might cause more issues that not, by allowing it?
> Testing bsd here shows that valid NUL terminated file names
> are returned, but also there is other info interspersed.

I'm planning to skip the new tests when "cat some-dir" succeeds.