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.