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 <eggert@cs.ucla.edu>.
 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
This commit is contained in:
Eli Zaretskii 2012-06-24 20:21:20 +03:00
parent bbf908bc69
commit 696056c280
11 changed files with 42 additions and 15 deletions

View file

@ -1,3 +1,14 @@
2012-06-24 Eli Zaretskii <eliz@gnu.org>
* 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 <eggert@cs.ucla.edu>
Merge from gnulib.

View file

@ -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

View file

@ -22,7 +22,6 @@
#include <sys/stat.h>
#include <time.h>
#include <sys/time.h>
/* 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,

View file

@ -20,7 +20,6 @@
# define TIMESPEC_H
# include <time.h>
# include <sys/time.h>
/* Return negative, zero, positive if A < B, A == B, A > B, respectively.

View file

@ -1,5 +1,4 @@
#include <time.h>
#include <sys/time.h>
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]);

View file

@ -1,3 +1,8 @@
2012-06-24 Eli Zaretskii <eliz@gnu.org>
* 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 <eliz@gnu.org>
Fix the MS-Windows build broken by 2012-06-22T21:17:42Z!eggert@cs.ucla.edu.

View file

@ -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 */

View file

@ -1,3 +1,13 @@
2012-06-24 Eli Zaretskii <eliz@gnu.org>
* 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 <eggert@cs.ucla.edu>.
2012-06-24 Paul Eggert <eggert@cs.ucla.edu>
Fix bug when time_t is unsigned and as wide as intmax_t (Bug#9000).

View file

@ -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 \

View file

@ -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__

View file

@ -38,6 +38,10 @@ typedef unsigned long Time;
#endif
#endif
#endif
#ifdef WINDOWSNT
#include <sys/time.h> /* 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. */