summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortrey <trey.dempsey@gmail.com>2010-02-03 14:55:35 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2010-02-03 14:55:35 +0100
commit1fc8e4372bf0c7ccc7f54abe387933dc8a2de670 (patch)
tree51a1985a019f48abbb3283e164701b7f9206c85e
parent38cb3926727c0ad29f3950db43ba12248e867b89 (diff)
downloadrsyslog-1fc8e4372bf0c7ccc7f54abe387933dc8a2de670.tar.gz
rsyslog-1fc8e4372bf0c7ccc7f54abe387933dc8a2de670.tar.xz
rsyslog-1fc8e4372bf0c7ccc7f54abe387933dc8a2de670.zip
patch to make rsyslog compile under Apple OS X
Signed-off-by: Rainer Gerhards <rgerhards@adiscon.com>
-rw-r--r--ChangeLog2
-rw-r--r--runtime/debug.c13
-rw-r--r--runtime/srutils.c27
3 files changed, 41 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d5c1910a..06d6c330 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
---------------------------------------------------------------------------
Version 5.5.2 [DEVEL] (rgerhards), 2009-11-??
+- applied patches that make rsyslog compile under Apple OS X.
+ Thanks to trey for providing these.
- replaced data type "bool" by "sbool" because this created some
portability issues.
- added $Escape8BitCharactersOnReceive directive
diff --git a/runtime/debug.c b/runtime/debug.c
index a517b1ba..6d82397f 100644
--- a/runtime/debug.c
+++ b/runtime/debug.c
@@ -47,6 +47,9 @@
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
+#if _POSIX_TIMERS <= 0
+#include <sys/time.h>
+#endif
#include "rsyslog.h"
#include "debug.h"
@@ -844,6 +847,9 @@ do_dbgprint(uchar *pszObjName, char *pszMsg, size_t lenMsg)
char pszWriteBuf[32*1024];
size_t lenWriteBuf;
struct timespec t;
+# if _POSIX_TIMERS <= 0
+ struct timeval tv;
+# endif
/* The bWasNL handler does not really work. It works if no thread
* switching occurs during non-NL messages. Else, things are messed
@@ -869,7 +875,14 @@ do_dbgprint(uchar *pszObjName, char *pszMsg, size_t lenMsg)
if(bWasNL) {
if(bPrintTime) {
+# if _POSIX_TIMERS > 0
+ /* this is the "regular" code */
clock_gettime(CLOCK_REALTIME, &t);
+# else
+ gettimeofday(&tv, NULL);
+ t.tv_sec = tv.tv_sec;
+ t.tv_nsec = tv.tv_usec * 1000;
+# endif
lenWriteBuf = snprintf(pszWriteBuf, sizeof(pszWriteBuf),
"%4.4ld.%9.9ld:", (long) (t.tv_sec % 10000), t.tv_nsec);
if(stddbg != -1) write(stddbg, pszWriteBuf, lenWriteBuf);
diff --git a/runtime/srutils.c b/runtime/srutils.c
index 7ddc3ba2..2bed624e 100644
--- a/runtime/srutils.c
+++ b/runtime/srutils.c
@@ -46,6 +46,9 @@
#include "srUtils.h"
#include "obj.h"
+#if _POSIX_TIMERS <= 0
+#include <sys/time.h>
+#endif
/* here we host some syslog specific names. There currently is no better place
* to do it, but over here is also not ideal... -- rgerhards, 2008-02-14
@@ -372,10 +375,22 @@ int getNumberDigits(long lNum)
rsRetVal
timeoutComp(struct timespec *pt, long iTimeout)
{
+# if _POSIX_TIMERS <= 0
+ struct timeval tv;
+# endif
+
BEGINfunc
assert(pt != NULL);
/* compute timeout */
+
+# if _POSIX_TIMERS > 0
+ /* this is the "regular" code */
clock_gettime(CLOCK_REALTIME, pt);
+# else
+ gettimeofday(&tv, NULL);
+ pt->tv_sec = tv.tv_sec;
+ pt->tv_nsec = tv.tv_usec * 1000;
+# endif
pt->tv_sec += iTimeout / 1000;
pt->tv_nsec += (iTimeout % 1000) * 1000000; /* think INTEGER arithmetic! */
if(pt->tv_nsec > 999999999) { /* overrun? */
@@ -397,11 +412,21 @@ timeoutVal(struct timespec *pt)
{
struct timespec t;
long iTimeout;
- BEGINfunc
+# if _POSIX_TIMERS <= 0
+ struct timeval tv;
+# endif
+ BEGINfunc
assert(pt != NULL);
/* compute timeout */
+# if _POSIX_TIMERS > 0
+ /* this is the "regular" code */
clock_gettime(CLOCK_REALTIME, &t);
+# else
+ gettimeofday(&tv, NULL);
+ t.tv_sec = tv.tv_sec;
+ t.tv_nsec = tv.tv_usec * 1000;
+# endif
iTimeout = (pt->tv_nsec - t.tv_nsec) / 1000000;
iTimeout += (pt->tv_sec - t.tv_sec) * 1000;