GNU bug report logs - #18370
insert-file-contents: forbids also beg, end for non-regular (special) files

Previous Next

Package: emacs;

Reported by: Ivan Shmakov <ivan <at> siamics.net>

Date: Sun, 31 Aug 2014 19:51:01 UTC

Severity: minor

Tags: moreinfo

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Ivan Shmakov <ivan <at> siamics.net>
Cc: 18370 <at> debbugs.gnu.org
Subject: bug#18370: insert-file-contents: forbids also beg, end for non-regular (special) files 
Date: Wed, 11 May 2022 17:22:56 +0200
Ivan Shmakov <ivan <at> siamics.net> writes:

> 	As currently implemented, insert-file-contents disallows not
> 	only (as per (elisp.info) Reading from Files) the case of either
> 	‘visit’ or ‘replace’ arguments being non-nil, but also when
> 	non-nil are either ‘beg’ or ‘end’ (or both):

[...]

> 	This, however, precludes the use of insert-file-contents not
> 	only on named pipes, but also on /dev/cdrom, /dev/random, and
> 	the like, – for (and especially in the case of the latter) the
> 	‘end’ argument gets rather essential here, as otherwise the
> 	function is likely to read much more than the caller will be
> 	able to handle at any single time.
>
> 	Instead, I’d suggest that ‘end’ is always allowed, and ‘beg’ is
> 	allowed when the file in question is /seekable/, – which, ISTR,
> 	is possible to check beforehand (lseek (fd, 0, SEEK_CUR) < 0?)
>
> 	From a glance over the code, this new behavior wouldn’t be all
> 	that hard to implement (some not_regular checks will have to be
> 	replaced with the ones against beg_offset, end_offset, etc.),
> 	but from what I read, – it’s already going to be more than I can
> 	test right now.  So no .diff this time, alas.

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

Simple test case:

(insert-file-contents "/dev/urandom" nil nil 10)

This still fails in Emacs 29, and it would indeed be nice if it worked.
I seem to remember this being discussed previously, and that...  er...
no, I can't really recall anything more than that.

Does anybody see any good reasons why we shouldn't allow this?  If not,
I can take a stab at implementing it...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




This bug report was last modified 3 years and 64 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.