X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ed7f1a6c5caaf4159125c08db5d18c5471fdd032..8c4b24b2ab14be6d33d4e979f3de6fb85eff6518:/src/w32.h diff --git a/src/w32.h b/src/w32.h index f1915125c9..6bf165f52b 100644 --- a/src/w32.h +++ b/src/w32.h @@ -2,7 +2,7 @@ #define EMACS_W32_H /* Support routines for the NT version of Emacs. - Copyright (C) 1994, 2001-2011 Free Software Foundation, Inc. + Copyright (C) 1994, 2001-2013 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -19,6 +19,12 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ +#ifdef CYGWIN +#error "w32.h is not compatible with Cygwin" +#endif + +#include + /* File descriptor set emulation. */ @@ -62,17 +68,47 @@ enum { a socket, the process handle in pi is NULL. */ typedef struct _child_process { - int fd; - int pid; - HANDLE char_avail; - HANDLE char_consumed; - HANDLE thrd; - HWND hwnd; - PROCESS_INFORMATION procinfo; - volatile int status; - char chr; - OVERLAPPED ovl_read; - OVERLAPPED ovl_write; + /* File descriptor for sockets and serial port connections, and for + reading output from async subprocesses; otherwise -1. */ + int fd; + /* PID for subprocess, either async or not; otherwise -1. */ + int pid; + /* Handle to an event object that is signaled when a read operation + is completed, either successfully (in which case there're indeed + "characters available") or not. Used by sys_select to wait for + output from subprocesses or socket/serial connections. */ + HANDLE char_avail; + /* Handle to an event that is signaled to wake up the reader thread + and tell it to try reading more output from a subprocess. */ + HANDLE char_consumed; + /* Handle to the reader thread to read output from a subprocess or a + socket or a comm port. */ + HANDLE thrd; + /* Handle to the console window of a subprocess. Used to forcibly + terminate it by sys_kill. */ + HWND hwnd; + /* Information about subprocess returned by CreateProcess. Includes + handles to the subprocess and its primary thread, and the + corresponding process ID and thread ID numbers. The PID is + mirrored by the 'pid' member above. The process handle is used + to wait on it. */ + PROCESS_INFORMATION procinfo; + /* Status of subprocess/connection and of reading its output. For + values, see the enumeration above. */ + volatile int status; + /* Holds a single character read by _sys_read_ahead, when a + subprocess has some output ready. */ + char chr; + /* Used for async read operations on serial comm ports. */ + OVERLAPPED ovl_read; + /* Used for async write operations on serial comm ports. */ + OVERLAPPED ovl_write; + /* Input file, if any, for this subprocess. Should only be non-NULL + for async subprocesses. */ + char *input_file; + /* If non-zero, the subprocess input file is temporary and should be + deleted when the subprocess exits. */ + int pending_deletion; } child_process; #define MAXDESC FD_SETSIZE @@ -127,24 +163,41 @@ extern void reset_standard_handles (int in, int out, /* Return the string resource associated with KEY of type TYPE. */ extern LPBYTE w32_get_resource (char * key, LPDWORD type); -extern void init_ntproc (void); -extern void term_ntproc (void); +extern void init_ntproc (int); +extern void term_ntproc (int); extern void globals_of_w32 (void); -extern void syms_of_w32term (void); -extern void syms_of_w32fns (void); -extern void globals_of_w32fns (void); -extern void syms_of_w32select (void); -extern void globals_of_w32select (void); -extern void term_w32select (void); -extern void syms_of_w32menu (void); -extern void globals_of_w32menu (void); -extern void syms_of_fontset (void); + +extern void term_timers (void); +extern void init_timers (void); extern int _sys_read_ahead (int fd); extern int _sys_wait_accept (int fd); -extern Lisp_Object Vlibrary_cache, QCloaded_from; -extern HMODULE w32_delayed_load (Lisp_Object, Lisp_Object); +extern Lisp_Object QCloaded_from; +extern HMODULE w32_delayed_load (Lisp_Object); + +extern void init_environment (char **); +extern void check_windows_init_file (void); +extern void syms_of_ntproc (void); +extern void syms_of_ntterm (void); +extern void dostounix_filename (register char *, int); +extern void unixtodos_filename (register char *); +extern BOOL init_winsock (int load_now); +extern void srandom (int); +extern int random (void); + +extern int sys_pipe (int *); + +extern void set_process_dir (char *); +extern int sys_spawnve (int, char *, char **, char **); +extern void register_child (pid_t, int); +extern void record_infile (pid_t, char *); +extern void record_pending_deletion (char *); + +extern void sys_sleep (int); +extern int sys_link (const char *, const char *); + + #ifdef HAVE_GNUTLS #include @@ -159,4 +212,3 @@ extern ssize_t emacs_gnutls_push (gnutls_transport_ptr_t p, #endif /* HAVE_GNUTLS */ #endif /* EMACS_W32_H */ -