Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package remind for openSUSE:Factory checked 
in at 2022-08-10 17:14:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/remind (Old)
 and      /work/SRC/openSUSE:Factory/.remind.new.1521 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "remind"

Wed Aug 10 17:14:34 2022 rev:27 rq:994207 version:4.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/remind/remind.changes    2022-06-12 
17:43:20.250501764 +0200
+++ /work/SRC/openSUSE:Factory/.remind.new.1521/remind.changes  2022-08-10 
17:15:43.414087542 +0200
@@ -1,0 +2,19 @@
+Tue Aug  2 21:54:06 UTC 2022 - Detlef Steuer <detlef.ste...@gmx.de>
+
+- VERSION 4.0 Patch 2 - 2022-08-02
+
+- IMPROVEMENT: remind: Allow more forms of OMIT as per Ian D. Allen!'s request:
+
+               OMIT Month [THROUGH Month]
+               OMIT Day Month [THROUGH Day Month]
+               OMIT Day Month Year [THROUGH Day Month Year]
+
+- BUG FIX: Make $T behave as documented, exactly like trigdate().  $T would
+  return '1989-12-31' rather than 0 if the trigger date was not valid.
+
+- BUG FIX: TkRemind: Fix resizing bug for a calendar with 6 rows.
+
+- DOCUMENTATION IMPROVEMENT: Improve TkRemind documentation; document use
+  of inotifywait if available. 
+
+-------------------------------------------------------------------

Old:
----
  remind-04.00.01.tar.gz

New:
----
  remind-04.00.02.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ remind.spec ++++++
--- /var/tmp/diff_new_pack.5TAr6Y/_old  2022-08-10 17:15:44.074089265 +0200
+++ /var/tmp/diff_new_pack.5TAr6Y/_new  2022-08-10 17:15:44.078089275 +0200
@@ -17,9 +17,9 @@
 
 
 Name:           remind
-Version:        4.0.1
+Version:        4.0.2
 Release:        0
-%define tar_version 04.00.01
+%define tar_version 04.00.02
 Summary:        A sophisticated calendar and alarm program
 License:        GPL-2.0-only
 Group:          Productivity/Office/Organizers

++++++ remind-04.00.01.tar.gz -> remind-04.00.02.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/.github/README.md 
new/remind-04.00.02/.github/README.md
--- old/remind-04.00.01/.github/README.md       1970-01-01 01:00:00.000000000 
+0100
+++ new/remind-04.00.02/.github/README.md       2022-08-02 20:58:15.000000000 
+0200
@@ -0,0 +1,7 @@
+# Remind has moved
+
+For various reasons, I have decided to move Remind off GitHub.  This repo
+will be archived.  To create merge requests or issues, please visit
+Remind's new home at https://salsa.debian.org/dskoll/remind
+
+-- Dianne Skoll
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/configure 
new/remind-04.00.02/configure
--- old/remind-04.00.01/configure       2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/configure       2022-08-02 20:58:15.000000000 +0200
@@ -4006,7 +4006,7 @@
 fi
 done
 
-VERSION=04.00.01
+VERSION=04.00.02
 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/configure.in 
new/remind-04.00.02/configure.in
--- old/remind-04.00.01/configure.in    2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/configure.in    2022-08-02 20:58:15.000000000 +0200
@@ -65,7 +65,7 @@
 fi
 
 AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale initgroups)
