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().
This commit is contained in:
Ron Koenderink 2012-05-10 20:59:50 -06:00 committed by Markus Armbruster
parent 6c5dfc870e
commit 0700d97fe3
3 changed files with 57 additions and 0 deletions

View file

@ -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 <http://www.gnu.org/licenses/>.
*
* ---
*
* 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 <sys/types.h>
#include <sys/timeb.h>
#include <sys/time.h>
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 */

View file

@ -67,4 +67,8 @@ extern SOCKET w32_fd2socket(int fd);
extern void w32_set_winsock_errno(void); extern void w32_set_winsock_errno(void);
extern int w32_socket_init(void); extern int w32_socket_init(void);
#ifndef SHUT_WR
#define SHUT_WR SD_SEND
#endif
#endif /* SYS_SOCKET_H */ #endif /* SYS_SOCKET_H */

View file

@ -36,4 +36,6 @@
/* include winsock2.h thru sys/socket.h to get struct timeval */ /* include winsock2.h thru sys/socket.h to get struct timeval */
#include "sys/socket.h" #include "sys/socket.h"
extern int gettimeofday(struct timeval *tv, void *tz);
#endif /* SYS_TIME_H */ #endif /* SYS_TIME_H */