diff options
| author | Paul Eggert | 2015-01-21 20:21:45 -0800 |
|---|---|---|
| committer | Paul Eggert | 2015-01-21 20:29:42 -0800 |
| commit | 8dd58a2d1fedaa16573bc67e986dc2014620c681 (patch) | |
| tree | 14d570f1ebf867a8feb07cfe3d3a385989643e1f | |
| parent | 938bca8e4141f5f96497f9be26b0ea0bb90f40cd (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | etc/NEWS | 5 | ||||
| -rw-r--r-- | lisp/ChangeLog | 13 | ||||
| -rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 4 | ||||
| -rw-r--r-- | lisp/erc/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/erc/erc-dcc.el | 3 | ||||
| -rw-r--r-- | lisp/ffap.el | 4 | ||||
| -rw-r--r-- | lisp/files.el | 2 | ||||
| -rw-r--r-- | lisp/net/ange-ftp.el | 6 | ||||
| -rw-r--r-- | lisp/progmodes/etags.el | 2 | ||||
| -rw-r--r-- | lisp/url/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/url/url-dav.el | 6 | ||||
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/fileio.c | 40 |
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 @@ | |||
| 1 | 2015-01-22 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | Don't downcase system diagnostics' first letters | ||
| 4 | * NEWS: Document this. | ||
| 5 | |||
| 1 | 2015-01-16 Artur Malabarba <bruce.connor.am@gmail.com> | 6 | 2015-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. |
| @@ -538,6 +538,11 @@ position list returned for such events is now nil. | |||
| 538 | These slots used to hold key-shortcut data, but have been obsolete since | 538 | These slots used to hold key-shortcut data, but have been obsolete since |
| 539 | Emacs-21. | 539 | Emacs-21. |
| 540 | 540 | ||
| 541 | ** Emacs no longer downcases the first letter of a system diagnostic | ||
| 542 | when signaling a file error. For example, it now reports "Permission | ||
| 543 | denied" instead of "permission denied". The old behavior was problematic | ||
| 544 | in 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 @@ | |||
| 1 | 2015-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 | |||
| 1 | 2015-01-22 Stefan Monnier <monnier@iro.umontreal.ca> | 14 | 2015-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 @@ | |||
| 1 | 2015-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 | |||
| 1 | 2014-11-23 Michael Albinus <michael.albinus@gmx.de> | 6 | 2014-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 @@ | |||
| 1 | 2015-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 | |||
| 1 | 2014-12-12 Lars Magne Ingebrigtsen <larsi@gnus.org> | 7 | 2014-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 @@ | |||
| 1 | 2015-01-22 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2015-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 | |||
| 186 | report_file_errno (char const *string, Lisp_Object name, int errorno) | 186 | report_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 |