+2012-10-17 Eli Zaretskii <eliz@gnu.org>
+
+ * inc/pwd.h (getuid, geteuid): Add prototypes.
+
+ * inc/ms-w32.h (sys_wait, _getpid, gmtgime_r, localtime_r)
+ (signal_handler, sys_signal, sigemptyset, sigfillset, sigprocmask)
+ (pthread_sigmask, sigismember, setpgrp, sigaction, alarm)
+ (sys_kill, getpagesize): Add prototypes for emulated functions.
+
+ * inc/grp.h (getgid, getegid): Add prototypes.
+
+ * gmake.defs (DEBUG_CFLAGS) [NOOPT]: Add -std=gnu99.
+
+ * configure.bat (chkapiN): Avoid compiler warning in junk.c when
+ compiling with -std=gnu99.
+
+ * config.nt (CHECK_LISP_OBJECT_TYPE): Don't undef, so that it
+ could be used via --cflags switch to configure.bat.
+
2012-10-08 Juanma Barranquero <lekktu@gmail.com>
* config.nt: Sync with autogen/config.in.
#undef CANNOT_DUMP
/* Define this to enable compile time checks for the Lisp_Object data type. */
-#undef CHECK_LISP_OBJECT_TYPE
+/* #undef CHECK_LISP_OBJECT_TYPE */
/* Define 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
echo Checking whether Windows API headers are too old...\r
echo #include "windows.h" >junk.c\r
echo #include "usp10.h" >>junk.c\r
-echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
+echo void test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c\r
if (%nocygwin%) == (Y) goto chkapi1\r
set cf=%usercflags%\r
OBJ2_c = $(patsubst $(BLD)%.$(O),$(CURDIR)%.c,$(OBJ2))
ifdef NOOPT
-DEBUG_CFLAGS = -DEMACSDEBUG -fno-crossjumping
+DEBUG_CFLAGS = -DEMACSDEBUG -fno-crossjumping -std=gnu99
else
DEBUG_CFLAGS =
endif
gid_t gr_gid; /* group numerical ID */
};
-struct group *getgrgid(gid_t);
+extern unsigned getgid (void);
+extern unsigned getegid (void);
+
+extern struct group *getgrgid(gid_t);
#endif /* _GRP_H */
#endif
#include <sys/types.h>
-#ifdef _MSC_VER
-typedef int sigset_t;
-typedef int ssize_t;
-#endif
-
-struct sigaction {
- int sa_flags;
- void (_CALLBACK_ *sa_handler)(int);
- sigset_t sa_mask;
-};
-#define SA_RESTART 0
-#define SIG_BLOCK 1
-#define SIG_SETMASK 2
-#define SIG_UNBLOCK 3
-
#ifndef MAXPATHLEN
#define MAXPATHLEN _MAX_PATH
#endif
/* 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
#define stricmp _stricmp
#define tzset _tzset
+/* We cannot include system header process.h, since there's src/process.h. */
+int _getpid (void);
+
/* 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
long int tv_nsec; /* nanoseconds */
};
+/* Required for functions in lib/time_r.c, since we don't use lib/time.h. */
+extern struct tm *gmtime_r (time_t const * restrict, struct tm * restrict);
+extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict);
+
/* This is hacky, but is necessary to avoid warnings about macro
redefinitions using the SDK compilers. */
#ifndef __STDC__
#define NSIG 23
#endif
+#ifdef _MSC_VER
+typedef int sigset_t;
+typedef int ssize_t;
+#endif
+
+typedef void (_CALLBACK_ *signal_handler) (int);
+extern signal_handler sys_signal (int, signal_handler);
+
+struct sigaction {
+ int sa_flags;
+ void (_CALLBACK_ *sa_handler)(int);
+ sigset_t sa_mask;
+};
+#define SA_RESTART 0
+#define SIG_BLOCK 1
+#define SIG_SETMASK 2
+#define SIG_UNBLOCK 3
+
+extern int sigemptyset (sigset_t *);
+extern int sigaddset (sigset_t *, int);
+extern int sigfillset (sigset_t *);
+extern int sigprocmask (int, const sigset_t *, sigset_t *);
+extern int pthread_sigmask (int, const sigset_t *, sigset_t *);
+extern int sigismember (const sigset_t *, int);
+extern int setpgrp (int, int);
+extern int sigaction (int, const struct sigaction *, struct sigaction *);
+extern int alarm (int);
+
+extern int sys_kill (int, int);
+
+
/* For integration with MSDOS support. */
#define getdisk() (_getdrive () - 1)
#ifdef emacs
#endif
extern int getloadavg (double *, int);
+extern int getpagesize (void);
#if defined (__MINGW32__)
typedef unsigned uid_t;
typedef uid_t gid_t;
-struct passwd * getpwnam (char *);
-struct passwd * getpwuid (unsigned);
+extern unsigned getuid (void);
+extern unsigned geteuid (void);
+
+extern struct passwd * getpwnam (char *);
+extern struct passwd * getpwuid (unsigned);
#endif /* _PWD_H_ */
2012-10-17 Eli Zaretskii <eliz@gnu.org>
+ * makefile.w32-in ($(BLD)/w32.$(O)):
+ ($(BLD)/vm-limit.$(O)):
+ ($(BLD)/term.$(O)):
+ ($(BLD)/unexw32.$(O)):
+ ($(BLD)/fileio.$(O)):
+ ($(BLD)/dispnew.$(O)): Update dependencies.
+
+ * w32term.h (w32_initialize_display_info, initialize_w32_display):
+ Add prototypes.
+
+ * w32proc.c: Include ctype.h.
+
+ * w32.h (init_environment, check_windows_init_file)
+ (syms_of_ntproc, syms_of_ntterm, dostounix_filename)
+ (unixtodos_filename, init_winsock, srandom, random, sys_pipe)
+ (set_process_dir, sys_spawnve, register_child, sys_sleep, getwd)
+ (sys_link): Add prototypes.
+
+ * w32.c: Include w32select.h.
+ (sys_access, e_malloc, sys_select): Add prototypes.
+ (emacs_gnutls_pull): 'timeout' is now EMACS_TIME, not struct timeval.
+
+ * vm-limit.c [WINDOWSNT]: Include w32heap.h.
+
+ * unexw32.c: Include lisp.h and w32.h.
+
+ * term.c [WINDOWSNT]: Include w32term.h.
+
+ * process.c [WINDOWSNT]: Add prototype of sys_select.
+
+ * fileio.c [WINDOWSNT]: Include w32.h.
+
+ * dispnew.c [WINDOWSNT]: Include w32.h.
+
* cygw32.c (Fcygwin_convert_path_to_windows)
(Fcygwin_convert_path_from_windows): Use EQ to compare 2
Lisp_Object values. (Bug#12661)
#if defined (HAVE_TERM_H) && defined (GNU_LINUX)
#include <term.h> /* for tgetent */
#endif
+
+#ifdef WINDOWSNT
+#include "w32.h"
+#endif
\f
/* Structure to pass dimensions around. Used for character bounding
boxes, glyph matrix dimensions and alike. */
#include <windows.h>
#include <fcntl.h>
#include <sys/file.h>
+#include "w32.h"
#endif /* not WINDOWSNT */
#ifdef MSDOS
$(SRC)/disptab.h \
$(SRC)/indent.h \
$(SRC)/termchar.h \
+ $(SRC)/w32.h \
$(NT_INC)/unistd.h \
$(BUFFER_H) \
$(CHARACTER_H) \
$(SRC)/fileio.c \
$(SRC)/blockinput.h \
$(SRC)/commands.h \
+ $(SRC)/w32.h \
$(NT_INC)/pwd.h \
$(NT_INC)/sys/file.h \
$(NT_INC)/sys/stat.h \
$(SRC)/w32.h \
$(SRC)/w32common.h \
$(SRC)/w32heap.h \
+ $(SRC)/w32select.h \
$(NT_INC)/pwd.h \
$(NT_INC)/sys/file.h \
$(NT_INC)/sys/time.h \
$(SYSSIGNAL_H) \
$(SYSTTY_H) \
$(TERMHOOKS_H) \
+ $(W32TERM_H) \
$(WINDOW_H)
$(BLD)/terminal.$(O) : \
$(BLD)/unexw32.$(O) : \
$(SRC)/unexw32.c \
$(SRC)/unexec.h \
+ $(SRC)/w32.h \
$(SRC)/w32common.h \
$(SRC)/w32heap.h \
+ $(LISP_H) \
$(CONFIG_H)
$(BLD)/vm-limit.$(O) : \
$(SRC)/vm-limit.c \
$(SRC)/mem-limits.h \
+ $(SRC)/w32heap.h \
$(NT_INC)/unistd.h \
$(CONFIG_H) \
$(LISP_H)
#include "xgselect.h"
#endif
+#ifdef WINDOWSNT
+extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
+ EMACS_TIME *, void *);
+#endif
+
#ifndef WNOHANG
# undef waitpid
# define waitpid(pid, status, options) wait (status)
/* The name of the default console device. */
#ifdef WINDOWSNT
#define DEV_TTY "CONOUT$"
+#include "w32term.h"
#else
#define DEV_TTY "/dev/tty"
#endif
#include <config.h>
#include "unexec.h"
+#include "lisp.h"
#include "w32common.h"
+#include "w32.h"
#include <stdio.h>
#include <fcntl.h>
#else /* not USG */
#ifdef WINDOWSNT
+#include "w32heap.h"
+
static void
get_lim_data (void)
{
#include "ndir.h"
#include "w32common.h"
#include "w32heap.h"
+#include "w32select.h"
#include "systime.h"
#include "dispextern.h" /* for xstrcasecmp */
#include "coding.h" /* for Vlocale_coding_system */
static int restore_privilege (TOKEN_PRIVILEGES *);
static BOOL WINAPI revert_to_self (void);
+extern int sys_access (const char *, int);
+extern void *e_malloc (size_t);
+extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
+ EMACS_TIME *, void *);
+
+
\f
/* Initialization states.
{
int n, sc, err;
SELECT_TYPE fdset;
- struct timeval timeout;
+ EMACS_TIME timeout;
struct Lisp_Process *process = (struct Lisp_Process *)p;
int fd = process->infd;
if (err == EWOULDBLOCK)
{
/* Set a small timeout. */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
+ timeout = make_emacs_time (1, 0);
FD_ZERO (&fdset);
FD_SET ((int)fd, &fdset);
extern Lisp_Object QCloaded_from;
extern HMODULE w32_delayed_load (Lisp_Object);
+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 BOOL init_winsock (int load_now);
+extern void srandom (int);
+extern int random (void);
+
+extern int sys_pipe (int *);
+
+extern void set_process_dir (char *);
+extern int sys_spawnve (int, char *, char **, char **);
+extern void register_child (int, int);
+
+extern void sys_sleep (int);
+extern char *getwd (char *);
+extern int sys_link (const char *, const char *);
+
+
+
#ifdef HAVE_GNUTLS
#include <gnutls/gnutls.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
+#include <ctype.h>
#include <io.h>
#include <fcntl.h>
#include <signal.h>
Lisp_Object Qhigh, Qlow;
-typedef void (_CALLBACK_ *signal_handler) (int);
-
/* Signal handlers...SIG_DFL == 0 so this is initialized correctly. */
static signal_handler sig_handlers[NSIG];
extern void w32_sys_ring_bell (struct frame *f);
extern void x_delete_display (struct w32_display_info *dpyinfo);
+extern void w32_initialize_display_info (Lisp_Object);
+extern void initialize_w32_display (struct terminal *);
+
/* Keypad command key support. W32 doesn't have virtual keys defined
for the function keys on the keypad (they are mapped to the standard