]> granicus.if.org Git - libevent/commitdiff
portability fixes from marius@umich.edu.
authorNiels Provos <provos@gmail.com>
Mon, 7 Oct 2002 00:47:34 +0000 (00:47 +0000)
committerNiels Provos <provos@gmail.com>
Mon, 7 Oct 2002 00:47:34 +0000 (00:47 +0000)
svn:r35

Makefile.am
compat/sys/_time.h [new file with mode: 0644]
event.c
kqueue.c
sample/Makefile.am
select.c

index 2b8605b6c39e3ad590a0f35f8db62f5bdf62d888..8d6266600d38f3e4fde0110f8a12431148ef3512 100644 (file)
@@ -2,7 +2,8 @@ AUTOMAKE_OPTIONS = foreign no-dependencies
 
 SUBDIRS = . sample
 
-EXTRA_DIST = acconfig.h
+EXTRA_DIST = acconfig.h test/Makefile.in compat/err.h compat/sys/queue.h \
+             compat/sys/tree.h compat/sys/_time.h
 
 lib_LIBRARIES = libevent.a
 
@@ -11,7 +12,7 @@ libevent_a_LIBADD = @LIBOBJS@
 
 include_HEADERS = event.h
 
-INCLUDES = -I/usr/include -Icompat
+INCLUDES = -Icompat
 
 man_MANS = event.3
 
