Mercurial > emacs
annotate lisp/dos-fns.el @ 109983:a44dc3503539
* vol2.texi (Top): Update.
* vol1.texi (Top): Update.
* tips.texi (Library Headers): Mention Package-Version and
Package-Requires.
* package.texi: New file.
* os.texi (System Interface): Update pointers.
* elisp.texi (Top): Link to new nodes. Include package.texi.
* anti.texi (Antinews): Update pointers.
author | Tom Tromey <tromey@redhat.com> |
---|---|
date | Wed, 25 Aug 2010 14:25:32 -0600 |
parents | a5969c855306 |
children | 280c8ae2476d |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37262
diff
changeset
|
1 ;;; dos-fns.el --- MS-Dos specific functions |
5443 | 2 |
104823
68150c643e2e
Use default-value rather than default-enable-multibyte-characters.
Glenn Morris <rgm@gnu.org>
parents:
104712
diff
changeset
|
3 ;; Copyright (C) 1991, 1993, 1995, 1996, 2001, 2002, 2003, 2004, 2005, |
106815 | 4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
5443 | 5 |
17977 | 6 ;; Maintainer: Morten Welinder <terra@diku.dk> |
5443 | 7 ;; Keywords: internal |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
5443 | 12 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
14 ;; (at your option) any later version. |
5443 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
5443 | 23 |
24 ;;; Commentary: | |
25 | |
26 ;; Part of this code is taken from (or derived from) demacs. | |
27 | |
28 ;;; Code: | |
29 | |
86293 | 30 (declare-function int86 "dosfns.c") |
86289
8a7ed478f7bc
* international/titdic-cnv.el (dos-8+3-filename):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86277
diff
changeset
|
31 (declare-function msdos-long-file-names "msdos.c") |
8a7ed478f7bc
* international/titdic-cnv.el (dos-8+3-filename):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
86277
diff
changeset
|
32 |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
33 ;; See convert-standard-filename in files.el. |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
34 (defun dos-convert-standard-filename (filename) |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
35 "Convert a standard file's name to something suitable for MS-DOS. |
55865
ccd8cdf69359
Rework docstring (wording by Eli Zaretskii and Kai Grossjohann).
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
36 This means to guarantee valid names and perhaps to canonicalize |
ccd8cdf69359
Rework docstring (wording by Eli Zaretskii and Kai Grossjohann).
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
37 certain patterns. |
ccd8cdf69359
Rework docstring (wording by Eli Zaretskii and Kai Grossjohann).
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
38 |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
39 This function is called by `convert-standard-filename'. |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
40 |
55865
ccd8cdf69359
Rework docstring (wording by Eli Zaretskii and Kai Grossjohann).
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
41 On Windows and DOS, replace invalid characters. On DOS, make |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
42 sure to obey the 8.3 limitations." |
29855
4a37c3f4cb29
(convert-standard-filename): Convert leading
Eli Zaretskii <eliz@gnu.org>
parents:
24515
diff
changeset
|
43 (if (or (not (stringp filename)) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
44 ;; This catches the case where FILENAME is "x:" or "x:/" or |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
45 ;; "/", thus preventing infinite recursion. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
46 (string-match "\\`\\([a-zA-Z]:\\)?[/\\]?\\'" filename)) |
15187
d46c1e8bdb0d
(convert-standard-filename): Test msdos-long-file-names.
Richard M. Stallman <rms@gnu.org>
parents:
14734
diff
changeset
|
47 filename |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
48 (let ((flen (length filename))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
49 ;; If FILENAME has a trailing slash, remove it and recurse. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
50 (if (memq (aref filename (1- flen)) '(?/ ?\\)) |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
51 (concat (dos-convert-standard-filename |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
52 (substring filename 0 (1- flen))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
53 "/") |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
54 (let* (;; ange-ftp gets in the way for names like "/foo:bar". |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
55 ;; We need to inhibit all magic file names, because |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
56 ;; remote file names should never be passed through |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
57 ;; this function, as they are not meant for the local |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
58 ;; filesystem! |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
59 (file-name-handler-alist nil) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
60 (dir |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
61 ;; If FILENAME is "x:foo", file-name-directory returns |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
62 ;; "x:/bar/baz", substituting the current working |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
63 ;; directory on drive x:. We want to be left with "x:" |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
64 ;; instead. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
65 (if (and (< 1 flen) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
66 (eq (aref filename 1) ?:) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
67 (null (string-match "[/\\]" filename))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
68 (substring filename 0 2) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
69 (file-name-directory filename))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
70 (dlen-m-1 (1- (length dir))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
71 (string (copy-sequence (file-name-nondirectory filename))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
72 (lastchar (aref string (1- (length string)))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
73 i firstdot) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
74 (cond |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
75 ((msdos-long-file-names) |
29855
4a37c3f4cb29
(convert-standard-filename): Convert leading
Eli Zaretskii <eliz@gnu.org>
parents:
24515
diff
changeset
|
76 ;; Replace characters that are invalid even on Windows. |
4a37c3f4cb29
(convert-standard-filename): Convert leading
Eli Zaretskii <eliz@gnu.org>
parents:
24515
diff
changeset
|
77 (while (setq i (string-match "[?*:<>|\"\000-\037]" string)) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
78 (aset string i ?!))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
79 ((not (member string '("" "." ".."))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
80 ;; Change a leading period to a leading underscore. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
81 (if (= (aref string 0) ?.) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
82 (aset string 0 ?_)) |
39305
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
83 ;; If the name is longer than 8 chars, and doesn't have a |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
84 ;; period, and we have a dash or underscore that isn't too |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
85 ;; close to the beginning, change that to a period. This |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
86 ;; is so we could salvage more characters of the original |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
87 ;; name by pushing them into the extension. |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
88 (if (and (not (string-match "\\." string)) |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
89 (> (length string) 8) |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
90 ;; We don't gain anything if we put the period closer |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
91 ;; than 5 chars from the beginning (5 + 3 = 8). |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
92 (setq i (string-match "[-_]" string 5))) |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
93 (aset string i ?\.)) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
94 ;; Get rid of invalid characters. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
95 (while (setq i (string-match |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
96 "[^-a-zA-Z0-9_.%~^$!#&{}@`'()\200-\376]" |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
97 string)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
98 (aset string i ?_)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
99 ;; If we don't have a period in the first 8 chars, insert one. |
39305
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
100 ;; This enables to have 3 more characters from the original |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
101 ;; name in the extension. |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
102 (if (> (or (string-match "\\." string) (length string)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
103 8) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
104 (setq string |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
105 (concat (substring string 0 8) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
106 "." |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
107 (substring string 8)))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
108 (setq firstdot (or (string-match "\\." string) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
109 (1- (length string)))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
110 ;; Truncate to 3 chars after the first period. |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
111 (if (> (length string) (+ firstdot 4)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
112 (setq string (substring string 0 (+ firstdot 4)))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
113 ;; Change all periods except the first one into underscores. |
39305
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
114 ;; (DOS doesn't allow more than one period.) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
115 (while (string-match "\\." string (1+ firstdot)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
116 (setq i (string-match "\\." string (1+ firstdot))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
117 (aset string i ?_)) |
39305
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
118 ;; If the last character of the original filename was `~' or `#', |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
119 ;; make sure the munged name ends with it also. This is so that |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
120 ;; backup and auto-save files retain their telltale form. |
22c925655e32
(convert-standard-filename): Replace invalid
Eli Zaretskii <eliz@gnu.org>
parents:
39301
diff
changeset
|
121 (if (memq lastchar '(?~ ?#)) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
122 (aset string (1- (length string)) lastchar)))) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
123 (concat (if (and (stringp dir) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
124 (memq (aref dir dlen-m-1) '(?/ ?\\))) |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
125 (concat (dos-convert-standard-filename |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
126 (substring dir 0 dlen-m-1)) |
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
127 "/") |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
128 (dos-convert-standard-filename dir)) |
29966
cf435e74e3ee
(convert-standard-filename): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
29855
diff
changeset
|
129 string)))))) |
13913
4e4201bcea5d
(convert-standard-filename): New alternate definition.
Richard M. Stallman <rms@gnu.org>
parents:
13487
diff
changeset
|
130 |
37262
3e478bb3f389
(dos-8+3-filename): Rename from dos-truncate-to-8+3.
Eli Zaretskii <eliz@gnu.org>
parents:
37257
diff
changeset
|
131 (defun dos-8+3-filename (filename) |
37257
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
132 "Truncate FILENAME to DOS 8+3 limits." |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
133 (if (or (not (stringp filename)) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
134 (< (length filename) 5)) ; too short to give any trouble |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
135 filename |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
136 (let ((flen (length filename))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
137 ;; If FILENAME has a trailing slash, remove it and recurse. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
138 (if (memq (aref filename (1- flen)) '(?/ ?\\)) |
37262
3e478bb3f389
(dos-8+3-filename): Rename from dos-truncate-to-8+3.
Eli Zaretskii <eliz@gnu.org>
parents:
37257
diff
changeset
|
139 (concat (dos-8+3-filename (substring filename 0 (1- flen))) |
37257
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
140 "/") |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
141 (let* (;; ange-ftp gets in the way for names like "/foo:bar". |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
142 ;; We need to inhibit all magic file names, because |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
143 ;; remote file names should never be passed through |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
144 ;; this function, as they are not meant for the local |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
145 ;; filesystem! |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
146 (file-name-handler-alist nil) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
147 (dir |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
148 ;; If FILENAME is "x:foo", file-name-directory returns |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
149 ;; "x:/bar/baz", substituting the current working |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
150 ;; directory on drive x:. We want to be left with "x:" |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
151 ;; instead. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
152 (if (and (< 1 flen) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
153 (eq (aref filename 1) ?:) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
154 (null (string-match "[/\\]" filename))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
155 (substring filename 0 2) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
156 (file-name-directory filename))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
157 (dlen-m-1 (1- (length dir))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
158 (string (copy-sequence (file-name-nondirectory filename))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
159 (strlen (length string)) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
160 (lastchar (aref string (1- strlen))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
161 i firstdot) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
162 (setq firstdot (string-match "\\." string)) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
163 (cond |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
164 (firstdot |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
165 ;; Truncate the extension to 3 characters. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
166 (if (> strlen (+ firstdot 4)) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
167 (setq string (substring string 0 (+ firstdot 4)))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
168 ;; Truncate the basename to 8 characters. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
169 (if (> firstdot 8) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
170 (setq string (concat (substring string 0 8) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
171 "." |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
172 (substring string (1+ firstdot)))))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
173 ((> strlen 8) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
174 ;; No dot; truncate file name to 8 characters. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
175 (setq string (substring string 0 8)))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
176 ;; If the last character of the original filename was `~', |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
177 ;; make sure the munged name ends with it also. This is so |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
178 ;; a backup file retains its final `~'. |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
179 (if (equal lastchar ?~) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
180 (aset string (1- (length string)) lastchar)) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
181 (concat (if (and (stringp dir) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
182 (memq (aref dir dlen-m-1) '(?/ ?\\))) |
37262
3e478bb3f389
(dos-8+3-filename): Rename from dos-truncate-to-8+3.
Eli Zaretskii <eliz@gnu.org>
parents:
37257
diff
changeset
|
183 (concat (dos-8+3-filename (substring dir 0 dlen-m-1)) |
37257
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
184 "/") |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
185 ;; Recurse to truncate the leading directories. |
37262
3e478bb3f389
(dos-8+3-filename): Rename from dos-truncate-to-8+3.
Eli Zaretskii <eliz@gnu.org>
parents:
37257
diff
changeset
|
186 (dos-8+3-filename dir)) |
37257
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
187 string)))))) |
6bbf8e77d787
(dos-truncate-to-8+3): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
29966
diff
changeset
|
188 |
100691
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
189 ;; This is for the sake of standard file names elsewhere in Emacs that |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
190 ;; are defined as constant strings or via defconst, and whose |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
191 ;; conversion via `dos-convert-standard-filename' does not give good |
100691
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
192 ;; enough results. |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
193 (defun dosified-file-name (file-name) |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
194 "Return a variant of FILE-NAME that is valid on MS-DOS filesystems. |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
195 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
196 This function is for those rare cases where `dos-convert-standard-filename' |
100691
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
197 does not do a job that is good enough, e.g. if you need to preserve the |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
198 file-name extension. It recognizes only certain specific file names |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
199 that are used in Emacs Lisp sources; any other file name will be |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
200 returned unaltered." |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
201 (cond |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
202 ;; See files.el:dir-locals-file. |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
203 ((string= file-name ".dir-locals.el") |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
204 "_dir-locals.el") |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
205 (t |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
206 file-name))) |
89166beb2187
(dosified-file-name): New function.
Eli Zaretskii <eliz@gnu.org>
parents:
98874
diff
changeset
|
207 |
22070
d8e53123116c
(dos-ps-printer, dos-printer, msdos-shells):
Richard M. Stallman <rms@gnu.org>
parents:
21568
diff
changeset
|
208 ;; See dos-vars.el for defcustom. |
d8e53123116c
(dos-ps-printer, dos-printer, msdos-shells):
Richard M. Stallman <rms@gnu.org>
parents:
21568
diff
changeset
|
209 (defvar msdos-shells) |
5443 | 210 |
98859
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
211 ;; Override settings chosen at startup. |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
212 (defun dos-set-default-process-coding-system () |
24515
ef4a540c34ff
(set-default-process-coding-system): Copied from dos-w32.el.
Andrew Innes <andrewi@gnu.org>
parents:
22676
diff
changeset
|
213 (setq default-process-coding-system |
104823
68150c643e2e
Use default-value rather than default-enable-multibyte-characters.
Glenn Morris <rgm@gnu.org>
parents:
104712
diff
changeset
|
214 (if (default-value 'enable-multibyte-characters) |
24515
ef4a540c34ff
(set-default-process-coding-system): Copied from dos-w32.el.
Andrew Innes <andrewi@gnu.org>
parents:
22676
diff
changeset
|
215 '(undecided-dos . undecided-dos) |
ef4a540c34ff
(set-default-process-coding-system): Copied from dos-w32.el.
Andrew Innes <andrewi@gnu.org>
parents:
22676
diff
changeset
|
216 '(raw-text-dos . raw-text-dos)))) |
ef4a540c34ff
(set-default-process-coding-system): Copied from dos-w32.el.
Andrew Innes <andrewi@gnu.org>
parents:
22676
diff
changeset
|
217 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
218 (add-hook 'before-init-hook 'dos-set-default-process-coding-system) |
24515
ef4a540c34ff
(set-default-process-coding-system): Copied from dos-w32.el.
Andrew Innes <andrewi@gnu.org>
parents:
22676
diff
changeset
|
219 |
98859
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
220 ;; File names defined in preloaded packages can be incorrect or |
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
221 ;; invalid if long file names were available during dumping, but not |
98874
d42cab7ccc5d
(dos-reevaluate-defcustoms): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
98859
diff
changeset
|
222 ;; at runtime, or vice versa, and if the default file name begins with |
d42cab7ccc5d
(dos-reevaluate-defcustoms): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
98859
diff
changeset
|
223 ;; a period. Their defcustom's need to be reevaluated at startup. To |
d42cab7ccc5d
(dos-reevaluate-defcustoms): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
98859
diff
changeset
|
224 ;; see if the list of defcustom's below is up to date, run the command |
d42cab7ccc5d
(dos-reevaluate-defcustoms): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
98859
diff
changeset
|
225 ;; "M-x apropos-value RET ~/\. RET". |
98859
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
226 (defun dos-reevaluate-defcustoms () |
104982
f26e1b8ad86e
(dos-reevaluate-defcustoms): Comment out the reevaluation of trash-directory.
Eli Zaretskii <eliz@gnu.org>
parents:
104823
diff
changeset
|
227 ;; This is not needed in Emacs 23.2 and later, as trash-directory is |
f26e1b8ad86e
(dos-reevaluate-defcustoms): Comment out the reevaluation of trash-directory.
Eli Zaretskii <eliz@gnu.org>
parents:
104823
diff
changeset
|
228 ;; initialized as nil. But something like this might become |
f26e1b8ad86e
(dos-reevaluate-defcustoms): Comment out the reevaluation of trash-directory.
Eli Zaretskii <eliz@gnu.org>
parents:
104823
diff
changeset
|
229 ;; necessary in the future, so I'm keeping it here as a reminder. |
f26e1b8ad86e
(dos-reevaluate-defcustoms): Comment out the reevaluation of trash-directory.
Eli Zaretskii <eliz@gnu.org>
parents:
104823
diff
changeset
|
230 ;(custom-reevaluate-setting 'trash-directory) |
f26e1b8ad86e
(dos-reevaluate-defcustoms): Comment out the reevaluation of trash-directory.
Eli Zaretskii <eliz@gnu.org>
parents:
104823
diff
changeset
|
231 ) |
98859
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
232 |
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
233 (add-hook 'before-init-hook 'dos-reevaluate-defcustoms) |
ff71052e3573
(dos-reevaluate-defcustoms): New function. Add it to before-init-hook.
Eli Zaretskii <eliz@gnu.org>
parents:
94678
diff
changeset
|
234 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
235 (defvar dos-register-name-alist |
5443 | 236 '((ax . 0) (bx . 1) (cx . 2) (dx . 3) (si . 4) (di . 5) |
7256
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
237 (cflag . 6) (flags . 7) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
238 (al . (0 . 0)) (bl . (1 . 0)) (cl . (2 . 0)) (dl . (3 . 0)) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
239 (ah . (0 . 1)) (bh . (1 . 1)) (ch . (2 . 1)) (dh . (3 . 1)))) |
5443 | 240 |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
241 (define-obsolete-variable-alias |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
242 'register-name-alist 'dos-register-name-alist "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
243 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
244 (defun dos-make-register () |
5443 | 245 (make-vector 8 0)) |
246 | |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
247 (define-obsolete-function-alias 'make-register 'dos-make-register "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
248 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
249 (defun dos-register-value (regs name) |
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
250 (let ((where (cdr (assoc name dos-register-name-alist)))) |
5443 | 251 (cond ((consp where) |
252 (let ((tem (aref regs (car where)))) | |
253 (if (zerop (cdr where)) | |
254 (% tem 256) | |
255 (/ tem 256)))) | |
256 ((numberp where) | |
257 (aref regs where)) | |
258 (t nil)))) | |
259 | |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
260 (define-obsolete-function-alias 'register-value 'dos-register-value "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
261 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
262 (defun dos-set-register-value (regs name value) |
5443 | 263 (and (numberp value) |
7256
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
264 (>= value 0) |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
265 (let ((where (cdr (assoc name dos-register-name-alist)))) |
5443 | 266 (cond ((consp where) |
7256
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
267 (let ((tem (aref regs (car where))) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
268 (value (logand value 255))) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
269 (aset regs |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
270 (car where) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
271 (if (zerop (cdr where)) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
272 (logior (logand tem 65280) value) |
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
273 (logior (logand tem 255) (lsh value 8)))))) |
5443 | 274 ((numberp where) |
7256
0f06f87f3c3b
(set-register-value): Setting the high byte of a
Richard M. Stallman <rms@gnu.org>
parents:
7087
diff
changeset
|
275 (aset regs where (logand value 65535)))))) |
5443 | 276 regs) |
277 | |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
278 (define-obsolete-function-alias |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
279 'set-register-value 'dos-set-register-value "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
280 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
281 (defsubst dos-intdos (regs) |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
282 "Issue the DOS Int 21h with registers REGS. |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
283 |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
284 REGS should be a vector produced by `dos-make-register' |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
285 and `dos-set-register-value', which see." |
5443 | 286 (int86 33 regs)) |
287 | |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
288 (define-obsolete-function-alias 'intdos 'dos-intdos "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
289 |
14380
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
290 ;; Backward compatibility for obsolescent functions which |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
291 ;; set screen size. |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
292 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
293 (defun dos-mode25 () |
14380
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
294 "Changes the number of screen rows to 25." |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
295 (interactive) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
296 (set-frame-size (selected-frame) 80 25)) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
297 |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
298 (define-obsolete-function-alias 'mode25 'dos-mode25 "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
299 |
108520
a4cdc6d33cc6
* dos-fns.el: Add "dos-" prefix for namespace control.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106815
diff
changeset
|
300 (defun dos-mode4350 () |
14380
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
301 "Changes the number of rows to 43 or 50. |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
302 Emacs always tries to set the screen height to 50 rows first. |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
303 If this fails, it will try to set it to 43 rows, on the assumption |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
304 that your video hardware might not support 50-line mode." |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
305 (interactive) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
306 (set-frame-size (selected-frame) 80 50) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
307 (if (eq (frame-height (selected-frame)) 50) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
308 nil ; the original built-in function returned nil |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
309 (set-frame-size (selected-frame) 80 43))) |
874cd82cd2b4
(mode25): Moved from `src/dosfns.c' for backward compatibility.
Richard M. Stallman <rms@gnu.org>
parents:
14189
diff
changeset
|
310 |
108594
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
311 (define-obsolete-function-alias 'mode4350 'dos-mode4350 "24.1") |
a5969c855306
Don't override standard definition of convert-standard-filename.
Eli Zaretskii <eliz@gnu.org>
parents:
108520
diff
changeset
|
312 |
14189
557b3d11a381
(ps-lpr-switches, ps-lpr-command): Just setq them;
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
313 (provide 'dos-fns) |
557b3d11a381
(ps-lpr-switches, ps-lpr-command): Just setq them;
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
314 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
315 ;; arch-tag: 00b03579-8ebb-4a02-8762-5c5a929774ad |
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37262
diff
changeset
|
316 ;;; dos-fns.el ends here |