Fix warnings when compiling on MS-Windows with -std=gnu99.
authorEli Zaretskii <eliz@gnu.org>
Wed, 17 Oct 2012 19:02:44 +0000 (21:02 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 17 Oct 2012 19:02:44 +0000 (21:02 +0200)
 src/makefile.w32-in ($(BLD)/w32.$(O)):
 ($(BLD)/vm-limit.$(O)):
 ($(BLD)/term.$(O)):
 ($(BLD)/unexw32.$(O)):
 ($(BLD)/fileio.$(O)):
 ($(BLD)/dispnew.$(O)): Update dependencies.
 src/w32term.h (w32_initialize_display_info, initialize_w32_display):
 Add prototypes.
 src/w32proc.c: Include ctype.h.
 src/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.
 src/w32.c: Include w32select.h.
 (sys_access, e_malloc, sys_select): Add prototypes.
 (emacs_gnutls_pull): 'timeout' is now EMACS_TIME, not struct timeval.
 src/vm-limit.c [WINDOWSNT]: Include w32heap.h.
 src/unexw32.c: Include lisp.h and w32.h.
 src/term.c [WINDOWSNT]: Include w32term.h.
 src/process.c [WINDOWSNT]: Add prototype of sys_select.
 src/fileio.c [WINDOWSNT]: Include w32.h.
 src/dispnew.c [WINDOWSNT]: Include w32.h.

 nt/inc/pwd.h (getuid, geteuid): Add prototypes.
 nt/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.
 nt/inc/grp.h (getgid, getegid): Add prototypes.
 nt/gmake.defs (DEBUG_CFLAGS) [NOOPT]: Add -std=gnu99.
 nt/configure.bat (chkapiN): Avoid compiler warning in junk.c when
 compiling with -std=gnu99.
 nt/config.nt (CHECK_LISP_OBJECT_TYPE): Don't undef, so that it
 could be used via --cflags switch to configure.bat.

19 files changed:
nt/ChangeLog
nt/config.nt
nt/configure.bat
nt/gmake.defs
nt/inc/grp.h
nt/inc/ms-w32.h
nt/inc/pwd.h
src/ChangeLog
src/dispnew.c
src/fileio.c
src/makefile.w32-in
src/process.c
src/term.c
src/unexw32.c
src/vm-limit.c
src/w32.c
src/w32.h
src/w32proc.c
src/w32term.h

index 4b0a65a..94d2ce1 100644 (file)
@@ -1,3 +1,22 @@
+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.
index cd695bc..4582928 100644 (file)
@@ -76,7 +76,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #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
index 7fedff4..3118bb1 100755 (executable)
@@ -429,7 +429,7 @@ rem
 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
index 7206237..358c262 100644 (file)
@@ -211,7 +211,7 @@ OBJ1_c              = $(patsubst $(BLD)%.$(O),$(CURDIR)%.c,$(OBJ1))
 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
index 8c3131a..3d36904 100644 (file)
@@ -28,7 +28,10 @@ struct group {
   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 */
 
index 06a3af9..dd2ae78 100644 (file)
@@ -120,21 +120,6 @@ extern char *getenv ();
 #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
@@ -207,6 +192,8 @@ struct sigaction {
 /* 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
@@ -251,6 +238,9 @@ typedef int pid_t;
 #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
@@ -272,6 +262,10 @@ struct timespec
   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__
@@ -300,6 +294,37 @@ struct timespec
 #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
@@ -357,6 +382,7 @@ extern char *get_emacs_configuration_options (void);
 #endif
 
 extern int getloadavg (double *, int);
+extern int getpagesize (void);
 
 #if defined (__MINGW32__)
 
index b39309d..54e477e 100644 (file)
@@ -18,8 +18,11 @@ struct passwd {
 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_ */
index 3a6fb71..827850e 100644 (file)
@@ -1,5 +1,39 @@
 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)
index 0956e3f..fa24408 100644 (file)
@@ -60,6 +60,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #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.  */
index e3a91c2..d47d7dd 100644 (file)
@@ -53,6 +53,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <windows.h>
 #include <fcntl.h>
 #include <sys/file.h>
+#include "w32.h"
 #endif /* not WINDOWSNT */
 
 #ifdef MSDOS
index 2acce9c..5be1ccb 100644 (file)
@@ -735,6 +735,7 @@ $(BLD)/dispnew.$(O) : \
        $(SRC)/disptab.h \
        $(SRC)/indent.h \
        $(SRC)/termchar.h \
+       $(SRC)/w32.h \
        $(NT_INC)/unistd.h \
        $(BUFFER_H) \
        $(CHARACTER_H) \
@@ -832,6 +833,7 @@ $(BLD)/fileio.$(O) : \
        $(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 \
@@ -1173,6 +1175,7 @@ $(BLD)/w32.$(O) : \
        $(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 \
@@ -1428,6 +1431,7 @@ $(BLD)/term.$(O) : \
        $(SYSSIGNAL_H) \
        $(SYSTTY_H) \
        $(TERMHOOKS_H) \
+       $(W32TERM_H) \
        $(WINDOW_H)
 
 $(BLD)/terminal.$(O) : \
@@ -1468,13 +1472,16 @@ $(BLD)/undo.$(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)
index d45a2c6..307e828 100644 (file)
@@ -125,6 +125,11 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #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)
index acce9c0..f7c87b7 100644 (file)
@@ -66,6 +66,7 @@ static int been_here = -1;
 /* The name of the default console device.  */
 #ifdef WINDOWSNT
 #define DEV_TTY  "CONOUT$"
+#include "w32term.h"
 #else
 #define DEV_TTY  "/dev/tty"
 #endif
index 82671d0..1e591a7 100644 (file)
@@ -22,7 +22,9 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 #include "unexec.h"
+#include "lisp.h"
 #include "w32common.h"
+#include "w32.h"
 
 #include <stdio.h>
 #include <fcntl.h>
index 3020b84..2a71e88 100644 (file)
@@ -85,6 +85,8 @@ get_lim_data (void)
 #else /* not USG */
 #ifdef WINDOWSNT
 
+#include "w32heap.h"
+
 static void
 get_lim_data (void)
 {
index babbcc6..5ac1bc3 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -175,6 +175,7 @@ typedef struct _REPARSE_DATA_BUFFER {
 #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 */
@@ -198,6 +199,12 @@ static int enable_privilege (LPCTSTR, BOOL, TOKEN_PRIVILEGES *);
 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.
 
@@ -6961,7 +6968,7 @@ emacs_gnutls_pull (gnutls_transport_ptr_t p, void* buf, size_t sz)
 {
   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;
 
@@ -6977,8 +6984,7 @@ emacs_gnutls_pull (gnutls_transport_ptr_t p, void* buf, size_t sz)
       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);
 
index c4cfdf5..8309a3c 100644 (file)
--- a/src/w32.h
+++ b/src/w32.h
@@ -146,6 +146,28 @@ extern int _sys_wait_accept (int fd);
 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>
 
index 7e8183b..57b3860 100644 (file)
@@ -24,6 +24,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <ctype.h>
 #include <io.h>
 #include <fcntl.h>
 #include <signal.h>
@@ -68,8 +69,6 @@ extern BOOL WINAPI IsValidLocale (LCID, DWORD);
 
 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];
 
index 83f9e7b..af5b37a 100644 (file)
@@ -681,6 +681,9 @@ extern BOOL parse_button (int, int, int *, int *);
 
 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