home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume17 / remind / patch01 < prev    next >
Internet Message Format  |  1991-03-09  |  40KB

  1. From: dfs@doe.carleton.ca (David F. Skoll)
  2. Newsgroups: comp.sources.misc
  3. Subject: v17i033:  remind - A replacement for calendar, Patch01
  4. Message-ID: <1991Mar8.170056.26188@sparky.IMD.Sterling.COM>
  5. Date: 8 Mar 91 17:00:56 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: 54a204be 05cf7e83 7e90311b bdb80af0
  8.  
  9. Submitted-by: David F. Skoll <dfs@doe.carleton.ca>
  10. Posting-number: Volume 17, Issue 33
  11. Archive-name: remind/patch01
  12. Patch-To: remind: Volume 17, Issue 3-6
  13.  
  14. This is the Official Patch 01 for Remind 2.3.  Here's the excerpt from
  15. WHATSNEW.23:
  16.  
  17. * Version 2.3 Patch 1 - Added the "-t" command-line option to get Remind
  18. to trigger all non-expired reminders.
  19.  
  20. Added Turbo C support courtesy of Rhys Weatherly
  21.  
  22. Added the "RUN ON" and "RUN OFF" commands for a secure interface with
  23. the Elm mail system.
  24.  
  25. Added the "rem" shell script for running Remind with a default script.
  26.  
  27. Added manual pages for "kall" and "rem".
  28.  
  29. --
  30. David F. Skoll
  31.  
  32. ------------- Cut Here ---------- Cut Here ---------- Cut Here -------------
  33. #!/bin/sh
  34. # This is Remind-2.3-Official-Patch-01, a shell archive (shar 3.32)
  35. # made 03/07/1991 20:58 UTC by dfs@scotty
  36. #
  37. # existing files will NOT be overwritten
  38. #
  39. # This shar contains:
  40. # length  mode       name
  41. # ------ ---------- ------------------------------------------
  42. #  27677 -rw------- patch.01
  43. #    679 -rw------- kall.1
  44. #    851 -rw------- makefile.tc
  45. #    102 -rw------- patchlevel.h
  46. #    850 -rwx------ rem
  47. #    772 -rw------- rem.1
  48. #    129 -rw------- remind.rsp
  49. #   1640 -rw------- turboc.c
  50. #    759 -rw------- turboc.h
  51. #
  52. if touch 2>&1 | fgrep 'amc' > /dev/null
  53.  then TOUCH=touch
  54.  else TOUCH=true
  55. fi
  56. # ============= patch.01 ==============
  57. if test X"$1" != X"-c" -a -f 'patch.01'; then
  58.     echo "File already exists: skipping 'patch.01'"
  59. else
  60. echo "x - extracting patch.01 (Text)"
  61. sed 's/^X//' << 'SHAR_EOF' > patch.01 &&
  62. XThis is Remind-2.3-Official-Patch-01
  63. X
  64. XThis patch adds support for the -t option and the RUN command.
  65. XIt modifies README files and man pages to reflect the new commands,
  66. Xas well as the added Turbo C support.  It also adds acknowledgements to
  67. Xthe COPYRIGHT file.
  68. X
  69. X*** ../old/COPYRIGHT    Mon Feb 18 13:05:16 1991
  70. X--- ./COPYRIGHT    Mon Feb 25 17:05:00 1991
  71. X***************
  72. X*** 4,10 ****
  73. X  REMIND package.
  74. X  
  75. X  REMIND is Copyright (C) 1990, 1991 by David Skoll, except for the file
  76. X! remind-all.sh, which is Copyright (C) 1990 by Bill Aten.
  77. X  
  78. X  You may use REMIND for free, and may freely distribute it, providing
  79. X  you do not charge the recipients to whom you distribute REMIND.
  80. X--- 4,11 ----
  81. X  REMIND package.
  82. X  
  83. X  REMIND is Copyright (C) 1990, 1991 by David Skoll, except for the file
  84. X! remind-all.sh, which is Copyright (C) 1990 by Bill Aten, and the Turbo C
  85. X! support, which is Copyright (C) 1991 by Rhys Weatherly.
  86. X  
  87. X  You may use REMIND for free, and may freely distribute it, providing
  88. X  you do not charge the recipients to whom you distribute REMIND.
  89. X***************
  90. X*** 21,25 ****
  91. X  I will attempt to support REMIND as much as possible.  However, you use
  92. X  it at your own risk.  I am not responsible for any damages caused by
  93. X  the use or misuse of REMIND.
  94. X  --
  95. X! David F. Skoll
  96. X--- 22,65 ----
  97. X  I will attempt to support REMIND as much as possible.  However, you use
  98. X  it at your own risk.  I am not responsible for any damages caused by
  99. X  the use or misuse of REMIND.
  100. X+ 
  101. X+ If you wish to contribute ideas or money to help the production of
  102. X+ software like REMIND, you can reply to the address shown at the end of
  103. X+ this file.  Note that you are under no obligation to send me money.
  104. X+ If you don't donate, you have full rights to use REMIND just as if you
  105. X+ had donated.  If you do donate, you get a big thank-you, but no
  106. X+ special rights.  However, you will have helped support the production
  107. X+ of software like REMIND.  Should you wish to donate, the suggested
  108. X+ amount is $18.00 (Canadian)
  109. X+ 
  110. X+ ACKNOWLEDGEMENTS:
  111. X+ 
  112. X+ I would like to thank the following people:
  113. X+ 
  114. X+ Bill Aten <netagw!bill@uunet.UU.NET> for providing remind-all.sh
  115. X+ 
  116. X+ Bradley D. Keister <keister@poincare.phys.cmu.edu>, Rhys Weatherly
  117. X+ <rhys@batserver.cs.uq.OZ.AU> and Anthony Cheng for providing the Turbo
  118. X+ C compiler support
  119. X+ 
  120. X+ Bill Silvert <bill%biomel@cs.dal.ca> and Dennis Cottel
  121. X+ <dennis@peanuts.nosc.mil> for suggesting many of the new features in
  122. X+ REMIND.
  123. X+ 
  124. X+ Timo Salmi, Keith Petersen, Bill Davidsen and Kent Landfield for maintaining
  125. X+ the uwasa and SIMTEL archives, and comp.binaries.ibm.pc and comp.sources.misc
  126. X+ in the face of a flurry of updates to REMIND.
  127. X+ 
  128. X+ All others who have corresponded with me to report bugs, express appreciation
  129. X+ or suggest features - too many people to list here.
  130. X+ 
  131. X+ Finally, all those who donated money to support the production of
  132. X+ REMIND.  Your donations were gratefully appreciated.
  133. X  --
  134. X! David F. Skoll <dfs@doe.carleton.ca>
  135. X! 4-317 LeBreton Street South
  136. X! Ottawa, Ontario K1S 4L4
  137. X! CANADA
  138. X! 
  139. X! Tel. (613) 567-3662
  140. X! 
  141. X*** ../old/Makefile    Mon Feb 18 13:05:16 1991
  142. X--- ./Makefile    Tue Feb 26 14:37:07 1991
  143. X***************
  144. X*** 1,4 ****
  145. X! # Makefile for REMIND - simple file
  146. X  
  147. X  #--------------- BEGINNING OF THINGS YOU CAN CHANGE --------------
  148. X  
  149. X--- 1,4 ----
  150. X! # Makefile for REMIND
  151. X  
  152. X  #--------------- BEGINNING OF THINGS YOU CAN CHANGE --------------
  153. X  
  154. X***************
  155. X*** 20,30 ****
  156. X  
  157. X  #Where do you want it installed?
  158. X  BINDIR= /usr/local/bin
  159. X! KALLDIR= /usr/share/bin
  160. X  MANDIR= /usr/share/man
  161. X  MANSECTION= 1
  162. X  
  163. X! #What program does the installation?
  164. X  INSTALL= install
  165. X  #INSTALL= cp
  166. X  
  167. X--- 20,36 ----
  168. X  
  169. X  #Where do you want it installed?
  170. X  BINDIR= /usr/local/bin
  171. X! 
  172. X! # If you have a special directory for shell scripts, install them
  173. X! # there.  Otherwise, make SCRIPTDIR the same as BINDIR
  174. X! SCRIPTDIR= /usr/share/bin
  175. X! 
  176. X! # This should be the top-level MAN directory
  177. X  MANDIR= /usr/share/man
  178. X  MANSECTION= 1
  179. X  
  180. X! # What program does the installation?  If you don't have 'install', use
  181. X! # 'cp' instead.
  182. X  INSTALL= install
  183. X  #INSTALL= cp
  184. X  
  185. X***************
  186. X*** 58,67 ****
  187. X  
  188. X  install:
  189. X      $(INSTALL) remind $(BINDIR)
  190. X  
  191. X  install.man:
  192. X      $(INSTALL) remind.1 $(MANDIR)/man$(MANSECTION)/remind.$(MANSECTION)
  193. X! 
  194. X! install.kall:
  195. X!     $(INSTALL) kall $(KALLDIR)
  196. X  
  197. X--- 64,74 ----
  198. X  
  199. X  install:
  200. X      $(INSTALL) remind $(BINDIR)
  201. X+     $(INSTALL) kall $(SCRIPTDIR)
  202. X+     $(INSTALL) rem $(SCRIPTDIR)
  203. X  
  204. X  install.man:
  205. X      $(INSTALL) remind.1 $(MANDIR)/man$(MANSECTION)/remind.$(MANSECTION)
  206. X!     $(INSTALL) rem.1 $(MANDIR)/man$(MANSECTION)/rem.$(MANSECTION)
  207. X!     $(INSTALL) kall.1 $(MANDIR)/man$(MANSECTION)/kall.$(MANSECTION)
  208. X  
  209. X*** ../old/README.DOS    Mon Feb 18 13:05:16 1991
  210. X--- ./README.DOS    Mon Feb 25 17:09:21 1991
  211. X***************
  212. X*** 4,10 ****
  213. X  
  214. X  REMIND was originally written for MS-DOS.  To compile it, you need the
  215. X  Microsoft C compiler (at least version 5.1) and the Microsoft MAKE
  216. X! utility.
  217. X  
  218. X  Before compiling the software, check if it includes patches.  These are
  219. X  files called patch.xx.  If there are patches, apply them all by typing
  220. X--- 4,12 ----
  221. X  
  222. X  REMIND was originally written for MS-DOS.  To compile it, you need the
  223. X  Microsoft C compiler (at least version 5.1) and the Microsoft MAKE
  224. X! utility.  Alternatively, you can use the Turbo C compiler.  The Turbo
  225. X! C support was supplied by Rhys Weatherly; as I do not have access to a
  226. X! Turbo C compiler, I cannot test it.
  227. X  
  228. X  Before compiling the software, check if it includes patches.  These are
  229. X  files called patch.xx.  If there are patches, apply them all by typing
  230. X***************
  231. X*** 14,21 ****
  232. X  on a Unix machine.  Then copy the software to your MS-DOS machine.
  233. X  
  234. X  To compile the software, simply go to the source directory and type:
  235. X  
  236. X! MAKE REMIND.MAK
  237. X  
  238. X  The file test.rem contains test reminders for verifying that REMIND's
  239. X  date calculation routines are working correctly.  The file test.out
  240. X--- 16,25 ----
  241. X  on a Unix machine.  Then copy the software to your MS-DOS machine.
  242. X  
  243. X  To compile the software, simply go to the source directory and type:
  244. X+ MAKE REMIND.MAK if you are using the Microsoft C compiler.
  245. X  
  246. X! If you are using the Turbo C compiler, rename the "MAKEFILE.TC" file
  247. X! to MAKEFILE (throw out the Unix Makefile) and type MAKE.
  248. X  
  249. X  The file test.rem contains test reminders for verifying that REMIND's
  250. X  date calculation routines are working correctly.  The file test.out
  251. X*** ../old/README.UNIX    Mon Feb 18 13:05:16 1991
  252. X--- ./README.UNIX    Tue Feb 26 14:38:52 1991
  253. X***************
  254. X*** 27,41 ****
  255. X  
  256. X  Once remind has been compiled, install it in your favourite system
  257. X  directory.  Type "make install" to install the executable, and "make
  258. X! install.man" to install the manpage.  If you want to install the "kall"
  259. X! script, type "make install.kall"
  260. X  
  261. X  Two shell scripts, "remind-all.csh" and "remind-all.sh" are provided.
  262. X  These allow automatic mailing of reminders to all users who create a
  263. X  $HOME/.reminders file.  These two scripts are equivalent; one is a
  264. X  "sh" script and the other is a "csh" script.  Pick the one you want to
  265. X  use, and follow the instructions in the opening comments of the
  266. X! script.
  267. X  
  268. X  A shell script called "kall" is provided which kills processes
  269. X  specified by command name rather than process ID.  You may have to
  270. X--- 27,44 ----
  271. X  
  272. X  Once remind has been compiled, install it in your favourite system
  273. X  directory.  Type "make install" to install the executable, and "make
  274. X! install.man" to install the manpage.  You may wish to edit the
  275. X! 'install:' and 'install.man:' targets of the Makefile in case you do
  276. X! not wish to install the shell scripts.
  277. X  
  278. X+ 
  279. X  Two shell scripts, "remind-all.csh" and "remind-all.sh" are provided.
  280. X  These allow automatic mailing of reminders to all users who create a
  281. X  $HOME/.reminders file.  These two scripts are equivalent; one is a
  282. X  "sh" script and the other is a "csh" script.  Pick the one you want to
  283. X  use, and follow the instructions in the opening comments of the
  284. X! script.  Neither of these scripts will be installed automatically; you
  285. X! must copy them by hand to the desired destination.
  286. X  
  287. X  A shell script called "kall" is provided which kills processes
  288. X  specified by command name rather than process ID.  You may have to
  289. X***************
  290. X*** 46,51 ****
  291. X--- 49,59 ----
  292. X  with 2.2 - the new version requires an exact match of command name,
  293. X  not just a command name which contains the specified
  294. X  string.
  295. X+ 
  296. X+ A shell script called "rem" is provided for those who like to have
  297. X+ 'remind' assume a default reminders file.  A man page for this script
  298. X+ is provided.  You should examine the script to ensure that the defaults
  299. X+ are correct.
  300. X  
  301. X  --
  302. X  David F. Skoll <dfs@doe.carleton.ca>
  303. X*** ../old/WHATSNEW.23    Mon Feb 18 13:05:16 1991
  304. X--- ./WHATSNEW.23    Thu Mar  7 15:24:35 1991
  305. X***************
  306. X*** 1,24 ****
  307. X  A BRIEF HISTORY OF REMIND:
  308. X  
  309. X! Version 1.0 - never publicly released.
  310. X  
  311. X! Version 2.0 - first public release.  Included advanced date specifications,
  312. X  character substitution, and the RUN keyword.
  313. X  
  314. X! Version 2.1 - Added the "repeat" token for repeating reminders with a period
  315. X  other than 7 days.  Also fixed some bugs from version 2.0
  316. X  
  317. X! Version 2.2 - Added the AT keyword, the timed reminders daemon, and the
  318. X  calendar facility.
  319. X  
  320. X! Version 2.2 - Patch 3  - Added the MSG or RUN tokens in an OMIT command; also
  321. X  allowed RUN-type reminders to be explicitly included in the calendar by
  322. X  using the %" escape sequence.
  323. X  
  324. X! Version 2.2 - Patch 5 - Added the BEFORE, AFTER and SKIP tokens to make the
  325. X  handling of holidays more sensible.  Also corrected a few more bugs.
  326. X  
  327. X! Version 2.3 - Added the UNTIL keyword for forcing reminders to expire.
  328. X  
  329. X  Added the "++" form of 'back' and the "--" form of 'delta' for
  330. X  ignoring OMIT information.
  331. X--- 1,24 ----
  332. X  A BRIEF HISTORY OF REMIND:
  333. X  
  334. X! * Version 1.0 - never publicly released.
  335. X  
  336. X! * Version 2.0 - first public release.  Included advanced date specifications,
  337. X  character substitution, and the RUN keyword.
  338. X  
  339. X! * Version 2.1 - Added the "repeat" token for repeating reminders with a period
  340. X  other than 7 days.  Also fixed some bugs from version 2.0
  341. X  
  342. X! * Version 2.2 - Added the AT keyword, the timed reminders daemon, and the
  343. X  calendar facility.
  344. X  
  345. X! * Version 2.2 - Patch 3  - Added the MSG or RUN tokens in an OMIT command; also
  346. X  allowed RUN-type reminders to be explicitly included in the calendar by
  347. X  using the %" escape sequence.
  348. X  
  349. X! * Version 2.2 - Patch 5 - Added the BEFORE, AFTER and SKIP tokens to make the
  350. X  handling of holidays more sensible.  Also corrected a few more bugs.
  351. X  
  352. X! * Version 2.3 - Added the UNTIL keyword for forcing reminders to expire.
  353. X  
  354. X  Added the "++" form of 'back' and the "--" form of 'delta' for
  355. X  ignoring OMIT information.
  356. X***************
  357. X*** 38,40 ****
  358. X--- 38,51 ----
  359. X  Modified the calendar and SimpleCalendar formats so that the % escape
  360. X  substitutions ARE performed.
  361. X  
  362. X+ * Version 2.3 Patch 1 - Added the "-t" command-line option to get Remind
  363. X+ to trigger all non-expired reminders.
  364. X+ 
  365. X+ Added Turbo C support courtesy of Rhys Weatherly
  366. X+ 
  367. X+ Added the "RUN ON" and "RUN OFF" commands for a secure interface with
  368. X+ the Elm mail system.
  369. X+ 
  370. X+ Added the "rem" shell script for running Remind with a default script.
  371. X+ 
  372. X+ Added manual pages for "kall" and "rem".
  373. X*** ../old/defines.h    Mon Feb 18 13:05:17 1991
  374. X--- ./defines.h    Thu Mar  7 14:33:22 1991
  375. X***************
  376. X*** 16,21 ****
  377. X--- 16,23 ----
  378. X  #define FOMITSIZE 150
  379. X  #define POMITSIZE 75
  380. X  
  381. X+ /* Size of buffer for reminder file lines */
  382. X+ #define BUFFER_SIZE 512
  383. X  /* Useful macros */
  384. X  
  385. X  #define upper(c) ( ((c) >= 'a' && (c) <= 'z') ? ((c)-32) : (c) )
  386. X***************
  387. X*** 38,44 ****
  388. X  enum Token_t { Unknown_t, Year_t, Month_t, Day_t, WkDay_t, Msg_t, Run_t,
  389. X             Omit_t, Banner_t, Rem_t, Delta_t, Back_t, Once_t, Include_t,
  390. X                 Repeat_t, At_t, Time_t, Skip_t, Until_t, Push_t, Pop_t,
  391. X!            Clear_t, Eol_t };
  392. X  
  393. X  /* Define the Token structure */
  394. X  
  395. X--- 40,46 ----
  396. X  enum Token_t { Unknown_t, Year_t, Month_t, Day_t, WkDay_t, Msg_t, Run_t,
  397. X             Omit_t, Banner_t, Rem_t, Delta_t, Back_t, Once_t, Include_t,
  398. X                 Repeat_t, At_t, Time_t, Skip_t, Until_t, Push_t, Pop_t,
  399. X!            Clear_t, OnOff_t, Eol_t };
  400. X  
  401. X  /* Define the Token structure */
  402. X  
  403. X***************
  404. X*** 62,64 ****
  405. X--- 64,69 ----
  406. X  } AtEntry;
  407. X  #endif
  408. X  
  409. X+ #ifdef __TURBOC__
  410. X+ #include "turbo.h"
  411. X+ #endif
  412. X*** ../old/dorem.c    Mon Feb 18 13:05:17 1991
  413. X--- ./dorem.c    Thu Mar  7 15:16:29 1991
  414. X***************
  415. X*** 319,328 ****
  416. X     }
  417. X         
  418. X     /* Figure out if the reminder should be triggered */
  419. X  
  420. X-    trigger = MoveBack(jul, delta, omit);
  421. X- 
  422. X     if(Debug) {
  423. X        Eprint("%sTrigger date: %s, %d %s, %d.\n", 
  424. X                (trigger <= JulianToday ? "*" : ""), DayName[jul % 7], 
  425. X            d2, MonthName[m2], y2);
  426. X--- 319,333 ----
  427. X     }
  428. X         
  429. X     /* Figure out if the reminder should be triggered */
  430. X+    /* If the -t command-line option was supplied, trigger the reminder. */
  431. X+    if (InfiniteDelta) trigger = 0;
  432. X+    else trigger = MoveBack(jul, delta, omit);
  433. X  
  434. X     if(Debug) {
  435. X+ /* Check for potentially dangerous RUN-type reminders if Debug is on */
  436. X+       if (tok.type == Run_t && (IgRun & 2))
  437. X+          Eprint("Warning: RUN-type reminder after RUN OFF command.\n");
  438. X+        
  439. X        Eprint("%sTrigger date: %s, %d %s, %d.\n", 
  440. X                (trigger <= JulianToday ? "*" : ""), DayName[jul % 7], 
  441. X            d2, MonthName[m2], y2);
  442. X***************
  443. X*** 332,338 ****
  444. X  
  445. X     while (isspace(**s)) (*s)++;
  446. X  
  447. X!    if (trigger <= JulianToday && !(tok.type == Run_t && IgRun)) { 
  448. X        /* Trigger a reminder */
  449. X  #ifdef UNIX
  450. X        if (QueueAts && (jul == JulianToday) && (tim != -1)) {
  451. X--- 337,344 ----
  452. X  
  453. X     while (isspace(**s)) (*s)++;
  454. X  
  455. X!    if (trigger <= JulianToday
  456. X!         && !(tok.type == Run_t && IgRun)) { 
  457. X        /* Trigger a reminder */
  458. X  #ifdef UNIX
  459. X        if (QueueAts && (jul == JulianToday) && (tim != -1)) {
  460. X*** ../old/files.c    Mon Feb 18 13:05:18 1991
  461. X--- ./files.c    Mon Feb 25 17:01:30 1991
  462. X***************
  463. X*** 262,268 ****
  464. X     Fresh = 1;
  465. X     while (!done) {
  466. X        CurLine++;
  467. X!       if (fgets(Line, 512, fp) == NULL) {
  468. X           if (ferror(fp)) Eprint("Error reading %s\n", FileName);
  469. X       if (PopFile()) return 1;
  470. X        } else {
  471. X--- 262,268 ----
  472. X     Fresh = 1;
  473. X     while (!done) {
  474. X        CurLine++;
  475. X!       if (fgets(Line, BUFFER_SIZE, fp) == NULL) {
  476. X           if (ferror(fp)) Eprint("Error reading %s\n", FileName);
  477. X       if (PopFile()) return 1;
  478. X        } else {
  479. X***************
  480. X*** 273,281 ****
  481. X              len--;
  482. X           }
  483. X           done = 1;
  484. X!          while(*Line && (*(Line + len-1) == '\\') && len<512) {
  485. X           *(Line + len-1) = '\n';
  486. X!             if (fgets(Line+len, 512-len,fp) == NULL) {
  487. X                 *(Line + len) = 0;
  488. X               break;
  489. X          }
  490. X--- 273,281 ----
  491. X              len--;
  492. X           }
  493. X           done = 1;
  494. X!          while(*Line && (*(Line + len-1) == '\\') && len<BUFFER_SIZE) {
  495. X           *(Line + len-1) = '\n';
  496. X!             if (fgets(Line+len, BUFFER_SIZE-len,fp) == NULL) {
  497. X                 *(Line + len) = 0;
  498. X               break;
  499. X          }
  500. X*** ../old/globals.h    Mon Feb 18 13:05:18 1991
  501. X--- ./globals.h    Thu Mar  7 15:13:58 1991
  502. X***************
  503. X*** 23,28 ****
  504. X--- 23,29 ----
  505. X  extern char  Debug;
  506. X  extern char  Verbose;
  507. X  extern char  Next;
  508. X+ extern char  InfiniteDelta;
  509. X  extern char  FileName[];
  510. X  extern int   CurLine;
  511. X  extern int   NumEmitted;
  512. X*** ../old/init.c    Mon Feb 18 13:05:18 1991
  513. X--- ./init.c    Thu Mar  7 15:42:28 1991
  514. X***************
  515. X*** 7,13 ****
  516. X  #include "globals.h"
  517. X  #include "protos.h"
  518. X  
  519. X! #define PATCHLEVEL 0
  520. X  
  521. X  static char DPMsg[] = "Debug and Purge options conflict - Purge chosen.\n";
  522. X  static char DPCMsg[] = "Calendar overrides Debug and Purge options.\n";
  523. X--- 7,13 ----
  524. X  #include "globals.h"
  525. X  #include "protos.h"
  526. X  
  527. X! #include "patchlevel.h"
  528. X  
  529. X  static char DPMsg[] = "Debug and Purge options conflict - Purge chosen.\n";
  530. X  static char DPCMsg[] = "Calendar overrides Debug and Purge options.\n";
  531. X***************
  532. X*** 46,58 ****
  533. X     QueueAts = 1;
  534. X     CalWidth = 10;
  535. X     SimpleCalendar = 0;
  536. X  
  537. X     if(argc == 1) {
  538. X!      fprintf(stderr, "\nREMIND 2.3 Patch Level %d (C) 1990, 1991 by David Skoll.\n\n", PATCHLEVEL);
  539. X  #ifdef UNIX
  540. X!      fprintf(stderr, "Usage: remind [-n | -d | -p | -c# [-w# | -s]] [-voraq] filename [date]\n\n");
  541. X  #else
  542. X!      fprintf(stderr, "Usage: remind [-n | -d | -p | -c# [-w# | -s]] [-vor] filename [date]\n\n");
  543. X  #endif
  544. X       fprintf(stderr, "-n   Output next occurrence of reminders in simple format\n");
  545. X       fprintf(stderr, "-d   Debug reminder file\n-p   Purge reminder file\n");
  546. X--- 46,61 ----
  547. X     QueueAts = 1;
  548. X     CalWidth = 10;
  549. X     SimpleCalendar = 0;
  550. X+    InfiniteDelta = 0;
  551. X  
  552. X     if(argc == 1) {
  553. X!      fprintf(stderr,
  554. X!         "\nREMIND %d.%d Patch Level %d (C) 1990, 1991 by David Skoll.\n\n", 
  555. X!            VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL);
  556. X  #ifdef UNIX
  557. X!      fprintf(stderr, "Usage: remind [-n | -d | -p | -c# [-w# | -s]] [-voraqt] filename [date]\n\n");
  558. X  #else
  559. X!      fprintf(stderr, "Usage: remind [-n | -d | -p | -c# [-w# | -s]] [-vort] filename [date]\n\n");
  560. X  #endif
  561. X       fprintf(stderr, "-n   Output next occurrence of reminders in simple format\n");
  562. X       fprintf(stderr, "-d   Debug reminder file\n-p   Purge reminder file\n");
  563. X***************
  564. X*** 63,70 ****
  565. X       fprintf(stderr, "-r   Ignore RUN directives\n");
  566. X  #ifdef UNIX
  567. X       fprintf(stderr, "-a   Do not trigger current AT reminders in foreground\n");
  568. X!      fprintf(stderr, "-q   Do not queue current AT reminders\n\n");
  569. X  #endif
  570. X       exit(1);
  571. X     }
  572. X  
  573. X--- 66,74 ----
  574. X       fprintf(stderr, "-r   Ignore RUN directives\n");
  575. X  #ifdef UNIX
  576. X       fprintf(stderr, "-a   Do not trigger current AT reminders in foreground\n");
  577. X!      fprintf(stderr, "-q   Do not queue current AT reminders\n");
  578. X  #endif
  579. X+      fprintf(stderr, "-t   Trigger all non-expired reminders regardless of delta\n\n");
  580. X       exit(1);
  581. X     }
  582. X  
  583. X***************
  584. X*** 143,148 ****
  585. X--- 147,154 ----
  586. X          case 'O': IgOnce = 1; break;
  587. X  
  588. X          case 'R': IgRun = 1; break;
  589. X+ 
  590. X+         case 'T': InfiniteDelta = 1; break;
  591. X  #ifdef UNIX
  592. X          case 'A': PrintAts = 0; break;
  593. X  
  594. X*** ../old/kall    Mon Feb 18 13:05:18 1991
  595. X--- ./kall    Mon Feb 25 11:50:30 1991
  596. X***************
  597. X*** 25,31 ****
  598. X  
  599. X  # NOTE:  You may have to modify the next line, since PS is non-portable.
  600. X  # The 'awk' command picks out the process IDs to pass them on to kill.
  601. X!     rprocs=`ps -cx | awk '{if(prog == $5) print $1}' prog=$1 -`
  602. X      if [ "$rprocs" != "" ]; then
  603. X          msg="1"
  604. X          echo -n "${me}: Sending $signal signal to $1 process(es)"
  605. X--- 25,31 ----
  606. X  
  607. X  # NOTE:  You may have to modify the next line, since PS is non-portable.
  608. X  # The 'awk' command picks out the process IDs to pass them on to kill.
  609. X!     rprocs=`ps cx | awk '{if(prog == $5) print $1}' prog=$1 -`
  610. X      if [ "$rprocs" != "" ]; then
  611. X          msg="1"
  612. X          echo -n "${me}: Sending $signal signal to $1 process(es)"
  613. X*** ../old/main.c    Mon Feb 18 13:05:18 1991
  614. X--- ./main.c    Thu Mar  7 15:37:14 1991
  615. X***************
  616. X*** 64,70 ****
  617. X--- 64,72 ----
  618. X     { "MSG",       Msg_t,    0, 3 },
  619. X     { "November",  Month_t,  10, 3 },
  620. X     { "October",   Month_t,  9, 3 },
  621. X+    { "OFF",       OnOff_t,  0, 3},
  622. X     { "OMIT",      Omit_t,   0, 3 },
  623. X+    { "ON",        OnOff_t,  1, 2 },
  624. X     { "ONCE",      Once_t,   0, 3 },
  625. X     { "POP-OMIT-CONTEXT", Pop_t, 0, 3},
  626. X     { "PUSH-OMIT-CONTEXT", Push_t, 0, 3 },
  627. X***************
  628. X*** 99,110 ****
  629. X  int PartOmitArray[POMITSIZE];
  630. X  
  631. X  /* Define the working buffers */
  632. X! char Line[512], WorkBuf[512];
  633. X! char TmpBuf[512];
  634. X  char Fresh;  /* True if the contents of Line are fresh */
  635. X  
  636. X  /* Global variables */
  637. X! char Purge, Debug, Verbose, IgRun, IgOnce, Next;
  638. X  int LastRun;
  639. X  char FileName[200];
  640. X  int CurLine;
  641. X--- 101,112 ----
  642. X  int PartOmitArray[POMITSIZE];
  643. X  
  644. X  /* Define the working buffers */
  645. X! char Line[BUFFER_SIZE], WorkBuf[BUFFER_SIZE];
  646. X! char TmpBuf[BUFFER_SIZE];
  647. X  char Fresh;  /* True if the contents of Line are fresh */
  648. X  
  649. X  /* Global variables */
  650. X! char Purge, Debug, Verbose, IgRun, IgOnce, Next, InfiniteDelta;
  651. X  int LastRun;
  652. X  char FileName[200];
  653. X  int CurLine;
  654. X***************
  655. X*** 234,239 ****
  656. X--- 236,245 ----
  657. X                DoInclude(&s);
  658. X                break;
  659. X  
  660. X+       case Run_t:    DoRun(&s);
  661. X+                      if (Purge && TopLevel()) Output(Line);
  662. X+                      break;
  663. X+ 
  664. X        default:       if (Purge && TopLevel()) Output(Line);
  665. X               Eprint("Unknown command '%s'\n", tok.str);
  666. X     }
  667. X***************
  668. X*** 341,346 ****
  669. X--- 347,353 ----
  670. X        else if (d > 0 && d <= DaysInMonth(m, y)) return 0; else return 1;
  671. X  }
  672. X  
  673. X+ #ifndef __TURBOC__
  674. X  /***************************************************************/
  675. X  /*                                                             */
  676. X  /*  int strncmpi(char *s1, char*s1, int n)                     */
  677. X***************
  678. X*** 371,376 ****
  679. X--- 378,386 ----
  680. X     return 0;
  681. X  }
  682. X  
  683. X+ #endif
  684. X+ /* __TURBOC__*/
  685. X+ 
  686. X  /***************************************************************/
  687. X  /*                                                             */
  688. X  /*  ParseToken(char **s);                                      */
  689. X***************
  690. X*** 707,710 ****
  691. X--- 717,752 ----
  692. X     _dos_gettime(&tloc);
  693. X     return (long) tloc.hour * 3600L + (long) tloc.minute * 60L + (long) tloc.second;
  694. X  #endif
  695. X+ }
  696. X+ 
  697. X+ /***************************************************************/
  698. X+ /*                                                             */
  699. X+ /* DoRun - handle the RUN ON or RUN OFF command.               */
  700. X+ /*                                                             */
  701. X+ /***************************************************************/
  702. X+ #ifdef __STDC__
  703. X+ void DoRun(char **s)
  704. X+ #else
  705. X+ void DoRun(s)
  706. X+ char **s;
  707. X+ #endif
  708. X+ {
  709. X+    Token tok;
  710. X+ 
  711. X+    tok = ParseToken(s);
  712. X+ 
  713. X+    if (tok.type != OnOff_t) {
  714. X+       Eprint("RUN must be followed by ON or OFF.\n");
  715. X+       return;
  716. X+    }
  717. X+ 
  718. X+    if (!TopLevel()) {
  719. X+       Eprint("RUN command not valid within INCLUDE file.\n");
  720. X+       return;
  721. X+    }
  722. X+ 
  723. X+    if (tok.val) IgRun &= (~2);
  724. X+    else         IgRun |= 2;
  725. X+ 
  726. X+    return;
  727. X  }
  728. X*** ../old/protos.h    Mon Feb 18 13:05:19 1991
  729. X--- ./protos.h    Thu Mar  7 14:50:59 1991
  730. X***************
  731. X*** 10,15 ****
  732. X--- 10,16 ----
  733. X  int   DoGlobalOmit(char **s);
  734. X  void  DoInclude   (char **s);
  735. X  int   DoRem       (char **s);
  736. X+ void  DoRun       (char **s);
  737. X  int   DoSubst     (char *src, char *dst, int d, int m, int y, int jul, enum Token_t t, int tim, int mode);
  738. X  int   FindTodaysDate(int *d, int *m, int *y);
  739. X  void  FreeStackedOmits (void);
  740. X***************
  741. X*** 45,50 ****
  742. X--- 46,52 ----
  743. X  int   DoGlobalOmit();
  744. X  void  DoInclude   ();
  745. X  int   DoRem       ();
  746. X+ void  DoRun       ();
  747. X  int   DoSubst     ();
  748. X  int   FindTodaysDate();
  749. X  void  FreeStackedOmits();
  750. X*** ../old/remind.1    Mon Feb 18 13:05:20 1991
  751. X--- ./remind.1    Thu Mar  7 15:52:55 1991
  752. X***************
  753. X*** 1,4 ****
  754. X! .TH REMIND 1 "18 February 1991"
  755. X  .UC 4
  756. X  .SH NAME
  757. X  remind \- a sophisticated reminder service
  758. X--- 1,4 ----
  759. X! .TH REMIND 1 "7 March 1991"
  760. X  .UC 4
  761. X  .SH NAME
  762. X  remind \- a sophisticated reminder service
  763. X***************
  764. X*** 5,11 ****
  765. X  .SH SYNOPSIS
  766. X  .B remind
  767. X  [\fB\-n | \fB\-d\fR | \fB\-p\fR | \fB\-c\fR\fIn\fR [\fB\-w\fR\fIn\fR | \fB\-s\fR]]
  768. X! [\fB\-voraq\fR]
  769. X  .I filename
  770. X  [\fIdate\fR]
  771. X  .SH DESCRIPTION
  772. X--- 5,11 ----
  773. X  .SH SYNOPSIS
  774. X  .B remind
  775. X  [\fB\-n | \fB\-d\fR | \fB\-p\fR | \fB\-c\fR\fIn\fR [\fB\-w\fR\fIn\fR | \fB\-s\fR]]
  776. X! [\fB\-voraqt\fR]
  777. X  .I filename
  778. X  [\fIdate\fR]
  779. X  .SH DESCRIPTION
  780. X***************
  781. X*** 126,131 ****
  782. X--- 126,139 ----
  783. X  reminders for triggering later in the day.  This prevents
  784. X  .B remind
  785. X  from running as a daemon and popping up reminders as they are triggered.
  786. X+ .TP
  787. X+ .B \-t
  788. X+ The
  789. X+ .B \-t
  790. X+ flag causes \fBremind\fR to trigger all reminders which have not expired.
  791. X+ In effect, this causes reminders to be treated as if they have an
  792. X+ infinite value of "delta"; ie, they are triggered no matter how far in the
  793. X+ future they are.
  794. X  .PP
  795. X  If you supply a
  796. X  .I date
  797. X***************
  798. X*** 1306,1311 ****
  799. X--- 1314,1360 ----
  800. X  or
  801. X  .I RUN
  802. X  token.
  803. X+ .SH THE RUN COMMAND
  804. X+ The \fIRUN\fR command comes in two flavours:
  805. X+ .PP
  806. X+ .nf
  807. X+     RUN OFF
  808. X+     RUN ON
  809. X+ .fi
  810. X+ .PP
  811. X+ The \fIRUN OFF\fR command disables the \fIRUN\fR-type reminders from
  812. X+ being triggered.  This is similar to the \fB\-r\fR flag on the command
  813. X+ line.  The \fIRUN ON\fR command re-enables the \fIRUN\fR-type reminders.
  814. X+ Note that if you supply the \fB\-r\fR flag on the command line,
  815. X+ \fIRUN\fR-type reminders are disabled regardless of any \fIRUN\fR commands
  816. X+ in your reminder file.
  817. X+ .PP
  818. X+ The purpose of the \fIRUN\fR command is to provide a secure interface
  819. X+ between \fBRemind\fR and the \fBElm\fR mail system.  The \fBElm\fR
  820. X+ system can automatically scan incoming mail for reminder or calendar
  821. X+ entries, and place them in your calendar file.  To use this feature,
  822. X+ you should set the calendar filename option under \fBElm\fR to be something
  823. X+ like "~/.reminders.in", \fInot\fB your main reminder file!  (The reason will
  824. X+ become clear.)
  825. X+ .PP
  826. X+ Then, you can use the \fBElm\fR \fIscan message for calendar entries\fR
  827. X+ command to place reminders prefaced by "->" into .reminders.in.  In
  828. X+ your main .reminders file, include the following lines:
  829. X+ .PP
  830. X+ .nf
  831. X+     RUN OFF   # Disable RUN
  832. X+     INCLUDE .reminders.in
  833. X+     RUN ON    # Re-enable RUN
  834. X+ .fi
  835. X+ .PP
  836. X+ The \fIRUN OFF\fR command disables \fIRUN\fR-type reminders.  This ensures
  837. X+ that if any malicious person mails you a potentially destructive reminder,
  838. X+ it will not be processed.  Furthermore, if the person places a \fIRUN ON\fR
  839. X+ command in the mail, it will not execute, since the \fIRUN\fR command can
  840. X+ only be executed from the topmost file, and not from an INCLUDEd file.
  841. X+ This is the reason for placing incoming reminders into an INCLUDEd file rather
  842. X+ than the main file.  If you run REMIND with debugging on, it will warn you
  843. X+ of \fIRUN\fR-type reminders placed after a \fIRUN OFF\fR command.
  844. X  .SH PRODUCING A CALENDAR
  845. X  If you provide the \fB\-c\fR option, the \fBremind\fR will scan your
  846. X  reminder file and produce a calendar with your reminders entered on the
  847. X***************
  848. X*** 1335,1341 ****
  849. X  calendar.
  850. X  If you indicate empty text for the calendar entry
  851. X  with the sequence \fB%"%"\fR, then the reminder is ignored when producing
  852. X! the calendar, whether is is a \fIMSG\fR or \fIRUN\fR type.
  853. X  .PP
  854. X  If your reminder file has errors in it, when you produce a calendar, you
  855. X  will get many error messages apparently coming from the file "*cache*"
  856. X--- 1384,1390 ----
  857. X  calendar.
  858. X  If you indicate empty text for the calendar entry
  859. X  with the sequence \fB%"%"\fR, then the reminder is ignored when producing
  860. X! the calendar, whether it is a \fIMSG\fR or \fIRUN\fR type.
  861. X  .PP
  862. X  If your reminder file has errors in it, when you produce a calendar, you
  863. X  will get many error messages apparently coming from the file "*cache*"
  864. X***************
  865. X*** 1496,1498 ****
  866. X--- 1545,1549 ----
  867. X  has some built-in limits on total line length (511 characters),
  868. X  the length of an expanded \fIREM\fR body (511 characters), the number
  869. X  of global \fIOMIT\fRs, etc.
  870. X+ .SH SEE ALSO
  871. X+ kall, rem, elm
  872. X*** ../old/remind.mak    Mon Feb 18 13:05:20 1991
  873. X--- ./remind.mak    Thu Mar  7 14:45:41 1991
  874. X***************
  875. X*** 14,20 ****
  876. X  dorem.obj: dorem.c $(HEADERS)
  877. X     cl $(WARN) /AS /Fodorem.obj /c dorem.c
  878. X  
  879. X! init.obj: init.c $(HEADERS)
  880. X     cl $(WARN) /AS /Foinit.obj /c init.c
  881. X  
  882. X  dosubst.obj: dosubst.c
  883. X--- 14,20 ----
  884. X  dorem.obj: dorem.c $(HEADERS)
  885. X     cl $(WARN) /AS /Fodorem.obj /c dorem.c
  886. X  
  887. X! init.obj: init.c $(HEADERS) patchlevel.h
  888. X     cl $(WARN) /AS /Foinit.obj /c init.c
  889. X  
  890. X  dosubst.obj: dosubst.c
  891. SHAR_EOF
  892. $TOUCH -am 0307155991 patch.01 &&
  893. chmod 0600 patch.01 ||
  894. echo "restore of patch.01 failed"
  895. set `wc -c patch.01`;Wc_c=$1
  896. if test "$Wc_c" != "27677"; then
  897.     echo original size 27677, current size $Wc_c
  898. fi
  899. fi
  900. # ============= kall.1 ==============
  901. if test X"$1" != X"-c" -a -f 'kall.1'; then
  902.     echo "File already exists: skipping 'kall.1'"
  903. else
  904. echo "x - extracting kall.1 (Text)"
  905. sed 's/^X//' << 'SHAR_EOF' > kall.1 &&
  906. X.TH KALL 1 "26 February 1991"
  907. X.UC 4
  908. X.SH NAME
  909. Xkall \- kill processes by command name
  910. X.SH SYNOPSIS
  911. X.B kall
  912. X[\-\fIsignal\fR] prog1 [prog2...]
  913. X.SH DESCRIPTION
  914. X.B Kall
  915. Xsends the specified \fIsignal\fR (defaults to \fB-TERM\fR) to all processes
  916. Xwhose command name is specified on the command line.  For example:
  917. X.PP
  918. X.nf
  919. X    kall -HUP remind foobar
  920. X.fi
  921. X.PP
  922. Xsends a \fBHUP\fR signal to all \fIremind\fR and \fIfoobar\fR programs.
  923. XNote that \fBkall\fR sends signals only to those processes owned by the
  924. Xuser invoking \fBkall\fR.
  925. X.SH AUTHOR
  926. XDavid F. Skoll
  927. X.SH BUGS
  928. X.B Kall
  929. Xis a sh(1) script and depends on the behaviour of ps(1); thus, it is
  930. Xnot especially portable.
  931. X.SH SEE ALSO
  932. Xremind, rem
  933. SHAR_EOF
  934. $TOUCH -am 0226144491 kall.1 &&
  935. chmod 0600 kall.1 ||
  936. echo "restore of kall.1 failed"
  937. set `wc -c kall.1`;Wc_c=$1
  938. if test "$Wc_c" != "679"; then
  939.     echo original size 679, current size $Wc_c
  940. fi
  941. fi
  942. # ============= makefile.tc ==============
  943. if test X"$1" != X"-c" -a -f 'makefile.tc'; then
  944.     echo "File already exists: skipping 'makefile.tc'"
  945. else
  946. echo "x - extracting makefile.tc (Text)"
  947. sed 's/^X//' << 'SHAR_EOF' > makefile.tc &&
  948. X# Makefile.tc - Makefile for REMIND for Turbo C
  949. X
  950. X#--------------- BEGINNING OF THINGS YOU CAN CHANGE --------------
  951. X
  952. XCFLAGS=-mc -DNO_MALLOC_H -w-pia -w-rvl
  953. XCC=tcc
  954. X
  955. X#Where do you want it installed?
  956. XBINDIR= c:\bin
  957. X
  958. X#--------------- SHOULDN'T CHANGE STUFF BELOW HERE ---------------
  959. X
  960. XHEADERS=globals.h protos.h defines.h turboc.h
  961. XOBJECTS=main.obj nextdate.obj dorem.obj dosubst.obj \
  962. X    files.obj calendar.obj cache.obj omits.obj turboc.obj
  963. X
  964. Xall:        remind.exe
  965. X
  966. Xremind.exe:    remind.lib
  967. X        $(CC) $(CFLAGS) -eremind.exe remind.lib
  968. X
  969. Xremind.lib:    $(OBJECTS) init.obj
  970. X        tlib remind.lib /C @remind.rsp
  971. X
  972. X.c.obj:        
  973. X        $(CC) $(CFLAGS) -c $<
  974. X
  975. X$(OBJECTS):    $(HEADERS)
  976. X
  977. Xinit.obj:    init.c $(HEADERS) patchlevel.h
  978. X        $(CC) $(CFLAGS) -c init.c
  979. X
  980. Xinstall:    remind.exe
  981. X        copy remind.exe $(BINDIR)
  982. X
  983. Xclean:
  984. X        del *.obj
  985. X        del remind.lib
  986. X        del remind.bak
  987. X
  988. Xclobber:    clean
  989. X        del remind.exe
  990. SHAR_EOF
  991. $TOUCH -am 0307144891 makefile.tc &&
  992. chmod 0600 makefile.tc ||
  993. echo "restore of makefile.tc failed"
  994. set `wc -c makefile.tc`;Wc_c=$1
  995. if test "$Wc_c" != "851"; then
  996.     echo original size 851, current size $Wc_c
  997. fi
  998. fi
  999. # ============= patchlevel.h ==============
  1000. if test X"$1" != X"-c" -a -f 'patchlevel.h'; then
  1001.     echo "File already exists: skipping 'patchlevel.h'"
  1002. else
  1003. echo "x - extracting patchlevel.h (Text)"
  1004. sed 's/^X//' << 'SHAR_EOF' > patchlevel.h &&
  1005. X/* patchlevel.h for Remind. */
  1006. X
  1007. X#define VERSION_MAJOR 2
  1008. X#define VERSION_MINOR 3
  1009. X
  1010. X#define PATCHLEVEL 1
  1011. SHAR_EOF
  1012. $TOUCH -am 0307144591 patchlevel.h &&
  1013. chmod 0600 patchlevel.h ||
  1014. echo "restore of patchlevel.h failed"
  1015. set `wc -c patchlevel.h`;Wc_c=$1
  1016. if test "$Wc_c" != "102"; then
  1017.     echo original size 102, current size $Wc_c
  1018. fi
  1019. fi
  1020. # ============= rem ==============
  1021. if test X"$1" != X"-c" -a -f 'rem'; then
  1022.     echo "File already exists: skipping 'rem'"
  1023. else
  1024. echo "x - extracting rem (Text)"
  1025. sed 's/^X//' << 'SHAR_EOF' > rem &&
  1026. X#!/bin/sh
  1027. X#
  1028. X# rem - by David Skoll - 26 February 1991
  1029. X#
  1030. X# This script runs 'remind' with a default reminder file assumed.  You
  1031. X# can override the default by using "rem -f newfile ..."  (But why would
  1032. X# you use rem unless you wanted to accept the default??)
  1033. X
  1034. X# ------ You may wish to change the defaults below this line ------
  1035. X
  1036. X# The default reminder file
  1037. XDEFAULT=$HOME/.reminders
  1038. X
  1039. X# The executable file (you may wish to change this to /usr/local/bin/remind
  1040. X# or whatever.
  1041. XEXECUTABLE=remind
  1042. X
  1043. X# No options yet
  1044. XOPTIONS=""
  1045. X
  1046. X# No parameters yet
  1047. XPARAMETERS=""
  1048. X
  1049. X# ------ You shouldn't change anything below this line -----
  1050. X
  1051. X# Scan for options
  1052. Xwhile test "$1" != ""
  1053. Xdo
  1054. X    case $1 in
  1055. X
  1056. X        -f) DEFAULT=$2
  1057. X            shift
  1058. X            shift ;;
  1059. X
  1060. X        -*) OPTIONS="$OPTIONS $1"
  1061. X            shift ;;
  1062. X
  1063. X        *) PARAMETERS=$*
  1064. X           break ;;
  1065. X    esac
  1066. Xdone
  1067. X
  1068. X$EXECUTABLE $OPTIONS $DEFAULT $PARAMETERS
  1069. SHAR_EOF
  1070. $TOUCH -am 0226143091 rem &&
  1071. chmod 0700 rem ||
  1072. echo "restore of rem failed"
  1073. set `wc -c rem`;Wc_c=$1
  1074. if test "$Wc_c" != "850"; then
  1075.     echo original size 850, current size $Wc_c
  1076. fi
  1077. fi
  1078. # ============= rem.1 ==============
  1079. if test X"$1" != X"-c" -a -f 'rem.1'; then
  1080.     echo "File already exists: skipping 'rem.1'"
  1081. else
  1082. echo "x - extracting rem.1 (Text)"
  1083. sed 's/^X//' << 'SHAR_EOF' > rem.1 &&
  1084. X.TH REM 1 "26 February 1991"
  1085. X.UC 4
  1086. X.SH NAME
  1087. Xrem \- run 'remind' with a default reminder file
  1088. X.SH SYNOPSIS
  1089. X.B rem
  1090. X[\-f \fIfilename\fR] [\fIremind_options\fR] [\fIremind_params\fR]
  1091. X.SH DESCRIPTION
  1092. X.B Rem
  1093. Xruns the \fBremind\fR program with a default reminder file of
  1094. X"$HOME\.reminders".  You can supply remind options on the command line,
  1095. Xas well as a date specification, just as with \fBremind\fR.
  1096. X
  1097. XIf you don't want to use the default filename, you can override it with
  1098. Xthe "-f" option, followed by a space and a filename.  (This, however,
  1099. Xdefeats the purpose of \fBrem\fR)
  1100. X.PP
  1101. XFor example, typing:
  1102. X.PP
  1103. X.nf
  1104. X    rem -c 1 jan 1992
  1105. X.fi
  1106. X.PP
  1107. Xhas the same effect as typing:
  1108. X.PP
  1109. X.nf
  1110. X    remind -c $HOME/.reminders 1 jan 1992
  1111. X.fi
  1112. X.PP
  1113. X.SH AUTHOR
  1114. XDavid F. Skoll
  1115. X.SH SEE ALSO
  1116. Xremind, kall
  1117. X
  1118. SHAR_EOF
  1119. $TOUCH -am 0226144991 rem.1 &&
  1120. chmod 0600 rem.1 ||
  1121. echo "restore of rem.1 failed"
  1122. set `wc -c rem.1`;Wc_c=$1
  1123. if test "$Wc_c" != "772"; then
  1124.     echo original size 772, current size $Wc_c
  1125. fi
  1126. fi
  1127. # ============= remind.rsp ==============
  1128. if test X"$1" != X"-c" -a -f 'remind.rsp'; then
  1129.     echo "File already exists: skipping 'remind.rsp'"
  1130. else
  1131. echo "x - extracting remind.rsp (Text)"
  1132. sed 's/^X//' << 'SHAR_EOF' > remind.rsp &&
  1133. X-+main.obj -+nextdate.obj -+dorem.obj -+init.obj -+dosubst.obj &
  1134. X-+files.obj -+calendar.obj -+cache.obj -+omits.obj -+turboc.obj
  1135. SHAR_EOF
  1136. $TOUCH -am 0225165991 remind.rsp &&
  1137. chmod 0600 remind.rsp ||
  1138. echo "restore of remind.rsp failed"
  1139. set `wc -c remind.rsp`;Wc_c=$1
  1140. if test "$Wc_c" != "129"; then
  1141.     echo original size 129, current size $Wc_c
  1142. fi
  1143. fi
  1144. # ============= turboc.c ==============
  1145. if test X"$1" != X"-c" -a -f 'turboc.c'; then
  1146.     echo "File already exists: skipping 'turboc.c'"
  1147. else
  1148. echo "x - extracting turboc.c (Text)"
  1149. sed 's/^X//' << 'SHAR_EOF' > turboc.c &&
  1150. X/***************************************************************/
  1151. X/*                                                             */
  1152. X/*  TURBOC.C                                                   */
  1153. X/*                                                             */
  1154. X/*  Contains definitons of MSC's _dos_XXXX functions.          */
  1155. X/*                                                             */
  1156. X/*  Copyright 1991 Rhys Weatherley.                            */
  1157. X/*                                                             */
  1158. X/***************************************************************/
  1159. X
  1160. X#include "turboc.h"
  1161. X#include <errno.h>
  1162. X#include <dos.h>
  1163. X
  1164. Xint    _dos_open (char *name,int mode,int *handle)
  1165. X{
  1166. X  if ((*handle = _open (name,mode)) < 0)
  1167. X    return (_doserrno);
  1168. X   else
  1169. X    return (0);
  1170. X}
  1171. X
  1172. Xvoid    _dos_close (int handle)
  1173. X{
  1174. X  _close (handle);
  1175. X}
  1176. X
  1177. Xvoid    _dos_getftime (int handle,unsigned *date,unsigned *time)
  1178. X{
  1179. X  union REGS regs;
  1180. X  regs.x.ax = 0x5700;
  1181. X  regs.x.bx = handle;
  1182. X  int86 (0x21,®s,®s);
  1183. X  *date = regs.x.dx;
  1184. X  *time = regs.x.cx;
  1185. X}
  1186. X
  1187. Xvoid    _dos_setftime (int handle,unsigned date,unsigned time)
  1188. X{
  1189. X  union REGS regs;
  1190. X  regs.x.ax = 0x5701;
  1191. X  regs.x.bx = handle;
  1192. X  regs.x.dx = date;
  1193. X  regs.x.cx = time;
  1194. X  int86 (0x21,®s,®s);
  1195. X}
  1196. X
  1197. Xvoid    _dos_getdate (struct dosdate_t *buf)
  1198. X{
  1199. X  union REGS regs;
  1200. X  regs.h.ah = 0x2A;
  1201. X  int86 (0x21,®s,®s);
  1202. X  buf -> day = regs.h.dl;
  1203. X  buf -> month = regs.h.dh;
  1204. X  buf -> year = regs.x.cx;
  1205. X}
  1206. X
  1207. Xvoid    _dos_gettime (struct dostime_t *tloc)
  1208. X{
  1209. X  union REGS regs;
  1210. X  regs.h.ah = 0x2C;
  1211. X  int86 (0x21,®s,®s);
  1212. X  tloc -> hour = regs.h.ch;
  1213. X  tloc -> minute = regs.h.cl;
  1214. X  tloc -> second = regs.h.dh;
  1215. X}
  1216. SHAR_EOF
  1217. $TOUCH -am 0225170491 turboc.c &&
  1218. chmod 0600 turboc.c ||
  1219. echo "restore of turboc.c failed"
  1220. set `wc -c turboc.c`;Wc_c=$1
  1221. if test "$Wc_c" != "1640"; then
  1222.     echo original size 1640, current size $Wc_c
  1223. fi
  1224. fi
  1225. # ============= turboc.h ==============
  1226. if test X"$1" != X"-c" -a -f 'turboc.h'; then
  1227.     echo "File already exists: skipping 'turboc.h'"
  1228. else
  1229. echo "x - extracting turboc.h (Text)"
  1230. sed 's/^X//' << 'SHAR_EOF' > turboc.h &&
  1231. X/***************************************************************/
  1232. X/*                                                             */
  1233. X/*  TURBOC.H                                                   */
  1234. X/*                                                             */
  1235. X/*  Contains definitons for MSC's _dos_XXXX functions.         */
  1236. X/*                                                             */
  1237. X/*  Copyright 1991 Rhys Weatherley.                            */
  1238. X/*                                                             */
  1239. X/***************************************************************/
  1240. X
  1241. X#include <alloc.h>
  1242. X#include <fcntl.h>
  1243. X#include <io.h>
  1244. X
  1245. Xstruct    dostime_t {
  1246. X            int hour,minute,second;
  1247. X          };
  1248. X
  1249. Xstruct    dosdate_t {
  1250. X            int    day,month,year;
  1251. X          };
  1252. SHAR_EOF
  1253. $TOUCH -am 0225170491 turboc.h &&
  1254. chmod 0600 turboc.h ||
  1255. echo "restore of turboc.h failed"
  1256. set `wc -c turboc.h`;Wc_c=$1
  1257. if test "$Wc_c" != "759"; then
  1258.     echo original size 759, current size $Wc_c
  1259. fi
  1260. fi
  1261. exit 0
  1262.  
  1263.  
  1264. exit 0 # Just in case...
  1265. -- 
  1266. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1267. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1268. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1269. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1270.