diff --git a/src/calendar.c b/src/calendar.c index 677400b8..e97f0da0 100644 --- a/src/calendar.c +++ b/src/calendar.c @@ -2080,7 +2080,7 @@ static int DoCalRem(ParsePtr p, int col) } /* Adjust trigger date/time to time zone */ - dse = AdjustTriggerForTimeZone(&trig, dse, &tim); + dse = AdjustTriggerForTimeZone(&trig, dse, &tim, 1); /* Add to global OMITs if so indicated */ if (trig.addomit) { diff --git a/src/dorem.c b/src/dorem.c index 3e153231..be52f496 100644 --- a/src/dorem.c +++ b/src/dorem.c @@ -35,7 +35,7 @@ static int ComputeTrigDuration(TimeTrig const *t); static int CalledEnterTimezone = 0; -int AdjustTriggerForTimeZone(Trigger *trig, int dse, TimeTrig *tim) +int AdjustTriggerForTimeZone(Trigger *trig, int dse, TimeTrig *tim, int debug_ok) { int y, m, d, hour, minute; int r; @@ -59,7 +59,7 @@ int AdjustTriggerForTimeZone(Trigger *trig, int dse, TimeTrig *tim) /* Adjust eventstart also */ trig->eventstart = dse * MINUTES_PER_DAY + tim->ttime; SaveAllTriggerInfo(trig, tim, dse, tim->ttime, 1); - if (DebugFlag & DB_PRTTRIG) { + if (debug_ok && (DebugFlag & DB_PRTTRIG)) { fprintf(ErrFp, "%s(%s): Trig(tz_adj %s) = %s, %d %s, %d AT %02d:%02d", GetCurrentFilename(), line_range(LineNoStart, LineNo), trig->tz, get_day_name(dse % 7), tm.tm_mday, get_month_name(tm.tm_mon), @@ -534,7 +534,7 @@ int DoRem(ParsePtr p) } /* Adjust trigger date/time to time zone */ - dse = AdjustTriggerForTimeZone(&trig, dse, &tim); + dse = AdjustTriggerForTimeZone(&trig, dse, &tim, 1); /* Add to global OMITs if so indicated */ if (trig.addomit) { diff --git a/src/funcs.c b/src/funcs.c index 20f78e46..39939a59 100644 --- a/src/funcs.c +++ b/src/funcs.c @@ -4621,7 +4621,7 @@ FEvalTrig(func_info *info) RetVal.type = DATE_TYPE; RETVAL = dse; } else { - dse = AdjustTriggerForTimeZone(&trig, dse, &tim); + dse = AdjustTriggerForTimeZone(&trig, dse, &tim, 1); RetVal.type = DATETIME_TYPE; RETVAL = (MINUTES_PER_DAY * dse) + tim.ttime; } @@ -4736,7 +4736,7 @@ FTrig(func_info *info) FreeTrig(&trig); continue; } - dse = AdjustTriggerForTimeZone(&trig, dse, &tim); + dse = AdjustTriggerForTimeZone(&trig, dse, &tim, 1); if (ShouldTriggerReminder(&trig, &tim, dse, &r)) { LastTrig = dse; RETVAL = dse; diff --git a/src/main.c b/src/main.c index 1362108e..a8033ab4 100644 --- a/src/main.c +++ b/src/main.c @@ -1307,7 +1307,7 @@ int DoIfTrig(ParsePtr p) push_if(0, 0); } else { if (dse >= 0) { - dse = AdjustTriggerForTimeZone(&trig, dse, &tim); + dse = AdjustTriggerForTimeZone(&trig, dse, &tim, 1); } if (ShouldTriggerReminder(&trig, &tim, dse, &err)) { push_if(1, 0); diff --git a/src/protos.h b/src/protos.h index b700f4e3..76f9522a 100644 --- a/src/protos.h +++ b/src/protos.h @@ -300,7 +300,7 @@ int system_to_stderr(char const *cmd); int system1(char const *cmd); int tz_set_tz (char const *tz); int tz_convert(int year, int month, int day, int hour, int minute, char const *src_tz, char const *tgt_tz, struct tm *tm); -int AdjustTriggerForTimeZone(Trigger *trig, int dse, TimeTrig *tim); +int AdjustTriggerForTimeZone(Trigger *trig, int dse, TimeTrig *tim, int debug_ok); void EnterTimezone(char const *tz); void ExitTimezone(char const *tz); int warning_level(char const *which); diff --git a/src/trigger.c b/src/trigger.c index e0916804..36de4e3d 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -623,7 +623,7 @@ int ComputeTriggerNoAdjustDuration(int today, Trigger *trig, TimeTrig const *tim int new_result; int force_retry = 0; ExitTimezone(trig->tz); - new_result = AdjustTriggerForTimeZone(trig, result, ©); + new_result = AdjustTriggerForTimeZone(trig, result, ©, 0); if (trig->scanfrom == NO_SCANFROM && new_result < DSEToday) { force_retry = 1; } diff --git a/tests/tz.cmp b/tests/tz.cmp index a6a24f74..73633f7f 100644 --- a/tests/tz.cmp +++ b/tests/tz.cmp @@ -54,26 +54,18 @@ evaltrig("Wednesday at 23:00 TZ Europe/Amsterdam") => 2025-09-03@17:00 evaltrig("Wednesday at 23:00 TZ America/Los_Angele"...) => 2025-09-04@02:00 evaltrig("Wednesday TZ Europe/Amsterdam") => TZ specified for non-timed reminder -stdin-(11): evaltrig(): TZ specified for non-timed reminder -trig("Mon at 00:00 TZ Australia/Sydney", "Tue at 00:00 TZ America/Toronto", "Wed at 00:00 TZ Europe/Amsterdam", "Thu at 00:00 TZ America/Los_Angeles", "Fri at 00:00 TZ Australia/Sydney", "Sat at 00:00 TZ Australia/Sydney", "Sun at 00:00 TZ Australia/Sydney", "at 14:42") => -stdin-(14:21): Trig(tz_adj Australia/Sydney) = Sunday, 31 August, 2025 AT 10:00 +trig("Mon at 00:00 TZ Australia/Sydney", "Tue at 00:00 TZ America/Toronto", "Wed at 00:00 TZ Europe/Amsterdam", "Thu at 00:00 TZ America/Los_Angeles", "Fri at 00:00 TZ Australia/Sydney", "Sat at 00:00 TZ Australia/Sydney", "Sun at 00:00 TZ Australia/Sydney", "at 14:42") => -stdin-(14:21): Trig = Monday, 8 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj Australia/Sydney) = Sunday, 7 September, 2025 AT 10:00 --stdin-(14:21): Trig = Monday, 8 September, 2025 AT 00:00 --stdin-(14:21): Trig(tz_adj Australia/Sydney) = Sunday, 7 September, 2025 AT 10:00 --stdin-(14:21): Trig(tz_adj America/Toronto) = Tuesday, 2 September, 2025 AT 00:00 -stdin-(14:21): Trig = Tuesday, 2 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj America/Toronto) = Tuesday, 2 September, 2025 AT 00:00 --stdin-(14:21): Trig(tz_adj Europe/Amsterdam) = Tuesday, 2 September, 2025 AT 18:00 -stdin-(14:21): Trig = Wednesday, 3 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj Europe/Amsterdam) = Tuesday, 2 September, 2025 AT 18:00 --stdin-(14:21): Trig(tz_adj America/Los_Angeles) = Thursday, 4 September, 2025 AT 03:00 -stdin-(14:21): Trig = Thursday, 4 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj America/Los_Angeles) = Thursday, 4 September, 2025 AT 03:00 --stdin-(14:21): Trig(tz_adj Australia/Sydney) = Thursday, 4 September, 2025 AT 10:00 -stdin-(14:21): Trig = Friday, 5 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj Australia/Sydney) = Thursday, 4 September, 2025 AT 10:00 --stdin-(14:21): Trig(tz_adj Australia/Sydney) = Friday, 5 September, 2025 AT 10:00 -stdin-(14:21): Trig = Saturday, 6 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj Australia/Sydney) = Friday, 5 September, 2025 AT 10:00 --stdin-(14:21): Trig(tz_adj Australia/Sydney) = Saturday, 6 September, 2025 AT 10:00 -stdin-(14:21): Trig = Sunday, 7 September, 2025 AT 00:00 -stdin-(14:21): Trig(tz_adj Australia/Sydney) = Saturday, 6 September, 2025 AT 10:00 -stdin-(14:21): Trig = Monday, 1 September, 2025 AT 14:42