-VERSION=04.00.01
+VERSION=04.00.02
 AC_SUBST(VERSION)
 AC_SUBST(PERL)
 AC_SUBST(PERLARTIFACTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/docs/WHATSNEW 
new/remind-04.00.02/docs/WHATSNEW
--- old/remind-04.00.01/docs/WHATSNEW   2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/docs/WHATSNEW   2022-08-02 20:58:15.000000000 +0200
@@ -1,5 +1,21 @@
 CHANGES TO REMIND
 
+* VERSION 4.0 Patch 2 - 2022-08-02
+
+- IMPROVEMENT: remind: Allow more forms of OMIT as per Ian D. Allen!'s request:
+
+               OMIT Month [THROUGH Month]
+               OMIT Day Month [THROUGH Day Month]
+               OMIT Day Month Year [THROUGH Day Month Year]
+
+- BUG FIX: Make $T behave as documented, exactly like trigdate().  $T would
+  return '1989-12-31' rather than 0 if the trigger date was not valid.
+
+- BUG FIX: TkRemind: Fix resizing bug for a calendar with 6 rows.
+
+- DOCUMENTATION IMPROVEMENT: Improve TkRemind documentation; document use
+  of inotifywait if available.
+
 * VERSION 4.0 Patch 1 - 2022-06-03
 
 - IMPROVEMENT: Add $SuppressLRM system variable to suppress the UTF-8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/man/remind.1 
new/remind-04.00.02/man/remind.1
--- old/remind-04.00.01/man/remind.1    2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/man/remind.1    2022-08-02 20:58:15.000000000 +0200
@@ -1532,11 +1532,11 @@
 \fBOMIT\fR is a command in its own right.  Its syntax is:
 .PP
 .RS
-\fBOMIT\fR \fIday\fR \fImonth\fR [\fIyear\fR]
+\fBOMIT\fR [\fIday\fR] \fImonth\fR [\fIyear\fR]
 .PP
 or:
 .PP
-\fBOMIT\fR \fIday1\fR \fImonth1\fR \fIyear1\fR \fBTHROUGH\fR \fIday2\fR 
\fImonth2\fR \fIyear2\fR
+\fBOMIT\fR [\fIday1\fR] \fImonth1\fR [\fIyear1\fR] \fBTHROUGH\fR [\fIday2\fR] 
\fImonth2\fR [\fIyear2\fR]
 .RE
 .PP
 The \fBOMIT\fR command is used to "globally" omit certain days
@@ -1545,8 +1545,13 @@
 "\-\-" and "\+\+" forms.  Some examples:
 .PP
 .nf
-       OMIT 1 Jan
-       OMIT 7 Sep 1992
+    OMIT 1 Jan
+    OMIT 7 Sep 1992
+    OMIT 15 Jan THROUGH 14 Feb
+    OMIT May     # Equivalent to OMIT May 1 THROUGH May 31
+    OMIT 25 Dec THROUGH 4 Jan
+    OMIT 2023-05-03 THROUGH 2023-05-12
+    OMIT Jun THROUGH July  # Equivalent to OMIT Jun 1 THROUGH July 31
 .fi
 .PP
 The first example specifies a holiday that occurs on the same date each
@@ -1578,9 +1583,7 @@
 .fi
 .PP
 The \fBTHROUGH\fR keyword lets you conveniently OMIT a range of days.
-The starting and ending points must be fully-specified (ie, they must
-include day, month and year.).  For example, the following sequences
-are equivalent:
+For example, the following sequences are equivalent:
 .PP
 .nf
        OMIT 3 Jan 2011
@@ -1592,12 +1595,28 @@
        OMIT 3 Jan 2011 THROUGH 5 Jan 2011
 .fi
 .PP
-You can make a THROUGH \fBOMIT\fR do double-duty as a \fBREM\fR command:
+You can make a THROUGH \fBOMIT\fR do double-duty as a \fBREM\fR command as
+long as both dates are fully specified
 .PP
 .nf
        OMIT 6 Sep 2010 THROUGH 10 Sep 2010 MSG Vacation
 .fi
-
+.PP
+If you use a THROUGH clause, then either the year must be supplied before
+and after the THROUGH, or it must be missing before and after the THROUGH.
+The following are legal:
+.PP
+.nf
+    OMIT 25 Dec THROUGH 6 Jan
+    OMIT 25 Dec 2024 THROUGH 6 Jan 2025
+.fi
+.PP
+But the following are not:
+.PP
+.nf
+    OMIT 25 Dec THROUGH 6 Jan 2025
+    OMIT 25 Dec 2024 THROUGH 6 Jan
+.nf
 .PP
 You can debug your global OMITs with the following command:
 .PP
@@ -2342,8 +2361,8 @@
 are approximately set by:
 .PP
 .nf
-        SET $Latitude   "40.68933"
-        SET $Longitude "-74.04454"
+    SET $Latitude   "40.68933"
+    SET $Longitude "-74.04454"
 .fi
 .RE
 .TP
@@ -3238,7 +3257,7 @@
 .TP
 .B strlen(s_str)
 Returns the length of \fIstr\fR.  If the length of \fIstr\fR is too large
-to represent as an integers, emits a "Number too high" error.
+to represent as an integer, emits a "Number too high" error.
 .TP
 .B substr(s_str, i_start [,i_end])
 Returns a \fBSTRING\fR consisting of all characters in \fIstr\fR from
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/man/tkremind.1 
new/remind-04.00.02/man/tkremind.1
--- old/remind-04.00.01/man/tkremind.1  2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/man/tkremind.1  2022-08-02 20:58:15.000000000 +0200
@@ -18,13 +18,13 @@
 binary.  If you are using Tcl/Tk 8.5, you may also need either the Img
 or the tkpng extension to handle PNG images.
 
-.SH OPTIONS
-\fBTkRemind\fR itself has no options.  However, it passes certain options
-on to \fBRemind\fR.  The options it passes are
-\fB\-b\fR, \fB\-g\fR, \fB\-x\fR, \fB\-i\fR and \fB\-m\fR.
-See the \fBRemind\fR man page for details about the options.
-Note that \fBTkRemind\fR will respect the \fB\-m\fR and
-\fB\-b1\fR options and adjust its appearance accordingly.
+.SH COMMAND-LINE OPTIONS
+\fBTkRemind\fR itself has no command-line options.  However, it passes
+certain options on to \fBRemind\fR.  The options it passes are
+\fB\-b\fR, \fB\-g\fR, \fB\-x\fR, \fB\-i\fR and \fB\-m\fR.  See the
+\fBRemind\fR man page for details about the options.  Note that
+\fBTkRemind\fR will respect the \fB\-m\fR and \fB\-b1\fR options and
+adjust its appearance accordingly.
 
 \fIRead_file\fR is the file from which \fBTkRemind\fR reads reminders.
 It is in standard \fBRemind\fR format.  \fIWrite_file\fR is the file
@@ -44,8 +44,14 @@
 .PP
 
 \fIConfig_file\fR is the file in which \fBTkRemind\fR stores
-its options.  If it is omitted, it defaults to \fI$HOME/.tkremindrt\fR.
+its options.  If it is omitted, it defaults to \fI$HOME/.config/tkremindrc\fR.
 
+.PP
+If \fB$HOME/.reminders\fR is a \fIdirectory\fR, then \fBTkRemind\fR defaults to
+reading \fB$HOME/.reminders\fR and writing new reminders to
+\fB$HOME/.reminders/100-tkremind.rem\fR.  If you want to keep your
+reminders in a directory \fB$HOME/.reminders\fR, you should create that
+directory before starting \fBTkRemind\fR.
 .SH THE CALENDAR WINDOW
 When you start \fBTkRemind\fR, it displays a calendar for the current
 month, with today's date highlighted.  Reminders are filled into each
@@ -274,7 +280,7 @@
 .PP
 Once you've configured the options the way you like them,
 press \fBApply Options\fR to put them into effect, \fBSave Options\fR
-to put them into effect and save them in $HOME/.tkremindrc, or
+to put them into effect and save them in $HOME/.config/tkremindrc, or
 \fBCancel\fR to cancel any changes you made.
 
 .SH KEYBOARD SHORTCUTS
@@ -293,6 +299,19 @@
 .B Home
 Today
 
+.SH IMMEDIATE UPDATES
+
+If you are running \fBTkRemind\fR on Linux and have the
+\fBinotifywait\fR program installed (part of the \fBinotify-tools\fR
+or similar package), then \fBTkRemind\fR redraws the calendar window
+\fIimmediately\fR if \fB$HOME/.reminders\fR changes (or, if it is a
+directory, any files in that directory change.)
+.PP
+This lets \fBTkRemind\fR react immediately to hand-edited reminders or
+to reminder files that are imported from another calendar system (for example,
+you may have a cron job that periodically imports your Google Calendar
+entries into Remind format.)
+
 .SH ODDS AND ENDS
 \fBTkRemind\fR performs some basic consistency checks when you add or
 preview a reminder.  However, if you edit a reminder in the previewer,
@@ -323,8 +342,7 @@
 for \fBTkRemind\fR (for example).
 .PP
 \fBTkRemind\fR uses tags to keep track of reminders in the
-script file.  It also places special comments in the reminder
-file to store additional state.  You can certainly mix
+script file. You can certainly mix
 "hand-crafted" reminders with reminders created by \fBTkRemind\fR
 if you are aware of the following rules and limitations:
 .TP
@@ -334,15 +352,16 @@
 in hand-crafted reminders.
 .TP
 o
-Do not edit lines starting with "# TKTAGnnn", "# TKEND", or any
-lines in between.  You can move such lines, but be careful to move
-them as a single block.
-.TP
-o
 Hand-crafted reminders cannot be edited with \fBTkRemind\fR, and
 for hand-crafted timed reminders, you will not be presented with
 the "Don't remind me again" option when they pop up.
 
+.PP
+However, rather than mixing hand-edited files with \fBTkRemind\fR-generated
+ones, it is better to make \fB$HOME/.reminders\fR a directory and keep
+your hand-edited files in a separate \fB*.rem\fR file than \fBTkRemind\fR's
+\fB100-tkremind.rem\fR file.
+
 .SH SERVER MODE
 
 \fBRemind\fR has a special mode for interacting with programs like
@@ -400,13 +419,13 @@
 .SH AUTHOR
 TkRemind was written by Dianne Skoll <dia...@skoll.ca>
 
-\fBTkRemind\fR is Copyright 1996-2020 by Dianne Skoll.
+\fBTkRemind\fR is Copyright 1996-2022 by Dianne Skoll.
 
 .SH FILES
 
-$HOME/.reminders -- default reminder file.
+$HOME/.reminders -- default reminder file or directory.
 
-$HOME/.tkremindrc -- \fBTkRemind\fR saved options.
+$HOME/.config/tkremindrc -- \fBTkRemind\fR saved options.
 
 .SH SEE ALSO
 \fBremind\fR, \fBrem2ps\fR, \fBrem2pdf\fR, \fBrem2html\fR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/scripts/tkremind 
new/remind-04.00.02/scripts/tkremind
--- old/remind-04.00.01/scripts/tkremind        2022-06-03 22:22:19.000000000 
+0200
+++ new/remind-04.00.02/scripts/tkremind        2022-08-02 20:58:15.000000000 
+0200
@@ -547,7 +547,9 @@
        $w.t$i configure -state disabled -takefocus 0
     }
     for {set i $first} {$i <= $last} {incr i} {
+       set row [expr ($i/7)+1]
        grid $w.f$i
+        grid rowconfigure $w $row -weight 1
         pack $w.l$i -in $w.f$i -side top -expand 0 -fill x
         pack $w.t$i -in $w.f$i -side top -expand 1 -fill both
         raise $w.l$i
@@ -581,7 +583,7 @@
             pack $w.t$i -in $w.f$i -side top -expand 1 -fill both
             raise $w.l$i
             raise $w.t$i
-           grid rowconfigure $w [expr $row+1] -weight 1
+           grid rowconfigure $w $row -weight 1
        }
        $w.l$i configure -text "" -command "" -state normal -relief flat 
