home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume35 / remind / patch02a next >
Text File  |  1993-02-05  |  63KB  |  1,631 lines

  1. Newsgroups: comp.sources.misc
  2. From: dfs@doe.carleton.ca (David F. Skoll)
  3. Subject: v35i018:  remind - A replacement for calendar, Patch02a/3
  4. Message-ID: <csm-v35i018=remind.165629@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: db1f5641f4951d9f3863bf352f582b12
  6. Date: Thu, 4 Feb 1993 22:57:13 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dfs@doe.carleton.ca (David F. Skoll)
  10. Posting-number: Volume 35, Issue 18
  11. Archive-name: remind/patch02a
  12. Environment: UNIX, MS-DOS
  13. Patch-To: remind: Volume 33, Issue 58-69
  14.  
  15. The following is Official Patch 2 for Remind version 3.0.1, a
  16. sophisticated calendar/reminder program:
  17.  
  18. Quick summary:
  19.  
  20. - Added support for non-English languages (and am soliciting more languages!)
  21. - Made the code generally more "international"
  22. - Added ISO encoding to PostScript output
  23. - Allowed more flexible formatting of both ASCII and PostScript calendars.
  24.  
  25. FTP site:
  26.  
  27. - Available via ftp to ftp.doe.carleton.ca (134.117.9.35) 
  28. in /pub/remind-3.0.  The files are:
  29.  
  30. man-ps.tar.Z        Man pages in PostScript
  31. man-txt.tar.Z        Man pages in formatted ASCII
  32. msdos-exe.tar.Z        MS-DOS executables (English-language only)
  33. patch01.tar.Z        Patch to go from 03.00.00 to 03.00.01
  34. patch02.tar.Z        Patch to go from 03.00.01 to 03.00.02
  35. remind-3.0.2.tar.Z    Complete 03.00.02 distribution/
  36.  
  37. Long summary of changes from WHATSNEW.30 file:
  38.  
  39. - Added the -u option to Remind so that root can run it as any user.
  40.   This simplifies the remind-all scripts, and makes them more efficient.
  41.   If you are worried that this option is a security hole, you can
  42.   disable it in config.h
  43.  
  44. - Changed the RUN command so that RUN OFF can be used anywhere, even
  45.   though RUN ON only works in the top-level file.  This eases the
  46.   management of global files which may want to switch RUN OFF.
  47.  
  48. - Added ISO encoding (ISO 8859-1) to the PostScript output, courtesy of
  49.   Michael Salmon.  This can be selected with the '-i' option in rem2ps.
  50.  
  51. - Added support for the '-' date separator as well as the '/' separator.
  52.  
  53. - Added support for languages other than English.  Note that this support
  54.   is not complete - error messages are still in English.  The idea and
  55.   German translation came from Wolfgang Thronicke.
  56.  
  57. - Changed the -w option to include the "padding" and "spacing" options.
  58.   NOTE INCOMPATIBILITY:  In the previous patch level, creating a weekly
  59.   calendar using the -c+n option left no blank lines between the day
  60.   number and the first reminder entry.  This has been changed so that one
  61.   blank line is left.  To revert to the old behaviour, use the "-w,,0"
  62.   option.
  63.  
  64. - Added the -o option to Rem2ps.  This allows you to specify the margins
  65.   when producing a PostScript calendar.
  66.  
  67. - Updated the copyright notices in all the files. :-)
  68.  
  69. - Added 'make clobber' and 'make test' targets to the Unix makefile.
  70.  
  71. - Corrected typos in WHATSNEW.30 and remind.1 man page.  Thanks to
  72.   Dave Wolfe <dwolfe@pffft.sps.mot.com>
  73.  
  74. - Changed Remind so that supplying the -a option causes timed reminders
  75.   not to be placed into the calendar in calendar mode.
  76.  
  77. David F. Skoll
  78. ---------
  79. #! /bin/sh
  80. # This is a shell archive.  Remove anything before this line, then feed it
  81. # into a shell via "sh file" or similar.  To overwrite existing files,
  82. # type "sh file -c".
  83. # Contents:  lang.h patch.02.B
  84. # Wrapped by kent@sparky on Tue Feb  2 08:40:56 1993
  85. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  86. echo If this archive is complete, you will see the following message:
  87. echo '          "shar: End of archive 1 (of 3)."'
  88. if test -f 'lang.h' -a "${1}" != "-c" ; then 
  89.   echo shar: Will not clobber existing file \"'lang.h'\"
  90. else
  91.   echo shar: Extracting \"'lang.h'\" \(1941 characters\)
  92.   sed "s/^X//" >'lang.h' <<'END_OF_FILE'
  93. X/***************************************************************/
  94. X/*                                                             */
  95. X/*  LANG.H                                                     */
  96. X/*                                                             */
  97. X/*  Header file for language support for various languages.    */
  98. X/*                                                             */
  99. X/*  This file is part of REMIND.                               */
  100. X/*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  101. X/*                                                             */
  102. X/***************************************************************/
  103. X
  104. X/* I'm chauvinistic and name each language with its English name... */
  105. X
  106. X#define ENGLISH    0
  107. X#define GERMAN     1
  108. X
  109. X/* Add more languages here - but please e-mail dfs@doe.carleton.ca
  110. X   to have your favorite language assigned a number.  If you add a
  111. X   language, please send me the header file, and permission to include
  112. X   it in future releases of Remind.  Note that you'll get no remuneration
  113. X   for this service - just everlasting fame. :-)
  114. X
  115. X   Use the file tstlang.rem to test your new language file. */
  116. X
  117. X/************************************************************************
  118. X *                                                                      *
  119. X *       Define the language you want to use here                       *
  120. X *                                                                      *
  121. X ************************************************************************/
  122. X#define LANG ENGLISH
  123. X
  124. X/* If LANG is not defined, it defaults to English. */
  125. X#ifndef LANG
  126. X#define LANG ENGLISH
  127. X#endif
  128. X
  129. X
  130. X/* Pick up the appropriate header file */
  131. X#if LANG == ENGLISH
  132. X#include "english.h"
  133. X#elif LANG == GERMAN
  134. X#include "german.h"
  135. X
  136. X/* If no sensible language, choose English.  I intended to use
  137. X   the #error directive here, but some C compilers barf. */
  138. X#else
  139. X#include "english.h"
  140. X#endif
  141. END_OF_FILE
  142.   if test 1941 -ne `wc -c <'lang.h'`; then
  143.     echo shar: \"'lang.h'\" unpacked with wrong size!
  144.   fi
  145.   # end of 'lang.h'
  146. fi
  147. if test -f 'patch.02.B' -a "${1}" != "-c" ; then 
  148.   echo shar: Will not clobber existing file \"'patch.02.B'\"
  149. else
  150.   echo shar: Extracting \"'patch.02.B'\" \(54669 characters\)
  151.   sed "s/^X//" >'patch.02.B' <<'END_OF_FILE'
  152. X*** ../patch1/main.c    Wed Dec 16 10:51:37 1992
  153. X--- ./main.c    Fri Jan 22 14:22:16 1993
  154. X***************
  155. X*** 6,12 ****
  156. X  /*  routines, etc.                                             */
  157. X  /*                                                             */
  158. X  /*  This file is part of REMIND.                               */
  159. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  160. X  /*                                                             */
  161. X  /***************************************************************/
  162. X  #include "config.h"
  163. X--- 6,12 ----
  164. X  /*  routines, etc.                                             */
  165. X  /*                                                             */
  166. X  /*  This file is part of REMIND.                               */
  167. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  168. X  /*                                                             */
  169. X  /***************************************************************/
  170. X  #include "config.h"
  171. X***************
  172. X*** 1043,1055 ****
  173. X  {
  174. X     int r;
  175. X  
  176. X-    if (!TopLevel())
  177. X-       return OK; /* Silently ignore RUN command in included file */
  178. X- 
  179. X     if (r=ParseToken(p, TokBuffer)) return r;
  180. X  
  181. X     if (StriEq(TokBuffer, "ON"))
  182. X!       RunDisabled &= ~RUN_SCRIPT;
  183. X     else if (StriEq(TokBuffer, "OFF"))
  184. X        RunDisabled |= RUN_SCRIPT;
  185. X     else return E_PARSE_ERR;
  186. X--- 1043,1055 ----
  187. X  {
  188. X     int r;
  189. X  
  190. X     if (r=ParseToken(p, TokBuffer)) return r;
  191. X  
  192. X+ /* Only allow RUN ON in top-level script */
  193. X     if (StriEq(TokBuffer, "ON"))
  194. X!       if (TopLevel()) RunDisabled &= ~RUN_SCRIPT;
  195. X! 
  196. X! /* But allow RUN OFF anywhere */
  197. X     else if (StriEq(TokBuffer, "OFF"))
  198. X        RunDisabled |= RUN_SCRIPT;
  199. X     else return E_PARSE_ERR;
  200. X*** ../patch1/makefile.os2    Wed Dec 16 10:53:38 1992
  201. X--- ./makefile.os2    Mon Jan 25 15:39:23 1993
  202. X***************
  203. X*** 25,35 ****
  204. X  # YOU SHOULDN'T EDIT ANYTHING BELOW HERE.  You may want to change some things
  205. X  # in config.h; then, you should be able to type 'make'.
  206. X  #-----------------------------------------------------------------------------
  207. X! VERSION= 03.00.01
  208. X  
  209. X! HDRS= config.h err.h expr.h globals.h protos.h types.h version.h
  210. X  
  211. X! STDHDRS= config.h types.h protos.h globals.h err.h
  212. X  
  213. X  SRCS= calendar.c dorem.c dosubst.c expr.c files.c funcs.c globals.c init.c \
  214. X  main.c omit.c token.c trigger.c userfns.c utils.c var.c
  215. X--- 25,35 ----
  216. X  # YOU SHOULDN'T EDIT ANYTHING BELOW HERE.  You may want to change some things
  217. X  # in config.h; then, you should be able to type 'make'.
  218. X  #-----------------------------------------------------------------------------
  219. X! VERSION= 03.00.02
  220. X  
  221. X! HDRS= config.h err.h expr.h globals.h protos.h types.h version.h lang.h
  222. X  
  223. X! STDHDRS= config.h types.h protos.h globals.h err.h lang.h
  224. X  
  225. X  SRCS= calendar.c dorem.c dosubst.c expr.c files.c funcs.c globals.c init.c \
  226. X  main.c omit.c token.c trigger.c userfns.c utils.c var.c
  227. X***************
  228. X*** 37,43 ****
  229. X  MANIFEST= README.UNIX README.DOS COPYRIGHT $(HDRS) $(SRCS) Makefile rem rem.1 \
  230. X  remind.1 remind-all.csh remind-all.sh test.rem test-rem test.cmp makefile.tc \
  231. X  makefile.msc lnk.msc lnk.tc MANIFEST.UNX MANIFEST.DOS WHATSNEW.30 kall kall.1 \
  232. X! defs.rem README.OS2 makefile.os2 rem2ps.c rem2ps.h remind.def rem2ps.1
  233. X  
  234. X  OBJS= $(SRCS:.c=$O)
  235. X  
  236. X--- 37,44 ----
  237. X  MANIFEST= README.UNIX README.DOS COPYRIGHT $(HDRS) $(SRCS) Makefile rem rem.1 \
  238. X  remind.1 remind-all.csh remind-all.sh test.rem test-rem test.cmp makefile.tc \
  239. X  makefile.msc lnk.msc lnk.tc MANIFEST.UNX MANIFEST.DOS WHATSNEW.30 kall kall.1 \
  240. X! defs.rem README.OS2 makefile.os2 rem2ps.c rem2ps.h remind.def rem2ps.1 \
  241. X! lang.h english.h german.h tstlang.rem
  242. X  
  243. X  OBJS= $(SRCS:.c=$O)
  244. X  
  245. X***************
  246. X*** 45,51 ****
  247. X      copy remind.def rem2ps.def
  248. X      $(LINK) -o $@ $(LFLAGS) $<
  249. X  
  250. X! rem2ps.obj: rem2ps.c
  251. X      $(CC) -c $(CFLAGS) rem2ps.c
  252. X  
  253. X  remind.exe: $(OBJS) remind.def
  254. X--- 46,52 ----
  255. X      copy remind.def rem2ps.def
  256. X      $(LINK) -o $@ $(LFLAGS) $<
  257. X  
  258. X! rem2ps.obj: rem2ps.c rem2ps.h lang.h config.h
  259. X      $(CC) -c $(CFLAGS) rem2ps.c
  260. X  
  261. X  remind.exe: $(OBJS) remind.def
  262. X***************
  263. X*** 70,76 ****
  264. X  expr$O: expr.c $(STDHDRS) expr.h
  265. X  files$O: files.c $(STDHDRS)
  266. X  funcs$O: funcs.c $(STDHDRS) expr.h version.h
  267. X! globals$O: globals.c config.h types.h globals.h err.h
  268. X  init$O: init.c $(STDHDRS) expr.h version.h
  269. X  main$O: main.c $(STDHDRS) expr.h
  270. X  omit$O: omit.c $(STDHDRS)
  271. X--- 71,77 ----
  272. X  expr$O: expr.c $(STDHDRS) expr.h
  273. X  files$O: files.c $(STDHDRS)
  274. X  funcs$O: funcs.c $(STDHDRS) expr.h version.h
  275. X! globals$O: globals.c config.h types.h globals.h err.h lang.h
  276. X  init$O: init.c $(STDHDRS) expr.h version.h
  277. X  main$O: main.c $(STDHDRS) expr.h
  278. X  omit$O: omit.c $(STDHDRS)
  279. X*** ../patch1/makefile.tc    Wed Dec 16 10:51:51 1992
  280. X--- ./makefile.tc    Mon Jan 25 15:39:12 1993
  281. X***************
  282. X*** 1,10 ****
  283. X  # Makefile for REMIND for Turbo C for MSDOS
  284. X  
  285. X! VERSION= 03.00.01
  286. X  
  287. X! HDRS= config.h err.h expr.h globals.h protos.h types.h version.h
  288. X  
  289. X! STDHDRS= config.h types.h protos.h globals.h err.h
  290. X  
  291. X  SRCS= calendar.c dorem.c dosubst.c expr.c files.c funcs.c globals.c init.c \
  292. X  main.c omit.c token.c trigger.c userfns.c utils.c var.c
  293. X--- 1,10 ----
  294. X  # Makefile for REMIND for Turbo C for MSDOS
  295. X  
  296. X! VERSION= 03.00.02
  297. X  
  298. X! HDRS= config.h err.h expr.h globals.h protos.h types.h version.h lang.h
  299. X  
  300. X! STDHDRS= config.h types.h protos.h globals.h err.h lang.h
  301. X  
  302. X  SRCS= calendar.c dorem.c dosubst.c expr.c files.c funcs.c globals.c init.c \
  303. X  main.c omit.c token.c trigger.c userfns.c utils.c var.c
  304. X***************
  305. X*** 16,22 ****
  306. X  MANIFEST= readme.uni readme.dos copyrigh $(HDRS) $(SRCS) makefile rem rem.1 \
  307. X  remind.1 remind-a.csh remind-a.sh test.rem test-rem test.cmp makefile.tc \
  308. X  makefile.msc lnk.msc lnk.tc manifest.dos manifest.unx whatsnew.30 kall kall.1 \
  309. X! defs.rem readme.os2 makefile.os2 rem2ps.c rem2ps.h remind.def rem2ps.1
  310. X  
  311. X  all: remind.exe rem2ps.exe
  312. X  
  313. X--- 16,23 ----
  314. X  MANIFEST= readme.uni readme.dos copyrigh $(HDRS) $(SRCS) makefile rem rem.1 \
  315. X  remind.1 remind-a.csh remind-a.sh test.rem test-rem test.cmp makefile.tc \
  316. X  makefile.msc lnk.msc lnk.tc manifest.dos manifest.unx whatsnew.30 kall kall.1 \
  317. X! defs.rem readme.os2 makefile.os2 rem2ps.c rem2ps.h remind.def rem2ps.1 \
  318. X! lang.h english.h german.h tstlang.rem
  319. X  
  320. X  all: remind.exe rem2ps.exe
  321. X  
  322. X***************
  323. X*** 29,35 ****
  324. X  .c.obj:
  325. X      tcc -A -w-pia -c -O -ms {$< }
  326. X  
  327. X! rem2ps.obj: rem2ps.c rem2ps.h config.h
  328. X  
  329. X  calendar.obj: calendar.c $(STDHDRS) expr.h
  330. X  
  331. X--- 30,36 ----
  332. X  .c.obj:
  333. X      tcc -A -w-pia -c -O -ms {$< }
  334. X  
  335. X! rem2ps.obj: rem2ps.c rem2ps.h config.h lang.h
  336. X  
  337. X  calendar.obj: calendar.c $(STDHDRS) expr.h
  338. X  
  339. X***************
  340. X*** 43,49 ****
  341. X  
  342. X  funcs.obj: funcs.c $(STDHDRS) expr.h version.h
  343. X  
  344. X! globals.obj: globals.c config.h types.h globals.h err.h
  345. X  
  346. X  init.obj: init.c $(STDHDRS) expr.h version.h
  347. X  
  348. X--- 44,50 ----
  349. X  
  350. X  funcs.obj: funcs.c $(STDHDRS) expr.h version.h
  351. X  
  352. X! globals.obj: globals.c config.h types.h globals.h err.h lang.h
  353. X  
  354. X  init.obj: init.c $(STDHDRS) expr.h version.h
  355. X  
  356. X*** ../patch1/omit.c    Wed Dec 16 10:51:38 1992
  357. X--- ./omit.c    Fri Jan  8 13:24:53 1993
  358. X***************
  359. X*** 6,12 ****
  360. X  /*  the data structures for OMITted dates.                     */
  361. X  /*                                                             */
  362. X  /*  This file is part of REMIND.                               */
  363. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  364. X  /*                                                             */
  365. X  /***************************************************************/
  366. X  #include "config.h"
  367. X--- 6,12 ----
  368. X  /*  the data structures for OMITted dates.                     */
  369. X  /*                                                             */
  370. X  /*  This file is part of REMIND.                               */
  371. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  372. X  /*                                                             */
  373. X  /***************************************************************/
  374. X  #include "config.h"
  375. X*** ../patch1/protos.h    Wed Dec 16 10:51:26 1992
  376. X--- ./protos.h    Fri Jan  8 13:24:46 1993
  377. X***************
  378. X*** 5,11 ****
  379. X  /*  Function Prototypes.                                       */
  380. X  /*                                                             */
  381. X  /*  This file is part of REMIND.                               */
  382. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  383. X  /*                                                             */
  384. X  /***************************************************************/
  385. X  #ifdef HAVE_PROTOS
  386. X--- 5,11 ----
  387. X  /*  Function Prototypes.                                       */
  388. X  /*                                                             */
  389. X  /*  This file is part of REMIND.                               */
  390. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  391. X  /*                                                             */
  392. X  /***************************************************************/
  393. X  #ifdef HAVE_PROTOS
  394. X*** ../patch1/queue.c    Wed Dec 16 10:51:38 1992
  395. X--- ./queue.c    Fri Jan  8 13:24:41 1993
  396. X***************
  397. X*** 5,11 ****
  398. X  /*  Queue up reminders for subsequent execution.               */
  399. X  /*                                                             */
  400. X  /*  This file is part of REMIND.                               */
  401. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  402. X  /*                                                             */
  403. X  /***************************************************************/
  404. X  #include "config.h"
  405. X--- 5,11 ----
  406. X  /*  Queue up reminders for subsequent execution.               */
  407. X  /*                                                             */
  408. X  /*  This file is part of REMIND.                               */
  409. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  410. X  /*                                                             */
  411. X  /***************************************************************/
  412. X  #include "config.h"
  413. X*** ../patch1/rem2ps.1    Wed Dec 16 10:52:07 1992
  414. X--- ./rem2ps.1    Fri Jan 29 13:37:01 1993
  415. X***************
  416. X*** 1,4 ****
  417. X! .TH REM2PS 1 "25 November 1992"
  418. X  .UC4
  419. X  .SH NAME
  420. X  rem2ps \- draw a PostScript calendar from Remind output
  421. X--- 1,4 ----
  422. X! .TH REM2PS 1 "8 January 1993"
  423. X  .UC4
  424. X  .SH NAME
  425. X  rem2ps \- draw a PostScript calendar from Remind output
  426. X***************
  427. X*** 19,24 ****
  428. X--- 19,28 ----
  429. X  default, these small calendars are generated and placed on the main
  430. X  calendar.
  431. X  .TP
  432. X+ .B \-i
  433. X+ Use ISO 8859-1 standard encoding for the PostScript fonts.  If you do
  434. X+ not use this option, the default encoding is used.
  435. X+ .TP
  436. X  .B \-m media
  437. X  Set the page size.  You must specify the media type, which can be one of the
  438. X  following.  (Sizes are approximate.  For a list of media types, type
  439. X***************
  440. X*** 106,111 ****
  441. X--- 110,129 ----
  442. X  \fB\-t\fR \fIsize\fR
  443. X  Set the thickness of the black calendar grid lines.  The default is 1,
  444. X  for a line thickness of one point (1/72 in.)
  445. X+ .TP
  446. X+ \fB\-o\fR[\fBlrtb\fR] \fIsize\fR
  447. X+ Set the left, right, top, and/or bottom margins to \fIsize\fR points.
  448. X+ For this option only, \fIsize\fR must be an integer.  It represents the
  449. X+ margin size in units of 1/72 in.  The default margin sizes are 36, for
  450. X+ half-inch margins.  If you wish to punch holes in the calendar page to insert
  451. X+ it into a binder, you may wish to increase the left margin to one inch.
  452. X+ In that case, you should also decrease the heading font size to 12 points
  453. X+ for good output:
  454. X+ .PP
  455. X+ .nf
  456. X+     # This gives good results for putting into a binder
  457. X+     rem2ps -ol 72 -sh 12
  458. X+ .fi
  459. X  .SH USAGE
  460. X  To use \fBRem2ps\fR, you should pipe the output of \fBRemind\fR with the \fB\-p\fR
  461. X  option to \fBRem2ps\fR, and then send the result to a printer.  This is most easily
  462. X***************
  463. X*** 129,138 ****
  464. X  .SH AUTHOR
  465. X  David F. Skoll
  466. X  .SH BUGS
  467. X! All \fBRem2ps\fR options are case-sensitive, unlike \fBRemind\fR.  Any time you supply
  468. X  a font name or size, line thickness, or border width, it is treated as a
  469. X  string and sent straight to the PostScript interpreter.  Thus, if you
  470. X! supply invalid fonts or sizes, \fBRem2ps\fR will not complain, but the resulting
  471. X! PostScript output will probably not work.
  472. X  .SH SEE ALSO
  473. X  \fBRemind\fR
  474. X--- 147,161 ----
  475. X  .SH AUTHOR
  476. X  David F. Skoll
  477. X  .SH BUGS
  478. X! All \fBRem2ps\fR options are case-sensitive, unlike \fBRemind\fR.
  479. X! Any time you supply
  480. X  a font name or size, line thickness, or border width, it is treated as a
  481. X  string and sent straight to the PostScript interpreter.  Thus, if you
  482. X! supply invalid fonts or sizes, \fBRem2ps\fR will not complain, but the
  483. X! resulting PostScript output will probably not work.
  484. X! .PP
  485. X! You should ensure that the values you supply for margin widths are sensible.
  486. X! If they are too big for the media size, \fBRem2ps\fR will not complain,
  487. X! but again, the PostScript output will probably not work.
  488. X  .SH SEE ALSO
  489. X  \fBRemind\fR
  490. X*** ../patch1/rem2ps.c    Wed Dec 16 10:52:04 1992
  491. X--- ./rem2ps.c    Fri Jan 29 13:33:44 1993
  492. X***************
  493. X*** 5,14 ****
  494. X  /*  Print a PostScript calendar.                               */
  495. X  /*                                                             */
  496. X  /*  This file is part of REMIND.                               */
  497. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  498. X  /*                                                             */
  499. X  /***************************************************************/
  500. X  #include "config.h"
  501. X  #include <stdio.h>
  502. X  #include <string.h>
  503. X  #include <ctype.h>
  504. X--- 5,15 ----
  505. X  /*  Print a PostScript calendar.                               */
  506. X  /*                                                             */
  507. X  /*  This file is part of REMIND.                               */
  508. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  509. X  /*                                                             */
  510. X  /***************************************************************/
  511. X  #include "config.h"
  512. X+ #include "lang.h"
  513. X  #include <stdio.h>
  514. X  #include <string.h>
  515. X  #include <ctype.h>
  516. X***************
  517. X*** 40,46 ****
  518. X     int xsize, ysize;
  519. X  } PageType;
  520. X  
  521. X! char Days[]="SMTWTFS";
  522. X  
  523. X  PageType Pages[] =
  524. X  {
  525. X--- 41,47 ----
  526. X     int xsize, ysize;
  527. X  } PageType;
  528. X  
  529. X! char Days[]=L_DAYINIT;
  530. X  
  531. X  PageType Pages[] =
  532. X  {
  533. X***************
  534. X*** 66,71 ****
  535. X--- 67,73 ----
  536. X  PageType *CurPage;
  537. X  char PortraitMode;
  538. X  char NoSmallCal;
  539. X+ char UseISO;
  540. X  
  541. X  char LineBuffer[LINELEN];
  542. X  
  543. X***************
  544. X*** 87,92 ****
  545. X--- 89,96 ----
  546. X  int DayNum;
  547. X  int WkDayNum;
  548. X  
  549. X+ int LeftMarg, RightMarg, TopMarg, BotMarg;
  550. X+ 
  551. X  void Init ARGS ((int argc, char *argv[]));
  552. X  void Usage ARGS ((char *s));
  553. X  void DoPsCal ARGS ((void));
  554. X***************
  555. X*** 184,189 ****
  556. X--- 188,198 ----
  557. X     WkDayNum = wkday;
  558. X  
  559. X     while(1) {
  560. X+       if (feof(stdin)) {
  561. X+          fprintf(stderr, "Input from REMIND is corrupt!\n");
  562. X+      exit(1);
  563. X+       }
  564. X+      
  565. X        gets(LineBuffer);
  566. X        if (!strcmp(LineBuffer, PSEND)) break;
  567. X  
  568. X***************
  569. X*** 266,276 ****
  570. X--- 275,291 ----
  571. X     int i;
  572. X     int x = CurPage->xsize;
  573. X     int y = CurPage->ysize;
  574. X+    char *isostuff;
  575. X  
  576. X     if (!PortraitMode) {
  577. X        i = x; x = y; y = i;
  578. X     }
  579. X  
  580. X+    if (UseISO)
  581. X+       isostuff = "reencodeISO";
  582. X+    else
  583. X+       isostuff = "findfont definefont pop";
  584. X+ 
  585. X  /* Write the document structuring stuff */
  586. X     printf("%%!PS-Adobe-\n");
  587. X     printf("%%%%DocumentFonts: %s", HeadFont);
  588. X***************
  589. X*** 283,308 ****
  590. X     putchar('\n');
  591. X     printf("%%%%Creator: Rem2PS\n");
  592. X     printf("%%%%Pages: (atend)\n");
  593. X     printf("%%%%EndComments\n");
  594. X!    for (i=0; PSProlog[i]; i++) puts(PSProlog[i]);
  595. X!    printf("/HeadFont /%s def\n", HeadFont);
  596. X!    if (!NoSmallCal) printf("/SmallFont /%s def\n", SmallFont);
  597. X!    printf("/DayFont /%s def\n", DayFont);
  598. X!    printf("/EntryFont /%s def\n", EntryFont);
  599. X     printf("/HeadSize %s def\n", HeadSize);
  600. X     printf("/DaySize %s def\n", DaySize);
  601. X     printf("/EntrySize %s def\n", EntrySize);
  602. X     printf("/XSIZE %d def\n", CurPage->xsize);
  603. X!    printf("/MinX 36 def\n");
  604. X!    printf("/MinY 36 def\n");
  605. X!    printf("/MaxX %d def\n", x-36);
  606. X!    printf("/MaxY %d def\n", y-36);
  607. X     printf("/Border %s def\n", BorderSize);
  608. X     printf("%s setlinewidth\n", LineWidth);
  609. X  
  610. X  /* Check if smallfont is fixed pitch */
  611. X     if (!NoSmallCal) {
  612. X!       printf("SmallFont findfont /FontInfo get /isFixedPitch get\n");
  613. X  
  614. X  /* Define SmallString used to set smallfont size */
  615. X        printf("{/SmallString (WW ) def}\n");
  616. X--- 298,330 ----
  617. X     putchar('\n');
  618. X     printf("%%%%Creator: Rem2PS\n");
  619. X     printf("%%%%Pages: (atend)\n");
  620. X+    printf("%%%%Orientation: %s\n", PortraitMode ? "Portrait" : "Landscape");
  621. X     printf("%%%%EndComments\n");
  622. X! 
  623. X!    for (i=0; PSProlog1[i]; i++) puts(PSProlog1[i]);
  624. X!    printf("[(%s) (%s) (%s) (%s) (%s) (%s) (%s)]\n",
  625. X!       L_SUNDAY, L_MONDAY, L_TUESDAY, L_WEDNESDAY,
  626. X!       L_THURSDAY, L_FRIDAY, L_SATURDAY);
  627. X!    for (i=0; PSProlog2[i]; i++) puts(PSProlog2[i]);
  628. X! 
  629. X!    printf("/HeadFont /%s %s\n", HeadFont, isostuff);
  630. X!    if (!NoSmallCal) printf("/SmallFont /%s %s\n", SmallFont, isostuff);
  631. X!    printf("/DayFont /%s %s\n", DayFont, isostuff);
  632. X!    printf("/EntryFont /%s %s\n", EntryFont, isostuff);
  633. X     printf("/HeadSize %s def\n", HeadSize);
  634. X     printf("/DaySize %s def\n", DaySize);
  635. X     printf("/EntrySize %s def\n", EntrySize);
  636. X     printf("/XSIZE %d def\n", CurPage->xsize);
  637. X!    printf("/MinX %d def\n", LeftMarg);
  638. X!    printf("/MinY %d def\n", BotMarg);
  639. X!    printf("/MaxX %d def\n", x-RightMarg);
  640. X!    printf("/MaxY %d def\n", y-TopMarg);
  641. X     printf("/Border %s def\n", BorderSize);
  642. X     printf("%s setlinewidth\n", LineWidth);
  643. X  
  644. X  /* Check if smallfont is fixed pitch */
  645. X     if (!NoSmallCal) {
  646. X!       printf("/SmallFont findfont /FontInfo get /isFixedPitch get\n");
  647. X  
  648. X  /* Define SmallString used to set smallfont size */
  649. X        printf("{/SmallString (WW ) def}\n");
  650. X***************
  651. X*** 417,425 ****
  652. X--- 439,453 ----
  653. X     char *s, *t;
  654. X     int i=1;
  655. X     int j;
  656. X+    int offset;
  657. X  
  658. X     PortraitMode = 1;
  659. X     NoSmallCal = 0;
  660. X+    LeftMarg = 36;
  661. X+    RightMarg = 36;
  662. X+    TopMarg = 36;
  663. X+    BotMarg = 36;
  664. X+    UseISO = 0;
  665. X  
  666. X     CurPage = Pages;  /* Letter size by default */
  667. X  
  668. X***************
  669. X*** 476,481 ****
  670. X--- 504,525 ----
  671. X              }
  672. X          break;
  673. X  
  674. X+      case 'o':
  675. X+         if (i == argc) Usage("Offset must be supplied");
  676. X+         offset = atoi(argv[i++]);
  677. X+         if (offset < 36) offset = 36;
  678. X+         if (!*s) Usage("Offset must specify l, r, t or b");
  679. X+         while(*s) {
  680. X+            switch(*s++) {
  681. X+               case 'l': LeftMarg = offset; break;
  682. X+           case 'r': RightMarg = offset ; break;
  683. X+           case 't': TopMarg = offset; break;
  684. X+           case 'b': BotMarg = offset; break;
  685. X+           default: Usage("Offset must specify l, r, t or b");
  686. X+            }
  687. X+         }
  688. X+         break;
  689. X+ 
  690. X           case 'b':
  691. X          if (i == argc) Usage("Border must be supplied");
  692. X          BorderSize = argv[i++];
  693. X***************
  694. X*** 488,493 ****
  695. X--- 532,539 ----
  696. X  
  697. X       case 'l': PortraitMode = 0; break;
  698. X  
  699. X+      case 'i': UseISO = 1; break;
  700. X+ 
  701. X       case 'c': NoSmallCal = 1; break;
  702. X  
  703. X       default: Usage("Unrecognized option");
  704. X***************
  705. X*** 515,525 ****
  706. X--- 561,573 ----
  707. X     fprintf(stderr, "-l            Do calendar in landscape mode.\n");
  708. X     fprintf(stderr, "-c            Do NOT generate small calendars for previous\n");
  709. X     fprintf(stderr, "              and next month.\n");
  710. X+    fprintf(stderr, "-i            Use ISO 8859-1 encoding in PostScript output\n");
  711. X     fprintf(stderr, "-m media      Set page size (eg, Letter, Legal, A4.)  Case sensitive!\n");
  712. X     fprintf(stderr, "-f[shed] font Set font for small cal, hdr, cal entries and/or day numbers.\n");
  713. X     fprintf(stderr, "-s[hed] size  Set size for header, calendar entries and/or day numbers.\n");
  714. X     fprintf(stderr, "-b size       Set border size for calendar entries.\n");
  715. X     fprintf(stderr, "-t size       Set line thickness.\n");
  716. X+    fprintf(stderr, "-o[lrtb] marg Specify left, right, top and bottom margins.\n");
  717. X     exit(1);
  718. X  }
  719. X  
  720. X***************
  721. X*** 544,554 ****
  722. X     /* Figure out the font size */
  723. X  
  724. X     printf("/SmallFontSize MinBoxSize Border sub Border sub 8 div 2 sub def\n");
  725. X!    printf("SmallFont findfont setfont\n");
  726. X     printf("SmallString stringwidth pop /SmallWidth exch def\n");
  727. X     printf("SmallWidth 7 mul xincr Border sub Border sub exch div /tmp exch def\n");
  728. X     printf("tmp SmallFontSize lt {/SmallFontSize tmp def} if\n");
  729. X!    printf("SmallFont findfont SmallFontSize scalefont setfont\n");
  730. X  
  731. X     /* Recalculate SmallWidth */
  732. X     printf("SmallString stringwidth pop /SmallWidth exch def\n");
  733. X--- 592,602 ----
  734. X     /* Figure out the font size */
  735. X  
  736. X     printf("/SmallFontSize MinBoxSize Border sub Border sub 8 div 2 sub def\n");
  737. X!    printf("/SmallFont findfont setfont\n");
  738. X     printf("SmallString stringwidth pop /SmallWidth exch def\n");
  739. X     printf("SmallWidth 7 mul xincr Border sub Border sub exch div /tmp exch def\n");
  740. X     printf("tmp SmallFontSize lt {/SmallFontSize tmp def} if\n");
  741. X!    printf("/SmallFont findfont SmallFontSize scalefont setfont\n");
  742. X  
  743. X     /* Recalculate SmallWidth */
  744. X     printf("SmallString stringwidth pop /SmallWidth exch def\n");
  745. X*** ../patch1/rem2ps.h    Wed Dec 16 10:52:04 1992
  746. X--- ./rem2ps.h    Fri Jan 22 10:55:22 1993
  747. X***************
  748. X*** 5,16 ****
  749. X  /*  Define the PostScript prologue                             */
  750. X  /*                                                             */
  751. X  /*  This file is part of REMIND.                               */
  752. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  753. X  /*                                                             */
  754. X  /***************************************************************/
  755. X  
  756. X! char *PSProlog[] =
  757. X  {
  758. X     "% L - Draw a line",
  759. X     "/L {",
  760. X     "   newpath moveto lineto stroke",
  761. X--- 5,44 ----
  762. X  /*  Define the PostScript prologue                             */
  763. X  /*                                                             */
  764. X  /*  This file is part of REMIND.                               */
  765. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  766. X  /*                                                             */
  767. X  /***************************************************************/
  768. X  
  769. X! char *PSProlog1[] =
  770. X  {
  771. X+    "/ISOLatin1Encoding where { pop save true }{ false } ifelse",
  772. X+    "  /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus",
  773. X+    "    StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute",
  774. X+    "    /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring",
  775. X+    "    /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent",
  776. X+    "    /sterling /currency /yen /brokenbar /section /dieresis /copyright",
  777. X+    "    /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron",
  778. X+    "    /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph",
  779. X+    "    /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright",
  780. X+    "    /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute",
  781. X+    "    /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute",
  782. X+    "    /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth",
  783. X+    "    /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply",
  784. X+    "    /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn",
  785. X+    "    /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae",
  786. X+    "    /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute",
  787. X+    "    /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex",
  788. X+    "    /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex",
  789. X+    "    /udieresis /yacute /thorn /ydieresis ] def",
  790. X+    "{ restore } if",
  791. X+    "",
  792. X+    "/reencodeISO { %def",
  793. X+    "    findfont dup length dict begin",
  794. X+    "    { 1 index /FID ne { def }{ pop pop } ifelse } forall",
  795. X+    "    /Encoding ISOLatin1Encoding def",
  796. X+    "    currentdict end definefont pop",
  797. X+    "} bind def",
  798. X+    "",
  799. X     "% L - Draw a line",
  800. X     "/L {",
  801. X     "   newpath moveto lineto stroke",
  802. X***************
  803. X*** 30,36 ****
  804. X     "{",
  805. X     "   /monthyr exch def",
  806. X     "   ",
  807. X!    "   HeadFont findfont",
  808. X     "   HeadSize scalefont setfont   ",
  809. X     "   monthyr stringwidth",
  810. X     "   pop",
  811. X--- 58,64 ----
  812. X     "{",
  813. X     "   /monthyr exch def",
  814. X     "   ",
  815. X!    "   /HeadFont findfont",
  816. X     "   HeadSize scalefont setfont   ",
  817. X     "   monthyr stringwidth",
  818. X     "   pop",
  819. X***************
  820. X*** 43,49 ****
  821. X     "% Do the days of the week",
  822. X     "   MaxX MinX sub 7 div /xincr exch def",
  823. X     "   /x MinX def",
  824. X!    "  [(Sunday) (Monday) (Tuesday) (Wednesday) (Thursday) (Friday) (Saturday)]",
  825. X     "  {",
  826. X     "     HeadSize x y HeadSize 2 mul sub x xincr add y CenterText",
  827. X     "     x xincr add /x exch def",
  828. X--- 71,80 ----
  829. X     "% Do the days of the week",
  830. X     "   MaxX MinX sub 7 div /xincr exch def",
  831. X     "   /x MinX def",
  832. X!    NULL
  833. X! };
  834. X! char *PSProlog2[] =
  835. X! {
  836. X     "  {",
  837. X     "     HeadSize x y HeadSize 2 mul sub x xincr add y CenterText",
  838. X     "     x xincr add /x exch def",
  839. X***************
  840. X*** 151,162 ****
  841. X     "   /yt exch def",
  842. X     "   /border exch def",
  843. X     "% Do the day number",
  844. X!    "   DayFont findfont DaySize scalefont setfont",
  845. X     "   xl wid add border sub daynum stringwidth pop sub",
  846. X     "   yt border sub DaySize sub moveto daynum show",
  847. X     "% Do the text entries.  Precharge the stack with current y pos.",
  848. X     "   /ycur yt border sub DaySize sub DaySize sub 2 add def",
  849. X!    "   EntryFont findfont EntrySize scalefont setfont",
  850. X     "   ycur",
  851. X     "   textarr",
  852. X     "   { exch 2 sub /ycur exch def xl border add wid border sub border sub EntrySize 2 add neg",
  853. X--- 182,193 ----
  854. X     "   /yt exch def",
  855. X     "   /border exch def",
  856. X     "% Do the day number",
  857. X!    "   /DayFont findfont DaySize scalefont setfont",
  858. X     "   xl wid add border sub daynum stringwidth pop sub",
  859. X     "   yt border sub DaySize sub moveto daynum show",
  860. X     "% Do the text entries.  Precharge the stack with current y pos.",
  861. X     "   /ycur yt border sub DaySize sub DaySize sub 2 add def",
  862. X!    "   /EntryFont findfont EntrySize scalefont setfont",
  863. X     "   ycur",
  864. X     "   textarr",
  865. X     "   { exch 2 sub /ycur exch def xl border add wid border sub border sub EntrySize 2 add neg",
  866. X*** ../patch1/remind-all.csh    Wed Dec 16 10:51:49 1992
  867. X--- ./remind-all.csh    Mon Feb  1 15:48:16 1993
  868. X***************
  869. X*** 6,15 ****
  870. X  # On our system, we have the following in our crontab:
  871. X  # 05 5 * * * /usr/share/lib/remind/remind-all > /dev/null 2>&1
  872. X  
  873. X! # Also, you MUST use the -r and -q options on REMIND, otherwise SEVERE
  874. X! # security hole could develop.  I recommend making this script
  875. X! # readable and executable only by root to minimize security problems.
  876. X! # DO NOT make the script setuid!
  877. X  
  878. X  # The following line gets a list of users for systems using SUN's
  879. X  # NIS service:
  880. X--- 6,15 ----
  881. X  # On our system, we have the following in our crontab:
  882. X  # 05 5 * * * /usr/share/lib/remind/remind-all > /dev/null 2>&1
  883. X  
  884. X! # This script must be run by root.  The -u option MUST be supplied
  885. X! # to Remind, or a severe security hole will exist.  Note that Remind
  886. X! # must be compiled to support the -u option for this script to work.
  887. X! # Also, the -r and -q options must be used.
  888. X  
  889. X  # The following line gets a list of users for systems using SUN's
  890. X  # NIS service:
  891. X***************
  892. X*** 34,40 ****
  893. X  
  894. X  #     echo "$i has a .reminders file."     DEBUGGING PURPOSES ONLY
  895. X  
  896. X!       su - $i -c "$REMIND -rqh ~$i/.reminders" < /dev/null > $REMFILE
  897. X        if (! -z $REMFILE) then
  898. X  #        echo "Sending mail to $i"         DEBUGGING PURPOSES ONLY
  899. X  
  900. X--- 34,40 ----
  901. X  
  902. X  #     echo "$i has a .reminders file."     DEBUGGING PURPOSES ONLY
  903. X  
  904. X!       $REMIND -u$i -h -r -q ~$i/.reminders < /dev/null > $REMFILE
  905. X        if (! -z $REMFILE) then
  906. X  #        echo "Sending mail to $i"         DEBUGGING PURPOSES ONLY
  907. X  
  908. X*** ../patch1/remind-all.sh    Wed Dec 16 10:51:49 1992
  909. X--- ./remind-all.sh    Mon Feb  1 15:47:59 1993
  910. X***************
  911. X*** 6,15 ****
  912. X  # On our system, we have the following in our crontab:
  913. X  # 02 00 * * * /usr/local/adm/remind-all >/dev/null 2>&1
  914. X  
  915. X! # Also, you MUST use the -r and -q options on REMIND, otherwise a SEVERE
  916. X! # security hole could develop.  I recommend making this script
  917. X! # readable and executable only by root to minimize security problems.
  918. X! # DO NOT make the script setuid!
  919. X  
  920. X  # The following line gets a list of users for systems using SUN's
  921. X  # NIS service:
  922. X--- 6,15 ----
  923. X  # On our system, we have the following in our crontab:
  924. X  # 02 00 * * * /usr/local/adm/remind-all >/dev/null 2>&1
  925. X  
  926. X! # This script must be run by root.  The -u option MUST be supplied
  927. X! # to Remind, or a severe security hole will exist.  Note that Remind
  928. X! # must be compiled to support the -u option for this script to work.
  929. X! # Also, the -r and -q options must be used.
  930. X  
  931. X  # The following line gets a list of users for systems using SUN's
  932. X  # NIS service:
  933. X***************
  934. X*** 36,42 ****
  935. X  
  936. X  #     echo "$i has a .reminders file."     DEBUGGING PURPOSES ONLY
  937. X  
  938. X!       su - $i -c "$REMIND -rqh $HOME/.reminders" < /dev/null > $REMFILE
  939. X        if [ -s $REMFILE ]; then
  940. X  #        echo "Sending mail to $i"         DEBUGGING PURPOSES ONLY
  941. X           $MAIL -s "Reminders" $i < $REMFILE
  942. X--- 36,42 ----
  943. X  
  944. X  #     echo "$i has a .reminders file."     DEBUGGING PURPOSES ONLY
  945. X  
  946. X!       $REMIND -u$i -h -r -q $HOME/.reminders < /dev/null > $REMFILE
  947. X        if [ -s $REMFILE ]; then
  948. X  #        echo "Sending mail to $i"         DEBUGGING PURPOSES ONLY
  949. X           $MAIL -s "Reminders" $i < $REMFILE
  950. X*** ../patch1/remind.1    Wed Dec 16 10:51:48 1992
  951. X--- ./remind.1    Mon Feb  1 16:21:27 1993
  952. X***************
  953. X*** 1,5 ****
  954. X! .TH REMIND 1 "11 November 1992"
  955. X! .UC4
  956. X  .SH NAME
  957. X  remind \- a sophisticated reminder service
  958. X  .SH SYNOPSIS
  959. X--- 1,5 ----
  960. X! .TH REMIND 1 "22 January 1993"
  961. X! .UC 4
  962. X  .SH NAME
  963. X  remind \- a sophisticated reminder service
  964. X  .SH SYNOPSIS
  965. X***************
  966. X*** 27,36 ****
  967. X  default, a calendar for only the current month is produced.  If \fIn\fR
  968. X  starts with '+', then a calendar for \fIn\fR weeks is produced.
  969. X  .TP
  970. X! .B \-w\fR\fIn\fR
  971. X! The \fB\-w\fR option specifies the output width of the formatted calendar,
  972. X! in columns.  By default, the calendar is formatted for an 80-column
  973. X! device.
  974. X  .TP
  975. X  .B \-s\fR\fIn\fR
  976. X  The \fB\-s\fR option is very similar to the \fB\-c\fR option, except
  977. X--- 27,45 ----
  978. X  default, a calendar for only the current month is produced.  If \fIn\fR
  979. X  starts with '+', then a calendar for \fIn\fR weeks is produced.
  980. X  .TP
  981. X! .B \-w\fR\fIcol\fR[,\fIpad\fR[,\fIspc\fR]]]
  982. X! The \fB\-w\fR option specifies the output width, padding and spacing
  983. X! of the formatted calendar output.  \fICol\fR specifies the number of
  984. X! columns in the output device, and defaults to 80.  \fIPad\fR specifies
  985. X! how many lines to use to "pad" empty calendar boxes.  This defaults to
  986. X! 5.  If you have many reminders on certain days, which make your calendar
  987. X! too large to fit on a page, you can try reducing \fIpad\fR to make the
  988. X! empty boxes smaller.  \fISpc\fR specifies how many blank lines to leave
  989. X! between the day number and the first reminder entry.  It defaults to 1.
  990. X! .RS
  991. X! Any of \fIcol\fR, \fIpad\fR or \fIspc\fR can be omitted, providing you
  992. X! provide the correct number of commas.  Don't use any spaces in the option.
  993. X! .RE
  994. X  .TP
  995. X  .B \-s\fR\fIn\fR
  996. X  The \fB\-s\fR option is very similar to the \fB\-c\fR option, except
  997. X***************
  998. X*** 54,66 ****
  999. X  regardless of the \fIdelta\fR supplied for each reminder.
  1000. X  .TP
  1001. X  .B \-h
  1002. X! The \fB\-h\fR option ("hush...") supresses certain warning and information
  1003. X  messages.  In particular, if no reminders are triggered, this mode
  1004. X  produces no output.
  1005. X  .TP
  1006. X  .B \-a
  1007. X  The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger timed
  1008. X! reminders which would also be queued.
  1009. X  .TP
  1010. X  .B \-q
  1011. X  The \fB\-q\fR option causes \fBRemind\fR not to queue timed reminders
  1012. X--- 63,76 ----
  1013. X  regardless of the \fIdelta\fR supplied for each reminder.
  1014. X  .TP
  1015. X  .B \-h
  1016. X! The \fB\-h\fR option ("hush...") suppresses certain warning and information
  1017. X  messages.  In particular, if no reminders are triggered, this mode
  1018. X  produces no output.
  1019. X  .TP
  1020. X  .B \-a
  1021. X  The \fB\-a\fR option causes \fBRemind\fR not to immediately trigger timed
  1022. X! reminders which would also be queued.  It also causes \fBRemind\fR not to
  1023. X! place timed reminders in a calendar.
  1024. X  .TP
  1025. X  .B \-q
  1026. X  The \fB\-q\fR option causes \fBRemind\fR not to queue timed reminders
  1027. X***************
  1028. X*** 113,118 ****
  1029. X--- 123,136 ----
  1030. X  check if the reminder script has been changed.  \fIN\fR defaults
  1031. X  to 5, and can range from 5 to 60.  Note that the use of the
  1032. X  \fB\-z\fR option also enables the \fB\-f\fR option.
  1033. X+ .TP
  1034. X+ \fB\-u\fR\fIname\fR
  1035. X+ Runs \fBRemind\fR with the uid and gid of the user specified by \fIname\fR.
  1036. X+ The \fB\-u\fR option is available only to root, and cannot be used by normal
  1037. X+ users.  The option changes the uid and gid as described, and sets the
  1038. X+ environment variables HOME, SHELL and USER to the home directory, shell,
  1039. X+ and user name, respectively, of the specified user.  This option is meant for
  1040. X+ use in shell scripts which mail reminders to all users.
  1041. X  .PP
  1042. X  If you supply a \fIdate\fR on the command line, it must consist of
  1043. X  \fIday month year\fR, where \fIday\fR is the day of the month,
  1044. X***************
  1045. X*** 138,144 ****
  1046. X  .PP
  1047. X  .nf
  1048. X      REM [trigger(date(thisyear, 1, 1) + 180)] ++5 OMIT \\
  1049. X!     sat sun SKIP MSG [ord(thisyear-1980)] payment due %b!
  1050. X  .fi
  1051. X  .PP
  1052. X  A reminder file consists of commands, with one command per line.  Several
  1053. X--- 156,162 ----
  1054. X  .PP
  1055. X  .nf
  1056. X      REM [trigger(date(thisyear, 1, 1) + 180)] ++5 OMIT \\
  1057. X!     sat sun BEFORE MSG [ord(thisyear-1980)] payment due %b!
  1058. X  .fi
  1059. X  .PP
  1060. X  A reminder file consists of commands, with one command per line.  Several
  1061. X***************
  1062. X*** 194,200 ****
  1063. X  reminder also passes the \fIbody\fR through the substitution filter, but
  1064. X  then executes the result as a system command.  A \fBCAL\fR-type reminder
  1065. X  is used only to place entries in the calendar produced when \fBRemind\fR
  1066. X! is run with the \-c or \-s options.
  1067. X  .PP
  1068. X  .B DATE SPECIFICATIONS
  1069. X  .PP
  1070. X--- 212,218 ----
  1071. X  reminder also passes the \fIbody\fR through the substitution filter, but
  1072. X  then executes the result as a system command.  A \fBCAL\fR-type reminder
  1073. X  is used only to place entries in the calendar produced when \fBRemind\fR
  1074. X! is run with the \fB\-c\fR, \fB\-s\fR or \fB\-p\fR options.
  1075. X  .PP
  1076. X  .B DATE SPECIFICATIONS
  1077. X  .PP
  1078. X***************
  1079. X*** 858,866 ****
  1080. X  %"
  1081. X  (percent-doublequote) is removed.  This sequence is not 
  1082. X  used by the substitution filter,
  1083. X! but is used to tell \fBremind\fR which text to include in a calendar
  1084. X! entry when the \fB\-c\fR option is chosen.  See "Calendar
  1085. X! Mode"
  1086. X  .PP
  1087. X  Notes:
  1088. X  .TP
  1089. X--- 876,884 ----
  1090. X  %"
  1091. X  (percent-doublequote) is removed.  This sequence is not 
  1092. X  used by the substitution filter,
  1093. X! but is used to tell \fBRemind\fR which text to include in a calendar
  1094. X! entry when the \fB\-c\fR, \fB\-s\fR or \fB\-p\fR option is chosen.
  1095. X! See "Calendar Mode"
  1096. X  .PP
  1097. X  Notes:
  1098. X  .TP
  1099. X***************
  1100. X*** 897,903 ****
  1101. X  All other characters following a "%" sign are simply copied.  In particular,
  1102. X  to get a "%" sign out, use "%%" in the body.  To start the body of a reminder
  1103. X  with a space, use "% ", since
  1104. X! .B remind
  1105. X  normally scans for the first non-space character after a
  1106. X  .B MSG,
  1107. X  .B CAL
  1108. X--- 915,921 ----
  1109. X  All other characters following a "%" sign are simply copied.  In particular,
  1110. X  to get a "%" sign out, use "%%" in the body.  To start the body of a reminder
  1111. X  with a space, use "% ", since
  1112. X! .B Remind
  1113. X  normally scans for the first non-space character after a
  1114. X  .B MSG,
  1115. X  .B CAL
  1116. X***************
  1117. X*** 1017,1026 ****
  1118. X  this:  If you include the command \fBRUN OFF\fR in your top-level reminder
  1119. X  script, any reminder or expression which would normally execute a system
  1120. X  command is disabled.  \fBRUN ON\fR will re-enable the execution of
  1121. X! system commands.  Note that the \fBRUN\fR command can \fIonly\fR be used
  1122. X  in your top-level reminder script; it will \fInot\fR work in any files
  1123. X  accessed by the \fBINCLUDE\fR command.  This is to protect you from someone
  1124. X! placing a \fBRUN ON\fR command in an included file.
  1125. X  .PP
  1126. X  If you run \fBRemind\fR with the \fB\-r\fR command-line option,
  1127. X  \fBRUN\fR-type reminders and the \fBshell()\fR function will be disabled,
  1128. X--- 1035,1045 ----
  1129. X  this:  If you include the command \fBRUN OFF\fR in your top-level reminder
  1130. X  script, any reminder or expression which would normally execute a system
  1131. X  command is disabled.  \fBRUN ON\fR will re-enable the execution of
  1132. X! system commands.  Note that the \fBRUN ON\fR command can \fIonly\fR be used
  1133. X  in your top-level reminder script; it will \fInot\fR work in any files
  1134. X  accessed by the \fBINCLUDE\fR command.  This is to protect you from someone
  1135. X! placing a \fBRUN ON\fR command in an included file.  However, the
  1136. X! \fBRUN OFF\fR command can be used at top level or in an included file.
  1137. X  .PP
  1138. X  If you run \fBRemind\fR with the \fB\-r\fR command-line option,
  1139. X  \fBRUN\fR-type reminders and the \fBshell()\fR function will be disabled,
  1140. X***************
  1141. X*** 1154,1175 ****
  1142. X  .RE
  1143. X  .TP
  1144. X  .B DATE constants
  1145. X! \fBDATE\fR constants are expressed as 'yyyy/mm/dd', and the single
  1146. X  quotes \fImust\fR be supplied.  This distinguishes date constants
  1147. X! from division of integers.  Examples:
  1148. X  .PP
  1149. X  .RS
  1150. X! '1993/02/22', '1992/12/25', '1999/01/01'
  1151. X  .PP
  1152. X! Note that \fBDATE\fR constants are \fIprinted\fR as
  1153. X! \fIyyyy\fR/\fImm\fR/\fIdd\fR without the quotes.  Note also that versions
  1154. X  of \fBRemind\fR prior to 03.00.01 did not support date constants.  In those
  1155. X! versions, you must create dates using the \fBdate()\fR function.
  1156. X  .RE
  1157. X  .PP
  1158. X  .B OPERATORS
  1159. X  .PP
  1160. X! \fIRemind\fR has the following operators.  Operators on the same line
  1161. X  have equal precedence, while operators on lower lines have lower precedence
  1162. X  than those on higher lines.  The operators approximately correspond to
  1163. X  C operators.
  1164. X--- 1173,1199 ----
  1165. X  .RE
  1166. X  .TP
  1167. X  .B DATE constants
  1168. X! \fBDATE\fR constants are expressed as 'yyyy/mm/dd' or 'yyyy-mm-dd',
  1169. X! and the single
  1170. X  quotes \fImust\fR be supplied.  This distinguishes date constants
  1171. X! from division or subtraction of integers.  Examples:
  1172. X  .PP
  1173. X  .RS
  1174. X! \'1993/02/22', '1992-12-25', '1999/01/01'
  1175. X  .PP
  1176. X! Note that \fBDATE\fR constants are \fIprinted\fR
  1177. X! without the quotes.  Although either '-' or '/' is accepted as a date
  1178. X! separator on input, when dates are printed, only one will be used.  The
  1179. X! choice of whether to use '-' or '/' is made at compile-time.
  1180. X! Note also that versions
  1181. X  of \fBRemind\fR prior to 03.00.01 did not support date constants.  In those
  1182. X! versions, you must create dates using the \fBdate()\fR function.  Also,
  1183. X! versions prior to 03.00.02 did not support the '-' date separator.
  1184. X  .RE
  1185. X  .PP
  1186. X  .B OPERATORS
  1187. X  .PP
  1188. X! \fBRemind\fR has the following operators.  Operators on the same line
  1189. X  have equal precedence, while operators on lower lines have lower precedence
  1190. X  than those on higher lines.  The operators approximately correspond to
  1191. X  C operators.
  1192. X***************
  1193. X*** 1219,1225 ****
  1194. X  obtained by adding \fBINT\fR days to the original \fBDATE\fR.
  1195. X  .PP
  1196. X  \fBSTRING\fR + \fBSTRING\fR - returns a \fBSTRING\fR which is the
  1197. X! concatenation of the two orignal
  1198. X  \fBSTRING\fRs.
  1199. X  .PP
  1200. X  \fBSTRING\fR + anything or anything + \fBSTRING\fR -
  1201. X--- 1243,1249 ----
  1202. X  obtained by adding \fBINT\fR days to the original \fBDATE\fR.
  1203. X  .PP
  1204. X  \fBSTRING\fR + \fBSTRING\fR - returns a \fBSTRING\fR which is the
  1205. X! concatenation of the two original
  1206. X  \fBSTRING\fRs.
  1207. X  .PP
  1208. X  \fBSTRING\fR + anything or anything + \fBSTRING\fR -
  1209. X***************
  1210. X*** 1380,1389 ****
  1211. X--- 1404,1415 ----
  1212. X  Note that none of the arguments can be 0, unless there is only one
  1213. X  argument.  As a special case, \fBchar(0)\fR returns "".
  1214. X  .PP
  1215. X+ .RS
  1216. X  Note that because \fBRemind\fR does not support escaping of characters
  1217. X  in strings, the only way to get a double-quote in a string is to use
  1218. X  \fBchar(34)\fR.  Yes, I know it's not portable - it assumes ASCII
  1219. X  coding.
  1220. X+ .RE
  1221. X  .TP
  1222. X  .B choose(i_index, x_arg1 [,x_arg2...])
  1223. X  \fBChoose\fR must take at least two arguments, the first of which is
  1224. X***************
  1225. X*** 1503,1508 ****
  1226. X--- 1529,1542 ----
  1227. X  Returns 1 if \fIdate\fR is omitted, given the current global \fBOMIT\fR
  1228. X  context.  Returns 0 otherwise.
  1229. X  .TP
  1230. X+ .B language()
  1231. X+ Returns a \fBSTRING\fR naming the language supported by \fBRemind\fR.
  1232. X+ (See "Foreign Language Support.") By default, \fBRemind\fR is compiled
  1233. X+ to support English messages, so this function returns "English".  For
  1234. X+ other languages, this function will return the English name of the
  1235. X+ language (e.g. "German") Note that \fBlanguage()\fR is not available
  1236. X+ in versions of \fBRemind\fR prior to 03.00.02.
  1237. X+ .TP
  1238. X  .B lower(s_string)
  1239. X  Returns a \fBSTRING\fR with all upper-case characters in \fIstring\fR
  1240. X  converted to lower-case.
  1241. X***************
  1242. X*** 1629,1635 ****
  1243. X  .TP
  1244. X  .B version()
  1245. X  Returns a string specifying the version of \fBRemind\fR.  For version 
  1246. X! 03.00.01, returns "03.00.01".  It is guaranteed that as new versions of
  1247. X  \fBRemind\fR are released, the value returned by \fBversion()\fR will
  1248. X  strictly increase, according to the rules for string ordering.
  1249. X  .TP
  1250. X--- 1663,1669 ----
  1251. X  .TP
  1252. X  .B version()
  1253. X  Returns a string specifying the version of \fBRemind\fR.  For version 
  1254. X! 03.00.02, returns "03.00.02".  It is guaranteed that as new versions of
  1255. X  \fBRemind\fR are released, the value returned by \fBversion()\fR will
  1256. X  strictly increase, according to the rules for string ordering.
  1257. X  .TP
  1258. X***************
  1259. X*** 1776,1782 ****
  1260. X          INCLUDE /usr/share/remind/holidays
  1261. X      ENDIF
  1262. X  
  1263. X!     IF today() > date(1992, 2, 10)
  1264. X          set missed_ap "You missed it!"
  1265. X      ELSE
  1266. X          set missed_ap "Still have time..."
  1267. X--- 1810,1816 ----
  1268. X          INCLUDE /usr/share/remind/holidays
  1269. X      ENDIF
  1270. X  
  1271. X!     IF today() > '1992/2/10'
  1272. X          set missed_ap "You missed it!"
  1273. X      ELSE
  1274. X          set missed_ap "Still have time..."
  1275. X***************
  1276. X*** 2030,2035 ****
  1277. X--- 2064,2072 ----
  1278. X  in the calendar.  Reminders which trigger are saved in internal buffers,
  1279. X  and then inserted into the calendar in the appropriate places.
  1280. X  .PP
  1281. X+ If you also supply the \fB\-a\fR option, then \fBRemind\fR will not
  1282. X+ include timed reminders in the calendar.
  1283. X+ .PP
  1284. X  The \fB\-p\fR option is used in conjunction with the \fBrem2ps\fR
  1285. X  program to produce a calendar in PostScript format.  For example, the
  1286. X  following command will send PostScript code to standard output:
  1287. X***************
  1288. X*** 2095,2101 ****
  1289. X          set initialized 1
  1290. X          set me shell("whoami")
  1291. X          set hostname shell("hostname")
  1292. X!         fset func complex_expr()
  1293. X          preserve initialized me hostname
  1294. X      ENDIF
  1295. X  .fi
  1296. X--- 2132,2138 ----
  1297. X          set initialized 1
  1298. X          set me shell("whoami")
  1299. X          set hostname shell("hostname")
  1300. X!         fset func(x) complex_expr
  1301. X          preserve initialized me hostname
  1302. X      ENDIF
  1303. X  .fi
  1304. X***************
  1305. X*** 2139,2146 ****
  1306. X  .fi
  1307. X  .PP
  1308. X  If you use \fBsh\fR or \fBbash\fR, you may have to use the "nohup" command
  1309. X! to ensure that the daemon is not killed whn you log out.
  1310. X  .PP
  1311. X  .SH MISCELLANEOUS
  1312. X  .PP
  1313. X  .B COMMAND ABBREVIATIONS
  1314. X--- 2176,2198 ----
  1315. X  .fi
  1316. X  .PP
  1317. X  If you use \fBsh\fR or \fBbash\fR, you may have to use the "nohup" command
  1318. X! to ensure that the daemon is not killed when you log out.
  1319. X  .PP
  1320. X+ .SH FOREIGN LANGUAGE SUPPORT
  1321. X+ .PP
  1322. X+ Your version of \fBRemind\fR may have been compiled to support a
  1323. X+ language other than English.  This support is not complete - for
  1324. X+ example, all error and usage messages, as well as documentation, are
  1325. X+ still in English.  However, foreign-language versions of \fBRemind\fR
  1326. X+ will output names of months and weekdays in the foreign language.
  1327. X+ Also, the substitution mechanism may substitute constructs suitable
  1328. X+ for the foreign language rather than for English.
  1329. X+ .PP
  1330. X+ A foreign-language version of \fBRemind\fR will accept either the English
  1331. X+ or foreign-language names of weekdays and months in a reminder script.
  1332. X+ However, for compatibility between versions of \fBRemind\fR, you should
  1333. X+ use only the English names in your scripts.
  1334. X+ .PP
  1335. X  .SH MISCELLANEOUS
  1336. X  .PP
  1337. X  .B COMMAND ABBREVIATIONS
  1338. X***************
  1339. X*** 2195,2201 ****
  1340. X  .fi
  1341. X  .PP
  1342. X  This reminder will run at one minute to midnight.  It will cause a new
  1343. X! remind process to start at one minute past midnight.  This allows you to
  1344. X  have a continuous reminder service so you can work through the night and
  1345. X  still get timed reminders for early in the morning.  Note that this
  1346. X  trick is no longer necessary, providing you run \fBRemind\fR in
  1347. X--- 2247,2253 ----
  1348. X  .fi
  1349. X  .PP
  1350. X  This reminder will run at one minute to midnight.  It will cause a new
  1351. X! \fBRemind\fR process to start at one minute past midnight.  This allows you to
  1352. X  have a continuous reminder service so you can work through the night and
  1353. X  still get timed reminders for early in the morning.  Note that this
  1354. X  trick is no longer necessary, providing you run \fBRemind\fR in
  1355. X***************
  1356. X*** 2205,2211 ****
  1357. X      remind \-c12 /dev/null Jan 1993
  1358. X  .fi
  1359. X  .PP
  1360. X! This invocation of \fBremind\fR will cause it to print a calendar for
  1361. X  1993, with all entries left blank.
  1362. X  .PP
  1363. X  .nf
  1364. X--- 2257,2263 ----
  1365. X      remind \-c12 /dev/null Jan 1993
  1366. X  .fi
  1367. X  .PP
  1368. X! This invocation of \fBRemind\fR will cause it to print a calendar for
  1369. X  1993, with all entries left blank.
  1370. X  .PP
  1371. X  .nf
  1372. X*** ../patch1/test-rem    Wed Dec 16 10:51:51 1992
  1373. X--- ./test-rem    Fri Jan  8 13:31:17 1993
  1374. X***************
  1375. X*** 1,4 ****
  1376. X--- 1,15 ----
  1377. X  #!/bin/sh
  1378. X+ # ---------------------------------------------------------------------------
  1379. X+ # TEST-REM
  1380. X+ #
  1381. X+ # This file runs an acceptance test for Remind.  To use it, type:
  1382. X+ #      sh test-rem  OR make test
  1383. X+ # in the build directory.
  1384. X+ #
  1385. X+ # This file is part of REMIND.
  1386. X+ # Copyright (C) 1992, 1993 by David F. Skoll
  1387. X+ # ---------------------------------------------------------------------------
  1388. X+ 
  1389. X  TEST_GETENV="foo bar baz" ; export TEST_GETENV
  1390. X  ./remind -e -dxtev ./test.rem 16 feb 1991 > ./test.out
  1391. X  cmp -s ./test.out ./test.cmp
  1392. X*** ../patch1/test.cmp    Wed Dec 16 10:51:51 1992
  1393. X--- ./test.cmp    Wed Jan  6 18:57:29 1993
  1394. X***************
  1395. X*** 349,355 ****
  1396. X  "a05" + "6" => "a056"
  1397. X  value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
  1398. X  set a058 version()
  1399. X! version() => "03.00.01"
  1400. X  set a059 wkday(today())
  1401. X  today() => 1991/02/16
  1402. X  wkday(1991/02/16) => "Saturday"
  1403. X--- 349,355 ----
  1404. X  "a05" + "6" => "a056"
  1405. X  value("a056") => "SDFJHSDF KSJDFH KJSDFH KSJDFH"
  1406. X  set a058 version()
  1407. X! version() => "03.00.02"
  1408. X  set a059 wkday(today())
  1409. X  today() => 1991/02/16
  1410. X  wkday(1991/02/16) => "Saturday"
  1411. X***************
  1412. X*** 453,459 ****
  1413. X          a048  "foo"
  1414. X          a067  "INT"
  1415. X          a039  "February"
  1416. X!         a058  "03.00.01"
  1417. X          a049  21
  1418. X          a068  "STRING"
  1419. X          a059  "Saturday"
  1420. X--- 453,459 ----
  1421. X          a048  "foo"
  1422. X          a067  "INT"
  1423. X          a039  "February"
  1424. X!         a058  "03.00.02"
  1425. X          a049  21
  1426. X          a068  "STRING"
  1427. X          a059  "Saturday"
  1428. X*** ../patch1/token.c    Wed Dec 16 10:51:39 1992
  1429. X--- ./token.c    Thu Jan 21 16:45:40 1993
  1430. X***************
  1431. X*** 6,12 ****
  1432. X  /*  classifying the tokens parsed.                             */
  1433. X  /*                                                             */
  1434. X  /*  This file is part of REMIND.                               */
  1435. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1436. X  /*                                                             */
  1437. X  /***************************************************************/
  1438. X  #include "config.h"
  1439. X--- 6,12 ----
  1440. X  /*  classifying the tokens parsed.                             */
  1441. X  /*                                                             */
  1442. X  /*  This file is part of REMIND.                               */
  1443. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1444. X  /*                                                             */
  1445. X  /***************************************************************/
  1446. X  #include "config.h"
  1447. X***************
  1448. X*** 91,96 ****
  1449. X--- 91,123 ----
  1450. X     { "wednesday",    3,    T_WkDay,    2 }
  1451. X  };
  1452. X  
  1453. X+ /* If language != English, we must also search the following... */
  1454. X+ #if LANG != ENGLISH
  1455. X+ Token NonEnglishToks[] = {
  1456. X+    /* NAME          MINLEN      TYPE           VALUE */
  1457. X+ 
  1458. X+    { L_MONDAY,           3,       T_WkDay,        0 },
  1459. X+    { L_TUESDAY,           3,       T_WkDay,        1 },
  1460. X+    { L_WEDNESDAY,      3,       T_WkDay,        2 },
  1461. X+    { L_THURSDAY,       3,       T_WkDay,        3 },
  1462. X+    { L_FRIDAY,           3,       T_WkDay,        4 },
  1463. X+    { L_SATURDAY,       3,       T_WkDay,        5 },
  1464. X+    { L_SUNDAY,           3,       T_WkDay,        6 },
  1465. X+    { L_JAN,            3,       T_Month,        0 },
  1466. X+    { L_FEB,            3,       T_Month,        1 },
  1467. X+    { L_MAR,            3,       T_Month,        2 },
  1468. X+    { L_APR,            3,       T_Month,        3 },
  1469. X+    { L_MAY,            3,       T_Month,        4 },
  1470. X+    { L_JUN,            3,       T_Month,        5 },
  1471. X+    { L_JUL,            3,       T_Month,        6 },
  1472. X+    { L_AUG,            3,       T_Month,        7 },
  1473. X+    { L_SEP,            3,       T_Month,        8 },
  1474. X+    { L_OCT,            3,       T_Month,        9 },
  1475. X+    { L_NOV,            3,       T_Month,        10 },
  1476. X+    { L_DEC,            3,       T_Month,        11 }
  1477. X+ };
  1478. X+ #endif
  1479. X+ 
  1480. X  PRIVATE int TokStrCmp ARGS((const Token *t, const char *s));
  1481. X  
  1482. X  /***************************************************************/
  1483. X***************
  1484. X*** 177,182 ****
  1485. X--- 204,222 ----
  1486. X        }
  1487. X        if (r > 0) top = mid-1; else bot=mid+1;
  1488. X     }
  1489. X+ 
  1490. X+ /* If language is other than English, search the DayNames[] and MonthNames[]
  1491. X+    array. */
  1492. X+ #if LANG != ENGLISH
  1493. X+     for (r=0; r<(sizeof(NonEnglishToks) / sizeof(Token)); r++) {
  1494. X+        if (!TokStrCmp(&NonEnglishToks[r], s)) {
  1495. X+           tok->type = NonEnglishToks[r].type;
  1496. X+           tok->val = NonEnglishToks[r].val;
  1497. X+       return;
  1498. X+        }
  1499. X+     }
  1500. X+ #endif
  1501. X+  
  1502. X     return;
  1503. X  }
  1504. X  
  1505. X*** ../patch1/trigger.c    Wed Dec 16 10:51:40 1992
  1506. X--- ./trigger.c    Fri Jan  8 13:23:30 1993
  1507. X***************
  1508. X*** 5,11 ****
  1509. X  /*  Routines for figuring out the trigger date of a reminder   */
  1510. X  /*                                                             */
  1511. X  /*  This file is part of REMIND.                               */
  1512. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1513. X  /*                                                             */
  1514. X  /***************************************************************/
  1515. X  
  1516. X--- 5,11 ----
  1517. X  /*  Routines for figuring out the trigger date of a reminder   */
  1518. X  /*                                                             */
  1519. X  /*  This file is part of REMIND.                               */
  1520. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1521. X  /*                                                             */
  1522. X  /***************************************************************/
  1523. X  
  1524. X*** ../patch1/types.h    Wed Dec 16 10:51:26 1992
  1525. X--- ./types.h    Fri Jan  8 13:23:23 1993
  1526. X***************
  1527. X*** 5,11 ****
  1528. X  /*  Type definitions all dumped here.                          */
  1529. X  /*                                                             */
  1530. X  /*  This file is part of REMIND.                               */
  1531. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1532. X  /*                                                             */
  1533. X  /***************************************************************/
  1534. X  /* Values */
  1535. X--- 5,11 ----
  1536. X  /*  Type definitions all dumped here.                          */
  1537. X  /*                                                             */
  1538. X  /*  This file is part of REMIND.                               */
  1539. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1540. X  /*                                                             */
  1541. X  /***************************************************************/
  1542. X  /* Values */
  1543. X*** ../patch1/userfns.c    Wed Dec 16 10:51:41 1992
  1544. X--- ./userfns.c    Fri Jan  8 13:23:16 1993
  1545. X***************
  1546. X*** 6,12 ****
  1547. X  /*  functions.                                                 */
  1548. X  /*                                                             */
  1549. X  /*  This file is part of REMIND.                               */
  1550. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1551. X  /*                                                             */
  1552. X  /***************************************************************/
  1553. X  #include "config.h"
  1554. X--- 6,12 ----
  1555. X  /*  functions.                                                 */
  1556. X  /*                                                             */
  1557. X  /*  This file is part of REMIND.                               */
  1558. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1559. X  /*                                                             */
  1560. X  /***************************************************************/
  1561. X  #include "config.h"
  1562. X*** ../patch1/utils.c    Wed Dec 16 10:51:41 1992
  1563. X--- ./utils.c    Thu Jan 21 16:33:51 1993
  1564. X***************
  1565. X*** 5,11 ****
  1566. X  /*  Useful utility functions.                                  */
  1567. X  /*                                                             */
  1568. X  /*  This file is part of REMIND.                               */
  1569. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1570. X  /*                                                             */
  1571. X  /***************************************************************/
  1572. X  
  1573. X--- 5,11 ----
  1574. X  /*  Useful utility functions.                                  */
  1575. X  /*                                                             */
  1576. X  /*  This file is part of REMIND.                               */
  1577. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1578. X  /*                                                             */
  1579. X  /***************************************************************/
  1580. X  
  1581. X*** ../patch1/var.c    Wed Dec 16 10:51:42 1992
  1582. X--- ./var.c    Fri Jan  8 13:23:00 1993
  1583. X***************
  1584. X*** 6,12 ****
  1585. X  /*  user- and system-defined variables.                        */
  1586. X  /*                                                             */
  1587. X  /*  This file is part of REMIND.                               */
  1588. X! /*  Copyright (C) 1992 by David F. Skoll.                      */
  1589. X  /*                                                             */
  1590. X  /***************************************************************/
  1591. X  
  1592. X--- 6,12 ----
  1593. X  /*  user- and system-defined variables.                        */
  1594. X  /*                                                             */
  1595. X  /*  This file is part of REMIND.                               */
  1596. X! /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  1597. X  /*                                                             */
  1598. X  /***************************************************************/
  1599. X  
  1600. END_OF_FILE
  1601.   if test 54669 -ne `wc -c <'patch.02.B'`; then 
  1602.     echo shar: \"'patch.02.B'\" unpacked with wrong size!
  1603.   elif test -f 'patch.02.A'; then
  1604.     echo shar: Combining  \"'patch.02'\" \(113702 characters\)    
  1605.     cat 'patch.02.A' 'patch.02.B' > 'patch.02'
  1606.     if test 113702 -ne `wc -c <'patch.02'`; then
  1607.       echo shar: \"'patch.02'\" combined with wrong size!
  1608.     else
  1609.       rm patch.02.A patch.02.B 
  1610.     fi
  1611.   fi
  1612.   # end of 'patch.02.B' 
  1613. fi
  1614. echo shar: End of archive 1 \(of 3\).
  1615. cp /dev/null ark1isdone
  1616. MISSING=""
  1617. for I in 1 2 3 ; do
  1618.     if test ! -f ark${I}isdone ; then
  1619.     MISSING="${MISSING} ${I}"
  1620.     fi
  1621. done
  1622. if test "${MISSING}" = "" ; then
  1623.     echo You have unpacked all 3 archives.
  1624.     rm -f ark[1-9]isdone
  1625. else
  1626.     echo You still must unpack the following archives:
  1627.     echo "        " ${MISSING}
  1628. fi
  1629. exit 0
  1630. exit 0 # Just in case...
  1631.