From e1e372156183e032418401a7e506bce56acac758 Mon Sep 17 00:00:00 2001 From: bert hubert Date: Mon, 13 Jan 2020 08:31:01 +0100 Subject: [PATCH] fix up compilation on raspberry, caught by CTF --- navcat.cc | 12 +++++++----- navnexus.cc | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/navcat.cc b/navcat.cc index 06c0d01..bffd384 100644 --- a/navcat.cc +++ b/navcat.cc @@ -98,7 +98,9 @@ static size_t writen2(int fd, const void *buf, size_t count) void sendProtobuf(string_view dir, time_t startTime, time_t stopTime=0) { - pair start(startTime, 0); + timespec start; + start.tv_sec = startTime; + start.tv_nsec = 0; // so we have a ton of files, and internally these are not ordered map fpos; @@ -107,7 +109,7 @@ void sendProtobuf(string_view dir, time_t startTime, time_t stopTime=0) auto srcs = getSources(dir); rnmms.clear(); for(const auto& src: srcs) { - string fname = getPath(dir, start.first, src); + string fname = getPath(dir, start.tv_sec, src); FILE* fp = fopen(fname.c_str(), "r"); if(!fp) continue; @@ -124,7 +126,7 @@ void sendProtobuf(string_view dir, time_t startTime, time_t stopTime=0) struct timespec ts; while(getRawNMM(fp, ts, msg, offset)) { // don't drop data that is only 5 seconds too old - if(make_pair(ts.tv_sec + 5, ts.tv_nsec) >= start) { + if(make_pair(ts.tv_sec + 5, ts.tv_nsec) >= make_pair(start.tv_sec, start.tv_nsec)) { rnmms.push_back({ts, msg}); } ++looked; @@ -150,8 +152,8 @@ void sendProtobuf(string_view dir, time_t startTime, time_t stopTime=0) //fwrite(buf.c_str(), 1, buf.size(), stdout); writen2(1, buf.c_str(), buf.size()); } - if(3600 + start.first - (start.first%3600) < stopTime) - start.first = 3600 + start.first - (start.first%3600); + if(3600 + start.tv_sec - (start.tv_sec%3600) < stopTime) + start.tv_sec = 3600 + start.tv_sec - (start.tv_sec%3600); else { break; } diff --git a/navnexus.cc b/navnexus.cc index 8fd8e67..f8ef6ee 100644 --- a/navnexus.cc +++ b/navnexus.cc @@ -60,7 +60,9 @@ try { cerr<<"New downstream client "< start(startTime, 0); + timespec start; + start.tv_sec = startTime; + start.tv_nsec = 0; // so we have a ton of files, and internally these are not ordered map fpos; @@ -69,7 +71,7 @@ try auto srcs = getSources(); rnmms.clear(); for(const auto& src: srcs) { - string fname = getPath(g_storage, start.first, src); + string fname = getPath(g_storage, start.tv_sec, src); int fd = open(fname.c_str(), O_RDONLY); if(fd < 0) continue; @@ -88,7 +90,7 @@ try while(getRawNMM(fd, ts, msg, offset)) { // don't drop data that is only 5 seconds too old - if(make_pair(ts.tv_sec + 5, ts.tv_nsec) >= start) { + if(make_pair(ts.tv_sec + 5, ts.tv_nsec) >= make_pair(start.tv_sec, start.tv_nsec)) { rnmms.push_back({ts, msg}); } ++looked; @@ -114,8 +116,8 @@ try SWriten(clientfd, buf); } cout<<"Done"<first.tv_sec, rnmms.rbegin()->first.tv_nsec};