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.

Reply via email to