diff --git a/man/remind.1 b/man/remind.1 index 417a66a0..67220611 100644 --- a/man/remind.1 +++ b/man/remind.1 @@ -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 diff --git a/src/custom.h b/src/custom.h index 4e730cdd..08bf10ce 100644 --- a/src/custom.h +++ b/src/custom.h @@ -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 ':'; */ diff --git a/src/custom.h.in b/src/custom.h.in index f7afb511..844446d1 100644 --- a/src/custom.h.in +++ b/src/custom.h.in @@ -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 ':'; */ diff --git a/src/expr.h b/src/expr.h index 484b4a36..1977de5d 100644 --- a/src/expr.h +++ b/src/expr.h @@ -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 '[' diff --git a/src/var.c b/src/var.c index 7565b442..70fa91cd 100644 --- a/src/var.c +++ b/src/var.c @@ -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 #include @@ -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 { diff --git a/tests/test.cmp b/tests/test.cmp index 1152c0b0..de0a9df7 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -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