More work on Remind.

This commit is contained in:
dfs
2007-07-01 14:49:44 +00:00
parent 6bb71ee5e3
commit ab16c8f1fe
6 changed files with 209 additions and 189 deletions

View File

@@ -1,5 +1,5 @@
.\" $Id: remind.1,v 1.18 2007-01-25 02:28:53 dfs Exp $
.TH REMIND 1 "11 April 2005"
.\" $Id: remind.1,v 1.19 2007-07-01 14:49:44 dfs Exp $
.TH REMIND 1 "1 July 2007"
.UC 4
.SH NAME
remind \- a sophisticated reminder service
@@ -103,16 +103,16 @@ The \fB\-h\fR option ("hush...") suppresses certain warning and information
messages. In particular, if no reminders are triggered, this mode
produces no output.
.TP
\fB\-a\fR (UNIX and OS/2 only)
\fB\-a\fR
The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger timed
reminders which would also be queued. It also causes \fBRemind\fR not to
place timed reminders in a calendar.
.TP
\fB\-q\fR (UNIX and OS/2 only)
\fB\-q\fR
The \fB\-q\fR option causes \fBRemind\fR not to queue timed reminders
for later execution.
.TP
\fB\-f\fR (UNIX and OS/2 only)
\fB\-f\fR
The \fB\-f\fR option causes \fBRemind\fR to remain in the foreground
when processing queued reminders, rather than forking off
a background process to handle them.
@@ -189,7 +189,7 @@ characters are escaped, the program you execute with the \fB\-k\fR
option must be prepared to handle the entire message as a single argument.
.RE
.TP
\fB\-z\fR[\fIn\fR] (UNIX and OS/2 only)
\fB\-z\fR[\fIn\fR]
Runs \fBRemind\fR in the daemon mode. If \fIn\fR is supplied, it
specifies how often (in minutes) \fBRemind\fR should wake up to
check if the reminder script has been changed. \fIN\fR defaults
@@ -202,7 +202,7 @@ special mode called \fBserver mode\fR. This is documented
in the tkremind man page; see tkremind(1).
.RE
.TP
\fB\-u\fR\fIname\fR (UNIX version only)
\fB\-u\fR\fIname\fR
Runs \fBRemind\fR with the uid and gid of the user specified by \fIname\fR.
The option changes the uid and gid as described, and sets the
environment variables HOME, SHELL and USER to the home directory, shell,
@@ -760,9 +760,8 @@ for a timed reminder is the same as the current system date, the
reminder is queued for later activation. When \fBRemind\fR has
finished processing the reminder file, it puts itself in the
background, and activates timed reminders when the system time reached
the specified time. (Unfortunately, the MS-DOS version does not have
this ability -- most of this section applies only to the UNIX and OS/2
versions.)
the specified time.
.PP
If the trigger date is \fInot\fR the same as the system date, the reminder
is not queued.
@@ -923,19 +922,19 @@ On 18 October 1990, it would print "Meeting with Bob today."
is replaced with "\fIday\fR", the day of the month.
.TP
.B %e
is replaced with "on \fIdd/mm/yyyy\fR"
is replaced with "on \fIdd-mm-yyyy\fR"
.TP
.B %f
is replaced with "on \fImm/dd/yyyy\fR"
is replaced with "on \fImm-dd-yyyy\fR"
.TP
.B %g
is replaced with "on \fIweekday, day month\fR"
.TP
.B %h
is replaced with "on \fIdd/mm\fR"
is replaced with "on \fIdd-mm\fR"
.TP
.B %i
is replaced with "on \fImm/dd\fR"
is replaced with "on \fImm-dd\fR"
.TP
.B %j
is replaced with "on \fIweekday, month day-th, year\fR" This form appends the
@@ -945,7 +944,7 @@ characters "st", "nd", "rd" or "th" to the day of the month, as appropriate.
is replaced with "on \fIweekday, month day-th\fR"
.TP
.B %l
is replaced with "on \fIyyyy/mm/dd\fR"
is replaced with "on \fIyyyy-mm-dd\fR"
.TP
.B %m
is replaced with "\fImonth\fR", the name of the month.
@@ -1276,7 +1275,7 @@ your main .reminders file, include the following lines:
RUN ON # Re-enable RUN
.fi
.PP
In addition, \fBRemind\fR on UNIX contains a few other security
In addition, \fBRemind\fR contains a few other security
features. It will not read a file which is group- or world-writable.
It will not run set-uid. If it reads a file you don't own, it will
disable RUN and the shell() function. And if it is run as \fIroot\fR,
@@ -1312,7 +1311,7 @@ You can disable the banner completely with BANNER %. Or you can create
a custom banner:
.PP
.nf
BANNER Hi - here are your reminders for %y/%t/%r:
BANNER Hi - here are your reminders for %y-%t-%r:
.fi
.SH CONTROLLING THE OMIT CONTEXT
.PP
@@ -1350,7 +1349,7 @@ expressions, but operate on different types of objects.
.PP
.B DATA TYPES
.PP
\fBRemind\fR expressions understand four types of objects:
\fBRemind\fR expressions operate on five types of objects:
.TP
.B INT
The \fBINT\fR data type consists of the integers representable in one machine
@@ -1370,6 +1369,11 @@ of minutes since midnight.
The \fBDATE\fR data type consists of dates (later than 1 January 1990.)
Internally, \fBDATE\fR objects are stored as the number of days since
1 January 1990.
.TP
.B DATETIME
The \fBDATETIME\fR data type consists of a date and time together.
Internally, \fBDATETIME\fR objects are stored as the number of minutes
since midnight, 1 January 1990.
.PP
.B CONSTANTS
.PP
@@ -1406,7 +1410,7 @@ from division or subtraction of integers. Examples:
.RS
\'1993/02/22', '1992-12-25', '1999/01/01'
.PP
Note that \fBDATE\fR constants are \fIprinted\fR
Note that \fBDATE\fR values are \fIprinted\fR
without the quotes. Although either '-' or '/' is accepted as a date
separator on input, when dates are printed, only one will be used. The
choice of whether to use '-' or '/' is made at compile-time.
@@ -1415,6 +1419,18 @@ of \fBRemind\fR prior to 03.00.01 did not support date constants. In those
versions, you must create dates using the \fBdate()\fR function. Also,
versions prior to 03.00.02 did not support the '-' date separator.
.RE
.TP
.B DATETIME constants
\fBDATETIME\fR constants are expressed similarly to \fBDATE\fR constants
with the addition of an "@HH:MM" part. For example:
.PP
.RS
\'2008-04-05@23:11', '1999/02/03@14:06', '2001-04-07@08:30'
.PP
\fBDATETIME\fR values are printed without the quotes. Notes about date
and time separator characters for \fBDATE\fR and \fBTIME\fR constants apply
also to \fBDATETIME\fR constants.
.RE
.PP
.B OPERATORS
.PP
@@ -2145,9 +2161,8 @@ Returns a string which is the ordinal number \fInum\fR. For example,
\fBord(2)\fR returns "2nd", and \fBord(213)\fR returns "213th".
.TP
.B ostype()
Returns "UNIX" on UNIX systems, "MSDOS" on MS-DOS systems, and "OS/2"
on OS/2 systems. If you run \fBRemind\fR in an MS-DOS box under OS/2,
this function returns "MSDOS".
Returns "UNIX". Remind used to run on OS/2 and MS-DOS, but does not
any longer.
.TP
.B plural(i_num [,s_str1 [,s_str2]])
Can take from one to three arguments. If one argument is supplied, returns

