Commit 70662974 authored by Richard M. Stallman's avatar Richard M. Stallman

(mode25): Moved from `src/dosfns.c' for backward compatibility.

(mode4350): Moved from `src/dosfns.c' for backward compatibility.

(convert-standard-filename): Preserve ~ as last char.

(convert-standard-filename): Don't do anything if the
argument is empty, or isn't a string; leave alone characters with
ASCII codes above 127 and special characters legal in DOS filenames.
parent b5e89ed1
......@@ -49,38 +49,51 @@
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."
(let ((dir (file-name-directory filename))
(string (copy-sequence (file-name-nondirectory filename)))
i firstdot)
;; Change a leading period to a leading underscore.
(if (= (aref string 0) ?.)
(aset string 0 ?_))
;; Get rid of invalid characters.
(while (setq i (string-match "[^a-zA-Z0-9_.%~]" string))
(aset string i ?_))
;; If we don't have a period,
;; and we have a dash or underscore that isn't the first char,
;; change that to a period.
(if (and (not (string-match "\\." string))
(setq i (string-match "[-_]" string 1)))
(aset string i ?\.))
;; If we don't have a period in the first 8 chars, insert one.
(if (> (or (string-match "\\." string)
(length string))
8)
(setq string
(concat (substring string 0 8)
"."
(substring string 8))))
(setq firstdot (or (string-match "\\." string) (1- (length string))))
;; Truncate to 3 chars after the first period.
(if (> (length string) (+ firstdot 4))
(setq string (substring string 0 (+ firstdot 4))))
;; Change all periods except the first one into underscores.
(while (string-match "\\." string (1+ firstdot))
(setq i (string-match "\\." string (1+ firstdot)))
(aset string i ?_))
(concat dir string)))
(let* ((dir (file-name-directory filename))
(string (copy-sequence (file-name-nondirectory filename)))
(lastchar (aref string (1- (length string))))
i firstdot)
;; If the argument is empty, just return it.
(if (or (not (stringp filename))
(string= filename "")
(string= string ""))
filename
(progn
;; Change a leading period to a leading underscore.
(if (= (aref string 0) ?.)
(aset string 0 ?_))
;; Get rid of invalid characters.
(while (setq i (string-match
"[^-a-zA-Z0-9_.%~^$!#&{}@`'()\200-\376]"
string))
(aset string i ?_))
;; If we don't have a period,
;; and we have a dash or underscore that isn't the first char,
;; change that to a period.
(if (and (not (string-match "\\." string))
(setq i (string-match "[-_]" string 1)))
(aset string i ?\.))
;; If we don't have a period in the first 8 chars, insert one.
(if (> (or (string-match "\\." string)
(length string))
8)
(setq string
(concat (substring string 0 8)
"."
(substring string 8))))
(setq firstdot (or (string-match "\\." string) (1- (length string))))
;; Truncate to 3 chars after the first period.
(if (> (length string) (+ firstdot 4))
(setq string (substring string 0 (+ firstdot 4))))
;; Change all periods except the first one into underscores.
(while (string-match "\\." string (1+ firstdot))
(setq i (string-match "\\." string (1+ firstdot)))
(aset string i ?_))
;; If the last character of the original filename was `~',
;; make sure the munged name ends with it also.
(if (equal lastchar ?~)
(aset string (1- (length string)) lastchar))
(concat dir string)))))
(defvar file-name-buffer-file-type-alist
'(
......@@ -257,6 +270,25 @@ given by `ps-lpr-switches', which see.")
(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-sDEVICE=epson" "-r240x60"
"-sOutputFile=LPT1" "-"))
;; Backward compatibility for obsolescent functions which
;; set screen size.
(defun mode25 ()
"Changes the number of screen rows to 25."
(interactive)
(set-frame-size (selected-frame) 80 25))
(defun mode4350 ()
"Changes the number of rows to 43 or 50.
Emacs always tries to set the screen height to 50 rows first.
If this fails, it will try to set it to 43 rows, on the assumption
that your video hardware might not support 50-line mode."
(interactive)
(set-frame-size (selected-frame) 80 50)
(if (eq (frame-height (selected-frame)) 50)
nil ; the original built-in function returned nil
(set-frame-size (selected-frame) 80 43)))
(provide 'dos-fns)
; dos-fns.el ends here
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment