Compare commits

...

70 Commits

Author SHA1 Message Date
Dianne Skoll
7bfdb1f0eb Document the magic __EOF__ marker. 2015-04-24 14:42:48 -04:00
Dianne Skoll
0c0280b2a9 Add test for __EOF__ 2015-04-24 14:40:12 -04:00
Dianne Skoll
57a1871077 Fix test output. 2015-04-24 14:37:32 -04:00
Dianne Skoll
ee972ad29f Update version to 3.1.14 2015-04-24 14:37:06 -04:00
David F. Skoll
29c8475ea9 s/David/Dianne/ 2015-04-17 02:07:18 -04:00
David F. Skoll
6dd0f6ed63 Fix typo. 2014-11-06 14:32:30 -05:00
David F. Skoll
fc2d7ae446 Add support for __EOF__ to make Remind stop reading a file. 2014-05-22 14:19:06 -04:00
David F. Skoll
d232ac0334 Clear out MD5 context correctly. 2014-02-14 12:46:12 -05:00
David F. Skoll
6e8dd68c8a Use ADVANCE_MODE rather than CAL_MODE for "-n" cmdline option. 2013-04-30 15:58:02 -04:00
David F. Skoll
495cc1b38d Improve PNG images. 2013-03-22 16:21:52 -04:00
David F. Skoll
d90e74b1a3 Update release notes. 2013-03-22 15:48:04 -04:00
David F. Skoll
bbd8a4b729 Bump version to 3.1.13. 2013-03-22 15:44:03 -04:00
David F. Skoll
cae3e18717 Two cleanup patches from Simon Ruderich. 2013-03-18 14:07:09 -04:00
David F. Skoll
0e989a7422 Use atan2 instead of atan. 2013-03-10 18:00:36 -04:00
David F. Skoll
7b7ce5bb57 Remove dead code and dead variable. 2013-03-08 10:27:38 -05:00
David F. Skoll
df95cdaad0 Final sunrise/sunset tweakage. 2013-03-08 10:26:48 -05:00
David F. Skoll
3026b6e5c2 Tweak sun stuff per John McGowan ticket #27369. 2013-03-07 13:49:53 -05:00
David F. Skoll
b3306c5572 Revert change: TrigAttempts too hard to define. 2012-12-09 11:23:02 -05:00
David F. Skoll
9ef3be33e5 Add new $TrigAttempts special var. 2012-12-09 11:17:16 -05:00
David F. Skoll
292262c128 -z defaults to 1, not 5, so correct man page and help output.
Thanks to Simon Ruderich for pointing out the bug.
2012-11-01 13:07:42 -04:00
David F. Skoll
e54bfe9197 Minor patches from Simon Ruderich 2012-10-18 09:31:12 -04:00
David F. Skoll
c56cfe9e1d Fix test harness failure. 2012-05-08 16:54:54 -04:00
David F. Skoll
f6b6a3285c Apply patch from Jonathan Kamens to allow 0-point margins. 2012-04-26 08:57:37 -04:00
David F. Skoll
6b031b0fdf Change "Daylight Savings" to "Daylight Saving" 2012-03-23 15:45:49 -04:00
David F. Skoll
2dab7025ba Fix incorrect info in man page. 2012-03-14 11:47:43 -04:00
David F. Skoll
7403114897 Patch to allow compilation with gcc 2.95. 2012-02-13 10:23:53 -05:00
David F. Skoll
82cbeec560 Update tests to skip sun-tests by default. 2012-01-23 13:21:50 -05:00
David F. Skoll
df6b4ac566 Update release notes. 2012-01-23 13:08:22 -05:00
David F. Skoll
4ba21ab526 Fix test-all-languages.sh. 2012-01-23 12:01:11 -05:00
David F. Skoll
acac7a7b31 Add shell script to test all languages. Add %* substitutions to tstlang.rem 2012-01-23 11:58:07 -05:00
David F. Skoll
2290fd09f5 Add altmode to various languages. 2012-01-23 11:49:32 -05:00
David F. Skoll
f02b6a1773 "-x" flag to git-ls-files doesn't work, apparently. 2012-01-23 11:14:00 -05:00
David F. Skoll
efffe05d42 Merge branch 'master' of ssh://source.roaringpenguin.com/home/dfs/personal-git-repos/Remind 2012-01-20 15:49:27 -05:00
David F. Skoll
950d67c522 Update Finnish translation for altmode. 2012-01-20 15:49:03 -05:00
David F. Skoll
a1aa61f54e Fix comment. 2012-01-12 13:12:59 -05:00
David F. Skoll
3c2bd66460 Clarify wording. 2012-01-12 13:05:46 -05:00
David F. Skoll
245cebee56 If multiple -a options are supplied, then *do* trigger timed reminders
that are in the future.
2012-01-12 13:04:53 -05:00
David F. Skoll
c45364fdb3 More WIP on PHP stuff. 2012-01-12 12:48:36 -05:00
David F. Skoll
e380308604 More sunstuff tweaking. 2011-12-28 13:14:24 -05:00
David F. Skoll
bd019524dd Update test output 2011-12-28 08:50:03 -05:00
David F. Skoll
895536d7d3 Use proper value of cos(6 degrees) for dusk/dawn 2011-12-28 08:49:37 -05:00
David F. Skoll
3a0e41afd1 Round off sun times to nearest minute. 2011-12-27 12:34:17 -05:00
David F. Skoll
23dd28471e Update sunrise/sunset calculations with different formula for mean anomaly. 2011-12-27 12:20:36 -05:00
David F. Skoll
761217d403 Add dawn/sunrise/sunset/dusk tests. 2011-12-26 17:44:34 -05:00
David F. Skoll
77ed694111 Use proper formula for dusk/dawn. 2011-12-26 14:41:21 -05:00
David F. Skoll
61bcce3104 Add tests for %*x and upper-case %*X substitutions. 2011-12-25 11:43:07 -05:00
David F. Skoll
bf41b12ccd Paranoia. 2011-12-24 11:04:21 -05:00
David F. Skoll
5eabd7d8d8 Fix dumb error. :) 2011-12-24 11:02:52 -05:00
David F. Skoll
0c66f5f3af Add "alternate" substitution mode: %*X is the same as %x but it leaves
out the preposition "at" or "on".
2011-12-24 10:58:37 -05:00
David F. Skoll
3190f784d9 Update copyright year. 2011-12-16 16:00:13 -05:00
David F. Skoll
394ff55879 Bump version number. 2011-12-16 15:58:30 -05:00
David F. Skoll
9b846835bc Bump version to 03.01.11 2011-12-16 15:56:34 -05:00
David F. Skoll
01776af167 Update WHATSNEW 2011-12-16 15:51:26 -05:00
David F. Skoll
0db10424ad Make sure COLOUR works just as well as COLOR. 2011-12-16 15:47:46 -05:00
David F. Skoll
bafd7ea073 Apply Debian fixes from Kurt B. Kaiser. 2011-12-11 17:43:26 -05:00
David F. Skoll
0ab27fcb4b Fix typo. 2011-12-05 16:47:21 -05:00
David F. Skoll
95d016712e Merge branch 'master' of ssh://source.roaringpenguin.com/home/dfs/personal-git-repos/Remind 2011-12-05 16:43:19 -05:00
David F. Skoll
fcb55001bb Allow the color special to be spelled COLOR or COLOUR. 2011-12-05 16:42:57 -05:00
David F. Skoll
7bc6961101 Apply some minor cleanup patches from Debian 2011-07-28 14:31:18 -04:00
David F. Skoll
450e88fad8 Fix typo. 2011-03-16 15:49:03 -04:00
David F. Skoll
3222b4c311 More work on PHP front/back-end. 2011-03-16 13:00:35 -04:00
David F. Skoll
1e0cc3605d Add THROUGH to vim syntax file. 2011-03-16 13:00:28 -04:00
David F. Skoll
129b7bfeb7 Fix typos. 2011-01-21 17:01:57 -05:00
David F. Skoll
388811b684 Handle MOON specials. 2011-01-21 16:59:03 -05:00
David F. Skoll
f83257407b Yet more hacking. 2011-01-21 16:20:17 -05:00
David F. Skoll
e4ced77340 Key entries by day. 2011-01-20 16:50:24 -05:00
David F. Skoll
92e0bc316a Parse out day/mon/yr 2011-01-20 16:40:11 -05:00
David F. Skoll
a4a55f35b2 Start on PHP front-end to Remind. 2011-01-20 16:35:00 -05:00
David F. Skoll
ed1150c189 Clarify sign of longitude components. 2011-01-03 09:42:15 -05:00
David F. Skoll
08080f4e86 Use 6-degree definition (Civil Dawn) instead of older 14-degree below horizon. 2010-12-16 09:00:12 -05:00
93 changed files with 3416 additions and 3915 deletions

View File

@@ -293,7 +293,7 @@ POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
-- --
David F. Skoll <dfs@roaringpenguin.com> Dianne Skoll <dfs@roaringpenguin.com>
Tel. (613) 231-6599 Tel. (613) 231-6599
http://www.roaringpenguin.com http://www.roaringpenguin.com

View File

@@ -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. controls much more stringently than Mac OS X on an Apple PC.
-- --
David F. Skoll Dianne Skoll

2
build.tk Executable file → Normal file
View File

@@ -7,7 +7,7 @@
# A cheesy graphical front-end for building and installing REMIND. # A cheesy graphical front-end for building and installing REMIND.
# #
# This file is part of 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. # Copyright (C) 1999-2000 Roaring Penguin Software Inc.
# #
#-------------------------------------------------------------- #--------------------------------------------------------------