-foreground $Option(LabelColor) -background $Option(WinBackground) 
-highlightcolor $Option(LineColor) -highlightbackground $Option(WinBackground)
         $w.l$i configure -state disabled
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/err.h 
new/remind-04.00.02/src/err.h
--- old/remind-04.00.01/src/err.h       2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/src/err.h       2022-08-02 20:58:15.000000000 +0200
@@ -70,7 +70,7 @@
 #define E_MON_TWICE         51
 #define E_DAY_TWICE         52
 #define E_UNKNOWN_TOKEN             53
-#define E_SPEC_MON_DAY      54
+#define E_SPEC_MON          54
 #define E_2MANY_PART        55
 #define E_2MANY_FULL        56
 #define E_PUSH_NOPOP        57
@@ -187,7 +187,7 @@
     "Month specified twice",
     "Day specified twice",
     "Unknown token",
-    "Must specify month and day in OMIT command",
+    "Must specify month in OMIT command",
     "Too many partial OMITs",
     "Too many full OMITs",
     "Warning: PUSH-OMIT-CONTEXT without matching POP-OMIT-CONTEXT",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/langs/finnish.h 
new/remind-04.00.02/src/langs/finnish.h
--- old/remind-04.00.01/src/langs/finnish.h     2022-06-03 22:22:19.000000000 
+0200
+++ new/remind-04.00.02/src/langs/finnish.h     2022-08-02 20:58:15.000000000 
+0200
@@ -195,7 +195,7 @@
     "Kuukausi annettu kahdesti",
     "P??iv?? annettu kahdesti",
     "Tuntematon sana tai merkki",
