Mercurial > hg > xemacs-beta
comparison src/s/windowsnt.h @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 3a7e78e1142d |
comparison
equal
deleted
inserted
replaced
427:0a0253eac470 | 428:3ecd8885ac67 |
---|---|
1 /* System description file for Windows NT. | |
2 Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 2, or (at your option) | |
9 any later version. | |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Synched up with: FSF 19.31. */ | |
22 | |
23 #ifndef WINDOWSNT | |
24 #define WINDOWSNT | |
25 #endif | |
26 | |
27 #ifndef DOS_NT | |
28 #define DOS_NT /* MSDOS or WINDOWSNT */ | |
29 #endif | |
30 | |
31 /* In case non-Microsoft compiler is used, we fake _MSC_VER */ | |
32 #ifndef _MSC_VER | |
33 #define _MSC_VER 1 | |
34 #endif | |
35 | |
36 typedef unsigned short mode_t; | |
37 /* typedef long ptrdiff_t; -kkm */ | |
38 typedef int pid_t; | |
39 | |
40 #include <stddef.h> | |
41 | |
42 /* If you are compiling with a non-C calling convention but need to | |
43 declare vararg routines differently, put it here */ | |
44 #define _VARARGS_ __cdecl | |
45 | |
46 /* If you are providing a function to something that will call the | |
47 function back (like a signal handler and signal, or main) its calling | |
48 convention must be whatever standard the libraries expect */ | |
49 #define _CALLBACK_ __cdecl | |
50 | |
51 /* SYSTEM_TYPE should indicate the kind of system you are using. | |
52 It sets the Lisp variable system-type. */ | |
53 | |
54 #define SYSTEM_TYPE "windows-nt" | |
55 | |
56 #define NO_MATHERR | |
57 | |
58 #define SIZEOF_SHORT 2 | |
59 #define SIZEOF_INT 4 | |
60 #define SIZEOF_LONG 4 | |
61 #define SIZEOF_LONG_LONG 8 | |
62 #define SIZEOF_VOID_P 4 | |
63 | |
64 /* NOMULTIPLEJOBS should be defined if your system's shell | |
65 does not have "job control" (the ability to stop a program, | |
66 run some other program, then continue the first one). */ | |
67 | |
68 /* #define NOMULTIPLEJOBS */ | |
69 | |
70 /* Letter to use in finding device name of first pty, | |
71 if system supports pty's. 'a' means it is /dev/ptya0 */ | |
72 | |
73 #define FIRST_PTY_LETTER 'a' | |
74 | |
75 /* | |
76 * Define HAVE_TIMEVAL if the system supports the BSD style clock values. | |
77 * Look in <sys/time.h> for a timeval structure. | |
78 */ | |
79 | |
80 #define HAVE_TIMEVAL | |
81 | |
82 /* | |
83 * Define HAVE_SELECT if the system supports the `select' system call. | |
84 */ | |
85 | |
86 /* #define HAVE_SELECT */ | |
87 | |
88 /* | |
89 * Define HAVE_PTYS if the system supports pty devices. | |
90 */ | |
91 | |
92 /* #define HAVE_PTYS */ | |
93 | |
94 /* If your system uses COFF (Common Object File Format) then define the | |
95 preprocessor symbol "COFF". */ | |
96 | |
97 #define COFF | |
98 | |
99 /* NT supports Winsock which is close enough (with some hacks) */ | |
100 | |
101 #define HAVE_SOCKETS | |
102 | |
103 /* define MAIL_USE_FLOCK if the mailer uses flock | |
104 to interlock access to /usr/spool/mail/$USER. | |
105 The alternative is that a lock file named | |
106 /usr/spool/mail/$USER.lock. */ | |
107 | |
108 /* #define MAIL_USE_FLOCK */ | |
109 #define MAIL_USE_POP | |
110 #define MAIL_USE_SYSTEM_LOCK | |
111 | |
112 /* If the character used to separate elements of the executable path | |
113 is not ':', #define this to be the appropriate character constant. */ | |
114 #define SEPCHAR ';' | |
115 | |
116 /* ============================================================ */ | |
117 | |
118 /* Here, add any special hacks needed | |
119 to make Emacs work on this system. For example, | |
120 you might define certain system call names that don't | |
121 exist on your system, or that do different things on | |
122 your system and must be used only through an encapsulation | |
123 (Which you should place, by convention, in sysdep.c). */ | |
124 | |
125 /* XEmacs file I/O for DOS text files requires FILE_CODING */ | |
126 #define FILE_CODING | |
127 | |
128 #define DIRECTORY_SEP '\\' | |
129 | |
130 /* Define this to be the separator between devices and paths */ | |
131 #define DEVICE_SEP ':' | |
132 | |
133 /* We'll support either convention on NT. */ | |
134 #define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\') | |
135 #define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_)) | |
136 | |
137 /* The null device on Windows NT. */ | |
138 #define NULL_DEVICE "NUL:" | |
139 #define EXEC_SUFFIXES ".exe:.com:.bat:.cmd:" | |
140 | |
141 #ifndef MAXPATHLEN | |
142 #define MAXPATHLEN _MAX_PATH | |
143 #endif | |
144 | |
145 #define LISP_FLOAT_TYPE | |
146 | |
147 #define HAVE_GETTIMEOFDAY | |
148 #define HAVE_GETHOSTNAME | |
149 #define HAVE_DUP2 | |
150 #define HAVE_RENAME | |
151 #define HAVE_CLOSEDIR | |
152 | |
153 #define HAVE_TZNAME | |
154 | |
155 #define HAVE_LONG_FILE_NAMES | |
156 | |
157 #define HAVE_MKDIR | |
158 #define HAVE_RMDIR | |
159 #define HAVE_RANDOM | |
160 #define HAVE_LOGB | |
161 #define HAVE_FREXP | |
162 #define HAVE_FMOD | |
163 #define HAVE_FTIME | |
164 #define HAVE_MKTIME | |
165 | |
166 #define HAVE_MOUSE | |
167 #define HAVE_H_ERRNO | |
168 #define HAVE_STRUCT_UTIMBUF | |
169 | |
170 #ifdef HAVE_NTGUI | |
171 #define HAVE_WINDOW_SYSTEM | |
172 #define HAVE_FACES | |
173 #endif | |
174 | |
175 #define HAVE_STRCASECMP | |
176 | |
177 /* Compatibility macros. Some used to be routines in nt.c */ | |
178 #define strcasecmp(x,y) _stricmp(x,y) | |
179 #define random() (rand() << 15 | rand()) | |
180 #define srandom(seed) (srand(seed)) | |
181 #define setpgrp(pid,gid) | |
182 | |
183 #define MODE_LINE_BINARY_TEXT(_b_) (NILP ((_b_)->buffer_file_type) ? "T" : "B") | |
184 | |
185 /* get some redefinitions in place */ | |
186 | |
187 #if 0 | |
188 /* IO calls that are emulated or shadowed */ | |
189 #define access sys_access | |
190 #define chdir sys_chdir | |
191 #define chmod sys_chmod | |
192 #define close sys_close | |
193 #define creat sys_creat | |
194 #define ctime sys_ctime | |
195 #define dup sys_dup | |
196 #define dup2 sys_dup2 | |
197 #define fopen sys_fopen | |
198 #define link sys_link | |
199 #define mktemp sys_mktemp | |
200 #define open sys_open | |
201 #define read sys_read | |
202 #define rename sys_rename | |
203 #define unlink sys_unlink | |
204 #define write sys_write | |
205 #define mkdir sys_mkdir | |
206 #define rmdir sys_rmdir | |
207 | |
208 #endif | |
209 | |
210 #if 0 | |
211 /* this is hacky, but is necessary to avoid warnings about macro | |
212 redefinitions using the SDK compilers */ | |
213 #ifndef __STDC__ | |
214 #define __STDC__ 1 | |
215 #define MUST_UNDEF__STDC__ | |
216 #endif | |
217 #include <direct.h> | |
218 #include <io.h> | |
219 #include <stdio.h> | |
220 #ifdef MUST_UNDEF__STDC__ | |
221 #undef __STDC__ | |
222 #undef MUST_UNDEF__STDC__ | |
223 #endif | |
224 #endif | |
225 | |
226 #include <stdio.h> | |
227 | |
228 | |
229 /* IO calls that are emulated or shadowed */ | |
230 #define pipe sys_pipe | |
231 int sys_pipe (int * phandles); | |
232 | |
233 #ifndef HAVE_X_WINDOWS | |
234 #define sleep sys_sleep | |
235 void sleep (int seconds); | |
236 #endif | |
237 | |
238 /* subprocess calls that are emulated */ | |
239 #define spawnve sys_spawnve | |
240 int spawnve (int mode, CONST char *cmdname, | |
241 CONST char * CONST *argv, CONST char *CONST *envp); | |
242 | |
243 #define wait sys_wait | |
244 int wait (int *status); | |
245 | |
246 #define kill sys_kill | |
247 int kill (int pid, int sig); | |
248 | |
249 /* map to MSVC names */ | |
250 #define popen _popen | |
251 #define pclose _pclose | |
252 | |
253 #if 0 | |
254 #define chdir _chdir | |
255 #define execlp _execlp | |
256 #define execvp _execvp | |
257 #define fcloseall _fcloseall | |
258 #define fdopen _fdopen | |
259 #define fgetchar _fgetchar | |
260 #define fileno _fileno | |
261 #define flushall _flushall | |
262 #define fputchar _fputchar | |
263 #define getw _getw | |
264 #define getpid _getpid | |
265 #define isatty _isatty | |
266 #define logb _logb | |
267 #define _longjmp longjmp | |
268 #define lseek _lseek | |
269 #define putw _putw | |
270 #define umask _umask | |
271 /* #define utime _utime */ | |
272 /* #define index strchr */ | |
273 /* #define rindex strrchr */ | |
274 #define read _read | |
275 #define write _write | |
276 #define getcwd _getcwd | |
277 | |
278 #ifdef HAVE_NTGUI | |
279 #define abort win32_abort | |
280 #endif | |
281 | |
282 #endif /* 0 */ | |
283 | |
284 typedef int uid_t; | |
285 typedef int gid_t; | |
286 typedef int pid_t; | |
287 typedef int ssize_t; | |
288 | |
289 /* Encapsulation of system calls */ | |
290 #ifndef DONT_ENCAPSULATE | |
291 #define getpid sys_getpid | |
292 pid_t getpid (void); | |
293 #endif | |
294 | |
295 /* Random global functions called everywhere. Implemented in nt.c */ | |
296 /* #### Most of these are FSFisms and must be avoided */ | |
297 /* #### All of these are FSFisms and must be avoided */ | |
298 void dostounix_filename (char *p); | |
299 void unixtodos_filename (char *p); | |
300 int crlf_to_lf (int n, unsigned char *buf, unsigned int *lf_count); | |
301 | |
302 char *getwd (char *dir); | |
303 | |
304 void *sbrk (unsigned long increment); | |
305 | |
306 struct passwd; | |
307 struct passwd *getpwuid (uid_t uid); | |
308 struct passwd *getpwnam (const char *name); | |
309 uid_t getuid (void); | |
310 uid_t geteuid (void); | |
311 gid_t getgid (void); | |
312 gid_t getegid (void); | |
313 | |
314 /* Setitimer is emulated */ | |
315 #define HAVE_SETITIMER | |
316 | |
317 /* We now have emulation for some signals */ | |
318 #define HAVE_SIGHOLD | |
319 #define sigset(s,h) msw_sigset(s,h) | |
320 #define sighold(s) msw_sighold(s) | |
321 #define sigrelse(s) msw_sigrelse(s) | |
322 #define sigpause(s) msw_sigpause(s) | |
323 #define signal sigset | |
324 | |
325 /* Defines that we need that aren't in the standard signal.h */ | |
326 #define SIGHUP 1 /* Hang up */ | |
327 #define SIGQUIT 3 /* Quit process */ | |
328 #define SIGKILL 9 /* Die, die die */ | |
329 #define SIGALRM 14 /* Alarm */ | |
330 #define SIGPROF 29 /* Profiling timer exp */ | |
331 | |
332 /* For integration with MSDOS support. */ | |
333 #define getdisk() (_getdrive () - 1) | |
334 #define getdefdir(_drv, _buf) _getdcwd (_drv, _buf, MAXPATHLEN) | |
335 | |
336 #if 0 /* they do. -kkm */ | |
337 /* Define this so that winsock.h definitions don't get included when windows.h | |
338 is... I don't know if they do the right thing for emacs. For this to | |
339 have proper effect, config.h must always be included before windows.h. */ | |
340 #define _WINSOCKAPI_ 1 | |
341 #endif /* 0 */ | |
342 | |
343 /* Defines size_t and alloca (). */ | |
344 #include <malloc.h> | |
345 | |
346 #include <sys/stat.h> | |
347 | |
348 /* Define for those source files that do not include enough NT | |
349 system files. */ | |
350 #ifndef NULL | |
351 #ifdef __cplusplus | |
352 #define NULL 0 | |
353 #else | |
354 #define NULL ((void *)0) | |
355 #endif | |
356 #endif | |
357 | |
358 /* For proper declaration of environ. */ | |
359 #include <stdlib.h> | |
360 #include <string.h> | |
361 | |
362 /* Define process implementation */ | |
363 #define HAVE_WIN32_PROCESSES | |
364 | |
365 /* We need a little extra space, see ../../lisp/loadup.el */ | |
366 #define SYSTEM_PURESIZE_EXTRA 15000 | |
367 | |
368 /* ============================================================ */ | |
369 | |
370 /* See unexnt.c */ | |
371 #if (_MSC_VER >= 1100) | |
372 #define DUMP_SEPARATE_SECTION | |
373 #endif | |
374 #ifdef DUMP_SEPARATE_SECTION | |
375 #pragma data_seg("xdata") | |
376 #pragma bss_seg("xdata") | |
377 #endif | |
378 | |
379 #ifdef HAVE_SCROLLBARS | |
380 /* Ensure the NT 4 mouse definitions in winuser.h are available */ | |
381 #ifndef _WIN32_WINNT | |
382 #define _WIN32_WINNT 0x0400 | |
383 #endif | |
384 #endif |