X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/96e055075d7c73cf189038db1b15f9369888ea41..47d7532e093db8a5068a40c587915121ffaaad18:/nt/inc/ms-w32.h diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h index 1b2a309e1b..1240239089 100644 --- a/nt/inc/ms-w32.h +++ b/nt/inc/ms-w32.h @@ -1,6 +1,6 @@ /* System description file for Windows NT. -Copyright (C) 1993-1995, 2001-2012 Free Software Foundation, Inc. +Copyright (C) 1993-1995, 2001-2013 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -70,6 +70,18 @@ along with GNU Emacs. If not, see . */ #define HAVE___BUILTIN_UNWIND_INIT 1 #endif +/* This isn't perfect, as some systems might have the page file in + another place. Also, I suspect that the time stamp of that file + might also change when Windows enlarges the file due to + insufficient VM. Still, this seems to be the most reliable way; + the alternative (of using GetSystemTimes) won't work on laptops + that hibernate, because the system clock is stopped then. Other + possibility would be to run "net statistics workstation" and parse + the output, but that's gross. So this should do; if the file is + not there, the boot time will be returned as zero, and filelock.c + already handles that. */ +#define BOOT_TIME_FILE "C:/pagefile.sys" + /* ============================================================ */ /* Here, add any special hacks needed to make Emacs work on this @@ -149,7 +161,6 @@ extern char *getenv (); #define chdir sys_chdir #undef chmod #define chmod sys_chmod -#define chown sys_chown #undef close #define close sys_close #undef creat @@ -178,20 +189,21 @@ extern char *getenv (); #define strerror sys_strerror #undef unlink #define unlink sys_unlink +/* This prototype is needed because some files include config.h + _after_ the standard headers, so sys_unlink gets no prototype from + stdio.h or io.h. */ +extern int sys_unlink (const char *); #undef write #define write sys_write /* Subprocess calls that are emulated. */ #define spawnve sys_spawnve -#define wait sys_wait #define kill sys_kill #define signal sys_signal /* Internal signals. */ #define emacs_raise(sig) emacs_abort() -extern int sys_wait (int *); - /* termcap.c calls that are emulated. */ #define tputs sys_tputs #define tgetstr sys_tgetstr @@ -208,6 +220,7 @@ extern int sys_wait (int *); /* Map to MSVC names. */ #define execlp _execlp #define execvp _execvp +#define fdatasync _commit #define fdopen _fdopen #ifndef fileno #define fileno _fileno @@ -221,7 +234,6 @@ typedef int pid_t; #define strtoll _strtoi64 #endif #define isatty _isatty -#define logb _logb #define _longjmp longjmp #define lseek _lseek #define popen _popen @@ -264,8 +276,11 @@ struct timespec extern struct tm *gmtime_r (time_t const * restrict, struct tm * restrict); extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict); +#ifdef _MSC_VER /* This is hacky, but is necessary to avoid warnings about macro - redefinitions using the SDK compilers. */ + redefinitions using the MSVC compilers, since, when __STDC__ is + undefined or zero, those compilers declare functions like fileno, + lseek, and chdir, for which we defined macros above. */ #ifndef __STDC__ #define __STDC__ 1 #define MUST_UNDEF__STDC__ @@ -277,6 +292,11 @@ extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict); #undef __STDC__ #undef MUST_UNDEF__STDC__ #endif +#else /* !_MSC_VER */ +#include +#include +#include +#endif /* !_MSC_VER */ /* Defines that we need that aren't in the standard signal.h. */ #define SIGHUP 1 /* Hang up */ @@ -292,6 +312,10 @@ extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict); #define NSIG 23 #endif +#ifndef ENOTSUP +#define ENOTSUP ENOSYS +#endif + #ifdef _MSC_VER typedef int sigset_t; typedef int ssize_t; @@ -379,9 +403,19 @@ extern char *get_emacs_configuration_options (void); #define sys_nerr _sys_nerr #endif +/* This must be after including stdlib.h, which defines putenv on MinGW. */ +#ifdef putenv +# undef putenv +#endif +#define putenv sys_putenv +extern int sys_putenv (char *); + extern int getloadavg (double *, int); extern int getpagesize (void); +extern void * memrchr (void const *, int, size_t); + + #if defined (__MINGW32__) /* Define to 1 if the system has the type `long long int'. */