]> code.delx.au - gnu-emacs/blobdiff - src/s/ms-w32.h
*** empty log message ***
[gnu-emacs] / src / s / ms-w32.h
index 8d02140b13cbd2a38637b64c45efacce0aaa3172..b1989318fba43d43075edc2b54aca4e6093870ef 100644 (file)
@@ -1,5 +1,6 @@
 /* System description file for Windows NT.
-   Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 1995, 2002, 2003, 2004,
+                 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -15,8 +16,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 /*
  *      Define symbols to identify the version of Unix this is.
@@ -55,13 +56,13 @@ Boston, MA 02111-1307, USA.  */
 #define SYSTEM_TYPE "windows-nt"
 #define SYMS_SYSTEM syms_of_ntterm ()
 
-#define NO_MATHERR
+#define NO_MATHERR 1
 
 /* NOMULTIPLEJOBS should be defined if your system's shell
  does not have "job control" (the ability to stop a program,
  run some other program, then continue the first one).  */
 
-/* #define NOMULTIPLEJOBS */
+/* #define NOMULTIPLEJOBS */
 
 /* Emacs can read input using SIGIO and buffering characters itself,
    or using CBREAK mode and making C-g cause SIGINT.
@@ -85,7 +86,7 @@ Boston, MA 02111-1307, USA.  */
    to read the input and send it to the true Emacs process
    through a pipe. */
 
-/* #define INTERRUPT_INPUT */
+/* #define INTERRUPT_INPUT */
 
 /* Letter to use in finding device name of first pty,
   if system supports pty's.  'a' means it is /dev/ptya0  */
@@ -103,27 +104,27 @@ Boston, MA 02111-1307, USA.  */
  *      supported on your system.
  */
 
-/* #define HAVE_TERMIOS */
-/* #define HAVE_TERMIO */
+/* #define HAVE_TERMIOS */
+/* #define HAVE_TERMIO */
 
 /*
  *      Define HAVE_TIMEVAL if the system supports the BSD style clock values.
  *      Look in <sys/time.h> for a timeval structure.
  */
 
-#define HAVE_TIMEVAL
+#define HAVE_TIMEVAL 1
 
 /*
  *      Define HAVE_SELECT if the system supports the `select' system call.
  */
 
-/* #define HAVE_SELECT */
+/* #define HAVE_SELECT */
 
 /*
  *      Define HAVE_PTYS if the system supports pty devices.
  */
 
-/* #define HAVE_PTYS */
+/* #define HAVE_PTYS */
 
 /*
  *      Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
@@ -134,7 +135,7 @@ Boston, MA 02111-1307, USA.  */
 
 /* NT supports Winsock which is close enough (with some hacks) */
 
-#define HAVE_SOCKETS
+#define HAVE_SOCKETS 1
 
 /* Define this symbol if your system has the functions bcopy, etc. */
 
@@ -144,7 +145,7 @@ Boston, MA 02111-1307, USA.  */
 #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
+#define GAP_USE_BCOPY 1
 #define BCOPY_UPWARD_SAFE 1
 #define BCOPY_DOWNWARD_SAFE 1
 
@@ -154,12 +155,12 @@ Boston, MA 02111-1307, USA.  */
    This is generally OS dependent, and not supported
    under most USG systems. */
 
-#define subprocesses
+#define subprocesses 1
 
 /* If your system uses COFF (Common Object File Format) then define the
    preprocessor symbol "COFF". */
 
-#define COFF
+#define COFF 1
 
 /* define MAIL_USE_FLOCK if the mailer uses flock
    to interlock access to /usr/spool/mail/$USER.
@@ -167,14 +168,14 @@ Boston, MA 02111-1307, USA.  */
    /usr/spool/mail/$USER.lock.  */
 
 /* #define MAIL_USE_FLOCK */
-#define MAIL_USE_POP
-#define MAIL_USE_SYSTEM_LOCK
+#define MAIL_USE_POP 1
+#define MAIL_USE_SYSTEM_LOCK 1
 
 /* Define CLASH_DETECTION if you want lock files to be written
    so that Emacs can tell instantly when you try to modify
    a file that someone else has modified in his Emacs.  */
 
-/* #define CLASH_DETECTION */
+/* #define CLASH_DETECTION */
 
 /* Define this if your operating system declares signal handlers to
    have a type other than the usual.  `The usual' is `void' for ANSI C
@@ -189,6 +190,8 @@ Boston, MA 02111-1307, USA.  */
    is not ':', #define this to be the appropriate character constant.  */
 #define SEPCHAR ';'
 
+#define ORDINARY_LINK 1
+
 /* ============================================================ */
 
 /* Here, add any special hacks needed
@@ -210,100 +213,106 @@ Boston, MA 02111-1307, USA.  */
 
 /* The null device on Windows NT. */
 #define NULL_DEVICE     "NUL:"
