X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/49f70d46ea38ceb7a501594db7f6ea35e19681aa..e18afed7d695edac870ddf55aabc85c0a95a4b5f:/src/s/ms-w32.h diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index ff8e5688a6..e89ecb0593 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h @@ -1,6 +1,6 @@ /* System description file for Windows NT. - Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + +Copyright (C) 1993-1995, 2001-2012 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -17,10 +17,8 @@ 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 . */ -/* - * Define symbols to identify the version of Unix this is. - * Define all the symbols that apply correctly. - */ +/* Define symbols to identify the version of Unix this is. + Define all the symbols that apply correctly. */ #ifndef WINDOWSNT #define WINDOWSNT @@ -30,71 +28,39 @@ along with GNU Emacs. If not, see . */ #endif /* If you are compiling with a non-C calling convention but need to - declare vararg routines differently, put it here */ + declare vararg routines differently, put it here. */ #define _VARARGS_ __cdecl /* If you are providing a function to something that will call the function back (like a signal handler and signal, or main) its calling - convention must be whatever standard the libraries expect */ + convention must be whatever standard the libraries expect. */ #define _CALLBACK_ __cdecl /* SYSTEM_TYPE should indicate the kind of system you are using. - It sets the Lisp variable system-type. */ - + It sets the Lisp variable system-type. */ #define SYSTEM_TYPE "windows-nt" -#define SYMS_SYSTEM syms_of_ntterm () #define NO_MATHERR 1 /* Letter to use in finding device name of first pty, - if system supports pty's. 'a' means it is /dev/ptya0 */ - + if system supports pty's. 'a' means it is /dev/ptya0 */ #define FIRST_PTY_LETTER 'a' -/* - * Define HAVE_TIMEVAL if the system supports the BSD style clock values. - * Look in for a timeval structure. - */ - +/* Define HAVE_TIMEVAL if the system supports the BSD style clock values. + Look in for a timeval structure. */ #define HAVE_TIMEVAL 1 -/* NT supports Winsock which is close enough (with some hacks) */ - +/* NT supports Winsock which is close enough (with some hacks). */ #define HAVE_SOCKETS 1 /* But our select implementation doesn't allow us to make non-blocking connects. So until that is fixed, this is necessary: */ - #define BROKEN_NON_BLOCKING_CONNECT 1 /* And the select implementation does 1-byte read-ahead waiting for received packets, so datagrams are broken too. */ - #define BROKEN_DATAGRAM_SOCKETS 1 -/* Define this symbol if your system has the functions bcopy, etc. */ - -#define BSTRING -#define bzero(b, l) memset(b, 0, l) -#define bcopy(s, d, l) memmove(d, s, l) -#define bcmp(a, b, l) memcmp(a, b, l) - -/* bcopy (aka memmove aka memcpy at least on x86) under MSVC is quite safe */ -#define GAP_USE_BCOPY 1 -#define BCOPY_UPWARD_SAFE 1 -#define BCOPY_DOWNWARD_SAFE 1 - -/* If your system uses COFF (Common Object File Format) then define the - preprocessor symbol "COFF". */ - -#define COFF 1 - -/* define MAIL_USE_FLOCK if the mailer uses flock - to interlock access to /usr/spool/mail/$USER. - The alternative is that a lock file named - /usr/spool/mail/$USER.lock. */ - -/* #define MAIL_USE_FLOCK */ #define MAIL_USE_POP 1 #define MAIL_USE_SYSTEM_LOCK 1 @@ -106,24 +72,36 @@ along with GNU Emacs. If not, see . */ /* ============================================================ */ -/* Here, add any special hacks needed - to make Emacs work on this system. For example, - you might define certain system call names that don't - exist on your system, or that do different things on - your system and must be used only through an encapsulation - (Which you should place, by convention, in sysdep.c). */ - -/* Define this to be the separator between path elements */ -#define DIRECTORY_SEP XINT (Vdirectory_sep_char) +/* Here, add any special hacks needed to make Emacs work on this + system. For example, you might define certain system call names + that don't exist on your system, or that do different things on + your system and must be used only through an encapsulation (which + you should place, by convention, in sysdep.c). */ -/* Define this to be the separator between devices and paths */ +/* Define this to be the separator between devices and paths. */ #define DEVICE_SEP ':' /* We'll support either convention on NT. */ #define IS_DIRECTORY_SEP(_c_) ((_c_) == '/' || (_c_) == '\\') #define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_)) -/* The null device on Windows NT. */ +#include + +#ifdef _MSC_VER +typedef unsigned long sigset_t; +typedef int ssize_t; +#endif + +struct sigaction { + int sa_flags; + void (*sa_handler)(int); + sigset_t sa_mask; +}; +#define SIG_BLOCK 1 +#define SIG_SETMASK 2 +#define SIG_UNBLOCK 3 + +/* The null device on Windows NT. */ #define NULL_DEVICE "NUL:" #ifndef MAXPATHLEN @@ -133,19 +111,13 @@ along with GNU Emacs. If not, see . */ #define HAVE_SOUND 1 #define LISP_FLOAT_TYPE 1 -#undef HAVE_SYS_SELECT_H #define HAVE_SYS_TIMEB_H 1 #define HAVE_SYS_TIME_H 1 #define HAVE_UNISTD_H 1 #undef HAVE_UTIME_H #undef HAVE_LINUX_VERSION_H #undef HAVE_SYS_SYSTEMINFO_H -#undef HAVE_TERMIOS_H -#define HAVE_LIMITS_H 1 -#define HAVE_STRING_H 1 -#define HAVE_STDLIB_H 1 #define HAVE_PWD_H 1 -#define STDC_HEADERS 1 #define TIME_WITH_SYS_TIME 1 #define HAVE_GETTIMEOFDAY 1 @@ -166,8 +138,10 @@ along with GNU Emacs. If not, see . */ #define HAVE_RANDOM 1 #undef HAVE_SYSINFO #undef HAVE_LRAND48 -#define HAVE_BCOPY 1 -#define HAVE_BCMP 1 +#define HAVE_MEMCMP 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMSET 1 #define HAVE_LOGB 1 #define HAVE_FREXP 1 #define HAVE_FMOD 1 @@ -178,7 +152,6 @@ along with GNU Emacs. If not, see . */ #undef HAVE_SETSID #undef HAVE_FPATHCONF #define HAVE_SELECT 1 -#define HAVE_MKTIME 1 #undef HAVE_EUIDACCESS #define HAVE_GETPAGESIZE 1 #define HAVE_TZSET 1 @@ -186,9 +159,11 @@ along with GNU Emacs. If not, see . */ #undef HAVE_UTIMES #undef HAVE_SETRLIMIT #undef HAVE_SETPGID +/* If you think about defining HAVE_GETCWD, don't: the alternative + getwd is redefined on w32.c, and does not really return the current + directory, to get the desired results elsewhere in Emacs */ #undef HAVE_GETCWD #define HAVE_SHUTDOWN 1 -#define HAVE_STRFTIME 1 #define LOCALTIME_CACHE #define HAVE_INET_SOCKETS 1 @@ -211,13 +186,22 @@ along with GNU Emacs. If not, see . */ #define HAVE_MENUS 1 #endif -#define MODE_LINE_BINARY_TEXT(_b_) (NILP ((_b_)->buffer_file_type) ? "T" : "B") - -/* get some redefinitions in place */ +/* Get some redefinitions in place. */ #ifdef emacs -/* calls that are emulated or shadowed */ +#ifdef _MSC_VER +#include +#include +#include + +/* MSVC gets link-time errors without these redirections. */ +#define fstat(a, b) sys_fstat(a, b) +#define stat(a, b) sys_stat(a, b) +#define utime sys_utime +#endif + +/* Calls that are emulated or shadowed. */ #undef access #define access sys_access #undef chdir @@ -255,15 +239,26 @@ along with GNU Emacs. If not, see . */ #undef write #define write sys_write -/* subprocess calls that are emulated */ +/* Subprocess calls that are emulated. */ #define spawnve sys_spawnve #define wait sys_wait #define kill sys_kill #define signal sys_signal +/* termcap.c calls that are emulated. */ +#define tputs sys_tputs +#define tgetstr sys_tgetstr + +/* cm.c calls that are emulated. */ +#define chcheckmagic sys_chcheckmagic +#define cmcostinit sys_cmcostinit +#define cmgoto sys_cmgoto +#define cmputc sys_cmputc +#define Wcm_clear sys_Wcm_clear + #endif /* emacs */ -/* map to MSVC names */ +/* Map to MSVC names. */ #define execlp _execlp #define execvp _execvp #define fdopen _fdopen @@ -275,6 +270,8 @@ along with GNU Emacs. If not, see . */ #define getpid _getpid #ifdef _MSC_VER typedef int pid_t; +#define snprintf _snprintf +#define strtoll _strtoi64 #endif #define isatty _isatty #define logb _logb @@ -283,22 +280,29 @@ typedef int pid_t; #define popen _popen #define pclose _pclose #define umask _umask +#ifndef _MSC_VER #define utimbuf _utimbuf -#define index strchr -#define rindex strrchr +#endif #define strdup _strdup #define strupr _strupr #define strnicmp _strnicmp #define stricmp _stricmp #define tzset _tzset -#if !defined (_MSC_VER) || (_MSC_VER < 1400) +/* Include time.h before redirecting tzname, since MSVC's time.h + defines _tzname to call a function, but also declares tzname a + 2-element array. Having the redirection before including the + header thus has the effect of declaring a function that returns an + array, and triggers an error message. */ +#include #define tzname _tzname +#if !defined (_MSC_VER) || (_MSC_VER < 1400) +#undef utime #define utime _utime #endif -/* this is hacky, but is necessary to avoid warnings about macro - redefinitions using the SDK compilers */ +/* This is hacky, but is necessary to avoid warnings about macro + redefinitions using the SDK compilers. */ #ifndef __STDC__ #define __STDC__ 1 #define MUST_UNDEF__STDC__ @@ -311,7 +315,7 @@ typedef int pid_t; #undef MUST_UNDEF__STDC__ #endif -/* Defines that we need that aren't in the standard signal.h */ +/* Defines that we need that aren't in the standard signal.h. */ #define SIGHUP 1 /* Hang up */ #define SIGQUIT 3 /* Quit process */ #define SIGTRAP 5 /* Trace trap */ @@ -344,18 +348,21 @@ extern char *get_emacs_configuration_options (void); #define _WINSOCK_H /* Defines size_t and alloca (). */ -#ifdef USE_CRT_DLL +#ifdef emacs #define malloc e_malloc #define free e_free #define realloc e_realloc #define calloc e_calloc #endif +#ifdef _MSC_VER +#define alloca _alloca +#else #include +#endif #include -/* Define for those source files that do not include enough NT - system files. */ +/* Define for those source files that do not include enough NT system files. */ #ifndef NULL #ifdef __cplusplus #define NULL 0 @@ -371,6 +378,8 @@ extern char *get_emacs_configuration_options (void); #endif #include +extern int getloadavg (double *, int); + /* We need a little extra space, see ../../lisp/loadup.el. */ #define SYSTEM_PURESIZE_EXTRA 50000 @@ -390,7 +399,7 @@ extern char *get_emacs_configuration_options (void); removed. Also, obviously, all files that define initialized data must include config.h to pick up this pragma. */ -/* Names must be < 8 bytes */ +/* Names must be < 8 bytes. */ #ifdef _MSC_VER #pragma data_seg("EMDATA") #pragma bss_seg("EMBSS") @@ -408,6 +417,3 @@ extern void _DebPrint (const char *fmt, ...); /* ============================================================ */ - -/* arch-tag: 5d4a3a1c-40dc-4dea-9c7c-38fed9ae0eae - (do not change this comment) */