Mercurial > emacs
annotate src/s/msdos.h @ 24841:d2d412758428
(clear_cached_bitmap_slots): Remove.
(get_bitmap_with_cache): Check if CreateBitmap failed.
Adjust cache size dynamically so cache is never larger than the
system limit of GDI resources.
Do cache clearing inline. Move global variables to local scope.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Sun, 13 Jun 1999 17:49:12 +0000 |
parents | 42bddf2eebad |
children | d19a69fd704a |
rev | line source |
---|---|
5503 | 1 /* System description file for MS-DOS |
2 | |
15003 | 3 Copyright (C) 1993, 1996 Free Software Foundation, Inc. |
5503 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
7 GNU Emacs is free software; you can redistribute it and/or modify | |
8 it under the terms of the GNU General Public License as published by | |
9 the Free Software Foundation; either version 2, or (at your option) | |
10 any later version. | |
11 | |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14036
diff
changeset
|
20 Boston, MA 02111-1307, USA. */ |
5503 | 21 |
22 /* Note: lots of stuff here was taken from s-msdos.h in demacs. */ | |
23 | |
24 | |
25 /* | |
26 * Define symbols to identify the version of Unix this is. | |
27 * Define all the symbols that apply correctly. | |
28 */ | |
29 | |
30 /* #define UNIPLUS */ | |
31 /* #define USG5 */ | |
32 /* #define USG */ | |
33 /* #define HPUX */ | |
34 /* #define UMAX */ | |
35 /* #define BSD4_1 */ | |
36 /* #define BSD4_2 */ | |
37 /* #define BSD4_3 */ | |
16220
02044b05d8e0
Replaced symbol BSD with BSD_SYSTEM.
Karl Heuer <kwzh@gnu.org>
parents:
15220
diff
changeset
|
38 /* #define BSD_SYSTEM */ |
5503 | 39 /* #define VMS */ |
40 #ifndef MSDOS | |
41 #define MSDOS | |
42 #endif | |
9798 | 43 |
13177
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
44 #ifdef __GO32__ |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
45 #ifndef __DJGPP__ |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
46 #define __DJGPP__ 1 /* V2 defines __DJGPP__ == 2 */ |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
47 #endif |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
48 #else |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
49 You lose; /* Emacs for DOS must be compiled with DJGPP */ |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
50 #endif |
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
51 |
9798 | 52 #define DOS_NT /* MSDOS or WINDOWSNT */ |
16220
02044b05d8e0
Replaced symbol BSD with BSD_SYSTEM.
Karl Heuer <kwzh@gnu.org>
parents:
15220
diff
changeset
|
53 #undef BSD_SYSTEM |
5503 | 54 #undef VMS |
55 | |
56 /* SYSTEM_TYPE should indicate the kind of system you are using. | |
57 It sets the Lisp variable system-type. */ | |
58 | |
59 #define SYSTEM_TYPE "ms-dos" | |
60 | |
17453
42bddf2eebad
(SYMS_SYSTEM): Add `syms_of_win16select'.
Eli Zaretskii <eliz@gnu.org>
parents:
16220
diff
changeset
|
61 #define SYMS_SYSTEM syms_of_dosfns();syms_of_msdos();syms_of_win16select() |
5503 | 62 |
63 /* NOMULTIPLEJOBS should be defined if your system's shell | |
64 does not have "job control" (the ability to stop a program, | |
65 run some other program, then continue the first one). */ | |
66 | |
67 #define NOMULTIPLEJOBS | |
68 | |
69 /* Emacs can read input using SIGIO and buffering characters itself, | |
70 or using CBREAK mode and making C-g cause SIGINT. | |
71 The choice is controlled by the variable interrupt_input. | |
72 Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO) | |
73 | |
74 SIGIO can be used only on systems that implement it (4.2 and 4.3). | |
14036 | 75 CBREAK mode has two disadvantages |
5503 | 76 1) At least in 4.2, it is impossible to handle the Meta key properly. |
77 I hear that in system V this problem does not exist. | |
78 2) Control-G causes output to be discarded. | |
79 I do not know whether this can be fixed in system V. | |
80 | |
81 Another method of doing input is planned but not implemented. | |
82 It would have Emacs fork off a separate process | |
83 to read the input and send it to the true Emacs process | |
84 through a pipe. | |
85 */ | |
86 | |
87 /* #define INTERRUPT_INPUT */ | |
88 | |
89 /* Letter to use in finding device name of first pty, | |
90 if system supports pty's. 'a' means it is /dev/ptya0 */ | |
91 | |
92 /* #define FIRST_PTY_LETTER 'a' */ | |
93 | |
94 /* | |
95 * Define HAVE_PTYS if the system supports pty devices. | |
96 */ | |
97 | |
98 /* #define HAVE_PTYS */ | |
99 | |
100 /* | |
101 * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate | |
102 * The 4.2 opendir, etc., library functions. | |
103 */ | |
104 | |
105 /* #define NONSYSTEM_DIR_LIBRARY */ | |
106 | |
107 #define SYSV_SYSTEM_DIR | |
108 | |
109 /* Define this symbol if your system has the functions bcopy, etc. */ | |
110 | |
111 #define BSTRING | |
112 | |
8250
9198d6e1f11c
(HAVE_VOLATILE): Define.
Richard M. Stallman <rms@gnu.org>
parents:
8199
diff
changeset
|
113 /* Define this is the compiler understands `volatile'. */ |
9198d6e1f11c
(HAVE_VOLATILE): Define.
Richard M. Stallman <rms@gnu.org>
parents:
8199
diff
changeset
|
114 #define HAVE_VOLATILE |
9198d6e1f11c
(HAVE_VOLATILE): Define.
Richard M. Stallman <rms@gnu.org>
parents:
8199
diff
changeset
|
115 |
9198d6e1f11c
(HAVE_VOLATILE): Define.
Richard M. Stallman <rms@gnu.org>
parents:
8199
diff
changeset
|
116 |
5503 | 117 /* subprocesses should be defined if you want to |
118 have code for asynchronous subprocesses | |
119 (as used in M-x compile and M-x shell). | |
120 This is generally OS dependent, and not supported | |
121 under most USG systems. */ | |
122 | |
123 #undef subprocesses | |
124 | |
125 /* If your system uses COFF (Common Object File Format) then define the | |
126 preprocessor symbol "COFF". */ | |
127 | |
128 #define COFF | |
129 | |
130 /* define MAIL_USE_FLOCK if the mailer uses flock | |
131 to interlock access to /usr/spool/mail/$USER. | |
132 The alternative is that a lock file named | |
133 /usr/spool/mail/$USER.lock. */ | |
134 | |
135 /* #define MAIL_USE_FLOCK */ | |
136 | |
137 /* Define CLASH_DETECTION if you want lock files to be written | |
138 so that Emacs can tell instantly when you try to modify | |
139 a file that someone else has modified in his Emacs. */ | |
140 | |
141 /* #define CLASH_DETECTION */ | |
142 | |
143 /* Here, on a separate page, add any special hacks needed | |
144 to make Emacs work on this system. For example, | |
145 you might define certain system call names that don't | |
146 exist on your system, or that do different things on | |
147 your system and must be used only through an encapsulation | |
148 (Which you should place, by convention, in sysdep.c). */ | |
149 | |
15172
4745198895b6
(GMALLOC_INHIBIT_VALLOC): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
15003
diff
changeset
|
150 /* Avoid incompatibilities between gmalloc.c and system header files |
4745198895b6
(GMALLOC_INHIBIT_VALLOC): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
15003
diff
changeset
|
151 in how to declare valloc. */ |
4745198895b6
(GMALLOC_INHIBIT_VALLOC): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
15003
diff
changeset
|
152 #define GMALLOC_INHIBIT_VALLOC |
4745198895b6
(GMALLOC_INHIBIT_VALLOC): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
15003
diff
changeset
|
153 |
5503 | 154 /* setjmp and longjmp can safely replace _setjmp and _longjmp, |
155 but they will run slower. */ | |
156 | |
157 #define _setjmp setjmp | |
158 #define _longjmp longjmp | |
159 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
160 #if __DJGPP__ < 2 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
161 |
5503 | 162 #define NO_MODE_T |
163 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
164 /* New chdir () routine. |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
165 DJGPP v2.0 and later doesn't need it because its chdir() does |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
166 set the drive itself. */ |
5503 | 167 #ifdef chdir |
168 #undef chdir | |
169 #endif | |
170 #define chdir sys_chdir | |
171 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
172 #define LIBS_SYSTEM -lpc /* isn't required in DJGPP v2.0, either */ |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
173 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
174 #endif /* __DJGPP__ < 2 */ |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
175 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
176 #if __DJGPP__ > 1 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
177 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
178 #define DATA_START (&etext + 1) |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
179 #define TEXT_START &start |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
180 #define TEXT_END &etext |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
181 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
182 #define _NAIVE_DOS_REGS |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
183 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
184 #else /* not __DJGPP__ > 1 */ |
5503 | 185 |
186 /* This somehow needs to be defined even though we use COFF. */ | |
187 #define TEXT_START -1 | |
188 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
189 #endif /* not __DJGPP__ > 1 */ |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
190 |
5503 | 191 #define ORDINARY_LINK |
192 | |
9572 | 193 /* command.com does not understand `...` so we define this. */ |
5503 | 194 #define LIB_GCC -Lgcc |
195 #define DONT_NEED_ENVIRON | |
196 #define SEPCHAR ';' | |
197 | |
198 #define NULL_DEVICE "nul" | |
199 #define EXEC_SUFFIXES ".exe:.com:.bat:" | |
200 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
201 #if __DJGPP__ < 2 |
5503 | 202 #define O_RDONLY 0x0001 |
203 #define O_WRONLY 0x0002 | |
204 #define O_RDWR 0x0004 | |
205 #define O_CREAT 0x0100 | |
206 #define O_TRUNC 0x0200 | |
207 #define O_EXCL 0x0400 | |
208 #define O_APPEND 0x0800 | |
209 #define O_TEXT 0x4000 | |
210 #define O_BINARY 0x8000 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
211 #define NO_MATHERR |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
212 #endif |
5503 | 213 |
214 #define HAVE_INVERSE_HYPERBOLIC | |
215 #define FLOAT_CHECK_DOMAIN | |
216 | |
217 /* When $TERM is "internal" then this is substituted: */ | |
218 #define INTERNAL_TERMINAL "pc|bios|IBM PC with colour display:\ | |
13177
439506fa922e
Check that DJGPP v. 1 is used.
Kim F. Storm <storm@cua.dk>
parents:
13041
diff
changeset
|
219 :co#80:li#25:km:ms:cm=<CM>:cl=<CL>:ce=<CE>:" |
5503 | 220 |
221 /* Define this to a function (Fdowncase, Fupcase) if your file system | |
222 likes that */ | |
15220
069fc3f2c2b4
(FILE_SYSTEM_CASE): Call Fmsdos_downcase_filename instead of Fdowncase.
Richard M. Stallman <rms@gnu.org>
parents:
15172
diff
changeset
|
223 #define FILE_SYSTEM_CASE Fmsdos_downcase_filename |
5503 | 224 |
10500
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
225 /* Define this to be the separator between devices and paths */ |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
226 #define DEVICE_SEP ':' |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
227 |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
228 /* We'll support either convention on MSDOG. */ |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
229 #define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\') |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
230 #define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_)) |
4d77d5230bff
(DEVICE_SEP, IS_DIRECTORY_SEP, IS_ANY_SEP): Defined.
Richard M. Stallman <rms@gnu.org>
parents:
9798
diff
changeset
|
231 |
13041
140467bd68ba
(LOCALTIME_CACHE, tzset): New macros.
Paul Eggert <eggert@twinsun.com>
parents:
12345
diff
changeset
|
232 /* Call init_gettimeofday when TZ changes. */ |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
233 #if __DJGPP__ < 2 |
13041
140467bd68ba
(LOCALTIME_CACHE, tzset): New macros.
Paul Eggert <eggert@twinsun.com>
parents:
12345
diff
changeset
|
234 #define LOCALTIME_CACHE |
140467bd68ba
(LOCALTIME_CACHE, tzset): New macros.
Paul Eggert <eggert@twinsun.com>
parents:
12345
diff
changeset
|
235 #define tzset init_gettimeofday |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
236 #endif |
13041
140467bd68ba
(LOCALTIME_CACHE, tzset): New macros.
Paul Eggert <eggert@twinsun.com>
parents:
12345
diff
changeset
|
237 |
6382 | 238 /* bcopy under djgpp is quite safe */ |
239 #define GAP_USE_BCOPY | |
240 #define BCOPY_UPWARD_SAFE 1 | |
241 #define BCOPY_DOWNWARD_SAFE 1 | |
8199
04a19fb09fb3
(HAVE_MOUSE, PURESIZE): Definitions moved here.
Richard M. Stallman <rms@gnu.org>
parents:
7668
diff
changeset
|
242 |
8796 | 243 /* Mode line description of a buffer's type. */ |
244 #define MODE_LINE_BINARY_TEXT(buf) (NILP(buf->buffer_file_type) ? "T" : "B") | |
245 | |
14970
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
246 /* Do we have POSIX signals? */ |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
247 #if __DJGPP__ > 1 |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
248 #define POSIX_SIGNALS |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
249 #endif |
78a622f19f7f
(DATA_START, TEXT_START, TEXT_END, _NAIVE_DOS_REGS)
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
250 |
8199
04a19fb09fb3
(HAVE_MOUSE, PURESIZE): Definitions moved here.
Richard M. Stallman <rms@gnu.org>
parents:
7668
diff
changeset
|
251 /* We have (the code to control) a mouse. */ |
04a19fb09fb3
(HAVE_MOUSE, PURESIZE): Definitions moved here.
Richard M. Stallman <rms@gnu.org>
parents:
7668
diff
changeset
|
252 #define HAVE_MOUSE |
9572 | 253 |
13849 | 254 /* We canuse mouse menus. */ |
255 #define HAVE_MENUS | |
256 | |
9572 | 257 /* We have support for faces. */ |
258 #define HAVE_FACES | |
259 | |
260 /* Define one of these for easier conditionals. */ | |
261 #ifdef HAVE_X_WINDOWS | |
262 /* We need a little extra space, see ../../lisp/loadup.el */ | |
263 #define SYSTEM_PURESIZE_EXTRA 15000 | |
264 #define HAVE_X11R5 | |
265 #define LIBX11_SYSTEM -lxext -lsys | |
266 #else | |
267 /* We need a little extra space, see ../../lisp/loadup.el */ | |
13613
b955657b643d
(SYSTEM_PURESIZE_EXTRA): Increased.
Richard M. Stallman <rms@gnu.org>
parents:
13465
diff
changeset
|
268 #define SYSTEM_PURESIZE_EXTRA 85000 |
9572 | 269 #endif |