View File

@@ -11,7 +11,7 @@
/* */
/***************************************************************/
/* $Id: custom.h,v 1.36 2007-03-26 19:37:56 dfs Exp $ */
/* $Id: custom.h,v 1.37 2007-07-01 14:49:47 dfs Exp $ */
/*---------------------------------------------------------------------*/
/* LAT_DEG, LAT_MIN and LAT_SEC: Latitude of your location */
@@ -41,11 +41,11 @@
/* #define DEFAULT_PAGE {"A4", 595, 842} */
/*---------------------------------------------------------------------*/
/* DATESEP: The default date separator. North American usage is '/'; */
/* others may prefer '-'. */
/* DATESEP: The default date separator. Standard usage is '-'; */
/* others may prefer '/'. */
/*---------------------------------------------------------------------*/
#define DATESEP '/'
/* #define DATESEP '-' */
#define DATESEP '-'
/* #define DATESEP '/' */
/*---------------------------------------------------------------------*/
/* TIMESEP: The default time separator. North American usage is ':'; */

View File

@@ -11,7 +11,7 @@
/* */
/***************************************************************/
/* $Id: custom.h.in,v 1.8 2005-09-30 03:29:32 dfs Exp $ */
/* $Id: custom.h.in,v 1.9 2007-07-01 14:49:47 dfs Exp $ */
/*---------------------------------------------------------------------*/
/* LAT_DEG, LAT_MIN and LAT_SEC: Latitude of your location */
@@ -41,11 +41,11 @@
/* #define DEFAULT_PAGE {"A4", 595, 842} */
/*---------------------------------------------------------------------*/
/* DATESEP: The default date separator. North American usage is '/'; */
/* others may prefer '-'. */
/* DATESEP: The default date separator. Standard usage is '-'; */
/* others may prefer '/'. */
/*---------------------------------------------------------------------*/
#define DATESEP '/'
/* #define DATESEP '-' */
#define DATESEP '-'
/* #define DATESEP '/' */
/*---------------------------------------------------------------------*/
/* TIMESEP: The default time separator. North American usage is ':'; */

View File

@@ -10,7 +10,7 @@
/* */
/***************************************************************/
/* $Id: expr.h,v 1.6 2007-06-29 01:17:39 dfs Exp $ */
/* $Id: expr.h,v 1.7 2007-07-01 14:49:47 dfs Exp $ */
/* Define the types of values */
#define ERR_TYPE 0
@@ -19,6 +19,7 @@
#define DATE_TYPE 3
#define STR_TYPE 4
#define DATETIME_TYPE 5
#define SPECIAL_TYPE 6 /* Only for system variables */
/* Define stuff for parsing expressions */
#define BEG_OF_EXPR '['

