Compare commits

...

2 Commits

3 changed files with 49 additions and 10 deletions

View File

@@ -0,0 +1,40 @@
Hi, all,
As you know, Remind has been around for a long time---over 36 years.
It's written in C, and I think it's high time to rewrite it in a
memory-safe language. After all, one CVE in 36 years is simply
unacceptable.
I was looking at writing it in Rust, but decided that Rust isn't quite
mature enough yet. So I decided to do it in FORTAN-77. I chose
FORTRAN-77 over the more obvious choice of COBOL because I studied
engineering and not business.
The rewrite will have the following implications:
o Remind will henceforth be known as REMIND.
o Sadly, I have to drop UTF-8 support. Your choices are ASCII or
EBCDIC.
o All statements must begin in column 7. That means you might need to
edit your existing scripts to add 6 spaces at the beginning of the
line.
o Variables whose names begin with "I" through "N" can only hold INTs.
o I will be setting up a store on my web site to sell punched cards.
(Yes; those will be needed to run REMIND.)
Now, I confess I haven't programmed in FORTRAN-77 in several decades,
so I plan on using AI to assist me. After all, it has been trained on
the mountains of open-source FORTRAN-77 code on the Internet.
I anticipate the rewrite will take about 9 years. You can use this
reminder to alert yourself to when it's ready:
REM 1 APRIL 2035 MSG REMIND IN FORTRAN-77 READY. STOP.
Regards,
Dianne.

View File

@@ -515,10 +515,12 @@ In other words, \fB\-i\fIvar\fR is exactly the same as \fB\-i\fIvar\fR\fB=\fR0.
Allows you to define a function on the command line.
.PP
If you supply a \fIdate\fR on the command line, it must consist of
\fIday month year\fR, where \fIday\fR is the day of the month,
[\fIday\fR] \fImonth\fR [\fIyear\fR], where \fIday\fR is the day of the month,
\fImonth\fR is at least the first three letters of the English name
of the month, and \fIyear\fR is a year (all 4 digits) from 1990 to
about 2075. You can leave out the \fIday\fR, which then defaults to 1.
If you leave out the year, then it defaults to the current year. You
cannot leave out the \fImonth\fR.
.PP
If you do supply a \fIdate\fR on the command line, then \fBRemind\fR
uses it, rather than the actual system date, as its notion of "today."

View File

@@ -806,16 +806,13 @@ void InitRemind(int argc, char const *argv[])
if (dse != NO_DATE) {
FromDSE(dse, &y, &m, &d);
}
/* Must supply date in the form: day, mon, yr OR mon, yr */
/* Must supply date in the form: day, mon, yr OR mon, yr */
if (m != NO_MON || y != NO_YR || d != NO_DAY) {
if (m == NO_MON || y == NO_YR) {
if (rep == NO_REP) Usage();
else if (m != NO_MON || y != NO_YR) Usage();
else {
m = CurMon;
y = CurYear;
if (d == NO_DAY) d = CurDay;
}
if (y == NO_YR) {
y = CurYear;
}
if (m == NO_MON) {
Usage();
}
if (d == NO_DAY) d=1;
if (d > DaysInMonth(m, y)) {