Compare commits
70 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bfdb1f0eb | ||
|
|
0c0280b2a9 | ||
|
|
57a1871077 | ||
|
|
ee972ad29f | ||
|
|
29c8475ea9 | ||
|
|
6dd0f6ed63 | ||
|
|
fc2d7ae446 | ||
|
|
d232ac0334 | ||
|
|
6e8dd68c8a | ||
|
|
495cc1b38d | ||
|
|
d90e74b1a3 | ||
|
|
bbd8a4b729 | ||
|
|
cae3e18717 | ||
|
|
0e989a7422 | ||
|
|
7b7ce5bb57 | ||
|
|
df95cdaad0 | ||
|
|
3026b6e5c2 | ||
|
|
b3306c5572 | ||
|
|
9ef3be33e5 | ||
|
|
292262c128 | ||
|
|
e54bfe9197 | ||
|
|
c56cfe9e1d | ||
|
|
f6b6a3285c | ||
|
|
6b031b0fdf | ||
|
|
2dab7025ba | ||
|
|
7403114897 | ||
|
|
82cbeec560 | ||
|
|
df6b4ac566 | ||
|
|
4ba21ab526 | ||
|
|
acac7a7b31 | ||
|
|
2290fd09f5 | ||
|
|
f02b6a1773 | ||
|
|
efffe05d42 | ||
|
|
950d67c522 | ||
|
|
a1aa61f54e | ||
|
|
3c2bd66460 | ||
|
|
245cebee56 | ||
|
|
c45364fdb3 | ||
|
|
e380308604 | ||
|
|
bd019524dd | ||
|
|
895536d7d3 | ||
|
|
3a0e41afd1 | ||
|
|
23dd28471e | ||
|
|
761217d403 | ||
|
|
77ed694111 | ||
|
|
61bcce3104 | ||
|
|
bf41b12ccd | ||
|
|
5eabd7d8d8 | ||
|
|
0c66f5f3af | ||
|
|
3190f784d9 | ||
|
|
394ff55879 | ||
|
|
9b846835bc | ||
|
|
01776af167 | ||
|
|
0db10424ad | ||
|
|
bafd7ea073 | ||
|
|
0ab27fcb4b | ||
|
|
95d016712e | ||
|
|
fcb55001bb | ||
|
|
7bc6961101 | ||
|
|
450e88fad8 | ||
|
|
3222b4c311 | ||
|
|
1e0cc3605d | ||
|
|
129b7bfeb7 | ||
|
|
388811b684 | ||
|
|
f83257407b | ||
|
|
e4ced77340 | ||
|
|
92e0bc316a | ||
|
|
a4a55f35b2 | ||
|
|
ed1150c189 | ||
|
|
08080f4e86 |
@@ -293,7 +293,7 @@ POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
--
|
||||
David F. Skoll <dfs@roaringpenguin.com>
|
||||
Dianne Skoll <dfs@roaringpenguin.com>
|
||||
|
||||
Tel. (613) 231-6599
|
||||
http://www.roaringpenguin.com
|
||||
|
||||
@@ -27,4 +27,4 @@ iPhone or iPad, please don't. Those products enforce Apple's rigorous
|
||||
controls much more stringently than Mac OS X on an Apple PC.
|
||||
|
||||
--
|
||||
David F. Skoll
|
||||
Dianne Skoll
|
||||
|
||||
2
build.tk
Executable file → Normal file
@@ -7,7 +7,7 @@
|
||||
# A cheesy graphical front-end for building and installing REMIND.
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1999 David F. Skoll
|
||||
# Copyright (C) 1992-1999 Dianne Skoll
|
||||
# Copyright (C) 1999-2000 Roaring Penguin Software Inc.
|
||||
#
|
||||
#--------------------------------------------------------------
|
||||
|
||||
@@ -75,6 +75,6 @@ if test "$GCC" = yes; then
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale)
|
||||
VERSION=03.01.10
|
||||
VERSION=03.01.14
|
||||
AC_SUBST(VERSION)
|
||||
AC_OUTPUT(src/Makefile www/Makefile src/version.h)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
This directory contains contributed scripts. They are provided
|
||||
"as-is" with no warranty. Please do not contact David Skoll
|
||||
"as-is" with no warranty. Please do not contact Dianne Skoll
|
||||
or Roaring Penguin Software Inc. for help with these scripts;
|
||||
instead, contact the script authors.
|
||||
|
||||
@@ -7,4 +7,4 @@ You should check the upstream sources; there may be newer versions
|
||||
of these scripts available.
|
||||
|
||||
--
|
||||
David F. Skoll
|
||||
Dianne Skoll
|
||||
|
||||
@@ -251,7 +251,7 @@ Please report bugs (with patches, if possible).
|
||||
Inspired by Anthony J. Chivetta E<lt>achivetta@gmail.comE<gt>'s
|
||||
rem2ics in awk.
|
||||
|
||||
Thank you to David Skoll E<lt>dfs@roaringpengiun.com<gt> for Remind,
|
||||
Thank you to Dianne Skoll E<lt>dfs@roaringpengiun.com<gt> for Remind,
|
||||
and to the IETF calsch wg for the iCalendar specification.
|
||||
|
||||
=cut
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
;; Copyright (C) 2008 Shelagh Manton <shelagh.manton@gmail.com>
|
||||
|
||||
;; Author: Shelagh Manton <shelagh.manton@gmail.com> with help from
|
||||
;; David F. Skoll
|
||||
;; Dianne Skoll
|
||||
;; Keywords: remind configure mode
|
||||
;; Version: .04
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
"WARN" "UNTIL" "THROUGH" "SCANFROM" "DURATION" "TAG" "MSG" "MSF" "CAL" "SPECIAL" "IFTRIG"
|
||||
"PS" "PSFILE" "BANNER" "INCLUDE" "PUSH-OMIT-CONTEXT" "DEBUG" "DUMPVARS"
|
||||
"CLEAR-OMIT-CONTEXT" "POP-OMIT-CONTEXT" "SET" "ERRMSG" "FSET"
|
||||
"EXIT" "FLUSH" "PRESERVE" "MOON" "COLOR")
|
||||
"EXIT" "FLUSH" "PRESERVE" "MOON" "COLOR" "COLOUR")
|
||||
#'(lambda (a b) (> (length a) (length b)))))
|
||||
|
||||
(defconst remind-type-keywords
|
||||
|
||||
@@ -100,5 +100,5 @@ exit
|
||||
|
||||
|
||||
--
|
||||
David F. Skoll <dfs@roaringpenguin.com>
|
||||
Dianne Skoll <dfs@roaringpenguin.com>
|
||||
http://www.roaringpenguin.com/remind/
|
||||
|
||||
@@ -1,5 +1,65 @@
|
||||
CHANGES TO REMIND
|
||||
|
||||
* Version 3.1 Patch 14 - 2014-04-24
|
||||
|
||||
- NEW FEATURE: Putting the line __EOF__ in a .rem file causes Remind
|
||||
to treat it as end-of-file.
|
||||
|
||||
- IMPROVEMENT: Use better PNG images for moons in the HTML display
|
||||
|
||||
- CHANGE: Author name updated from "David" to "Dianne"
|
||||
|
||||
- BUG FIX: The "-n" command-line option should really run in "ADVANCE_MODE"
|
||||
rather than "CAL_MODE" internally; otherwise, the substitution sequences
|
||||
may be misinterpreted.
|
||||
|
||||
- BUG FIX: A typo in clearing out MD5 sum context has been fixed.
|
||||
|
||||
- BUG FIX: Typo in Spanish translation was fixed.
|
||||
|
||||
* Version 3.1 Patch 13 - 2013-03-22
|
||||
|
||||
- BUG FIX: Sunrise/Sunset calculations greatly improved thanks to John
|
||||
McGowan. Accuracy should now be within a couple of minutes in most
|
||||
places.
|
||||
|
||||
- BUG FIX: Allow specification of margins as low as 0 points in rem2ps,
|
||||
courtesy of Jonathan Kamens.
|
||||
|
||||
- BUG FIX: Permit compilation with gcc 2.95 (which doesn't allow variable
|
||||
declarations after non-declaration statements in a block.)
|
||||
|
||||
- BUG FIX: Several minor documentation errors corrected courtesy of
|
||||
Simon Ruderich.
|
||||
|
||||
- BUG FIX: Spurious test harness failure was fixed.
|
||||
|
||||
* Version 3.1 Patch 12 - 2012-01-23
|
||||
|
||||
- NEW FEATURE: Many substitution sequences "%x" have an alternate mode
|
||||
denoted by "%*x". This alternate mode leaves out prepositions. For
|
||||
example, in English "%i" might yield "on 01-25" while "%*i" yields only
|
||||
"01-25".
|
||||
|
||||
- BUG FIX: The "dusk" and "dawn" calculations were completely wrong. They
|
||||
have been fixed. Also, sunrise/sunset calculations have been tweaked,
|
||||
so the results may be off by a minute or two compared to previous versions
|
||||
of Remind.
|
||||
|
||||
* Version 3.1 Patch 11 - 2011-12-16
|
||||
|
||||
- BUG FIX: For some inexplicable reason, dawn was considered to happen when
|
||||
the sun was 14 degrees below the horizon instead of the standard 6
|
||||
degrees for Civil Dawn. This has been fixed.
|
||||
|
||||
- BUG FIXES: Clarified the man pages and fixed some typos.
|
||||
|
||||
- BUG FIX: Add THROUGH to the remind.vim syntax highlighting file.
|
||||
|
||||
- ENHANCEMENT (?): Allow SPECIAL COLOR to be spelled SPECIAL COLOUR.
|
||||
|
||||
- BUG FIX: Apply minor Debian cleanups reported by Kurt B. Kaiser.
|
||||
|
||||
* Version 3.1 Patch 10 - 2010-11-01
|
||||
|
||||
- NOTE: This is the 20th anniversary of Remind's first public release.
|
||||
@@ -536,7 +596,7 @@ CHANGES TO REMIND
|
||||
+ BUG FIXES
|
||||
|
||||
- Fixed sunset(), sunrise() and minsfromutc() functions which were broken
|
||||
by 3.0.17. (In 3.0.17, they did not account for daylight savings time.)
|
||||
by 3.0.17. (In 3.0.17, they did not account for daylight saving time.)
|
||||
|
||||
- Updated "finnish.h" to include proper URL and translation of all
|
||||
error messages.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
# "#COLORS" for examples of ANSI color escape sequences. #
|
||||
# #
|
||||
# This file is part of REMIND. #
|
||||
# Copyright (C) 1992-1997 David F. Skoll #
|
||||
# Copyright (C) 1992-1997 Dianne Skoll #
|
||||
# Copyright (C) 1999-2000 Roaring Penguin Software Inc. #
|
||||
# #
|
||||
#############################################################################
|
||||
@@ -307,8 +307,8 @@ REM Mar 17 MSG %"St. Patrick's%" Day
|
||||
|
||||
# The DST rules are accurate for most locations in
|
||||
# North America
|
||||
REM Sun Apr 1 ++2 UNTIL 1 Jan 2007 MSG Daylight Savings Time - %"DST starts%" %b
|
||||
REM Sun Mar 8 ++2 FROM 1 Jan 2007 MSG Daylight Savings Time - %"DST starts%" %b
|
||||
REM Sun Apr 1 ++2 UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
|
||||
REM Sun Mar 8 ++2 FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST starts%" %b
|
||||
|
||||
REM Apr 1 MSG %"April Fool's%" Day
|
||||
REM Mon Tue Wed Thu Fri Sat 15 Apr MSG %"Income tax%" due
|
||||
@@ -327,8 +327,8 @@ REM Nov 11 MSG %"Veterans Day%"
|
||||
|
||||
# The DST rules are accurate for most locations in
|
||||
# North America
|
||||
REM Sun [_last(Oct)] UNTIL 1 Jan 2007 MSG Daylight Savings Time - %"DST over%"
|
||||
REM Sun 1 Nov FROM 1 Jan 2007 MSG Daylight Savings Time - %"DST over%"
|
||||
REM Sun [_last(Oct)] UNTIL 1 Jan 2007 MSG Daylight Saving Time - %"DST over%"
|
||||
REM Sun 1 Nov FROM 1 Jan 2007 MSG Daylight Saving Time - %"DST over%"
|
||||
|
||||
REM Oct 30 MSG %"Mischief Night%"
|
||||
REM Oct 31 MSG %"Halloween%"
|
||||
@@ -402,7 +402,7 @@ REM PS BoxWidth 3 mul 4 div Border 5 sub moveto \
|
||||
# dates were obtained from "The First Jewish Catalog" by Richard Siegel #
|
||||
# and Michael and Sharon Strassfeld, published by the Jewish Publication #
|
||||
# Society of America. The Reform version of the calendar was guessed #
|
||||
# at by David Skoll based on experience. There is probably no standard #
|
||||
# at by Dianne Skoll based on experience. There is probably no standard #
|
||||
# Reform position on many of the holidays, so you may have to adjust #
|
||||
# the file as required. #
|
||||
# #
|
||||
|
||||
@@ -19,11 +19,11 @@ endif
|
||||
syn case ignore
|
||||
|
||||
syn keyword remindCommands REM OMIT SET FSET UNSET
|
||||
syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED
|
||||
syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH
|
||||
syn keyword remindTag PRIORITY TAG
|
||||
syn keyword remindTimed AT DURATION
|
||||
syn keyword remindMove ONCE SKIP BEFORE AFTER
|
||||
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR
|
||||
syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR COLOUR
|
||||
syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
|
||||
syn keyword remindConditional IF ELSE ENDIF IFTRIG
|
||||
syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.TH CM2REM 1 "18 October 1999"
|
||||
.UC4
|
||||
.UC 4
|
||||
.SH NAME
|
||||
cm2rem.tcl \- Convert Sun's "cm" input file to Remind format
|
||||
.SH SYNOPSIS
|
||||
@@ -13,7 +13,7 @@ files, there should be a system utility to convert them to version 3 files.
|
||||
\fBcm2rem.tcl\fR is supported by Roaring Penguin Software
|
||||
Inc. (http://www.roaringpenguin.com)
|
||||
.PP
|
||||
\fBcm2rem.tcl\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
|
||||
\fBcm2rem.tcl\fR was written by Dianne Skoll <dfs@roaringpenguin.com>.
|
||||
.SH BUGS
|
||||
Not all of the Sun calendar manager options are respected. In particular,
|
||||
nothing is done for e-mail actions. Also, the resulting Remind script
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.TH REM 1 "30 August 2007"
|
||||
.UC4
|
||||
.UC 4
|
||||
.SH NAME
|
||||
rem \- Invoke Remind with a default filename
|
||||
.SH SYNOPSIS
|
||||
@@ -15,6 +15,6 @@ value of DOTREMINDERS as the filename. Otherwise, \fBremind\fR uses
|
||||
the filename $HOME/.reminders
|
||||
.PP
|
||||
.SH AUTHOR
|
||||
Remind was written by David F. Skoll <dfs@roaringpenguin.com>
|
||||
Remind was written by Dianne Skoll <dfs@roaringpenguin.com>
|
||||
.SH SEE ALSO
|
||||
\fBremind\fR
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.TH REM2PS 1 "11 April 2005"
|
||||
.UC4
|
||||
.UC 4
|
||||
.SH NAME
|
||||
rem2ps \- draw a PostScript calendar from Remind output
|
||||
.SH SYNOPSIS
|
||||
@@ -397,7 +397,7 @@ that don't care about this information should ignore lines starting with
|
||||
Rem2PS is now supported by Roaring Penguin Software
|
||||
Inc. (http://www.roaringpenguin.com)
|
||||
.PP
|
||||
Rem2PS was written by David F. Skoll <dfs@roaringpenguin.com>.
|
||||
Rem2PS was written by Dianne Skoll <dfs@roaringpenguin.com>.
|
||||
.SH BUGS
|
||||
All \fBRem2ps\fR options are case-sensitive, unlike \fBRemind\fR.
|
||||
Any time you supply
|
||||
|
||||
130
man/remind.1
@@ -19,6 +19,10 @@ be a directory rather than a plain file, then \fBRemind\fR reads all of
|
||||
the files in that directory that match the pattern "*.rem". The files
|
||||
are read in sorted order; the sort order may depend on your locale, but
|
||||
should match the sort order used by the shell to expand "*.rem".
|
||||
.PP
|
||||
\fBRemind\fR reads its files starting from the beginning to the end, or
|
||||
until it encounters a line whose sole content is "__EOF__" (without the quotes.)
|
||||
Anything after the __EOF__ marker is completely ignored.
|
||||
|
||||
.SH OPTIONS
|
||||
\fBRemind\fR has a slew of options. If you're new to the program,
|
||||
@@ -149,10 +153,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
|
||||
The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger timed
|
||||
reminders that would also be queued. It also causes \fBRemind\fR not to
|
||||
place timed reminders in a calendar.
|
||||
.B \-a
|
||||
The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger
|
||||
timed reminders that trigger on the current day. It also causes
|
||||
\fBRemind\fR not to place timed reminders in a calendar. If you
|
||||
supply two or more \fB\-a\fR options, then \fBRemind\fR \fIwill\fR
|
||||
trigger timed reminders that are in the future, but will not trigger
|
||||
timed reminders whose time has passed. (Regardless of how many
|
||||
\fB\-a\fR options you supply, \fBRemind\fR will not include timed
|
||||
reminders in the calendar if at least one \fB\-a\fR option is used.)
|
||||
|
||||
.TP
|
||||
\fB\-q\fR
|
||||
The \fB\-q\fR option causes \fBRemind\fR not to queue timed reminders
|
||||
@@ -225,25 +235,22 @@ As an example, suppose you have an X Window program called \fBxmessage\fR that
|
||||
pops up a window and displays its invocation arguments. You could use:
|
||||
.PP
|
||||
.nf
|
||||
remind '-kxmessage %s &' ...
|
||||
remind '\-kxmessage %s &' ...
|
||||
.fi
|
||||
.PP
|
||||
to have all of your \fBMSG\fR-type reminders processed using xmessage.
|
||||
.PP
|
||||
A word of warning: It is very easy to spawn dozens of xmessage processes
|
||||
with the above technique. So be very careful. Also, the \fIcmd\fR is passed
|
||||
as an argument to \fBsprintf()\fR. If you use formatting directives other
|
||||
than %s, or use more than one %s directive, there's a good chance that
|
||||
you'll crash \fBRemind\fR. Finally, because all shell and whitespace
|
||||
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.
|
||||
A word of warning: It is very easy to spawn dozens of xmessage
|
||||
processes with the above technique. So be very careful. Because all
|
||||
shell and whitespace 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]
|
||||
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
|
||||
to 5, and can range from 5 to 60. Note that the use of the
|
||||
\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 to 1, and can range from 1 to 60. Note that the use of the
|
||||
\fB\-z\fR option also enables the \fB\-f\fR option.
|
||||
.PP
|
||||
.RS
|
||||
@@ -313,7 +320,7 @@ text editor capable of creating plain ASCII files to create a
|
||||
very simple and almost immediately understandable:
|
||||
.PP
|
||||
.nf
|
||||
REM 6 Jan MSG David's birthday
|
||||
REM 6 Jan MSG Dianne's birthday
|
||||
.fi
|
||||
.PP
|
||||
to the baroque and obscure:
|
||||
@@ -399,7 +406,7 @@ Note that you can omit the reminder type, in which case it
|
||||
defaults to \fBMSG\fR. So you can write:
|
||||
.PP
|
||||
.nf
|
||||
6 January David's Birthday
|
||||
6 January Dianne's Birthday
|
||||
.fi
|
||||
.PP
|
||||
although this is not recommended.
|
||||
@@ -706,7 +713,7 @@ month is computed as the first Monday in the next month, minus 7 days.
|
||||
The \fIback\fR specification in the reminder is used in this case:
|
||||
.PP
|
||||
.nf
|
||||
REM Mon 1 -7 MSG Last Monday of every month.
|
||||
REM Mon 1 \-7 MSG Last Monday of every month.
|
||||
.fi
|
||||
.PP
|
||||
A \fIback\fR is specified with one or two dashes followed by an integer.
|
||||
@@ -857,7 +864,7 @@ the reminder is triggered on the first of each month, as well as the day
|
||||
preceding it. The omitted days are counted.
|
||||
.PP
|
||||
.nf
|
||||
REM 1 -1 OMIT Sat Sun MSG Last working day of month
|
||||
REM 1 \-1 OMIT Sat Sun MSG Last working day of month
|
||||
.fi
|
||||
.PP
|
||||
Again, in the above example, the \fIback\fR of \-1 normally causes the
|
||||
@@ -985,7 +992,7 @@ command-line option. This is useful, for example, in .xinitrc
|
||||
scripts, where you can use the command:
|
||||
.PP
|
||||
.nf
|
||||
remind -fa myreminders &
|
||||
remind \-fa myreminders &
|
||||
.fi
|
||||
.PP
|
||||
This ensures that when you exit X-Windows, the \fBRemind\fR process is killed.
|
||||
@@ -1455,7 +1462,7 @@ administrator.)
|
||||
If you specify a filename of "-" in the \fBINCLUDE\fR command, \fBRemind\fR
|
||||
will begin reading from standard input.
|
||||
.PP
|
||||
If you specify a \fIdirectory\fR as the argument to \fBINCLDUE\fR, then
|
||||
If you specify a \fIdirectory\fR as the argument to \fBINCLUDE\fR, then
|
||||
\fBRemind\fR will process all files in that directory that match the shell
|
||||
patterm "*.rem". The files are processed in sorted order; the sort order
|
||||
matches that used by the shell when it expands "*.rem".
|
||||
@@ -1869,7 +1876,7 @@ If non-zero, then the \fB\-c\fR option was supplied on the command line.
|
||||
.B $Daemon (read-only)
|
||||
If the daemon mode \fB\-z\fR was invoked, contains the number of
|
||||
minutes between wakeups. If not running in daemon mode, contains
|
||||
0. For the MS-DOS version, always contains 0.
|
||||
0.
|
||||
.TP
|
||||
.B $DateSep
|
||||
This variable can be set only to "/" or "-". It holds the character
|
||||
@@ -1885,15 +1892,13 @@ from 0 to 9999.
|
||||
.TP
|
||||
.B $DontFork (read-only)
|
||||
If non-zero, then the \fB\-c\fR option was supplied on the command line.
|
||||
For the MS-DOS version, always contains 1.
|
||||
.TP
|
||||
.B $DontTrigAts (read-only)
|
||||
If non-zero, then the \fB\-a\fR option was supplied on the command line.
|
||||
For the MS-DOS version, always contains 0.
|
||||
The number of times that the \fB\-a\fR option was supplied on the
|
||||
command line.
|
||||
.TP
|
||||
.B $DontQueue (read-only)
|
||||
If non-zero, then the \fB\-q\fR option was supplied on the command line.
|
||||
For the MS-DOS version, always contains 1.
|
||||
.TP
|
||||
.B $EndSent (STRING type)
|
||||
Contains a list of characters that end a sentence. The \fBMSF\fR
|
||||
@@ -1926,10 +1931,10 @@ reminder. The default is 0.
|
||||
The standard Unix library functions may have difficulty dealing with dates
|
||||
later than 2037. If this variable is set to 1, then the UTC calculations
|
||||
"fold back" years later than 2037 before using the Unix library functions.
|
||||
For example, to find out whether or not daylight savings time is in
|
||||
For example, to find out whether or not daylight saving time is in
|
||||
effect in June, 2077, the year is "folded back" to 2010, because both
|
||||
years begin on a Monday, and both are non-leapyears. The rules for
|
||||
daylight savings time are thus presumed to be identical for both
|
||||
daylight saving time are thus presumed to be identical for both
|
||||
years, and the Unix library functions can handle 2010. By default,
|
||||
this variable is 0. Set it to 1 if the sun or UTC functions misbehave
|
||||
for years greater than 2037.
|
||||
@@ -1953,7 +1958,7 @@ If non-zero, then the \fB\-t\fR option was supplied on the command line.
|
||||
.TP
|
||||
.B $LatDeg, $LatMin, $LatSec
|
||||
These specify the latitude of your location. \fB$LatDeg\fR can
|
||||
range from -90 to 90, and the others from -59 to 59. Northern latitudes
|
||||
range from \-90 to 90, and the others from \-59 to 59. Northern latitudes
|
||||
are positive; southern ones are negative. For southern latitudes, all
|
||||
three components should be negative.
|
||||
.TP
|
||||
@@ -1965,8 +1970,10 @@ the latitude and longitude system variables.
|
||||
.TP
|
||||
.B $LongDeg, $LongMin, $LongSec
|
||||
These specify the longitude of your location. \fB$LongDeg\fR can
|
||||
range from -180 to 180. Western longitudes are positive; eastern
|
||||
ones are negative.
|
||||
range from \-180 to 180. Western longitudes are positive; eastern
|
||||
ones are negative. Note that all three components should have the
|
||||
same sign: All positive for Western longitudes and all negative
|
||||
for Eastern longitudes.
|
||||
.RS
|
||||
.PP
|
||||
The latitude and longitude information is required for the functions
|
||||
@@ -1984,7 +1991,7 @@ The number of minutes between Universal Time Coordinated and local time. If
|
||||
\fB$CalcUTC\fR is non-zero, this is calculated upon startup of \fBRemind\fR.
|
||||
Otherwise, you must set it explicitly. If \fB$CalcUTC\fR is zero,
|
||||
then \fB$MinsFromUTC\fR is used in the astronomical calculations. You
|
||||
must adjust it for daylight savings time yourself. Also, if you
|
||||
must adjust it for daylight saving time yourself. Also, if you
|
||||
want to initialize \fB$MinsFromUTC\fR
|
||||
using the \fB\-i\fR command-line option, you
|
||||
must also set \fB$CalcUTC\fR to 0 with the \fB\-i\fR option.
|
||||
@@ -1994,7 +2001,7 @@ If non-zero, then the \fB\-n\fR option was supplied on the command line.
|
||||
.TP
|
||||
.B $NumQueued (read-only)
|
||||
Contains the number of reminders queued so far for background
|
||||
timed triggering. For MS-DOS, always returns 0.
|
||||
timed triggering.
|
||||
.TP
|
||||
.B $NumTrig (read-only)
|
||||
Contains the number of reminders triggered for the current date. One
|
||||
@@ -2114,11 +2121,11 @@ be a string, containing a mix of the characters "rwx" for read,
|
||||
write and execute permission testing. Alternatively, \fImode\fR can
|
||||
be a number as described in the UNIX \fBaccess\fR(2) system call. The
|
||||
function returns 0 if the file can be accessed with the specified \fImode\fR,
|
||||
and -1 otherwise.
|
||||
and \-1 otherwise.
|
||||
.TP
|
||||
.B args(s_fname)
|
||||
Returns the number of arguments expected by the user-defined function
|
||||
\fIfname\fR, or -1 if no such user-defined function exists. Note that
|
||||
\fIfname\fR, or \-1 if no such user-defined function exists. Note that
|
||||
this function examines only user-defined functions, not built-in functions.
|
||||
Its main use is to determine whether or not a particular user-defined
|
||||
function has been defined previously. The \fBargs()\fR function is
|
||||
@@ -2396,7 +2403,7 @@ The optional parameter \fIstart\fR specifies the position in
|
||||
.RE
|
||||
.TP
|
||||
.B isdst([d_date [,t_time]]) \fRor\fB isdst(q_datetime)
|
||||
Returns a positive number if daylight savings time is in
|
||||
Returns a positive number if daylight saving time is in
|
||||
effect on the specified date and time. \fIDate\fR
|
||||
defaults to \fBtoday()\fR and \fItime\fR defaults to midnight.
|
||||
.RS
|
||||
@@ -2624,7 +2631,7 @@ does not check for this.) For example, if you want the time of each new
|
||||
moon displayed, you could use this in your reminder script:
|
||||
.PP
|
||||
.nf
|
||||
REM [moondate(0)] PS [psmoon(0, -1, moontime(0)+"")]
|
||||
REM [moondate(0)] PS [psmoon(0, \-1, moontime(0)+"")]
|
||||
.fi
|
||||
.PP
|
||||
Note how the time is coerced to a string by concatenating the null string.
|
||||
@@ -2666,7 +2673,7 @@ Returns the date as provided by the operating system. This is in contrast to
|
||||
in calendar mode, or if a date has been supplied on the command line.
|
||||
.TP
|
||||
.B sgn(i_num)
|
||||
Returns -1 if \fInum\fR is negative, 1 if \fInum\fR is positive,
|
||||
Returns \-1 if \fInum\fR is negative, 1 if \fInum\fR is positive,
|
||||
and 0 if \fInum\fR is zero.
|
||||
.TP
|
||||
.B shell(s_cmd [,i_maxlen])
|
||||
@@ -2703,7 +2710,7 @@ May 16 and 17. You can go backwards, too, so:
|
||||
.PP
|
||||
.nf
|
||||
OMIT 14 May 2009
|
||||
SET a slide('2009-05-21', -5, "Sat", "Sun")
|
||||
SET a slide('2009-05-21', \-5, "Sat", "Sun")
|
||||
.fi
|
||||
.PP
|
||||
takes \fIa\fR back to 2009-05-13.
|
||||
@@ -2737,7 +2744,7 @@ an algorithm in "Almanac for Computers for the year 1978" by
|
||||
L. E. Doggett, Nautical Almanac Office, USNO. They require
|
||||
the latitude and longitude to be specified by setting the appropriate
|
||||
system variables. (See "System Variables".) The sun functions
|
||||
should be accurate to within about 2 minutes for latitudes lower
|
||||
should be accurate to within about 4 minutes for latitudes lower
|
||||
than 60 degrees. The functions are available starting from version
|
||||
03.00.07 of \fBRemind\fR.
|
||||
.RE
|
||||
@@ -2921,7 +2928,7 @@ exceptions:
|
||||
o
|
||||
If \fBRemind\fR is expecting an expression, as in the \fBSET\fR command,
|
||||
or the \fBIF\fR command, you should \fBnot\fR include square brackets.
|
||||
FOr example, use:
|
||||
For example, use:
|
||||
.PP
|
||||
.nf
|
||||
SET a 4+5
|
||||
@@ -3045,7 +3052,7 @@ to true if a corresponding \fBREM\fR command would trigger. Examples:
|
||||
; Executed except on 1 Nov
|
||||
ENDIF
|
||||
|
||||
IFTRIG 1 -1 OMIT Sat Sun +4
|
||||
IFTRIG 1 \-1 OMIT Sat Sun +4
|
||||
; Executed on last working day of month,
|
||||
; and the 4 working days preceding it
|
||||
ELSE
|
||||
@@ -3073,7 +3080,7 @@ you define a function taking no parameters. Here are some examples:
|
||||
.nf
|
||||
FSET double(x) 2*x
|
||||
FSET yeardiff(date1, date2) year(date1) - year(date2)
|
||||
FSET since(x) ord(year(trigdate())-x)
|
||||
FSET since(x) ord(year(trigdate())\-x)
|
||||
.fi
|
||||
.PP
|
||||
The last function is useful in birthday reminders. For example:
|
||||
@@ -3197,7 +3204,7 @@ clause to do anything.
|
||||
Here's an example:
|
||||
.PP
|
||||
.nf
|
||||
FSET _sfun(x) choose(x, -60, 30, 15, 10, 3, 1, 1, 1, 1, 0)
|
||||
FSET _sfun(x) choose(x, \-60, 30, 15, 10, 3, 1, 1, 1, 1, 0)
|
||||
REM AT 13:00 SCHED _sfun MSG foo
|
||||
.fi
|
||||
.PP
|
||||
@@ -3449,7 +3456,7 @@ program to produce a calendar in PostScript format. For example, the
|
||||
following command will send PostScript code to standard output:
|
||||
.PP
|
||||
.nf
|
||||
remind -p .reminders | rem2ps
|
||||
remind \-p .reminders | rem2ps
|
||||
.fi
|
||||
.PP
|
||||
You can print a PostScript calendar by piping this to the \fBlpr\fR command.
|
||||
@@ -3458,7 +3465,7 @@ If you have a reminder script called ".reminders", and you
|
||||
execute this command:
|
||||
.PP
|
||||
.nf
|
||||
remind -c .reminders jan 1993
|
||||
remind \-c .reminders jan 1993
|
||||
.fi
|
||||
.PP
|
||||
then \fBRemind\fR executes the script 31 times, once for each day in
|
||||
@@ -3473,11 +3480,11 @@ the body in the %"...%" sequence, only that portion is inserted. For
|
||||
example, consider the following:
|
||||
.PP
|
||||
.nf
|
||||
REM 6 Jan MSG %"David's birthday%" is %b
|
||||
REM 6 Jan MSG %"Dianne's birthday%" is %b
|
||||
.fi
|
||||
.PP
|
||||
In the normal mode, \fBRemind\fR would print "David's birthday is today"
|
||||
on 6 January. However, in the calendar mode, only the text "David's birthday"
|
||||
In the normal mode, \fBRemind\fR would print "Dianne's birthday is today"
|
||||
on 6 January. However, in the calendar mode, only the text "Dianne's birthday"
|
||||
is inserted into the box for 6 January.
|
||||
.PP
|
||||
If you explicitly use the %"...%" sequence in a \fBRUN\fR-type reminder,
|
||||
@@ -3691,7 +3698,7 @@ In daemon mode, \fBRemind\fR acts as if the \fB\-f\fR option had been used,
|
||||
so to run in the daemon mode in the background, use:
|
||||
.PP
|
||||
.nf
|
||||
remind -z .reminders &
|
||||
remind \-z .reminders &
|
||||
.fi
|
||||
.PP
|
||||
If you use \fBsh\fR or \fBbash\fR, you may have to use the "nohup" command
|
||||
@@ -4106,7 +4113,7 @@ Calculations" by E. M. Reingold and Nachum Dershowitz.
|
||||
.PP
|
||||
The \fBSPECIAL\fR keyword is used to transmit "out-of-band" information
|
||||
to \fBRemind\fR backends, such as \fBtkremind\fR or \fBRem2PS\fR.
|
||||
They are used only when piping data from a \fBremind -p\fR line.
|
||||
They are used only when piping data from a \fBremind \-p\fR line.
|
||||
(Note that the COLOR special is an exception; it downgrades to the
|
||||
equivalent of MSG in \fBremind's\fR normal mode of operation.)
|
||||
.PP
|
||||
@@ -4147,7 +4154,7 @@ of the \fBMOON\fR special is as follows:
|
||||
1 the first quarter, 2 a full moon and 3 the last quarter.
|
||||
.PP
|
||||
\fImoonsize\fR is the diameter in PostScript units of the moon to
|
||||
draw. If omitted or supplied as -1, the backend chooses an appropriate
|
||||
draw. If omitted or supplied as \-1, the backend chooses an appropriate
|
||||
size.
|
||||
.PP
|
||||
\fIfontsize\fR is the font size in PostScript units of the \fImsg\fR
|
||||
@@ -4165,6 +4172,9 @@ calendar. Use it like this:
|
||||
REM ... SPECIAL COLOR 0 128 0 This is a dark green reminder
|
||||
.fi
|
||||
|
||||
You can spell COLOR either the American way ("COLOR") or the British
|
||||
way ("COLOUR"). This manual will use the American way.
|
||||
|
||||
Immediately following COLOR should be three decimal numbers ranging
|
||||
from 0 to 255 specifying red, green and blue intensities, respectively.
|
||||
The rest of the line is the text to put in the calendar.
|
||||
@@ -4221,7 +4231,7 @@ This section is a sampling of what you can do with \fBRemind\fR.
|
||||
.PP
|
||||
.nf
|
||||
REM 5 Feb 1991 AT 14:00 +45 *30 \\
|
||||
RUN mail -s "Meeting at %2" $LOGNAME </dev/null &
|
||||
RUN mail \-s "Meeting at %2" $LOGNAME </dev/null &
|
||||
.fi
|
||||
.PP
|
||||
On 5 February, 1991, this reminder will mail
|
||||
@@ -4230,14 +4240,14 @@ you reminders of a 2:00pm meeting at 1:15,
|
||||
and the body of the message will be blank.
|
||||
.PP
|
||||
.nf
|
||||
REM AT 17:00 RUN echo "5:00pm - GO HOME!" | xless -g +0+0 &
|
||||
REM AT 17:00 RUN echo "5:00pm - GO HOME!" | xless \-g +0+0 &
|
||||
.fi
|
||||
.PP
|
||||
This reminder will pop up an xless window at 5:00pm every day. The xless
|
||||
window will contain the line "5:00pm - GO HOME!"
|
||||
.PP
|
||||
.nf
|
||||
REM AT 23:59 RUN (sleep 120; remind -a [filename()]) &
|
||||
REM AT 23:59 RUN (sleep 120; remind \-a [filename()]) &
|
||||
.fi
|
||||
.PP
|
||||
This reminder will run at one minute to midnight. It will cause a new
|
||||
@@ -4255,7 +4265,7 @@ This invocation of \fBRemind\fR will cause it to print a calendar for
|
||||
1993, with all entries left blank.
|
||||
.PP
|
||||
.nf
|
||||
REM CAL [trigdate()-date(year(trigdate()), 1, 1)+1]
|
||||
REM CAL [trigdate()\-date(year(trigdate()), 1, 1)+1]
|
||||
.fi
|
||||
.PP
|
||||
This example puts an entry in each box of a calendar showing the number
|
||||
@@ -4315,7 +4325,7 @@ in September. It can move over a range of 7 days. Consider the
|
||||
following sequence:
|
||||
.PP
|
||||
.nf
|
||||
REM Mon 1 Sept SCANFROM [today()-7] SATISFY 1
|
||||
REM Mon 1 Sept SCANFROM [today()\-7] SATISFY 1
|
||||
OMIT [trigdate()]
|
||||
|
||||
REM Mon AFTER MSG Hello
|
||||
@@ -4383,7 +4393,7 @@ versions of \fBRemind\fR prior to 03.00.01.
|
||||
Remind is now supported by Roaring Penguin Software
|
||||
Inc. (http://www.roaringpenguin.com)
|
||||
.PP
|
||||
David F. Skoll <dfs@roaringpenguin.com> wrote \fBRemind\fR. The moon code
|
||||
Dianne Skoll <dfs@roaringpenguin.com> wrote \fBRemind\fR. The moon code
|
||||
was copied largely unmodified from "moontool" by John Walker. The
|
||||
sunrise and sunset functions use ideas from programs by Michael
|
||||
Schwartz and Marc T. Kaufman. The Hebrew calendar support was taken
|
||||
|
||||
@@ -74,7 +74,7 @@ The next control specifies an expiry date for the reminder. Select
|
||||
the check button to enable an expiry date, and fill in the values
|
||||
using pull-down menus.
|
||||
|
||||
The third control specifes how much advance notice you want (if any),
|
||||
The third control specifies how much advance notice you want (if any),
|
||||
and whether or not weekends and holidays are counted when computing advance
|
||||
notice.
|
||||
|
||||
@@ -179,7 +179,7 @@ it starts up in a normal window.
|
||||
.TP
|
||||
.B Show Today's Reminders on Startup
|
||||
If this is selected, \fBTkRemind\fR shows a text window containing reminders
|
||||
which would be issued by "remind -q -a -r" on startup, and when the date
|
||||
which would be issued by "remind \-q \-a \-r" on startup, and when the date
|
||||
changes at midnight.
|
||||
|
||||
.TP
|
||||
@@ -268,7 +268,7 @@ the body. Furthermore, if you use expression-pasting in the body,
|
||||
When \fBTkRemind\fR invokes \fBRemind\fR, it supplies the option:
|
||||
.PP
|
||||
.nf
|
||||
-itkremind=1
|
||||
\-itkremind=1
|
||||
.fi
|
||||
.PP
|
||||
on the command line. So, in your \fBRemind\fR file, you can include:
|
||||
@@ -361,9 +361,9 @@ This line is emitted in response to a \fBSTATUS\fR command. The number
|
||||
TkRemind is now supported by Roaring Penguin Software
|
||||
Inc. (http://www.roaringpenguin.com)
|
||||
.PP
|
||||
TkRemind was written by David F. Skoll <dfs@roaringpenguin.com>.
|
||||
TkRemind was written by Dianne Skoll <dfs@roaringpenguin.com>.
|
||||
|
||||
\fBTkRemind\fR is Copyright 1996-1998 by David F. Skoll, Copyright
|
||||
\fBTkRemind\fR is Copyright 1996-1998 by Dianne Skoll, Copyright
|
||||
1999 by Roaring Penguin Software Inc.
|
||||
|
||||
.SH FILES
|
||||
|
||||
2
scripts/cm2rem.tcl
Executable file → Normal file
@@ -8,7 +8,7 @@
|
||||
# files (version 3 only) to Remind format.
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1998 by David F. Skoll
|
||||
# Copyright (C) 1992-1998 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
#
|
||||
#--------------------------------------------------------------
|
||||
|
||||
7
scripts/tkremind
Executable file → Normal file
@@ -7,7 +7,7 @@
|
||||
# A cheesy graphical front/back end for Remind using Tcl/Tk
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1998 David F. Skoll
|
||||
# Copyright (C) 1992-1998 Dianne Skoll
|
||||
# Copyright (C) 1999-2010 Roaring Penguin Software Inc.
|
||||
#
|
||||
#--------------------------------------------------------------
|
||||
@@ -796,6 +796,7 @@ proc FillCalWindow {} {
|
||||
DoMoonSpecial $n $stuff
|
||||
continue
|
||||
}
|
||||
"COLOUR" -
|
||||
"COLOR" {
|
||||
if {[regexp {^ *([0-9]+) +([0-9]+) +([0-9]+) +(.*)$} $stuff all r g b rest]} {
|
||||
if {$r > 255} {
|
||||
@@ -822,7 +823,7 @@ proc FillCalWindow {} {
|
||||
}
|
||||
}
|
||||
}
|
||||
if { $type != "*" && $type != "COLOR"} {
|
||||
if { $type != "*" && $type != "COLOR" && $type != "COLOUR"} {
|
||||
continue
|
||||
}
|
||||
.cal.t$n configure -state normal
|
||||
@@ -2318,7 +2319,7 @@ proc main {} {
|
||||
|
||||
global AppendFile HighestTagSoFar DayNames
|
||||
catch {
|
||||
puts "\nTkRemind Copyright (C) 1996-1998 David F. Skoll"
|
||||
puts "\nTkRemind Copyright (C) 1996-1998 Dianne Skoll"
|
||||
puts "Copyright (C) 1999-2010 Roaring Penguin Software Inc."
|
||||
}
|
||||
catch { SetFonts }
|
||||
|
||||
@@ -41,7 +41,7 @@ test: remind
|
||||
@sh ../tests/test-rem
|
||||
|
||||
.c.o:
|
||||
@CC@ -c @CFLAGS@ @DEFS@ $(CEXTRA) $(LANGDEF) -I. -I$(srcdir) $<
|
||||
@CC@ -c @CPPFLAGS@ @CFLAGS@ @DEFS@ $(CEXTRA) $(LANGDEF) -I. -I$(srcdir) $<
|
||||
|
||||
rem2ps: rem2ps.o dynbuf.o
|
||||
@CC@ @LDFLAGS@ $(LDEXTRA) -o rem2ps rem2ps.o dynbuf.o
|
||||
@@ -80,13 +80,13 @@ depend:
|
||||
# Build a tar file based on all files checked into git.
|
||||
distro:
|
||||
ln -s . ../remind-$(VERSION)
|
||||
(cd ..; git ls-files -x .gitignore) | sed -e 's/^/remind-$(VERSION)\//' | xargs tar -C .. -cvf remind-$(VERSION).tar
|
||||
(cd ..; git ls-files | fgrep -v .gitignore | fgrep -v remind.php) | sed -e 's/^/remind-$(VERSION)\//' | xargs tar -C .. -cvf remind-$(VERSION).tar
|
||||
gzip -f -v -9 remind-$(VERSION).tar
|
||||
rm -f ../remind-$(VERSION)
|
||||
|
||||
beta-tgz:
|
||||
ln -s . ../remind-$(VERSION)-BETA-$(BETA)
|
||||
(cd ..; git ls-files -x .gitignore) | sed -e 's/^/remind-$(VERSION)-BETA-$(BETA)\//' | xargs tar -C .. -cvf remind-$(VERSION)-BETA-$(BETA).tar
|
||||
(cd ..; git ls-files | fgrep -v .gitignore | fgrep -v remind.php) | sed -e 's/^/remind-$(VERSION)-BETA-$(BETA)\//' | xargs tar -C .. -cvf remind-$(VERSION)-BETA-$(BETA).tar
|
||||
gzip -f -v -9 remind-$(VERSION)-BETA-$(BETA).tar
|
||||
rm -f ../remind-$(VERSION)-BETA-$(BETA)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* The code for generating a calendar. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -1016,11 +1016,12 @@ static int DoCalRem(ParsePtr p, int col)
|
||||
trig.typ = PASSTHRU_TYPE;
|
||||
}
|
||||
if (trig.typ == PASSTHRU_TYPE) {
|
||||
if (!PsCal && strcmp(trig.passthru, "COLOR")) {
|
||||
if (!PsCal && strcmp(trig.passthru, "COLOR") && strcmp(trig.passthru, "COLOUR")) {
|
||||
FreeTrig(&trig);
|
||||
return OK;
|
||||
}
|
||||
if (!strcmp(trig.passthru, "COLOR")) {
|
||||
if (!strcmp(trig.passthru, "COLOR") ||
|
||||
!strcmp(trig.passthru, "COLOUR")) {
|
||||
is_color = 1;
|
||||
/* Strip off the three color numbers */
|
||||
DBufFree(&buf);
|
||||
@@ -1073,6 +1074,7 @@ static int DoCalRem(ParsePtr p, int col)
|
||||
/* Suppress time if it's not today or if it's a non-COLOR special */
|
||||
if (jul != JulianToday ||
|
||||
(trig.typ == PASSTHRU_TYPE &&
|
||||
strcmp(trig.passthru, "COLOUR") &&
|
||||
strcmp(trig.passthru, "COLOR"))) {
|
||||
if (DBufPuts(&obuf, SimpleTime(NO_TIME)) != OK) {
|
||||
DBufFree(&obuf);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* which you can customize. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -178,7 +178,7 @@
|
||||
/*---------------------------------------------------------------------*/
|
||||
/* How many attempts to resolve a weird date spec? */
|
||||
/*---------------------------------------------------------------------*/
|
||||
#define TRIG_ATTEMPTS 50
|
||||
#define TRIG_ATTEMPTS 500
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
/* How many global omits of the form YYYY MM DD do we handle? */
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* which you can customize. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -178,7 +178,7 @@
|
||||
/*---------------------------------------------------------------------*/
|
||||
/* How many attempts to resolve a weird date spec? */
|
||||
/*---------------------------------------------------------------------*/
|
||||
#define TRIG_ATTEMPTS 50
|
||||
#define TRIG_ATTEMPTS 500
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
/* How many global omits of the form YYYY MM DD do we handle? */
|
||||
|
||||
24
src/dorem.c
@@ -7,7 +7,7 @@
|
||||
/* commands. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -708,14 +708,14 @@ int TriggerReminder(ParsePtr p, Trigger *t, TimeTrig *tim, int jul)
|
||||
DBufInit(&calRow);
|
||||
DBufInit(&pre_buf);
|
||||
if (t->typ == RUN_TYPE && RunDisabled) return E_RUN_DISABLED;
|
||||
if ((t->typ == PASSTHRU_TYPE && strcmp(t->passthru, "COLOR")) ||
|
||||
if ((t->typ == PASSTHRU_TYPE && strcmp(t->passthru, "COLOR") && strcmp(t->passthru, "COLOUR")) ||
|
||||
t->typ == CAL_TYPE ||
|
||||
t->typ == PS_TYPE ||
|
||||
t->typ == PSF_TYPE)
|
||||
return OK;
|
||||
|
||||
/* Handle COLOR types */
|
||||
if (t->typ == PASSTHRU_TYPE && !strcmp(t->passthru, "COLOR")) {
|
||||
if (t->typ == PASSTHRU_TYPE && (!strcmp(t->passthru, "COLOR") || !strcmp(t->passthru, "COLOUR"))) {
|
||||
/* Strip off three tokens */
|
||||
r = ParseToken(p, &buf);
|
||||
if (!NextMode) {
|
||||
@@ -751,10 +751,10 @@ int TriggerReminder(ParsePtr p, Trigger *t, TimeTrig *tim, int jul)
|
||||
DBufFree(&buf);
|
||||
}
|
||||
|
||||
/* If it's NextMode, process as a CAL-type entry, and issue simple-calendar
|
||||
format. */
|
||||
/* If it's NextMode, process as a ADVANCE_MODE-type entry, and issue
|
||||
simple-calendar format. */
|
||||
if (NextMode) {
|
||||
if ( (r=DoSubst(p, &buf, t, tim, jul, CAL_MODE)) ) return r;
|
||||
if ( (r=DoSubst(p, &buf, t, tim, jul, ADVANCE_MODE)) ) return r;
|
||||
if (!DBufLen(&buf)) {
|
||||
DBufFree(&buf);
|
||||
DBufFree(&pre_buf);
|
||||
@@ -924,7 +924,17 @@ int ShouldTriggerReminder(Trigger *t, TimeTrig *tim, int jul, int *err)
|
||||
|
||||
/* Don't trigger timed reminders if DontIssueAts is true, and if the
|
||||
reminder is for today */
|
||||
if (jul == JulianToday && DontIssueAts && tim->ttime != NO_TIME) return 0;
|
||||
if (jul == JulianToday && DontIssueAts && tim->ttime != NO_TIME) {
|
||||
if (DontIssueAts > 1) {
|
||||
/* If two or more -a options, then *DO* issue ats that are in the
|
||||
future */
|
||||
if (tim->ttime < SystemTime(0) / 60) {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Don't trigger "old" timed reminders */
|
||||
/*** REMOVED...
|
||||
|
||||
124
src/dosubst.c
@@ -6,7 +6,7 @@
|
||||
/* reminders are triggered. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -62,6 +62,7 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
char *os;
|
||||
char s[256];
|
||||
int origLen = DBufLen(dbuf);
|
||||
int altmode;
|
||||
|
||||
FromJulian(jul, &y, &m, &d);
|
||||
|
||||
@@ -141,6 +142,7 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
if (DBufPutc(dbuf, c) != OK) return E_NO_MEM;
|
||||
continue;
|
||||
}
|
||||
altmode = 0;
|
||||
s[0] = 0;
|
||||
c = ParseChar(p, &err, 0);
|
||||
if (err) {
|
||||
@@ -150,6 +152,17 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
if (!c) {
|
||||
break;
|
||||
}
|
||||
if (c == '*') {
|
||||
altmode = c;
|
||||
c = ParseChar(p, &err, 0);
|
||||
if (err) {
|
||||
DBufFree(dbuf);
|
||||
return err;
|
||||
}
|
||||
if (!c) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
done = 0;
|
||||
if (diff <= 1) {
|
||||
switch(UPPER(c)) {
|
||||
@@ -206,8 +219,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_A_OVER
|
||||
L_A_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %d %s, %d", L_ON, DayName[jul%7], d,
|
||||
MonthName[m], y);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %d %s, %d", DayName[jul%7], d,
|
||||
MonthName[m], y);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %d %s, %d", L_ON, DayName[jul%7], d,
|
||||
MonthName[m], y);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -225,7 +243,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_C_OVER
|
||||
L_C_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s", L_ON, DayName[jul%7]);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s", DayName[jul%7]);
|
||||
} else {
|
||||
sprintf(s, "%s %s", L_ON, DayName[jul%7]);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -243,8 +265,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_E_OVER
|
||||
L_E_OVER
|
||||
#else
|
||||
sprintf(s, "%s %02d%c%02d%c%04d", L_ON, d, DateSep,
|
||||
m+1, DateSep, y);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%02d%c%02d%c%04d", d, DateSep,
|
||||
m+1, DateSep, y);
|
||||
} else {
|
||||
sprintf(s, "%s %02d%c%02d%c%04d", L_ON, d, DateSep,
|
||||
m+1, DateSep, y);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -253,7 +280,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_F_OVER
|
||||
L_F_OVER
|
||||
#else
|
||||
sprintf(s, "%s %02d%c%02d%c%04d", L_ON, m+1, DateSep, d, DateSep, y);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%02d%c%02d%c%04d", m+1, DateSep, d, DateSep, y);
|
||||
} else {
|
||||
sprintf(s, "%s %02d%c%02d%c%04d", L_ON, m+1, DateSep, d, DateSep, y);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -262,7 +293,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_G_OVER
|
||||
L_G_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %d %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %d %s", DayName[jul%7], d, MonthName[m]);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %d %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -271,7 +306,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_H_OVER
|
||||
L_H_OVER
|
||||
#else
|
||||
sprintf(s, "%s %02d%c%02d", L_ON, d, DateSep, m+1);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%02d%c%02d", d, DateSep, m+1);
|
||||
} else {
|
||||
sprintf(s, "%s %02d%c%02d", L_ON, d, DateSep, m+1);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -280,7 +319,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_I_OVER
|
||||
L_I_OVER
|
||||
#else
|
||||
sprintf(s, "%s %02d%c%02d", L_ON, m+1, DateSep, d);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%02d%c%02d", m+1, DateSep, d);
|
||||
} else {
|
||||
sprintf(s, "%s %02d%c%02d", L_ON, m+1, DateSep, d);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -289,8 +332,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_J_OVER
|
||||
L_J_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %s %d%s, %d", L_ON, DayName[jul%7],
|
||||
MonthName[m], d, plu, y);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %s %d%s, %d", DayName[jul%7],
|
||||
MonthName[m], d, plu, y);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %s %d%s, %d", L_ON, DayName[jul%7],
|
||||
MonthName[m], d, plu, y);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -299,8 +347,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_K_OVER
|
||||
L_K_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %s %d%s", L_ON, DayName[jul%7],
|
||||
MonthName[m], d, plu);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %s %d%s", DayName[jul%7],
|
||||
MonthName[m], d, plu);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %s %d%s", L_ON, DayName[jul%7],
|
||||
MonthName[m], d, plu);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -309,7 +362,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_L_OVER
|
||||
L_L_OVER
|
||||
#else
|
||||
sprintf(s, "%s %04d%c%02d%c%02d", L_ON, y, DateSep, m+1, DateSep, d);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%04d%c%02d%c%02d", y, DateSep, m+1, DateSep, d);
|
||||
} else {
|
||||
sprintf(s, "%s %04d%c%02d%c%02d", L_ON, y, DateSep, m+1, DateSep, d);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -391,8 +448,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_U_OVER
|
||||
L_U_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], d,
|
||||
plu, MonthName[m], y);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %d%s %s, %d", DayName[jul%7], d,
|
||||
plu, MonthName[m], y);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], d,
|
||||
plu, MonthName[m], y);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -401,8 +463,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_V_OVER
|
||||
L_V_OVER
|
||||
#else
|
||||
sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], d, plu,
|
||||
MonthName[m]);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%s, %d%s %s", DayName[jul%7], d, plu,
|
||||
MonthName[m]);
|
||||
} else {
|
||||
sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], d, plu,
|
||||
MonthName[m]);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -464,7 +531,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
#ifdef L_2_OVER
|
||||
L_2_OVER
|
||||
#else
|
||||
sprintf(s, "%s %d%c%02d%s", L_AT, hh, TimeSep, min, pm);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%d%c%02d%s", hh, TimeSep, min, pm);
|
||||
} else {
|
||||
sprintf(s, "%s %d%c%02d%s", L_AT, hh, TimeSep, min, pm);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -474,7 +545,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
L_3_OVER
|
||||
#else
|
||||
|
||||
sprintf(s, "%s %02d%c%02d", L_AT, h, TimeSep, min);
|
||||
if (altmode == '*') {
|
||||
sprintf(s, "%02d%c%02d", h, TimeSep, min);
|
||||
} else {
|
||||
sprintf(s, "%s %02d%c%02d", L_AT, h, TimeSep, min);
|
||||
}
|
||||
#endif
|
||||
SHIP_OUT(s);
|
||||
break;
|
||||
@@ -590,8 +665,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
|
||||
if (DBufPutc(dbuf, c) != OK) return E_NO_MEM;
|
||||
}
|
||||
if (isupper(c)) {
|
||||
os = DBufValue(dbuf) - strlen(s);
|
||||
*os = UPPER(*os);
|
||||
os = DBufValue(dbuf);
|
||||
os += strlen(os) - strlen(s);
|
||||
if (os >= DBufValue(dbuf)) {
|
||||
*os = UPPER(*os);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* buffers. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Declaration of functions for manipulating dynamic buffers */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Error definitions. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* This file contains routines to parse and evaluate */
|
||||
/* expressions. */
|
||||
/* */
|
||||
/* Copyright 1992-1998 by David F. Skoll */
|
||||
/* Copyright 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Contains a few definitions used by expression evaluator. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
23
src/files.c
@@ -7,7 +7,7 @@
|
||||
/* files. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -181,6 +181,8 @@ int ReadLine(void)
|
||||
static int ReadLineFromFile(void)
|
||||
{
|
||||
int l;
|
||||
char copy_buffer[4096];
|
||||
size_t n;
|
||||
|
||||
DynamicBuffer buf;
|
||||
|
||||
@@ -234,8 +236,25 @@ static int ReadLineFromFile(void)
|
||||
DBufFree(&LineBuffer);
|
||||
return E_NO_MEM;
|
||||
}
|
||||
FreshLine = 1;
|
||||
DBufFree(&buf);
|
||||
|
||||
/* If the line is: __EOF__ treat it as end-of-file */
|
||||
CurLine = DBufValue(&LineBuffer);
|
||||
if (!strcmp(CurLine, "__EOF__")) {
|
||||
if (PurgeMode && PurgeFP) {
|
||||
PurgeEchoLine("%s\n", "__EOF__");
|
||||
while ((n = fread(copy_buffer, 1, sizeof(copy_buffer), fp)) != 0) {
|
||||
fwrite(copy_buffer, 1, n, PurgeFP);
|
||||
}
|
||||
if (PurgeFP != stdout) fclose(PurgeFP);
|
||||
PurgeFP = NULL;
|
||||
}
|
||||
FCLOSE(fp);
|
||||
DBufFree(&LineBuffer);
|
||||
CurLine = DBufValue(&LineBuffer);
|
||||
}
|
||||
|
||||
FreshLine = 1;
|
||||
if (DebugFlag & DB_ECHO_LINE) OutputLine(ErrFp);
|
||||
return OK;
|
||||
}
|
||||
|
||||
77
src/funcs.c
@@ -6,7 +6,7 @@
|
||||
/* expressions. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -1791,7 +1791,7 @@ static int FEasterdate(func_info *info)
|
||||
/* */
|
||||
/* FIsdst and FMinsfromutc */
|
||||
/* */
|
||||
/* Check whether daylight savings time is in effect, and */
|
||||
/* Check whether daylight saving time is in effect, and */
|
||||
/* get minutes from UTC. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -1854,12 +1854,10 @@ static int FTimeStuff(int wantmins, func_info *info)
|
||||
|
||||
static int SunStuff(int rise, double cosz, int jul)
|
||||
{
|
||||
int year, mon, day;
|
||||
int jan0;
|
||||
int mins, hours;
|
||||
int dusk_or_dawn;
|
||||
int year, mon, day;
|
||||
|
||||
double M, L, tanA, sinDelta, cosDelta, a, a_hr, cosH, t, H, T;
|
||||
double M, L, sinDelta, cosDelta, a, a_hr, cosH, t, H, T;
|
||||
double latitude, longdeg, UT, local;
|
||||
|
||||
/* Get offset from UTC */
|
||||
@@ -1879,47 +1877,39 @@ static int SunStuff(int rise, double cosz, int jul)
|
||||
|
||||
|
||||
FromJulian(jul, &year, &mon, &day);
|
||||
jan0 = jul - Julian(year, 0, 1);
|
||||
|
||||
dusk_or_dawn = rise;
|
||||
if (rise > 1)
|
||||
rise -= 2;
|
||||
/* Following formula on page B6 exactly... */
|
||||
t = (double) jan0;
|
||||
if (rise) t += (6.0 + longdeg/15.0) / 24.0;
|
||||
else t += (18.0 + longdeg/15.0) / 24.0;
|
||||
|
||||
/* Mean anomaly of sun for 1978 ... how accurate for other years??? */
|
||||
M = 0.985600 * t - 3.251; /* In degrees */
|
||||
/* Following formula on page B6 exactly... */
|
||||
t = (double) jul;
|
||||
if (rise) {
|
||||
t += (6.0 + longdeg/15.0) / 24.0;
|
||||
} else {
|
||||
t += (18.0 + longdeg/15.0) / 24.0;
|
||||
}
|
||||
|
||||
/* Mean anomaly of sun starting from 1 Jan 1990 */
|
||||
/* NOTE: This assumes that BASE = 1990!!! */
|
||||
#if BASE != 1990
|
||||
#error Sun calculations assume a BASE of 1990!
|
||||
#endif
|
||||
t = 0.9856002585 * t;
|
||||
M = t + 357.828757; /* In degrees */
|
||||
|
||||
/* Make sure M is in the range [0, 360) */
|
||||
M -= (floor(M/360.0) * 360.0);
|
||||
|
||||
/* Sun's true longitude */
|
||||
L = M + 1.916*sin(DEGRAD*M) + 0.02*sin(2*DEGRAD*M) + 282.565;
|
||||
if (dusk_or_dawn == 2) {/* dusk */
|
||||
L += 6;
|
||||
} else if (dusk_or_dawn == 3) {/* dawn */
|
||||
L -= 14;
|
||||
}
|
||||
L = M + 1.916*sin(DEGRAD*M) + 0.02*sin(2*DEGRAD*M) + 283.07080214;
|
||||
if (L > 360.0) L -= 360.0;
|
||||
|
||||
/* Tan of sun's right ascension */
|
||||
tanA = 0.91746 * tan(DEGRAD*L);
|
||||
a = RADDEG * atan(tanA);
|
||||
|
||||
/* Move a into same quadrant as L */
|
||||
if (0.0 <= L && L < 90.0) {
|
||||
if (a < 0.0) a += 180.0;
|
||||
} else if (90.0 <= L && L < 180.0) {
|
||||
a += 180.0;
|
||||
} else if (180.0 <= L && L < 270.0) {
|
||||
a += 180.0;
|
||||
} else {
|
||||
if (a > 0.0) a += 180.0;
|
||||
a = RADDEG * atan2(0.91746*sin(DEGRAD*L), cos(DEGRAD*L));
|
||||
if (a<0) {
|
||||
a += 360.0;
|
||||
}
|
||||
/* if (fabs(a - L) > 90.0)
|
||||
a += 180.0; */
|
||||
|
||||
if (a > 360.0)
|
||||
a -= 360.0;
|
||||
|
||||
a_hr = a / 15.0;
|
||||
|
||||
/* Sine of sun's declination */
|
||||
@@ -1941,7 +1931,9 @@ static int SunStuff(int rise, double cosz, int jul)
|
||||
H = RADDEG * acos(cosH);
|
||||
if (rise) H = 360.0 - H;
|
||||
|
||||
T = H / 15.0 + a_hr - 0.065710*t - 6.620;
|
||||
t -= 360.0*floor(t/360.0);
|
||||
T = (H-t) / 15.0 + a_hr - 6.726637276;
|
||||
|
||||
if (T >= 24.0) T -= 24.0;
|
||||
else if (T < 0.0) T+= 24.0;
|
||||
|
||||
@@ -1952,6 +1944,9 @@ static int SunStuff(int rise, double cosz, int jul)
|
||||
if (local < 0.0) local += 24.0;
|
||||
else if (local >= 24.0) local -= 24.0;
|
||||
|
||||
/* Round off local time to nearest minute */
|
||||
local = floor(local * 60.0 + 0.5) / 60.0;
|
||||
|
||||
hours = (int) local;
|
||||
mins = (int) ((local - hours) * 60.0);
|
||||
|
||||
@@ -1975,9 +1970,13 @@ static int SunStuff(int rise, double cosz, int jul)
|
||||
static int FSun(int rise, func_info *info)
|
||||
{
|
||||
int jul = JulianToday;
|
||||
static double cosz = -0.014543897; /* for sunrise and sunset */
|
||||
double cosz = -0.014543897; /* for sunrise and sunset */
|
||||
int r;
|
||||
|
||||
/* Civil twilight: cos(96 degrees) */
|
||||
if (rise == 2 || rise == 3) {
|
||||
cosz = -0.104528463268;
|
||||
}
|
||||
if (Nargs >= 1) {
|
||||
if (!HASDATE(ARG(0))) return E_BAD_TYPE;
|
||||
jul = DATEPART(ARG(0));
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
/* globals.h and err.h */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/* MK_GLOBALS. Also contains useful macro definitions. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Support for the Hebrew calendar */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/* Derived from code written by Amos Shapir in 1978; revised */
|
||||
|
||||
29
src/init.c
@@ -7,8 +7,8 @@
|
||||
/* in normal mode. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1999-2010 by Roaring Penguin Software Inc. */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2011 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
* v = Dump variables at end
|
||||
* l = Display entire line in error messages
|
||||
* -e = Send messages normally sent to stderr to stdout instead
|
||||
* -z[n] = Daemon mode waking up every n (def 5) minutes.
|
||||
* -z[n] = Daemon mode waking up every n (def 1) minutes.
|
||||
* -bn = Time format for cal (0, 1, or 2)
|
||||
* -xn = Max. number of iterations for SATISFY
|
||||
* -uname = Run as user 'name' - only valid when run by root. If run
|
||||
@@ -137,7 +137,7 @@ void InitRemind(int argc, char const *argv[])
|
||||
char const *s;
|
||||
int weeks;
|
||||
|
||||
int jul, tim;
|
||||
int jul;
|
||||
|
||||
#if defined(__APPLE__)
|
||||
rkrphgvba(0);
|
||||
@@ -146,7 +146,6 @@ void InitRemind(int argc, char const *argv[])
|
||||
#endif
|
||||
|
||||
jul = NO_DATE;
|
||||
tim = NO_TIME;
|
||||
|
||||
/* Initialize global dynamic buffers */
|
||||
DBufInit(&Banner);
|
||||
@@ -318,7 +317,7 @@ void InitRemind(int argc, char const *argv[])
|
||||
|
||||
case 'a':
|
||||
case 'A':
|
||||
DontIssueAts = 1;
|
||||
DontIssueAts++;
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
@@ -570,12 +569,12 @@ void InitRemind(int argc, char const *argv[])
|
||||
}
|
||||
if (d == NO_DAY) d=1;
|
||||
if (d > DaysInMonth(m, y)) {
|
||||
fprintf(ErrFp, BadDate);
|
||||
fprintf(ErrFp, "%s", BadDate);
|
||||
Usage();
|
||||
}
|
||||
JulianToday = Julian(y, m, d);
|
||||
if (JulianToday == -1) {
|
||||
fprintf(ErrFp, BadDate);
|
||||
fprintf(ErrFp, "%s", BadDate);
|
||||
Usage();
|
||||
}
|
||||
CurYear = y;
|
||||
@@ -601,8 +600,8 @@ void InitRemind(int argc, char const *argv[])
|
||||
#ifndef L_USAGE_OVERRIDE
|
||||
void Usage(void)
|
||||
{
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 David F. Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "Copyright 1999-2010 Roaring Penguin Software Inc.\n");
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 Dianne Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "Copyright 1999-2011 Roaring Penguin Software Inc.\n");
|
||||
#ifdef BETA
|
||||
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");
|
||||
#endif
|
||||
@@ -623,7 +622,7 @@ void Usage(void)
|
||||
fprintf(ErrFp, " -a Don't trigger timed reminders immediately - just queue them\n");
|
||||
fprintf(ErrFp, " -q Don't queue timed reminders\n");
|
||||
fprintf(ErrFp, " -f Trigger timed reminders by staying in foreground\n");
|
||||
fprintf(ErrFp, " -z[n] Enter daemon mode, waking every n (5) minutes.\n");
|
||||
fprintf(ErrFp, " -z[n] Enter daemon mode, waking every n (1) minutes.\n");
|
||||
fprintf(ErrFp, " -d... Debug: e=echo x=expr-eval t=trig v=dumpvars l=showline f=tracefiles\n");
|
||||
fprintf(ErrFp, " -e Divert messages normally sent to stderr to stdout\n");
|
||||
fprintf(ErrFp, " -b[n] Time format for cal: 0=am/pm, 1=24hr, 2=none\n");
|
||||
@@ -678,7 +677,7 @@ static void ChgUser(char const *user)
|
||||
|
||||
home = malloc(strlen(pwent->pw_dir) + 6);
|
||||
if (!home) {
|
||||
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]);
|
||||
fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
|
||||
exit(1);
|
||||
}
|
||||
sprintf(home, "HOME=%s", pwent->pw_dir);
|
||||
@@ -686,7 +685,7 @@ static void ChgUser(char const *user)
|
||||
|
||||
shell = malloc(strlen(pwent->pw_shell) + 7);
|
||||
if (!shell) {
|
||||
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]);
|
||||
fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
|
||||
exit(1);
|
||||
}
|
||||
sprintf(shell, "SHELL=%s", pwent->pw_shell);
|
||||
@@ -695,14 +694,14 @@ static void ChgUser(char const *user)
|
||||
if (pwent->pw_uid) {
|
||||
username = malloc(strlen(pwent->pw_name) + 6);
|
||||
if (!username) {
|
||||
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]);
|
||||
fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
|
||||
exit(1);
|
||||
}
|
||||
sprintf(username, "USER=%s", pwent->pw_name);
|
||||
putenv(username);
|
||||
logname= malloc(strlen(pwent->pw_name) + 9);
|
||||
if (!logname) {
|
||||
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]);
|
||||
fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
|
||||
exit(1);
|
||||
}
|
||||
sprintf(logname, "LOGNAME=%s", pwent->pw_name);
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
/* Header file for language support for various languages. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
/* I'm chauvinistic and name each language with its English name... */
|
||||
|
||||
#define ENGLISH 0 /* original by David F. Skoll */
|
||||
#define ENGLISH 0 /* original by Dianne Skoll */
|
||||
#define GERMAN 1 /* translated by Wolfgang Thronicke */
|
||||
#define DUTCH 2 /* translated by Willem Kasdorp and Erik-Jan Vens */
|
||||
#define FINNISH 3 /* translated by Mikko Silvonen */
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* */
|
||||
/* REMIND is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* REMIND is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* This file is Copyright (C) 1993 by Mogens Lynnerup. */
|
||||
/* */
|
||||
@@ -100,10 +100,10 @@
|
||||
|
||||
#define L_AMPM_OVERRIDE(ampm, hour) ampm = (hour < 12) ? (hour<5) ? " om natten" : " om formiddagen" : (hour > 17) ? " om aftenen" : " om eftermiddagen";
|
||||
#define L_ORDINAL_OVERRIDE plu = ".";
|
||||
#define L_A_OVER sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y);
|
||||
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s %d", DayName[jul%7], d, MonthName[m], y); } else { sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y); }
|
||||
#define L_E_OVER sprintf(s, "den %02d%c%02d%c%04d", d, DateSep, m+1, DateSep, y);
|
||||
#define L_F_OVER sprintf(s, "den %02d%c%02d%c%04d", m+1, DateSep, d, DateSep, y);
|
||||
#define L_G_OVER sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s", DayName[jul%7], d, MonthName[m]); } else { sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]); }
|
||||
#define L_H_OVER sprintf(s, "den %02d%c%02d", d, DateSep, m+1);
|
||||
#define L_I_OVER sprintf(s, "den %02d%c%02d", m+1, DateSep, d);
|
||||
#define L_U_OVER L_A_OVER
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
/* */
|
||||
/* Author: Willem Kasdorp */
|
||||
/* */
|
||||
/* Modified slightly by David Skoll */
|
||||
/* Modified slightly by Dianne Skoll */
|
||||
/* */
|
||||
/* Further corrections by Erik-Jan Vens */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Support for the English language. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* This file is Copyright (C) 1993-1998 by Mikko Silvonen. */
|
||||
/* REMIND is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* REMIND is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -161,26 +161,19 @@
|
||||
} \
|
||||
}
|
||||
#endif
|
||||
#define L_A_OVER sprintf(s, "%s%s %d. %s%s %d", DayName[jul%7], L_ON, d, \
|
||||
MonthName[m], L_PARTIT, y);
|
||||
#define L_C_OVER sprintf(s, "%s%s", DayName[jul%7], L_ON);
|
||||
#define L_E_OVER sprintf(s, "%02d%c%02d%c%04d", d, DateSep, m+1, DateSep, \
|
||||
y);
|
||||
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s %d. %s %d", DayName[jul%7], d, MonthName[m], y); } else { sprintf(s, "%s%s %d. %s%s %d", DayName[jul%7], L_ON, d, MonthName[m], L_PARTIT, y); }
|
||||
#define L_C_OVER if (altmode == '*') { sprintf(s, "%s", DayName[jul%7]); } else { sprintf(s, "%s%s", DayName[jul%7], L_ON); }
|
||||
#define L_E_OVER sprintf(s, "%02d%c%02d%c%04d", d, DateSep, m+1, DateSep, y);
|
||||
#define L_F_OVER sprintf(s, "%02d%c%02d%c%04d", m+1, DateSep, d, DateSep, y);
|
||||
#define L_G_OVER sprintf(s, "%s%s %d. %s%s", DayName[jul%7], L_ON, d, \
|
||||
MonthName[m], L_PARTIT);
|
||||
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s %d. %s", DayName[jul%7], d, MonthName[m]); } else { sprintf(s, "%s%s %d. %s%s", DayName[jul%7], L_ON, d, MonthName[m], L_PARTIT); }
|
||||
#define L_H_OVER sprintf(s, "%02d%c%02d", d, DateSep, m+1);
|
||||
#define L_I_OVER sprintf(s, "%02d%c%02d", m+1, DateSep, d);
|
||||
#define L_J_OVER sprintf(s, "%s%s %sn %d%s %d", DayName[jul%7], L_ON, \
|
||||
MonthName[m], d, plu, y);
|
||||
#define L_K_OVER sprintf(s, "%s%s %sn %d%s", DayName[jul%7], L_ON, \
|
||||
MonthName[m], d, plu);
|
||||
#define L_J_OVER if (altmode == '*') { sprintf(s, "%s %sn %d%s %d", DayName[jul%7], MonthName[m], d, plu, y); } else { sprintf(s, "%s%s %sn %d%s %d", DayName[jul%7], L_ON, MonthName[m], d, plu, y); }
|
||||
#define L_K_OVER if (altmode == '*') { sprintf(s, "%s %sn %d%s", DayName[jul%7], MonthName[m], d, plu); } else { sprintf(s, "%s%s %sn %d%s", DayName[jul%7], L_ON, MonthName[m], d, plu); }
|
||||
#define L_L_OVER sprintf(s, "%04d%c%02d%c%02d", y, DateSep, m+1, DateSep, d);
|
||||
#define L_Q_OVER sprintf(s, "n");
|
||||
#define L_U_OVER sprintf(s, "%s%s %d%s %s%s %d", DayName[jul%7], L_ON, \
|
||||
d, plu, MonthName[m], L_PARTIT, y);
|
||||
#define L_V_OVER sprintf(s, "%s%s %d%s %s%s", DayName[jul%7], L_ON, d, \
|
||||
plu, MonthName[m], L_PARTIT);
|
||||
#define L_U_OVER if (altmode == '*') { sprintf(s, "%s %d%s %s %d", DayName[jul%7], d, plu, MonthName[m], y); } else { sprintf(s, "%s%s %d%s %s%s %d", DayName[jul%7], L_ON, d, plu, MonthName[m], L_PARTIT, y); }
|
||||
#define L_V_OVER if (altmode == '*') { sprintf(s, "%s %d%s %s", DayName[jul%7], d, plu, MonthName[m]); } else { sprintf(s, "%s%s %d%s %s%s", DayName[jul%7], L_ON, d, plu, MonthName[m], L_PARTIT); }
|
||||
#define L_1_OVER \
|
||||
if (tdiff == 0) \
|
||||
sprintf(s, "%s", L_NOW); \
|
||||
@@ -529,7 +522,7 @@ EXTERN char *ErrMsg[] =
|
||||
#define L_USAGE_OVERRIDE 1
|
||||
void Usage(void)
|
||||
{
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 David F. Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 Dianne Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
|
||||
#ifdef BETA
|
||||
fprintf(ErrFp, ">>>> BETAVERSIO <<<<\n");
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* */
|
||||
/* REMIND is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* REMIND is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* This file is Copyright (C) 1993 by Laurent Duperval and */
|
||||
/* David F. Skoll. */
|
||||
/* Dianne Skoll. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -129,13 +129,9 @@ else if (tdiff < 0) { \
|
||||
sprintf(s, "dans %d heure%s et %d minute%s", hdiff, hplu, mdiff, mplu); \
|
||||
}
|
||||
|
||||
#define L_J_OVER \
|
||||
sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], \
|
||||
d, plu, MonthName[m], y);
|
||||
#define L_J_OVER if (altmode == '*') { sprintf(s, "%s, %d%s %s, %d", DayName[jul%7], d, plu, MonthName[m], y); } else { sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], d, plu, MonthName[m], y); }
|
||||
|
||||
#define L_K_OVER \
|
||||
sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], \
|
||||
d, plu, MonthName[m]);
|
||||
#define L_K_OVER if (altmode == '*') { sprintf(s, "%s, %d%s %s", DayName[jul%7], d, plu, MonthName[m]); } else { sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], d, plu, MonthName[m]); }
|
||||
|
||||
#endif /* L_IN_DOSUBST */
|
||||
|
||||
@@ -360,7 +356,7 @@ EXTERN char *ErrMsg[] =
|
||||
#define L_USAGE_OVERRIDE 1
|
||||
void Usage(void)
|
||||
{
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 David F. Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 Dianne Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
|
||||
#ifdef BETA
|
||||
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* I don't speak German. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -93,8 +93,8 @@
|
||||
See the file dosubst.c for more info. */
|
||||
#define L_AMPM_OVERRIDE(ampm, hour) ampm = (hour < 12) ? (hour<5) ? " nachts" : " vormittags" : (hour > 17) ? " abends" : " nachmittags";
|
||||
#define L_ORDINAL_OVERRIDE plu = ".";
|
||||
#define L_A_OVER sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y);
|
||||
#define L_G_OVER sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s %d", DayName[jul%7], d, MonthName[m], y); } else { sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y); }
|
||||
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s", DayName[jul%7], d, MonthName[m]); } else { sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]); }
|
||||
#define L_U_OVER L_A_OVER
|
||||
#define L_V_OVER L_G_OVER
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Support for the Icelandic language. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* Translated by Björn Davíðsson (bjossi@snerpa.is) */
|
||||
/* */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/* This file is part of REMIND. */
|
||||
/* It is Copyright (C) 1996 by Valerio Aimale */
|
||||
/* */
|
||||
/* Remind is copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Remind is copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* This file is Copyright (C) 1993 by Trygve Randen. */
|
||||
/* Remind is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Remind is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -101,8 +101,8 @@
|
||||
/* Define any overrides here, such as L_ORDINAL_OVERRIDE, L_A_OVER, etc.
|
||||
See the file dosubst.c for more info. */
|
||||
#define L_ORDINAL_OVERRIDE plu = ".";
|
||||
#define L_A_OVER sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y);
|
||||
#define L_G_OVER sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s %d", DayName[jul%7], d, MonthName[m], y); } else { sprintf(s, "%s %s, den %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y); }
|
||||
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s, den %d. %s", DayName[jul%7], d, MonthName[m]); } else { sprintf(s, "%s %s, den %d. %s", L_ON, DayName[jul%7], d, MonthName[m]); }
|
||||
#define L_U_OVER L_A_OVER
|
||||
#define L_V_OVER L_G_OVER
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* Polish. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -141,8 +141,8 @@ ampm = (hour<12) ? \
|
||||
: " w nocy";
|
||||
#endif
|
||||
#define L_ORDINAL_OVERRIDE plu = "";
|
||||
#define L_A_OVER sprintf(s, "%s %s, %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y);
|
||||
#define L_G_OVER sprintf(s, "%s %s, %d. %s", L_ON, DayName[jul%7], d, MonthName[m]);
|
||||
#define L_A_OVER if (altmode == '*') { sprintf(s, "%s, %d. %s %d", DayName[jul%7], d, MonthName[m], y); } else { sprintf(s, "%s %s, %d. %s %d", L_ON, DayName[jul%7], d, MonthName[m], y); }
|
||||
#define L_G_OVER if (altmode == '*') { sprintf(s, "%s, %d. %s", DayName[jul%7], d, MonthName[m]); } else { sprintf(s, "%s %s, %d. %s", L_ON, DayName[jul%7], d, MonthName[m]); }
|
||||
#define L_U_OVER L_A_OVER
|
||||
#define L_V_OVER L_G_OVER
|
||||
|
||||
@@ -394,7 +394,7 @@ EXTERN char *ErrMsg[] =
|
||||
#define L_USAGE_OVERRIDE 1
|
||||
void Usage(void)
|
||||
{
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 David F. Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992-1998 Dianne Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
|
||||
#ifdef BETA
|
||||
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* */
|
||||
/* REMIND is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* REMIND is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* This file is Copyright (C) 1996 by Marco Paganini and */
|
||||
/* David F. Skoll. */
|
||||
/* Dianne Skoll. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -256,7 +256,7 @@ EXTERN char *ErrMsg[] =
|
||||
#define L_USAGE_OVERRIDE 1
|
||||
void Usage(void)
|
||||
{
|
||||
fprintf(ErrFp, "\nREMIND %s (versao %s) (C) 1992-1998 David F. Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "\nREMIND %s (versao %s) (C) 1992-1998 Dianne Skoll\n", VERSION, L_LANGNAME);
|
||||
fprintf(ErrFp, "(C) 1999-2000 Roaring Penguin Software Inc.\n");
|
||||
#ifdef BETA
|
||||
fprintf(ErrFp, ">>>> VERSAO BETA <<<<\n");
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/***************************************************************/
|
||||
!/***************************************************************/
|
||||
/* */
|
||||
/* ROMANIAN.H */
|
||||
/* */
|
||||
@@ -8,7 +8,7 @@
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* */
|
||||
/* REMIND is Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* REMIND is Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* This file is Copyright (C) 1996-1998 by Liviu Daia */
|
||||
/* */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/* Author: Rafa Couto <rafacouto@biogate.com> */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -42,7 +42,7 @@
|
||||
#define L_JUL "Julio"
|
||||
#define L_AUG "Agosto"
|
||||
#define L_SEP "Septiembre"
|
||||
#define L_OCT "Octuber"
|
||||
#define L_OCT "Octubre"
|
||||
#define L_NOV "Noviembre"
|
||||
#define L_DEC "Diciembre"
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
/* routines, etc. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1999-2010 by Roaring Penguin Software Inc. */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2011 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
|
||||
MD5Transform(ctx->buf, (uint32 *) ctx->in);
|
||||
byteReverse((unsigned char *) ctx->buf, 4);
|
||||
memcpy(digest, ctx->buf, 16);
|
||||
memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */
|
||||
memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
|
||||
}
|
||||
|
||||
#ifndef ASM_MD5
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Calculations for figuring out moon phases. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* the data structures for OMITted dates. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -390,12 +390,12 @@ 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);
|
||||
int parsing = 1;
|
||||
|
||||
while(parsing) {
|
||||
if ( (r=ParseToken(p, &buf)) ) return r;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Function Prototypes. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Queue up reminders for subsequent execution. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
10
src/rem2ps.c
@@ -5,7 +5,7 @@
|
||||
/* Print a PostScript calendar. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -161,7 +161,7 @@ int main(int argc, char *argv[])
|
||||
if (!strcmp(DBufValue(&buf), PSBEGIN)) {
|
||||
if (!validfile) {
|
||||
if (Verbose) {
|
||||
fprintf(stderr, "Rem2PS: Version %s Copyright 1992-1998 by David F. Skoll\n\n", VERSION);
|
||||
fprintf(stderr, "Rem2PS: Version %s Copyright 1992-1998 by Dianne Skoll\n\n", VERSION);
|
||||
fprintf(stderr, "Generating PostScript calendar\n");
|
||||
}
|
||||
}
|
||||
@@ -366,6 +366,7 @@ void DoPsCal(void)
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(passthru, "*") ||
|
||||
!strcmp(passthru, "COLOUR") ||
|
||||
!strcmp(passthru, "COLOR")) {
|
||||
/* Put on linked list */
|
||||
if (!CurEntries) {
|
||||
@@ -375,7 +376,8 @@ void DoPsCal(void)
|
||||
while(d->next) d = d->next;
|
||||
d->next = c;
|
||||
}
|
||||
if (!strcmp(passthru, "COLOR")) {
|
||||
if (!strcmp(passthru, "COLOR") ||
|
||||
!strcmp(passthru, "COLOUR")) {
|
||||
c->special = SPECIAL_COLOR;
|
||||
}
|
||||
}
|
||||
@@ -770,7 +772,7 @@ void Init(int argc, char *argv[])
|
||||
case 'o':
|
||||
if (i == argc) Usage("Offset must be supplied");
|
||||
offset = atoi(argv[i++]);
|
||||
if (offset < 36) offset = 36;
|
||||
if (offset < 0) offset = 0;
|
||||
if (!*s) Usage("Offset must specify l, r, t or b");
|
||||
while(*s) {
|
||||
switch(*s++) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Define the PostScript prologue */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -13,8 +13,8 @@
|
||||
char *PSProlog1[] =
|
||||
{
|
||||
"% This file was produced by Remind and Rem2PS, written by",
|
||||
"% David F. Skoll.",
|
||||
"% Remind and Rem2PS are Copyright 1992-1997 David F. Skoll.",
|
||||
"% Dianne Skoll.",
|
||||
"% Remind and Rem2PS are Copyright 1992-1997 Dianne Skoll.",
|
||||
"/ISOLatin1Encoding where { pop save true }{ false } ifelse",
|
||||
" /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus",
|
||||
" StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute",
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Routines for sorting reminders by trigger date */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
11
src/test-all-languages.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
# Make sure Remind compiles with all supported languages; show
|
||||
# tstlang.rem output for each language.
|
||||
|
||||
ALL=`grep ^#define lang.h | grep -v '#define LANG' | awk '{print $2}'`
|
||||
|
||||
for i in $ALL ; do
|
||||
make clean all LANGDEF=-DLANG=$i || exit 1
|
||||
./remind -q -r ../tests/tstlang.rem
|
||||
done
|
||||
exit 0
|
||||
@@ -6,7 +6,7 @@
|
||||
/* classifying the tokens parsed. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Routines for figuring out the trigger date of a reminder */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
@@ -426,7 +426,9 @@ int ComputeTrigger(int today, Trigger *trig, int *err, int save_in_globals)
|
||||
result;
|
||||
|
||||
trig->expired = 0;
|
||||
if (save_in_globals) LastTrigValid = 0;
|
||||
if (save_in_globals) {
|
||||
LastTrigValid = 0;
|
||||
}
|
||||
|
||||
/* Assume everything works */
|
||||
*err = OK;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Type definitions all dumped here. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* functions. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/* Useful utility functions. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* user- and system-defined variables. */
|
||||
/* */
|
||||
/* This file is part of REMIND. */
|
||||
/* Copyright (C) 1992-1998 by David F. Skoll */
|
||||
/* Copyright (C) 1992-1998 by Dianne Skoll */
|
||||
/* Copyright (C) 1999-2007 by Roaring Penguin Software Inc. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
|
||||
@@ -7,11 +7,11 @@ REM 28 SPECIAL COLOR 65 0 65 Dim Magenta
|
||||
REM 28 SPECIAL COLOR 65 65 0 Dim Yellow
|
||||
REM 28 SPECIAL COLOR 65 65 65 Dim White
|
||||
|
||||
REM 28 SPECIAL COLOR 129 0 0 Bright Red
|
||||
REM 28 SPECIAL COLOR 0 129 0 Bright Green
|
||||
REM 28 SPECIAL COLOR 0 0 129 Bright Blue
|
||||
REM 28 SPECIAL COLOR 0 129 129 Bright Cyan
|
||||
REM 28 SPECIAL COLOR 129 0 129 Bright Magenta
|
||||
REM 28 SPECIAL COLOR 129 129 0 Bright Yellow
|
||||
REM 28 SPECIAL COLOR 129 129 129 Bright White
|
||||
REM 28 SPECIAL COLOUR 129 0 0 Bright Red
|
||||
REM 28 SPECIAL COLOUR 0 129 0 Bright Green
|
||||
REM 28 SPECIAL COLOUR 0 0 129 Bright Blue
|
||||
REM 28 SPECIAL COLOUR 0 129 129 Bright Cyan
|
||||
REM 28 SPECIAL COLOUR 129 0 129 Bright Magenta
|
||||
REM 28 SPECIAL COLOUR 129 129 0 Bright Yellow
|
||||
REM 28 SPECIAL COLOUR 129 129 129 Bright White
|
||||
|
||||
|
||||
13
tests/sun.rem
Normal file
@@ -0,0 +1,13 @@
|
||||
SET $LatDeg 45
|
||||
SET $LatMin 24
|
||||
SET $LatSec 0
|
||||
SET $LongDeg 75
|
||||
SET $LongMin 39
|
||||
SET $LongSec 0
|
||||
SET $MinsFromUTC -300
|
||||
SET $CalcUTC 0
|
||||
|
||||
MSG Dawn: [dawn()]
|
||||
MSG Sunrise: [sunrise()]
|
||||
MSG Sunset: [sunset()]
|
||||
MSG Dusk: [dusk()]
|
||||
@@ -7,7 +7,7 @@
|
||||
# in the build directory.
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 David F. Skoll
|
||||
# Copyright (C) 1992-1997 Dianne Skoll
|
||||
# Copyright (C) 1999-2000 Roaring Penguin Software Inc.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -68,7 +68,7 @@ echo "Sort Test" >> ../tests/test.out
|
||||
(echo "REM AT 12:00 MSG Untimed"; echo "REM MSG Timed") | ../src/remind -q -gaaad - 1 Jan 2000 >> ../tests/test.out 2>&1
|
||||
|
||||
echo "Purge Test" >> ../tests/test.out
|
||||
../src/remind -j999 ../tests/purge_dir/f1.rem >> ../tests/test.out 2>&1
|
||||
../src/remind -j999 ../tests/purge_dir/f1.rem 3 Feb 2012 >> ../tests/test.out 2>&1
|
||||
echo "F1" >> ../tests/test.out
|
||||
cat ../tests/purge_dir/f1.rem.purged >> ../tests/test.out
|
||||
echo "F2" >> ../tests/test.out
|
||||
@@ -81,6 +81,26 @@ rm -f ../tests/purge_dir/*.rem.purged >> ../tests/test.out 2>&1
|
||||
|
||||
../src/remind -p ../tests/shade.rem 1 August 2009 | ../src/rem2ps -e -l -c3 >> ../tests/test.out 2>&1
|
||||
|
||||
# The sun tests can fail due to math roundoff error changing the times
|
||||
# by a minute...
|
||||
# ../src/remind -p12 ../tests/sun.rem 1 Jan 2011 >> ../tests/test.out 2>&1
|
||||
|
||||
# Test -a vs -aa
|
||||
../src/remind -q -a - 1 Jan 2012 9:00 <<'EOF' >> ../tests/test.out 2>&1
|
||||
REM 1 Jan 2012 AT 8:00 MSG 8am: Should not show up
|
||||
REM 1 Jan 2012 AT 9:00 MSG 9am: Should not show up
|
||||
REM 1 Jan 2012 AT 10:00 MSG 10am: Should not show up
|
||||
MSG [$DontTrigAts]
|
||||
EOF
|
||||
|
||||
../src/remind -q -a -a - 1 Jan 2012 9:00 <<'EOF' >> ../tests/test.out 2>&1
|
||||
REM 1 Jan 2012 AT 8:00 MSG 8am: Should not show up
|
||||
REM 1 Jan 2012 AT 9:00 MSG 9am: Should show up
|
||||
REM 1 Jan 2012 AT 10:00 MSG 10am: Should show up
|
||||
MSG [$DontTrigAts]
|
||||
EOF
|
||||
|
||||
|
||||
cmp -s ../tests/test.out ../tests/test.cmp
|
||||
if [ "$?" = "0" ]; then
|
||||
echo "Remind: Acceptance test PASSED"
|
||||
|
||||
106
tests/test.cmp
@@ -836,7 +836,7 @@ set a057 value("a05"+"6")
|
||||
"a05" + "6" => "a056"
|
||||
value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
|
||||
set a058 version()
|
||||
version() => "03.01.10"
|
||||
version() => "03.01.14"
|
||||
set a059 wkday(today())
|
||||
today() => 1991-02-16
|
||||
wkday(1991-02-16) => "Saturday"
|
||||
@@ -935,11 +935,81 @@ msg [a076]%
|
||||
../tests/test.rem(272): 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
|
||||
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) => "Tuesday, 5 May, 1992 in 444 days' time T"...
|
||||
msg [a074]%
|
||||
../tests/test.rem(274): Trig = Saturday, 16 February, 1991
|
||||
a074 => "Tuesday, 5 May, 1992 in 444 days' time T"...
|
||||
Tuesday, 5 May, 1992 in 444 days' time Tuesday 5 05-05-1992 05-05-1992 Tuesday, 5 May 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) => "05-05 Tuesday, May 5th, 1992 Tuesday, Ma"...
|
||||
msg [a075]%
|
||||
../tests/test.rem(276): Trig = Saturday, 16 February, 1991
|
||||
a075 => "05-05 Tuesday, May 5th, 1992 Tuesday, Ma"...
|
||||
05-05 Tuesday, May 5th, 1992 Tuesday, May 5th 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 Tuesday, 5th May, 1992 Tuesd"...
|
||||
msg [a076]%
|
||||
../tests/test.rem(278): Trig = Saturday, 16 February, 1991
|
||||
a076 => "s' 05 th 05 Tuesday, 5th May, 1992 Tuesd"...
|
||||
s' 05 th 05 Tuesday, 5th May, 1992 Tuesday, 5th May Tuesday 444
|
||||
set a077 dosubst("%*y %*z", '1992/5/5')
|
||||
dosubst("%*y %*z", 1992-05-05) => "1992 92
|
||||
"
|
||||
msg [a077]%
|
||||
../tests/test.rem(274): Trig = Saturday, 16 February, 1991
|
||||
../tests/test.rem(280): Trig = Saturday, 16 February, 1991
|
||||
a077 => "1992 92
|
||||
"
|
||||
1992 92
|
||||
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"...
|
||||
msg [a074]%
|
||||
../tests/test.rem(282): 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
|
||||
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"...
|
||||
msg [a075]%
|
||||
../tests/test.rem(284): 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
|
||||
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"...
|
||||
msg [a076]%
|
||||
../tests/test.rem(286): 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
|
||||
"
|
||||
msg [a077]%
|
||||
../tests/test.rem(288): Trig = Saturday, 16 February, 1991
|
||||
a077 => "1992 92
|
||||
"
|
||||
1992 92
|
||||
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) => "Tuesday, 5 May, 1992 In 444 days' time T"...
|
||||
msg [a074]%
|
||||
../tests/test.rem(290): Trig = Saturday, 16 February, 1991
|
||||
a074 => "Tuesday, 5 May, 1992 In 444 days' time T"...
|
||||
Tuesday, 5 May, 1992 In 444 days' time Tuesday 5 05-05-1992 05-05-1992 Tuesday, 5 May 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) => "05-05 Tuesday, May 5th, 1992 Tuesday, Ma"...
|
||||
msg [a075]%
|
||||
../tests/test.rem(292): Trig = Saturday, 16 February, 1991
|
||||
a075 => "05-05 Tuesday, May 5th, 1992 Tuesday, Ma"...
|
||||
05-05 Tuesday, May 5th, 1992 Tuesday, May 5th 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 Tuesday, 5th May, 1992 Tuesd"...
|
||||
msg [a076]%
|
||||
../tests/test.rem(294): Trig = Saturday, 16 February, 1991
|
||||
a076 => "S' 05 Th 05 Tuesday, 5th May, 1992 Tuesd"...
|
||||
S' 05 Th 05 Tuesday, 5th May, 1992 Tuesday, 5th May Tuesday 444
|
||||
set a077 dosubst("%*Y %*Z", '1992/5/5')
|
||||
dosubst("%*Y %*Z", 1992-05-05) => "1992 92
|
||||
"
|
||||
msg [a077]%
|
||||
../tests/test.rem(296): Trig = Saturday, 16 February, 1991
|
||||
a077 => "1992 92
|
||||
"
|
||||
1992 92
|
||||
@@ -967,7 +1037,7 @@ dump
|
||||
a017 29
|
||||
a036 "bar"
|
||||
a055 1
|
||||
a074 "on Tuesday, 5 May, 1992 in 444 days' tim"...
|
||||
a074 "Tuesday, 5 May, 1992 In 444 days' time T"...
|
||||
a008 "11:44"
|
||||
a027 0
|
||||
a046 "ies"
|
||||
@@ -976,7 +1046,7 @@ dump
|
||||
a018 1
|
||||
a037 1991-02-15
|
||||
a056 "SDFJHSDF KSJDFH KJSDFH KSJDFH"
|
||||
a075 "on 05-05 on Tuesday, May 5th, 1992 on Tu"...
|
||||
a075 "05-05 Tuesday, May 5th, 1992 Tuesday, Ma"...
|
||||
a028 1
|
||||
a047 -1
|
||||
a066 0
|
||||
@@ -984,12 +1054,12 @@ dump
|
||||
a019 0
|
||||
a038 33
|
||||
a057 "SDFJHSDF KSJDFH KJSDFH KSJDFH"
|
||||
a076 "s' 05 th 05 on Tuesday, 5th May, 1992 on"...
|
||||
a076 "S' 05 Th 05 Tuesday, 5th May, 1992 Tuesd"...
|
||||
a029 0
|
||||
a048 "foo"
|
||||
a067 "INT"
|
||||
a039 "February"
|
||||
a058 "03.01.10"
|
||||
a058 "03.01.14"
|
||||
a077 "1992 92
|
||||
"
|
||||
a049 21
|
||||
@@ -1048,10 +1118,10 @@ dump
|
||||
a083 1991-03-24
|
||||
OMIT 2010-09-03 THROUGH 2010-09-15
|
||||
OMIT December 25 MSG X
|
||||
../tests/test.rem(286): Trig = Wednesday, 25 December, 1991
|
||||
../tests/test.rem(308): Trig = Wednesday, 25 December, 1991
|
||||
# Next should give a parse error
|
||||
OMIT 26 Dec 2010 THROUGH 27 Dec 2010 MSG This is not legal
|
||||
../tests/test.rem(288): Trig = Sunday, 26 December, 2010
|
||||
../tests/test.rem(310): Trig = Sunday, 26 December, 2010
|
||||
OMIT DUMP
|
||||
Global Full OMITs (16 of maximum allowed 500):
|
||||
1991-03-11
|
||||
@@ -2319,8 +2389,8 @@ No reminders.
|
||||
%%Orientation: Landscape
|
||||
%%EndComments
|
||||
% This file was produced by Remind and Rem2PS, written by
|
||||
% David F. Skoll.
|
||||
% Remind and Rem2PS are Copyright 1992-1997 David F. Skoll.
|
||||
% Dianne Skoll.
|
||||
% Remind and Rem2PS are Copyright 1992-1997 Dianne Skoll.
|
||||
/ISOLatin1Encoding where { pop save true }{ false } ifelse
|
||||
/ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus
|
||||
StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute
|
||||
@@ -3411,3 +3481,15 @@ grestore
|
||||
showpage
|
||||
%%Trailer
|
||||
%%Pages: 1
|
||||
Reminders for Sunday, 1st January, 2012:
|
||||
|
||||
1
|
||||
|
||||
Reminders for Sunday, 1st January, 2012:
|
||||
|
||||
9am: Should show up
|
||||
|
||||
10am: Should show up
|
||||
|
||||
2
|
||||
|
||||
|
||||
@@ -270,7 +270,29 @@ set a075 dosubst("%i %j %k %l %m %n %o %p", '1992/5/5')
|
||||
msg [a075]%
|
||||
set a076 dosubst("%q %r %s %t %u %v %w %x", '1992/5/5')
|
||||
msg [a076]%
|
||||
set a077 dosubst("%y %z", '1992/5/5')
|
||||
set a074 dosubst("%*a %*b %*c %*d %*e %*f %*g %*h", '1992/5/5')
|
||||
msg [a074]%
|
||||
set a075 dosubst("%*i %*j %*k %*l %*m %*n %*o %*p", '1992/5/5')
|
||||
msg [a075]%
|
||||
set a076 dosubst("%*q %*r %*s %*t %*u %*v %*w %*x", '1992/5/5')
|
||||
msg [a076]%
|
||||
set a077 dosubst("%*y %*z", '1992/5/5')
|
||||
msg [a077]%
|
||||
set a074 dosubst("%A %B %C %D %E %F %G %H", '1992/5/5')
|
||||
msg [a074]%
|
||||
set a075 dosubst("%I %J %K %L %M %N %O %P", '1992/5/5')
|
||||
msg [a075]%
|
||||
set a076 dosubst("%Q %R %S %T %U %V %W %X", '1992/5/5')
|
||||
msg [a076]%
|
||||
set a077 dosubst("%Y %Z", '1992/5/5')
|
||||
msg [a077]%
|
||||
set a074 dosubst("%*A %*B %*C %*D %*E %*F %*G %*H", '1992/5/5')
|
||||
msg [a074]%
|
||||
set a075 dosubst("%*I %*J %*K %*L %*M %*N %*O %*P", '1992/5/5')
|
||||
msg [a075]%
|
||||
set a076 dosubst("%*Q %*R %*S %*T %*U %*V %*W %*X", '1992/5/5')
|
||||
msg [a076]%
|
||||
set a077 dosubst("%*Y %*Z", '1992/5/5')
|
||||
msg [a077]%
|
||||
set a078 easterdate(today())
|
||||
set a079 easterdate(1992)
|
||||
@@ -287,3 +309,7 @@ OMIT December 25 MSG X
|
||||
# Next should give a parse error
|
||||
OMIT 26 Dec 2010 THROUGH 27 Dec 2010 MSG This is not legal
|
||||
OMIT DUMP
|
||||
__EOF__
|
||||
REM This line should not even be seen
|
||||
And you can put whatever you like here.
|
||||
[+f=asdfasdasde3ir0a]
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# Use the output to verify your translations.
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 David F. Skoll
|
||||
# Copyright (C) 1992-1997 Dianne Skoll
|
||||
# Copyright (C) 1999-2000 Roaring Penguin Software Inc.
|
||||
#
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -30,7 +30,7 @@ if !$RunOff || !$DontQueue || $DontTrigAts
|
||||
endif
|
||||
|
||||
# Set up a few useful definitions
|
||||
fset show(x) "%%" + x + " yields: " + char(34) + "%" + x + char(34) + "%"
|
||||
fset show(x) "%%" + x + " yields: " + char(34) + "%" + x + char(34) + "% and %%*" + x + " yields: " + char(34) + "%*" + x + char(34) + "%"
|
||||
set a trigger(today()+2) + " ++2"
|
||||
set l language()
|
||||
set tt now()+134
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Unconfiguring Remind..."
|
||||
echo rm -f config.cache config.log config.status src/Makefile src/config.h src/version.h
|
||||
rm -f config.cache config.log config.status src/Makefile src/config.h src/version.h
|
||||
echo rm -f config.cache config.log config.status src/Makefile src/config.h src/version.h www/Makefile
|
||||
rm -f config.cache config.log config.status src/Makefile src/config.h src/version.h www/Makefile
|
||||
exit 0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Makefile.in for installing WWW server calendar scripts
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2007 by Roaring Penguin Software Inc.
|
||||
|
||||
# The complete path to where the scripts actually live, as seen by
|
||||
|
||||
@@ -10,4 +10,4 @@ You may have to edit the "#!/usr/bin/perl" line to reflect the
|
||||
location of your Perl interpreter.
|
||||
|
||||
--
|
||||
David F. Skoll
|
||||
Dianne Skoll
|
||||
|
||||
2
www/cal_dispatch-DIST
Executable file → Normal file
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
# CAL_DISPATCH -- Shell script for CGI directory to dispatch calendar
|
||||
|
||||
2
www/calps
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# PostScript calendar shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo "Content-type: application/postscript"
|
||||
|
||||
|
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 379 B |
BIN
www/fullmoon.png
|
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 317 B |
2
www/hebdate
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# Hebrew date shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo Content-type: text/html
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Hebrew date reminder file
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
BANNER %
|
||||
@@ -24,7 +24,7 @@ ENDIF
|
||||
# dates were obtained from "The First Jewish Catalog" by Richard Siegel #
|
||||
# and Michael and Sharon Strassfeld, published by the Jewish Publication #
|
||||
# Society of America. The Reform version of the calendar was guessed #
|
||||
# at by David Skoll based on experience. Additional corrections were #
|
||||
# at by Dianne Skoll based on experience. Additional corrections were #
|
||||
# made from the paper "Calendrical Calculations" by Nachum Dershowitz #
|
||||
# and Edward M. Reingold. Any further corrections are welcome. #
|
||||
# #
|
||||
|
||||
2
www/hebhtml
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# HTML calendar shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo "Content-Type: text/html"
|
||||
|
||||
2
www/hebps
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# Hebrew PostScript calendar shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
# Figure out the month: If day <= 20, use this month; otherwise, use
|
||||
|
||||
|
Before Width: | Height: | Size: 212 B After Width: | Height: | Size: 367 B |
2
www/moon
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# Moon shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo Content-type: text/html
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# File for giving moon phase info.
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
set now now()
|
||||
|
||||
BIN
www/newmoon.png
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 362 B |
341
www/php/remind.php
Normal file
@@ -0,0 +1,341 @@
|
||||
<?php
|
||||
|
||||
class Remind
|
||||
{
|
||||
# For validating commands we send to popen
|
||||
function is_valid_day($d) {
|
||||
return (preg_match('/^\d+$/', $d)) &&
|
||||
$d >= 1 && $d <= 31;
|
||||
}
|
||||
|
||||
function is_valid_month($m) {
|
||||
return
|
||||
($m == 'January') ||
|
||||
($m == 'February') ||
|
||||
($m == 'March') ||
|
||||
($m == 'April') ||
|
||||
($m == 'May') ||
|
||||
($m == 'June') ||
|
||||
($m == 'July') ||
|
||||
($m == 'August') ||
|
||||
($m == 'September') ||
|
||||
($m == 'October') ||
|
||||
($m == 'November') ||
|
||||
($m == 'December');
|
||||
}
|
||||
|
||||
function is_valid_year($y) {
|
||||
return preg_match('/^\d\d\d\d$/', $y) &&
|
||||
$y >= 1900;
|
||||
}
|
||||
|
||||
|
||||
function get_el(&$array, $i)
|
||||
{
|
||||
if (!array_key_exists($i, $array)) return null;
|
||||
return $array[$i];
|
||||
}
|
||||
|
||||
function get_elem($array, $indexes)
|
||||
{
|
||||
foreach ($indexes as $i) {
|
||||
if (!is_array($array)) return null;
|
||||
if (!array_key_exists($i, $array)) return null;
|
||||
$array = $array[$i];
|
||||
}
|
||||
return $array;
|
||||
}
|
||||
|
||||
function munge_entry($day, &$results, &$specials, &$options, $str, &$e) {
|
||||
return htmlspecialchars($str);
|
||||
}
|
||||
|
||||
function format_entry($day, &$results, &$specials, &$options, &$e) {
|
||||
$special = $this->get_el($e, 'special');
|
||||
$body = $this->get_el($e, 'body');
|
||||
|
||||
if ($body === null) $body = '';
|
||||
if ($special === null || $special == '*') {
|
||||
return $this->munge_entry($day, $results, $specials, $options, $body, $e);
|
||||
}
|
||||
if ($special == 'COLOR' || $special == 'COLOUR') {
|
||||
if (preg_match('/^(\d+)\s+(\d+)\s+(\d+)\s+(.*)/', $body, $matches)) {
|
||||
return sprintf('<span style="color: #%02x%02x%02x">%s</span>',
|
||||
$matches[1] % 255,
|
||||
$matches[2] % 255,
|
||||
$matches[3] % 255,
|
||||
$this->munge_entry($day, $results, $specials, $options, $matches[4], $e));
|
||||
}
|
||||
return 'Bad COLOR spec: ' . htmlspecialchars($body);
|
||||
}
|
||||
|
||||
# HTML is passed through un-munged.
|
||||
if ($special == 'HTML') return $body;
|
||||
|
||||
# Ignore unknown specials
|
||||
return '';
|
||||
}
|
||||
|
||||
function format_entries($day, &$results, &$specials, &$options, &$entries) {
|
||||
$html = '';
|
||||
foreach ($entries as $e) {
|
||||
$html .= '<div class="rem-entry">' . $this->format_entry($day, $results, $specials, $options, $e) . '</div>';
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
function do_one_day($day, &$results, &$specials, &$options) {
|
||||
$class = $this->get_elem($specials, array('HTMLCLASS', $day, 0, 'body'));
|
||||
$shade = $this->get_elem($specials, array('SHADE', $day, 0, 'body'));
|
||||
$moon = $this->get_elem($specials, array('MOON', $day, 0, 'body'));
|
||||
|
||||
if ($class === null) $class = 'rem-cell';
|
||||
$bg = '';
|
||||
if ($shade !== null) {
|
||||
if (preg_match('/(\d+)\s+(\d+)\s+(\d+)/', $shade, $matches)) {
|
||||
if ($matches[1] <= 255 && $matches[2] <= 255 && $matches[3] <= 255) {
|
||||
$bg = sprintf(' style="background: #%02x%02x%02x"',
|
||||
$matches[1], $matches[2], $matches[3]);
|
||||
}
|
||||
}
|
||||
}
|
||||
$html = "<td class=\"$class\"$bg>";
|
||||
|
||||
$week = $this->get_elem($specials, array('WEEK', $day, 0, 'body'));
|
||||
if ($week === null) {
|
||||
$week = '';
|
||||
} else {
|
||||
$week = ' ' . $week;
|
||||
}
|
||||
|
||||
$moon_html = '';
|
||||
if ($moon !== null) {
|
||||
$phase = -1;
|
||||
if (preg_match('/(\d+)\s+(\S+)\s+(\S+)\s+(.*)$/', $moon, $matches)) {
|
||||
$phase = $matches[1];
|
||||
$moonsize = $matches[2];
|
||||
$fontsize = $matches[3];
|
||||
$msg = $matches[4];
|
||||
} elseif (preg_match('/(\d+)/', $moon, $matches)) {
|
||||
$phase = $matches[1];
|
||||
$msg = '';
|
||||
}
|
||||
if ($phase >= 0) {
|
||||
if ($phase == 0) {
|
||||
$img = 'newmoon.png';
|
||||
$title = 'New Moon';
|
||||
$alt = 'new';
|
||||
} elseif ($phase == 1) {
|
||||
$img = 'firstquarter.png';
|
||||
$title = 'First Quarter';
|
||||
$alt = '1st';
|
||||
} elseif ($phase == 2) {
|
||||
$img = 'fullmoon.png';
|
||||
$alt = 'full';
|
||||
$title = 'Full Moon';
|
||||
} else {
|
||||
$img = 'lastquarter.png';
|
||||
$alt = 'last';
|
||||
$title = 'Last Quarter';
|
||||
}
|
||||
$base = rtrim($this->get_el($options, 'imgbase'), '/');
|
||||
if ($base !== null) {
|
||||
$img = $base . '/' . $img;
|
||||
}
|
||||
$moon_html = '<div class="rem-moon">' . "<img width=\"16\" height=\"16\" alt=\"$alt\" title=\"$title\" src=\"$img\">" . htmlspecialchars($msg) . '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
# Day number
|
||||
$html .= $moon_html . '<div class="rem-daynumber">' . $day . $week . '</div>';
|
||||
|
||||
# And the entries
|
||||
$entries = $this->get_elem($results, array('entries', $day));
|
||||
if (is_array($entries) && count($entries) > 0) {
|
||||
$html .= '<div class="rem-entries">';
|
||||
$html .= $this->format_entries($day, $results, $specials, $options, $entries);
|
||||
$html .= '</div>';
|
||||
}
|
||||
$html .= "</td>\n";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function small_calendar($results, $month, $monlen, $first_col, $which, &$options)
|
||||
{
|
||||
$monday_first = $results['monday_flag'];
|
||||
if ($monday_first) {
|
||||
$first_col--;
|
||||
if ($first_col < 0) {
|
||||
$first_col = 6;
|
||||
}
|
||||
}
|
||||
|
||||
$html = "<td class=\"rem-small-calendar\">\n<table class=\"rem-sc-table\">\n<caption class=\"rem-sc-caption\">";
|
||||
# TODO: URL for small calendar
|
||||
$html .= $month;
|
||||
$html .= "</caption>\n";
|
||||
}
|
||||
|
||||
function generate_html(&$results, &$specials, &$options)
|
||||
{
|
||||
$monday_first = $results['monday_flag'];
|
||||
$first_col = $results['first_day'];
|
||||
if ($monday_first) {
|
||||
$first_col--;
|
||||
if ($first_col < 0) $first_col = 6;
|
||||
}
|
||||
|
||||
$last_col = ($first_col + $results['days_in_mon'] -1) % 7;
|
||||
|
||||
$html = '<table class="rem-cal"><caption class="rem-cal-caption">' .
|
||||
htmlspecialchars($results['month']) . ' ' . htmlspecialchars($results['year']) .
|
||||
"</caption>\n";
|
||||
|
||||
$html .= '<tr class="rem-cal-hdr-row">';
|
||||
if (!$monday_first) $html .= '<th class="rem-cal-hdr">' . htmlspecialchars($results['day_names'][0]) . '</th>';
|
||||
for ($i=1; $i<7; $i++) $html .= '<th class="rem-cal-hdr">' . htmlspecialchars($results['day_names'][$i]) . '</th>';
|
||||
if ($monday_first) $html .= '<th class="rem-cal-hdr">' . htmlspecialchars($results['day_names'][0]) . '</th>';
|
||||
$html .= "</tr>\n";
|
||||
|
||||
# Do the leading empty columns
|
||||
for ($col=0; $col < $first_col; $col++) {
|
||||
if ($col == 0) $html .= '<tr class="rem-cal-body-row">';
|
||||
$html .= '<td class="rem-empty"> </td>';
|
||||
}
|
||||
|
||||
for ($day=1; $day <= $results['days_in_mon']; $day++) {
|
||||
if ($col == 0) $html .= '<tr class="rem-cal-body-row">';
|
||||
$col++;
|
||||
$html .= $this->do_one_day($day, $results, $specials, $options);
|
||||
if ($col == 7) {
|
||||
$html .= "</tr>\n";
|
||||
$col = 0;
|
||||
}
|
||||
}
|
||||
if ($col) {
|
||||
while ($col++ < 7) {
|
||||
$html .= '<td class="rem-empty"> </td>';
|
||||
}
|
||||
}
|
||||
$html .= "</tr>\n";
|
||||
|
||||
$html .= "</table>\n";
|
||||
return $html;
|
||||
}
|
||||
function parse_remind_output ($fp)
|
||||
{
|
||||
while(1) {
|
||||
$line = fgets($fp);
|
||||
if ($line === false) break;
|
||||
$line = trim($line);
|
||||
if ($line == '# rem2ps begin') break;
|
||||
}
|
||||
if ($line === false) {
|
||||
return array('success' => 0,
|
||||
'error' => 'Could not find any Rem2PS data');
|
||||
}
|
||||
|
||||
$line = fgets($fp);
|
||||
if ($line === false) {
|
||||
return array('success' => 0,
|
||||
'error' => 'Unexpected end-of-file');
|
||||
}
|
||||
|
||||
$line = trim($line);
|
||||
list($month, $year, $days_in_mon, $first_day, $monday_flag) = explode(' ', $line);
|
||||
$retval = array('month' => $month,
|
||||
'year' => $year,
|
||||
'days_in_mon' => $days_in_mon,
|
||||
'first_day' => $first_day,
|
||||
'monday_flag' => $monday_flag);
|
||||
|
||||
$line = fgets($fp);
|
||||
if ($line === false) {
|
||||
return array('success' => 0,
|
||||
'error' => 'Unexpected end-of-file');
|
||||
}
|
||||
|
||||
$line = trim($line);
|
||||
$retval['day_names'] = explode(' ', $line);
|
||||
|
||||
$line = fgets($fp);
|
||||
if ($line === false) {
|
||||
return array('success' => 0,
|
||||
'error' => 'Unexpected end-of-file');
|
||||
}
|
||||
$line = trim($line);
|
||||
|
||||
list($m, $n) = explode(' ', $line);
|
||||
$retval['prev'] = array('month' => $m, 'days' => $n);
|
||||
|
||||
$line = fgets($fp);
|
||||
if ($line === false) {
|
||||
return array('success' => 0,
|
||||
'error' => 'Unexpected end-of-file');
|
||||
}
|
||||
$line = trim($line);
|
||||
|
||||
list($m, $n) = explode(' ', $line);
|
||||
$retval['next'] = array('month' => $m, 'days' => $n);
|
||||
|
||||
$line_info = 0;
|
||||
|
||||
$entries = array();
|
||||
$specials = array();
|
||||
while (1) {
|
||||
$line = fgets($fp);
|
||||
if ($line === false) break;
|
||||
$line = trim($line);
|
||||
if ($line == '# rem2ps end') break;
|
||||
if (strpos($line, '# fileinfo ') === 0) {
|
||||
list($lno, $fname) = explode(' ', substr($line, 11), 2);
|
||||
$lineinfo = array('file' => $fname, 'line' => $lno);
|
||||
continue;
|
||||
}
|
||||
list($date, $special, $tags, $duration, $time, $body) = explode(' ', $line, 6);
|
||||
list($y, $m, $d) = explode('/', $date);
|
||||
$d = preg_replace('/^0(.)/', '$1', $d);
|
||||
$m = preg_replace('/^0(.)/', '$1', $m);
|
||||
$entry = array('day' => $d,
|
||||
'month' => $m,
|
||||
'year' => $y,
|
||||
'special' => $special,
|
||||
'tags' => $tags,
|
||||
'duration' => $duration,
|
||||
'time' => $time,
|
||||
'body' => $body);
|
||||
if (is_array($lineinfo)) {
|
||||
$entry['line'] = $lineinfo['line'];
|
||||
$entry['file'] = $lineinfo['file'];
|
||||
$lineinfo = 0;
|
||||
}
|
||||
if ($special != '*' && $special != 'COLOR' && $special != 'COLOUR' && $special != 'HTML') {
|
||||
if (!array_key_exists($special, $specials)) {
|
||||
$specials[$special] = array();
|
||||
}
|
||||
if (!array_key_exists($d, $specials[$special])) {
|
||||
$specials[$special][$d] = array();
|
||||
}
|
||||
$specials[$special][$d][] = $entry;
|
||||
} else {
|
||||
if (!array_key_exists($d, $entries)) {
|
||||
$entries[$d] = array();
|
||||
}
|
||||
$entries[$d][] = $entry;
|
||||
}
|
||||
|
||||
}
|
||||
$retval['entries'] = $entries;
|
||||
return array('success' => 1, 'results' => $retval, 'specials' => $specials);
|
||||
}
|
||||
}
|
||||
|
||||
$fp = popen('rem -p -l', 'r');
|
||||
$r = new Remind;
|
||||
$ans = $r->parse_remind_output($fp);
|
||||
pclose($fp);
|
||||
print_r($ans);
|
||||
$options = array();
|
||||
#print $r->generate_html($ans['results'], $ans['specials'], $options);
|
||||
|
||||
?>
|
||||
4
www/rem2html
Executable file → Normal file
@@ -84,7 +84,7 @@ Insert I<html_text> right before the E<lt>/bodyE<gt> tag.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
rem2html was written by David F. Skoll with much inspiration from an
|
||||
rem2html was written by Dianne Skoll with much inspiration from an
|
||||
earlier version by Don Schwarz.
|
||||
|
||||
=cut
|
||||
@@ -257,7 +257,7 @@ sub parse_input
|
||||
$shades->[$d] = sprintf("#%02X%02X%02X",
|
||||
($1 % 256), ($2 % 256), ($3 % 256));
|
||||
}
|
||||
} elsif ($special eq 'COLOR') {
|
||||
} elsif ($special eq 'COLOR' || $special eq 'COLOUR') {
|
||||
if ($body =~ /(\d+)\s+(\d+)\s+(\d+)\s+(.*)$/) {
|
||||
my($r, $g, $b, $text) = ($1, $2, $3, $4);
|
||||
my $color = sprintf("style=\"color: #%02X%02X%02X;\"",
|
||||
|
||||
2
www/sunrise
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# Sunrise shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo Content-type: text/html
|
||||
|
||||
2
www/sunrise.rem-DIST
Executable file → Normal file
@@ -1,7 +1,7 @@
|
||||
# File for giving sunrise info
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
set now now()
|
||||
|
||||
2
www/sunset
Executable file → Normal file
@@ -2,7 +2,7 @@
|
||||
# Sunset shell script
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
echo Content-type: text/html
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# File for giving sunset info
|
||||
#
|
||||
# This file is part of REMIND.
|
||||
# Copyright (C) 1992-1997 by David F. Skoll
|
||||
# Copyright (C) 1992-1997 by Dianne Skoll
|
||||
# Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
|
||||
|
||||
set now now()
|
||||
|
||||