From: Eli Zaretskii Date: Sat, 15 May 2010 08:31:40 +0000 (+0300) Subject: Don't override standard definition of convert-standard-filename. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~51^2~112^2 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=98d8b17e45bb1246df61e51f8917b98faa9f1cdd;p=emacs.git Don't override standard definition of convert-standard-filename. Add obsolete aliases for dos-fns.el functions. files.el (convert-standard-filename): Call w32-convert-standard-filename and dos-convert-standard-filename on the corresponding systems. w32-fns.el (w32-convert-standard-filename): Rename from convert-standard-filename. Doc fix. dos-fns.el (dos-convert-standard-filename): Doc fix. (convert-standard-filename): Don't defalias. (register-name-alist, make-register, register-value) (set-register-value, intdos): Obsolete aliases for the corresponding dos-* functions and variables. (dos-intdos): Add a doc string. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index aed1fbc64d0..760e373d095 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,20 @@ +2010-05-15 Eli Zaretskii + + Don't override standard definition of convert-standard-filename. + * files.el (convert-standard-filename): Call + w32-convert-standard-filename and dos-convert-standard-filename on + the corresponding systems. + + * w32-fns.el (w32-convert-standard-filename): Rename from + convert-standard-filename. Doc fix. + + * dos-fns.el (dos-convert-standard-filename): Doc fix. + (convert-standard-filename): Don't defalias. + (register-name-alist, make-register, register-value) + (set-register-value, intdos): Obsolete aliases for the + corresponding dos-* functions and variables. + (dos-intdos): Add a doc string. + 2010-05-15 Jay Belanger * calc/calc-aent.el (math-read-token, math-find-user-tokens): diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el index 5834afae8bc..e343446a366 100644 --- a/lisp/dos-fns.el +++ b/lisp/dos-fns.el @@ -30,16 +30,16 @@ (declare-function int86 "dosfns.c") (declare-function msdos-long-file-names "msdos.c") -;; This overrides a trivial definition in files.el. +;; See convert-standard-filename in files.el. (defun dos-convert-standard-filename (filename) - "Convert a standard file's name to something suitable for the current OS. + "Convert a standard file's name to something suitable for MS-DOS. This means to guarantee valid names and perhaps to canonicalize certain patterns. +This function is called by `convert-standard-filename'. + 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')." +sure to obey the 8.3 limitations." (if (or (not (stringp filename)) ;; This catches the case where FILENAME is "x:" or "x:/" or ;; "/", thus preventing infinite recursion. @@ -128,11 +128,6 @@ shell requires it (see `w32-shell-dos-semantics')." (dos-convert-standard-filename dir)) string)))))) -;; Only redirect convert-standard-filename if it has a chance of working, -;; otherwise loading dos-fns.el might make your non-DOS Emacs misbehave. -(when (fboundp 'msdos-long-file-names) - (defalias 'convert-standard-filename 'dos-convert-standard-filename)) - (defun dos-8+3-filename (filename) "Truncate FILENAME to DOS 8+3 limits." (if (or (not (stringp filename)) @@ -243,9 +238,14 @@ returned unaltered." (al . (0 . 0)) (bl . (1 . 0)) (cl . (2 . 0)) (dl . (3 . 0)) (ah . (0 . 1)) (bh . (1 . 1)) (ch . (2 . 1)) (dh . (3 . 1)))) +(define-obsolete-variable-alias + 'register-name-alist 'dos-register-name-alist "24.1") + (defun dos-make-register () (make-vector 8 0)) +(define-obsolete-function-alias 'make-register 'dos-make-register "24.1") + (defun dos-register-value (regs name) (let ((where (cdr (assoc name dos-register-name-alist)))) (cond ((consp where) @@ -257,6 +257,8 @@ returned unaltered." (aref regs where)) (t nil)))) +(define-obsolete-function-alias 'register-value 'dos-register-value "24.1") + (defun dos-set-register-value (regs name value) (and (numberp value) (>= value 0) @@ -273,9 +275,18 @@ returned unaltered." (aset regs where (logand value 65535)))))) regs) +(define-obsolete-function-alias + 'set-register-value 'dos-set-register-value "24.1") + (defsubst dos-intdos (regs) + "Issue the DOS Int 21h with registers REGS. + +REGS should be a vector produced by `dos-make-register' +and `dos-set-register-value', which see." (int86 33 regs)) +(define-obsolete-function-alias 'intdos 'dos-intdos "24.1") + ;; Backward compatibility for obsolescent functions which ;; set screen size. @@ -284,6 +295,8 @@ returned unaltered." (interactive) (set-frame-size (selected-frame) 80 25)) +(define-obsolete-function-alias 'mode25 'dos-mode25 "24.1") + (defun dos-mode4350 () "Changes the number of rows to 43 or 50. Emacs always tries to set the screen height to 50 rows first. @@ -295,6 +308,8 @@ that your video hardware might not support 50-line mode." nil ; the original built-in function returned nil (set-frame-size (selected-frame) 80 43))) +(define-obsolete-function-alias 'mode4350 'dos-mode4350 "24.1") + (provide 'dos-fns) ;; arch-tag: 00b03579-8ebb-4a02-8762-5c5a929774ad diff --git a/lisp/files.el b/lisp/files.el index 83ae91dd63a..d4c05bdc5d6 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -574,6 +574,9 @@ Runs the usual ange-ftp hook, but only for completion operations." (inhibit-file-name-operation op)) (apply op args)))) +(declare-function dos-convert-standard-filename "dos-fns.el" (filename)) +(declare-function w32-convert-standard-filename "w32-fns.el" (filename)) + (defun convert-standard-filename (filename) "Convert a standard file's name to something suitable for the OS. This means to guarantee valid names and perhaps to canonicalize @@ -591,15 +594,20 @@ and also turn slashes into backslashes if the shell requires it (see `w32-shell-dos-semantics'). See Info node `(elisp)Standard File Names' for more details." - (if (eq system-type 'cygwin) - (let ((name (copy-sequence filename)) - (start 0)) - ;; Replace invalid filename characters with ! - (while (string-match "[?*:<>|\"\000-\037]" name start) - (aset name (match-beginning 0) ?!) - (setq start (match-end 0))) - name) - filename)) + (cond + ((eq system-type 'cygwin) + (let ((name (copy-sequence filename)) + (start 0)) + ;; Replace invalid filename characters with ! + (while (string-match "[?*:<>|\"\000-\037]" name start) + (aset name (match-beginning 0) ?!) + (setq start (match-end 0))) + name)) + ((eq system-type 'windows-nt) + (w32-convert-standard-filename filename)) + ((eq system-type 'ms-dos) + (dos-convert-standard-filename filename)) + (t filename))) (defun read-directory-name (prompt &optional dir default-dirname mustmatch initial) "Read directory name, prompting with PROMPT and completing in directory DIR. diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el index efdf26b529c..0b97b184d22 100644 --- a/lisp/w32-fns.el +++ b/lisp/w32-fns.el @@ -253,15 +253,16 @@ You should set this to t when using a non-system shell.\n\n")))) ;; (setq source-directory (file-name-as-directory ;; (expand-file-name ".." exec-directory))))) -(defun convert-standard-filename (filename) - "Convert a standard file's name to something suitable for the current OS. +(defun w32-convert-standard-filename (filename) + "Convert a standard file's name to something suitable for the MS-Windows. 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')." +This function is called by `convert-standard-filename'. + +Replace invalid characters and turn Cygwin names into native +names, and also turn slashes into backslashes if the shell +requires it (see `w32-shell-dos-semantics')." (save-match-data (let ((name (if (string-match "\\`/cygdrive/\\([a-zA-Z]\\)/" filename)