$NetBSD: patch-src_zm_logger_cpp,v 1.5 2018/07/14 15:03:57 gdt Exp $

Use libgen.h for basename.

Kludge around const for basename.

If the system has syscall() but not SYS_gettid [E.g. NetBSD], don't attempt
to use SYS_gettid.

Fix time types (sizes).

--- src/zm_logger.cpp.orig	2016-02-03 18:40:30.000000000 +0000
+++ src/zm_logger.cpp
@@ -33,9 +33,11 @@
 #include <errno.h>
 #ifdef __FreeBSD__
 #include <sys/thr.h>
-#include <libgen.h>
 #endif
 
+/* POSIX specifies libgen.h for basename() */
+#include <libgen.h>
+
 bool Logger::smInitialised = false;
 Logger *Logger::smInstance = 0;
 
@@ -504,7 +506,8 @@ void Logger::logPrint( bool hex, const c
         va_list         argPtr;
         struct timeval  timeVal;
 
-        const char * const file = basename(filepath);
+	/* \todo Verify that the cast is safe. */
+        const char * const file = basename((char *)filepath);
         
         if ( level < PANIC || level > DEBUG9 )
             Panic( "Invalid logger level %d", level );
@@ -520,14 +523,14 @@ void Logger::logPrint( bool hex, const c
 
             subtractTime( &timeVal, &logStart );
 
-            snprintf( timeString, sizeof(timeString), "%ld.%03ld", timeVal.tv_sec, timeVal.tv_usec/1000 );
+            snprintf( timeString, sizeof(timeString), "%jd.%03ld", (intmax_t) timeVal.tv_sec, timeVal.tv_usec/1000 );
         }
         else
         {
     #endif
             char *timePtr = timeString;
             timePtr += strftime( timePtr, sizeof(timeString), "%x %H:%M:%S", localtime(&timeVal.tv_sec) );
-            snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06ld", timeVal.tv_usec );
+            snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06jd", (intmax_t) timeVal.tv_usec );
     #if 0
         }
     #endif
@@ -604,7 +607,7 @@ void Logger::logPrint( bool hex, const c
 
             mysql_real_escape_string( &mDbConnection, escapedString, syslogStart, strlen(syslogStart) );
 			
-            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, %d, '%s', '%s', '%s', %d )", timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
+            snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %jd.%06jd, '%s', %d, %d, %d, '%s', '%s', '%s', %d )", (intmax_t) timeVal.tv_sec, (intmax_t) timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
             if ( mysql_query( &mDbConnection, sql ) )
             {
                 databaseLevel( NOLOG );
