GNU bug report logs - #61321
30.0.50; Fail to load file with file variables and CRLF EOL without EOL conversion

Previous Next

Package: emacs;

Reported by: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>

Date: Mon, 6 Feb 2023 14:04:01 UTC

Severity: normal

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 61321 in the body.
You can then email your comments to 61321 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#61321; Package emacs. (Mon, 06 Feb 2023 14:04:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 06 Feb 2023 14:04:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50;
 Fail to load file with file variables and CRLF EOL without EOL
 conversion
Date: Mon, 06 Feb 2023 23:02:01 +0900
I receive user error in opening a file with file varibles and CRLF EOL
when I inhibit EOL conversion.

(let ((filename (expand-file-name "test.txt"
				  temporary-file-directory)))
  (with-temp-buffer
    (setq buffer-file-coding-system 'dos)
    (insert "This is a test.\n"
	    "\n"
	    "Local Variables:\n"
	    "comment-column: 0\n"
	    "End:\n")
    (write-file filename))
  (unwind-protect
      (let (;; (coding-system-for-read 'unix)
	    (inhibit-eol-conversion t)
	    )
	(find-file filename))
    (delete-file filename)))

-> Local variables entry is missing the suffix

I bumped this issue by calling url-retrieve-synchronously with
coding-system-for-read is let-bound to 'binary.  On MS-Windows, url
package saves cookies into a file with CRLF EOL and fails to load it
under such condition.

Of course I can fix the caller and have already fixed, but
inhibit-eol-conversion is customizable variable and file variables can
be set in any text files.  So this issue may occur in opening any
files, although it should have rarely been a real problem.  (I
confirmed that the issue had been introduced emacs 22 at the latest.)

-- 
Kazuhiro Ito




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61321; Package emacs. (Mon, 06 Feb 2023 15:18:01 GMT) Full text and rfc822 format available.

Message #8 received at 61321 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
Cc: 61321 <at> debbugs.gnu.org
Subject: Re: bug#61321: 30.0.50;
 Fail to load file with file variables and CRLF EOL without EOL
 conversion
Date: Mon, 06 Feb 2023 17:17:46 +0200
> Date: Mon, 06 Feb 2023 23:02:01 +0900
> From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
> 
> (let ((filename (expand-file-name "test.txt"
> 				  temporary-file-directory)))
>   (with-temp-buffer
>     (setq buffer-file-coding-system 'dos)
>     (insert "This is a test.\n"
> 	    "\n"
> 	    "Local Variables:\n"
> 	    "comment-column: 0\n"
> 	    "End:\n")
>     (write-file filename))
>   (unwind-protect
>       (let (;; (coding-system-for-read 'unix)
> 	    (inhibit-eol-conversion t)
> 	    )
> 	(find-file filename))
>     (delete-file filename)))
> 
> -> Local variables entry is missing the suffix

Thanks.  Does the patch below give good results?

diff --git a/lisp/files.el b/lisp/files.el
index 9da8244..b0ec6bb 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4017,6 +4017,7 @@ hack-local-variables--find-variables
 	  (forward-line 1)
 	  (let ((startpos (point))
 	        endpos
+                (selective-p (eq selective-display t))
 	        (thisbuf (current-buffer)))
 	    (save-excursion
 	      (unless (let ((case-fold-search t))
@@ -4033,7 +4034,8 @@ hack-local-variables--find-variables
 	    (with-temp-buffer
 	      (insert-buffer-substring thisbuf startpos endpos)
 	      (goto-char (point-min))
-	      (subst-char-in-region (point) (point-max) ?\^m ?\n)
+              (if selective-p
+	          (subst-char-in-region (point) (point-max) ?\r ?\n))
 	      (while (not (eobp))
 	        ;; Discard the prefix.
 	        (if (looking-at prefix)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61321; Package emacs. (Mon, 06 Feb 2023 16:02:02 GMT) Full text and rfc822 format available.

Message #11 received at 61321 <at> debbugs.gnu.org (full text, mbox):

From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 61321 <at> debbugs.gnu.org
Subject: Re: bug#61321: 30.0.50;
 Fail to load file with file variables and CRLF EOL without EOL
 conversion
Date: Tue, 07 Feb 2023 01:01:53 +0900
> > (let ((filename (expand-file-name "test.txt"
> > 				  temporary-file-directory)))
> >   (with-temp-buffer
> >     (setq buffer-file-coding-system 'dos)
> >     (insert "This is a test.\n"
> > 	    "\n"
> > 	    "Local Variables:\n"
> > 	    "comment-column: 0\n"
> > 	    "End:\n")
> >     (write-file filename))
> >   (unwind-protect
> >       (let (;; (coding-system-for-read 'unix)
> > 	    (inhibit-eol-conversion t)
> > 	    )
> > 	(find-file filename))
> >     (delete-file filename)))
> > 
> > -> Local variables entry is missing the suffix
> 
> Thanks.  Does the patch below give good results?

I confirmed the problem was fixed.  Thank you for the quick fix!

-- 
Kazuhiro Ito




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Mon, 06 Feb 2023 16:31:02 GMT) Full text and rfc822 format available.

Notification sent to Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>:
bug acknowledged by developer. (Mon, 06 Feb 2023 16:31:02 GMT) Full text and rfc822 format available.

Message #16 received at 61321-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
Cc: 61321-done <at> debbugs.gnu.org
Subject: Re: bug#61321: 30.0.50;
 Fail to load file with file variables and CRLF EOL without EOL
 conversion
Date: Mon, 06 Feb 2023 18:30:10 +0200
> Date: Tue, 07 Feb 2023 01:01:53 +0900
> From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
> Cc: 61321 <at> debbugs.gnu.org
> 
> > > (let ((filename (expand-file-name "test.txt"
> > > 				  temporary-file-directory)))
> > >   (with-temp-buffer
> > >     (setq buffer-file-coding-system 'dos)
> > >     (insert "This is a test.\n"
> > > 	    "\n"
> > > 	    "Local Variables:\n"
> > > 	    "comment-column: 0\n"
> > > 	    "End:\n")
> > >     (write-file filename))
> > >   (unwind-protect
> > >       (let (;; (coding-system-for-read 'unix)
> > > 	    (inhibit-eol-conversion t)
> > > 	    )
> > > 	(find-file filename))
> > >     (delete-file filename)))
> > > 
> > > -> Local variables entry is missing the suffix
> > 
> > Thanks.  Does the patch below give good results?
> 
> I confirmed the problem was fixed.  Thank you for the quick fix!

Thanks, I've now installed this on the master branch, and I'm
therefore closing this bug.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 07 Mar 2023 12:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 44 days ago.

Previous Next


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