*** files.el.~1.896.2.38.~ 2008-02-24 16:51:32.796875000 +0000 --- files.el 2008-02-26 09:27:34.078125000 +0000 *************** *** 4561,4575 **** (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) (let* ((character (aref buffer-name (match-beginning 0))) (replacement ! (cond ((eq character ?%) "%%") ! ((eq character ?/) "%+") ! ((eq character ?\\) "%-")))) (setq buffer-name (replace-match replacement t t buffer-name)) (setq limit (1+ (match-end 0))))) ;; Generate the file name. --- 4561,4576 ---- (let ((buffer-name (buffer-name)) (limit 0) file-name) ! ;; 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 ! (format "%%%02X" character))) (setq buffer-name (replace-match replacement t t buffer-name)) (setq limit (1+ (match-end 0))))) ;; Generate the file name.