-#define EXEC_SUFFIXES   ".exe:.com:.bat:.cmd:"
 
 #ifndef MAXPATHLEN
 #define MAXPATHLEN      _MAX_PATH
 #endif
 
-#define LISP_FLOAT_TYPE
+#define HAVE_SOUND  1
+#define LISP_FLOAT_TYPE 1
 
 #undef  HAVE_SYS_SELECT_H
-#define HAVE_SYS_TIMEB_H
-#define HAVE_SYS_TIME_H
-#define HAVE_UNISTD_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_PWD_H 1
 #define STDC_HEADERS 1
-#define TIME_WITH_SYS_TIME
+#define TIME_WITH_SYS_TIME 1
 
-#define HAVE_GETTIMEOFDAY
-#define HAVE_GETHOSTNAME
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GETHOSTNAME 1
 #undef  HAVE_GETDOMAINNAME
-#define HAVE_DUP2
-#define HAVE_RENAME
-#define HAVE_CLOSEDIR
+#define HAVE_DUP2 1
+#define HAVE_RENAME 1
+#define HAVE_CLOSEDIR 1
+#define HAVE_FSYNC 1           /* fsync is called _commit in MSVC.  */
 
 #undef  TM_IN_SYS_TIME
 #undef  HAVE_TM_ZONE
 #define HAVE_TZNAME 1
 
-#define HAVE_LONG_FILE_NAMES
+#define HAVE_LONG_FILE_NAMES 1
 
-#define HAVE_MKDIR
-#define HAVE_RMDIR
-#define HAVE_RANDOM
+#define HAVE_MKDIR 1
+#define HAVE_RMDIR 1
+#define HAVE_RANDOM 1
 #undef  HAVE_SYSINFO
 #undef  HAVE_LRAND48
-#define HAVE_BCOPY
-#define HAVE_BCMP
-#define HAVE_LOGB
-#define HAVE_FREXP
-#define HAVE_FMOD
+#define HAVE_BCOPY 1
+#define HAVE_BCMP 1
+#define HAVE_LOGB 1
+#define HAVE_FREXP 1
+#define HAVE_FMOD 1
 #undef  HAVE_RINT
 #undef  HAVE_CBRT
-#define HAVE_FTIME
+#define HAVE_FTIME 1
 #undef  HAVE_RES_INIT /* For -lresolv on Suns.  */
 #undef  HAVE_SETSID
 #undef  HAVE_FPATHCONF
-#undef  HAVE_SELECT
+#define HAVE_SELECT 1
 #define HAVE_MKTIME 1
 #undef  HAVE_EUIDACCESS
-#define HAVE_GETPAGESIZE
+#define HAVE_GETPAGESIZE 1
 #define HAVE_TZSET 1
-#define HAVE_SETLOCALE
+#define HAVE_SETLOCALE 1
 #undef  HAVE_UTIMES
 #undef  HAVE_SETRLIMIT
 #undef  HAVE_SETPGID
 #undef  HAVE_GETCWD
-/* Some systems do not have this.  */
-#define HAVE_SHUTDOWN
+#define HAVE_SHUTDOWN 1
+#define HAVE_STRFTIME 1
 
-#undef  LOCALTIME_CACHE
+#define LOCALTIME_CACHE
 #undef  HAVE_INET_SOCKETS
 
 #undef  HAVE_AIX_SMT_EXP
 
 /* Define if you have the ANSI `strerror' function.
    Otherwise you must have the variable `char *sys_errlist[]'.  */
-#define HAVE_STRERROR
+#define HAVE_STRERROR 1
 
 /* Define if `struct utimbuf' is declared by <utime.h>.  */
 #undef  HAVE_STRUCT_UTIMBUF
 
-#define HAVE_MOUSE
-#define HAVE_H_ERRNO
+#define HAVE_MOUSE 1
+#define HAVE_H_ERRNO 1
 
 #ifdef HAVE_NTGUI
-#define HAVE_WINDOW_SYSTEM
-#define HAVE_FACES
-#define HAVE_MENUS
+#define HAVE_WINDOW_SYSTEM 1
+#define HAVE_FACES 1
+#define HAVE_MENUS 1
 #endif
 
 #define MODE_LINE_BINARY_TEXT(_b_) (NILP ((_b_)->buffer_file_type) ? "T" : "B")
 
 /* get some redefinitions in place */
 
-/* IO calls that are emulated or shadowed */
+#ifdef emacs
+
+/* calls that are emulated or shadowed */
 #undef access
 #define access  sys_access
 #undef chdir
 #define chdir   sys_chdir
 #undef chmod
 #define chmod   sys_chmod
