From 696056c280e0e4a03e12d8d53f692c015ff19217 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 24 Jun 2012 20:21:20 +0300 Subject: [PATCH] Improve port of struct timespec to MS-Windows. lib/makefile.w32-in ($(BLD)/dtotimespec.$(O)): ($(BLD)/timespec-add.$(O)): ($(BLD)/timespec-sub.$(O)): Don't depend on $(EMACS_ROOT)/nt/inc/sys/time.h. lib/stat-time.h: lib/timespec.h: lib/utimens.h: Revert last change. src/makefile.w32-in (TIMESPEC_H): Remove nt/inc/sys/time.h. (SYSTIME_H): Add nt/inc/sys/time.h. src/systime.h [WINDOWSNT]: Include sys/time.h. src/s/ms-w32.h (struct timespec): Definition moved from nt/inc/sys/time.h. Suggested by Paul Eggert . nt/inc/sys/time.h (struct timespec): Don't define it here, it is now defined in src/s/ms-w32.h. Fixes: debbugs:9000 --- ChangeLog | 11 +++++++++++ lib/makefile.w32-in | 3 --- lib/stat-time.h | 1 - lib/timespec.h | 1 - lib/utimens.h | 1 - nt/ChangeLog | 5 +++++ nt/inc/sys/time.h | 6 ------ src/ChangeLog | 10 ++++++++++ src/makefile.w32-in | 6 +++--- src/s/ms-w32.h | 9 +++++++++ src/systime.h | 4 ++++ 11 files changed, 42 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5ebfd9e650..1d3aefc9948 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-06-24 Eli Zaretskii + + * lib/makefile.w32-in ($(BLD)/dtotimespec.$(O)): + ($(BLD)/timespec-add.$(O)): + ($(BLD)/timespec-sub.$(O)): Don't depend on + $(EMACS_ROOT)/nt/inc/sys/time.h. + + * lib/stat-time.h: + * lib/timespec.h: + * lib/utimens.h: Revert last change. + 2012-06-23 Paul Eggert Merge from gnulib. diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in index 35745f647b2..b7ce6dd3b01 100644 --- a/lib/makefile.w32-in +++ b/lib/makefile.w32-in @@ -77,7 +77,6 @@ $(BLD)/dtotimespec.$(O) : \ $(SRC)/dtotimespec.c \ $(SRC)/intprops.h \ $(SRC)/timespec.h \ - $(EMACS_ROOT)/nt/inc/sys/time.h \ $(EMACS_ROOT)/nt/inc/sys/stat.h \ $(EMACS_ROOT)/src/s/ms-w32.h \ $(EMACS_ROOT)/src/config.h @@ -126,7 +125,6 @@ $(BLD)/timespec-add.$(O) : \ $(SRC)/timespec-add.c \ $(SRC)/intprops.h \ $(SRC)/timespec.h \ - $(EMACS_ROOT)/nt/inc/sys/time.h \ $(EMACS_ROOT)/nt/inc/sys/stat.h \ $(EMACS_ROOT)/src/s/ms-w32.h \ $(EMACS_ROOT)/src/config.h @@ -135,7 +133,6 @@ $(BLD)/timespec-sub.$(O) : \ $(SRC)/timespec-sub.c \ $(SRC)/intprops.h \ $(SRC)/timespec.h \ - $(EMACS_ROOT)/nt/inc/sys/time.h \ $(EMACS_ROOT)/nt/inc/sys/stat.h \ $(EMACS_ROOT)/src/s/ms-w32.h \ $(EMACS_ROOT)/src/config.h diff --git a/lib/stat-time.h b/lib/stat-time.h index 03d49977945..30c2acdab63 100644 --- a/lib/stat-time.h +++ b/lib/stat-time.h @@ -22,7 +22,6 @@ #include #include -#include /* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, diff --git a/lib/timespec.h b/lib/timespec.h index 51b85d050da..388ddb83a76 100644 --- a/lib/timespec.h +++ b/lib/timespec.h @@ -20,7 +20,6 @@ # define TIMESPEC_H # include -# include /* Return negative, zero, positive if A < B, A == B, A > B, respectively. diff --git a/lib/utimens.h b/lib/utimens.h index dfcbae1909d..8c47cf93f88 100644 --- a/lib/utimens.h +++ b/lib/utimens.h @@ -1,5 +1,4 @@ #include -#include int fdutimens (int, char const *, struct timespec const [2]); int utimens (char const *, struct timespec const [2]); int lutimens (char const *, struct timespec const [2]); diff --git a/nt/ChangeLog b/nt/ChangeLog index 11109da92f2..7c2ebd02936 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,8 @@ +2012-06-24 Eli Zaretskii + + * inc/sys/time.h (struct timespec): Don't define it here, it is + now defined in src/s/ms-w32.h. + 2012-06-23 Eli Zaretskii Fix the MS-Windows build broken by 2012-06-22T21:17:42Z!eggert@cs.ucla.edu. diff --git a/nt/inc/sys/time.h b/nt/inc/sys/time.h index 583b966b760..db54c90cf1f 100644 --- a/nt/inc/sys/time.h +++ b/nt/inc/sys/time.h @@ -17,12 +17,6 @@ struct timezone int tz_dsttime; /* type of dst correction */ }; -struct timespec -{ - time_t tv_sec; /* seconds */ - long int tv_nsec; /* nanoseconds */ -}; - void gettimeofday (struct timeval *, struct timezone *); #endif /* SYS_TIME_H_INCLUDED */ diff --git a/src/ChangeLog b/src/ChangeLog index a302db4fae6..3f799b9d377 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2012-06-24 Eli Zaretskii + + * makefile.w32-in (TIMESPEC_H): Remove nt/inc/sys/time.h. + (SYSTIME_H): Add nt/inc/sys/time.h. + + * systime.h [WINDOWSNT]: Include sys/time.h. + + * s/ms-w32.h (struct timespec): Definition moved from + nt/inc/sys/time.h. Suggested by Paul Eggert . + 2012-06-24 Paul Eggert Fix bug when time_t is unsigned and as wide as intmax_t (Bug#9000). diff --git a/src/makefile.w32-in b/src/makefile.w32-in index 963d9329e49..ef20356fdeb 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in @@ -390,10 +390,10 @@ EMACS_ROOT = .. GNU_LIB = $(EMACS_ROOT)/lib NT_INC = $(EMACS_ROOT)/nt/inc -TIMESPEC_H = $(GNU_LIB)/timespec.h \ - $(NT_INC)/sys/time.h +TIMESPEC_H = $(GNU_LIB)/timespec.h SYSTIME_H = $(SRC)/systime.h \ - $(TIMESPEC_H) + $(TIMESPEC_H) \ + $(NT_INC)/sys/time.h ATIMER_H = $(SRC)/atimer.h \ $(SYSTIME_H) BLOCKINPUT_H = $(SRC)/blockinput.h \ diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index a26530bab64..20603562afa 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h @@ -296,6 +296,15 @@ typedef int pid_t; #define utime _utime #endif +/* 'struct timespec' is used by time-related functions in lib/ and + elsewhere, but we don't use lib/time.h where the structure is + defined. */ +struct timespec +{ + time_t tv_sec; /* seconds */ + long int tv_nsec; /* nanoseconds */ +}; + /* This is hacky, but is necessary to avoid warnings about macro redefinitions using the SDK compilers. */ #ifndef __STDC__ diff --git a/src/systime.h b/src/systime.h index dd0d77c827d..0f91551239e 100644 --- a/src/systime.h +++ b/src/systime.h @@ -38,6 +38,10 @@ typedef unsigned long Time; #endif #endif #endif + +#ifdef WINDOWSNT +#include /* for 'struct timeval' */ +#endif /* The type to use to represent temporal intervals. It can be passed as the timeout argument to the pselect system call. */