From 2b320e6c78ef3b1165b120865d6710581d6c3041 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 29 Aug 2017 07:48:15 -0400 Subject: [PATCH] 2017-08-29 Fred Gleason * Added '--first-time=' and '--last-time=' switches to rdrender(1). * Changed the behavior of the '--last-line=' switch to be non-inclusive. --- ChangeLog | 3 +++ utils/rdrender/mainloop.cpp | 31 ++++++++++++++++++++++++++++++- utils/rdrender/rdrender.cpp | 18 +++++++++++++++++- utils/rdrender/rdrender.h | 2 ++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5b7b057..7e144526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15972,3 +15972,6 @@ * Added a rdrender(1) man page. 2017-08-28 Fred Gleason * Added '--first-line=' and '--last-line=' switches to rdrender(1). +2017-08-29 Fred Gleason + * Added '--first-time=' and '--last-time=' switches to rdrender(1). + * Changed the behavior of the '--last-line=' switch to be non-inclusive. diff --git a/utils/rdrender/mainloop.cpp b/utils/rdrender/mainloop.cpp index bcba2e14..fa543fb2 100644 --- a/utils/rdrender/mainloop.cpp +++ b/utils/rdrender/mainloop.cpp @@ -67,17 +67,46 @@ int MainObject::MainLoop() for(int i=0;isize();i++) { lls.push_back(new LogLine(log_event->logLine(i),render_user,render_station, render_system,render_config,render_channels)); + if((!render_first_time.isNull())&& + (lls.back()->timeType()==RDLogLine::Hard)&& + (render_first_line==-1)&& + (lls.back()->startTime(RDLogLine::Imported)==render_first_time)) { + render_first_line=i; + } + if((!render_last_time.isNull())&& + (lls.back()->timeType()==RDLogLine::Hard)&& + (render_last_line==-1)&& + (lls.back()->startTime(RDLogLine::Imported)==render_last_time)) { + render_last_line=i; + } + } + QString time_errs=""; + if((!render_first_time.isNull())&&(render_first_line==-1)) { + time_errs+="--first-time event not found"; + } + if((!render_last_time.isNull())&&(render_last_line==-1)) { + if(!time_errs.isEmpty()) { + time_errs+=", "; + } + time_errs+="--last-time event not found"; + } + if(!time_errs.isEmpty()) { + fprintf(stderr,"rdrender: %s\n",(const char *)time_errs); + return 1; } lls.push_back(new LogLine(new RDLogLine(),render_user,render_station, render_system,render_config,render_channels)); lls.back()->setTransType(RDLogLine::Play); + if((!render_first_time.isNull())&&(render_first_line==-1)) { + render_first_line=log_event->size(); + } // // Iterate through it // for(unsigned i=0;i=(int)i))) { + ((render_last_line==-1)||(render_last_line>(int)i))) { if(lls.at(i)->transType()==RDLogLine::Stop) { Verbose(current_time,i,"STOP ",lls.at(i)->summary()); warnings+= diff --git a/utils/rdrender/rdrender.cpp b/utils/rdrender/rdrender.cpp index 44d85f56..2403e46d 100644 --- a/utils/rdrender/rdrender.cpp +++ b/utils/rdrender/rdrender.cpp @@ -82,6 +82,22 @@ MainObject::MainObject(QObject *parent) } cmd->setProcessed(i,true); } + if(cmd->key(i)=="--first-time") { + render_first_time=QTime::fromString(cmd->value(i)); + if(!render_first_time.isValid()) { + fprintf(stderr,"rdrender: invalid --first-time argument\n"); + exit(1); + } + cmd->setProcessed(i,true); + } + if(cmd->key(i)=="--last-time") { + render_last_time=QTime::fromString(cmd->value(i)); + if(!render_last_time.isValid()) { + fprintf(stderr,"rdrender: invalid --last-time argument\n"); + exit(1); + } + cmd->setProcessed(i,true); + } if(cmd->key(i)=="--last-line") { render_last_line=cmd->value(i).toInt(&ok); if((!ok)||(render_last_line<0)) { @@ -104,7 +120,7 @@ MainObject::MainObject(QObject *parent) } } if((render_last_line>=0)&&(render_first_line>=0)&& - (render_last_line