1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-17 17:58:46 +00:00

(make-auto-save-file-name): Encode more characters in

non-file buffer names. Use url-encoding.
This commit is contained in:
Jason Rumney 2008-02-26 16:52:02 +00:00
parent 6329325d6b
commit ad80c67928

View File

@ -4561,15 +4561,18 @@ See also `auto-save-file-name-p'."
(let ((buffer-name (buffer-name))
(limit 0)
file-name)
;; Eliminate all slashes and backslashes by
;; replacing them with sequences that start with %.
;; Quote % also, to keep distinct names distinct.
(while (string-match "[/\\%]" buffer-name limit)
;; Restrict the characters used in the file name to those which
;; are known to be safe on all filesystems, url-encoding the
;; rest.
;; We do this on all platforms, because even if we are not
;; running on DOS/Windows, the current directory may be on a
;; mounted VFAT filesystem, such as a USB memory stick.
(while (string-match "[^A-Za-z0-9-_.~#+]" buffer-name limit)
(let* ((character (aref buffer-name (match-beginning 0)))
(replacement
(cond ((eq character ?%) "%%")
((eq character ?/) "%+")
((eq character ?\\) "%-"))))
;; For multibyte characters, this will produce more than
;; 2 hex digits, so is not true URL encoding.
(format "%%%02X" character)))
(setq buffer-name (replace-match replacement t t buffer-name))
(setq limit (1+ (match-end 0)))))
;; Generate the file name.