Mercurial > emacs
annotate src/w32.h @ 49645:4e94855c037e
Change dates for the entries concerning the 2.0.29 Tramp commit such
that they all reflect the commit date, instead of the date of the
individual changes.
This is deemed better than keeping the original change date because
it makes sure that the ChangeLog dates have more or less sequential
order.
author | Kai Großjohann <kgrossjo@eu.uu.net> |
---|---|
date | Fri, 07 Feb 2003 17:53:05 +0000 |
parents | 23a1cea22d13 |
children | 695cf19ef79e d7ddb3e565de |
rev | line source |
---|---|
29604
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
1 #ifndef EMACS_W32_H |
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
2 #define EMACS_W32_H |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
3 |
9803 | 4 /* Support routines for the NT version of Emacs. |
5 Copyright (C) 1994 Free Software Foundation, Inc. | |
6 | |
7 This file is part of GNU Emacs. | |
8 | |
9 GNU Emacs is free software; you can redistribute it and/or modify | |
10 it under the terms of the GNU General Public License as published by | |
11 the Free Software Foundation; either version 2, or (at your option) | |
12 any later version. | |
13 | |
14 GNU Emacs is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
20 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:
13426
diff
changeset
|
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
13426
diff
changeset
|
22 Boston, MA 02111-1307, USA. */ |
9803 | 23 |
34697
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
24 |
9803 | 25 /* File descriptor set emulation. */ |
26 | |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
27 /* MSVC runtime library has limit of 64 descriptors by default */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
28 #define FD_SETSIZE 64 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
29 typedef struct { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
30 unsigned int bits[FD_SETSIZE / 32]; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
31 } fd_set; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
32 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
33 /* standard access macros */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
34 #define FD_SET(n, p) \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
35 do { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
36 if ((n) < FD_SETSIZE) { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
37 (p)->bits[(n)/32] |= (1 << (n)%32); \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
38 } \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
39 } while (0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
40 #define FD_CLR(n, p) \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
41 do { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
42 if ((n) < FD_SETSIZE) { \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
43 (p)->bits[(n)/32] &= ~(1 << (n)%32); \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
44 } \ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
45 } while (0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
46 #define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
47 #define FD_ZERO(p) memset((p), 0, sizeof(fd_set)) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
48 |
9803 | 49 #define SELECT_TYPE fd_set |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
50 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
51 /* ------------------------------------------------------------------------- */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
52 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
53 /* child_process.status values */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
54 enum { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
55 STATUS_READ_ERROR = -1, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
56 STATUS_READ_READY, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
57 STATUS_READ_IN_PROGRESS, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
58 STATUS_READ_FAILED, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
59 STATUS_READ_SUCCEEDED, |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
60 STATUS_READ_ACKNOWLEDGED |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
61 }; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
62 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
63 /* This structure is used for both pipes and sockets; for |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
64 a socket, the process handle in pi is NULL. */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
65 typedef struct _child_process |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
66 { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
67 int fd; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
68 int pid; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
69 HANDLE char_avail; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
70 HANDLE char_consumed; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
71 HANDLE thrd; |
19705
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
72 HWND hwnd; |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
73 PROCESS_INFORMATION procinfo; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
74 volatile int status; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
75 char chr; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
76 } child_process; |
9803 | 77 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
78 #define MAXDESC FD_SETSIZE |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
79 #define MAX_CHILDREN MAXDESC/2 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
80 #define CHILD_ACTIVE(cp) ((cp)->char_avail != NULL) |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
81 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
82 /* parallel array of private info on file handles */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
83 typedef struct |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
84 { |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
85 unsigned flags; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
86 HANDLE hnd; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
87 child_process * cp; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
88 } filedesc; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
89 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
90 extern filedesc fd_info [ MAXDESC ]; |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
91 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
92 /* fd_info flag definitions */ |
21606
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
93 #define FILE_READ 0x0001 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
94 #define FILE_WRITE 0x0002 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
95 #define FILE_BINARY 0x0010 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
96 #define FILE_LAST_CR 0x0020 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
97 #define FILE_AT_EOF 0x0040 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
98 #define FILE_SEND_SIGCHLD 0x0080 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
99 #define FILE_PIPE 0x0100 |
8f5ea092125c
(FILE_SEND_SIGCHLD): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents:
19705
diff
changeset
|
100 #define FILE_SOCKET 0x0200 |
45093
2d293a5868cf
* s/ms-w32.h (HAVE_SELECT): Define.
Jason Rumney <jasonr@gnu.org>
parents:
34697
diff
changeset
|
101 #define FILE_NDELAY 0x0400 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
102 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
103 extern child_process * new_child (void); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
104 extern void delete_child (child_process *cp); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
105 |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
106 /* ------------------------------------------------------------------------- */ |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
107 |
34697
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
108 /* Equivalent of strerror for W32 error codes. */ |
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
109 extern char * w32_strerror (int error_no); |
ba9de1745e36
(w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents:
29604
diff
changeset
|
110 |
19705
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
111 /* Get long (aka "true") form of file name, if it exists. */ |
8f868d8be49a
Remove debugging macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
112 extern BOOL w32_get_long_filename (char * name, char * buf, int size); |
9803 | 113 |
114 /* Prepare our standard handles for proper inheritance by child processes. */ | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48888
diff
changeset
|
115 extern void prepare_standard_handles (int in, int out, |
9803 | 116 int err, HANDLE handles[4]); |
117 | |
118 /* Reset our standard handles to their original state. */ | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
48888
diff
changeset
|
119 extern void reset_standard_handles (int in, int out, |
9803 | 120 int err, HANDLE handles[4]); |
121 | |
13426
8074deaef2f4
(nt_get_resource): Prototype defined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
122 /* Return the string resource associated with KEY of type TYPE. */ |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15248
diff
changeset
|
123 extern LPBYTE w32_get_resource (char * key, LPDWORD type); |
13426
8074deaef2f4
(nt_get_resource): Prototype defined.
Geoff Voelker <voelker@cs.washington.edu>
parents:
9803
diff
changeset
|
124 |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
125 extern void init_ntproc (); |
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
126 extern void term_ntproc (); |
48888
f0df5f687c15
Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents:
48375
diff
changeset
|
127 extern void globals_of_w32 (); |
48375
4d7b83cc03aa
Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents:
45093
diff
changeset
|
128 extern void syms_of_w32term (); |
4d7b83cc03aa
Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents:
45093
diff
changeset
|
129 extern void syms_of_w32fns (); |
48888
f0df5f687c15
Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents:
48375
diff
changeset
|
130 extern void globals_of_w32fns (); |
48375
4d7b83cc03aa
Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents:
45093
diff
changeset
|
131 extern void syms_of_w32select (); |
4d7b83cc03aa
Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents:
45093
diff
changeset
|
132 extern void syms_of_w32menu (); |
48888
f0df5f687c15
Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents:
48375
diff
changeset
|
133 extern void globals_of_w32menu (); |
48375
4d7b83cc03aa
Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents:
45093
diff
changeset
|
134 extern void syms_of_fontset (); |
15142
6879c02a290c
Check to see if already included.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
135 |
29604
7d541d1ca075
(EMACS_W32_H): Renamed from _NT_H_
Jason Rumney <jasonr@gnu.org>
parents:
21606
diff
changeset
|
136 #endif /* EMACS_W32_H */ |