#define EMACS_W32_H
/* Support routines for the NT version of Emacs.
- Copyright (C) 1994, 2001-2013 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2001-2015 Free Software Foundation, Inc.
This file is part of GNU Emacs.
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
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);
+extern BOOL w32_get_long_filename (const 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 (const char *, char *, int);
/* Prepare our standard handles for proper inheritance by child processes. */
extern void prepare_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 term_timers (void);
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 *, int);
+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 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 *);
+/* Return total and free memory info. */
+extern int w32_memory_info (unsigned long long *, unsigned long long *,
+ unsigned long long *, unsigned long long *);
+/* Compare 2 UTF-8 strings in locale-dependent fashion. */
+extern int w32_compare_strings (const char *, const char *, char *, int);
#ifdef HAVE_GNUTLS
#include <gnutls/gnutls.h>
const void* buf, size_t sz);
#endif /* HAVE_GNUTLS */
+/* Definine a function that will be loaded from a DLL. */
+#define DEF_DLL_FN(type, func, args) static type (FAR CDECL *fn_##func) args
+
+/* Load a function from the DLL. */
+#define LOAD_DLL_FN(lib, func) \
+ do \
+ { \
+ fn_##func = (void *) GetProcAddress (lib, #func); \
+ if (!fn_##func) \
+ return false; \
+ } \
+ while (false)
+
#endif /* EMACS_W32_H */