[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#18370: insert-file-contents: forbids also beg, end for non-regular (
From: |
Ivan Shmakov |
Subject: |
bug#18370: insert-file-contents: forbids also beg, end for non-regular (special) files |
Date: |
Sun, 31 Aug 2014 19:50:09 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Package: emacs
Severity: minor
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):
3506 /* This code will need to be changed in order to work on named
3507 pipes, and it's probably just not worth it. So we should at
3508 least signal an error. */
3509 if (!S_ISREG (st.st_mode))
3510 {
3511 not_regular = 1;
⋯
3516 if (! NILP (replace) || ! NILP (beg) || ! NILP (end))
3517 xsignal2 (Qfile_error,
3518 build_string ("not a regular file"), orig_filename);
3519 }
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.
--
FSF associate member #7257 http://boycottsystemd.org/ … 3013 B6A0 230E 334A
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#18370: insert-file-contents: forbids also beg, end for non-regular (special) files,
Ivan Shmakov <=