aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1996-01-26 19:49:01 +0000
committerRichard M. Stallman1996-01-26 19:49:01 +0000
commit706629741ff40e65834172eff85a8cb1301b31be (patch)
treee82732239184ef4fd914db1e84f9e163dfa98767
parentb5e89ed1d70dfec2b857466ec3980ca63ce52e23 (diff)
downloademacs-706629741ff40e65834172eff85a8cb1301b31be.tar.gz
emacs-706629741ff40e65834172eff85a8cb1301b31be.zip
(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.
-rw-r--r--lisp/dos-fns.el96
1 files changed, 64 insertions, 32 deletions
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el
index b7202d9c2c7..9032e64ef5e 100644
--- a/lisp/dos-fns.el
+++ b/lisp/dos-fns.el
@@ -49,38 +49,51 @@
49This function's standard definition is trivial; it just returns the argument. 49This function's standard definition is trivial; it just returns the argument.
50However, on some systems, the function is redefined 50However, on some systems, the function is redefined
51with a definition that really does change some file names." 51with a definition that really does change some file names."
52 (let ((dir (file-name-directory filename)) 52 (let* ((dir (file-name-directory filename))
53 (string (copy-sequence (file-name-nondirectory filename))) 53 (string (copy-sequence (file-name-nondirectory filename)))
54 i firstdot) 54 (lastchar (aref string (1- (length string))))
55 ;; Change a leading period to a leading underscore. 55 i firstdot)
56 (if (= (aref string 0) ?.) 56 ;; If the argument is empty, just return it.
57 (aset string 0 ?_)) 57 (if (or (not (stringp filename))
58 ;; Get rid of invalid characters. 58 (string= filename "")
59 (while (setq i (string-match "[^a-zA-Z0-9_.%~]" string)) 59 (string= string ""))
60 (aset string i ?_)) 60 filename
61 ;; If we don't have a period, 61 (progn
62 ;; and we have a dash or underscore that isn't the first char, 62 ;; Change a leading period to a leading underscore.
63 ;; change that to a period. 63 (if (= (aref string 0) ?.)
64 (if (and (not (string-match "\\." string)) 64 (aset string 0 ?_))
65 (setq i (string-match "[-_]" string 1))) 65 ;; Get rid of invalid characters.
66 (aset string i ?\.)) 66 (while (setq i (string-match
67 ;; If we don't have a period in the first 8 chars, insert one. 67 "[^-a-zA-Z0-9_.%~^$!#&{}@`'()\200-\376]"
68 (if (> (or (string-match "\\." string) 68 string))
69 (length string)) 69 (aset string i ?_))
70 8) 70 ;; If we don't have a period,
71 (setq string 71 ;; and we have a dash or underscore that isn't the first char,
72 (concat (substring string 0 8) 72 ;; change that to a period.
73 "." 73 (if (and (not (string-match "\\." string))
74 (substring string 8)))) 74 (setq i (string-match "[-_]" string 1)))
75 (setq firstdot (or (string-match "\\." string) (1- (length string)))) 75 (aset string i ?\.))
76 ;; Truncate to 3 chars after the first period. 76 ;; If we don't have a period in the first 8 chars, insert one.
77 (if (> (length string) (+ firstdot 4)) 77 (if (> (or (string-match "\\." string)
78 (setq string (substring string 0 (+ firstdot 4)))) 78 (length string))
79 ;; Change all periods except the first one into underscores. 79 8)
80 (while (string-match "\\." string (1+ firstdot)) 80 (setq string
81 (setq i (string-match "\\." string (1+ firstdot))) 81 (concat (substring string 0 8)
82 (aset string i ?_)) 82 "."
83 (concat dir string))) 83 (substring string 8))))
84 (setq firstdot (or (string-match "\\." string) (1- (length string))))
85 ;; Truncate to 3 chars after the first period.
86 (if (> (length string) (+ firstdot 4))
87 (setq string (substring string 0 (+ firstdot 4))))
88 ;; Change all periods except the first one into underscores.
89 (while (string-match "\\." string (1+ firstdot))
90 (setq i (string-match "\\." string (1+ firstdot)))
91 (aset string i ?_))
92 ;; If the last character of the original filename was `~',
93 ;; make sure the munged name ends with it also.
94 (if (equal lastchar ?~)
95 (aset string (1- (length string)) lastchar))
96 (concat dir string)))))
84 97
85(defvar file-name-buffer-file-type-alist 98(defvar file-name-buffer-file-type-alist
86 '( 99 '(
@@ -257,6 +270,25 @@ given by `ps-lpr-switches', which see.")
257(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-sDEVICE=epson" "-r240x60" 270(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-sDEVICE=epson" "-r240x60"
258 "-sOutputFile=LPT1" "-")) 271 "-sOutputFile=LPT1" "-"))
259 272
273;; Backward compatibility for obsolescent functions which
274;; set screen size.
275
276(defun mode25 ()
277 "Changes the number of screen rows to 25."
278 (interactive)
279 (set-frame-size (selected-frame) 80 25))
280
281(defun mode4350 ()
282 "Changes the number of rows to 43 or 50.
283Emacs always tries to set the screen height to 50 rows first.
284If this fails, it will try to set it to 43 rows, on the assumption
285that your video hardware might not support 50-line mode."
286 (interactive)
287 (set-frame-size (selected-frame) 80 50)
288 (if (eq (frame-height (selected-frame)) 50)
289 nil ; the original built-in function returned nil
290 (set-frame-size (selected-frame) 80 43)))
291
260(provide 'dos-fns) 292(provide 'dos-fns)
261 293
262; dos-fns.el ends here 294; dos-fns.el ends here