Subject: timeout treats very short durations as `0`
From: Nicolas Boichat <[email-masked]>
To: [email-masked]
Date: Fri, 4 Apr 2025 17:26:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Version: timeout (GNU coreutils) 9.6, Archlinux, x86-64.

While playing with different duration parameters to `timeout`, I
noticed that extremely short durations, like `1e-3000`, are rounded
down to `0`. The problem is that `0` has a special meaning (disabling
the timeout), so I don't think this is desired.

All of these commands exit immediately:
```
timeout 0.0001 cat
timeout 1e-100 cat
timeout 1e-300 cat
timeout 1e-323 cat
```

But these never exits:
```
timeout 1e-324 cat
timeout 1e-3000 cat
```

As if we had typed:
```
timeout 0 cat
```

I think there is some logic in `printf` to handle float parsing
underflow, so maybe this can be reused in `timeout` as well.

Thanks,