diff --git a/compat/sys/_time.h b/compat/sys/_time.h
new file mode 100644 (file)
index 0000000..03b5124
--- /dev/null
@@ -0,0 +1,167 @@
+/*     $OpenBSD: time.h,v 1.11 2000/10/10 13:36:48 itojun Exp $        */
+/*     $NetBSD: time.h,v 1.18 1996/04/23 10:29:33 mycroft Exp $        */
+
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 THE REGENTS 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.
+ *
+ *     @(#)time.h      8.2 (Berkeley) 7/10/94
+ */
+
+#ifndef _SYS_TIME_H_
+#define _SYS_TIME_H_
+
+#include <sys/types.h>
+
+/*
+ * Structure returned by gettimeofday(2) system call,
+ * and used in other calls.
+ */
+struct timeval {
+       long    tv_sec;         /* seconds */
+       long    tv_usec;        /* and microseconds */
+};
+
+/*
+ * Structure defined by POSIX.1b to be like a timeval.
+ */
+struct timespec {
+       time_t  tv_sec;         /* seconds */
+       long    tv_nsec;        /* and nanoseconds */
+};
+
+#define        TIMEVAL_TO_TIMESPEC(tv, ts) {                                   \
+       (ts)->tv_sec = (tv)->tv_sec;                                    \
+       (ts)->tv_nsec = (tv)->tv_usec * 1000;                           \
+}
+#define        TIMESPEC_TO_TIMEVAL(tv, ts) {                                   \
+       (tv)->tv_sec = (ts)->tv_sec;                                    \
+       (tv)->tv_usec = (ts)->tv_nsec / 1000;                           \
+}
+
+struct timezone {
+       int     tz_minuteswest; /* minutes west of Greenwich */
+       int     tz_dsttime;     /* type of dst correction */
+};
+#define        DST_NONE        0       /* not on dst */
+#define        DST_USA         1       /* USA style dst */
+#define        DST_AUST        2       /* Australian style dst */
+#define        DST_WET         3       /* Western European dst */
+#define        DST_MET         4       /* Middle European dst */
+#define        DST_EET         5       /* Eastern European dst */
+#define        DST_CAN         6       /* Canada */
+
+/* Operations on timevals. */
+#define        timerclear(tvp)         (tvp)->tv_sec = (tvp)->tv_usec = 0
+#define        timerisset(tvp)         ((tvp)->tv_sec || (tvp)->tv_usec)
+#define        timercmp(tvp, uvp, cmp)                                         \
+       (((tvp)->tv_sec == (uvp)->tv_sec) ?                             \
+           ((tvp)->tv_usec cmp (uvp)->tv_usec) :                       \
+           ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#define        timeradd(tvp, uvp, vvp)                                         \
+       do {                                                            \
+               (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;          \
+               (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec;       \
+               if ((vvp)->tv_usec >= 1000000) {                        \
+                       (vvp)->tv_sec++;                                \
+                       (vvp)->tv_usec -= 1000000;                      \
+               }                                                       \
+       } while (0)
+#define        timersub(tvp, uvp, vvp)                                         \
+       do {                                                            \
+               (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;          \
+               (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;       \
+               if ((vvp)->tv_usec < 0) {                               \
+                       (vvp)->tv_sec--;                                \
+                       (vvp)->tv_usec += 1000000;                      \
+               }                                                       \
+       } while (0)
+
+/* Operations on timespecs. */
+#define        timespecclear(tsp)              (tsp)->tv_sec = (tsp)->tv_nsec = 0
+#define        timespecisset(tsp)              ((tsp)->tv_sec || (tsp)->tv_nsec)
+#define        timespeccmp(tsp, usp, cmp)                                      \
+       (((tsp)->tv_sec == (usp)->tv_sec) ?                             \
+           ((tsp)->tv_nsec cmp (usp)->tv_nsec) :                       \
+           ((tsp)->tv_sec cmp (usp)->tv_sec))
+#define        timespecadd(tsp, usp, vsp)                                      \
+       do {                                                            \
+               (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec;          \
+               (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec;       \
+               if ((vsp)->tv_nsec >= 1000000000L) {                    \
+                       (vsp)->tv_sec++;                                \
+                       (vsp)->tv_nsec -= 1000000000L;                  \
+               }                                                       \
+       } while (0)
+#define        timespecsub(tsp, usp, vsp)                                      \
+       do {                                                            \
+               (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;          \
+               (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;       \
+               if ((vsp)->tv_nsec < 0) {                               \
+                       (vsp)->tv_sec--;                                \
+                       (vsp)->tv_nsec += 1000000000L;                  \
+               }                                                       \
+       } while (0)
+
+/*
+ * Names of the interval timers, and structure
+ * defining a timer setting.
+ */
+#define        ITIMER_REAL     0
+#define        ITIMER_VIRTUAL  1
+#define        ITIMER_PROF     2
+
+struct itimerval {
+       struct  timeval it_interval;    /* timer interval */
+       struct  timeval it_value;       /* current value */
+};
+
+/*
+ * Getkerninfo clock information structure
+ */
+struct clockinfo {
+       int     hz;             /* clock frequency */
+       int     tick;           /* micro-seconds per hz tick */
+       int     tickadj;        /* clock skew rate for adjtime() */
+       int     stathz;         /* statistics clock frequency */
+       int     profhz;         /* profiling clock frequency */
+};
+
+#define CLOCK_REALTIME 0
+#define CLOCK_VIRTUAL  1
+#define CLOCK_PROF     2
+
+#define TIMER_RELTIME  0x0     /* relative timer */
+#define TIMER_ABSTIME  0x1     /* absolute timer */
+
+/* --- stuff got cut here - niels --- */
+
+#endif /* !_SYS_TIME_H_ */
diff --git a/event.c b/event.c
index 8195fffa917396900046dfbd8c31758951d72211..30db339c0bb763508144957ffc1b7c132dd6938f 100644 (file)
--- a/event.c
+++ b/event.c
 
 #include <sys/types.h>
 #include <sys/tree.h>
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
+#else 
+#include <sys/_time.h>
+#endif
 #include <sys/queue.h>
 #include <stdio.h>
 #include <stdlib.h>
index a310718d7a1311a6a3d9c3182444133fc9e9be05..f5e4f123329c12d89c9b56b83eb80445bd843587 100644 (file)
--- a/kqueue.c
+++ b/kqueue.c
 #include "config.h"
 
 #include <sys/types.h>
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
+#else
+#include <sys/_time.h>
+#endif
 #include <sys/queue.h>
 #include <sys/event.h>
 #include <signal.h>
index 952702b784f79109399cba43baa9d1c6447bd6ac..b2a0481a2d49815f615f2563444768a31d0f7965 100644 (file)
@@ -1,7 +1,8 @@
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
 LDADD = -L.. -levent
-CPPFPLAGS = -I..
+CPPFPLAGS = -I.. 
+CFLAGS = -I../compat
 
 noinst_PROGRAMS = event-test time-test signal-test
 
index 0476c113b6e3f3151fcc09002199582b7337814d..138a3ace9f52077b6287e87ba88f152440f5fb05 100644 (file)
--- a/select.c
+++ b/select.c
 #include "config.h"
 
 #include <sys/types.h>
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
+#else
+#include <sys/_time.h>
+#endif
 #include <sys/queue.h>
 #include <signal.h>
 #include <stdio.h>