-    "OMIT-komennossa on annettava kuukausi ja p??iv??",
+    "OMIT-komennossa on annettava kuukausi",
     "Liian monta osittaista OMIT-komentoa",
     "Liian monta t??ydellist?? OMIT-komentoa",
     "Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/langs/polish.h 
new/remind-04.00.02/src/langs/polish.h
--- old/remind-04.00.01/src/langs/polish.h      2022-06-03 22:22:19.000000000 
+0200
+++ new/remind-04.00.02/src/langs/polish.h      2022-08-02 20:58:15.000000000 
+0200
@@ -185,7 +185,7 @@
     "Miesi??c podany dw??krotnie",
     "Dzie?? podany dw??krotnie",
     "Nieznane s??owo",
-    "W komendzie OMIT trzeba poda?? miesi??c i dzie??",
+    "W komendzie OMIT trzeba poda?? miesi??c",
     "Za du??o cz????ciowych komend OMIT",
     "Za du??o pe??nych komend OMIT",
     "Ostrze??enie: PUSH-OMIT-CONTEXT bez POP-OMIT-CONTEXT",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/langs/portbr.h 
new/remind-04.00.02/src/langs/portbr.h
--- old/remind-04.00.01/src/langs/portbr.h      2022-06-03 22:22:19.000000000 
+0200
+++ new/remind-04.00.02/src/langs/portbr.h      2022-08-02 20:58:15.000000000 
+0200
@@ -194,7 +194,7 @@
     "Mes especificado duas vezes",
     "Dia especificado duas vezes",
     "Token desconhecido",
