mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-16 14:28:40 +02:00
Compare commits
40 Commits
3.3.11-BET
...
03.03.12
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
daf09d9d4e | ||
|
|
511cdb2784 | ||
|
|
a567a9b777 | ||
|
|
05bc3af03d | ||
|
|
7a048d1702 | ||
|
|
8d7f9bcb8b | ||
|
|
9fd8b0f890 | ||
|
|
86873d0725 | ||
|
|
b22438b489 | ||
|
|
683b38a7ab | ||
|
|
d6b4fdd6d3 | ||
|
|
c996649954 | ||
|
|
d59ad77893 | ||
|
|
e637c20dee | ||
|
|
19dc588319 | ||
|
|
dc53ef2e71 | ||
|
|
e51d7f3c6d | ||
|
|
5a7e86e443 | ||
|
|
7f4edae006 | ||
|
|
2f4e1462e3 | ||
|
|
54f5d81a8c | ||
|
|
d33c27289a | ||
|
|
1675fdb499 | ||
|
|
9321109691 | ||
|
|
e6a4f939a3 | ||
|
|
c7ae214853 | ||
|
|
68a9cc047e | ||
|
|
1f2b25f852 | ||
|
|
20040c8857 | ||
|
|
ac64b0c11f | ||
|
|
ba47ce7ca8 | ||
|
|
be1ab4ea36 | ||
|
|
13cd9f3d04 | ||
|
|
8e1f82de5f | ||
|
|
8631ad3122 | ||
|
|
90e6aef9d7 | ||
|
|
698190fb72 | ||
|
|
27cfaa9404 | ||
|
|
9f296fe76d | ||
|
|
d0112adb08 |
32
configure
vendored
32
configure
vendored
@@ -2292,36 +2292,6 @@ EOF
|
||||
ac_config_headers="$ac_config_headers src/config.h"
|
||||
|
||||
|
||||
if test "`uname -s`" = "Darwin" ; then
|
||||
trap 'echo Be patient...' INT TERM
|
||||
cat <<'EOF'
|
||||
|
||||
Please don't use Apple products. This script will continue in 30 seconds
|
||||
if you insist on compiling Remind on Mac OS X.
|
||||
|
||||
EOF
|
||||
for i in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; do
|
||||
sleep 1
|
||||
done
|
||||
trap - INT
|
||||
trap - TERM
|
||||
fi
|
||||
|
||||
if uname -s | grep -i -q 'cygwin' ; then
|
||||
trap 'echo Be patient...' INT TERM
|
||||
cat <<'EOF'
|
||||
|
||||
Please don't use Microsoft products. This script will continue in 30
|
||||
seconds if you insist on compiling Remind on Cygwin.
|
||||
|
||||
EOF
|
||||
for i in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; do
|
||||
sleep 1
|
||||
done
|
||||
trap - INT
|
||||
trap - TERM
|
||||
fi
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
@@ -4032,7 +4002,7 @@ _ACEOF
|
||||
fi
|
||||
done
|
||||
|
||||
VERSION=03.03.11
|
||||
VERSION=03.03.12
|
||||
|
||||
|
||||
ac_config_files="$ac_config_files src/Makefile www/Makefile src/version.h rem2html/Makefile"
|
||||
|
||||
32
configure.in
32
configure.in
@@ -14,36 +14,6 @@ EOF
|
||||
|
||||
AC_CONFIG_HEADER(src/config.h)
|
||||
|
||||
if test "`uname -s`" = "Darwin" ; then
|
||||
trap 'echo Be patient...' INT TERM
|
||||
cat <<'EOF'
|
||||
|
||||
Please don't use Apple products. This script will continue in 30 seconds
|
||||
if you insist on compiling Remind on Mac OS X.
|
||||
|
||||
EOF
|
||||
for i in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; do
|
||||
sleep 1
|
||||
done
|
||||
trap - INT
|
||||
trap - TERM
|
||||
fi
|
||||
|
||||
if uname -s | grep -i -q 'cygwin' ; then
|
||||
trap 'echo Be patient...' INT TERM
|
||||
cat <<'EOF'
|
||||
|
||||
Please don't use Microsoft products. This script will continue in 30
|
||||
seconds if you insist on compiling Remind on Cygwin.
|
||||
|
||||
EOF
|
||||
for i in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; do
|
||||
sleep 1
|
||||
done
|
||||
trap - INT
|
||||
trap - TERM
|
||||
fi
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
@@ -76,7 +46,7 @@ if test "$GCC" = yes; then
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS(setenv unsetenv glob mbstowcs setlocale initgroups)
|
||||
VERSION=03.03.11
|
||||
VERSION=03.03.12
|
||||
AC_SUBST(VERSION)
|
||||
AC_SUBST(PERL)
|
||||
AC_OUTPUT(src/Makefile www/Makefile src/version.h rem2html/Makefile)
|
||||
|
||||
@@ -1,16 +1,44 @@
|
||||
CHANGES TO REMIND
|
||||
|
||||
* VERSION 3.3 Patch 12 - 2022-01-24
|
||||
|
||||
- UPDATE: rem2html: Use JSON::MaybeXS instead of JSON::Any, since JSON::Any
|
||||
is deprecated. NOTE INCOMPATIBILITY: If you don't have JSON::MaybeXS
|
||||
installed, you'll need to install it before trying to install or update
|
||||
rem2html
|
||||
|
||||
- NEW FEATURE: Add a DO command. This is just like INCLUDE, but relative
|
||||
paths are interpreted relative to the directory containing the current
|
||||
file. That is:
|
||||
|
||||
DO somefile.rem
|
||||
|
||||
is equivalent to:
|
||||
|
||||
INCLUDE [filedir()]/somefile.rem
|
||||
|
||||
- NEW FEATURE: Add the $DefaultTDelta system variable and associated
|
||||
-tt[N] command-line option to set a default time delta for timed
|
||||
reminder without an explicit +N delta.
|
||||
|
||||
- IMPROVEMENT: TkRemind: Store .tkremindrc in $XDG_CONFIG_HOME/tkremindrc
|
||||
or $HOME/.config/tkremindrc as per the XDG Base Directory Specification.
|
||||
|
||||
- BUG FIX: remind: Make the shell() built-in function respect
|
||||
$MaxStringLen
|
||||
|
||||
- BUG FIX: Use size_t to track the size of dynamic buffers rather than int.
|
||||
This permits Remind to read in files with lines longer than 1GB and to
|
||||
consume more than 1GB of output from the shell() command, both of which
|
||||
will surely be massively useful. (The old limit was 1GB rather than 2GB
|
||||
because of details of the dynamic buffer resizing algorithm.)
|
||||
|
||||
* VERSION 3.3 Patch 11 - 2021-12-30
|
||||
|
||||
- IMPROVEMENT: TkRemind: Save the print dialog settings so they persist.
|
||||
|
||||
- IMPROVEMENT: TkRemind: Show queue in sorted order.
|
||||
|
||||
- NEW FUNCTION: Remind: Add the isany() built-in function.
|
||||
|
||||
- IMPROVEMENT: rem2html: Add class names indicating number of rows in calendar
|
||||
|
||||
- IMPROVEMENT: rem2html: Coalesce table.rem-cal CSS into one block. Thanks
|
||||
to Ian! D. Allen for pointing this out.
|
||||
|
||||
- IMPROVEMENT: TkRemind: Pass "-r" flag to inotifywait
|
||||
|
||||
- IMPROVEMENT: TkRemind: Draw moon phases with Tk canvas items rather than
|
||||
@@ -21,6 +49,16 @@ CHANGES TO REMIND
|
||||
them; fire up the editor with either Button-1 or Button-3 for
|
||||
non-TkRemind-generated reminders.
|
||||
|
||||
- NEW FUNCTION: Remind: Add the isany() built-in function.
|
||||
|
||||
- IMPROVEMENT: rem2html: Add class names indicating number of rows in calendar
|
||||
|
||||
- IMPROVEMENT: remind: In -z0 mode, sleep with higher precision to ensure we
|
||||
wake as close to possible to each 1-minute boundary.
|
||||
|
||||
- IMPROVEMENT: rem2html: Coalesce table.rem-cal CSS into one block. Thanks
|
||||
to Ian! D. Allen for pointing this out.
|
||||
|
||||
- IMPROVEMENT: examples/defs.rem: Modernize the examples and get rid of some
|
||||
cruft.
|
||||
|
||||
|
||||
@@ -92,9 +92,6 @@ SET Week_3 15
|
||||
SET Week_4 22
|
||||
FSET _last(mo) "1 " + MON((mo%12)+1) + " --7"
|
||||
|
||||
# Handy function to provide SCANFROM dates...
|
||||
FSET _back(days) $U-days
|
||||
|
||||
#################################################################
|
||||
# Function that removes a single leading zero from a string... #
|
||||
#################################################################
|
||||
@@ -134,7 +131,7 @@ REM 1 MSG John's [_mo_num(11, 1984)] 'monthly' anniversary
|
||||
############################################################################
|
||||
|
||||
# Calculate the weekday of the holiday.
|
||||
REM 4 July SCANFROM [_back(7)] SATISFY 1
|
||||
REM 4 July SCANFROM -7 SATISFY 1
|
||||
|
||||
SET iday $T
|
||||
IF WKDAYNUM(iday) == Sat
|
||||
@@ -216,15 +213,14 @@ REM [easter+39] MSG %"Ascension Day%"
|
||||
REM [easter+49] MSG %"Pentecost%"
|
||||
|
||||
# Some holidays are omitted, some are not. You may want to change
|
||||
# which ones are omitted - use the general forms shown below.
|
||||
# You'll need the _back() function and the Week_n variables defined
|
||||
# way up in the file.
|
||||
# which ones are omitted - use the general forms shown below. You'll
|
||||
# need the Week_n variables defined way up in the file.
|
||||
|
||||
OMIT Jan 1 MSG %"New Year's%" Day
|
||||
REM Mon Jan [Week_3] MSG Martin Luther King - %"MLK Day%"
|
||||
REM Feb 2 MSG %"Ground Hog Day%"
|
||||
REM Feb 14 MSG %"Valentine's%" Day
|
||||
REM Mon Feb [Week_3] SCANFROM [_back(7)] ADDOMIT MSG %"President's Day%"
|
||||
REM Mon Feb [Week_3] SCANFROM -7 ADDOMIT MSG %"President's Day%"
|
||||
REM Mar 17 MSG %"St. Patrick's%" Day
|
||||
|
||||
# The DST rules are accurate for most locations in
|
||||
@@ -241,18 +237,18 @@ REM May 5 MSG %"Cinco de Mayo%"
|
||||
REM Sat May [Week_1] MSG %"Kentucky Derby%"
|
||||
REM Sun May [Week_2] MSG %"Mother's Day%"
|
||||
REM Sat May [Week_3] MSG %"Armed Forces Day%"
|
||||
REM Mon [_last(May)] SCANFROM [_back(7)] ADDOMIT MSG %"Memorial Day%"
|
||||
REM Mon [_last(May)] SCANFROM -7 ADDOMIT MSG %"Memorial Day%"
|
||||
REM Jun 14 MSG %"Flag Day%"
|
||||
REM Sun Jun [Week_3] MSG %"Father's Day%"
|
||||
REM Mon Sep [Week_1] SCANFROM [_back(7)] ADDOMIT MSG %"Labor Day%"
|
||||
REM Mon Sep [Week_1] SCANFROM -7 ADDOMIT MSG %"Labor Day%"
|
||||
REM Mon Oct [Week_2] MSG %"Columbus Day%"
|
||||
REM Nov 11 MSG %"Veterans Day%"
|
||||
|
||||
REM Oct 30 MSG %"Mischief Night%"
|
||||
REM Oct 31 MSG %"Halloween%"
|
||||
REM Tue Nov 2 SCANFROM [_back(7)] SATISFY [($Ty % 4) == 0] MSG %"Election Day%"
|
||||
REM Thu Nov [Week_4] SCANFROM [_back(7)] ADDOMIT MSG %"Thanksgiving Day%"
|
||||
REM Fri Nov [Week_4+1] SCANFROM [_back(7)] ADDOMIT MSG %"Thanksgiving (cont.)%"
|
||||
REM Tue Nov 2 SCANFROM -7 SATISFY [($Ty % 4) == 0] MSG %"Election Day%"
|
||||
REM Thu Nov [Week_4] SCANFROM -7 ADDOMIT MSG %"Thanksgiving Day%"
|
||||
REM Fri Nov [Week_4+1] SCANFROM -7 ADDOMIT MSG %"Thanksgiving (cont.)%"
|
||||
OMIT Dec 24 MSG %"Christmas Eve%"
|
||||
OMIT Dec 25 MSG %"Christmas%" Day
|
||||
|
||||
|
||||
83
man/remind.1
83
man/remind.1
@@ -190,6 +190,11 @@ If you supply a number \fIn\fR after the \fB\-t\fR option, then
|
||||
\fBRemind\fR pretends that each non-expired reminder has a \fIdelta\fR
|
||||
of \fIn\fR days and triggers reminders accordingly.
|
||||
.TP
|
||||
.B \-tt\fR[\fIn\fR]
|
||||
The \fB-tt\fR option causes \fBRemind\fR to assume a default delta of
|
||||
\fIn\fR minutes for all timed reminders. If \fB\-tt\fR is given with
|
||||
no \fIn\fR, a default delta of 5 minutes is used.
|
||||
.TP
|
||||
.B \-h
|
||||
The \fB\-h\fR option ("hush...") suppresses certain warning and information
|
||||
messages. In particular, if no reminders are triggered, this mode
|
||||
@@ -1546,7 +1551,7 @@ the first day of the month. The local \fBOMIT\fR keyword causes the
|
||||
Finally, the \fBAFTER\fR keyword will keep moving the reminder forward
|
||||
until it has passed any holidays specified with global \fBOMIT\fR
|
||||
commands.
|
||||
.SH THE INCLUDE COMMAND
|
||||
.SH THE DO AND INCLUDE COMMANDS
|
||||
.PP
|
||||
\fBRemind\fR allows you to include other files in your reminder script,
|
||||
similar to the C preprocessor #include directive. For example, your
|
||||
@@ -1570,7 +1575,32 @@ If you specify a \fIdirectory\fR as the argument to \fBINCLUDE\fR, then
|
||||
\fBRemind\fR will process all files in that directory that match the shell
|
||||
patterm "*.rem". The files are processed in sorted order; the sort order
|
||||
matches that used by the shell when it expands "*.rem".
|
||||
.PP
|
||||
Note that the file specified by an \fBINCLUDE\fR command is interpreted
|
||||
relative to the \fIcurrent working directory of the Remind process\fR.
|
||||
If you want to include a file relative to the directory containing the
|
||||
currently-processing file, use \fBDO\fR instead. For example,
|
||||
if the current file is \fB/home/user/.reminders/foo.rem\fR and Remind's
|
||||
working directory is \fB/home/user\fR, then:
|
||||
.PP
|
||||
.nf
|
||||
# Read /home/user/.reminders/bar.rem
|
||||
DO bar.rem
|
||||
|
||||
# Read /usr/share/bar.rem - absolute path
|
||||
DO /usr/share/bar.rem
|
||||
|
||||
# Read /home/user/bar.rem
|
||||
INCLUDE bar.rem
|
||||
|
||||
# Read /usr/share/bar.rem - absolute path
|
||||
INCLUDE /usr/share/bar.rem
|
||||
.fi
|
||||
.PP
|
||||
Arguably, the \fBINCLUDE\fR command should have worked the way \fBDO\fR
|
||||
does right from the start, but changing it would have broken
|
||||
backward-compatibility, hence the introduction of \fBDO\fR.
|
||||
.PP
|
||||
.SH THE RUN COMMAND
|
||||
.PP
|
||||
If you include other files in your reminder script, you may not always
|
||||
@@ -2080,6 +2110,12 @@ blocks of reminders without having to type priorities for individual
|
||||
reminders. At startup, \fB$DefaultPrio\fR is set to 5000; it can range
|
||||
from 0 to 9999.
|
||||
.TP
|
||||
.B $DefaultTDelta
|
||||
The default time delta used if no +N is given in an AT clause. This
|
||||
is normally 0, but can be set with the \fB\-tt\fR option or explicitly
|
||||
set in your script. If \fB$DefaultDelta\fR is non-zero, you can use an
|
||||
explicit delta of +0 in an AT clause to countermand the default delta.
|
||||
.TP
|
||||
.B $DontFork (read-only)
|
||||
If non-zero, then the \fB\-c\fR option was supplied on the command line.
|
||||
.TP
|
||||
@@ -2224,7 +2260,9 @@ The maximum number of iterations for the \fBSATISFY\fR clause
|
||||
.TP
|
||||
.B $MaxStringLen
|
||||
A limit on the longest string that \fBRemind\fR will allow you
|
||||
to create. The default is 65535.
|
||||
to create. The default is 65535. If you set \fB$MaxStringLen\fR to 0
|
||||
or to -1, then \fBremind\fR will allow you to create arbitrarily-long
|
||||
strings, at least until it runs out of memory.
|
||||
.TP
|
||||
.B $MinsFromUTC
|
||||
The number of minutes between Universal Time Coordinated and local time. If
|
||||
@@ -2389,21 +2427,6 @@ $TimeSep and $DateTimeSep when formatting its output. For example:
|
||||
.PP
|
||||
.RE
|
||||
.TP
|
||||
.B isany(arg1 [,arg2, ..., argN]);
|
||||
Returns 1 if the first argument \fIarg1\fR is equal to any of the
|
||||
subsequent arguments \fIarg2\fR through \fIargN\fR; returns 0 otherwise.
|
||||
Also returns 0 if called with only one argument.
|
||||
.RS
|
||||
.PP
|
||||
As an example, the following two expressions are equivalent:
|
||||
.PP
|
||||
.nf
|
||||
(a == b) || (a == c) || (a == d) || (a == e)
|
||||
|
||||
isany(a, b, c, d, e)
|
||||
.fi
|
||||
.RE
|
||||
.TP
|
||||
.B args(s_fname)
|
||||
Returns the number of arguments expected by the user-defined function
|
||||
\fIfname\fR, or \-1 if no such user-defined function exists. Note that
|
||||
@@ -2634,7 +2657,9 @@ follows:
|
||||
.PP
|
||||
.RS
|
||||
This includes the file "stuff" in the same directory as the
|
||||
current file being processed.
|
||||
current file being processed. Note that this workaround is
|
||||
no longer necessary because \fBDO stuff\fR will achieve the
|
||||
same goal.
|
||||
.RE
|
||||
.TP
|
||||
.B filename()
|
||||
@@ -2683,6 +2708,21 @@ The optional parameter \fIstart\fR specifies the position in
|
||||
\fIsearch\fR at which to start looking for \fItarget\fR.
|
||||
.RE
|
||||
.TP
|
||||
.B isany(arg1 [,arg2, ..., argN]);
|
||||
Returns 1 if the first argument \fIarg1\fR is equal to any of the
|
||||
subsequent arguments \fIarg2\fR through \fIargN\fR; returns 0 otherwise.
|
||||
Also returns 0 if called with only one argument.
|
||||
.RS
|
||||
.PP
|
||||
As an example, the following two expressions are equivalent:
|
||||
.PP
|
||||
.nf
|
||||
(a == b) || (a == c) || (a == d) || (a == e)
|
||||
|
||||
isany(a, b, c, d, e)
|
||||
.fi
|
||||
.RE
|
||||
.TP
|
||||
.B isdst([d_date [,t_time]]) \fRor\fB isdst(q_datetime)
|
||||
Returns a positive number if daylight saving time is in
|
||||
effect on the specified date and time. \fIDate\fR
|
||||
@@ -2977,8 +3017,8 @@ not be executed.
|
||||
.PP
|
||||
If \fImaxlen\fR is specified, then \fBshell()\fR returns the first
|
||||
\fImaxlen\fR characters of output (rather than the first 511). If
|
||||
\fImaxlen\fR is specified as a negative number, then \fIall\fR the
|
||||
output from \fIcmd\fR is returned.
|
||||
\fImaxlen\fR is specified as a negative number, then it defaults to
|
||||
the value of the system variable \fB$MaxStringLen\fR.
|
||||
.RE
|
||||
.TP
|
||||
.B shellescape(s_str)
|
||||
@@ -3024,7 +3064,8 @@ takes \fIa\fR back to 2009-05-13.
|
||||
.RE
|
||||
.TP
|
||||
.B strlen(s_str)
|
||||
Returns the length of \fIstr\fR.
|
||||
Returns the length of \fIstr\fR. If the length of \fIstr\fR is too large
|
||||
to represent as an integers, emits a "Number too high" error.
|
||||
.TP
|
||||
.B substr(s_str, i_start [,i_end])
|
||||
Returns a \fBSTRING\fR consisting of all characters in \fIstr\fR from
|
||||
|
||||
@@ -7,7 +7,7 @@ bindir=@bindir@
|
||||
datadir=@datadir@
|
||||
datarootdir=@datarootdir@
|
||||
PERL=@PERL@
|
||||
PERLMODS_NEEDED=JSON::Any Getopt::Long
|
||||
PERLMODS_NEEDED=JSON::MaybeXS Getopt::Long
|
||||
all:
|
||||
true
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use strict;
|
||||
use warnings;
|
||||
|
||||
use Getopt::Long;
|
||||
use JSON::Any;
|
||||
use JSON::MaybeXS;
|
||||
|
||||
my %Options;
|
||||
|
||||
@@ -266,7 +266,7 @@ sub parse_input
|
||||
($y, $m, $d, $special, $tag, $duration, $time, $body) =
|
||||
($1, $2, $3, $4, $5, $6, $7, $8);
|
||||
} elsif (/\{/) {
|
||||
my $obj = JSON::Any->jsonToObj($_);
|
||||
my $obj = decode_json($_);
|
||||
next unless ($obj->{date} =~ /^(\d+)-(\d+)-(\d+)$/);
|
||||
$y = $1;
|
||||
$m = $2;
|
||||
|
||||
171
scripts/tkremind
171
scripts/tkremind
@@ -137,7 +137,6 @@ set TimerUpdateForChanges ""
|
||||
|
||||
# Remind program to execute -- supply full path if you want
|
||||
set Remind "remind"
|
||||
#set Remind "/home/dfs/Remind/src/remind"
|
||||
|
||||
# Rem2PS program to execute -- supply full path if you want
|
||||
set Rem2PS "rem2ps"
|
||||
@@ -147,7 +146,7 @@ set ReminderFile {NOSUCHFILE}
|
||||
set ReminderFile [file nativename "~/.reminders"]
|
||||
|
||||
# Default options file
|
||||
set ConfigFile ~/.tkremindrc
|
||||
set ConfigFile ""
|
||||
|
||||
set EditorPid -1
|
||||
|
||||
@@ -200,14 +199,29 @@ set PSCmd {}
|
||||
|
||||
# Print options -- destination file; letter-size; landscape; fill page; default
|
||||
# encoding; 36pt margins; print small calendars
|
||||
set PrintDest file
|
||||
set PrintSize letter
|
||||
set PrintOrient landscape
|
||||
set PrintFill 1
|
||||
set PrintDaysRight 1
|
||||
set PrintEncoding 0
|
||||
set PrintMargins 36pt
|
||||
set PrintSmallCalendars 1
|
||||
set OptDescr(PrintDest) "Print destination: file or command"
|
||||
set Option(PrintDest) file
|
||||
|
||||
set OptDescr(PrintSize) "Page size: a4 or letter"
|
||||
set Option(PrintSize) letter
|
||||
|
||||
set OptDescr(PrintOrient) "Page orientation: portrait or landscape"
|
||||
set Option(PrintOrient) landscape
|
||||
|
||||
set OptDescr(PrintFill) "(0/1) If 1, fill entire page when printing"
|
||||
set Option(PrintFill) 1
|
||||
|
||||
set OptDescr(PrintDaysRight) "(0/1) If 1, put day numbers in the top-right of each calendar box"
|
||||
set Option(PrintDaysRight) 1
|
||||
|
||||
set OptDescr(PrintEncoding) "(0/1) If 1, apply ISO-8859-1 encoding to PostScript output"
|
||||
set Option(PrintEncoding) 0
|
||||
|
||||
set OptDescr(PrintMargins) "Print margins: One of 24pt, 36pt or 48pt"
|
||||
set Option(PrintMargins) 36pt
|
||||
|
||||
set OptDescr(PrintSmallCalendars) "(0/1) If 1, print small calendars in PostScript output"
|
||||
set Option(PrintSmallCalendars) 1
|
||||
|
||||
set WarningHeaders [list "# Lines staring with REM TAG TKTAGnnn ... were created by tkremind" "# Do not edit them by hand or results may be unpredictable."]
|
||||
|
||||
@@ -829,27 +843,9 @@ proc ApplyOptions { w } {
|
||||
# Saves options in specified config file
|
||||
#***********************************************************************
|
||||
proc SaveOptions { w } {
|
||||
global Option OptDescr ConfigFile
|
||||
global Option OptDescr
|
||||
ApplyOptions $w
|
||||
|
||||
set problem [catch {set f [open $ConfigFile "w"]} err]
|
||||
if {$problem} {
|
||||
tk_dialog .error Error "Can't write $ConfigFile: $err" 0 OK
|
||||
return
|
||||
}
|
||||
|
||||
puts $f "# TkRemind option file -- created automatically"
|
||||
puts $f "# [clock format [clock seconds]]"
|
||||
puts $f "# Format of each line is 'key value' where 'key'"
|
||||
puts $f "# specifies the option name, and 'value' is a"
|
||||
puts $f "# *legal Tcl list element* specifying the option value."
|
||||
foreach name [lsort [array names Option]] {
|
||||
puts $f ""
|
||||
puts $f "# $OptDescr($name)"
|
||||
puts $f [list $name $Option($name)]
|
||||
}
|
||||
puts $f ""
|
||||
close $f
|
||||
WriteOptionsToFile
|
||||
FillCalWindow
|
||||
.h.title configure -background $Option(WinBackground) -foreground $Option(LabelColor)
|
||||
for {set i 0} {$i < 7} {incr i} {
|
||||
@@ -868,6 +864,30 @@ proc SaveOptions { w } {
|
||||
.b.options configure -foreground $Option(LabelColor) -background $Option(WinBackground)
|
||||
}
|
||||
|
||||
proc WriteOptionsToFile {} {
|
||||
global ConfigFile
|
||||
global Option OptDescr
|
||||
set problem [catch {set f [open "$ConfigFile.tmp" "w"]} err]
|
||||
if {$problem} {
|
||||
tk_dialog .error Error "Can't write $ConfigFile.tmp: $err" 0 OK
|
||||
return
|
||||
}
|
||||
|
||||
puts $f "# TkRemind option file -- created automatically"
|
||||
puts $f "# [clock format [clock seconds]]"
|
||||
puts $f "# Format of each line is 'key value' where 'key'"
|
||||
puts $f "# specifies the option name, and 'value' is a"
|
||||
puts $f "# *legal Tcl list element* specifying the option value."
|
||||
foreach name [lsort [array names Option]] {
|
||||
puts $f ""
|
||||
puts $f "# $OptDescr($name)"
|
||||
puts $f [list $name $Option($name)]
|
||||
}
|
||||
puts $f ""
|
||||
close $f
|
||||
file rename -force "$ConfigFile.tmp" $ConfigFile
|
||||
}
|
||||
|
||||
#***********************************************************************
|
||||
# %PROCEDURE: LoadOptions
|
||||
# %ARGUMENTS:
|
||||
@@ -1130,7 +1150,7 @@ proc Status { stuff } {
|
||||
# None
|
||||
#---------------------------------------------------------------------------
|
||||
proc DoPrint {} {
|
||||
global PrintDest PrintSize PrintMargins PrintOrient PrintFill PrintDaysRight PrintEncoding PrintSmallCalendars PrintStatus Rem2PS PSCmd Option
|
||||
global Rem2PS PSCmd Option PrintStatus
|
||||
global CurMonth CurYear MonthNames
|
||||
catch {destroy .p}
|
||||
toplevel .p
|
||||
@@ -1145,30 +1165,30 @@ proc DoPrint {} {
|
||||
frame .p.f3a -relief sunken -border 2
|
||||
frame .p.f4
|
||||
|
||||
radiobutton .p.tofile -text "To file: " -variable PrintDest -value file
|
||||
radiobutton .p.tofile -text "To file: " -variable Option(PrintDest) -value file
|
||||
entry .p.filename
|
||||
button .p.browse -text "Browse..." -command PrintFileBrowse
|
||||
radiobutton .p.tocmd -text "To command: " -variable PrintDest -value command
|
||||
radiobutton .p.tocmd -text "To command: " -variable Option(PrintDest) -value command
|
||||
entry .p.command
|
||||
.p.command insert end "lpr"
|
||||
|
||||
label .p.size -text "Paper Size:"
|
||||
radiobutton .p.letter -text "Letter" -variable PrintSize -value letter
|
||||
radiobutton .p.a4 -text "A4" -variable PrintSize -value a4
|
||||
radiobutton .p.letter -text "Letter" -variable Option(PrintSize) -value letter
|
||||
radiobutton .p.a4 -text "A4" -variable Option(PrintSize) -value a4
|
||||
|
||||
label .p.margin -text "Margins:"
|
||||
radiobutton .p.24pt -text "24pt margins" -variable PrintMargins -value 24pt
|
||||
radiobutton .p.36pt -text "36pt margins" -variable PrintMargins -value 36pt
|
||||
radiobutton .p.48pt -text "48pt margins" -variable PrintMargins -value 48pt
|
||||
radiobutton .p.24pt -text "24pt margins" -variable Option(PrintMargins) -value 24pt
|
||||
radiobutton .p.36pt -text "36pt margins" -variable Option(PrintMargins) -value 36pt
|
||||
radiobutton .p.48pt -text "48pt margins" -variable Option(PrintMargins) -value 48pt
|
||||
|
||||
label .p.orient -text "Orientation:"
|
||||
radiobutton .p.landscape -text "Landscape" -variable PrintOrient -value landscape
|
||||
radiobutton .p.portrait -text "Portrait" -variable PrintOrient -value portrait
|
||||
radiobutton .p.landscape -text "Landscape" -variable Option(PrintOrient) -value landscape
|
||||
radiobutton .p.portrait -text "Portrait" -variable Option(PrintOrient) -value portrait
|
||||
|
||||
checkbutton .p.fill -text "Fill page" -variable PrintFill
|
||||
checkbutton .p.right -text "Day numbers at top-right" -variable PrintDaysRight
|
||||
checkbutton .p.encoding -text "ISO 8859-1 PostScript encoding" -variable PrintEncoding
|
||||
checkbutton .p.calendars -text "Print small calendars" -variable PrintSmallCalendars
|
||||
checkbutton .p.fill -text "Fill page" -variable Option(PrintFill)
|
||||
checkbutton .p.right -text "Day numbers at top-right" -variable Option(PrintDaysRight)
|
||||
checkbutton .p.encoding -text "ISO 8859-1 PostScript encoding" -variable Option(PrintEncoding)
|
||||
checkbutton .p.calendars -text "Print small calendars" -variable Option(PrintSmallCalendars)
|
||||
|
||||
button .p.print -text "Print" -command {set PrintStatus print}
|
||||
button .p.cancel -text "Cancel" -command {set PrintStatus cancel}
|
||||
@@ -1202,7 +1222,8 @@ proc DoPrint {} {
|
||||
if {$PrintStatus == "cancel"} {
|
||||
return
|
||||
}
|
||||
if {$PrintDest == "file"} {
|
||||
WriteOptionsToFile
|
||||
if {$Option(PrintDest) == "file"} {
|
||||
if {$fname == ""} {
|
||||
tk_dialog .error Error "No filename specified" error 0 Ok
|
||||
return
|
||||
@@ -1225,36 +1246,36 @@ proc DoPrint {} {
|
||||
# Build the command line
|
||||
set p [regsub EXTRA $PSCmd $Option(ExtraRemindArgs)]
|
||||
set cmd "$p 1 [lindex $MonthNames $CurMonth] $CurYear | $Rem2PS"
|
||||
if {$PrintSize == "letter"} {
|
||||
if {$Option(PrintSize) == "letter"} {
|
||||
append cmd " -m Letter"
|
||||
} else {
|
||||
append cmd " -m A4"
|
||||
}
|
||||
|
||||
if {$PrintMargins == "24pt"} {
|
||||
if {$Option(PrintMargins) == "24pt"} {
|
||||
append cmd " -or 24 -ol 24 -ot 24 -ob 24"
|
||||
} elseif {$PrintMargins == "36pt"} {
|
||||
} elseif {$Option(PrintMargins) == "36pt"} {
|
||||
append cmd " -or 36 -ol 36 -ot 36 -ob 36"
|
||||
} else {
|
||||
append cmd " -or 48 -ol 48 -ot 48 -ob 48"
|
||||
}
|
||||
|
||||
if {$PrintOrient == "landscape"} {
|
||||
if {$Option(PrintOrient) == "landscape"} {
|
||||
append cmd " -l"
|
||||
}
|
||||
|
||||
if {$PrintFill} {
|
||||
if {$Option(PrintFill)} {
|
||||
append cmd " -e"
|
||||
}
|
||||
|
||||
if {!$PrintDaysRight} {
|
||||
if {!$Option(PrintDaysRight)} {
|
||||
append cmd " -x"
|
||||
}
|
||||
if {$PrintEncoding} {
|
||||
if {$Option(PrintEncoding)} {
|
||||
append cmd " -i"
|
||||
}
|
||||
|
||||
if {$PrintSmallCalendars} {
|
||||
if {$Option(PrintSmallCalendars)} {
|
||||
append cmd " -c3"
|
||||
} else {
|
||||
append cmd " -c0"
|
||||
@@ -2710,6 +2731,7 @@ proc main {} {
|
||||
close $f
|
||||
}
|
||||
}
|
||||
FindConfigFile
|
||||
LoadOptions
|
||||
ShowTodaysReminders
|
||||
ScanForTags $AppendFile
|
||||
@@ -3892,4 +3914,47 @@ proc PickColor {index button} {
|
||||
raise .opt
|
||||
}
|
||||
|
||||
proc FindConfigFile {} {
|
||||
global ConfigFile
|
||||
|
||||
# If it was set on the command line, use that
|
||||
if {"$ConfigFile" != ""} {
|
||||
return
|
||||
}
|
||||
|
||||
set confighome ""
|
||||
if {[info exists env(XDG_CONFIG_HOME)]} {
|
||||
set confighome $env(XDG_CONFIG_HOME)
|
||||
}
|
||||
if {"$confighome" == ""} {
|
||||
set confighome "~/.config"
|
||||
}
|
||||
|
||||
# If $confighome does not exist, attempt to
|
||||
# create it
|
||||
if {![file exists $confighome]} {
|
||||
catch { file mkdir $confighome }
|
||||
}
|
||||
|
||||
if {[file isdirectory $confighome]} {
|
||||
# Migrate .tkremindrc to $confighome/tkremindrc
|
||||
if {[file exists "~/.tkremindrc"]} {
|
||||
if {![file exists "$confighome/tkreminderc"]} {
|
||||
puts "Migrating ~/.tkremindrc to $confighome/tkremindrc"
|
||||
if {[catch { file copy "~/.tkremindrc" "$confighome/tkremindrc"}]} {
|
||||
puts "FAILED!\n"
|
||||
set ConfigFile "~/.tkremindrc"
|
||||
return
|
||||
}
|
||||
catch { file delete "~/.tkremindrc" }
|
||||
}
|
||||
set ConfigFile "$confighome/tkremindrc"
|
||||
return
|
||||
}
|
||||
set ConfigFile "$confighome/tkremindrc"
|
||||
return
|
||||
}
|
||||
set ConfigFile "~/.tkremindrc"
|
||||
}
|
||||
|
||||
main
|
||||
|
||||
@@ -1238,7 +1238,10 @@ static void GenerateCalEntries(int col)
|
||||
case T_IfTrig: r=DoIfTrig(&p); break;
|
||||
case T_Else: r=DoElse(&p); break;
|
||||
case T_EndIf: r=DoEndif(&p); break;
|
||||
case T_Include: r=DoInclude(&p); break;
|
||||
|
||||
case T_Include:
|
||||
case T_IncludeR: r=DoInclude(&p, tok.type); break;
|
||||
|
||||
case T_IncludeCmd: r=DoIncludeCmd(&p); break;
|
||||
case T_Exit: DoExit(&p); break;
|
||||
case T_Set: r=DoSet(&p); break;
|
||||
@@ -1333,7 +1336,7 @@ static void WriteCalTrailer(void)
|
||||
/***************************************************************/
|
||||
static int DoCalRem(ParsePtr p, int col)
|
||||
{
|
||||
int oldLen;
|
||||
size_t oldLen;
|
||||
Trigger trig;
|
||||
TimeTrig tim;
|
||||
Value v;
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
/* The default values are initially set to Ottawa, Ontario, Canada. */
|
||||
/*---------------------------------------------------------------------*/
|
||||
#define LAT_DEG 45
|
||||
#define LAT_MIN 24
|
||||
#define LAT_SEC 0
|
||||
#define LAT_MIN 25
|
||||
#define LAT_SEC 30
|
||||
#define LON_DEG 75
|
||||
#define LON_MIN 39
|
||||
#define LON_SEC 0
|
||||
#define LON_MIN 41
|
||||
#define LON_SEC 59
|
||||
#define LOCATION "Ottawa"
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
/* The default values are initially set to Ottawa, Ontario, Canada. */
|
||||
/*---------------------------------------------------------------------*/
|
||||
#define LAT_DEG 45
|
||||
#define LAT_MIN 24
|
||||
#define LAT_SEC 0
|
||||
#define LAT_MIN 25
|
||||
#define LAT_SEC 30
|
||||
#define LON_DEG 75
|
||||
#define LON_MIN 39
|
||||
#define LON_SEC 0
|
||||
#define LON_MIN 41
|
||||
#define LON_SEC 59
|
||||
#define LOCATION "Ottawa"
|
||||
|
||||
/*---------------------------------------------------------------------*/
|
||||
|
||||
@@ -234,7 +234,7 @@ int ParseRem(ParsePtr s, Trigger *trig, TimeTrig *tim, int save_in_globals)
|
||||
DBufInit(&(trig->tags));
|
||||
trig->passthru[0] = 0;
|
||||
tim->ttime = NO_TIME;
|
||||
tim->delta = NO_DELTA;
|
||||
tim->delta = DefaultTDelta;
|
||||
tim->rep = NO_REP;
|
||||
tim->duration = NO_TIME;
|
||||
if (save_in_globals) {
|
||||
@@ -489,7 +489,7 @@ static int ParseTimeTrig(ParsePtr s, TimeTrig *tim, int save_in_globals)
|
||||
{
|
||||
Token tok;
|
||||
int r;
|
||||
|
||||
int seen_delta = 0;
|
||||
DynamicBuffer buf;
|
||||
DBufInit(&buf);
|
||||
|
||||
@@ -506,8 +506,9 @@ static int ParseTimeTrig(ParsePtr s, TimeTrig *tim, int save_in_globals)
|
||||
|
||||
case T_Delta:
|
||||
DBufFree(&buf);
|
||||
if (tim->delta != NO_DELTA) return E_DELTA_TWICE;
|
||||
tim->delta = (tok.val > 0) ? tok.val : -tok.val;
|
||||
if (seen_delta) return E_DELTA_TWICE;
|
||||
seen_delta = 1;
|
||||
tim->delta = (tok.val >= 0) ? tok.val : -tok.val;
|
||||
break;
|
||||
|
||||
case T_Rep:
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
Doubles the size of dynamic buffer until it has room for at least
|
||||
'n' characters, not including trailing '\0'
|
||||
**********************************************************************/
|
||||
static int DBufMakeRoom(DynamicBuffer *dbuf, int n)
|
||||
static int DBufMakeRoom(DynamicBuffer *dbuf, size_t n)
|
||||
{
|
||||
/* Double size until it's greater than n (strictly > to leave room
|
||||
for trailing '\0' */
|
||||
int size = dbuf->allocatedLen;
|
||||
size_t size = dbuf->allocatedLen;
|
||||
char *buf;
|
||||
|
||||
if (size > n) return OK;
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#define DBUF_STATIC_SIZE 128
|
||||
typedef struct {
|
||||
char *buffer;
|
||||
int len;
|
||||
int allocatedLen;
|
||||
size_t len;
|
||||
size_t allocatedLen;
|
||||
char staticBuf[DBUF_STATIC_SIZE];
|
||||
} DynamicBuffer;
|
||||
|
||||
|
||||
@@ -828,7 +828,7 @@ static int Add(void)
|
||||
v3.type = STR_TYPE;
|
||||
l1 = strlen(v1.v.str);
|
||||
l2 = strlen(v2.v.str);
|
||||
if (MaxStringLen && (l1 + l2 > (size_t) MaxStringLen)) {
|
||||
if (MaxStringLen > 0 && (l1 + l2 > (size_t) MaxStringLen)) {
|
||||
DestroyValue(v1); DestroyValue(v2);
|
||||
return E_STRING_TOO_LONG;
|
||||
}
|
||||
|
||||
57
src/files.c
57
src/files.c
@@ -557,23 +557,68 @@ static int PopFile(void)
|
||||
/* The INCLUDE command. */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
int DoInclude(ParsePtr p)
|
||||
int DoInclude(ParsePtr p, enum TokTypes tok)
|
||||
{
|
||||
DynamicBuffer buf;
|
||||
DynamicBuffer fullname;
|
||||
DynamicBuffer path;
|
||||
int r, e;
|
||||
|
||||
r = OK;
|
||||
char const *s;
|
||||
DBufInit(&buf);
|
||||
DBufInit(&fullname);
|
||||
DBufInit(&path);
|
||||
if ( (r=ParseToken(p, &buf)) ) return r;
|
||||
e = VerifyEoln(p);
|
||||
if (e) Eprint("%s", ErrMsg[e]);
|
||||
if ( (r=IncludeFile(DBufValue(&buf))) ) {
|
||||
DBufFree(&buf);
|
||||
return r;
|
||||
|
||||
if (tok == T_IncludeR && *(DBufValue(&buf)) != '/') {
|
||||
/* Relative include: Include relative to dir
|
||||
containing current file */
|
||||
if (DBufPuts(&path, FileName) != OK) {
|
||||
r = E_NO_MEM;
|
||||
goto bailout;
|
||||
}
|
||||
if (DBufLen(&path) == 0) {
|
||||
s = DBufValue(&buf);
|
||||
} else {
|
||||
char *t = DBufValue(&path) + DBufLen(&path) - 1;
|
||||
while (t > DBufValue(&path) && *t != '/') t--;
|
||||
if (*t == '/') {
|
||||
*t = 0;
|
||||
if (DBufPuts(&fullname, DBufValue(&path)) != OK) {
|
||||
r = E_NO_MEM;
|
||||
goto bailout;
|
||||
}
|
||||
if (DBufPuts(&fullname, "/") != OK) {
|
||||
r = E_NO_MEM;
|
||||
goto bailout;
|
||||
}
|
||||
if (DBufPuts(&fullname, DBufValue(&buf)) != OK) {
|
||||
r = E_NO_MEM;
|
||||
goto bailout;
|
||||
}
|
||||
s = DBufValue(&fullname);
|
||||
} else {
|
||||
s = DBufValue(&buf);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
s = DBufValue(&buf);
|
||||
}
|
||||
DBufFree(&buf);
|
||||
if ( (r=IncludeFile(s)) ) {
|
||||
goto bailout;
|
||||
}
|
||||
|
||||
NumIfs = 0;
|
||||
IfFlags = 0;
|
||||
return OK;
|
||||
|
||||
bailout:
|
||||
DBufFree(&buf);
|
||||
DBufFree(&path);
|
||||
DBufFree(&fullname);
|
||||
return r;
|
||||
}
|
||||
|
||||
/***************************************************************/
|
||||
|
||||
20
src/funcs.c
20
src/funcs.c
@@ -411,8 +411,9 @@ static int RetStrVal(char const *s, func_info *info)
|
||||
if (!s) {
|
||||
RetVal.v.str = malloc(1);
|
||||
if (RetVal.v.str) *RetVal.v.str = 0;
|
||||
} else
|
||||
} else {
|
||||
RetVal.v.str = StrDup(s);
|
||||
}
|
||||
|
||||
if (!RetVal.v.str) {
|
||||
RetVal.type = ERR_TYPE;
|
||||
@@ -432,7 +433,9 @@ static int FStrlen(func_info *info)
|
||||
Value *v = &ARG(0);
|
||||
if (v->type != STR_TYPE) return E_BAD_TYPE;
|
||||
RetVal.type = INT_TYPE;
|
||||
RETVAL = strlen(v->v.str);
|
||||
size_t l = strlen(v->v.str);
|
||||
if (l > INT_MAX) return E_2HIGH;
|
||||
RETVAL = (int) l;
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -1571,6 +1574,15 @@ static int FShell(func_info *info)
|
||||
ASSERT_TYPE(1, INT_TYPE);
|
||||
maxlen = ARGV(1);
|
||||
}
|
||||
|
||||
/* Don't allow maxlen to exceed the maximum length of
|
||||
a string variable */
|
||||
if (MaxStringLen > 0) {
|
||||
if (maxlen <= 0 || maxlen > MaxStringLen) {
|
||||
maxlen = MaxStringLen;
|
||||
}
|
||||
}
|
||||
|
||||
fp = popen(ARGSTR(0), "r");
|
||||
if (!fp) return E_IO_ERR;
|
||||
while (1) {
|
||||
@@ -1584,7 +1596,7 @@ static int FShell(func_info *info)
|
||||
DBufFree(&buf);
|
||||
return E_NO_MEM;
|
||||
}
|
||||
if (maxlen > 0 && DBufLen(&buf) >= maxlen) {
|
||||
if (maxlen > 0 && DBufLen(&buf) >= (size_t) maxlen) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2400,6 +2412,7 @@ static int FPsshade(func_info *info)
|
||||
if (!psshade_warned) {
|
||||
psshade_warned = 1;
|
||||
Eprint("psshade() is deprecated; use SPECIAL SHADE instead.");
|
||||
FreshLine = 1;
|
||||
}
|
||||
|
||||
sprintf(s, "/_A LineWidth 2 div def ");
|
||||
@@ -2455,6 +2468,7 @@ static int FPsmoon(func_info *info)
|
||||
if (!psmoon_warned) {
|
||||
psmoon_warned = 1;
|
||||
Eprint("psmoon() is deprecated; use SPECIAL MOON instead.");
|
||||
FreshLine = 1;
|
||||
}
|
||||
if (size > 0) {
|
||||
sprintf(sizebuf, "%d", size);
|
||||
|
||||
@@ -61,6 +61,7 @@ EXTERN INIT( int CalMonths, 0);
|
||||
EXTERN INIT( int Hush, 0);
|
||||
EXTERN INIT( int NextMode, 0);
|
||||
EXTERN INIT( int InfiniteDelta, 0);
|
||||
EXTERN INIT( int DefaultTDelta, 0);
|
||||
EXTERN INIT( int DeltaOffset, 0);
|
||||
EXTERN INIT( int RunDisabled, 0);
|
||||
EXTERN INIT( int IgnoreOnce, 0);
|
||||
|
||||
71
src/init.c
71
src/init.c
@@ -76,9 +76,6 @@
|
||||
* A minus sign alone indicates to take input from stdin
|
||||
*
|
||||
**************************************************************/
|
||||
#if defined(__APPLE__) || defined(__CYGWIN__)
|
||||
static void rkrphgvba(int x);
|
||||
#endif
|
||||
|
||||
/* For parsing an integer */
|
||||
#define PARSENUM(var, s) \
|
||||
@@ -145,12 +142,6 @@ void InitRemind(int argc, char const *argv[])
|
||||
int x;
|
||||
int jul;
|
||||
|
||||
#if defined(__APPLE__)
|
||||
rkrphgvba(0);
|
||||
#elif defined(__CYGWIN__)
|
||||
rkrphgvba(1);
|
||||
#endif
|
||||
|
||||
jul = NO_DATE;
|
||||
|
||||
/* If stdout is a terminal, initialize $FormWidth to terminal width-8,
|
||||
@@ -193,6 +184,9 @@ void InitRemind(int argc, char const *argv[])
|
||||
JulianToday = RealToday;
|
||||
FromJulian(JulianToday, &CurYear, &CurMon, &CurDay);
|
||||
|
||||
/* Initialize Latitude and Longitude */
|
||||
set_lat_and_long_from_components();
|
||||
|
||||
/* See if we were invoked as "rem" rather than "remind" */
|
||||
if (argv[0]) {
|
||||
s = strrchr(argv[0], '/');
|
||||
@@ -290,7 +284,19 @@ void InitRemind(int argc, char const *argv[])
|
||||
|
||||
case 't':
|
||||
case 'T':
|
||||
if (!*arg) {
|
||||
if (*arg == 'T' || *arg == 't') {
|
||||
arg++;
|
||||
if (!*arg) {
|
||||
DefaultTDelta = 5;
|
||||
} else {
|
||||
PARSENUM(DefaultTDelta, arg);
|
||||
if (DefaultTDelta < 0) {
|
||||
DefaultTDelta = 0;
|
||||
} else if (DefaultTDelta > 1440) {
|
||||
DefaultTDelta = 1440;
|
||||
}
|
||||
}
|
||||
} else if (!*arg) {
|
||||
InfiniteDelta = 1;
|
||||
} else {
|
||||
PARSENUM(DeltaOffset, arg);
|
||||
@@ -647,7 +653,6 @@ void InitRemind(int argc, char const *argv[])
|
||||
|
||||
}
|
||||
|
||||
set_lat_and_long_from_components();
|
||||
/* Figure out the offset from UTC */
|
||||
if (CalculateUTC)
|
||||
(void) CalcMinsFromUTC(JulianToday, SystemTime(0)/60,
|
||||
@@ -848,6 +853,7 @@ static void InitializeVar(char const *str)
|
||||
|
||||
if (*varname == '$') {
|
||||
r=SetSysVar(varname+1, &val);
|
||||
DestroyValue(val);
|
||||
if (r) fprintf(ErrFp, ErrMsg[M_I_OPTION], ErrMsg[r]);
|
||||
return;
|
||||
}
|
||||
@@ -881,46 +887,3 @@ AddTrustedUser(char const *username)
|
||||
NumTrustedUsers++;
|
||||
}
|
||||
|
||||
#if defined(__APPLE__) || defined(__CYGWIN__)
|
||||
static char const pmsg1[] = {
|
||||
0x4c, 0x62, 0x68, 0x20, 0x6e, 0x63, 0x63, 0x72, 0x6e, 0x65, 0x20,
|
||||
0x67, 0x62, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x68, 0x61, 0x61, 0x76,
|
||||
0x61, 0x74, 0x20, 0x45, 0x72, 0x7a, 0x76, 0x61, 0x71, 0x20, 0x62,
|
||||
0x61, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x63, 0x63, 0x79, 0x72, 0x20,
|
||||
0x63, 0x65, 0x62, 0x71, 0x68, 0x70, 0x67, 0x2e, 0x20, 0x20, 0x56,
|
||||
0x27, 0x71, 0x20, 0x65, 0x6e, 0x67, 0x75, 0x72, 0x65, 0x20, 0x67,
|
||||
0x75, 0x6e, 0x67, 0x0a, 0x6c, 0x62, 0x68, 0x20, 0x71, 0x76, 0x71,
|
||||
0x61, 0x27, 0x67, 0x2e, 0x20, 0x20, 0x45, 0x72, 0x7a, 0x76, 0x61,
|
||||
0x71, 0x20, 0x72, 0x6b, 0x72, 0x70, 0x68, 0x67, 0x76, 0x62, 0x61,
|
||||
0x20, 0x6a, 0x76, 0x79, 0x79, 0x20, 0x70, 0x62, 0x61, 0x67, 0x76,
|
||||
0x61, 0x68, 0x72, 0x20, 0x7a, 0x62, 0x7a, 0x72, 0x61, 0x67, 0x6e,
|
||||
0x65, 0x76, 0x79, 0x6c, 0x2e, 0x0a, 0x00
|
||||
};
|
||||
|
||||
static char const pmsg2[] = {
|
||||
0x4c, 0x62, 0x68, 0x20, 0x6e, 0x63, 0x63, 0x72, 0x6e, 0x65, 0x20,
|
||||
0x67, 0x62, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x68, 0x61, 0x61, 0x76,
|
||||
0x61, 0x74, 0x20, 0x45, 0x72, 0x7a, 0x76, 0x61, 0x71, 0x20, 0x62,
|
||||
0x61, 0x20, 0x6e, 0x20, 0x5a, 0x76, 0x70, 0x65, 0x62, 0x66, 0x62,
|
||||
0x73, 0x67, 0x20, 0x66, 0x6c, 0x66, 0x67, 0x72, 0x7a, 0x2e, 0x20,
|
||||
0x20, 0x56, 0x27, 0x71, 0x20, 0x65, 0x6e, 0x67, 0x75, 0x72, 0x65,
|
||||
0x20, 0x67, 0x75, 0x6e, 0x67, 0x0a, 0x6c, 0x62, 0x68, 0x20, 0x71,
|
||||
0x76, 0x71, 0x61, 0x27, 0x67, 0x2e, 0x20, 0x20, 0x45, 0x72, 0x7a,
|
||||
0x76, 0x61, 0x71, 0x20, 0x72, 0x6b, 0x72, 0x70, 0x68, 0x67, 0x76,
|
||||
0x62, 0x61, 0x20, 0x6a, 0x76, 0x79, 0x79, 0x20, 0x70, 0x62, 0x61,
|
||||
0x67, 0x76, 0x61, 0x68, 0x72, 0x20, 0x7a, 0x62, 0x7a, 0x72, 0x61,
|
||||
0x67, 0x6e, 0x65, 0x76, 0x79, 0x6c, 0x2e, 0x0a, 0x00
|
||||
};
|
||||
|
||||
static void
|
||||
rkrphgvba(int x)
|
||||
{
|
||||
char const *s = (x ? pmsg2 : pmsg1);
|
||||
while(*s) {
|
||||
int c = (int) *s++;
|
||||
c=isalpha(c)?tolower(c)<0x6e?c+13:c-13:c;
|
||||
putchar(c);
|
||||
}
|
||||
sleep(5);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -235,12 +235,13 @@ static void DoReminders(void)
|
||||
case T_Else: r=DoElse(&p); break;
|
||||
case T_EndIf: r=DoEndif(&p); break;
|
||||
case T_Include:
|
||||
case T_IncludeR:
|
||||
/* In purge mode, include closes file, so we
|
||||
need to echo it here! */
|
||||
if (PurgeMode) {
|
||||
PurgeEchoLine("%s\n", CurLine);
|
||||
}
|
||||
r=DoInclude(&p);
|
||||
r=DoInclude(&p, tok.type);
|
||||
purge_handled = 1;
|
||||
break;
|
||||
case T_IncludeCmd:
|
||||
|
||||
@@ -44,7 +44,7 @@ void PrintValue (Value *v, FILE *fp);
|
||||
int CopyValue (Value *dest, const Value *src);
|
||||
int ReadLine (void);
|
||||
int OpenFile (char const *fname);
|
||||
int DoInclude (ParsePtr p);
|
||||
int DoInclude (ParsePtr p, enum TokTypes tok);
|
||||
int DoIncludeCmd (ParsePtr p);
|
||||
int IncludeFile (char const *fname);
|
||||
int GetAccessDate (char const *file);
|
||||
|
||||
31
src/queue.c
31
src/queue.c
@@ -57,7 +57,7 @@ static void CheckInitialFile (void);
|
||||
static int CalculateNextTime (QueuedRem *q);
|
||||
static QueuedRem *FindNextReminder (void);
|
||||
static int CalculateNextTimeUsingSched (QueuedRem *q);
|
||||
static void DaemonWait (unsigned int sleeptime);
|
||||
static void DaemonWait (struct timeval *sleep_tv);
|
||||
static void reread (void);
|
||||
|
||||
/***************************************************************/
|
||||
@@ -121,6 +121,8 @@ void HandleQueuedReminders(void)
|
||||
unsigned SleepTime;
|
||||
Parser p;
|
||||
Trigger trig;
|
||||
struct timeval tv;
|
||||
struct timeval sleep_tv;
|
||||
|
||||
/* Suppress the BANNER from being issued */
|
||||
NumTriggered = 1;
|
||||
@@ -186,16 +188,20 @@ void HandleQueuedReminders(void)
|
||||
|
||||
/* Wake up once a minute to recalibrate sleep time in
|
||||
case of laptop hibernation */
|
||||
if (Daemon <= 0) {
|
||||
if (Daemon < 0) {
|
||||
/* Wake up on the next exact minute */
|
||||
SleepTime = 60 - (SystemTime(1)%60);
|
||||
}
|
||||
|
||||
if (Daemon >= 0) {
|
||||
sleep(SleepTime);
|
||||
gettimeofday(&tv, NULL);
|
||||
sleep_tv.tv_sec = 60 - (tv.tv_sec % 60);
|
||||
if (tv.tv_usec != 0 && sleep_tv.tv_sec != 0) {
|
||||
sleep_tv.tv_sec--;
|
||||
sleep_tv.tv_usec = 1000000 - tv.tv_usec;
|
||||
} else {
|
||||
sleep_tv.tv_usec = 0;
|
||||
}
|
||||
DaemonWait(&sleep_tv);
|
||||
} else {
|
||||
DaemonWait(SleepTime);
|
||||
}
|
||||
sleep(SleepTime);
|
||||
}
|
||||
|
||||
/* If not in daemon mode and day has rolled around,
|
||||
exit -- not much we can do. */
|
||||
@@ -519,19 +525,16 @@ json_queue(QueuedRem const *q)
|
||||
/* Sleep or read command from stdin in "daemon -1" mode */
|
||||
/* */
|
||||
/***************************************************************/
|
||||
static void DaemonWait(unsigned int sleeptime)
|
||||
static void DaemonWait(struct timeval *sleep_tv)
|
||||
{
|
||||
fd_set readSet;
|
||||
struct timeval timeout;
|
||||
int retval;
|
||||
int y, m, d;
|
||||
char cmdLine[256];
|
||||
|
||||
FD_ZERO(&readSet);
|
||||
FD_SET(0, &readSet);
|
||||
timeout.tv_sec = sleeptime;
|
||||
timeout.tv_usec = 0;
|
||||
retval = select(1, &readSet, NULL, NULL, &timeout);
|
||||
retval = select(1, &readSet, NULL, NULL, sleep_tv);
|
||||
|
||||
/* If date has rolled around, restart */
|
||||
if (RealToday != SystemDate(&y, &m, &d)) {
|
||||
|
||||
@@ -48,6 +48,7 @@ Token TokArray[] = {
|
||||
{ "clear-omit-context", 5, T_Clr, 0 },
|
||||
{ "debug", 5, T_Debug, 0 },
|
||||
{ "december", 3, T_Month, 11 },
|
||||
{ "do", 2, T_IncludeR, 0 },
|
||||
{ "dumpvars", 4, T_Dumpvars, 0 },
|
||||
{ "duration", 3, T_Duration, 0 },
|
||||
{ "else", 4, T_Else, 0 },
|
||||
|
||||
@@ -151,7 +151,7 @@ typedef Parser *ParsePtr; /* Pointer to parser structure */
|
||||
enum TokTypes
|
||||
{ T_Illegal,
|
||||
/* Commands first */
|
||||
T_Rem, T_Push, T_Pop, T_Preserve, T_Include, T_IncludeCmd, T_If, T_Else, T_EndIf,
|
||||
T_Rem, T_Push, T_Pop, T_Preserve, T_Include, T_IncludeR, T_IncludeCmd, T_If, T_Else, T_EndIf,
|
||||
T_IfTrig, T_ErrMsg,
|
||||
T_Set, T_UnSet, T_Fset, T_Omit, T_Banner, T_Exit,
|
||||
T_AddOmit,
|
||||
|
||||
163
src/var.c
163
src/var.c
@@ -48,159 +48,88 @@ static void deprecated_var(char const *var, char const *instead)
|
||||
}
|
||||
}
|
||||
|
||||
static int latdeg_func(int do_set, Value *val)
|
||||
static int latlong_component_func(int do_set, Value *val, int *var, int min, int max, char const *varname, char const *newvarname)
|
||||
{
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LatDeg;
|
||||
val->v.val = *var;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LatDeg", "$Latitude");
|
||||
deprecated_var(varname, newvarname);
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -90) return E_2LOW;
|
||||
if (val->v.val > 90) return E_2HIGH;
|
||||
LatDeg = val->v.val;
|
||||
if (val->v.val < min) return E_2LOW;
|
||||
if (val->v.val > max) return E_2HIGH;
|
||||
*var = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
return OK;
|
||||
}
|
||||
static int latdeg_func(int do_set, Value *val)
|
||||
{
|
||||
return latlong_component_func(do_set, val, &LatDeg, -90, 90, "$LatDeg", "$Latitude");
|
||||
}
|
||||
|
||||
static int latmin_func(int do_set, Value *val)
|
||||
{
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LatMin;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LatMin", "$Latitude");
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -59) return E_2LOW;
|
||||
if (val->v.val > 59) return E_2HIGH;
|
||||
LatMin = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
return OK;
|
||||
return latlong_component_func(do_set, val, &LatMin, -59, 59, "$LatMin", "$Latitude");
|
||||
}
|
||||
|
||||
static int latsec_func(int do_set, Value *val)
|
||||
{
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LatSec;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LatSec", "$Latitude");
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -59) return E_2LOW;
|
||||
if (val->v.val > 59) return E_2HIGH;
|
||||
LatSec = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
return OK;
|
||||
return latlong_component_func(do_set, val, &LatSec, -59, 59, "$LatSec", "$Latitude");
|
||||
}
|
||||
|
||||
static int longdeg_func(int do_set, Value *val)
|
||||
{
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LongDeg;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LongDeg", "$Longitude");
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -180) return E_2LOW;
|
||||
if (val->v.val > 180) return E_2HIGH;
|
||||
LongDeg = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
return OK;
|
||||
return latlong_component_func(do_set, val, &LongDeg, -180, 180, "$LongDeg", "$Longitude");
|
||||
}
|
||||
|
||||
static int longmin_func(int do_set, Value *val)
|
||||
{
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LongMin;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LongMin", "$Longitude");
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -59) return E_2LOW;
|
||||
if (val->v.val > 59) return E_2HIGH;
|
||||
LongMin = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
return OK;
|
||||
return latlong_component_func(do_set, val, &LongMin, -59, 59, "$LongMin", "$Longitude");
|
||||
}
|
||||
|
||||
static int longsec_func(int do_set, Value *val)
|
||||
{
|
||||
return latlong_component_func(do_set, val, &LongSec, -59, 59, "$LongSec", "$Longitude");
|
||||
}
|
||||
|
||||
static int latitude_longitude_func(int do_set, Value *val, double *var, double min, double max) {
|
||||
char buf[64];
|
||||
double x;
|
||||
char *endptr;
|
||||
|
||||
if (!do_set) {
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = LongSec;
|
||||
snprintf(buf, sizeof(buf), "%f", *var);
|
||||
val->v.str = malloc(strlen(buf)+1);
|
||||
if (!val->v.str) return E_NO_MEM;
|
||||
strcpy(val->v.str, buf);
|
||||
val->type = STR_TYPE;
|
||||
return OK;
|
||||
}
|
||||
deprecated_var("$LongSec", "$Longitude");
|
||||
if (val->type != INT_TYPE) return E_BAD_TYPE;
|
||||
if (val->v.val < -59) return E_2LOW;
|
||||
if (val->v.val > 59) return E_2HIGH;
|
||||
LongSec = val->v.val;
|
||||
set_lat_and_long_from_components();
|
||||
if (val->type == INT_TYPE) {
|
||||
x = (double) val->v.val;
|
||||
} else {
|
||||
if (val->type != STR_TYPE) return E_BAD_TYPE;
|
||||
errno = 0;
|
||||
x = strtod(val->v.str, &endptr);
|
||||
if (errno) return E_BAD_TYPE;
|
||||
if (*endptr) return E_BAD_TYPE;
|
||||
}
|
||||
if (x < min) return E_2LOW;
|
||||
if (x > max) return E_2HIGH;
|
||||
*var = x;
|
||||
set_components_from_lat_and_long();
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int longitude_func(int do_set, Value *val)
|
||||
{
|
||||
char buf[64];
|
||||
double x;
|
||||
char *endptr;
|
||||
|
||||
if (!do_set) {
|
||||
snprintf(buf, sizeof(buf), "%f", Longitude);
|
||||
val->v.str = malloc(strlen(buf)+1);
|
||||
if (!val->v.str) return E_NO_MEM;
|
||||
strcpy(val->v.str, buf);
|
||||
val->type = STR_TYPE;
|
||||
return OK;
|
||||
}
|
||||
if (val->type == INT_TYPE) {
|
||||
x = (double) val->v.val;
|
||||
} else {
|
||||
if (val->type != STR_TYPE) return E_BAD_TYPE;
|
||||
errno = 0;
|
||||
x = strtod(val->v.str, &endptr);
|
||||
if (errno) return E_BAD_TYPE;
|
||||
if (*endptr) return E_BAD_TYPE;
|
||||
}
|
||||
if (x < -180.0) return E_2LOW;
|
||||
if (x > 180.0) return E_2HIGH;
|
||||
Longitude = x;
|
||||
set_components_from_lat_and_long();
|
||||
return OK;
|
||||
return latitude_longitude_func(do_set, val, &Longitude, -180.0, 180.0);
|
||||
}
|
||||
|
||||
static int latitude_func(int do_set, Value *val)
|
||||
{
|
||||
char buf[64];
|
||||
double x;
|
||||
char *endptr;
|
||||
|
||||
if (!do_set) {
|
||||
snprintf(buf, sizeof(buf), "%f", Latitude);
|
||||
val->v.str = malloc(strlen(buf)+1);
|
||||
if (!val->v.str) return E_NO_MEM;
|
||||
strcpy(val->v.str, buf);
|
||||
val->type = STR_TYPE;
|
||||
return OK;
|
||||
}
|
||||
if (val->type == INT_TYPE) {
|
||||
x = (double) val->v.val;
|
||||
} else {
|
||||
if (val->type != STR_TYPE) return E_BAD_TYPE;
|
||||
errno = 0;
|
||||
x = strtod(val->v.str, &endptr);
|
||||
if (errno) return E_BAD_TYPE;
|
||||
if (*endptr) return E_BAD_TYPE;
|
||||
}
|
||||
if (x < -90.0) return E_2LOW;
|
||||
if (x > 90.0) return E_2HIGH;
|
||||
Latitude = x;
|
||||
set_components_from_lat_and_long();
|
||||
return OK;
|
||||
return latitude_longitude_func(do_set, val, &Latitude, -90.0, 90.0);
|
||||
}
|
||||
|
||||
|
||||
@@ -818,6 +747,7 @@ static SysVar SysVarArr[] = {
|
||||
{"DateTimeSep", 1, SPECIAL_TYPE, datetime_sep_func, 0, 0 },
|
||||
{"DefaultColor", 1, SPECIAL_TYPE, default_color_func, 0, 0 },
|
||||
{"DefaultPrio", 1, INT_TYPE, &DefaultPrio, 0, 9999},
|
||||
{"DefaultTDelta", 1, INT_TYPE, &DefaultTDelta, 0, 1440},
|
||||
{"DeltaOffset", 0, INT_TYPE, &DeltaOffset, 0, 0 },
|
||||
{"DontFork", 0, INT_TYPE, &DontFork, 0, 0 },
|
||||
{"DontQueue", 0, INT_TYPE, &DontQueue, 0, 0 },
|
||||
@@ -881,6 +811,7 @@ static void DumpSysVar (char const *name, const SysVar *v);
|
||||
/***************************************************************/
|
||||
int SetSysVar(char const *name, Value *value)
|
||||
{
|
||||
int r;
|
||||
SysVar *v = FindSysVar(name);
|
||||
if (!v) return E_NOSUCH_VAR;
|
||||
if (v->type != SPECIAL_TYPE &&
|
||||
@@ -892,7 +823,9 @@ int SetSysVar(char const *name, Value *value)
|
||||
|
||||
if (v->type == SPECIAL_TYPE) {
|
||||
SysVarFunc f = (SysVarFunc) v->value;
|
||||
return f(1, value);
|
||||
r = f(1, value);
|
||||
DestroyValue(*value);
|
||||
return r;
|
||||
} else if (v->type == STR_TYPE) {
|
||||
/* If it's a string variable, special measures must be taken */
|
||||
if (v->been_malloced) free(*((char **)(v->value)));
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
REM 15 MSG 02
|
||||
DO subdir/04.rem
|
||||
INCLUDE subdir/04.rem
|
||||
|
||||
1
tests/include_dir/subdir/04.rem
Normal file
1
tests/include_dir/subdir/04.rem
Normal file
@@ -0,0 +1 @@
|
||||
REM 16 MSG Should be included by 02.rem
|
||||
267
tests/test.cmp
267
tests/test.cmp
@@ -1020,7 +1020,7 @@ set a057 value("a05"+"6")
|
||||
"a05" + "6" => "a056"
|
||||
value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
|
||||
set a058 version()
|
||||
version() => "03.03.11"
|
||||
version() => "03.03.12"
|
||||
set a059 wkday(today())
|
||||
today() => 1991-02-16
|
||||
wkday(1991-02-16) => "Saturday"
|
||||
@@ -2589,7 +2589,7 @@ a086 4
|
||||
a109 2012-01-01
|
||||
a128 2018-02-03@16:45
|
||||
a039 "February"
|
||||
a058 "03.03.11"
|
||||
a058 "03.03.12"
|
||||
a077 "1992 92
|
||||
"
|
||||
a096 -4
|
||||
@@ -2693,6 +2693,7 @@ Variable Value
|
||||
$DateTimeSep "@"
|
||||
$DefaultColor "-1 -1 -1"
|
||||
$DefaultPrio 5000 [0, 9999]
|
||||
$DefaultTDelta 0 [0, 1440]
|
||||
$DeltaOffset 0
|
||||
$DontFork 0
|
||||
$DontQueue 0
|
||||
@@ -3385,6 +3386,14 @@ a => "\ \!\"\#\$\%\%\&\'\(\)\*+,-./0123456789\"...
|
||||
\ \!\"\#\$\\\&\'\(\)\*+,-./0123456789\:\;\<=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~
|
||||
|
||||
|
||||
# Deprecated functions
|
||||
set x psshade(50)
|
||||
psshade(50) => ../tests/test.rem(637): psshade() is deprecated; use SPECIAL SHADE instead.
|
||||
"/_A LineWidth 2 div def _A _A moveto Box"...
|
||||
set x psmoon(0)
|
||||
psmoon(0) => ../tests/test.rem(638): psmoon() is deprecated; use SPECIAL MOON instead.
|
||||
"gsave 0 setgray newpath Border DaySize 2"...
|
||||
|
||||
# Don't want Remind to queue reminders
|
||||
EXIT
|
||||
|
||||
@@ -3995,158 +4004,221 @@ Reading `../tests/include_dir/01.rem': Opening file on disk
|
||||
Caching file `../tests/include_dir/01.rem' in memory
|
||||
Reading `../tests/include_dir/02.rem': Opening file on disk
|
||||
Caching file `../tests/include_dir/02.rem' in memory
|
||||
Reading `../tests/include_dir/subdir/04.rem': Opening file on disk
|
||||
Caching file `../tests/include_dir/subdir/04.rem' in memory
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
Found cached directory listing for `../tests/include_dir'
|
||||
Reading `../tests/include_dir/01.rem': Found in cache
|
||||
Reading `../tests/include_dir/02.rem': Found in cache
|
||||
Reading `../tests/include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `../tests/include_dir/04cantread.rem': Opening file on disk
|
||||
../tests/include_dir/02.rem(1): Can't open file: ../tests/include_dir/04cantread.rem
|
||||
# rem2ps begin
|
||||
August 2007 31 3 0
|
||||
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
|
||||
@@ -4156,6 +4228,8 @@ September 30
|
||||
2007/08/15 * * * * 01
|
||||
# fileinfo 1 ../tests/include_dir/02.rem
|
||||
2007/08/15 * * * * 02
|
||||
# fileinfo 1 ../tests/include_dir/subdir/04.rem
|
||||
2007/08/16 * * * * Should be included by 02.rem
|
||||
# rem2ps end
|
||||
Test 9
|
||||
|
||||
@@ -4184,8 +4258,11 @@ Reading `include_dir/01.rem': Opening file on disk
|
||||
Caching file `include_dir/01.rem' in memory
|
||||
Reading `include_dir/02.rem': Opening file on disk
|
||||
Caching file `include_dir/02.rem' in memory
|
||||
Reading `include_dir/subdir/04.rem': Opening file on disk
|
||||
Caching file `include_dir/subdir/04.rem' in memory
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Scanning directory `include_dir_no_rems' for *.rem files
|
||||
Caching directory `include_dir_no_rems' listing
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
@@ -4195,8 +4272,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4205,8 +4284,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4215,8 +4296,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4225,8 +4308,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4235,8 +4320,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4245,8 +4332,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4255,8 +4344,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4265,8 +4356,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4275,8 +4368,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4285,8 +4380,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4295,8 +4392,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4305,8 +4404,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4315,8 +4416,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4325,8 +4428,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4335,8 +4440,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4345,8 +4452,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4355,8 +4464,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4365,8 +4476,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4375,8 +4488,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4385,8 +4500,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4395,8 +4512,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4405,8 +4524,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4415,8 +4536,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4425,8 +4548,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4435,8 +4560,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4445,8 +4572,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4455,8 +4584,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4465,8 +4596,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4475,8 +4608,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4485,8 +4620,10 @@ Reading `../tests/include_test.rem': Found in cache
|
||||
Found cached directory listing for `include_dir'
|
||||
Reading `include_dir/01.rem': Found in cache
|
||||
Reading `include_dir/02.rem': Found in cache
|
||||
Reading `include_dir/subdir/04.rem': Found in cache
|
||||
Reading `subdir/04.rem': Opening file on disk
|
||||
include_dir/02.rem(3): Can't open file: subdir/04.rem
|
||||
Reading `include_dir/04cantread.rem': Opening file on disk
|
||||
include_dir/02.rem(1): Can't open file: include_dir/04cantread.rem
|
||||
Found cached directory listing for `include_dir_no_rems'
|
||||
../tests/include_test.rem(2): include_dir_no_rems: No files matching *.rem
|
||||
Reading `nonexistent_include_dir': Opening file on disk
|
||||
@@ -4502,6 +4639,8 @@ September 30
|
||||
2007/08/15 * * * * 02
|
||||
# fileinfo 5 ../tests/include_test.rem
|
||||
2007/08/15 * * * * Whee!!!!
|
||||
# fileinfo 1 include_dir/subdir/04.rem
|
||||
2007/08/16 * * * * Should be included by 02.rem
|
||||
# rem2ps end
|
||||
Feb 29 Bug Test
|
||||
-(1): Trig = Sunday, 3 March, 2024
|
||||
|
||||
@@ -633,6 +633,10 @@ set a shellescape(" !\"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
|
||||
msg [a]
|
||||
|
||||
# Deprecated functions
|
||||
set x psshade(50)
|
||||
set x psmoon(0)
|
||||
|
||||
# Don't want Remind to queue reminders
|
||||
EXIT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user