I found:
/* Warn about partial reads if bs=SIZE is given and iflag=fullblock
is not, and if counting or skipping bytes or using direct I/O.
This helps to avoid confusion with miscounts, and to avoid issues
with direct I/O on GNU/Linux. */
warn_partial_read =
(! (conversions_mask & C_TWOBUFS) && ! (input_flags
& O_FULLBLOCK)
&& (skip_records
|| (0 < max_records && max_records < (uintmax_t)
-1)
|| (input_flags | output_flags) & O_DIRECT));
------------
I'm not doing conversions and didn't have fullblock set.
I'm not skipping records
input has o_direct set...
but the troublesome line:
|| (0 < max_records && max_records < (uintmax_t)
-1)
I asked to copy 1,2 or 4 records
uintmax -1 = 0xffff fffe --- I don't understand, if max_records is
>0
and less than ~4G-1, set this flag?
I'm assuming it's a flag to display the message or not, as I know it
doesn't display the message most of the time...
Is that right uintmax? or should that be an unsigned long int max?
But I don't think that's the root cause of what I am seeing. But that
statement doesn't look right....
It acts more like something (maybe not dd), is running with a 32-bit
word size.