-    "Mes e dia devem ser especificados no comando OMIT",
+    "O mes deve ser especificados no comando OMIT",
     "Muitos OMITs parciais",
     "Muitos OMITs full",
     "Aviso: PUSH-OMIT-CONTEXT sem POP-OMIT-CONTEXT correspondente",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/omit.c 
new/remind-04.00.02/src/omit.c
--- old/remind-04.00.01/src/omit.c      2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/src/omit.c      2022-08-02 20:58:15.000000000 +0200
@@ -271,7 +271,6 @@
     *cur = key;
 }
 
-static int DoThroughOmit(ParsePtr p, int y, int m, int d);
 static void DumpOmits(void);
 
 /***************************************************************/
@@ -283,11 +282,15 @@
 /***************************************************************/
 int DoOmit(ParsePtr p)
 {
-    int y = NO_YR, m = NO_MON, d = NO_DAY, r;
+    int y[2] = {NO_YR, NO_YR}, m[2] = {NO_MON, NO_MON}, d[2] = {NO_DAY, 
NO_DAY}, r;
     Token tok;
-    int parsing=1;
+    int parsing = 1;
+    int seen_through = 0;
     int syndrome;
     int not_first_token = -1;
+    int start, end, tmp;
+
+    int mc, dc;
 
     DynamicBuffer buf;
     DBufInit(&buf);
@@ -308,28 +311,28 @@
 
        case T_Date:
            DBufFree(&buf);
-           if (y != NO_YR) return E_YR_TWICE;
-           if (m != NO_MON) return E_MON_TWICE;
-           if (d != NO_DAY) return E_DAY_TWICE;
-           FromJulian(tok.val, &y, &m, &d);
+           if (y[seen_through] != NO_YR) return E_YR_TWICE;
+           if (m[seen_through] != NO_MON) return E_MON_TWICE;
+           if (d[seen_through] != NO_DAY) return E_DAY_TWICE;
+           FromJulian(tok.val, &y[seen_through], &m[seen_through], 
&d[seen_through]);
            break;
 
        case T_Year:
            DBufFree(&buf);
-           if (y != NO_YR) return E_YR_TWICE;
-           y = tok.val;
+           if (y[seen_through] != NO_YR) return E_YR_TWICE;
+           y[seen_through] = tok.val;
            break;
 
        case T_Month:
            DBufFree(&buf);
-           if (m != NO_MON) return E_MON_TWICE;
-           m = tok.val;
+           if (m[seen_through] != NO_MON) return E_MON_TWICE;
+           m[seen_through] = tok.val;
            break;
 
        case T_Day:
            DBufFree(&buf);
-           if (d != NO_DAY) return E_DAY_TWICE;
-           d = tok.val;
+           if (d[seen_through] != NO_DAY) return E_DAY_TWICE;
+           d[seen_through] = tok.val;
            break;
 
        case T_Delta:
@@ -338,8 +341,9 @@
 
        case T_Through:
            DBufFree(&buf);
-           if (y == NO_YR || m == NO_MON || d == NO_DAY) return E_INCOMPLETE;
-           return DoThroughOmit(p, y, m, d);
+            if (seen_through) return E_UNTIL_TWICE;
+            seen_through = 1;
+            break;
 
        case T_Empty:
        case T_Comment:
@@ -358,26 +362,85 @@
            return E_UNKNOWN_TOKEN;
        }
     }