6033
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -75,6 +75,6 @@ if test "$GCC" = yes; then
fi fi
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale) AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale)
VERSION=03.01.10 VERSION=03.01.14
AC_SUBST(VERSION) AC_SUBST(VERSION)
AC_OUTPUT(src/Makefile www/Makefile src/version.h) AC_OUTPUT(src/Makefile www/Makefile src/version.h)

View File

@@ -1,5 +1,5 @@
This directory contains contributed scripts. They are provided 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; or Roaring Penguin Software Inc. for help with these scripts;
instead, contact the script authors. instead, contact the script authors.
@@ -7,4 +7,4 @@ You should check the upstream sources; there may be newer versions
of these scripts available. of these scripts available.
-- --
David F. Skoll Dianne Skoll

View File

@@ -251,7 +251,7 @@ Please report bugs (with patches, if possible).
Inspired by Anthony J. Chivetta E<lt>achivetta@gmail.comE<gt>'s Inspired by Anthony J. Chivetta E<lt>achivetta@gmail.comE<gt>'s
rem2ics in awk. 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. and to the IETF calsch wg for the iCalendar specification.
=cut =cut

View File

@@ -3,7 +3,7 @@
;; Copyright (C) 2008 Shelagh Manton <shelagh.manton@gmail.com> ;; Copyright (C) 2008 Shelagh Manton <shelagh.manton@gmail.com>
;; Author: Shelagh Manton <shelagh.manton@gmail.com> with help from ;; Author: Shelagh Manton <shelagh.manton@gmail.com> with help from
;; David F. Skoll ;; Dianne Skoll
;; Keywords: remind configure mode ;; Keywords: remind configure mode
;; Version: .04 ;; Version: .04
@@ -112,7 +112,7 @@
"WARN" "UNTIL" "THROUGH" "SCANFROM" "DURATION" "TAG" "MSG" "MSF" "CAL" "SPECIAL" "IFTRIG" "WARN" "UNTIL" "THROUGH" "SCANFROM" "DURATION" "TAG" "MSG" "MSF" "CAL" "SPECIAL" "IFTRIG"
"PS" "PSFILE" "BANNER" "INCLUDE" "PUSH-OMIT-CONTEXT" "DEBUG" "DUMPVARS" "PS" "PSFILE" "BANNER" "INCLUDE" "PUSH-OMIT-CONTEXT" "DEBUG" "DUMPVARS"
"CLEAR-OMIT-CONTEXT" "POP-OMIT-CONTEXT" "SET" "ERRMSG" "FSET" "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))))) #'(lambda (a b) (> (length a) (length b)))))
(defconst remind-type-keywords (defconst remind-type-keywords

View File

@@ -100,5 +100,5 @@ exit
-- --
David F. Skoll <dfs@roaringpenguin.com> Dianne Skoll <dfs@roaringpenguin.com>
http://www.roaringpenguin.com/remind/ http://www.roaringpenguin.com/remind/

View File

@@ -1,5 +1,65 @@
CHANGES TO REMIND 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 * Version 3.1 Patch 10 - 2010-11-01
- NOTE: This is the 20th anniversary of Remind's first public release. - NOTE: This is the 20th anniversary of Remind's first public release.
@@ -536,7 +596,7 @@ CHANGES TO REMIND
+ BUG FIXES + BUG FIXES
- Fixed sunset(), sunrise() and minsfromutc() functions which were broken - 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 - Updated "finnish.h" to include proper URL and translation of all
error messages. error messages.

View File

@@ -17,7 +17,7 @@
# "#COLORS" for examples of ANSI color escape sequences. # # "#COLORS" for examples of ANSI color escape sequences. #
# # # #
# This file is part of REMIND. # # 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. # # 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 # The DST rules are accurate for most locations in
# North America # North America
REM Sun Apr 1 ++2 UNTIL 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 Savings 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 Apr 1 MSG %"April Fool's%" Day
REM Mon Tue Wed Thu Fri Sat 15 Apr MSG %"Income tax%" due 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 # The DST rules are accurate for most locations in
# North America # North America
REM Sun [_last(Oct)] UNTIL 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 Savings 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 30 MSG %"Mischief Night%"
REM Oct 31 MSG %"Halloween%" 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 # # dates were obtained from "The First Jewish Catalog" by Richard Siegel #
# and Michael and Sharon Strassfeld, published by the Jewish Publication # # and Michael and Sharon Strassfeld, published by the Jewish Publication #
# Society of America. The Reform version of the calendar was guessed # # 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 # # Reform position on many of the holidays, so you may have to adjust #
# the file as required. # # the file as required. #
# # # #

View File

@@ -19,11 +19,11 @@ endif
syn case ignore syn case ignore
syn keyword remindCommands REM OMIT SET FSET UNSET 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 remindTag PRIORITY TAG
syn keyword remindTimed AT DURATION syn keyword remindTimed AT DURATION
syn keyword remindMove ONCE SKIP BEFORE AFTER 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 remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
syn keyword remindConditional IF ELSE ENDIF IFTRIG syn keyword remindConditional IF ELSE ENDIF IFTRIG
syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE

View File

@@ -1,5 +1,5 @@
.TH CM2REM 1 "18 October 1999" .TH CM2REM 1 "18 October 1999"
.UC4 .UC 4
.SH NAME .SH NAME
cm2rem.tcl \- Convert Sun's "cm" input file to Remind format cm2rem.tcl \- Convert Sun's "cm" input file to Remind format
.SH SYNOPSIS .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 \fBcm2rem.tcl\fR is supported by Roaring Penguin Software
Inc. (http://www.roaringpenguin.com) Inc. (http://www.roaringpenguin.com)
.PP .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 .SH BUGS
Not all of the Sun calendar manager options are respected. In particular, Not all of the Sun calendar manager options are respected. In particular,
nothing is done for e-mail actions. Also, the resulting Remind script nothing is done for e-mail actions. Also, the resulting Remind script

View File

@@ -1,5 +1,5 @@
.TH REM 1 "30 August 2007" .TH REM 1 "30 August 2007"
.UC4 .UC 4
.SH NAME .SH NAME
rem \- Invoke Remind with a default filename rem \- Invoke Remind with a default filename
.SH SYNOPSIS .SH SYNOPSIS
@@ -15,6 +15,6 @@ value of DOTREMINDERS as the filename. Otherwise, \fBremind\fR uses
the filename $HOME/.reminders the filename $HOME/.reminders
.PP .PP
.SH AUTHOR .SH AUTHOR
Remind was written by David F. Skoll <dfs@roaringpenguin.com> Remind was written by Dianne Skoll <dfs@roaringpenguin.com>
.SH SEE ALSO .SH SEE ALSO
\fBremind\fR \fBremind\fR

View File

@@ -1,5 +1,5 @@
.TH REM2PS 1 "11 April 2005" .TH REM2PS 1 "11 April 2005"
.UC4 .UC 4
.SH NAME .SH NAME
rem2ps \- draw a PostScript calendar from Remind output rem2ps \- draw a PostScript calendar from Remind output
.SH SYNOPSIS .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 Rem2PS is now supported by Roaring Penguin Software
Inc. (http://www.roaringpenguin.com) Inc. (http://www.roaringpenguin.com)
.PP .PP
Rem2PS was written by David F. Skoll <dfs@roaringpenguin.com>. Rem2PS was written by Dianne Skoll <dfs@roaringpenguin.com>.
.SH BUGS .SH BUGS
All \fBRem2ps\fR options are case-sensitive, unlike \fBRemind\fR. All \fBRem2ps\fR options are case-sensitive, unlike \fBRemind\fR.
Any time you supply Any time you supply

View File

@@ -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 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 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". 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 .SH OPTIONS
\fBRemind\fR has a slew of options. If you're new to the program, \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 messages. In particular, if no reminders are triggered, this mode
produces no output. produces no output.
.TP .TP
\fB\-a\fR .B \-a
The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger timed The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger
reminders that would also be queued. It also causes \fBRemind\fR not to timed reminders that trigger on the current day. It also causes
place timed reminders in a calendar. \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 .TP
\fB\-q\fR \fB\-q\fR
The \fB\-q\fR option causes \fBRemind\fR not to queue timed reminders 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: pops up a window and displays its invocation arguments. You could use:
.PP .PP
.nf .nf
remind '-kxmessage %s &' ... remind '\-kxmessage %s &' ...
.fi .fi
.PP .PP
to have all of your \fBMSG\fR-type reminders processed using xmessage. to have all of your \fBMSG\fR-type reminders processed using xmessage.
.PP .PP
A word of warning: It is very easy to spawn dozens of xmessage processes A word of warning: It is very easy to spawn dozens of xmessage
with the above technique. So be very careful. Also, the \fIcmd\fR is passed processes with the above technique. So be very careful. Because all
as an argument to \fBsprintf()\fR. If you use formatting directives other shell and whitespace characters are escaped, the program you execute
than %s, or use more than one %s directive, there's a good chance that with the \fB\-k\fR option must be prepared to handle the entire
you'll crash \fBRemind\fR. Finally, because all shell and whitespace message as a single argument.
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 .RE
.TP .TP
\fB\-z\fR[\fIn\fR] \fB\-z\fR[\fIn\fR] Runs \fBRemind\fR in the daemon mode. If \fIn\fR
Runs \fBRemind\fR in the daemon mode. If \fIn\fR is supplied, it is supplied, it specifies how often (in minutes) \fBRemind\fR should
specifies how often (in minutes) \fBRemind\fR should wake up to wake up to check if the reminder script has been changed. \fIN\fR
check if the reminder script has been changed. \fIN\fR defaults defaults to 1, and can range from 1 to 60. Note that the use of the
to 5, and can range from 5 to 60. Note that the use of the
\fB\-z\fR option also enables the \fB\-f\fR option. \fB\-z\fR option also enables the \fB\-f\fR option.
.PP .PP
.RS .RS
@@ -313,7 +320,7 @@ text editor capable of creating plain ASCII files to create a
very simple and almost immediately understandable: very simple and almost immediately understandable:
.PP .PP
.nf .nf
REM 6 Jan MSG David's birthday REM 6 Jan MSG Dianne's birthday
.fi .fi
.PP .PP
to the baroque and obscure: 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: defaults to \fBMSG\fR. So you can write:
.PP .PP
.nf .nf
6 January David's Birthday 6 January Dianne's Birthday
.fi .fi
.PP .PP
although this is not recommended. 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: The \fIback\fR specification in the reminder is used in this case:
.PP .PP
.nf .nf
REM Mon 1 -7 MSG Last Monday of every month. REM Mon 1 \-7 MSG Last Monday of every month.
.fi .fi
.PP .PP
A \fIback\fR is specified with one or two dashes followed by an integer. 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. preceding it. The omitted days are counted.
.PP .PP
.nf .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 .fi
.PP .PP
Again, in the above example, the \fIback\fR of \-1 normally causes the 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: scripts, where you can use the command:
.PP .PP
.nf .nf
remind -fa myreminders & remind \-fa myreminders &
.fi .fi
.PP .PP
This ensures that when you exit X-Windows, the \fBRemind\fR process is killed. 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 If you specify a filename of "-" in the \fBINCLUDE\fR command, \fBRemind\fR
will begin reading from standard input. will begin reading from standard input.
.PP .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 \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 patterm "*.rem". The files are processed in sorted order; the sort order
matches that used by the shell when it expands "*.rem". 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) .B $Daemon (read-only)
If the daemon mode \fB\-z\fR was invoked, contains the number of If the daemon mode \fB\-z\fR was invoked, contains the number of
minutes between wakeups. If not running in daemon mode, contains minutes between wakeups. If not running in daemon mode, contains
0. For the MS-DOS version, always contains 0. 0.
.TP .TP
.B $DateSep .B $DateSep
This variable can be set only to "/" or "-". It holds the character This variable can be set only to "/" or "-". It holds the character
@@ -1885,15 +1892,13 @@ from 0 to 9999.
.TP .TP
.B $DontFork (read-only) .B $DontFork (read-only)
If non-zero, then the \fB\-c\fR option was supplied on the command line. If non-zero, then the \fB\-c\fR option was supplied on the command line.
For the MS-DOS version, always contains 1.
.TP .TP
.B $DontTrigAts (read-only) .B $DontTrigAts (read-only)
If non-zero, then the \fB\-a\fR option was supplied on the command line. The number of times that the \fB\-a\fR option was supplied on the
For the MS-DOS version, always contains 0. command line.
.TP .TP
.B $DontQueue (read-only) .B $DontQueue (read-only)
If non-zero, then the \fB\-q\fR option was supplied on the command line. If non-zero, then the \fB\-q\fR option was supplied on the command line.
For the MS-DOS version, always contains 1.
.TP .TP
.B $EndSent (STRING type) .B $EndSent (STRING type)
Contains a list of characters that end a sentence. The \fBMSF\fR 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 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 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. "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 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 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, 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 this variable is 0. Set it to 1 if the sun or UTC functions misbehave
for years greater than 2037. 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 .TP
.B $LatDeg, $LatMin, $LatSec .B $LatDeg, $LatMin, $LatSec
These specify the latitude of your location. \fB$LatDeg\fR can 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 are positive; southern ones are negative. For southern latitudes, all
three components should be negative. three components should be negative.
.TP .TP
@@ -1965,8 +1970,10 @@ the latitude and longitude system variables.
.TP .TP
.B $LongDeg, $LongMin, $LongSec .B $LongDeg, $LongMin, $LongSec
These specify the longitude of your location. \fB$LongDeg\fR can These specify the longitude of your location. \fB$LongDeg\fR can
range from -180 to 180. Western longitudes are positive; eastern range from \-180 to 180. Western longitudes are positive; eastern
ones are negative. 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 .RS
.PP .PP
The latitude and longitude information is required for the functions 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. \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, Otherwise, you must set it explicitly. If \fB$CalcUTC\fR is zero,
then \fB$MinsFromUTC\fR is used in the astronomical calculations. You 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 want to initialize \fB$MinsFromUTC\fR
using the \fB\-i\fR command-line option, you using the \fB\-i\fR command-line option, you
must also set \fB$CalcUTC\fR to 0 with the \fB\-i\fR option. 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 .TP
.B $NumQueued (read-only) .B $NumQueued (read-only)
Contains the number of reminders queued so far for background Contains the number of reminders queued so far for background
timed triggering. For MS-DOS, always returns 0. timed triggering.
.TP .TP
.B $NumTrig (read-only) .B $NumTrig (read-only)
Contains the number of reminders triggered for the current date. One 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 write and execute permission testing. Alternatively, \fImode\fR can
be a number as described in the UNIX \fBaccess\fR(2) system call. The 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, function returns 0 if the file can be accessed with the specified \fImode\fR,
and -1 otherwise. and \-1 otherwise.
.TP .TP
.B args(s_fname) .B args(s_fname)
Returns the number of arguments expected by the user-defined function 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. this function examines only user-defined functions, not built-in functions.
Its main use is to determine whether or not a particular user-defined Its main use is to determine whether or not a particular user-defined
function has been defined previously. The \fBargs()\fR function is function has been defined previously. The \fBargs()\fR function is
@@ -2396,7 +2403,7 @@ The optional parameter \fIstart\fR specifies the position in
.RE .RE
.TP .TP
.B isdst([d_date [,t_time]]) \fRor\fB isdst(q_datetime) .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 effect on the specified date and time. \fIDate\fR
defaults to \fBtoday()\fR and \fItime\fR defaults to midnight. defaults to \fBtoday()\fR and \fItime\fR defaults to midnight.
.RS .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: moon displayed, you could use this in your reminder script:
.PP .PP
.nf .nf
REM [moondate(0)] PS [psmoon(0, -1, moontime(0)+"")] REM [moondate(0)] PS [psmoon(0, \-1, moontime(0)+"")]
.fi .fi
.PP .PP
Note how the time is coerced to a string by concatenating the null string. 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. in calendar mode, or if a date has been supplied on the command line.
.TP .TP
.B sgn(i_num) .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. and 0 if \fInum\fR is zero.
.TP .TP
.B shell(s_cmd [,i_maxlen]) .B shell(s_cmd [,i_maxlen])
@@ -2703,7 +2710,7 @@ May 16 and 17. You can go backwards, too, so:
.PP .PP
.nf .nf
OMIT 14 May 2009 OMIT 14 May 2009
SET a slide('2009-05-21', -5, "Sat", "Sun") SET a slide('2009-05-21', \-5, "Sat", "Sun")
.fi .fi
.PP .PP
takes \fIa\fR back to 2009-05-13. 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 L. E. Doggett, Nautical Almanac Office, USNO. They require
the latitude and longitude to be specified by setting the appropriate the latitude and longitude to be specified by setting the appropriate
system variables. (See "System Variables".) The sun functions 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 than 60 degrees. The functions are available starting from version
03.00.07 of \fBRemind\fR. 03.00.07 of \fBRemind\fR.
.RE .RE
@@ -2921,7 +2928,7 @@ exceptions:
o o
If \fBRemind\fR is expecting an expression, as in the \fBSET\fR command, 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. or the \fBIF\fR command, you should \fBnot\fR include square brackets.
FOr example, use: For example, use:
.PP .PP
.nf .nf
SET a 4+5 SET a 4+5
@@ -3045,7 +3052,7 @@ to true if a corresponding \fBREM\fR command would trigger. Examples:
; Executed except on 1 Nov ; Executed except on 1 Nov
ENDIF ENDIF
IFTRIG 1 -1 OMIT Sat Sun +4 IFTRIG 1 \-1 OMIT Sat Sun +4
; Executed on last working day of month, ; Executed on last working day of month,
; and the 4 working days preceding it ; and the 4 working days preceding it
ELSE ELSE
@@ -3073,7 +3080,7 @@ you define a function taking no parameters. Here are some examples:
.nf .nf
FSET double(x) 2*x FSET double(x) 2*x
FSET yeardiff(date1, date2) year(date1) - year(date2) FSET yeardiff(date1, date2) year(date1) - year(date2)
FSET since(x) ord(year(trigdate())-x) FSET since(x) ord(year(trigdate())\-x)
.fi .fi
.PP .PP
The last function is useful in birthday reminders. For example: The last function is useful in birthday reminders. For example:
@@ -3197,7 +3204,7 @@ clause to do anything.
Here's an example: Here's an example:
.PP .PP
.nf .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 REM AT 13:00 SCHED _sfun MSG foo
.fi .fi
.PP .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: following command will send PostScript code to standard output:
.PP .PP
.nf .nf
remind -p .reminders | rem2ps remind \-p .reminders | rem2ps
.fi .fi
.PP .PP
You can print a PostScript calendar by piping this to the \fBlpr\fR command. 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: execute this command:
.PP .PP
.nf .nf
remind -c .reminders jan 1993 remind \-c .reminders jan 1993
.fi .fi
.PP .PP
then \fBRemind\fR executes the script 31 times, once for each day in 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: example, consider the following:
.PP .PP
.nf .nf
REM 6 Jan MSG %"David's birthday%" is %b REM 6 Jan MSG %"Dianne's birthday%" is %b
.fi .fi
.PP .PP
In the normal mode, \fBRemind\fR would print "David's birthday is today" In the normal mode, \fBRemind\fR would print "Dianne's birthday is today"
on 6 January. However, in the calendar mode, only the text "David's birthday" on 6 January. However, in the calendar mode, only the text "Dianne's birthday"
is inserted into the box for 6 January. is inserted into the box for 6 January.
.PP .PP
If you explicitly use the %"...%" sequence in a \fBRUN\fR-type reminder, 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: so to run in the daemon mode in the background, use:
.PP .PP
.nf .nf
remind -z .reminders & remind \-z .reminders &
.fi .fi
.PP .PP
If you use \fBsh\fR or \fBbash\fR, you may have to use the "nohup" command 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 .PP
The \fBSPECIAL\fR keyword is used to transmit "out-of-band" information The \fBSPECIAL\fR keyword is used to transmit "out-of-band" information
to \fBRemind\fR backends, such as \fBtkremind\fR or \fBRem2PS\fR. 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 (Note that the COLOR special is an exception; it downgrades to the
equivalent of MSG in \fBremind's\fR normal mode of operation.) equivalent of MSG in \fBremind's\fR normal mode of operation.)
.PP .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. 1 the first quarter, 2 a full moon and 3 the last quarter.
.PP .PP
\fImoonsize\fR is the diameter in PostScript units of the moon to \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. size.
.PP .PP
\fIfontsize\fR is the font size in PostScript units of the \fImsg\fR \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 REM ... SPECIAL COLOR 0 128 0 This is a dark green reminder
.fi .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 Immediately following COLOR should be three decimal numbers ranging
from 0 to 255 specifying red, green and blue intensities, respectively. from 0 to 255 specifying red, green and blue intensities, respectively.
The rest of the line is the text to put in the calendar. 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 .PP
.nf .nf
REM 5 Feb 1991 AT 14:00 +45 *30 \\ 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 .fi
.PP .PP
On 5 February, 1991, this reminder will mail 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. and the body of the message will be blank.
.PP .PP
.nf .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 .fi
.PP .PP
This reminder will pop up an xless window at 5:00pm every day. The xless This reminder will pop up an xless window at 5:00pm every day. The xless
window will contain the line "5:00pm - GO HOME!" window will contain the line "5:00pm - GO HOME!"
.PP .PP
.nf .nf
REM AT 23:59 RUN (sleep 120; remind -a [filename()]) & REM AT 23:59 RUN (sleep 120; remind \-a [filename()]) &
.fi .fi
.PP .PP
This reminder will run at one minute to midnight. It will cause a new 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. 1993, with all entries left blank.
.PP .PP
.nf .nf
REM CAL [trigdate()-date(year(trigdate()), 1, 1)+1] REM CAL [trigdate()\-date(year(trigdate()), 1, 1)+1]
.fi .fi
.PP .PP
This example puts an entry in each box of a calendar showing the number 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: following sequence:
.PP .PP
.nf .nf
REM Mon 1 Sept SCANFROM [today()-7] SATISFY 1 REM Mon 1 Sept SCANFROM [today()\-7] SATISFY 1
OMIT [trigdate()] OMIT [trigdate()]
REM Mon AFTER MSG Hello 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 Remind is now supported by Roaring Penguin Software
Inc. (http://www.roaringpenguin.com) Inc. (http://www.roaringpenguin.com)
.PP .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 was copied largely unmodified from "moontool" by John Walker. The
sunrise and sunset functions use ideas from programs by Michael sunrise and sunset functions use ideas from programs by Michael
Schwartz and Marc T. Kaufman. The Hebrew calendar support was taken Schwartz and Marc T. Kaufman. The Hebrew calendar support was taken

View File

@@ -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 the check button to enable an expiry date, and fill in the values
using pull-down menus. 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 and whether or not weekends and holidays are counted when computing advance
notice. notice.
@@ -179,7 +179,7 @@ it starts up in a normal window.
.TP .TP
.B Show Today's Reminders on Startup .B Show Today's Reminders on Startup
If this is selected, \fBTkRemind\fR shows a text window containing reminders 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. changes at midnight.
.TP .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: When \fBTkRemind\fR invokes \fBRemind\fR, it supplies the option:
.PP .PP
.nf .nf
-itkremind=1 \-itkremind=1
.fi .fi
.PP .PP
on the command line. So, in your \fBRemind\fR file, you can include: 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 TkRemind is now supported by Roaring Penguin Software
Inc. (http://www.roaringpenguin.com) Inc. (http://www.roaringpenguin.com)
.PP .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. 1999 by Roaring Penguin Software Inc.
.SH FILES .SH FILES

2
scripts/cm2rem.tcl Executable file → Normal file
View File

@@ -8,7 +8,7 @@
# files (version 3 only) to Remind format. # files (version 3 only) to Remind format.
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
# #
#-------------------------------------------------------------- #--------------------------------------------------------------

7
scripts/tkremind Executable file → Normal file
View File

@@ -7,7 +7,7 @@
# A cheesy graphical front/back end for Remind using Tcl/Tk # A cheesy graphical front/back end for Remind using Tcl/Tk
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2010 Roaring Penguin Software Inc.
# #
#-------------------------------------------------------------- #--------------------------------------------------------------
@@ -796,6 +796,7 @@ proc FillCalWindow {} {
DoMoonSpecial $n $stuff DoMoonSpecial $n $stuff
continue continue
} }
"COLOUR" -
"COLOR" { "COLOR" {
if {[regexp {^ *([0-9]+) +([0-9]+) +([0-9]+) +(.*)$} $stuff all r g b rest]} { if {[regexp {^ *([0-9]+) +([0-9]+) +([0-9]+) +(.*)$} $stuff all r g b rest]} {
if {$r > 255} { if {$r > 255} {
@@ -822,7 +823,7 @@ proc FillCalWindow {} {
} }
} }
} }
if { $type != "*" && $type != "COLOR"} { if { $type != "*" && $type != "COLOR" && $type != "COLOUR"} {
continue continue
} }
.cal.t$n configure -state normal .cal.t$n configure -state normal
@@ -2318,7 +2319,7 @@ proc main {} {
global AppendFile HighestTagSoFar DayNames global AppendFile HighestTagSoFar DayNames
catch { 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." puts "Copyright (C) 1999-2010 Roaring Penguin Software Inc."
} }
catch { SetFonts } catch { SetFonts }

View File

@@ -41,7 +41,7 @@ test: remind
@sh ../tests/test-rem @sh ../tests/test-rem
.c.o: .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 rem2ps: rem2ps.o dynbuf.o
@CC@ @LDFLAGS@ $(LDEXTRA) -o 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. # Build a tar file based on all files checked into git.
distro: distro:
ln -s . ../remind-$(VERSION) 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 gzip -f -v -9 remind-$(VERSION).tar
rm -f ../remind-$(VERSION) rm -f ../remind-$(VERSION)
beta-tgz: beta-tgz:
ln -s . ../remind-$(VERSION)-BETA-$(BETA) 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 gzip -f -v -9 remind-$(VERSION)-BETA-$(BETA).tar
rm -f ../remind-$(VERSION)-BETA-$(BETA) rm -f ../remind-$(VERSION)-BETA-$(BETA)

View File

@@ -5,7 +5,7 @@
/* The code for generating a calendar. */ /* The code for generating a calendar. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -1016,11 +1016,12 @@ static int DoCalRem(ParsePtr p, int col)
trig.typ = PASSTHRU_TYPE; trig.typ = PASSTHRU_TYPE;
} }
if (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); FreeTrig(&trig);
return OK; return OK;
} }
if (!strcmp(trig.passthru, "COLOR")) { if (!strcmp(trig.passthru, "COLOR") ||
!strcmp(trig.passthru, "COLOUR")) {
is_color = 1; is_color = 1;
/* Strip off the three color numbers */ /* Strip off the three color numbers */
DBufFree(&buf); 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 */ /* Suppress time if it's not today or if it's a non-COLOR special */
if (jul != JulianToday || if (jul != JulianToday ||
(trig.typ == PASSTHRU_TYPE && (trig.typ == PASSTHRU_TYPE &&
strcmp(trig.passthru, "COLOUR") &&
strcmp(trig.passthru, "COLOR"))) { strcmp(trig.passthru, "COLOR"))) {
if (DBufPuts(&obuf, SimpleTime(NO_TIME)) != OK) { if (DBufPuts(&obuf, SimpleTime(NO_TIME)) != OK) {
DBufFree(&obuf); DBufFree(&obuf);

View File

@@ -6,7 +6,7 @@
/* which you can customize. */ /* which you can customize. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -178,7 +178,7 @@
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
/* How many attempts to resolve a weird date spec? */ /* 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? */ /* How many global omits of the form YYYY MM DD do we handle? */

View File

@@ -6,7 +6,7 @@
/* which you can customize. */ /* which you can customize. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -178,7 +178,7 @@
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
/* How many attempts to resolve a weird date spec? */ /* 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? */ /* How many global omits of the form YYYY MM DD do we handle? */

View File

@@ -7,7 +7,7 @@
/* commands. */ /* commands. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* 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(&calRow);
DBufInit(&pre_buf); DBufInit(&pre_buf);
if (t->typ == RUN_TYPE && RunDisabled) return E_RUN_DISABLED; 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 == CAL_TYPE ||
t->typ == PS_TYPE || t->typ == PS_TYPE ||
t->typ == PSF_TYPE) t->typ == PSF_TYPE)
return OK; return OK;
/* Handle COLOR types */ /* 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 */ /* Strip off three tokens */
r = ParseToken(p, &buf); r = ParseToken(p, &buf);
if (!NextMode) { if (!NextMode) {
@@ -751,10 +751,10 @@ int TriggerReminder(ParsePtr p, Trigger *t, TimeTrig *tim, int jul)
DBufFree(&buf); DBufFree(&buf);
} }
/* If it's NextMode, process as a CAL-type entry, and issue simple-calendar /* If it's NextMode, process as a ADVANCE_MODE-type entry, and issue
format. */ simple-calendar format. */
if (NextMode) { 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)) { if (!DBufLen(&buf)) {
DBufFree(&buf); DBufFree(&buf);
DBufFree(&pre_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 /* Don't trigger timed reminders if DontIssueAts is true, and if the
reminder is for today */ 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 */ /* Don't trigger "old" timed reminders */
/*** REMOVED... /*** REMOVED...

View File

@@ -6,7 +6,7 @@
/* reminders are triggered. */ /* reminders are triggered. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* 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 *os;
char s[256]; char s[256];
int origLen = DBufLen(dbuf); int origLen = DBufLen(dbuf);
int altmode;
FromJulian(jul, &y, &m, &d); 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; if (DBufPutc(dbuf, c) != OK) return E_NO_MEM;
continue; continue;
} }
altmode = 0;
s[0] = 0; s[0] = 0;
c = ParseChar(p, &err, 0); c = ParseChar(p, &err, 0);
if (err) { if (err) {
@@ -150,6 +152,17 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
if (!c) { if (!c) {
break; break;
} }
if (c == '*') {
altmode = c;
c = ParseChar(p, &err, 0);
if (err) {
DBufFree(dbuf);
return err;
}
if (!c) {
break;
}
}
done = 0; done = 0;
if (diff <= 1) { if (diff <= 1) {
switch(UPPER(c)) { switch(UPPER(c)) {
@@ -206,8 +219,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_A_OVER #ifdef L_A_OVER
L_A_OVER L_A_OVER
#else #else
sprintf(s, "%s %s, %d %s, %d", L_ON, DayName[jul%7], d, if (altmode == '*') {
MonthName[m], y); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -225,7 +243,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_C_OVER #ifdef L_C_OVER
L_C_OVER L_C_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -243,8 +265,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_E_OVER #ifdef L_E_OVER
L_E_OVER L_E_OVER
#else #else
sprintf(s, "%s %02d%c%02d%c%04d", L_ON, d, DateSep, if (altmode == '*') {
m+1, DateSep, y); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -253,7 +280,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_F_OVER #ifdef L_F_OVER
L_F_OVER L_F_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -262,7 +293,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_G_OVER #ifdef L_G_OVER
L_G_OVER L_G_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -271,7 +306,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_H_OVER #ifdef L_H_OVER
L_H_OVER L_H_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -280,7 +319,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_I_OVER #ifdef L_I_OVER
L_I_OVER L_I_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -289,8 +332,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_J_OVER #ifdef L_J_OVER
L_J_OVER L_J_OVER
#else #else
sprintf(s, "%s %s, %s %d%s, %d", L_ON, DayName[jul%7], if (altmode == '*') {
MonthName[m], d, plu, y); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -299,8 +347,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_K_OVER #ifdef L_K_OVER
L_K_OVER L_K_OVER
#else #else
sprintf(s, "%s %s, %s %d%s", L_ON, DayName[jul%7], if (altmode == '*') {
MonthName[m], d, plu); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -309,7 +362,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_L_OVER #ifdef L_L_OVER
L_L_OVER L_L_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -391,8 +448,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_U_OVER #ifdef L_U_OVER
L_U_OVER L_U_OVER
#else #else
sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], d, if (altmode == '*') {
plu, MonthName[m], y); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -401,8 +463,13 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_V_OVER #ifdef L_V_OVER
L_V_OVER L_V_OVER
#else #else
sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], d, plu, if (altmode == '*') {
MonthName[m]); 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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -464,7 +531,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
#ifdef L_2_OVER #ifdef L_2_OVER
L_2_OVER L_2_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; break;
@@ -474,7 +545,11 @@ int DoSubst(ParsePtr p, DynamicBuffer *dbuf, Trigger *t, TimeTrig *tt, int jul,
L_3_OVER L_3_OVER
#else #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 #endif
SHIP_OUT(s); SHIP_OUT(s);
break; 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 (DBufPutc(dbuf, c) != OK) return E_NO_MEM;
} }
if (isupper(c)) { if (isupper(c)) {
os = DBufValue(dbuf) - strlen(s); os = DBufValue(dbuf);
*os = UPPER(*os); os += strlen(os) - strlen(s);
if (os >= DBufValue(dbuf)) {
*os = UPPER(*os);
}
} }
} }

View File

@@ -6,7 +6,7 @@
/* buffers. */ /* buffers. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Declaration of functions for manipulating dynamic buffers */ /* Declaration of functions for manipulating dynamic buffers */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Error definitions. */ /* Error definitions. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* This file contains routines to parse and evaluate */ /* This file contains routines to parse and evaluate */
/* expressions. */ /* expressions. */
/* */ /* */
/* Copyright 1992-1998 by David F. Skoll */ /* Copyright 1992-1998 by Dianne Skoll */
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Contains a few definitions used by expression evaluator. */ /* Contains a few definitions used by expression evaluator. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -7,7 +7,7 @@
/* files. */ /* files. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -181,6 +181,8 @@ int ReadLine(void)
static int ReadLineFromFile(void) static int ReadLineFromFile(void)
{ {
int l; int l;
char copy_buffer[4096];
size_t n;
DynamicBuffer buf; DynamicBuffer buf;
@@ -234,8 +236,25 @@ static int ReadLineFromFile(void)
DBufFree(&LineBuffer); DBufFree(&LineBuffer);
return E_NO_MEM; return E_NO_MEM;
} }
FreshLine = 1; DBufFree(&buf);
/* If the line is: __EOF__ treat it as end-of-file */
CurLine = DBufValue(&LineBuffer); 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); if (DebugFlag & DB_ECHO_LINE) OutputLine(ErrFp);
return OK; return OK;
} }

View File

@@ -6,7 +6,7 @@
/* expressions. */ /* expressions. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -1791,7 +1791,7 @@ static int FEasterdate(func_info *info)
/* */ /* */
/* FIsdst and FMinsfromutc */ /* 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. */ /* 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) static int SunStuff(int rise, double cosz, int jul)
{ {
int year, mon, day;
int jan0;
int mins, hours; 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; double latitude, longdeg, UT, local;
/* Get offset from UTC */ /* Get offset from UTC */
@@ -1879,47 +1877,39 @@ static int SunStuff(int rise, double cosz, int jul)
FromJulian(jul, &year, &mon, &day); FromJulian(jul, &year, &mon, &day);
jan0 = jul - Julian(year, 0, 1);
dusk_or_dawn = rise;
if (rise > 1) if (rise > 1)
rise -= 2; 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??? */ /* Following formula on page B6 exactly... */
M = 0.985600 * t - 3.251; /* In degrees */ 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 */ /* Sun's true longitude */
L = M + 1.916*sin(DEGRAD*M) + 0.02*sin(2*DEGRAD*M) + 282.565; L = M + 1.916*sin(DEGRAD*M) + 0.02*sin(2*DEGRAD*M) + 283.07080214;
if (dusk_or_dawn == 2) {/* dusk */
L += 6;
} else if (dusk_or_dawn == 3) {/* dawn */
L -= 14;
}
if (L > 360.0) L -= 360.0; if (L > 360.0) L -= 360.0;
/* Tan of sun's right ascension */ /* Tan of sun's right ascension */
tanA = 0.91746 * tan(DEGRAD*L); a = RADDEG * atan2(0.91746*sin(DEGRAD*L), cos(DEGRAD*L));
a = RADDEG * atan(tanA); if (a<0) {
a += 360.0;
/* 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;
} }
/* if (fabs(a - L) > 90.0)
a += 180.0; */
if (a > 360.0)
a -= 360.0;
a_hr = a / 15.0; a_hr = a / 15.0;
/* Sine of sun's declination */ /* Sine of sun's declination */
@@ -1941,7 +1931,9 @@ static int SunStuff(int rise, double cosz, int jul)
H = RADDEG * acos(cosH); H = RADDEG * acos(cosH);
if (rise) H = 360.0 - H; 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; if (T >= 24.0) T -= 24.0;
else if (T < 0.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; if (local < 0.0) local += 24.0;
else if (local >= 24.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; hours = (int) local;
mins = (int) ((local - hours) * 60.0); 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) static int FSun(int rise, func_info *info)
{ {
int jul = JulianToday; int jul = JulianToday;
static double cosz = -0.014543897; /* for sunrise and sunset */ double cosz = -0.014543897; /* for sunrise and sunset */
int r; int r;
/* Civil twilight: cos(96 degrees) */
if (rise == 2 || rise == 3) {
cosz = -0.104528463268;
}
if (Nargs >= 1) { if (Nargs >= 1) {
if (!HASDATE(ARG(0))) return E_BAD_TYPE; if (!HASDATE(ARG(0))) return E_BAD_TYPE;
jul = DATEPART(ARG(0)); jul = DATEPART(ARG(0));

View File

@@ -8,7 +8,7 @@
/* globals.h and err.h */ /* globals.h and err.h */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -7,7 +7,7 @@
/* MK_GLOBALS. Also contains useful macro definitions. */ /* MK_GLOBALS. Also contains useful macro definitions. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Support for the Hebrew calendar */ /* Support for the Hebrew calendar */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/* Derived from code written by Amos Shapir in 1978; revised */ /* Derived from code written by Amos Shapir in 1978; revised */

View File

@@ -7,8 +7,8 @@
/* in normal mode. */ /* in normal mode. */
/* */ /* */
/* This file is part of REMIND. */ /* This file is part of REMIND. */
/* Copyright (C) 1992-1998 by David F. Skoll */ /* Copyright (C) 1992-1998 by Dianne Skoll */
/* Copyright (C) 1999-2010 by Roaring Penguin Software Inc. */ /* Copyright (C) 1999-2011 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -59,7 +59,7 @@
* v = Dump variables at end * v = Dump variables at end
* l = Display entire line in error messages * l = Display entire line in error messages
* -e = Send messages normally sent to stderr to stdout instead * -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) * -bn = Time format for cal (0, 1, or 2)
* -xn = Max. number of iterations for SATISFY * -xn = Max. number of iterations for SATISFY
* -uname = Run as user 'name' - only valid when run by root. If run * -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; char const *s;
int weeks; int weeks;
int jul, tim; int jul;
#if defined(__APPLE__) #if defined(__APPLE__)
rkrphgvba(0); rkrphgvba(0);
@@ -146,7 +146,6 @@ void InitRemind(int argc, char const *argv[])
#endif #endif
jul = NO_DATE; jul = NO_DATE;
tim = NO_TIME;
/* Initialize global dynamic buffers */ /* Initialize global dynamic buffers */
DBufInit(&Banner); DBufInit(&Banner);
@@ -318,7 +317,7 @@ void InitRemind(int argc, char const *argv[])
case 'a': case 'a':
case 'A': case 'A':
DontIssueAts = 1; DontIssueAts++;
break; break;
case 'q': case 'q':
@@ -570,12 +569,12 @@ void InitRemind(int argc, char const *argv[])
} }
if (d == NO_DAY) d=1; if (d == NO_DAY) d=1;
if (d > DaysInMonth(m, y)) { if (d > DaysInMonth(m, y)) {
fprintf(ErrFp, BadDate); fprintf(ErrFp, "%s", BadDate);
Usage(); Usage();
} }
JulianToday = Julian(y, m, d); JulianToday = Julian(y, m, d);
if (JulianToday == -1) { if (JulianToday == -1) {
fprintf(ErrFp, BadDate); fprintf(ErrFp, "%s", BadDate);
Usage(); Usage();
} }
CurYear = y; CurYear = y;
@@ -601,8 +600,8 @@ void InitRemind(int argc, char const *argv[])
#ifndef L_USAGE_OVERRIDE #ifndef L_USAGE_OVERRIDE
void Usage(void) 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-2010 Roaring Penguin Software Inc.\n"); fprintf(ErrFp, "Copyright 1999-2011 Roaring Penguin Software Inc.\n");
#ifdef BETA #ifdef BETA
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n"); fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");
#endif #endif
@@ -623,7 +622,7 @@ void Usage(void)
fprintf(ErrFp, " -a Don't trigger timed reminders immediately - just queue them\n"); fprintf(ErrFp, " -a Don't trigger timed reminders immediately - just queue them\n");
fprintf(ErrFp, " -q Don't queue timed reminders\n"); fprintf(ErrFp, " -q Don't queue timed reminders\n");
fprintf(ErrFp, " -f Trigger timed reminders by staying in foreground\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, " -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, " -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"); 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); home = malloc(strlen(pwent->pw_dir) + 6);
if (!home) { if (!home) {
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]); fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
exit(1); exit(1);
} }
sprintf(home, "HOME=%s", pwent->pw_dir); sprintf(home, "HOME=%s", pwent->pw_dir);
@@ -686,7 +685,7 @@ static void ChgUser(char const *user)
shell = malloc(strlen(pwent->pw_shell) + 7); shell = malloc(strlen(pwent->pw_shell) + 7);
if (!shell) { if (!shell) {
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]); fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
exit(1); exit(1);
} }
sprintf(shell, "SHELL=%s", pwent->pw_shell); sprintf(shell, "SHELL=%s", pwent->pw_shell);
@@ -695,14 +694,14 @@ static void ChgUser(char const *user)
if (pwent->pw_uid) { if (pwent->pw_uid) {
username = malloc(strlen(pwent->pw_name) + 6); username = malloc(strlen(pwent->pw_name) + 6);
if (!username) { if (!username) {
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]); fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
exit(1); exit(1);
} }
sprintf(username, "USER=%s", pwent->pw_name); sprintf(username, "USER=%s", pwent->pw_name);
putenv(username); putenv(username);
logname= malloc(strlen(pwent->pw_name) + 9); logname= malloc(strlen(pwent->pw_name) + 9);
if (!logname) { if (!logname) {
fprintf(ErrFp, ErrMsg[M_NOMEM_ENV]); fprintf(ErrFp, "%s", ErrMsg[M_NOMEM_ENV]);
exit(1); exit(1);
} }
sprintf(logname, "LOGNAME=%s", pwent->pw_name); sprintf(logname, "LOGNAME=%s", pwent->pw_name);

View File

@@ -5,14 +5,14 @@
/* Header file for language support for various languages. */ /* Header file for language support for various languages. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
/* I'm chauvinistic and name each language with its English name... */ /* 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 GERMAN 1 /* translated by Wolfgang Thronicke */
#define DUTCH 2 /* translated by Willem Kasdorp and Erik-Jan Vens */ #define DUTCH 2 /* translated by Willem Kasdorp and Erik-Jan Vens */
#define FINNISH 3 /* translated by Mikko Silvonen */ #define FINNISH 3 /* translated by Mikko Silvonen */

View File

@@ -6,7 +6,7 @@
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* This file is Copyright (C) 1993 by Mogens Lynnerup. */ /* 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_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_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_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_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_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_I_OVER sprintf(s, "den %02d%c%02d", m+1, DateSep, d);
#define L_U_OVER L_A_OVER #define L_U_OVER L_A_OVER

View File

@@ -6,12 +6,12 @@
/* */ /* */
/* Author: Willem Kasdorp */ /* Author: Willem Kasdorp */
/* */ /* */
/* Modified slightly by David Skoll */ /* Modified slightly by Dianne Skoll */
/* */ /* */
/* Further corrections by Erik-Jan Vens */ /* Further corrections by Erik-Jan Vens */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Support for the English language. */ /* Support for the English language. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -11,7 +11,7 @@
/* */ /* */
/* This file is part of REMIND. */ /* This file is part of REMIND. */
/* This file is Copyright (C) 1993-1998 by Mikko Silvonen. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -161,26 +161,19 @@
} \ } \
} }
#endif #endif
#define L_A_OVER sprintf(s, "%s%s %d. %s%s %d", DayName[jul%7], L_ON, d, \ #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); }
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_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_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_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, \ #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); }
MonthName[m], L_PARTIT);
#define L_H_OVER sprintf(s, "%02d%c%02d", d, DateSep, m+1); #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_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, \ #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); }
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_K_OVER 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_L_OVER sprintf(s, "%04d%c%02d%c%02d", y, DateSep, m+1, DateSep, d);
#define L_Q_OVER sprintf(s, "n"); #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, \ #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); }
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_V_OVER sprintf(s, "%s%s %d%s %s%s", DayName[jul%7], L_ON, d, \
plu, MonthName[m], L_PARTIT);
#define L_1_OVER \ #define L_1_OVER \
if (tdiff == 0) \ if (tdiff == 0) \
sprintf(s, "%s", L_NOW); \ sprintf(s, "%s", L_NOW); \
@@ -529,7 +522,7 @@ EXTERN char *ErrMsg[] =
#define L_USAGE_OVERRIDE 1 #define L_USAGE_OVERRIDE 1
void Usage(void) 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"); fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
#ifdef BETA #ifdef BETA
fprintf(ErrFp, ">>>> BETAVERSIO <<<<\n"); fprintf(ErrFp, ">>>> BETAVERSIO <<<<\n");

View File

@@ -8,10 +8,10 @@
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* This file is Copyright (C) 1993 by Laurent Duperval and */ /* 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); \ sprintf(s, "dans %d heure%s et %d minute%s", hdiff, hplu, mdiff, mplu); \
} }
#define L_J_OVER \ #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); }
sprintf(s, "%s %s, %d%s %s, %d", L_ON, DayName[jul%7], \
d, plu, MonthName[m], y);
#define L_K_OVER \ #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]); }
sprintf(s, "%s %s, %d%s %s", L_ON, DayName[jul%7], \
d, plu, MonthName[m]);
#endif /* L_IN_DOSUBST */ #endif /* L_IN_DOSUBST */
@@ -360,7 +356,7 @@ EXTERN char *ErrMsg[] =
#define L_USAGE_OVERRIDE 1 #define L_USAGE_OVERRIDE 1
void Usage(void) 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"); fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
#ifdef BETA #ifdef BETA
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n"); fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");

View File

@@ -9,7 +9,7 @@
/* I don't speak German. */ /* I don't speak German. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -93,8 +93,8 @@
See the file dosubst.c for more info. */ 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_AMPM_OVERRIDE(ampm, hour) ampm = (hour < 12) ? (hour<5) ? " nachts" : " vormittags" : (hour > 17) ? " abends" : " nachmittags";
#define L_ORDINAL_OVERRIDE plu = "."; #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_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_U_OVER L_A_OVER #define L_U_OVER L_A_OVER
#define L_V_OVER L_G_OVER #define L_V_OVER L_G_OVER

View File

@@ -5,7 +5,7 @@
/* Support for the Icelandic language. */ /* Support for the Icelandic language. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* Translated by Björn Davíðsson (bjossi@snerpa.is) */ /* Translated by Björn Davíðsson (bjossi@snerpa.is) */
/* */ /* */

View File

@@ -7,7 +7,7 @@
/* This file is part of REMIND. */ /* This file is part of REMIND. */
/* It is Copyright (C) 1996 by Valerio Aimale */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -6,7 +6,7 @@
/* */ /* */
/* This file is part of REMIND. */ /* This file is part of REMIND. */
/* This file is Copyright (C) 1993 by Trygve Randen. */ /* 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. */ /* 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. /* Define any overrides here, such as L_ORDINAL_OVERRIDE, L_A_OVER, etc.
See the file dosubst.c for more info. */ See the file dosubst.c for more info. */
#define L_ORDINAL_OVERRIDE plu = "."; #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_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_U_OVER L_A_OVER #define L_U_OVER L_A_OVER
#define L_V_OVER L_G_OVER #define L_V_OVER L_G_OVER

View File

@@ -9,7 +9,7 @@
/* Polish. */ /* Polish. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -141,8 +141,8 @@ ampm = (hour<12) ? \
: " w nocy"; : " w nocy";
#endif #endif
#define L_ORDINAL_OVERRIDE plu = ""; #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_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 sprintf(s, "%s %s, %d. %s", L_ON, DayName[jul%7], d, MonthName[m]); #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_U_OVER L_A_OVER
#define L_V_OVER L_G_OVER #define L_V_OVER L_G_OVER
@@ -394,7 +394,7 @@ EXTERN char *ErrMsg[] =
#define L_USAGE_OVERRIDE 1 #define L_USAGE_OVERRIDE 1
void Usage(void) 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"); fprintf(ErrFp, "Copyright 1999-2000 Roaring Penguin Software Inc.\n");
#ifdef BETA #ifdef BETA
fprintf(ErrFp, ">>>> BETA VERSION <<<<\n"); fprintf(ErrFp, ">>>> BETA VERSION <<<<\n");

View File

@@ -8,10 +8,10 @@
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* This file is Copyright (C) 1996 by Marco Paganini and */ /* 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 #define L_USAGE_OVERRIDE 1
void Usage(void) 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"); fprintf(ErrFp, "(C) 1999-2000 Roaring Penguin Software Inc.\n");
#ifdef BETA #ifdef BETA
fprintf(ErrFp, ">>>> VERSAO BETA <<<<\n"); fprintf(ErrFp, ">>>> VERSAO BETA <<<<\n");

View File

@@ -1,4 +1,4 @@
/***************************************************************/ !/***************************************************************/
/* */ /* */
/* ROMANIAN.H */ /* ROMANIAN.H */
/* */ /* */
@@ -8,7 +8,7 @@
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* This file is Copyright (C) 1996-1998 by Liviu Daia */ /* This file is Copyright (C) 1996-1998 by Liviu Daia */
/* */ /* */

View File

@@ -7,7 +7,7 @@
/* Author: Rafa Couto <rafacouto@biogate.com> */ /* Author: Rafa Couto <rafacouto@biogate.com> */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -42,7 +42,7 @@
#define L_JUL "Julio" #define L_JUL "Julio"
#define L_AUG "Agosto" #define L_AUG "Agosto"
#define L_SEP "Septiembre" #define L_SEP "Septiembre"
#define L_OCT "Octuber" #define L_OCT "Octubre"
#define L_NOV "Noviembre" #define L_NOV "Noviembre"
#define L_DEC "Diciembre" #define L_DEC "Diciembre"

View File

@@ -6,8 +6,8 @@
/* routines, etc. */ /* routines, etc. */
/* */ /* */
/* This file is part of REMIND. */ /* This file is part of REMIND. */
/* Copyright (C) 1992-1998 by David F. Skoll */ /* Copyright (C) 1992-1998 by Dianne Skoll */
/* Copyright (C) 1999-2010 by Roaring Penguin Software Inc. */ /* Copyright (C) 1999-2011 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -141,7 +141,7 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
MD5Transform(ctx->buf, (uint32 *) ctx->in); MD5Transform(ctx->buf, (uint32 *) ctx->in);
byteReverse((unsigned char *) ctx->buf, 4); byteReverse((unsigned char *) ctx->buf, 4);
memcpy(digest, ctx->buf, 16); 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 #ifndef ASM_MD5

View File

@@ -5,7 +5,7 @@
/* Calculations for figuring out moon phases. */ /* Calculations for figuring out moon phases. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -6,7 +6,7 @@
/* the data structures for OMITted dates. */ /* the data structures for OMITted dates. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* 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 yend = NO_YR, mend = NO_MON, dend = NO_DAY, r;
int start, end, tmp; int start, end, tmp;
int parsing = 1;
Token tok; Token tok;
DynamicBuffer buf; DynamicBuffer buf;
DBufInit(&buf); DBufInit(&buf);
int parsing = 1;
while(parsing) { while(parsing) {
if ( (r=ParseToken(p, &buf)) ) return r; if ( (r=ParseToken(p, &buf)) ) return r;

View File

@@ -5,7 +5,7 @@
/* Function Prototypes. */ /* Function Prototypes. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Queue up reminders for subsequent execution. */ /* Queue up reminders for subsequent execution. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Print a PostScript calendar. */ /* Print a PostScript calendar. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* 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 (!strcmp(DBufValue(&buf), PSBEGIN)) {
if (!validfile) { if (!validfile) {
if (Verbose) { 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"); fprintf(stderr, "Generating PostScript calendar\n");
} }
} }
@@ -366,6 +366,7 @@ void DoPsCal(void)
} }
} }
} else if (!strcmp(passthru, "*") || } else if (!strcmp(passthru, "*") ||
!strcmp(passthru, "COLOUR") ||
!strcmp(passthru, "COLOR")) { !strcmp(passthru, "COLOR")) {
/* Put on linked list */ /* Put on linked list */
if (!CurEntries) { if (!CurEntries) {
@@ -375,7 +376,8 @@ void DoPsCal(void)
while(d->next) d = d->next; while(d->next) d = d->next;
d->next = c; d->next = c;
} }
if (!strcmp(passthru, "COLOR")) { if (!strcmp(passthru, "COLOR") ||
!strcmp(passthru, "COLOUR")) {
c->special = SPECIAL_COLOR; c->special = SPECIAL_COLOR;
} }
} }
@@ -770,7 +772,7 @@ void Init(int argc, char *argv[])
case 'o': case 'o':
if (i == argc) Usage("Offset must be supplied"); if (i == argc) Usage("Offset must be supplied");
offset = atoi(argv[i++]); 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"); if (!*s) Usage("Offset must specify l, r, t or b");
while(*s) { while(*s) {
switch(*s++) { switch(*s++) {

View File

@@ -5,7 +5,7 @@
/* Define the PostScript prologue */ /* Define the PostScript prologue */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/
@@ -13,8 +13,8 @@
char *PSProlog1[] = char *PSProlog1[] =
{ {
"% This file was produced by Remind and Rem2PS, written by", "% This file was produced by Remind and Rem2PS, written by",
"% David F. Skoll.", "% Dianne Skoll.",
"% Remind and Rem2PS are Copyright 1992-1997 David F. Skoll.", "% Remind and Rem2PS are Copyright 1992-1997 Dianne Skoll.",
"/ISOLatin1Encoding where { pop save true }{ false } ifelse", "/ISOLatin1Encoding where { pop save true }{ false } ifelse",
" /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus", " /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus",
" StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute", " StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute",

View File

@@ -5,7 +5,7 @@
/* Routines for sorting reminders by trigger date */ /* Routines for sorting reminders by trigger date */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

11
src/test-all-languages.sh Executable file
View 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

View File

@@ -6,7 +6,7 @@
/* classifying the tokens parsed. */ /* classifying the tokens parsed. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Routines for figuring out the trigger date of a reminder */ /* Routines for figuring out the trigger date of a reminder */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* 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; result;
trig->expired = 0; trig->expired = 0;
if (save_in_globals) LastTrigValid = 0; if (save_in_globals) {
LastTrigValid = 0;
}
/* Assume everything works */ /* Assume everything works */
*err = OK; *err = OK;

View File

@@ -5,7 +5,7 @@
/* Type definitions all dumped here. */ /* Type definitions all dumped here. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -6,7 +6,7 @@
/* functions. */ /* functions. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -5,7 +5,7 @@
/* Useful utility functions. */ /* Useful utility functions. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -6,7 +6,7 @@
/* user- and system-defined variables. */ /* user- and system-defined variables. */
/* */ /* */
/* This file is part of REMIND. */ /* 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. */ /* Copyright (C) 1999-2007 by Roaring Penguin Software Inc. */
/* */ /* */
/***************************************************************/ /***************************************************************/

View File

@@ -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 0 Dim Yellow
REM 28 SPECIAL COLOR 65 65 65 Dim White REM 28 SPECIAL COLOR 65 65 65 Dim White
REM 28 SPECIAL COLOR 129 0 0 Bright Red REM 28 SPECIAL COLOUR 129 0 0 Bright Red
REM 28 SPECIAL COLOR 0 129 0 Bright Green REM 28 SPECIAL COLOUR 0 129 0 Bright Green
REM 28 SPECIAL COLOR 0 0 129 Bright Blue REM 28 SPECIAL COLOUR 0 0 129 Bright Blue
REM 28 SPECIAL COLOR 0 129 129 Bright Cyan REM 28 SPECIAL COLOUR 0 129 129 Bright Cyan
REM 28 SPECIAL COLOR 129 0 129 Bright Magenta REM 28 SPECIAL COLOUR 129 0 129 Bright Magenta
REM 28 SPECIAL COLOR 129 129 0 Bright Yellow REM 28 SPECIAL COLOUR 129 129 0 Bright Yellow
REM 28 SPECIAL COLOR 129 129 129 Bright White REM 28 SPECIAL COLOUR 129 129 129 Bright White

13
tests/sun.rem Normal file
View 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()]

View File

@@ -7,7 +7,7 @@
# in the build directory. # in the build directory.
# #
# This file is part of REMIND. # 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. # 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 "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 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 echo "F1" >> ../tests/test.out
cat ../tests/purge_dir/f1.rem.purged >> ../tests/test.out cat ../tests/purge_dir/f1.rem.purged >> ../tests/test.out
echo "F2" >> ../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 ../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 cmp -s ../tests/test.out ../tests/test.cmp
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
echo "Remind: Acceptance test PASSED" echo "Remind: Acceptance test PASSED"

View File

@@ -836,7 +836,7 @@ set a057 value("a05"+"6")
"a05" + "6" => "a056" "a05" + "6" => "a056"
value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH" value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
set a058 version() set a058 version()
version() => "03.01.10" version() => "03.01.14"
set a059 wkday(today()) set a059 wkday(today())
today() => 1991-02-16 today() => 1991-02-16
wkday(1991-02-16) => "Saturday" wkday(1991-02-16) => "Saturday"
@@ -935,11 +935,81 @@ msg [a076]%
../tests/test.rem(272): Trig = Saturday, 16 February, 1991 ../tests/test.rem(272): Trig = Saturday, 16 February, 1991
a076 => "s' 05 th 05 on Tuesday, 5th May, 1992 on"... 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 s' 05 th 05 on Tuesday, 5th May, 1992 on Tuesday, 5th May Tuesday 444
set a077 dosubst("%y %z", '1992/5/5') set a074 dosubst("%*a %*b %*c %*d %*e %*f %*g %*h", '1992/5/5')
dosubst("%y %z", 1992-05-05) => "1992 92 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]% 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 a077 => "1992 92
" "
1992 92 1992 92
@@ -967,7 +1037,7 @@ dump
a017 29 a017 29
a036 "bar" a036 "bar"
a055 1 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" a008 "11:44"
a027 0 a027 0
a046 "ies" a046 "ies"
@@ -976,7 +1046,7 @@ dump
a018 1 a018 1
a037 1991-02-15 a037 1991-02-15
a056 "SDFJHSDF KSJDFH KJSDFH KSJDFH" 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 a028 1
a047 -1 a047 -1
a066 0 a066 0
@@ -984,12 +1054,12 @@ dump
a019 0 a019 0
a038 33 a038 33
a057 "SDFJHSDF KSJDFH KJSDFH KSJDFH" 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 a029 0
a048 "foo" a048 "foo"
a067 "INT" a067 "INT"
a039 "February" a039 "February"
a058 "03.01.10" a058 "03.01.14"
a077 "1992 92 a077 "1992 92
" "
a049 21 a049 21
@@ -1048,10 +1118,10 @@ dump
a083 1991-03-24 a083 1991-03-24
OMIT 2010-09-03 THROUGH 2010-09-15 OMIT 2010-09-03 THROUGH 2010-09-15
OMIT December 25 MSG X 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 # Next should give a parse error
OMIT 26 Dec 2010 THROUGH 27 Dec 2010 MSG This is not legal 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 OMIT DUMP
Global Full OMITs (16 of maximum allowed 500): Global Full OMITs (16 of maximum allowed 500):
1991-03-11 1991-03-11
@@ -2319,8 +2389,8 @@ No reminders.
%%Orientation: Landscape %%Orientation: Landscape
%%EndComments %%EndComments
% This file was produced by Remind and Rem2PS, written by % This file was produced by Remind and Rem2PS, written by
% David F. Skoll. % Dianne Skoll.
% Remind and Rem2PS are Copyright 1992-1997 David F. Skoll. % Remind and Rem2PS are Copyright 1992-1997 Dianne Skoll.
/ISOLatin1Encoding where { pop save true }{ false } ifelse /ISOLatin1Encoding where { pop save true }{ false } ifelse
/ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus
StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute
@@ -3411,3 +3481,15 @@ grestore
showpage showpage
%%Trailer %%Trailer
%%Pages: 1 %%Pages: 1
Reminders for Sunday, 1st January, 2012:
1
Reminders for Sunday, 1st January, 2012:
9am: Should show up
10am: Should show up
2

View File

@@ -270,7 +270,29 @@ set a075 dosubst("%i %j %k %l %m %n %o %p", '1992/5/5')
msg [a075]% msg [a075]%
set a076 dosubst("%q %r %s %t %u %v %w %x", '1992/5/5') set a076 dosubst("%q %r %s %t %u %v %w %x", '1992/5/5')
msg [a076]% 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]% msg [a077]%
set a078 easterdate(today()) set a078 easterdate(today())
set a079 easterdate(1992) set a079 easterdate(1992)
@@ -287,3 +309,7 @@ OMIT December 25 MSG X
# Next should give a parse error # Next should give a parse error
OMIT 26 Dec 2010 THROUGH 27 Dec 2010 MSG This is not legal OMIT 26 Dec 2010 THROUGH 27 Dec 2010 MSG This is not legal
OMIT DUMP OMIT DUMP
__EOF__
REM This line should not even be seen
And you can put whatever you like here.
[+f=asdfasdasde3ir0a]

View File

@@ -11,7 +11,7 @@
# Use the output to verify your translations. # Use the output to verify your translations.
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 Roaring Penguin Software Inc.
# #
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@@ -30,7 +30,7 @@ if !$RunOff || !$DontQueue || $DontTrigAts
endif endif
# Set up a few useful definitions # 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 a trigger(today()+2) + " ++2"
set l language() set l language()
set tt now()+134 set tt now()+134

View File

@@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
echo "Unconfiguring Remind..." echo "Unconfiguring Remind..."
echo 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 rm -f config.cache config.log config.status src/Makefile src/config.h src/version.h www/Makefile
exit 0 exit 0

View File

@@ -1,6 +1,6 @@
# Makefile.in for installing WWW server calendar scripts # Makefile.in for installing WWW server calendar scripts
# This file is part of REMIND. # 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. # Copyright (C) 1999-2007 by Roaring Penguin Software Inc.
# The complete path to where the scripts actually live, as seen by # The complete path to where the scripts actually live, as seen by

View File

@@ -10,4 +10,4 @@ You may have to edit the "#!/usr/bin/perl" line to reflect the
location of your Perl interpreter. location of your Perl interpreter.
-- --
David F. Skoll Dianne Skoll

2
www/cal_dispatch-DIST Executable file → Normal file
View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
# CAL_DISPATCH -- Shell script for CGI directory to dispatch calendar # CAL_DISPATCH -- Shell script for CGI directory to dispatch calendar

2
www/calps Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# PostScript calendar shell script # PostScript calendar shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo "Content-type: application/postscript" echo "Content-type: application/postscript"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 317 B

2
www/hebdate Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# Hebrew date shell script # Hebrew date shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo Content-type: text/html echo Content-type: text/html

View File

@@ -1,7 +1,7 @@
# Hebrew date reminder file # Hebrew date reminder file
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
BANNER % BANNER %
@@ -24,7 +24,7 @@ ENDIF
# dates were obtained from "The First Jewish Catalog" by Richard Siegel # # dates were obtained from "The First Jewish Catalog" by Richard Siegel #
# and Michael and Sharon Strassfeld, published by the Jewish Publication # # and Michael and Sharon Strassfeld, published by the Jewish Publication #
# Society of America. The Reform version of the calendar was guessed # # 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 # # made from the paper "Calendrical Calculations" by Nachum Dershowitz #
# and Edward M. Reingold. Any further corrections are welcome. # # and Edward M. Reingold. Any further corrections are welcome. #
# # # #

2
www/hebhtml Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# HTML calendar shell script # HTML calendar shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo "Content-Type: text/html" echo "Content-Type: text/html"

2
www/hebps Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# Hebrew PostScript calendar shell script # Hebrew PostScript calendar shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
# Figure out the month: If day <= 20, use this month; otherwise, use # Figure out the month: If day <= 20, use this month; otherwise, use

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

After

Width:  |  Height:  |  Size: 367 B

2
www/moon Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# Moon shell script # Moon shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo Content-type: text/html echo Content-type: text/html

View File

@@ -1,7 +1,7 @@
# File for giving moon phase info. # File for giving moon phase info.
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
set now now() set now now()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 362 B

341
www/php/remind.php Normal file
View 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">&nbsp;</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">&nbsp;</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
View File

@@ -84,7 +84,7 @@ Insert I<html_text> right before the E<lt>/bodyE<gt> tag.
=head1 AUTHOR =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. earlier version by Don Schwarz.
=cut =cut
@@ -257,7 +257,7 @@ sub parse_input
$shades->[$d] = sprintf("#%02X%02X%02X", $shades->[$d] = sprintf("#%02X%02X%02X",
($1 % 256), ($2 % 256), ($3 % 256)); ($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+(.*)$/) { if ($body =~ /(\d+)\s+(\d+)\s+(\d+)\s+(.*)$/) {
my($r, $g, $b, $text) = ($1, $2, $3, $4); my($r, $g, $b, $text) = ($1, $2, $3, $4);
my $color = sprintf("style=\"color: #%02X%02X%02X;\"", my $color = sprintf("style=\"color: #%02X%02X%02X;\"",

2
www/sunrise Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# Sunrise shell script # Sunrise shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo Content-type: text/html echo Content-type: text/html

2
www/sunrise.rem-DIST Executable file → Normal file
View File

@@ -1,7 +1,7 @@
# File for giving sunrise info # File for giving sunrise info
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
set now now() set now now()

2
www/sunset Executable file → Normal file
View File

@@ -2,7 +2,7 @@
# Sunset shell script # Sunset shell script
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
echo Content-type: text/html echo Content-type: text/html

View File

@@ -1,7 +1,7 @@
# File for giving sunset info # File for giving sunset info
# #
# This file is part of REMIND. # 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. # Copyright (C) 1999-2000 by Roaring Penguin Software Inc.
set now now() set now now()