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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 /* Support routines for the NT version of Emacs.
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 Copyright (C) 1994 Free Software Foundation, Inc.
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 This file is part of GNU Emacs.
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 GNU Emacs is free software; you can redistribute it and/or modify
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 it under the terms of the GNU General Public License as published by
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 the Free Software Foundation; either version 2, or (at your option)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 any later version.
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 GNU Emacs is distributed in the hope that it will be useful,
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 GNU General Public License for more details.
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 You should have received a copy of the GNU General Public License
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
34697
ba9de1745e36 (w32_strerror): New extern.
Andrew Innes <andrewi@gnu.org>
parents: 29604
diff changeset
24
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 /* File descriptor set emulation. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 int err, HANDLE handles[4]);
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 int err, HANDLE handles[4]);
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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 */