On 12/16/2014 08:46 AM, Paul Eggert wrote:
> @@ -1384,27 +1385,33 @@ scanargs (int argc, char *const *argv)
>                                        N_("invalid status level"));
>        else
>          {
> -          bool invalid = false;
> +          strtol_error invalid = LONGINT_OK;
>            uintmax_t n = parse_integer (val, &invalid);
> +          uintmax_t n_min = 0;
> +          uintmax_t n_max = UINTMAX_MAX;
>  
>            if (operand_is (name, "ibs"))
>              {
> -              invalid |= ! (0 < n && n <= MAX_BLOCKSIZE (INPUT_BLOCK_SLOP));
> +              n_min = 1;
> +              n_max = MAX_BLOCKSIZE (INPUT_BLOCK_SLOP);
>                input_blocksize = n;
>              }
>            else if (operand_is (name, "obs"))
>              {
> -              invalid |= ! (0 < n && n <= MAX_BLOCKSIZE (OUTPUT_BLOCK_SLOP));
> +              n_min = 1;
> +              n_max = MAX_BLOCKSIZE (INPUT_BLOCK_SLOP);

s/IN/OUT/

  $ src/dd obs=1M count=1 if=/dev/zero of=x
  1+0 records in
  0+1 records out
  512 bytes (512 B) copied, 0.000424504 s, 1.2 MB/s

  $ ls -ldog x
  -rw-r--r-- 1 512 Dec 16 09:11 x

Interestingly, the tests didn't catch this obs=... error.

Have a nice day,
Berny

Reply via email to