View File

@@ -12,7 +12,7 @@
/***************************************************************/
#include "config.h"
static char const RCSID[] = "$Id: var.c,v 1.11 2007-06-29 02:11:02 dfs Exp $";
static char const RCSID[] = "$Id: var.c,v 1.12 2007-07-01 14:49:47 dfs Exp $";
#include <stdio.h>
#include <string.h>
@@ -35,6 +35,8 @@ static char const RCSID[] = "$Id: var.c,v 1.11 2007-06-29 02:11:02 dfs Exp $";
static Var *VHashTbl[VAR_HASH_SIZE];
typedef void (*sysvar_func)(Value *);
/***************************************************************/
/* */
/* HashVal */
@@ -476,7 +478,8 @@ int SetSysVar(const char *name, Value *value)
}
/* If it's a string variable, special measures must be taken */
if (v->type == STR_TYPE) {
if (v->type == SPECIAL_TYPE) {
} else if (v->type == STR_TYPE) {
if (v->been_malloced) free(*((char **)(v->value)));
v->been_malloced = 1;
*((char **) v->value) = value->v.str;
@@ -502,7 +505,8 @@ int GetSysVar(const char *name, Value *val)
val->type = ERR_TYPE;
if (!v) return E_NOSUCH_VAR;
if (v->type == STR_TYPE) {
if (v->type == SPECIAL_TYPE) {
} else if (v->type == STR_TYPE) {
val->v.str = StrDup(*((char **) v->value));
if (!val->v.str) return E_NO_MEM;
} else {

View File

@@ -9,12 +9,12 @@ REM MSG Today is [hebday(today())] [hebmon(today())] [hebyear(today())]
../tests/test.rem(8): Trig = Saturday, 16 February, 1991
Reminders for Saturday, 16th February, 1991:
today() => 1991/02/16
hebday(1991/02/16) => 2
today() => 1991/02/16
hebmon(1991/02/16) => "Adar"
today() => 1991/02/16
hebyear(1991/02/16) => 5751
today() => 1991-02-16
hebday(1991-02-16) => 2
today() => 1991-02-16
hebmon(1991-02-16) => "Adar"
today() => 1991-02-16
hebyear(1991-02-16) => 5751
Today is 2 Adar 5751
fset _h(x, y) trigger(hebdate(x,y))
@@ -23,247 +23,247 @@ fset _h(x, y) trigger(hebdate(x,y))
Entering UserFN _h(1, "Tishrey")
x => 1
y => "Tishrey"
hebdate(1, "Tishrey") => 1991/09/09
trigger(1991/09/09) => "9 September 1991"
hebdate(1, "Tishrey") => 1991-09-09
trigger(1991-09-09) => "9 September 1991"
Leaving UserFN _h() => "9 September 1991"
../tests/test.rem(11): Trig = Monday, 9 September, 1991
[_h(2, "Tishrey")] MSG Rosh Hashana 2
Entering UserFN _h(2, "Tishrey")
x => 2
y => "Tishrey"
hebdate(2, "Tishrey") => 1991/09/10
trigger(1991/09/10) => "10 September 1991"
hebdate(2, "Tishrey") => 1991-09-10
trigger(1991-09-10) => "10 September 1991"
Leaving UserFN _h() => "10 September 1991"
../tests/test.rem(12): Trig = Tuesday, 10 September, 1991
[_h(3, "Tishrey")] MSG Tzom Gedalia
Entering UserFN _h(3, "Tishrey")
x => 3
y => "Tishrey"
hebdate(3, "Tishrey") => 1991/09/11
trigger(1991/09/11) => "11 September 1991"
hebdate(3, "Tishrey") => 1991-09-11
trigger(1991-09-11) => "11 September 1991"
Leaving UserFN _h() => "11 September 1991"
../tests/test.rem(13): Trig = Wednesday, 11 September, 1991
[_h(10, "Tishrey")] MSG Yom Kippur
Entering UserFN _h(10, "Tishrey")
x => 10
y => "Tishrey"
hebdate(10, "Tishrey") => 1991/09/18
trigger(1991/09/18) => "18 September 1991"
hebdate(10, "Tishrey") => 1991-09-18
trigger(1991-09-18) => "18 September 1991"
Leaving UserFN _h() => "18 September 1991"
../tests/test.rem(14): Trig = Wednesday, 18 September, 1991
[_h(15, "Tishrey")] MSG Sukkot 1
Entering UserFN _h(15, "Tishrey")
x => 15
y => "Tishrey"
hebdate(15, "Tishrey") => 1991/09/23
trigger(1991/09/23) => "23 September 1991"
hebdate(15, "Tishrey") => 1991-09-23
trigger(1991-09-23) => "23 September 1991"
Leaving UserFN _h() => "23 September 1991"
../tests/test.rem(15): Trig = Monday, 23 September, 1991
[_h(25, "Kislev")] MSG Channuka
Entering UserFN _h(25, "Kislev")
x => 25
y => "Kislev"
hebdate(25, "Kislev") => 1991/12/02
trigger(1991/12/02) => "2 December 1991"
hebdate(25, "Kislev") => 1991-12-02
trigger(1991-12-02) => "2 December 1991"
Leaving UserFN _h() => "2 December 1991"
../tests/test.rem(16): Trig = Monday, 2 December, 1991
[_h(10, "Tevet")] MSG Asara B'Tevet
Entering UserFN _h(10, "Tevet")
x => 10
y => "Tevet"
hebdate(10, "Tevet") => 1991/12/17
trigger(1991/12/17) => "17 December 1991"
hebdate(10, "Tevet") => 1991-12-17
trigger(1991-12-17) => "17 December 1991"
Leaving UserFN _h() => "17 December 1991"
../tests/test.rem(17): Trig = Tuesday, 17 December, 1991
[_h(15, "Shvat")] MSG Tu B'Shvat
Entering UserFN _h(15, "Shvat")
x => 15
y => "Shvat"
hebdate(15, "Shvat") => 1992/01/20
trigger(1992/01/20) => "20 January 1992"
hebdate(15, "Shvat") => 1992-01-20
trigger(1992-01-20) => "20 January 1992"
Leaving UserFN _h() => "20 January 1992"
../tests/test.rem(18): Trig = Monday, 20 January, 1992
[_h(15, "Adar A")] MSG Purim Katan
Entering UserFN _h(15, "Adar A")
x => 15
y => "Adar A"
hebdate(15, "Adar A") => 1992/02/19
trigger(1992/02/19) => "19 February 1992"
hebdate(15, "Adar A") => 1992-02-19
trigger(1992-02-19) => "19 February 1992"
Leaving UserFN _h() => "19 February 1992"
../tests/test.rem(19): Trig = Wednesday, 19 February, 1992
[_h(14, "Adar")] MSG Purim
Entering UserFN _h(14, "Adar")
x => 14
y => "Adar"
hebdate(14, "Adar") => 1991/02/28
trigger(1991/02/28) => "28 February 1991"
hebdate(14, "Adar") => 1991-02-28
trigger(1991-02-28) => "28 February 1991"
Leaving UserFN _h() => "28 February 1991"
../tests/test.rem(20): Trig = Thursday, 28 February, 1991
[_h(15, "Nisan")] MSG Pesach
Entering UserFN _h(15, "Nisan")
x => 15
y => "Nisan"
hebdate(15, "Nisan") => 1991/03/30
trigger(1991/03/30) => "30 March 1991"
hebdate(15, "Nisan") => 1991-03-30
trigger(1991-03-30) => "30 March 1991"
Leaving UserFN _h() => "30 March 1991"
../tests/test.rem(21): Trig = Saturday, 30 March, 1991
[_h(27, "Nisan")] MSG Yom HaShoah
Entering UserFN _h(27, "Nisan")
x => 27
y => "Nisan"
hebdate(27, "Nisan") => 1991/04/11
trigger(1991/04/11) => "11 April 1991"
hebdate(27, "Nisan") => 1991-04-11
trigger(1991-04-11) => "11 April 1991"
Leaving UserFN _h() => "11 April 1991"
../tests/test.rem(22): Trig = Thursday, 11 April, 1991
[_h(4, "Iyar")] MSG Yom HaZikaron
Entering UserFN _h(4, "Iyar")
x => 4
y => "Iyar"
hebdate(4, "Iyar") => 1991/04/18
trigger(1991/04/18) => "18 April 1991"
hebdate(4, "Iyar") => 1991-04-18
trigger(1991-04-18) => "18 April 1991"
Leaving UserFN _h() => "18 April 1991"
../tests/test.rem(23): Trig = Thursday, 18 April, 1991
[_h(5, "Iyar")] MSG Yom Ha'atzmaut
Entering UserFN _h(5, "Iyar")
x => 5
y => "Iyar"
hebdate(5, "Iyar") => 1991/04/19
trigger(1991/04/19) => "19 April 1991"
hebdate(5, "Iyar") => 1991-04-19
trigger(1991-04-19) => "19 April 1991"
Leaving UserFN _h() => "19 April 1991"
../tests/test.rem(24): Trig = Friday, 19 April, 1991
[_h(28, "Iyar")] MSG Yom Yerushalayim
Entering UserFN _h(28, "Iyar")
x => 28
y => "Iyar"
hebdate(28, "Iyar") => 1991/05/12
trigger(1991/05/12) => "12 May 1991"
hebdate(28, "Iyar") => 1991-05-12
trigger(1991-05-12) => "12 May 1991"
Leaving UserFN _h() => "12 May 1991"
../tests/test.rem(25): Trig = Sunday, 12 May, 1991
[_h(6, "Sivan")] MSG Shavuot
Entering UserFN _h(6, "Sivan")
x => 6
y => "Sivan"
hebdate(6, "Sivan") => 1991/05/19
trigger(1991/05/19) => "19 May 1991"
hebdate(6, "Sivan") => 1991-05-19
trigger(1991-05-19) => "19 May 1991"
Leaving UserFN _h() => "19 May 1991"
../tests/test.rem(26): Trig = Sunday, 19 May, 1991
[_h(9, "Av")] MSG Tish'a B'Av
Entering UserFN _h(9, "Av")
x => 9
y => "Av"
hebdate(9, "Av") => 1991/07/20
trigger(1991/07/20) => "20 July 1991"
hebdate(9, "Av") => 1991-07-20
trigger(1991-07-20) => "20 July 1991"
Leaving UserFN _h() => "20 July 1991"
../tests/test.rem(27): Trig = Saturday, 20 July, 1991
# Test some jahrzeit cases
fset _i(x,y,z,a) trigger(hebdate(x,y,z,a))
[_i(30, "Heshvan", today(), 5759)] MSG Complete-Complete
today() => 1991/02/16
Entering UserFN _i(30, "Heshvan", 1991/02/16, 5759)
today() => 1991-02-16
Entering UserFN _i(30, "Heshvan", 1991-02-16, 5759)
x => 30
y => "Heshvan"
z => 1991/02/16
z => 1991-02-16
a => 5759
hebdate(30, "Heshvan", 1991/02/16, 5759) => 1991/11/07
trigger(1991/11/07) => "7 November 1991"
hebdate(30, "Heshvan", 1991-02-16, 5759) => 1991-11-07
trigger(1991-11-07) => "7 November 1991"
Leaving UserFN _i() => "7 November 1991"
../tests/test.rem(31): Trig = Thursday, 7 November, 1991
[_i(30, "Heshvan", today(), 5760)] MSG Complete-Defective
today() => 1991/02/16
Entering UserFN _i(30, "Heshvan", 1991/02/16, 5760)
today() => 1991-02-16
Entering UserFN _i(30, "Heshvan", 1991-02-16, 5760)
x => 30
y => "Heshvan"
z => 1991/02/16
z => 1991-02-16
a => 5760
hebdate(30, "Heshvan", 1991/02/16, 5760) => 1991/11/07
trigger(1991/11/07) => "7 November 1991"
hebdate(30, "Heshvan", 1991-02-16, 5760) => 1991-11-07
trigger(1991-11-07) => "7 November 1991"
Leaving UserFN _i() => "7 November 1991"
../tests/test.rem(32): Trig = Thursday, 7 November, 1991
[_i(30, "Heshvan", today(), 5761)] MSG Illegal
today() => 1991/02/16
Entering UserFN _i(30, "Heshvan", 1991/02/16, 5761)
today() => 1991-02-16
Entering UserFN _i(30, "Heshvan", 1991-02-16, 5761)
x => 30
y => "Heshvan"
z => 1991/02/16
z => 1991-02-16
a => 5761
hebdate(30, "Heshvan", 1991/02/16, 5761) => ../tests/test.rem(33): 30 Heshvan 5761: Invalid Hebrew date
hebdate(30, "Heshvan", 1991-02-16, 5761) => ../tests/test.rem(33): 30 Heshvan 5761: Invalid Hebrew date
Invalid Hebrew date
Leaving UserFN _i() => Invalid Hebrew date
[_i(30, "Kislev", today(), 5759)] MSG Complete-Complete
today() => 1991/02/16
Entering UserFN _i(30, "Kislev", 1991/02/16, 5759)
today() => 1991-02-16
Entering UserFN _i(30, "Kislev", 1991-02-16, 5759)
x => 30
y => "Kislev"
z => 1991/02/16
z => 1991-02-16
a => 5759
hebdate(30, "Kislev", 1991/02/16, 5759) => 1991/12/07
trigger(1991/12/07) => "7 December 1991"
hebdate(30, "Kislev", 1991-02-16, 5759) => 1991-12-07
trigger(1991-12-07) => "7 December 1991"
Leaving UserFN _i() => "7 December 1991"
../tests/test.rem(35): Trig = Saturday, 7 December, 1991
[_i(30, "Kislev", today(), 5760)] MSG Complete-Defective
today() => 1991/02/16
Entering UserFN _i(30, "Kislev", 1991/02/16, 5760)
today() => 1991-02-16
Entering UserFN _i(30, "Kislev", 1991-02-16, 5760)
x => 30
y => "Kislev"
z => 1991/02/16
z => 1991-02-16
a => 5760
hebdate(30, "Kislev", 1991/02/16, 5760) => 1991/12/07
trigger(1991/12/07) => "7 December 1991"
hebdate(30, "Kislev", 1991-02-16, 5760) => 1991-12-07
trigger(1991-12-07) => "7 December 1991"
Leaving UserFN _i() => "7 December 1991"
../tests/test.rem(36): Trig = Saturday, 7 December, 1991
[_i(30, "Kislev", today(), 5761)] MSG Illegal
today() => 1991/02/16
Entering UserFN _i(30, "Kislev", 1991/02/16, 5761)
today() => 1991-02-16
Entering UserFN _i(30, "Kislev", 1991-02-16, 5761)
x => 30
y => "Kislev"
z => 1991/02/16
z => 1991-02-16
a => 5761
hebdate(30, "Kislev", 1991/02/16, 5761) => ../tests/test.rem(37): 30 Kislev 5761: Invalid Hebrew date
hebdate(30, "Kislev", 1991-02-16, 5761) => ../tests/test.rem(37): 30 Kislev 5761: Invalid Hebrew date
Invalid Hebrew date
Leaving UserFN _i() => Invalid Hebrew date
[_i(30, "Adar A", today(), 5755)] MSG Leap
today() => 1991/02/16
Entering UserFN _i(30, "Adar A", 1991/02/16, 5755)
today() => 1991-02-16
Entering UserFN _i(30, "Adar A", 1991-02-16, 5755)
x => 30
y => "Adar A"
z => 1991/02/16
z => 1991-02-16
a => 5755
hebdate(30, "Adar A", 1991/02/16, 5755) => 1992/03/05
trigger(1992/03/05) => "5 March 1992"
hebdate(30, "Adar A", 1991-02-16, 5755) => 1992-03-05
trigger(1992-03-05) => "5 March 1992"
Leaving UserFN _i() => "5 March 1992"
../tests/test.rem(39): Trig = Thursday, 5 March, 1992
[_i(30, "Adar A", today(), 5756)] MSG Illegal
today() => 1991/02/16
Entering UserFN _i(30, "Adar A", 1991/02/16, 5756)
today() => 1991-02-16
Entering UserFN _i(30, "Adar A", 1991-02-16, 5756)
x => 30
y => "Adar A"
z => 1991/02/16
z => 1991-02-16
a => 5756
hebdate(30, "Adar A", 1991/02/16, 5756) => ../tests/test.rem(40): No Adar A in 5756
hebdate(30, "Adar A", 1991-02-16, 5756) => ../tests/test.rem(40): No Adar A in 5756
Invalid Hebrew date
Leaving UserFN _i() => Invalid Hebrew date
[_i(29, "Adar A", today(), 5755)] MSG Leap
today() => 1991/02/16
Entering UserFN _i(29, "Adar A", 1991/02/16, 5755)
today() => 1991-02-16
Entering UserFN _i(29, "Adar A", 1991-02-16, 5755)
x => 29
y => "Adar A"
z => 1991/02/16
z => 1991-02-16
a => 5755
hebdate(29, "Adar A", 1991/02/16, 5755) => 1991/03/15
trigger(1991/03/15) => "15 March 1991"
hebdate(29, "Adar A", 1991-02-16, 5755) => 1991-03-15
trigger(1991-03-15) => "15 March 1991"
Leaving UserFN _i() => "15 March 1991"
../tests/test.rem(41): Trig = Friday, 15 March, 1991
[_i(29, "Adar A", today(), 5756)] MSG Illegal
today() => 1991/02/16
Entering UserFN _i(29, "Adar A", 1991/02/16, 5756)
today() => 1991-02-16
Entering UserFN _i(29, "Adar A", 1991-02-16, 5756)
x => 29
y => "Adar A"
z => 1991/02/16
z => 1991-02-16
a => 5756
hebdate(29, "Adar A", 1991/02/16, 5756) => ../tests/test.rem(42): No Adar A in 5756
hebdate(29, "Adar A", 1991-02-16, 5756) => ../tests/test.rem(42): No Adar A in 5756
Invalid Hebrew date
Leaving UserFN _i() => Invalid Hebrew date
@@ -463,19 +463,19 @@ CLEAR-OMIT-CONTEXT
REM Fri SATISFY 1
../tests/test.rem(154): Trig = Friday, 22 February, 1991
OMIT [trigger(trigdate())]
trigdate() => 1991/02/22
trigger(1991/02/22) => "22 February 1991"
trigdate() => 1991-02-22
trigger(1991-02-22) => "22 February 1991"
REM Fri after MSG 23 Feb 1991
../tests/test.rem(156): Trig = Saturday, 23 February, 1991
CLEAR-OMIT-CONTEXT
REM Fri SCANFROM [trigger(today()-7)] SATISFY 1
today() => 1991/02/16
1991/02/16 - 7 => 1991/02/09
trigger(1991/02/09) => "9 February 1991"
today() => 1991-02-16
1991-02-16 - 7 => 1991-02-09
trigger(1991-02-09) => "9 February 1991"
../tests/test.rem(158): Trig = Friday, 15 February, 1991
OMIT [trigger(trigdate())]
trigdate() => 1991/02/15
trigger(1991/02/15) => "15 February 1991"
trigdate() => 1991-02-15
trigger(1991-02-15) => "15 February 1991"
REM Fri after MSG 16 Feb 1991
../tests/test.rem(160): Trig = Saturday, 16 February, 1991
16 Feb 1991
@@ -497,8 +497,8 @@ choose(3, "foo", "bar", "baz", "blech") => "baz"
set a006 coerce("string", 1)
coerce("string", 1) => "1"
set a007 coerce("string", today())
today() => 1991/02/16
coerce("string", 1991/02/16) => "1991/02/16"
today() => 1991-02-16
coerce("string", 1991-02-16) => "1991-02-16"
set a008 coerce("string", 11:44)
coerce("string", 11:44) => "11:44"
set a009 coerce("int", "badnews")
@@ -509,16 +509,16 @@ coerce("int", "12") => 12
set a011 coerce("int", 11:44)
coerce("int", 11:44) => 704
set a012 coerce("int", today())
today() => 1991/02/16
coerce("int", 1991/02/16) => 411
today() => 1991-02-16
coerce("int", 1991-02-16) => 411
set a013 date(1992, 2, 2)
date(1992, 2, 2) => 1992/02/02
date(1992, 2, 2) => 1992-02-02
set a014 date(1993, 2, 29)
date(1993, 2, 29) => Bad date specification
../tests/test.rem(176): Bad date specification
set a015 day(today())
today() => 1991/02/16
day(1991/02/16) => 16
today() => 1991-02-16
day(1991-02-16) => 16
set a016 daysinmon(2, 1991)
daysinmon(2, 1991) => 28
set a017 daysinmon(2, 1992)
@@ -542,20 +542,20 @@ index("barfoobar", "foo") => 4
set a026 index("barfoobar", "bar", 2)
index("barfoobar", "bar", 2) => 7
set a027 isleap(today())
today() => 1991/02/16
isleap(1991/02/16) => 0
today() => 1991-02-16
isleap(1991-02-16) => 0
set a028 isleap(1992)
isleap(1992) => 1
omit [trigger(today())]
today() => 1991/02/16
trigger(1991/02/16) => "16 February 1991"
today() => 1991-02-16
trigger(1991-02-16) => "16 February 1991"
set a030 isomitted(today())
today() => 1991/02/16
isomitted(1991/02/16) => 1
today() => 1991-02-16
isomitted(1991-02-16) => 1
clear
set a029 isomitted(today())
today() => 1991/02/16
isomitted(1991/02/16) => 0
today() => 1991-02-16
isomitted(1991-02-16) => 0
set a031 lower("FOOBARBAZ")
lower("FOOBARBAZ") => "foobarbaz"
set a032 max(1, 2, 34, 1, 3)
@@ -563,31 +563,31 @@ max(1, 2, 34, 1, 3) => 34
set a033 max("foo", "bar", "baz")
max("foo", "bar", "baz") => "foo"
set a034 max(today(), today()+1, today()-1)
today() => 1991/02/16
today() => 1991/02/16
1991/02/16 + 1 => 1991/02/17
today() => 1991/02/16
1991/02/16 - 1 => 1991/02/15
max(1991/02/16, 1991/02/17, 1991/02/15) => 1991/02/17
today() => 1991-02-16
today() => 1991-02-16
1991-02-16 + 1 => 1991-02-17
today() => 1991-02-16
1991-02-16 - 1 => 1991-02-15
max(1991-02-16, 1991-02-17, 1991-02-15) => 1991-02-17
set a035 min(1, 2, 34, 1, 3)
min(1, 2, 34, 1, 3) => 1
set a036 min("foo", "bar", "baz")
min("foo", "bar", "baz") => "bar"
set a037 min(today(), today()+1, today()-1)
today() => 1991/02/16
today() => 1991/02/16
1991/02/16 + 1 => 1991/02/17
today() => 1991/02/16
1991/02/16 - 1 => 1991/02/15
min(1991/02/16, 1991/02/17, 1991/02/15) => 1991/02/15
today() => 1991-02-16
today() => 1991-02-16
1991-02-16 + 1 => 1991-02-17
today() => 1991-02-16
1991-02-16 - 1 => 1991-02-15
min(1991-02-16, 1991-02-17, 1991-02-15) => 1991-02-15
set a038 minute(11:33)
minute(11:33) => 33
set a039 mon(today())
today() => 1991/02/16
mon(1991/02/16) => "February"
today() => 1991-02-16
mon(1991-02-16) => "February"
set a040 monnum(today())
today() => 1991/02/16
monnum(1991/02/16) => 2
today() => 1991-02-16
monnum(1991-02-16) => 2
set a041 ord(3)
ord(3) => "3rd"
set a042 ord(4)
@@ -620,7 +620,7 @@ time(3, 7) => 03:07
rem 10 jan 1992 AT 11:22 CAL
../tests/test.rem(217): Trig = Friday, 10 January, 1992
set a053 trigdate()
trigdate() => 1992/01/10
trigdate() => 1992-01-10
set a054 trigtime()
trigtime() => 11:22
set a055 trigvalid()
@@ -633,14 +633,14 @@ value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
set a058 version()
version() => "03.01.00"
set a059 wkday(today())
today() => 1991/02/16
wkday(1991/02/16) => "Saturday"
today() => 1991-02-16
wkday(1991-02-16) => "Saturday"
set a060 wkdaynum(today())
today() => 1991/02/16
wkdaynum(1991/02/16) => 6
today() => 1991-02-16
wkdaynum(1991-02-16) => 6
set a061 year(today())
today() => 1991/02/16
year(1991/02/16) => 1991
today() => 1991-02-16
year(1991-02-16) => 1991
set a062 1+2*(3+4-(5*7/2))
3 + 4 => 7
5 * 7 => 35
@@ -666,8 +666,8 @@ typeof("foo") => "STRING"
set a069 typeof(11:33)
typeof(11:33) => "TIME"
set a070 typeof(today())
today() => 1991/02/16
typeof(1991/02/16) => "DATE"
today() => 1991-02-16
typeof(1991-02-16) => "DATE"
fset g(x,y) max(x,y)
fset h(x,y) min(g(x+y, x*y), g(x-y, x/y))
set a071 g(1, 2)
@@ -713,25 +713,25 @@ y => 11:33
../tests/test.rem(240): `*': Type mismatch
Leaving UserFN h() => Type mismatch
set a074 dosubst("%a %b %c %d %e %f %g %h", '1992/5/5')
dosubst("%a %b %c %d %e %f %g %h", 1992/05/05) => "on Tuesday, 5 May, 1992 in 444 days' tim"...
dosubst("%a %b %c %d %e %f %g %h", 1992-05-05) => "on Tuesday, 5 May, 1992 in 444 days' tim"...
msg [a074]%
../tests/test.rem(242): Trig = Saturday, 16 February, 1991
a074 => "on Tuesday, 5 May, 1992 in 444 days' tim"...
on Tuesday, 5 May, 1992 in 444 days' time on Tuesday 5 on 05/05/1992 on 05/05/1992 on Tuesday, 5 May on 05/05
on Tuesday, 5 May, 1992 in 444 days' time on Tuesday 5 on 05-05-1992 on 05-05-1992 on Tuesday, 5 May on 05-05
set a075 dosubst("%i %j %k %l %m %n %o %p", '1992/5/5')
dosubst("%i %j %k %l %m %n %o %p", 1992/05/05) => "on 05/05 on Tuesday, May 5th, 1992 on Tu"...
dosubst("%i %j %k %l %m %n %o %p", 1992-05-05) => "on 05-05 on Tuesday, May 5th, 1992 on Tu"...
msg [a075]%
../tests/test.rem(244): Trig = Saturday, 16 February, 1991
a075 => "on 05/05 on Tuesday, May 5th, 1992 on Tu"...
on 05/05 on Tuesday, May 5th, 1992 on Tuesday, May 5th on 1992/05/05 May 5 s
a075 => "on 05-05 on Tuesday, May 5th, 1992 on Tu"...
on 05-05 on Tuesday, May 5th, 1992 on Tuesday, May 5th on 1992-05-05 May 5 s
set a076 dosubst("%q %r %s %t %u %v %w %x", '1992/5/5')
dosubst("%q %r %s %t %u %v %w %x", 1992/05/05) => "s' 05 th 05 on Tuesday, 5th May, 1992 on"...
dosubst("%q %r %s %t %u %v %w %x", 1992-05-05) => "s' 05 th 05 on Tuesday, 5th May, 1992 on"...
msg [a076]%
../tests/test.rem(246): Trig = Saturday, 16 February, 1991
a076 => "s' 05 th 05 on Tuesday, 5th May, 1992 on"...
s' 05 th 05 on Tuesday, 5th May, 1992 on Tuesday, 5th May Tuesday 444
set a077 dosubst("%y %z", '1992/5/5')
dosubst("%y %z", 1992/05/05) => "1992 92
dosubst("%y %z", 1992-05-05) => "1992 92
"
msg [a077]%
../tests/test.rem(248): Trig = Saturday, 16 February, 1991
@@ -739,12 +739,12 @@ a077 => "1992 92
"
1992 92
set a078 easterdate(today())
today() => 1991/02/16
easterdate(1991/02/16) => 1991/03/31
today() => 1991-02-16
easterdate(1991-02-16) => 1991-03-31
set a079 easterdate(1992)
easterdate(1992) => 1992/04/19
easterdate(1992) => 1992-04-19
set a080 easterdate(1995)
easterdate(1995) => 1995/04/16
easterdate(1995) => 1995-04-16
set a081 ""
dump
Variable Value
@@ -758,9 +758,9 @@ dump
a046 "ies"
a065 1
a018 1
a037 1991/02/15
a037 1991-02-15
a056 "SDFJHSDF KSJDFH KJSDFH KSJDFH"
a075 "on 05/05 on Tuesday, May 5th, 1992 on Tu"...
a075 "on 05-05 on Tuesday, May 5th, 1992 on Tu"...
a028 1
a047 -1
a066 0
@@ -778,9 +778,9 @@ dump
a049 21
a068 "STRING"
a059 "Saturday"
a078 1991/03/31
a078 1991-03-31
a069 "TIME"
a079 1992/04/19
a079 1992-04-19
a000 1
a010 12
a001 1
@@ -796,14 +796,14 @@ dump
a022 11
a041 "3rd"
a060 6
a013 1992/02/02
a013 1992-02-02
a032 34
a070 "DATE"
a004 "B7BMB"
a023 1
a042 "4th"
a061 1991
a080 1995/04/16
a080 1995-04-16
a033 "foo"
a052 03:07
a071 2
@@ -813,8 +813,8 @@ dump
a062 -19
a081 ""
a015 16
a034 1991/02/17
a053 1992/01/10
a034 1991-02-17
a053 1992-01-10
a072 0
a006 "1"
a025 4
@@ -823,7 +823,7 @@ dump
a016 28
a035 1
a054 11:22
a007 "1991/02/16"
a007 "1991-02-16"
a026 7
a045 "iess"
a064 1