Subject: bug#7362: dd strangeness

From: Paul Eggert <[email-masked]>
Date: Fri, 04 Mar 2011 10:04:02 -0800

On 03/04/2011 02:09 AM, Pádraig Brady wrote:
> On 04/03/11 07:44, Paul Eggert wrote:
>> +      /* If bs=SIZE is given and iflag=fullblock is not, warn if a
>
> Do you check that bs= is specified?

I meant to, but I inadvertently deleted that part of the change,
which meant that the code didn't implement the comment correctly.
Sorry about that; see below.

> Anyway, with this patch the following slightly contrived example will warn:

The following further patch, which fixes the abovementioned typo,
should address that problem.

--- a/src/dd.c
+++ b/src/dd.c
@@ -814,7 +814,7 @@ iread (int fd, char *buf, size_t size)
        static bool warned;
        static ssize_t prev_nread;
  
-      if (! warned && iread_fnc == iread
+      if (! warned && ! (conversions_mask & C_TWOBUFS) && iread_fnc == iread
            && 0 < prev_nread && prev_nread < size
            && (skip_records
                || (0 < max_records && max_records < (uintmax_t) -1)))