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.