+#define chown   sys_chown
 #undef close
 #define close   sys_close
 #undef creat
@@ -327,6 +336,7 @@ Boston, MA 02111-1307, USA.  */
 #define rmdir   sys_rmdir
 #define select  sys_select
 #define sleep   sys_sleep
+#define strerror sys_strerror
 #undef unlink
 #define unlink  sys_unlink
 #undef write
@@ -338,16 +348,21 @@ Boston, MA 02111-1307, USA.  */
 #define kill    sys_kill
 #define signal  sys_signal
 
+#endif /* emacs */
+
 /* map to MSVC names */
 #define execlp    _execlp
 #define execvp    _execvp
 #define fcloseall _fcloseall
 #define fdopen   _fdopen
 #define fgetchar  _fgetchar
+#ifndef fileno
 #define fileno   _fileno
+#endif
 #define flushall  _flushall
 #define fputchar  _fputchar
-#define getcwd   _getcwd
+#define fsync    _commit
+#define ftruncate _chsize
 #define getw     _getw
 #define getpid    _getpid
 #define isatty    _isatty
@@ -359,8 +374,15 @@ Boston, MA 02111-1307, USA.  */
 #define putw     _putw
 #define umask    _umask
 #define utime    _utime
+#define utimbuf          _utimbuf
 #define index     strchr
 #define rindex    strrchr
+#define strdup    _strdup
+#define strupr    _strupr
+#define strnicmp  _strnicmp
+#define stricmp   _stricmp
+#define tzset     _tzset
+#define tzname    _tzname
 
 #ifdef HAVE_NTGUI
 #define abort  w32_abort
@@ -389,24 +411,41 @@ Boston, MA 02111-1307, USA.  */
 #define SIGALRM 14              /* Alarm */
 #define SIGCHLD 18              /* Death of child */
 
+#ifndef NSIG
+#define NSIG 23
+#endif
+
 /* For integration with MSDOS support.  */
 #define getdisk()               (_getdrive () - 1)
+#ifdef emacs
+#define getdefdir(_drv, _buf)   ((_buf[0] = (_drv + 'A' - 1), _buf[1] = ':', _buf[2] = '/', _buf[3] = 0), 1)
+#else
 #define getdefdir(_drv, _buf)   _getdcwd (_drv, _buf, MAXPATHLEN)
+#endif
 
+extern char *get_emacs_configuration (void);
+extern char *get_emacs_configuration_options (void);
 #define EMACS_CONFIGURATION    get_emacs_configuration ()
-#define EMACS_CONFIG_OPTIONS   "NT"    /* Not very meaningful yet.  */
+#define EMACS_CONFIG_OPTIONS   get_emacs_configuration_options ()
 
 /* Define this so that winsock.h definitions don't get included with
    windows.h.  For this to have proper effect, config.h must always be
    included before windows.h.  */
 #define _WINSOCKAPI_    1
+#define _WINSOCK_H
 
 /* Defines size_t and alloca ().  */
+#ifdef USE_CRT_DLL
+#define malloc e_malloc
+#define free   e_free
+#define realloc e_realloc
+#define calloc e_calloc
+#endif
 #include <malloc.h>
 
 #include <sys/stat.h>
 
-/* Define for those source files that do not include enough NT 
+/* Define for those source files that do not include enough NT
    system files.  */
 #ifndef NULL
 #ifdef __cplusplus
@@ -418,16 +457,13 @@ Boston, MA 02111-1307, USA.  */
 
 /* For proper declaration of environ.  */
 #include <stdlib.h>
-#include <string.h>
-
-/* Emacs takes care of ensuring that these are defined.  */
-#ifdef max
-#undef max
-#undef min
+#ifndef sys_nerr
+#define sys_nerr _sys_nerr
 #endif
+#include <string.h>
 
 /* We need a little extra space, see ../../lisp/loadup.el */
-#define SYSTEM_PURESIZE_EXTRA 25000
+#define SYSTEM_PURESIZE_EXTRA 137500
 
 /* For unexec to work on Alpha systems, we need to put Emacs'
    initialized data into a separate section from the CRT initialized
@@ -446,8 +482,10 @@ Boston, MA 02111-1307, USA.  */
    must include config.h to pick up this pragma.  */
 
 /* Names must be < 8 bytes */
+#ifdef _MSC_VER
 #pragma data_seg("EMDATA")
 #pragma bss_seg("EMBSS")
+#endif
 
 /* #define FULL_DEBUG */
 /* #define EMACSDEBUG */
@@ -461,3 +499,6 @@ extern void _DebPrint (const char *fmt, ...);
 
 
 /* ============================================================ */
+
+/* arch-tag: 5d4a3a1c-40dc-4dea-9c7c-38fed9ae0eae
+   (do not change this comment) */