]> code.delx.au - gnu-emacs/commitdiff
(make-auto-save-file-name): If long file names are not
authorEli Zaretskii <eliz@gnu.org>
Thu, 13 Sep 2001 12:41:41 +0000 (12:41 +0000)
committerEli Zaretskii <eliz@gnu.org>
Thu, 13 Sep 2001 12:41:41 +0000 (12:41 +0000)
supported, truncate the file name to DOS 8+3 limits before
generating an auto-save file name from it.

lisp/ChangeLog
lisp/files.el

index e5217519e17ad33e245cb53f0fbac6e421ea41fb..f45f8e17f66d69303611d17647faee3c14160733 100644 (file)
@@ -1,3 +1,9 @@
+2001-09-13  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * files.el (make-auto-save-file-name): If long file names are not
+       supported on MS-DOS, truncate the file name to DOS 8+3 limits before
+       generating an auto-save file name from it.
+
 2001-09-13  Gerd Moellmann  <gerd@gnu.org>
 
        * ps-print.el (ps-print-region, ps-print-region-with-faces) 
index 9964f708100e6c07f70e3e61c4480c18f30f7efa..bdd5604417d17551c981e865ff21506892450ea3 100644 (file)
@@ -3264,7 +3264,12 @@ See also `auto-save-file-name-p'."
 
        (if (and (eq system-type 'ms-dos)
                 (not (msdos-long-file-names)))
-           (let ((fn (file-name-nondirectory buffer-file-name)))
+           ;; We truncate the file name to DOS 8+3 limits before
+           ;; doing anything else, because the regexp passed to
+           ;; string-match below cannot handle extensions longer than
+           ;; 3 characters, multiple dots, and other atrocities.
+           (let ((fn (dos-8+3-filename
+                      (file-name-nondirectory buffer-file-name))))
              (string-match "\\`\\([^.]+\\)\\(\\.\\(..?\\)?.?\\|\\)\\'" fn)
              (concat (file-name-directory buffer-file-name)
                      "#" (match-string 1 fn)