mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-19 15:54:22 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6373ae8ca5 | |||
| b8c4786b33 |
+16
-3
@@ -4,7 +4,12 @@ CHANGES TO REMIND
|
|||||||
|
|
||||||
- MAJOR NEW FEATURE: remind: Add the TRANSLATE command, the _()
|
- MAJOR NEW FEATURE: remind: Add the TRANSLATE command, the _()
|
||||||
built-in function and the %(...) substitution sequence. These allow
|
built-in function and the %(...) substitution sequence. These allow
|
||||||
you to localize your reminder files more easily.
|
you to localize your reminder files more easily. The translation table
|
||||||
|
is also made available to back-ends like rem2pdf and tkremind,
|
||||||
|
which they can use as they see fit.
|
||||||
|
|
||||||
|
- MINOR FEATURE: tkremind, rem2html: Localize the names of the moon
|
||||||
|
phases.
|
||||||
|
|
||||||
- MAJOR CHANGE: remind: Remind used to support compile-time localization
|
- MAJOR CHANGE: remind: Remind used to support compile-time localization
|
||||||
into different languages (French, English, etc.) That compile-time
|
into different languages (French, English, etc.) That compile-time
|
||||||
@@ -27,6 +32,10 @@ CHANGES TO REMIND
|
|||||||
|
|
||||||
INCLUDE [$SysInclude]/foo/bar.rem
|
INCLUDE [$SysInclude]/foo/bar.rem
|
||||||
|
|
||||||
|
- MINOR IMPROVEMENT: Allow INCLUDE, DO and SYSINCLUDE to include files with
|
||||||
|
spaces in their names; in this case, you have to put the filename inside
|
||||||
|
double-quotes.
|
||||||
|
|
||||||
- IMPROVEMENT: remind: Refuse to open subdirectories named "*.rem"
|
- IMPROVEMENT: remind: Refuse to open subdirectories named "*.rem"
|
||||||
under a top-level directory rather than trying and failing with a
|
under a top-level directory rather than trying and failing with a
|
||||||
confusing error.
|
confusing error.
|
||||||
@@ -43,8 +52,12 @@ CHANGES TO REMIND
|
|||||||
- MINOR FIXES: remind: Fix typos in comments; use memcpy to copy OMIT
|
- MINOR FIXES: remind: Fix typos in comments; use memcpy to copy OMIT
|
||||||
contexts internally.
|
contexts internally.
|
||||||
|
|
||||||
- BUG FIX: Actually allow the documented 9 levels of INCLUDE rather than
|
- BUG FIX: remind: Actually allow the documented 9 levels of INCLUDE
|
||||||
8.
|
rather than 8.
|
||||||
|
|
||||||
|
- BUG FIX: remind: If an INCLUDE statement failed inside an IF statement,
|
||||||
|
Remind would print spurious errors about unmatched IF/ENDIF. This has
|
||||||
|
been fixed.
|
||||||
|
|
||||||
* VERSION 5.1 Patch 1 - 2024-11-18
|
* VERSION 5.1 Patch 1 - 2024-11-18
|
||||||
|
|
||||||
|
|||||||
+8
-9
@@ -1927,19 +1927,18 @@ commands.
|
|||||||
.SH THE DO, INCLUDE AND SYSINCLUDE COMMANDS
|
.SH THE DO, INCLUDE AND SYSINCLUDE COMMANDS
|
||||||
.PP
|
.PP
|
||||||
\fBRemind\fR allows you to include other files in your reminder script,
|
\fBRemind\fR allows you to include other files in your reminder script,
|
||||||
similar to the C preprocessor #include directive. For example, your
|
similar to the C preprocessor #include directive. For example, you
|
||||||
system administrator may maintain a file of holidays or system-wide
|
might organize different reminders into different files like this:
|
||||||
reminders. You can include these in your reminder script as follows:
|
|
||||||
.PP
|
.PP
|
||||||
.nf
|
.nf
|
||||||
INCLUDE /usr/share/remind/holidays
|
INCLUDE holidays.rem
|
||||||
INCLUDE /usr/share/remind/reminders
|
INCLUDE birthdays.rem
|
||||||
|
INCLUDE "quote files with spaces.rem"
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
(The actual pathnames vary from system to system - ask your system
|
\fBINCLUDE\fR files can be nested up to a depth of 8. As shown above, if a
|
||||||
administrator.)
|
filename has spaces in it (not recommended!) you can use double-quotes
|
||||||
.PP
|
around the filename.
|
||||||
\fBINCLUDE\fR files can be nested up to a depth of 8.
|
|
||||||
.PP
|
.PP
|
||||||
If you specify a filename of "-" in the \fBINCLUDE\fR command, \fBRemind\fR
|
If you specify a filename of "-" in the \fBINCLUDE\fR command, \fBRemind\fR
|
||||||
will begin reading from standard input.
|
will begin reading from standard input.
|
||||||
|
|||||||
+1
-1
@@ -608,7 +608,7 @@ int DoInclude(ParsePtr p, enum TokTypes tok)
|
|||||||
DBufInit(&buf);
|
DBufInit(&buf);
|
||||||
DBufInit(&fullname);
|
DBufInit(&fullname);
|
||||||
DBufInit(&path);
|
DBufInit(&path);
|
||||||
if ( (r=ParseToken(p, &buf)) ) return r;
|
if ( (r=ParseTokenOrQuotedString(p, &buf)) ) return r;
|
||||||
e = VerifyEoln(p);
|
e = VerifyEoln(p);
|
||||||
if (e) Eprint("%s", GetErr(e));
|
if (e) Eprint("%s", GetErr(e));
|
||||||
|
|
||||||
|
|||||||
+18
@@ -600,6 +600,24 @@ int ParseNonSpaceChar(ParsePtr p, int *err, int peek)
|
|||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************/
|
||||||
|
/* */
|
||||||
|
/* ParseTokenOrQuotedString */
|
||||||
|
/* */
|
||||||
|
/* Parse either a token or a double-quote-delimited string. */
|
||||||
|
/* */
|
||||||
|
/***************************************************************/
|
||||||
|
int ParseTokenOrQuotedString(ParsePtr p, DynamicBuffer *dbuf)
|
||||||
|
{
|
||||||
|
int c, err;
|
||||||
|
c = ParseNonSpaceChar(p, &err, 1);
|
||||||
|
if (err) return err;
|
||||||
|
if (c != '"') {
|
||||||
|
return ParseToken(p, dbuf);
|
||||||
|
}
|
||||||
|
return ParseQuotedString(p, dbuf);
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* ParseQuotedString */
|
/* ParseQuotedString */
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ int JulianToGregorianOffset(int y, int m);
|
|||||||
int ParseChar (ParsePtr p, int *err, int peek);
|
int ParseChar (ParsePtr p, int *err, int peek);
|
||||||
int ParseToken (ParsePtr p, DynamicBuffer *dbuf);
|
int ParseToken (ParsePtr p, DynamicBuffer *dbuf);
|
||||||
int ParseQuotedString (ParsePtr p, DynamicBuffer *dbuf);
|
int ParseQuotedString (ParsePtr p, DynamicBuffer *dbuf);
|
||||||
|
int ParseTokenOrQuotedString (ParsePtr p, DynamicBuffer *dbuf);
|
||||||
int ParseIdentifier (ParsePtr p, DynamicBuffer *dbuf);
|
int ParseIdentifier (ParsePtr p, DynamicBuffer *dbuf);
|
||||||
expr_node * ParseExpr(ParsePtr p, int *r);
|
expr_node * ParseExpr(ParsePtr p, int *r);
|
||||||
void print_expr_nodes_stats(void);
|
void print_expr_nodes_stats(void);
|
||||||
|
|||||||
@@ -16232,6 +16232,11 @@ IF 1
|
|||||||
../tests/test.rem(1435): Can't open file: /non/existent/file/should/not/work/wookie
|
../tests/test.rem(1435): Can't open file: /non/existent/file/should/not/work/wookie
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
do "with space.rem"
|
||||||
|
REM MSG D'oh, a file whose name has spaces! [filename()]
|
||||||
|
D'oh, a file whose name has spaces! ../tests/with space.rem
|
||||||
|
|
||||||
|
|
||||||
DEBUG -e
|
DEBUG -e
|
||||||
Var hash: total = 100141; maxlen = 5; avglen = 1.142
|
Var hash: total = 100141; maxlen = 5; avglen = 1.142
|
||||||
Func hash: total = 100016; maxlen = 5; avglen = 1.140
|
Func hash: total = 100016; maxlen = 5; avglen = 1.140
|
||||||
|
|||||||
@@ -1435,6 +1435,8 @@ IF 1
|
|||||||
INCLUDE /non/existent/file/should/not/work/wookie
|
INCLUDE /non/existent/file/should/not/work/wookie
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
do "with space.rem"
|
||||||
|
|
||||||
DEBUG -e
|
DEBUG -e
|
||||||
|
|
||||||
# Output expression-node stats
|
# Output expression-node stats
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
REM MSG D'oh, a file whose name has spaces! [filename()]
|
||||||
Reference in New Issue
Block a user