From 0e7a232b4fec24afc880a7f1c79f54103b4a694f Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Tue, 27 Apr 2021 19:02:07 -0400 Subject: Interpret -D, -a, -b as local time with -L --- scoop.1 | 10 ++++++++-- scoop.c | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/scoop.1 b/scoop.1 index 51ad6c7..1a66040 100644 --- a/scoop.1 +++ b/scoop.1 @@ -1,4 +1,4 @@ -.Dd May 20, 2020 +.Dd April 27, 2021 .Dt SCOOP 1 .Os . @@ -68,7 +68,13 @@ see The default format is ISO 8601. . .It Fl L -Output timestamps in local time. +Output timestamps in local time +and interpret timestamps in +.Fl D , +.Fl a +and +.Fl b +as local time. . .It Fl N Ar network Match events from diff --git a/scoop.c b/scoop.c index 95fb794..6c2957b 100644 --- a/scoop.c +++ b/scoop.c @@ -364,9 +364,19 @@ int main(int argc, char *argv[]) { append( where, SQL( - AND events.time >= strftime('%s', :date, 'start of day') - AND events.time - < strftime('%s', :date, 'start of day', '+1 day') + AND events.time >= + CASE WHEN :local THEN + strftime('%s', :date, 'start of day', 'utc') + ELSE + strftime('%s', :date, 'start of day') + END + AND events.time < + CASE WHEN :local THEN + strftime('%s', :date, 'start of day', '+1 day', + 'utc') + ELSE + strftime('%s', :date, 'start of day', '+1 day') + END ) ); binds[n++] = Bind(":date", optarg, 0); @@ -389,11 +399,29 @@ int main(int argc, char *argv[]) { binds[n++] = Bind(":target", optarg, 0); } break; case 'a': { - append(where, SQL(AND events.time >= strftime('%s', :after))); + append( + where, + SQL( + AND events.time >= + CASE WHEN :local + THEN strftime('%s', :after, 'utc') + ELSE strftime('%s', :after) + END + ) + ); binds[n++] = Bind(":after", optarg, 0); } break; case 'b': { - append(where, SQL(AND events.time < strftime('%s', :before))); + append( + where, + SQL( + AND events.time < + CASE WHEN :local + THEN strftime('%s', :before, 'utc') + ELSE strftime('%s', :before) + END + ) + ); binds[n++] = Bind(":before", optarg, 0); } break; case 'c': { -- cgit 1.4.1