$OpenBSD$

fix build on systems without sendfile()
fix runtime issues on systems with long long time_t (backwards compatibly)

--- src/zm_event.cpp.orig	Wed Feb  3 19:30:55 2016
+++ src/zm_event.cpp	Sat Apr  9 11:32:12 2016
@@ -36,11 +36,13 @@
 #include "zm_event.h"
 #include "zm_monitor.h"
 
+#if HAVE_SYS_SENDFILE_H
 // sendfile tricks
 extern "C"
 {
 #include "zm_sendfile.h"
 }
+#endif
 
 #include "zmf.h"
 
@@ -80,7 +82,7 @@ Event::Event( Monitor *p_monitor, struct timeval p_sta
     static char sql[ZM_SQL_MED_BUFSIZ];
 
     struct tm *stime = localtime( &start_time.tv_sec );
-    snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s' )", monitor->Id(), start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
+    snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %lld ), %d, %d, '%s', '%s' )", monitor->Id(), (long long)start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
     if ( mysql_query( &dbconn, sql ) )
     {
         Error( "Can't insert event: %s", mysql_error( &dbconn ) );
@@ -178,7 +180,7 @@ Event::~Event()
 
         Debug( 1, "Adding closing frame %d to DB", frames );
         static char sql[ZM_SQL_SML_BUFSIZ];
-        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %ld ), %s%ld.%02ld )", id, frames, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
+        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %lld ), %s%ld.%02ld )", id, frames, (long long)end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
         if ( mysql_query( &dbconn, sql ) )
         {
             Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
@@ -191,7 +193,7 @@ Event::~Event()
     struct DeltaTimeval delta_time;
     DELTA_TIMEVAL( delta_time, end_time, start_time, DT_PREC_2 );
 
-    snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %ld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d where Id = %d", monitor->EventPrefix(), id, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, (int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
+    snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %lld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d where Id = %d", monitor->EventPrefix(), id, (long long)end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, (int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
     if ( mysql_query( &dbconn, sql ) )
     {
         Error( "Can't update event: %s", mysql_error( &dbconn ) );
@@ -522,7 +524,7 @@ void Event::AddFramesInternal( int n_frames, int start
         DELTA_TIMEVAL( delta_time, *(timestamps[i]), start_time, DT_PREC_2 );
 
         int sql_len = strlen(sql);
-        snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%ld), %s%ld.%02ld ), ", id, frames, timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
+        snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%lld), %s%ld.%02ld ), ", id, frames, (long long)timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
 
         frameCount++;
     }
@@ -573,7 +575,7 @@ void Event::AddFrame( Image *image, struct timeval tim
 
         Debug( 1, "Adding frame %d of type \"%s\" to DB", frames, frame_type );
         static char sql[ZM_SQL_MED_BUFSIZ];
-        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type, timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
+        snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %lld ), %s%ld.%02ld, %d )", id, frames, frame_type, (long long)timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
         if ( mysql_query( &dbconn, sql ) )
         {
             Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
@@ -661,7 +663,7 @@ bool EventStream::loadInitialEventData( int monitor_id
 {
     static char sql[ZM_SQL_SML_BUFSIZ];
 
-    snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %ld order by Id asc limit 1", monitor_id, event_time );
+    snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %lld order by Id asc limit 1", monitor_id, (long long)event_time );
 
     if ( mysql_query( &dbconn, sql ) )
     {
