X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a007e4e39dbb01153acbaa837b050afab420f2f8..b0c9a334c2f0eb881eff47f590997e746cc3bdb3:/lisp/dos-fns.el diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el index 4b91cdf7a1..bf25ce1f58 100644 --- a/lisp/dos-fns.el +++ b/lisp/dos-fns.el @@ -1,6 +1,7 @@ ;;; dos-fns.el --- MS-Dos specific functions -;; Copyright (C) 1991, 1993, 1995, 1996 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1993, 1995, 1996, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Maintainer: Morten Welinder ;; Keywords: internal @@ -19,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -31,9 +32,13 @@ ;; This overrides a trivial definition in files.el. (defun convert-standard-filename (filename) "Convert a standard file's name to something suitable for the current OS. -This function's standard definition is trivial; it just returns the argument. -However, on some systems, the function is redefined -with a definition that really does change some file names." +This means to guarantee valid names and perhaps to canonicalize +certain patterns. + +On Windows and DOS, replace invalid characters. On DOS, make +sure to obey the 8.3 limitations. On Windows, turn Cygwin names +into native names, and also turn slashes into backslashes if the +shell requires it (see `w32-shell-dos-semantics')." (if (or (not (stringp filename)) ;; This catches the case where FILENAME is "x:" or "x:/" or ;; "/", thus preventing infinite recursion. @@ -42,7 +47,7 @@ with a definition that really does change some file names." (let ((flen (length filename))) ;; If FILENAME has a trailing slash, remove it and recurse. (if (memq (aref filename (1- flen)) '(?/ ?\\)) - (concat (convert-standard-filename + (concat (convert-standard-filename (substring filename 0 (1- flen))) "/") (let* (;; ange-ftp gets in the way for names like "/foo:bar". @@ -180,25 +185,6 @@ with a definition that really does change some file names." (dos-8+3-filename dir)) string)))))) -;; Make sure auto-save file names don't contain characters invalid for -;; the underlying filesystem. This is particularly annoying with -;; `compose-mail's *mail* buffers: `*' is not allowed in file names on -;; DOS/Windows, so Emacs bitches on you each time it tries to autosave -;; the message being composed. -(fset 'original-make-auto-save-file-name - (symbol-function 'make-auto-save-file-name)) - -(defun make-auto-save-file-name () - "Return file name to use for auto-saves of current buffer. -Does not consider `auto-save-visited-file-name' as that variable is checked -before calling this function. You can redefine this for customization. -See also `auto-save-file-name-p'." - (let ((filename (original-make-auto-save-file-name))) - ;; Don't modify remote (ange-ftp) filenames - (if (string-match "^/\\w+@[-A-Za-z0-9._]+:" filename) - filename - (convert-standard-filename filename)))) - ;; See dos-vars.el for defcustom. (defvar msdos-shells) @@ -271,4 +257,5 @@ that your video hardware might not support 50-line mode." (provide 'dos-fns) +;;; arch-tag: 00b03579-8ebb-4a02-8762-5c5a929774ad ;;; dos-fns.el ends here