Compare commits

...

24 Commits

Author SHA1 Message Date
Dianne Skoll
daf09d9d4e Fix doc bug. 2022-01-24 17:49:00 -05:00
Dianne Skoll
511cdb2784 Document changes to dynamic buffers. 2022-01-24 10:23:49 -05:00
Dianne Skoll
a567a9b777 Document that strlen() can return E_2HIGH 2022-01-22 18:42:11 -05:00
Dianne Skoll
05bc3af03d Use size_t rather than int to track dynamic buffer size.
This lets use create dynamic buffers larger than 2GB.
2022-01-22 18:40:27 -05:00
Dianne Skoll
7a048d1702 Document update to shell() 2022-01-22 18:26:22 -05:00
Dianne Skoll
8d7f9bcb8b Make shell() obey MaxStringLen 2022-01-22 18:24:38 -05:00
Dianne Skoll
9fd8b0f890 Update change to rem2html 2022-01-22 18:11:50 -05:00
Dianne Skoll
86873d0725 Use JSON::MaybeXS instead of JSON (courtesy of Ethan Rooke) 2022-01-22 18:09:02 -05:00
Dianne Skoll
b22438b489 Bump version to 03.03.12. 2022-01-22 09:21:02 -05:00
Dianne Skoll
683b38a7ab 3.3.12 will go out in 2022, not 2021. 2022-01-22 09:19:14 -05:00
Dianne Skoll
d6b4fdd6d3 Always clean up. 2022-01-20 20:10:39 -05:00
Dianne Skoll
c996649954 Update docs. 2022-01-20 19:52:29 -05:00
Dianne Skoll
d59ad77893 Document DO better. 2022-01-20 19:48:49 -05:00
Dianne Skoll
e637c20dee Don't try to do filedir() shenanigans for "DO /absolute/path" 2022-01-20 19:47:04 -05:00
Dianne Skoll
19dc588319 Update regression test file 2022-01-20 19:39:26 -05:00
Dianne Skoll
dc53ef2e71 Document DO 2022-01-20 19:39:12 -05:00
Dianne Skoll
e51d7f3c6d Add "DO file" command which is equivalent to "INCLUDE [filedir()]/file" 2022-01-20 19:30:10 -05:00
Dianne Skoll
5a7e86e443 Update WHATSNEW 2022-01-20 12:41:58 -05:00
Dianne Skoll
7f4edae006 Update test output comparison file. 2022-01-20 09:53:08 -05:00
Dianne Skoll
2f4e1462e3 Document -tt[N] and $DefaultTDelta 2022-01-20 09:52:57 -05:00
Dianne Skoll
54f5d81a8c Properly check for repeated tdelta 2022-01-20 09:52:46 -05:00
Dianne Skoll
d33c27289a Implement $DefaultTDelta system variable and -tt[N] command-line option. 2022-01-20 09:44:17 -05:00
Dianne Skoll
1675fdb499 Keep config file in $XDG_CONFIG_HOME/tkremindrc in preference to ~/.tkremindrc 2021-12-31 16:16:16 -05:00
Dianne Skoll
9321109691 Remove code that annoyed people on Windows or Mac OS X.
I think I've made my point, and the MICROSOFT-AND-APPLE file still exists.
2021-12-31 15:33:43 -05:00
24 changed files with 427 additions and 211 deletions

32
configure vendored
View File

@@ -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"

View File

@@ -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)

View File

@@ -1,5 +1,38 @@
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.

View File

@@ -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
@@ -2619,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()
@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -146,7 +146,7 @@ set ReminderFile {NOSUCHFILE}
set ReminderFile [file nativename "~/.reminders"]
# Default options file
set ConfigFile ~/.tkremindrc
set ConfigFile ""
set EditorPid -1
@@ -2731,6 +2731,7 @@ proc main {} {
close $f
}
}
FindConfigFile
LoadOptions
ShowTodaysReminders
ScanForTags $AppendFile
@@ -3913,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

View File

@@ -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;

View File

@@ -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:

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;
}
/***************************************************************/

View File

@@ -433,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;
}
@@ -1572,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) {
@@ -1585,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;
}
}

View File

@@ -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);

View File

@@ -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,
@@ -293,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);
@@ -884,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

View File

@@ -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:

View File

@@ -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);

View File

@@ -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 },

View File

@@ -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,

View File

@@ -747,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 },

View File

@@ -1 +1,3 @@
REM 15 MSG 02
DO subdir/04.rem
INCLUDE subdir/04.rem

View File

@@ -0,0 +1 @@
REM 16 MSG Should be included by 02.rem

View File

@@ -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
@@ -4003,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
@@ -4164,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
@@ -4192,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
@@ -4203,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
@@ -4213,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
@@ -4223,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
@@ -4233,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
@@ -4243,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
@@ -4253,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
@@ -4263,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
@@ -4273,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
@@ -4283,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
@@ -4293,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
@@ -4303,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
@@ -4313,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
@@ -4323,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
@@ -4333,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
@@ -4343,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
@@ -4353,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
@@ -4363,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
@@ -4373,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
@@ -4383,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
@@ -4393,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
@@ -4403,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
@@ -4413,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
@@ -4423,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
@@ -4433,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
@@ -4443,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
@@ -4453,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
@@ -4463,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
@@ -4473,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
@@ -4483,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
@@ -4493,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
@@ -4510,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