X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/3a880af4a79688e90da45311a8d85bae2d59a811..64e104891f14070bccd1bae0b6da8f2d7091a3f1:/src/w32.h diff --git a/src/w32.h b/src/w32.h index a833c8f431..33fd2709a7 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-2012 Free Software Foundation, Inc. + Copyright (C) 1994, 2001-2014 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,41 @@ 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; } child_process; #define MAXDESC FD_SETSIZE @@ -116,6 +146,9 @@ extern int w32_valid_pointer_p (void *, int); /* Get long (aka "true") form of file name, if it exists. */ extern BOOL w32_get_long_filename (char * name, char * buf, int size); +/* Get the short (a.k.a. "8+3") form of a file name. */ +extern unsigned int w32_get_short_filename (char *, char *, int); + /* Prepare our standard handles for proper inheritance by child processes. */ extern void prepare_standard_handles (int in, int out, int err, HANDLE handles[4]); @@ -127,20 +160,14 @@ 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 release_listen_threads (void); extern void init_ntproc (int); extern void term_ntproc (int); +extern HANDLE maybe_load_unicows_dll (void); 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 syms_of_w32font (void); -extern void check_windows_init_file (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); @@ -148,6 +175,37 @@ extern int _sys_wait_accept (int fd); extern Lisp_Object QCloaded_from; extern HMODULE w32_delayed_load (Lisp_Object); +extern int (WINAPI *pMultiByteToWideChar)(UINT,DWORD,LPCSTR,int,LPWSTR,int); +extern int (WINAPI *pWideCharToMultiByte)(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL); + +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 *); +extern void unixtodos_filename (register char *); +extern int filename_from_ansi (const char *, char *); +extern int filename_to_ansi (const char *, char *); +extern int filename_from_utf16 (const wchar_t *, char *); +extern int filename_to_utf16 (const char *, wchar_t *); +extern Lisp_Object ansi_encode_filename (Lisp_Object); +extern int w32_copy_file (const char *, const char *, int, int, int); + +extern BOOL init_winsock (int load_now); +extern void srandom (int); +extern int random (void); + +extern int fchmod (int, mode_t); +extern int sys_rename_replace (char const *, char const *, BOOL); +extern int pipe2 (int *, int); + +extern void set_process_dir (char *); +extern int sys_spawnve (int, char *, char **, char **); +extern void register_child (pid_t, int); + +extern void sys_sleep (int); +extern int sys_link (const char *, const char *); + #ifdef HAVE_GNUTLS #include @@ -161,4 +219,3 @@ extern ssize_t emacs_gnutls_push (gnutls_transport_ptr_t p, #endif /* HAVE_GNUTLS */ #endif /* EMACS_W32_H */ -