diff --git a/src/dorem.c b/src/dorem.c index 96a64e28..21532ad0 100644 --- a/src/dorem.c +++ b/src/dorem.c @@ -13,7 +13,7 @@ /***************************************************************/ #include "config.h" -static char const RCSID[] = "$Id: dorem.c,v 1.18 2007-07-08 18:42:13 dfs Exp $"; +static char const RCSID[] = "$Id: dorem.c,v 1.19 2007-07-12 23:36:03 dfs Exp $"; #include #include @@ -33,7 +33,7 @@ static char const DontEscapeMe[] = static int ParseTimeTrig (ParsePtr s, TimeTrig *tim); static int ParseLocalOmit (ParsePtr s, Trigger *t); -static int ParseScanFrom (ParsePtr s, Trigger *t); +static int ParseScanFrom (ParsePtr s, Trigger *t, int type); static int ParsePriority (ParsePtr s, Trigger *t); static int ParseUntil (ParsePtr s, Trigger *t); static int ShouldTriggerBasedOnWarn (Trigger *t, int jul); @@ -193,7 +193,7 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim) case T_Scanfrom: DBufFree(&buf); - r=ParseScanFrom(s, trig); + r=ParseScanFrom(s, trig, tok.val); if (r) return r; break; @@ -463,10 +463,10 @@ static int ParseUntil(ParsePtr s, Trigger *t) /***************************************************************/ /* */ -/* ParseScanFrom - parse the SCANFROM portion of a reminder */ +/* ParseScanFrom - parse the FROM/SCANFROM portion */ /* */ /***************************************************************/ -static int ParseScanFrom(ParsePtr s, Trigger *t) +static int ParseScanFrom(ParsePtr s, Trigger *t, int type) { int y = NO_YR, m = NO_MON, @@ -522,6 +522,12 @@ static int ParseScanFrom(ParsePtr s, Trigger *t) return E_BAD_DATE; } t->scanfrom = Julian(y, m, d); + if (type == FROM_TYPE) { + if (t->scanfrom < JulianToday) { + t->scanfrom = JulianToday; + } + } + PushToken(DBufValue(&buf), s); DBufFree(&buf); return OK; diff --git a/src/token.c b/src/token.c index edb92e08..624e9c8d 100644 --- a/src/token.c +++ b/src/token.c @@ -12,7 +12,7 @@ /***************************************************************/ #include "config.h" -static char const RCSID[] = "$Id: token.c,v 1.14 2007-07-01 20:12:15 dfs Exp $"; +static char const RCSID[] = "$Id: token.c,v 1.15 2007-07-12 23:36:03 dfs Exp $"; #include #include @@ -61,6 +61,7 @@ Token TokArray[] = { { "february", 3, T_Month, 1 }, { "flush", 5, T_Flush, 0 }, { "friday", 3, T_WkDay, 4 }, + { "from", 4, T_Scanfrom, FROM_TYPE }, { "fset", 4, T_Fset, 0 }, { "if", 2, T_If, 0 }, { "iftrig", 6, T_IfTrig, 0 }, @@ -87,7 +88,7 @@ Token TokArray[] = { { "run", 3, T_RemType, RUN_TYPE }, { "satisfy", 7, T_RemType, SAT_TYPE }, { "saturday", 3, T_WkDay, 5 }, - { "scanfrom", 4, T_Scanfrom, 0 }, + { "scanfrom", 4, T_Scanfrom, SCANFROM_TYPE }, { "sched", 5, T_Sched, 0 }, { "september", 3, T_Month, 8 }, { "set", 3, T_Set, 0 }, diff --git a/src/types.h b/src/types.h index cd837686..abc42b28 100644 --- a/src/types.h +++ b/src/types.h @@ -10,7 +10,7 @@ /* */ /***************************************************************/ -/* $Id: types.h,v 1.8 2007-07-12 03:14:36 dfs Exp $ */ +/* $Id: types.h,v 1.9 2007-07-12 23:36:03 dfs Exp $ */ #include #include "dynbuf.h" @@ -189,3 +189,7 @@ typedef struct { #define SORT_NONE 0 #define SORT_ASCEND 1 #define SORT_DESCEND 2 + +/* Flags for FROM / SCANFROM */ +#define SCANFROM_TYPE 0 +#define FROM_TYPE 1