-    if (m == NO_MON || d == NO_DAY) return E_SPEC_MON_DAY;
 
-    if (y == NO_YR) {
-       if (NumPartialOmits == MAX_PARTIAL_OMITS) return E_2MANY_PART;
+    if (!seen_through) {
+        /* We must have at least a month */
+        if (m[0] == NO_MON) return E_SPEC_MON;
+        m[1] = m[0];
+        y[1] = y[0];
+        if (d[0] == NO_DAY) {
+            d[0] = 1;
+            if (y[0] == NO_YR) {
+                d[1] = MonthDays[m[0]];
+            } else {
+                d[1] = DaysInMonth(m[0], y[0]);
+            }
+        } else {
+            d[1] = d[0];
+            m[1] = m[0];
+            y[1] = y[0];
+        }
+    } else {
+        if (m[0] == NO_MON) return E_SPEC_MON;
+        if (m[1] == NO_MON) return E_SPEC_MON;
+        if ((y[0] != NO_YR && y[1] == NO_YR) ||
+            (y[0] == NO_YR && y[1] != NO_YR)) {
+            return E_BAD_DATE;
+        }
+        if (d[0] == NO_DAY) d[0] = 1;
+        if (d[1] == NO_DAY) {
+            if (y[1] == NO_YR) {
+                d[1] = MonthDays[m[1]];
+            } else {
+                d[1] = DaysInMonth(m[1], y[1]);
+            }
+        }
+    }
 
-       if (d > MonthDays[m]) return E_BAD_DATE;
-       syndrome = (m<<5) + d;
-       if (!BexistsIntArray(PartialOmitArray, NumPartialOmits, syndrome)) {
-           InsertIntoSortedArray(PartialOmitArray, NumPartialOmits, syndrome);
-           NumPartialOmits++;
-       }
+    if (y[0] == NO_YR) {
+        /* Partial OMITs */
+       if (d[0] > MonthDays[m[0]]) return E_BAD_DATE;
+       if (d[1] > MonthDays[m[1]]) return E_BAD_DATE;
+        dc = d[0];
+        mc = m[0];
+        while(1) {
+            syndrome = (mc<<5) + dc;
+            if (!BexistsIntArray(PartialOmitArray, NumPartialOmits, syndrome)) 
{
+                InsertIntoSortedArray(PartialOmitArray, NumPartialOmits, 
syndrome);
+                NumPartialOmits++;
+            }
+            if (mc == m[1] && dc == d[1]) {
+                break;
+            }
+            dc++;
+            if (dc > MonthDays[mc]) {
+                dc = 1;
+                mc++;
+                if (mc > 11) {
+                    mc = 0;
+                }
+            }
+        }
     } else {
+        /* Full OMITs */
+       if (d[0] > DaysInMonth(m[0], y[0])) return E_BAD_DATE;
+       if (d[1] > DaysInMonth(m[1], y[1])) return E_BAD_DATE;
+        start = Julian(y[0], m[0], d[0]);
+        end   = Julian(y[1], m[1], d[1]);
+        if (end < start) {
+            Eprint("Error: THROUGH date earlier than start date");
+            return E_BAD_DATE;
+        }
 
-       if (d > DaysInMonth(m, y)) return E_BAD_DATE;
-       syndrome = Julian(y, m, d);
-        r = AddGlobalOmit(syndrome);
-        if (r) {
-            return r;
+        for (tmp = start; tmp <= end; tmp++) {
+            if (!BexistsIntArray(FullOmitArray, NumFullOmits, tmp)) {
+                if (NumFullOmits >= MAX_FULL_OMITS) return E_2MANY_FULL;
+                InsertIntoSortedArray(FullOmitArray, NumFullOmits, tmp);
+                NumFullOmits++;
+            }
         }
     }
+
     if (tok.type == T_Tag || tok.type == T_Duration || tok.type == T_RemType 
|| tok.type == T_Priority) return E_PARSE_AS_REM;
     return OK;
 
@@ -394,95 +457,6 @@
     return OK;
 }
 
-static int
-DoThroughOmit(ParsePtr p, int ystart, int mstart, int dstart)
-{
-    int yend = NO_YR, mend = NO_MON, dend = NO_DAY, r;
-    int start, end, tmp;
-    int parsing = 1;
-
-    Token tok;
-
-    DynamicBuffer buf;
-    DBufInit(&buf);
-
-    while(parsing) {
-       if ( (r=ParseToken(p, &buf)) ) return r;
-       FindToken(DBufValue(&buf), &tok);
-
-       switch(tok.type) {
-       case T_Date:
-           DBufFree(&buf);
-           if (yend != NO_YR) return E_YR_TWICE;
-           if (mend != NO_MON) return E_MON_TWICE;
-           if (dend != NO_DAY) return E_DAY_TWICE;
-           FromJulian(tok.val, &yend, &mend, &dend);
-           break;
-
-       case T_Year:
-           DBufFree(&buf);
-           if (yend != NO_YR) return E_YR_TWICE;
-           yend = tok.val;
-           break;
-
-       case T_Month:
-           DBufFree(&buf);
-           if (mend != NO_MON) return E_MON_TWICE;
-           mend = tok.val;
-           break;
-
-       case T_Day:
-           DBufFree(&buf);
-           if (dend != NO_DAY) return E_DAY_TWICE;
-           dend = tok.val;
-           break;
-
-       case T_Empty:
-       case T_Comment:
-       case T_RemType:
-       case T_Priority:
-       case T_Tag:
-       case T_Duration:
-           DBufFree(&buf);
-           parsing = 0;
-           break;
-
-       default:
-           Eprint("%s: `%s' (OMIT)", ErrMsg[E_UNKNOWN_TOKEN],
-                  DBufValue(&buf));
-           DBufFree(&buf);
-           return E_UNKNOWN_TOKEN;
-
-       }
-    }
-    if (yend == NO_YR || mend == NO_MON || dend == NO_DAY) return E_INCOMPLETE;
-    if (dend > DaysInMonth(mend, yend)) return E_BAD_DATE;
-    if (dstart > DaysInMonth(mstart, ystart)) return E_BAD_DATE;
-
-    start = Julian(ystart, mstart, dstart);
-    end   = Julian(yend,   mend,   dend);
-
-    if (end < start) {
-       Wprint("Warning: Swapping dates on OMIT ... THROUGH ... line");
-       tmp = start;
-       start = end;
-       end = tmp;
-    }
-
-    tmp = end - start + 1;
-
-    /* Don't create any OMITs if there would be too many. */
-    if (NumFullOmits + tmp >= MAX_FULL_OMITS) return E_2MANY_FULL;
-    for (tmp = start; tmp <= end; tmp++) {
-       if (!BexistsIntArray(FullOmitArray, NumFullOmits, tmp)) {
-           InsertIntoSortedArray(FullOmitArray, NumFullOmits, tmp);
-           NumFullOmits++;
-       }
-    }
-    if (tok.type == T_Tag || tok.type == T_Duration || tok.type == T_RemType 
|| tok.type == T_Priority) return E_PARSE_AS_REM;
-    return OK;
-}
-
 void
 DumpOmits(void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/src/var.c 
new/remind-04.00.02/src/var.c
--- old/remind-04.00.01/src/var.c       2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/src/var.c       2022-08-02 20:58:15.000000000 +0200
@@ -170,10 +170,11 @@
 static int trig_date_func(int do_set, Value *val)
 {
     UNUSED(do_set);
-    val->type = DATE_TYPE;
     if (!LastTrigValid) {
+        val->type = INT_TYPE;
        val->v.val = 0;
     } else {
+        val->type = DATE_TYPE;
        val->v.val = LastTriggerDate;
     }
     return OK;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/tests/test.cmp 
new/remind-04.00.02/tests/test.cmp
--- old/remind-04.00.01/tests/test.cmp  2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/tests/test.cmp  2022-08-02 20:58:15.000000000 +0200
@@ -1024,7 +1024,7 @@
 "a05" + "6" => "a056"
 value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
 set a058 version()
-version() => "04.00.01"
+version() => "04.00.02"
 set a059 wkday(today())
 today() => 1991-02-16
 wkday(1991-02-16) => "Saturday"
@@ -2594,7 +2594,7 @@
 a109  2012-01-01
 a128  2018-02-03@16:45
 a039  "February"
-a058  "04.00.01"
+a058  "04.00.02"
 a077  "1992 92
 "
 a096  -4
@@ -2766,7 +2766,7 @@
      $SubsIndent  0           [0, 132]
          $Sunday  "Sunday"
     $SuppressLRM  0           [0, 1]
-              $T  1990-01-01
+              $T  0
              $Td  -1
        $Thursday  "Thursday"
         $TimeSep  ":"
@@ -3943,6 +3943,118 @@
 pad("foo", "0", 65536) => String too long
 ../tests/test.rem(799): String too long
 
+# Test OMIT
+CLEAR-OMIT-CONTEXT
+
+OMIT Apr
+OMIT Jun THROUGH July 15
+OMIT Sep 5 THROUGH Sep 10
+OMIT 2024-12-25 THROUGH 2025-01-04
+OMIT Apr 2022 through July
+../tests/test.rem(808): Bad date specification
+
+OMIT DUMP
+Global Full OMITs (11 of maximum allowed 1000):
+       2024-12-25
+       2024-12-26
+       2024-12-27
+       2024-12-28
+       2024-12-29
+       2024-12-30
+       2024-12-31
+       2025-01-01
+       2025-01-02
+       2025-01-03
+       2025-01-04
+Global Partial OMITs (81 of maximum allowed 366):
+       04-01
+       04-02
+       04-03
+       04-04
+       04-05
+       04-06
+       04-07
+       04-08
+       04-09
+       04-10
+       04-11
+       04-12
+       04-13
+       04-14
+       04-15
+       04-16
+       04-17
+       04-18
+       04-19
+       04-20
+       04-21
+       04-22
+       04-23
+       04-24
+       04-25
+       04-26
+       04-27
+       04-28
+       04-29
+       04-30
+       06-01
+       06-02
+       06-03
+       06-04
+       06-05
+       06-06
+       06-07
+       06-08
+       06-09
+       06-10
+       06-11
+       06-12
+       06-13
+       06-14
+       06-15
+       06-16
+       06-17
+       06-18
+       06-19
+       06-20
+       06-21
+       06-22
+       06-23
+       06-24
+       06-25
+       06-26
+       06-27
+       06-28
+       06-29
+       06-30
+       07-01
+       07-02
+       07-03
+       07-04
+       07-05
+       07-06
+       07-07
+       07-08
+       07-09
+       07-10
+       07-11
+       07-12
+       07-13
+       07-14
+       07-15
+       09-05
+       09-06
+       09-07
+       09-08
+       09-09
+       09-10
+CLEAR-OMIT-CONTEXT
+OMIT 2000-01-01 THROUGH 2020-12-31
+../tests/test.rem(812): Too many full OMITs
+
+OMIT Dec 5 2029 through Dec 4 2029
+../tests/test.rem(814): Error: THROUGH date earlier than start date
+
 # Don't want Remind to queue reminders
 EXIT
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remind-04.00.01/tests/test.rem 
new/remind-04.00.02/tests/test.rem
--- old/remind-04.00.01/tests/test.rem  2022-06-03 22:22:19.000000000 +0200
+++ new/remind-04.00.02/tests/test.rem  2022-08-02 20:58:15.000000000 +0200
@@ -798,6 +798,21 @@
 set a pad(11:33, " ", 12, 1)
 set a pad("foo", "0", $MaxStringLen+1)
 
+# Test OMIT
+CLEAR-OMIT-CONTEXT
+
+OMIT Apr
+OMIT Jun THROUGH July 15
+OMIT Sep 5 THROUGH Sep 10
+OMIT 2024-12-25 THROUGH 2025-01-04
+OMIT Apr 2022 through July
+
+OMIT DUMP
+CLEAR-OMIT-CONTEXT
+OMIT 2000-01-01 THROUGH 2020-12-31
+
+OMIT Dec 5 2029 through Dec 4 2029
+
 # Don't want Remind to queue reminders
 EXIT
 

Reply via email to