From 0700d97fe3f0d15f2239f09383bd4f110aafa47b Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Thu, 10 May 2012 20:59:50 -0600 Subject: [PATCH 1/1] Fix Windows build: gettimeofday() and SHUT_WR missing Commit 904822e3 introduced use of SHUT_WR, which Windows calls SD_SEND. Add the obvious work-around. Commit 49ae6a7b introduced use of gettimeofday(), which the Microsoft CRT lacks. Add a replacement based on _ftime_s(). --- src/lib/w32/gettimeofday.c | 51 ++++++++++++++++++++++++++++++++++++++ src/lib/w32/sys/socket.h | 4 +++ src/lib/w32/sys/time.h | 2 ++ 3 files changed, 57 insertions(+) create mode 100644 src/lib/w32/gettimeofday.c diff --git a/src/lib/w32/gettimeofday.c b/src/lib/w32/gettimeofday.c new file mode 100644 index 000000000..b051db69d --- /dev/null +++ b/src/lib/w32/gettimeofday.c @@ -0,0 +1,51 @@ +/* + * Empire - A multi-player, client/server Internet based war game. + * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Ken Stevens, Steve McClure, Markus Armbruster + * + * Empire is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * --- + * + * See files README, COPYING and CREDITS in the root of the source + * tree for related information and legal notices. It is expected + * that future projects/authors will amend these files as needed. + * + * --- + * + * gettimeofday.c: WIN32 equivalent for UNIX gettimeofday() + * + * Known contributors to this file: + * Ron Koenderink, 2012 + * Markus Armbruster, 2012 + */ + +#ifdef _MSC_VER + +#include +#include +#include + +int +gettimeofday (struct timeval *tv, void *tz) +{ + struct _timeb timebuf; + _ftime_s(&timebuf); + tv->tv_sec = timebuf.time; + tv->tv_usec = timebuf.millitm * 1000; + + return 0; +} + +#endif /* _MSC_VER */ diff --git a/src/lib/w32/sys/socket.h b/src/lib/w32/sys/socket.h index 25d38fead..7161dda89 100644 --- a/src/lib/w32/sys/socket.h +++ b/src/lib/w32/sys/socket.h @@ -67,4 +67,8 @@ extern SOCKET w32_fd2socket(int fd); extern void w32_set_winsock_errno(void); extern int w32_socket_init(void); +#ifndef SHUT_WR +#define SHUT_WR SD_SEND +#endif + #endif /* SYS_SOCKET_H */ diff --git a/src/lib/w32/sys/time.h b/src/lib/w32/sys/time.h index b66f92e84..08dced68e 100644 --- a/src/lib/w32/sys/time.h +++ b/src/lib/w32/sys/time.h @@ -36,4 +36,6 @@ /* include winsock2.h thru sys/socket.h to get struct timeval */ #include "sys/socket.h" +extern int gettimeofday(struct timeval *tv, void *tz); + #endif /* SYS_TIME_H */ -- 2.43.0