mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-18 15:28:47 +02:00
Compare commits
2 Commits
4e7cfc20ce
...
05.02.00-B
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6373ae8ca5 | ||
|
|
b8c4786b33 |
@@ -4,7 +4,12 @@ CHANGES TO REMIND
|
||||
|
||||
- MAJOR NEW FEATURE: remind: Add the TRANSLATE command, the _()
|
||||
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
|
||||
into different languages (French, English, etc.) That compile-time
|
||||
@@ -27,6 +32,10 @@ CHANGES TO REMIND
|
||||
|
||||
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"
|
||||
under a top-level directory rather than trying and failing with a
|
||||
confusing error.
|
||||
@@ -43,8 +52,12 @@ CHANGES TO REMIND
|
||||
- MINOR FIXES: remind: Fix typos in comments; use memcpy to copy OMIT
|
||||
contexts internally.
|
||||
|
||||
- BUG FIX: Actually allow the documented 9 levels of INCLUDE rather than
|
||||
8.
|
||||
- BUG FIX: remind: Actually allow the documented 9 levels of INCLUDE
|
||||
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
|
||||
|
||||
|
||||
@@ -1927,19 +1927,18 @@ commands.
|
||||
.SH THE DO, INCLUDE AND SYSINCLUDE COMMANDS
|
||||
.PP
|
||||
\fBRemind\fR allows you to include other files in your reminder script,
|
||||
similar to the C preprocessor #include directive. For example, your
|
||||
system administrator may maintain a file of holidays or system-wide
|
||||
reminders. You can include these in your reminder script as follows:
|
||||
similar to the C preprocessor #include directive. For example, you
|
||||
might organize different reminders into different files like this:
|
||||
.PP
|
||||
.nf
|
||||
INCLUDE /usr/share/remind/holidays
|
||||
INCLUDE /usr/share/remind/reminders
|
||||
INCLUDE holidays.rem
|
||||
INCLUDE birthdays.rem
|
||||
INCLUDE "quote files with spaces.rem"
|
||||
.fi
|
||||
.PP
|
||||
(The actual pathnames vary from system to system - ask your system
|
||||
administrator.)
|
||||
.PP
|
||||
\fBINCLUDE\fR files can be nested up to a depth of 8.
|
||||
\fBINCLUDE\fR files can be nested up to a depth of 8. As shown above, if a
|
||||
filename has spaces in it (not recommended!) you can use double-quotes
|
||||
around the filename.
|
||||
.PP
|
||||
If you specify a filename of "-" in the \fBINCLUDE\fR command, \fBRemind\fR
|
||||
will begin reading from standard input.
|
||||
|
||||
@@ -608,7 +608,7 @@ int DoInclude(ParsePtr p, enum TokTypes tok)
|
||||
DBufInit(&buf);
|
||||
DBufInit(&fullname);
|
||||
DBufInit(&path);
|
||||
if ( (r=ParseToken(p, &buf)) ) return r;
|
||||
if ( (r=ParseTokenOrQuotedString(p, &buf)) ) return r;
|
||||
e = VerifyEoln(p);
|
||||
if (e) Eprint("%s", GetErr(e));
|
||||
|
||||
|
||||
18
src/main.c
18
src/main.c
@@ -600,6 +600,24 @@ int ParseNonSpaceChar(ParsePtr p, int *err, int peek)
|
||||
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 */
|
||||
|
||||
@@ -88,6 +88,7 @@ int JulianToGregorianOffset(int y, int m);
|
||||
int ParseChar (ParsePtr p, int *err, int peek);
|
||||
int ParseToken (ParsePtr p, DynamicBuffer *dbuf);
|
||||
int ParseQuotedString (ParsePtr p, DynamicBuffer *dbuf);
|
||||
int ParseTokenOrQuotedString (ParsePtr p, DynamicBuffer *dbuf);
|
||||
int ParseIdentifier (ParsePtr p, DynamicBuffer *dbuf);
|
||||
expr_node * ParseExpr(ParsePtr p, int *r);
|
||||
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
|
||||
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
|
||||
Var hash: total = 100141; maxlen = 5; avglen = 1.142
|
||||
Func hash: total = 100016; maxlen = 5; avglen = 1.140
|
||||
|
||||
@@ -1435,6 +1435,8 @@ IF 1
|
||||
INCLUDE /non/existent/file/should/not/work/wookie
|
||||
ENDIF
|
||||
|
||||
do "with space.rem"
|
||||
|
||||
DEBUG -e
|
||||
|
||||
# Output expression-node stats
|
||||
|
||||
1
tests/with space.rem
Normal file
1
tests/with space.rem
Normal file
@@ -0,0 +1 @@
|
||||
REM MSG D'oh, a file whose name has spaces! [filename()]
|
||||
Reference in New Issue
Block a user