On 3/6/23 03:13, Pádraig Brady wrote:
On 06/03/2023 07:37, Paul Eggert wrote:
The lseek /dev/null issue was only in your undef SEEK_DATA test patch,
and already addressed in your final gnulib patch in the area, as
discussed at:
https://lists.gnu.org/archive/html/bug-coreutils/2023-02/msg00081.html
Sorry, I got confused about that issue versus other 'split' issues.
Also immediately rejecting input where we can't determine the size is a
feature.
I.e. the following is the expected behavior:
$ : | split -n l/1
split: -: cannot determine file size
But 'split' can easily determine the size there: it's zero. 'split'
doesn't need to use lseek to do that; a single 'read' will do.
With the changes we now have:
$ : | split -n l/1 # Creates an empty file
$ yes | split -n l/1
split: -: cannot determine file size
This is inconsistent, and an insidious issue that users may introduce to
scripts,
that will only fail once input data hits a certain size.
That's OK, as lots of standard utilities already have that issue and
users are OK with this. Users can't reasonably expect 'split -n' to work
on infinitely-sized input such as the second example. At some point
there is a limit.
It's a bit like 'sort' if you feed 'sort' longer and longer input lines,
eventually it will fail and give you a diagnostic.
It'd be nicer if the limit of 'split' were larger than what's in current
Git. If you'd prefer that we raise the limit further, by copying stdin
into a temporary file first, I can write a patch to do that.
Also there are a few `make syntax-check` issues in the new split code.
Ouch, sorry, I'm always forgetting that. Fixed by the attached patch.
(Two of the issues were in 'split', one was elsewhere.)
Would it be possible to revert this change in isolation?
We could revert the patch's effect (not sure if it's a simple revert,
but I could easily generate such a patch). I'm hoping, though, that we
can reach consensus on extending split's functionality instead, perhaps
along the abovementioned lines.
[dropping bug-gnulib since this is no longer relevant to Gnulib.]