diff --git a/docs/WHATSNEW b/docs/WHATSNEW index 6c4b1de9..723ff55b 100644 --- a/docs/WHATSNEW +++ b/docs/WHATSNEW @@ -1,5 +1,10 @@ CHANGES TO REMIND +- CHANGE: The "-tn" option sets all REM statement deltas to ++n rather than + adding n to any existing REM statement's delta. Additionally, the + corresponding system variable $DeltaOffset has been renamed to + $DeltaOverride. + * VERSION 4.2 Patch 5 - 2023-04-11 - MINOR IMPROVEMENT: remind: If someone uses OMIT yyyy-mm-dd UNTIL yyyy-mm-dd diff --git a/man/remind.1.in b/man/remind.1.in index 41dc7214..13344271 100644 --- a/man/remind.1.in +++ b/man/remind.1.in @@ -222,8 +222,8 @@ regardless of the \fIdelta\fR supplied for each reminder. .TP .B \-t\fR\fIn\fR If you supply a number \fIn\fR after the \fB\-t\fR option, then -\fBRemind\fR pretends that \fIn\fR has been \fIadded\fR to each REM statement's -existing delta and triggers reminders accordingly. +\fBRemind\fR pretends that echo \fBREM\fR command has a delta +of \+\+\fIn\fR, regardles of any existing delta. .TP .B \-tz\fR If you supply the letter \fBz\fR after the \fB\-t\fR option, then diff --git a/src/dorem.c b/src/dorem.c index 6f39c51f..c99a0fee 100644 --- a/src/dorem.c +++ b/src/dorem.c @@ -1200,19 +1200,28 @@ int ShouldTriggerReminder(Trigger *t, TimeTrig *tim, int dse, int *err) /* If "infinite delta" option is chosen, always trigger future reminders */ if (InfiniteDelta || NextMode) return 1; - /* If there's a "warn" function, it overrides any deltas */ + /* If there's a "warn" function, it overrides any deltas except + * DeltaOverride*/ if (t->warn[0] != 0) { - if (DeltaOffset > 0) { - if (dse <= DSEToday + DeltaOffset) { + if (DeltaOverride > 0) { + if (dse <= DSEToday + DeltaOverride) { return 1; } } return ShouldTriggerBasedOnWarn(t, dse, err); } + /* Zero delta */ + if (DeltaOverride < 0) { + return dse == DSEToday; + } + /* Move back by delta days, if any */ - if (t->delta != NO_DELTA && DeltaOffset >= 0) { - if (t->delta < 0) + if (DeltaOverride) { + /* A positive DeltaOverride takes precedence over everything */ + dse = dse - DeltaOverride; + } else if (t->delta != NO_DELTA) { + if (t->delta < 0) dse = dse + t->delta; else { int iter = 0; @@ -1236,11 +1245,8 @@ int ShouldTriggerReminder(Trigger *t, TimeTrig *tim, int dse, int *err) } } - if (DeltaOffset < 0) { - return dse == DSEToday; - } /* Should we trigger the reminder? */ - return (dse <= DSEToday + DeltaOffset); + return (dse <= DSEToday); } /***************************************************************/ diff --git a/src/globals.h b/src/globals.h index b914c6e9..19d9bcb3 100644 --- a/src/globals.h +++ b/src/globals.h @@ -70,7 +70,7 @@ EXTERN INIT( int Hush, 0); EXTERN INIT( int NextMode, 0); EXTERN INIT( int InfiniteDelta, 0); EXTERN INIT( int DefaultTDelta, 0); -EXTERN INIT( int DeltaOffset, 0); +EXTERN INIT( int DeltaOverride, 0); EXTERN INIT( int RunDisabled, 0); EXTERN INIT( int IgnoreOnce, 0); EXTERN INIT( int SortByTime, 0); diff --git a/src/init.c b/src/init.c index a3e4ccfd..2bbb2b45 100644 --- a/src/init.c +++ b/src/init.c @@ -342,12 +342,12 @@ void InitRemind(int argc, char const *argv[]) InfiniteDelta = 1; } else { if (*arg == 'z') { - DeltaOffset = -1; + DeltaOverride = -1; arg++; } else { - PARSENUM(DeltaOffset, arg); - if (DeltaOffset < 0) { - DeltaOffset = 0; + PARSENUM(DeltaOverride, arg); + if (DeltaOverride < 0) { + DeltaOverride = 0; } } } diff --git a/src/var.c b/src/var.c index 46514af7..eb48ee6b 100644 --- a/src/var.c +++ b/src/var.c @@ -792,7 +792,7 @@ static SysVar SysVarArr[] = { {"DefaultColor", 1, SPECIAL_TYPE, default_color_func, 0, 0 }, {"DefaultPrio", 1, INT_TYPE, &DefaultPrio, 0, 9999 }, {"DefaultTDelta", 1, INT_TYPE, &DefaultTDelta, 0, 1440 }, - {"DeltaOffset", 0, INT_TYPE, &DeltaOffset, 0, 0 }, + {"DeltaOverride", 0, INT_TYPE, &DeltaOverride, 0, 0 }, {"DontFork", 0, INT_TYPE, &DontFork, 0, 0 }, {"DontQueue", 0, INT_TYPE, &DontQueue, 0, 0 }, {"DontTrigAts", 0, INT_TYPE, &DontIssueAts, 0, 0 }, diff --git a/tests/test-rem b/tests/test-rem index 5740d2e6..9916b5b0 100644 --- a/tests/test-rem +++ b/tests/test-rem @@ -408,6 +408,14 @@ TZ=Europe/Berlin ../src/remind -dxe ../tests/tz.rem >> ../tests/test.out 2>&1 # Test that banner is printed on every iteration echo "MSG Should be three banners." | ../src/remind - 2022-10-20 '*3' >> ../tests/test.out 2>&1 +# Test the -tn option +echo "REM May 23 +10 MSG Orange %b" | ../src/remind - 2023-05-21 >> ../tests/test.out 2>&1 +echo "REM May 23 +10 MSG Quux %b" | ../src/remind -t1 - 2023-05-21 >> ../tests/test.out 2>&1 +echo "REM May 23 +10 MSG Cabbage %b" | ../src/remind -t2 - 2023-05-21 >> ../tests/test.out 2>&1 +echo "REM May 23 MSG Banana %b" | ../src/remind - 2023-05-21 >> ../tests/test.out 2>&1 +echo "REM May 23 MSG Carrot %b" | ../src/remind -t1 - 2023-05-21 >> ../tests/test.out 2>&1 +echo "REM May 23 MSG Apple %b" | ../src/remind -t2 - 2023-05-21 >> ../tests/test.out 2>&1 + # Test the -tz option echo "REM May 22 +10 MSG Foo %b" | ../src/remind - 2023-05-21 >> ../tests/test.out 2>&1 echo "REM May 22 +10 MSG Bar %b" | ../src/remind -tz - 2023-05-21 >> ../tests/test.out 2>&1 diff --git a/tests/test.cmp b/tests/test.cmp index adae26ca..63f43af9 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -2756,7 +2756,7 @@ Variable Value $DefaultColor "-1 -1 -1" $DefaultPrio 5000 [0, 9999] $DefaultTDelta 0 [0, 1440] - $DeltaOffset 0 + $DeltaOverride 0 $DontFork 0 $DontQueue 1 $DontTrigAts 0 @@ -2883,9 +2883,9 @@ msg [$DefaultTDelta]% ../tests/test.rem(484): Trig = Saturday, 16 February, 1991 $DefaultTDelta => 0 0 -msg [$DeltaOffset]% +msg [$DeltaOverride]% ../tests/test.rem(485): Trig = Saturday, 16 February, 1991 -$DeltaOffset => 0 +$DeltaOverride => 0 0 msg [$DontFork]% ../tests/test.rem(486): Trig = Saturday, 16 February, 1991 @@ -10545,6 +10545,21 @@ Should be three banners. Reminders for Sunday, 21st May, 2023: +Orange in 2 days' time + +No reminders. +Reminders for Sunday, 21st May, 2023: + +Cabbage in 2 days' time + +No reminders. +No reminders. +Reminders for Sunday, 21st May, 2023: + +Apple in 2 days' time + +Reminders for Sunday, 21st May, 2023: + Foo tomorrow No reminders. diff --git a/tests/test.rem b/tests/test.rem index 833846d6..08265ee5 100644 --- a/tests/test.rem +++ b/tests/test.rem @@ -482,7 +482,7 @@ msg [$December]% msg [$DefaultColor]% msg [$DefaultPrio]% msg [$DefaultTDelta]% -msg [$DeltaOffset]% +msg [$DeltaOverride]% msg [$DontFork]% msg [$DontQueue]% msg [$DontTrigAts]%