diff --git a/src/dosubst.c b/src/dosubst.c index 36f07510..b0d271a1 100644 --- a/src/dosubst.c +++ b/src/dosubst.c @@ -57,6 +57,8 @@ check_subst_args(UserFunc *f, int n) int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig const *tt, int dse, int mode) { int diff = dse - DSEToday; + int rdiff = dse - RealToday; + int bangdiff = diff; int curtime = MinutesPastMidnight(0); int err, done; int c; @@ -682,8 +684,19 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig const *tt, int break; case '!': - snprintf(s, sizeof(s), "%s", (tdiff >= 0 ? tr("is") : - tr("was"))); + if (altmode) { + bangdiff = rdiff; + } else { + bangdiff = diff; + } + if (bangdiff > 0) { + snprintf(s, sizeof(s), "%s", tr("is")); + } else if (bangdiff < 0) { + snprintf(s, sizeof(s), "%s", tr("was")); + } else { + snprintf(s, sizeof(s), "%s", (tdiff >= 0 ? tr("is") : + tr("was"))); + } SHIP_OUT(s); break; diff --git a/tests/tstlang.rem b/tests/tstlang.rem index 897a4567..75afce1c 100644 --- a/tests/tstlang.rem +++ b/tests/tstlang.rem @@ -38,7 +38,7 @@ endif REM MSG Language: %(LANGID) # Set up a few useful definitions -fset show(x) "%%" + x + " yields: " + char(34) + "%" + x + char(34) + "% and %%*" + x + " yields: " + char(34) + "%*" + x + char(34) + "%" +fset show(x) iif(x == "!", "%%" + x + " yields: " + char(34) + "%" + x + char(34), "%%" + x + " yields: " + char(34) + "%" + x + char(34) + "% and %%*" + x + " yields: " + char(34) + "%*" + x + char(34) + "%") set a trigger(today()+2) + " ++2" set l language() set tt now()+134