aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2015-01-21 20:21:45 -0800
committerPaul Eggert2015-01-21 20:29:42 -0800
commit8dd58a2d1fedaa16573bc67e986dc2014620c681 (patch)
tree14d570f1ebf867a8feb07cfe3d3a385989643e1f
parent938bca8e4141f5f96497f9be26b0ea0bb90f40cd (diff)
downloademacs-8dd58a2d1fedaa16573bc67e986dc2014620c681.tar.gz
emacs-8dd58a2d1fedaa16573bc67e986dc2014620c681.zip
Don't downcase system diagnostics' first letters
* etc/NEWS: Document this. * lisp/emacs-lisp/bytecomp.el (byte-compile-file): * lisp/ffap.el (find-file-at-point): * lisp/files.el (insert-file-1): * lisp/net/ange-ftp.el (ange-ftp-barf-if-not-directory) (ange-ftp-copy-file-internal): * lisp/progmodes/etags.el (visit-tags-table): * lisp/url/url-dav.el (url-dav-delete-directory, url-dav-delete-file) (url-dav-directory-files): Keep diagnostics consistent with system's. * lisp/erc/erc-dcc.el (erc-dcc-server): * lisp/ffap.el (ffap-machine-p): Ignore case while comparing diagnostics. * src/fileio.c (report_file_errno): Don't downcase, and simplify. Fixes: bug#19642
-rw-r--r--etc/ChangeLog5
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/ChangeLog13
-rw-r--r--lisp/emacs-lisp/bytecomp.el4
-rw-r--r--lisp/erc/ChangeLog5
-rw-r--r--lisp/erc/erc-dcc.el3
-rw-r--r--lisp/ffap.el4
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/net/ange-ftp.el6
-rw-r--r--lisp/progmodes/etags.el2
-rw-r--r--lisp/url/ChangeLog6
-rw-r--r--lisp/url/url-dav.el6
-rw-r--r--src/ChangeLog4
-rw-r--r--src/fileio.c40
14 files changed, 61 insertions, 44 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 7b64dfb9153..47f61f4d7fd 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
12015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 Don't downcase system diagnostics' first letters
4 * NEWS: Document this.
5
12015-01-16 Artur Malabarba <bruce.connor.am@gmail.com> 62015-01-16 Artur Malabarba <bruce.connor.am@gmail.com>
2 7
3 * NEWS: Document installing packages from directories. 8 * NEWS: Document installing packages from directories.
diff --git a/etc/NEWS b/etc/NEWS
index 120d8b920c6..db47033fb35 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -538,6 +538,11 @@ position list returned for such events is now nil.
538These slots used to hold key-shortcut data, but have been obsolete since 538These slots used to hold key-shortcut data, but have been obsolete since
539Emacs-21. 539Emacs-21.
540 540
541** Emacs no longer downcases the first letter of a system diagnostic
542when signaling a file error. For example, it now reports "Permission
543denied" instead of "permission denied". The old behavior was problematic
544in languages like German where downcasing rules depend on grammar.
545
541 546
542* Lisp Changes in Emacs 25.1 547* Lisp Changes in Emacs 25.1
543 548
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c000d6bb9a6..5cceb19ff1a 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,16 @@
12015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 Don't downcase system diagnostics' first letters
4 * emacs-lisp/bytecomp.el (byte-compile-file):
5 * ffap.el (find-file-at-point):
6 * files.el (insert-file-1):
7 * net/ange-ftp.el (ange-ftp-barf-if-not-directory)
8 (ange-ftp-copy-file-internal):
9 * progmodes/etags.el (visit-tags-table):
10 Keep diagnostics consistent with system's.
11 * ffap.el (ffap-machine-p):
12 Ignore case while comparing diagnostics.
13
12015-01-22 Stefan Monnier <monnier@iro.umontreal.ca> 142015-01-22 Stefan Monnier <monnier@iro.umontreal.ca>
2 15
3 * help.el (help-make-usage): Don't turn a "_" arg into an empty-string 16 * help.el (help-make-usage): Don't turn a "_" arg into an empty-string
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 8440570d755..2bd8d07851b 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1863,8 +1863,8 @@ The value is non-nil if there were no errors, nil if errors."
1863 (signal 'file-error 1863 (signal 'file-error
1864 (list "Opening output file" 1864 (list "Opening output file"
1865 (if (file-exists-p target-file) 1865 (if (file-exists-p target-file)
1866 "cannot overwrite file" 1866 "Cannot overwrite file"
1867 "directory not writable or nonexistent") 1867 "Directory not writable or nonexistent")
1868 target-file))) 1868 target-file)))
1869 (kill-buffer (current-buffer))) 1869 (kill-buffer (current-buffer)))
1870 (if (and byte-compile-generate-call-tree 1870 (if (and byte-compile-generate-call-tree
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 1b54fb6a48d..28ac7d38b96 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
12015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 Don't downcase system diagnostics' first letters
4 * erc-dcc.el (erc-dcc-server): Ignore case while comparing diagnostics.
5
12014-11-23 Michael Albinus <michael.albinus@gmx.de> 62014-11-23 Michael Albinus <michael.albinus@gmx.de>
2 7
3 * erc-desktop-notifications.el (erc-notifications-bus): 8 * erc-desktop-notifications.el (erc-notifications-bus):
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 9d52c3b7c09..182f1e05921 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -379,7 +379,7 @@ created subprocess, or nil."
379 (set-process-filter-multibyte process nil))))) 379 (set-process-filter-multibyte process nil)))))
380 (file-error 380 (file-error
381 (unless (and (string= "Cannot bind server socket" (nth 1 err)) 381 (unless (and (string= "Cannot bind server socket" (nth 1 err))
382 (string= "address already in use" (nth 2 err))) 382 (string= "address already in use" (downcase (nth 2 err))))
383 (signal (car err) (cdr err))) 383 (signal (car err) (cdr err)))
384 (setq port (1+ port)) 384 (setq port (1+ port))
385 (unless (< port upper) 385 (unless (< port upper)
@@ -1264,4 +1264,3 @@ other client."
1264;; Local Variables: 1264;; Local Variables:
1265;; indent-tabs-mode: nil 1265;; indent-tabs-mode: nil
1266;; End: 1266;; End:
1267
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 1b8ea60e03b..350a6bdac20 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -476,7 +476,7 @@ Returned values:
476 ;; (file-error "connection failed" "address already in use" 476 ;; (file-error "connection failed" "address already in use"
477 ;; "ftp.uu.net" "ffap-machine-p") 477 ;; "ftp.uu.net" "ffap-machine-p")
478 ((equal mesg "connection failed") 478 ((equal mesg "connection failed")
479 (if (equal (nth 2 error) "permission denied") 479 (if (string= (downcase (nth 2 error)) "permission denied")
480 nil ; host does not exist 480 nil ; host does not exist
481 ;; Other errors mean the host exists: 481 ;; Other errors mean the host exists:
482 (nth 2 error))) 482 (nth 2 error)))
@@ -1439,7 +1439,7 @@ and the functions `ffap-file-at-point' and `ffap-url-at-point'."
1439 (expand-file-name filename))) 1439 (expand-file-name filename)))
1440 ;; User does not want to find a non-existent file: 1440 ;; User does not want to find a non-existent file:
1441 ((signal 'file-error (list "Opening file buffer" 1441 ((signal 'file-error (list "Opening file buffer"
1442 "no such file or directory" 1442 "No such file or directory"
1443 filename))))))) 1443 filename)))))))
1444 1444
1445;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}. 1445;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}.
diff --git a/lisp/files.el b/lisp/files.el
index e9632edacef..ed1943dfc28 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2128,7 +2128,7 @@ This function ensures that none of these modifications will take place."
2128 2128
2129(defun insert-file-1 (filename insert-func) 2129(defun insert-file-1 (filename insert-func)
2130 (if (file-directory-p filename) 2130 (if (file-directory-p filename)
2131 (signal 'file-error (list "Opening input file" "file is a directory" 2131 (signal 'file-error (list "Opening input file" "Is a directory"
2132 filename))) 2132 filename)))
2133 ;; Check whether the file is uncommonly large 2133 ;; Check whether the file is uncommonly large
2134 (abort-if-file-too-large (nth 7 (file-attributes filename)) "insert" filename) 2134 (abort-if-file-too-large (nth 7 (file-attributes filename)) "insert" filename)
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 17db6e76ec9..52153ad8322 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -1536,8 +1536,8 @@ then kill the related FTP process."
1536 (signal 'file-error 1536 (signal 'file-error
1537 (list "Opening directory" 1537 (list "Opening directory"
1538 (if (file-exists-p directory) 1538 (if (file-exists-p directory)
1539 "not a directory" 1539 "Not a directory"
1540 "no such file or directory") 1540 "No such file or directory")
1541 directory)))) 1541 directory))))
1542 1542
1543;;;; ------------------------------------------------------------ 1543;;;; ------------------------------------------------------------
@@ -3664,7 +3664,7 @@ so return the size on the remote host exactly. See RFC 3659."
3664 3664
3665 (or (file-exists-p filename) 3665 (or (file-exists-p filename)
3666 (signal 'file-error 3666 (signal 'file-error
3667 (list "Copy file" "no such file or directory" filename))) 3667 (list "Copy file" "No such file or directory" filename)))
3668 3668
3669 ;; canonicalize newname if a directory. 3669 ;; canonicalize newname if a directory.
3670 (if (file-directory-p newname) 3670 (if (file-directory-p newname)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 626855ecdd4..b470352f8dc 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -308,7 +308,7 @@ file the tag was in."
308 (save-excursion 308 (save-excursion
309 (or (visit-tags-table-buffer file) 309 (or (visit-tags-table-buffer file)
310 (signal 'file-error (list "Visiting tags table" 310 (signal 'file-error (list "Visiting tags table"
311 "file does not exist" 311 "No such file or directory"
312 file))) 312 file)))
313 ;; Set FILE to the expanded name. 313 ;; Set FILE to the expanded name.
314 (setq file tags-file-name))) 314 (setq file tags-file-name)))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 1f5ece02113..920d692d319 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,9 @@
12015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 Don't downcase system diagnostics' first letters
4 * url-dav.el (url-dav-delete-directory, url-dav-delete-file)
5 (url-dav-directory-files): Keep diagnostics consistent with system's.
6
12014-12-12 Lars Magne Ingebrigtsen <larsi@gnus.org> 72014-12-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 8
3 * url-http.el (url-http-parse-headers): `gnutls-available-p' is 9 * url-http.el (url-http-parse-headers): `gnutls-available-p' is
diff --git a/lisp/url/url-dav.el b/lisp/url/url-dav.el
index 65747e93000..61ca0885ec5 100644
--- a/lisp/url/url-dav.el
+++ b/lisp/url/url-dav.el
@@ -741,7 +741,7 @@ files in the collection as well."
741 (if (and (not recursive) 741 (if (and (not recursive)
742 (/= (length props) 1)) 742 (/= (length props) 1))
743 (signal 'file-error (list "Removing directory" 743 (signal 'file-error (list "Removing directory"
744 "directory not empty" url))))) 744 "Directory not empty" url)))))
745 745
746 (mapc (lambda (result) 746 (mapc (lambda (result)
747 (setq status (plist-get (cdr result) 'DAV:status)) 747 (setq status (plist-get (cdr result) 'DAV:status))
@@ -760,7 +760,7 @@ files in the collection as well."
760 url lock-token 760 url lock-token
761 (setq props (url-dav-get-properties url)) 761 (setq props (url-dav-get-properties url))
762 (if (eq (plist-get (cdar props) 'DAV:resourcetype) 'DAV:collection) 762 (if (eq (plist-get (cdar props) 'DAV:resourcetype) 'DAV:collection)
763 (signal 'file-error (list "Removing old name" "is a collection" url))))) 763 (signal 'file-error (list "Removing old name" "Is a collection" url)))))
764 764
765 (mapc (lambda (result) 765 (mapc (lambda (result)
766 (setq status (plist-get (cdr result) 'DAV:status)) 766 (setq status (plist-get (cdr result) 'DAV:status))
@@ -787,7 +787,7 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
787 787
788 (when (and (= (length properties) 1) 788 (when (and (= (length properties) 1)
789 (not (url-dav-file-directory-p url))) 789 (not (url-dav-file-directory-p url)))
790 (signal 'file-error (list "Opening directory" "not a directory" url))) 790 (signal 'file-error (list "Opening directory" "Not a directory" url)))
791 791
792 (while properties 792 (while properties
793 (setq child-props (pop properties) 793 (setq child-props (pop properties)
diff --git a/src/ChangeLog b/src/ChangeLog
index 4c5b2a1397a..8f23dd3833e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12015-01-22 Paul Eggert <eggert@cs.ucla.edu> 12015-01-22 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Don't downcase system diagnostics' first letters
4 * fileio.c (report_file_errno): Don't downcase, and simplify.
5 Fixes: bug#19642
6
3 Isolate NIL_IS_ZERO-assuming code better 7 Isolate NIL_IS_ZERO-assuming code better
4 Suggested by Stefan Monnier in: 8 Suggested by Stefan Monnier in:
5 http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00588.html 9 http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00588.html
diff --git a/src/fileio.c b/src/fileio.c
index ff6720d4ae2..d0fd08a742e 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -186,37 +186,17 @@ void
186report_file_errno (char const *string, Lisp_Object name, int errorno) 186report_file_errno (char const *string, Lisp_Object name, int errorno)
187{ 187{
188 Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name); 188 Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
189 Lisp_Object errstring;
190 char *str;
191
192 synchronize_system_messages_locale (); 189 synchronize_system_messages_locale ();
193 str = strerror (errorno); 190 char *str = strerror (errorno);
194 errstring = code_convert_string_norecord (build_unibyte_string (str), 191 Lisp_Object errstring
195 Vlocale_coding_system, 0); 192 = code_convert_string_norecord (build_unibyte_string (str),
196 193 Vlocale_coding_system, 0);
197 while (1) 194 Lisp_Object errdata = Fcons (errstring, data);
198 switch (errorno) 195
199 { 196 if (errorno == EEXIST)
200 case EEXIST: 197 xsignal (Qfile_already_exists, errdata);
201 xsignal (Qfile_already_exists, Fcons (errstring, data)); 198 else
202 break; 199 xsignal (Qfile_error, Fcons (build_string (string), errdata));
203 default:
204 /* System error messages are capitalized. Downcase the initial
205 unless it is followed by a slash. (The slash case caters to
206 error messages that begin with "I/O" or, in German, "E/A".) */
207 if (STRING_MULTIBYTE (errstring)
208 && ! EQ (Faref (errstring, make_number (1)), make_number ('/')))
209 {
210 int c;
211
212 str = SSDATA (errstring);
213 c = STRING_CHAR ((unsigned char *) str);
214 Faset (errstring, make_number (0), make_number (downcase (c)));
215 }
216
217 xsignal (Qfile_error,
218 Fcons (build_string (string), Fcons (errstring, data)));
219 }
220} 200}
221 201
222/* Signal a file-access failure that set errno. STRING describes the 202/* Signal a file-access failure that set errno. STRING describes the