Commit 6bb75c2f authored by Dag Erling Smørgrav's avatar Dag Erling Smørgrav

Fix build on MacOS X: add a fake clock_gettime() and fix some includes.

WARNING: varnish will build and run, but the lack of a monotonic clock
may lead to strange behaviour if the clock is stepped (rather than skewed)
while varnish is running.

Thanks to Niklas Saers for providing a test environment.

git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1145 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 328daf3d
...@@ -43,6 +43,10 @@ ...@@ -43,6 +43,10 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#ifndef HAVE_SRANDOMDEV #ifndef HAVE_SRANDOMDEV
#include "compat/srandomdev.h" #include "compat/srandomdev.h"
#endif #endif
......
...@@ -41,6 +41,10 @@ ...@@ -41,6 +41,10 @@
#include <sys/epoll.h> #include <sys/epoll.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "heritage.h" #include "heritage.h"
#include "shmlog.h" #include "shmlog.h"
#include "cache.h" #include "cache.h"
......
...@@ -43,6 +43,10 @@ ...@@ -43,6 +43,10 @@
#include <sys/event.h> #include <sys/event.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "heritage.h" #include "heritage.h"
#include "shmlog.h" #include "shmlog.h"
#include "cache.h" #include "cache.h"
......
...@@ -42,6 +42,10 @@ ...@@ -42,6 +42,10 @@
#include <unistd.h> #include <unistd.h>
#include <poll.h> #include <poll.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "heritage.h" #include "heritage.h"
#include "shmlog.h" #include "shmlog.h"
#include "cache.h" #include "cache.h"
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
* Ban processing * Ban processing
*/ */
#include <sys/types.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <regex.h> #include <regex.h>
......
...@@ -60,6 +60,10 @@ DOT start -> RECV ...@@ -60,6 +60,10 @@ DOT start -> RECV
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "shmlog.h" #include "shmlog.h"
#include "vcl.h" #include "vcl.h"
#include "cache.h" #include "cache.h"
......
...@@ -41,6 +41,10 @@ ...@@ -41,6 +41,10 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <netdb.h> #include <netdb.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "shmlog.h" #include "shmlog.h"
#include "cache.h" #include "cache.h"
......
...@@ -38,6 +38,10 @@ ...@@ -38,6 +38,10 @@
#include <stdlib.h> #include <stdlib.h>
#include <sys/socket.h> #include <sys/socket.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "shmlog.h" #include "shmlog.h"
#include "heritage.h" #include "heritage.h"
#include "cache.h" #include "cache.h"
......
...@@ -34,6 +34,10 @@ ...@@ -34,6 +34,10 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "shmlog.h" #include "shmlog.h"
#include "heritage.h" #include "heritage.h"
#include "cache.h" #include "cache.h"
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
* Runtime support for compiled VCL programs * Runtime support for compiled VCL programs
*/ */
#include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
* XXX: a refresh facility. * XXX: a refresh facility.
*/ */
#include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
* Runtime support for compiled VCL programs, regexps * Runtime support for compiled VCL programs, regexps
*/ */
#include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
* This is the reference hash(/lookup) implementation * This is the reference hash(/lookup) implementation
*/ */
#include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
......
...@@ -37,6 +37,10 @@ ...@@ -37,6 +37,10 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "mgt.h" #include "mgt.h"
#include "mgt_event.h" #include "mgt_event.h"
#include "miniobj.h" #include "miniobj.h"
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
* $Id$ * $Id$
*/ */
#include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <limits.h> #include <limits.h>
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
* Storage method based on malloc(3) * Storage method based on malloc(3)
*/ */
#include <sys/types.h>
#include <stdlib.h> #include <stdlib.h>
#include "cache.h" #include "cache.h"
......
...@@ -39,6 +39,10 @@ ...@@ -39,6 +39,10 @@
#include <curses.h> #include <curses.h>
#include <time.h> #include <time.h>
#ifndef HAVE_CLOCK_GETTIME
#include "compat/clock_gettime.h"
#endif
#include "libvarnish.h" #include "libvarnish.h"
#include "shmlog.h" #include "shmlog.h"
#include "varnishapi.h" #include "varnishapi.h"
......
...@@ -78,6 +78,7 @@ AC_CHECK_FUNCS([srandomdev]) ...@@ -78,6 +78,7 @@ AC_CHECK_FUNCS([srandomdev])
AC_CHECK_FUNCS([strlcat strlcpy]) AC_CHECK_FUNCS([strlcat strlcpy])
AC_CHECK_FUNCS([strndup]) AC_CHECK_FUNCS([strndup])
AC_CHECK_FUNCS([vis strvis strvisx]) AC_CHECK_FUNCS([vis strvis strvisx])
AC_CHECK_FUNCS([clock_gettime])
# Check which mechanism to use for the acceptor # Check which mechanism to use for the acceptor
AC_CHECK_FUNCS([kqueue]) AC_CHECK_FUNCS([kqueue])
......
...@@ -6,6 +6,7 @@ noinst_HEADERS = \ ...@@ -6,6 +6,7 @@ noinst_HEADERS = \
cli_common.h \ cli_common.h \
cli_priv.h \ cli_priv.h \
compat/asprintf.h \ compat/asprintf.h \
compat/clock_gettime.h \
compat/setproctitle.h \ compat/setproctitle.h \
compat/srandomdev.h \ compat/srandomdev.h \
compat/strlcat.h \ compat/strlcat.h \
......
/*-
* Copyright (c) 2006 Verdens Gang AS
* Copyright (c) 2006 Linpro AS
* All rights reserved.
*
* Author: Dag-Erling Smørgrav <des@linpro.no>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
*/
#ifndef COMPAT_CLOCK_GETTIME_H_INCLUDED
#define COMPAT_CLOCK_GETTIME_H_INCLUDED
#ifndef HAVE_CLOCK_GETTIME
typedef enum {
CLOCK_REALTIME,
CLOCK_MONOTONIC,
} clockid_t;
int clock_gettime(clockid_t clk_id, struct timespec *tp);
#endif
#endif
...@@ -6,6 +6,7 @@ noinst_LIBRARIES = libcompat.a ...@@ -6,6 +6,7 @@ noinst_LIBRARIES = libcompat.a
libcompat_a_SOURCES = \ libcompat_a_SOURCES = \
asprintf.c \ asprintf.c \
clock_gettime.c \
vasprintf.c \ vasprintf.c \
setproctitle.c \ setproctitle.c \
srandomdev.c \ srandomdev.c \
......
/*-
* Copyright (c) 2006 Verdens Gang AS
* Copyright (c) 2006 Linpro AS
* All rights reserved.
*
* Author: Dag-Erling Smørgrav <des@linpro.no>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
*
*/
#ifndef HAVE_CLOCK_GETTIME
#include <sys/time.h>
#include <errno.h>
#include <time.h>
#include "compat/clock_gettime.h"
int
clock_gettime(clockid_t clk_id, struct timespec *tp)
{
struct timeval tv;
switch (clk_id) {
case CLOCK_REALTIME:
case CLOCK_MONOTONIC:
if (gettimeofday(&tv, NULL) != 0)
return (-1);
tp->tv_sec = tv.tv_sec;
tp->tv_nsec = tv.tv_usec * 1000;
return (0);
default:
errno = EINVAL;
return (-1);
}
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment