Make "-tn" explicitly set a delta of ++n for *all* REM statements.

Also change the name of $DeltaOffset to $DeltaOverride.
This commit is contained in:
Dianne Skoll
2023-06-03 13:36:58 -04:00
parent 65561e7f34
commit e63d4be4e8
9 changed files with 55 additions and 21 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
/***************************************************************/

View File

@@ -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);

View File

@@ -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;
}
}
}

View File

@@ -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 },

View File

@@ -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

View File

@@ -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.

View File

@@ -482,7 +482,7 @@ msg [$December]%
msg [$DefaultColor]%
msg [$DefaultPrio]%
msg [$DefaultTDelta]%
msg [$DeltaOffset]%
msg [$DeltaOverride]%
msg [$DontFork]%
msg [$DontQueue]%
msg [$DontTrigAts]%