home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume39 / remind / patch09a < prev    next >
Text File  |  1993-10-04  |  50KB  |  1,291 lines

  1. Newsgroups: comp.sources.misc
  2. From: dfs@doe.carleton.ca (David F. Skoll)
  3. Subject: v39i115:  remind - A replacement for calendar, Patch09a/4
  4. Message-ID: <csm-v39i115=remind.153702@sparky.Sterling.COM>
  5. X-Md4-Signature: 95e50d37ee885733da3a34ea3cad2b02
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Dept. of Electronics, Carleton University
  8. Date: Mon, 4 Oct 1993 20:37:43 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: dfs@doe.carleton.ca (David F. Skoll)
  12. Posting-number: Volume 39, Issue 115
  13. Archive-name: remind/patch09a
  14. Environment: UNIX, MS-DOS, OS/2
  15. Patch-To: remind: Volume 33, Issue 58-69
  16.  
  17. This is patch 9 for version 3.0 of Remind.
  18.  
  19. Remind is a sophisticated calendar/alarm program, which runs under
  20. MS-DOS, UNIX and OS/2.
  21.  
  22. Most noticeable changes:  Addition of complete support for
  23. Finnish; implementation of moon phases; more calendar options;
  24. more PostScript goodies.
  25.  
  26. AVAILABILITY: Remind is available via anonymous ftp at ftp.doe.carleton.ca
  27. (134.117.9.35) in the directory /pub/remind-3.0 - see the file README.1st
  28. in that directory for a list of files.
  29.  
  30. >From the WHATSNEW file:
  31.  
  32. CHANGES TO REMIND
  33.  
  34. * Version 3.0 Patch 9
  35.  
  36. + NOTES
  37.  
  38. - Remind is now too big to compile under the "small" model in
  39.   MS-DOS.  You must recompile everything under the "medium" model.
  40.  
  41. + MAJOR ENHANCEMENTS
  42.  
  43. - Functions moonphase(), moondate() and moontime() were added for dealing
  44.   with phases of the moon.  The code was snarfed from "moontool" by
  45.   John Walker - see the file "moon.c" for detailed acknowledgement.  Also
  46.   added psmoon() for putting little moon symbols on the PostScript calendar.
  47.  
  48. + MINOR ENHANCEMENTS
  49.  
  50. - Added some more examples to defs.rem - notably, support for ANSI
  51.   terminal color-changing escape sequences, thanks to Gail Gurman.
  52.  
  53. - Modified both Remind and Rem2PS so that calendars can start on Sunday or
  54.   Monday, depending on your preference.  Unfortunately, the command-line
  55.   options are different -- for Remind, it's '-m' and for Rem2PS it's '-n'
  56.   because '-m' was already in use.  Based on a suggestion by John Plate
  57.   and a patch sent by Mikko Silvonen.
  58.  
  59. - The Finnish language support is better - now, all usage and error
  60.   messages are in Finnish.  In addition, the Finnish language module
  61.   supports the IBM extended character set as well as ISOLATIN1.
  62.   Thanks to Mikko Silvonen.
  63.  
  64. - Modified Rem2PS to allow more control over the placement of the small
  65.   calendars, thanks to a suggestion by Frank Vance.  Also added option
  66.   to control the calendar title (e.g., "September 1993") independently
  67.   of day-of-week headings.
  68.  
  69. - Added the psshade() function to make it easier to shade PostScript
  70.   calendars.
  71.  
  72. - Allowed a repeat parameter '*num' to be supplied on command line so
  73.   a 'preview' of many days' worth of reminders can be obtained easily.
  74.  
  75. - Added the $Location system variable.
  76.  
  77. - Allowed an expression to be supplied to EXIT to return an exit
  78.   status.
  79.  
  80. - Added the FLUSH command.
  81.  
  82. + BUG FIXES
  83.  
  84. - Fixed the MSF-type reminder to fill paragraphs more intelligently.
  85.   It puts double spaces after '!', '.' and '?', and can handle quotes,
  86.   brackets, etc. after periods, etc.  These characters can be specified
  87.   with the $EndSent and $EndSentIg system variables.  Also modified it
  88.   so that newlines in the body start new paragraphs, rather than being
  89.   swallowed as white-space.
  90.  
  91. David F. Skoll
  92. ---
  93. #! /bin/sh
  94. # This is a shell archive.  Remove anything before this line, then feed it
  95. # into a shell via "sh file" or similar.  To overwrite existing files,
  96. # type "sh file -c".
  97. # Contents:  patch.09.B
  98. # Wrapped by kent@sparky on Mon Oct  4 15:03:30 1993
  99. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  100. echo If this archive is complete, you will see the following message:
  101. echo '          "shar: End of archive 1 (of 4)."'
  102. if test -f 'patch.09.B' -a "${1}" != "-c" ; then 
  103.   echo shar: Will not clobber existing file \"'patch.09.B'\"
  104. else
  105.   echo shar: Extracting \"'patch.09.B'\" \(43820 characters\)
  106.   sed "s/^X//" >'patch.09.B' <<'END_OF_FILE'
  107. X*** ../prev/README.DOS    Thu Aug 19 17:06:36 1993
  108. X--- ./README.DOS    Wed Sep  1 15:45:21 1993
  109. X***************
  110. X*** 1,5 ****
  111. X--- 1,8 ----
  112. X  REMIND version 3.0 for MS-DOS
  113. X  
  114. X+ REMIND is a sophisticated alarm/calendar program.  Details are given
  115. X+ in the man page, "remind.1".
  116. X+ 
  117. X  1 - Read the file COPYRIGHT.  (This may be called COPYRIGH on your
  118. X      MS-DOS system.)
  119. X  
  120. X*** ../prev/README.OS2    Thu Aug 19 17:06:14 1993
  121. X--- ./README.OS2    Wed Sep  1 15:45:18 1993
  122. X***************
  123. X*** 1,5 ****
  124. X--- 1,8 ----
  125. X  REMIND version 3.0 for OS/2
  126. X  
  127. X+ REMIND is a sophisticated alarm/calendar program.  Details are given
  128. X+ in the man page, "remind.1".
  129. X+ 
  130. X  1 - Read the file COPYRIGHT.  (This may be called COPYRIGH on your
  131. X      MS-DOS system.)
  132. X  
  133. X*** ../prev/README.UNIX    Thu Aug 19 17:05:59 1993
  134. X--- ./README.UNIX    Wed Sep  1 15:45:14 1993
  135. X***************
  136. X*** 1,5 ****
  137. X--- 1,8 ----
  138. X  REMIND version 3.0 for UNIX
  139. X  
  140. X+ REMIND is a sophisticated alarm/calendar program.  Details are given
  141. X+ in the man page, "remind.1".
  142. X+ 
  143. X  1 - Read the file COPYRIGHT.
  144. X  
  145. X  2-  Before compiling the software, check to see if it includes patches.
  146. X*** ../prev/WHATSNEW.30    Thu Aug 19 16:57:45 1993
  147. X--- ./WHATSNEW.30    Thu Sep 30 15:51:29 1993
  148. X***************
  149. X*** 1,5 ****
  150. X--- 1,62 ----
  151. X  CHANGES TO REMIND
  152. X  
  153. X+ * Version 3.0 Patch 9
  154. X+ 
  155. X+ + NOTES
  156. X+ 
  157. X+ - Remind is now too big to compile under the "small" model in
  158. X+   MS-DOS.  You must recompile everything under the "medium" model.
  159. X+ 
  160. X+ + MAJOR ENHANCEMENTS
  161. X+ 
  162. X+ - Functions moonphase(), moondate() and moontime() were added for dealing
  163. X+   with phases of the moon.  The code was snarfed from "moontool" by
  164. X+   John Walker - see the file "moon.c" for detailed acknowledgement.  Also
  165. X+   added psmoon() for putting little moon symbols on the PostScript calendar.
  166. X+ 
  167. X+ + MINOR ENHANCEMENTS
  168. X+ 
  169. X+ - Added some more examples to defs.rem - notably, support for ANSI
  170. X+   terminal color-changing escape sequences, thanks to Gail Gurman.
  171. X+ 
  172. X+ - Modified both Remind and Rem2PS so that calendars can start on Sunday or
  173. X+   Monday, depending on your preference.  Unfortunately, the command-line
  174. X+   options are different -- for Remind, it's '-m' and for Rem2PS it's '-n'
  175. X+   because '-m' was already in use.  Based on a suggestion by John Plate
  176. X+   and a patch sent by Mikko Silvonen.
  177. X+ 
  178. X+ - The Finnish language support is better - now, all usage and error
  179. X+   messages are in Finnish.  In addition, the Finnish language module
  180. X+   supports the IBM extended character set as well as ISOLATIN1.
  181. X+   Thanks to Mikko Silvonen.
  182. X+ 
  183. X+ - Modified Rem2PS to allow more control over the placement of the small
  184. X+   calendars, thanks to a suggestion by Frank Vance.  Also added option
  185. X+   to control the calendar title (e.g., "September 1993") independently
  186. X+   of day-of-week headings.
  187. X+ 
  188. X+ - Added the psshade() function to make it easier to shade PostScript
  189. X+   calendars.
  190. X+ 
  191. X+ - Allowed a repeat parameter '*num' to be supplied on command line so
  192. X+   a 'preview' of many days' worth of reminders can be obtained easily.
  193. X+ 
  194. X+ - Added the $Location system variable.
  195. X+ 
  196. X+ - Allowed an expression to be supplied to EXIT to return an exit
  197. X+   status.
  198. X+ 
  199. X+ - Added the FLUSH command.
  200. X+ 
  201. X+ + BUG FIXES
  202. X+ 
  203. X+ - Fixed the MSF-type reminder to fill paragraphs more intelligently.
  204. X+   It puts double spaces after '!', '.' and '?', and can handle quotes,
  205. X+   brackets, etc. after periods, etc.  These characters can be specified
  206. X+   with the $EndSent and $EndSentIg system variables.  Also modified it
  207. X+   so that newlines in the body start new paragraphs, rather than being
  208. X+   swallowed as white-space.
  209. X+ 
  210. X  * Version 3.0 Patch 8
  211. X  
  212. X  + MAJOR ENHANCEMENTS
  213. X*** ../prev/calendar.c    Thu Aug 19 16:55:52 1993
  214. X--- ./calendar.c    Tue Sep 28 16:09:36 1993
  215. X***************
  216. X*** 81,87 ****
  217. X           DoCalendarOneMonth();
  218. X        return;
  219. X     } else {
  220. X!       JulianToday -= ((JulianToday+1)%7);
  221. X  
  222. X        if (!DoSimpleCalendar) {
  223. X           WriteIntermediateCalLine();
  224. X--- 81,88 ----
  225. X           DoCalendarOneMonth();
  226. X        return;
  227. X     } else {
  228. X!       if (MondayFirst) JulianToday -= (JulianToday%7);
  229. X!       else             JulianToday -= ((JulianToday+1)%7);
  230. X  
  231. X        if (!DoSimpleCalendar) {
  232. X           WriteIntermediateCalLine();
  233. X***************
  234. X*** 123,129 ****
  235. X  
  236. X  /* If it's "Simple Calendar" format, do it simply... */
  237. X     if (DoSimpleCalendar) {
  238. X!       wd = (JulianToday + 1) % 7;
  239. X        for (i=0; i<7; i++) {
  240. X           WriteSimpleEntries(i, OrigJul+i-wd);
  241. X        }
  242. X--- 124,131 ----
  243. X  
  244. X  /* If it's "Simple Calendar" format, do it simply... */
  245. X     if (DoSimpleCalendar) {
  246. X!       if (MondayFirst) wd = JulianToday % 7;
  247. X!       else             wd = (JulianToday + 1) % 7;
  248. X        for (i=0; i<7; i++) {
  249. X           WriteSimpleEntries(i, OrigJul+i-wd);
  250. X        }
  251. X***************
  252. X*** 234,240 ****
  253. X  
  254. X  /* Get the date of the first day */
  255. X     FromJulian(JulianToday, &y, &m, &d);
  256. X!    wd = (JulianToday + 1) % 7;
  257. X  
  258. X  /* Fill in the column entries */
  259. X     for (i=wd; i<7; i++) {
  260. X--- 236,243 ----
  261. X  
  262. X  /* Get the date of the first day */
  263. X     FromJulian(JulianToday, &y, &m, &d);
  264. X!    if (!MondayFirst) wd = (JulianToday + 1) % 7;
  265. X!    else             wd = JulianToday % 7;
  266. X  
  267. X  /* Fill in the column entries */
  268. X     for (i=wd; i<7; i++) {
  269. X***************
  270. X*** 474,480 ****
  271. X  /* Do some initialization first... */
  272. X     ClearGlobalOmits();
  273. X     DestroyOmitContexts();
  274. X!    DestroyVars();
  275. X     NumTriggered = 0;
  276. X  
  277. X     r=OpenFile(InitialFile);
  278. X--- 477,483 ----
  279. X  /* Do some initialization first... */
  280. X     ClearGlobalOmits();
  281. X     DestroyOmitContexts();
  282. X!    DestroyVars(0);
  283. X     NumTriggered = 0;
  284. X  
  285. X     r=OpenFile(InitialFile);
  286. X***************
  287. X*** 519,529 ****
  288. X          case T_Else:    r=DoElse(&p);    break;
  289. X          case T_EndIf:   r=DoEndif(&p);   break;
  290. X          case T_Include: r=DoInclude(&p); break;
  291. X!         case T_Exit:    exit(99);
  292. X          case T_Set:     r=DoSet(&p);     break;
  293. X          case T_Fset:    r=DoFset(&p);    break;
  294. X          case T_UnSet:   r=DoUnset(&p);   break;
  295. X          case T_Clr:     r=DoClear(&p);   break;
  296. X              case T_Debug:   break;  /* IGNORE DEBUG CMD */
  297. X          case T_Dumpvars: break; /* IGNORE DUMPVARS CMD */
  298. X          case T_Banner:  break;  /* IGNORE BANNER CMD */
  299. X--- 522,533 ----
  300. X          case T_Else:    r=DoElse(&p);    break;
  301. X          case T_EndIf:   r=DoEndif(&p);   break;
  302. X          case T_Include: r=DoInclude(&p); break;
  303. X!         case T_Exit:    DoExit(&p);         break;
  304. X          case T_Set:     r=DoSet(&p);     break;
  305. X          case T_Fset:    r=DoFset(&p);    break;
  306. X          case T_UnSet:   r=DoUnset(&p);   break;
  307. X          case T_Clr:     r=DoClear(&p);   break;
  308. X+         case T_Flush:   r=DoFlush(&p);   break;
  309. X              case T_Debug:   break;  /* IGNORE DEBUG CMD */
  310. X          case T_Dumpvars: break; /* IGNORE DUMPVARS CMD */
  311. X          case T_Banner:  break;  /* IGNORE BANNER CMD */
  312. X***************
  313. X*** 782,788 ****
  314. X     int i;
  315. X     putchar('|');
  316. X     for (i=0; i<7; i++) {
  317. X!       PrintCentered(DayName[(i+6)%7], ColSpaces, ' ');
  318. X        putchar('|');
  319. X     }
  320. X     putchar('\n');
  321. X--- 786,795 ----
  322. X     int i;
  323. X     putchar('|');
  324. X     for (i=0; i<7; i++) {
  325. X!       if (!MondayFirst)
  326. X!          PrintCentered(DayName[(i+6)%7], ColSpaces, ' ');
  327. X!       else
  328. X!          PrintCentered(DayName[i%7], ColSpaces, ' ');
  329. X        putchar('|');
  330. X     }
  331. X     putchar('\n');
  332. X*** ../prev/config.h    Wed Aug 18 12:56:55 1993
  333. X--- ./config.h    Mon Sep 20 11:39:59 1993
  334. X***************
  335. X*** 14,19 ****
  336. X--- 14,20 ----
  337. X  /*---------------------------------------------------------------------*/
  338. X  /* LAT_DEG, LAT_MIN and LAT_SEC: Latitude of your location             */
  339. X  /* LON_DEG, LON_MIN and LON_SEC: Longitude of your location            */
  340. X+ /* LOCATION: A string identifying your location.                       */
  341. X  /* For latitude, north is positive, south is negative.                 */
  342. X  /* For longitude, west is positive, east is negative.                  */
  343. X  /* NOTE:  For negative numbers, all three of DEG, MIN, SEC should be   */
  344. X***************
  345. X*** 27,32 ****
  346. X--- 28,34 ----
  347. X  #define LON_DEG 75
  348. X  #define LON_MIN 39
  349. X  #define LON_SEC  0
  350. X+ #define LOCATION "Ottawa"
  351. X  
  352. X  /*---------------------------------------------------------------------*/
  353. X  /* HAVE_MKTIME: Define this if your C library includes the mktime()    */
  354. X***************
  355. X*** 70,75 ****
  356. X--- 72,85 ----
  357. X  /* ISO 8859-1 character set instead of ASCII.                          */
  358. X  /*---------------------------------------------------------------------*/
  359. X  /* #define ISOLATIN1 1 */
  360. X+ 
  361. X+ /*---------------------------------------------------------------------*/
  362. X+ /* IBMEXTENDED: uncomment the following line if you want to use the    */
  363. X+ /* IBM extended character set.  NOT ALL LANGUAGE MODULES SUPPORT THIS. */
  364. X+ /* Note that at most one of ISOLATIN1 or IBMEXTENDED should be         */
  365. X+ /* defined; if both are defined, the results are unspecified.          */
  366. X+ /*---------------------------------------------------------------------*/
  367. X+ /* #define IBMEXTENDED 1 */
  368. X  
  369. X  /*---------------------------------------------------------------------*/
  370. X  /* WANT_U_OPTION: Comment out the next define to permanently disable   */
  371. X*** ../prev/defs.rem    Mon Aug 23 11:54:35 1993
  372. X--- ./defs.rem    Tue Sep 28 14:53:50 1993
  373. X***************
  374. X*** 14,19 ****
  375. X--- 14,20 ----
  376. X  #  "#USHOLS" for U.S. holidays                            #
  377. X  #  "#JHOLS"  for Jewish holidays                        #
  378. X  #  "#PSSTUFF" for nifty PostScript examples                    #
  379. X+ #  "#COLORS" for examples of ANSI color escape sequences.                   #
  380. X  #                                         #
  381. X  # This file is part of REMIND.                            #
  382. X  # Copyright (C) 1992, 1993 by David F. Skoll                    #
  383. X***************
  384. X*** 25,32 ****
  385. X  ################################################
  386. X  # Ensure required version of remind is used... #
  387. X  ################################################
  388. X! IF version() < "03.00.08"
  389. X!    ERRMSG This file requires at least version 03.00.08 of Remind.%
  390. X     ERRMSG This version is version [version()].
  391. X     EXIT
  392. X  ENDIF
  393. X--- 26,33 ----
  394. X  ################################################
  395. X  # Ensure required version of remind is used... #
  396. X  ################################################
  397. X! IF version() < "03.00.09"
  398. X!    ERRMSG This file requires at least version 03.00.09 of Remind.%
  399. X     ERRMSG This version is version [version()].
  400. X     EXIT
  401. X  ENDIF
  402. X***************
  403. X*** 305,319 ****
  404. X  ##########################################################################
  405. X  
  406. X  # Convenient to stick all the PostScript code in a string var - makes
  407. X! # reminders easier to understand.  The variable "shade" will contain
  408. X! # PostScript code to shade in a particular box on the calendar.
  409. X! SET shade \
  410. X! "/_A LineWidth 2 div def \
  411. X! _A _A moveto \
  412. X! BoxWidth _A sub _A lineto \
  413. X! BoxWidth _A sub BoxHeight _A sub lineto \
  414. X! _A BoxHeight _A sub lineto \
  415. X! closepath 0.95 setgray fill 0.0 setgray"
  416. X  
  417. X  # The following reminder will shade the Saturday and Sunday calendar
  418. X  # entries.
  419. X--- 306,314 ----
  420. X  ##########################################################################
  421. X  
  422. X  # Convenient to stick all the PostScript code in a string var - makes
  423. X! # reminders easier to understand and faster.  The variable "shade" will
  424. X! # contain PostScript code to shade in a particular box on the calendar.
  425. X! SET shade psshade(95)
  426. X  
  427. X  # The following reminder will shade the Saturday and Sunday calendar
  428. X  # entries.
  429. X***************
  430. X*** 320,330 ****
  431. X  REM Sat Sun PS [shade]
  432. X  
  433. X  # The following will fill in the Hebrew dates on the calendar.  For this
  434. X! # example, I recommend that you use the "-sd 10" option for rem2ps.
  435. X! REM PS Border BoxHeight Border sub DaySize sub moveto \
  436. X     /DayFont findfont DaySize scalefont setfont \
  437. X     ([hebday(today())] [hebmon(today())]) show
  438. X  
  439. X  #USHOLS
  440. X  #############################################################################
  441. X  #                                           #
  442. X--- 315,331 ----
  443. X  REM Sat Sun PS [shade]
  444. X  
  445. X  # The following will fill in the Hebrew dates on the calendar.  For this
  446. X! # example, I recommend that you use the -sd 10 option for Rem2PS.
  447. X! REM PS Border Border moveto \
  448. X     /DayFont findfont DaySize scalefont setfont \
  449. X     ([hebday(today())] [hebmon(today())]) show
  450. X  
  451. X+ # Fill in the phases of the moon on the PostScript calendar
  452. X+ [trigger(moondate(0))] PS [psmoon(0)]
  453. X+ [trigger(moondate(1))] PS [psmoon(1)]
  454. X+ [trigger(moondate(2))] PS [psmoon(2)]
  455. X+ [trigger(moondate(3))] PS [psmoon(3)]
  456. X+ 
  457. X  #USHOLS
  458. X  #############################################################################
  459. X  #                                           #
  460. X***************
  461. X*** 556,558 ****
  462. X--- 557,594 ----
  463. X  
  464. X  REM Friday   CAL Candle lighting at [sunset(trigdate())-18]
  465. X  REM Saturday CAL Havdalah at [sunset(trigdate())+42]
  466. X+ 
  467. X+ #COLORS
  468. X+ ##########################################################################
  469. X+ #                                         #
  470. X+ # This contains sample ANSI escape sequences for coloring messages.      #
  471. X+ # It should work on an IBM PC with the ANSI.SYS driver, and on           #
  472. X+ # other terminals which use the ANSI sequences.                          #
  473. X+ #                                         #
  474. X+ # This information was provided by Gail Gurman.
  475. X+ #                                         #
  476. X+ ##########################################################################
  477. X+ # Colors - use Nrm to reset to normal text.
  478. X+ SET Esc   CHAR(27)
  479. X+ 
  480. X+ SET Nrm   Esc + "[0m"
  481. X+ SET Blk   Esc + "[0;30m"
  482. X+ SET Red   Esc + "[0;31m"
  483. X+ SET Grn   Esc + "[0;32m"
  484. X+ SET Ylw   Esc + "[0;33m"
  485. X+ SET Blu   Esc + "[0;34m"
  486. X+ SET Mag   Esc + "[0;35m"
  487. X+ SET Cyn   Esc + "[0;36m"
  488. X+ SET Wht   Esc + "[0;37m"
  489. X+ SET Gry   Esc + "[30;1m"
  490. X+ SET BrRed Esc + "[31;1m"
  491. X+ SET BrGrn Esc + "[32;1m"
  492. X+ SET BrYlw Esc + "[33;1m"
  493. X+ SET BrBlu Esc + "[34;1m"
  494. X+ SET BrMag Esc + "[35;1m"
  495. X+ SET BrCyn Esc + "[36;1m"
  496. X+ SET BrWht Esc + "[37;1m"
  497. X+ 
  498. X+ # Examples
  499. X+ REM MSG A [Blu]blue[Nrm] reminder.
  500. X+ REM MSG [Red]%"A red reminder%" safe to use in the calendar mode.[Nrm]
  501. X*** ../prev/expr.c    Thu Aug 19 16:24:24 1993
  502. X--- ./expr.c    Wed Sep  1 11:44:27 1993
  503. X***************
  504. X*** 1220,1237 ****
  505. X  Value *dest, *src;
  506. X  #endif
  507. X  {
  508. X!    dest->type = src->type;
  509. X     if (src->type == STR_TYPE) {
  510. X        dest->v.str = StrDup(src->v.str);
  511. X!       if (!dest->v.str) {
  512. X!      dest->type = ERR_TYPE;
  513. X!      return E_NO_MEM;
  514. X!       }
  515. X!       return OK;
  516. X     } else {
  517. X        dest->v.val = src->v.val;
  518. X-       return OK;
  519. X     }
  520. X  }
  521. X  
  522. X  /***************************************************************/
  523. X--- 1220,1234 ----
  524. X  Value *dest, *src;
  525. X  #endif
  526. X  {
  527. X!    dest->type = ERR_TYPE;
  528. X     if (src->type == STR_TYPE) {
  529. X        dest->v.str = StrDup(src->v.str);
  530. X!       if (!dest->v.str) return E_NO_MEM;
  531. X     } else {
  532. X        dest->v.val = src->v.val;
  533. X     }
  534. X+    dest->type = src->type;
  535. X+    return OK;
  536. X  }
  537. X  
  538. X  /***************************************************************/
  539. X*** ../prev/files.c    Thu Aug 26 10:47:48 1993
  540. X--- ./files.c    Fri Sep  3 11:36:57 1993
  541. X***************
  542. X*** 516,521 ****
  543. X--- 516,522 ----
  544. X  #endif
  545. X  {
  546. X     CachedLine *cl, *cnext;
  547. X+    CachedFile *temp;
  548. X     if (cf->filename) free(cf->filename);
  549. X     cl = cf->cache;
  550. X     while (cl) {
  551. X***************
  552. X*** 523,528 ****
  553. X--- 524,540 ----
  554. X        cnext = cl->next;
  555. X        free(cl);
  556. X        cl = cnext;
  557. X+    }
  558. X+    if (CachedFiles == cf) CachedFiles = cf->next;
  559. X+    else {
  560. X+       temp = CachedFiles;
  561. X+       while(temp) {
  562. X+          if (temp->next == cf) {
  563. X+         temp->next = cf->next;
  564. X+         break;
  565. X+          }
  566. X+          temp = temp->next;
  567. X+       }
  568. X     }
  569. X     free(cf);
  570. X  }
  571. X*** ../prev/finnish.h    Mon Jun 28 12:29:37 1993
  572. X--- ./finnish.h    Tue Sep 28 12:38:49 1993
  573. X***************
  574. X*** 4,10 ****
  575. X  /*                                                             */
  576. X  /*  Support for the Finnish language.                          */
  577. X  /*                                                             */
  578. X! /*  Author: Mikko Silvonen (Mikko.Silvonen@Helsinki.FI)        */
  579. X  /*                                                             */
  580. X  /*  This file is part of REMIND.                               */
  581. X  /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  582. X--- 4,10 ----
  583. X  /*                                                             */
  584. X  /*  Support for the Finnish language.                          */
  585. X  /*                                                             */
  586. X! /*  Author: Mikko Silvonen <Mikko.Silvonen@Helsinki.FI>        */
  587. X  /*                                                             */
  588. X  /*  This file is part of REMIND.                               */
  589. X  /*  Copyright (C) 1992, 1993 by David F. Skoll.                */
  590. X***************
  591. X*** 32,40 ****
  592. X  #define L_MAR "maaliskuu"
  593. X  #define L_APR "huhtikuu"
  594. X  #define L_MAY "toukokuu"
  595. X! #ifdef ISOLATIN1
  596. X  #define L_JUN "kes\xE4kuu"
  597. X  #define L_JUL "hein\xE4kuu"
  598. X  #else
  599. X  #define L_JUN "kes{kuu"
  600. X  #define L_JUL "hein{kuu"
  601. X--- 32,43 ----
  602. X  #define L_MAR "maaliskuu"
  603. X  #define L_APR "huhtikuu"
  604. X  #define L_MAY "toukokuu"
  605. X! #if defined(ISOLATIN1)
  606. X  #define L_JUN "kes\xE4kuu"
  607. X  #define L_JUL "hein\xE4kuu"
  608. X+ #elif defined(IBMEXTENDED)
  609. X+ #define L_JUN "kes\x84kuu"
  610. X+ #define L_JUL "hein\x84kuu"
  611. X  #else
  612. X  #define L_JUN "kes{kuu"
  613. X  #define L_JUL "hein{kuu"
  614. X***************
  615. X*** 46,53 ****
  616. X  #define L_DEC "joulukuu"
  617. X  
  618. X  /* Today and tomorrow */
  619. X! #ifdef ISOLATIN1
  620. X  #define L_TODAY "t\xE4n\xE4\xE4n"
  621. X  #else
  622. X  #define L_TODAY "t{n{{n"
  623. X  #endif
  624. X--- 49,58 ----
  625. X  #define L_DEC "joulukuu"
  626. X  
  627. X  /* Today and tomorrow */
  628. X! #if defined(ISOLATIN1)
  629. X  #define L_TODAY "t\xE4n\xE4\xE4n"
  630. X+ #elif defined(IBMEXTENDED)
  631. X+ #define L_TODAY "t\x84n\x84\x84n"
  632. X  #else
  633. X  #define L_TODAY "t{n{{n"
  634. X  #endif
  635. X***************
  636. X*** 68,75 ****
  637. X  #define L_FROMNOW "kuluttua"
  638. X  
  639. X  /* "in %d days' time" */
  640. X! #ifdef ISOLATIN1
  641. X  #define L_INXDAYS "%d p\xE4iv\xE4n kuluttua"
  642. X  #else
  643. X  #define L_INXDAYS "%d p{iv{n kuluttua"
  644. X  #endif
  645. X--- 73,82 ----
  646. X  #define L_FROMNOW "kuluttua"
  647. X  
  648. X  /* "in %d days' time" */
  649. X! #if defined(ISOLATIN1)
  650. X  #define L_INXDAYS "%d p\xE4iv\xE4n kuluttua"
  651. X+ #elif defined(IBMEXTENDED)
  652. X+ #define L_INXDAYS "%d p\x84iv\x84n kuluttua"
  653. X  #else
  654. X  #define L_INXDAYS "%d p{iv{n kuluttua"
  655. X  #endif
  656. X***************
  657. X*** 82,89 ****
  658. X  /* Pluralizing - this is a problem for many languages and may require
  659. X     a more drastic fix */
  660. X  /* The partitive ending of "day" */
  661. X! #ifdef ISOLATIN1
  662. X  #define L_PLURAL "\xE4"
  663. X  #else
  664. X  #define L_PLURAL "{"
  665. X  #endif
  666. X--- 89,98 ----
  667. X  /* Pluralizing - this is a problem for many languages and may require
  668. X     a more drastic fix */
  669. X  /* The partitive ending of "day" */
  670. X! #if defined(ISOLATIN1)
  671. X  #define L_PLURAL "\xE4"
  672. X+ #elif defined(IBMEXTENDED)
  673. X+ #define L_PLURAL "\x84"
  674. X  #else
  675. X  #define L_PLURAL "{"
  676. X  #endif
  677. X***************
  678. X*** 98,104 ****
  679. X  #define L_AND "ja"
  680. X  
  681. X  /* What to add to make "hour" plural (or actually partitive) */
  682. X! #define L_HPLU "a"  
  683. X  /* What to add to make "minute" plural (or actually partitive) */
  684. X  #define L_MPLU "a"
  685. X  
  686. X--- 107,113 ----
  687. X  #define L_AND "ja"
  688. X  
  689. X  /* What to add to make "hour" plural (or actually partitive) */
  690. X! #define L_HPLU "a"
  691. X  /* What to add to make "minute" plural (or actually partitive) */
  692. X  #define L_MPLU "a"
  693. X  
  694. X***************
  695. X*** 110,180 ****
  696. X  /* Define any overrides here, such as L_ORDINAL_OVERRIDE, L_A_OVER, etc.
  697. X     See the file dosubst.c for more info. */
  698. X  
  699. X! #ifdef ISOLATIN1
  700. X  #define L_ORDINAL_OVERRIDE switch(d) { \
  701. X!                                case 1:  plu = ":sen\xE4"; break; \
  702. X!                                case 2:  plu = ":sena"; break; \
  703. X!                                default: \
  704. X!                                    switch(d%10) { \
  705. X!                                        case 2: \
  706. X!                                        case 3: \
  707. X!                                        case 6: \
  708. X!                                        case 8:  plu = ":ntena"; break; \
  709. X!                                        default: plu = ":nten\xE4"; break; \
  710. X!                                    } \
  711. X!                            }
  712. X  #else
  713. X  #define L_ORDINAL_OVERRIDE switch(d) { \
  714. X!                                case 1:  plu = ":sen{"; break; \
  715. X!                                case 2:  plu = ":sena"; break; \
  716. X!                                default: \
  717. X!                                    switch(d%10) { \
  718. X!                                        case 2: \
  719. X!                                        case 3: \
  720. X!                                        case 6: \
  721. X!                                        case 8:  plu = ":ntena"; break; \
  722. X!                                        default: plu = ":nten{"; break; \
  723. X!                                    } \
  724. X!                            }
  725. X  #endif
  726. X  #define L_A_OVER sprintf(s, "%s%s, %d. %s%s %d", DayName[jul%7], L_ON, d, \
  727. X!                          MonthName[m], L_PARTIT, y);
  728. X  #define L_C_OVER sprintf(s, "%s%s", DayName[jul%7], L_ON);
  729. X  #define L_E_OVER sprintf(s, "%02d%c%02d%c%04d", d, DATESEP, m+1, DATESEP, \
  730. X!                          y);
  731. X  #define L_F_OVER sprintf(s, "%02d%c%02d%c%04d", m+1, DATESEP, d, DATESEP, y);
  732. X  #define L_G_OVER sprintf(s, "%s%s, %d. %s%s", DayName[jul%7], L_ON, d, \
  733. X!                          MonthName[m], L_PARTIT);
  734. X  #define L_H_OVER sprintf(s, "%02d%c%02d", d, DATESEP, m+1);
  735. X  #define L_I_OVER sprintf(s, "%02d%c%02d", m+1, DATESEP, d);
  736. X  #define L_J_OVER sprintf(s, "%s%s, %sn %d%s %d", DayName[jul%7], L_ON, \
  737. X!                          MonthName[m], d, plu, y);
  738. X  #define L_K_OVER sprintf(s, "%s%s, %sn %d%s", DayName[jul%7], L_ON, \
  739. X                 MonthName[m], d, plu);
  740. X  #define L_L_OVER sprintf(s, "%04d%c%02d%c%02d", y, DATESEP, m+1, DATESEP, d);
  741. X  #define L_Q_OVER sprintf(s, "n");
  742. X  #define L_U_OVER sprintf(s, "%s%s, %d%s %s%s %d", DayName[jul%7], L_ON, \
  743. X!                             d, plu, MonthName[m], L_PARTIT, y);
  744. X  #define L_V_OVER sprintf(s, "%s%s, %d%s %s%s", DayName[jul%7], L_ON, d, \
  745. X!                          plu, MonthName[m], L_PARTIT);
  746. X  #define L_1_OVER if (tdiff == 0) \
  747. X!                      sprintf(s, L_NOW); \
  748. X!                  else { \
  749. X!                      if (hdiff != 0) { \
  750. X!                          if (tdiff < 0) \
  751. X!                              sprintf(s, "%d %s%s ", hdiff, L_HOUR, hplu); \
  752. X!                          else \
  753. X!                              sprintf(s, "%d %s ", hdiff, L_HGEN); \
  754. X!                          s += strlen(s); \
  755. X!                      } \
  756. X!                      if (mdiff != 0) { \
  757. X!                          if (tdiff < 0) \
  758. X!                              sprintf(s, "%d %s%s ", mdiff, L_MINUTE, \
  759. X!                                      mplu); \
  760. X!                          else \
  761. X!                              sprintf(s, "%d %s ", mdiff, L_MGEN); \
  762. X!                          s += strlen(s); \
  763. X!                      } \
  764. X!                      sprintf(s, when); \
  765. X!                  }
  766. X  #endif /* L_IN_DOSUBST */
  767. X--- 119,609 ----
  768. X  /* Define any overrides here, such as L_ORDINAL_OVERRIDE, L_A_OVER, etc.
  769. X     See the file dosubst.c for more info. */
  770. X  
  771. X! #if defined(ISOLATIN1)
  772. X  #define L_ORDINAL_OVERRIDE switch(d) { \
  773. X!                    case 1:  plu = ":sen\xE4"; break; \
  774. X!                    case 2:  plu = ":sena"; break; \
  775. X!                    default: \
  776. X!                    switch(d%10) { \
  777. X!                        case 2: \
  778. X!                        case 3: \
  779. X!                        case 6: \
  780. X!                        case 8:  plu = ":ntena"; break; \
  781. X!                        default: plu = ":nten\xE4"; break; \
  782. X!                    } \
  783. X!                }
  784. X! #elif defined(IBMEXTENDED)
  785. X! #define L_ORDINAL_OVERRIDE switch(d) { \
  786. X!                    case 1:  plu = ":sen\x84"; break; \
  787. X!                    case 2:  plu = ":sena"; break; \
  788. X!                    default: \
  789. X!                    switch(d%10) { \
  790. X!                        case 2: \
  791. X!                        case 3: \
  792. X!                        case 6: \
  793. X!                        case 8:  plu = ":ntena"; break; \
  794. X!                        default: plu = ":nten\x84"; break; \
  795. X!                    } \
  796. X!                }
  797. X  #else
  798. X  #define L_ORDINAL_OVERRIDE switch(d) { \
  799. X!                    case 1:  plu = ":sen{"; break; \
  800. X!                    case 2:  plu = ":sena"; break; \
  801. X!                    default: \
  802. X!                    switch(d%10) { \
  803. X!                        case 2: \
  804. X!                        case 3: \
  805. X!                        case 6: \
  806. X!                        case 8:  plu = ":ntena"; break; \
  807. X!                        default: plu = ":nten{"; break; \
  808. X!                    } \
  809. X!                }
  810. X  #endif
  811. X  #define L_A_OVER sprintf(s, "%s%s, %d. %s%s %d", DayName[jul%7], L_ON, d, \
  812. X!              MonthName[m], L_PARTIT, y);
  813. X  #define L_C_OVER sprintf(s, "%s%s", DayName[jul%7], L_ON);
  814. X  #define L_E_OVER sprintf(s, "%02d%c%02d%c%04d", d, DATESEP, m+1, DATESEP, \
  815. X!              y);
  816. X  #define L_F_OVER sprintf(s, "%02d%c%02d%c%04d", m+1, DATESEP, d, DATESEP, y);
  817. X  #define L_G_OVER sprintf(s, "%s%s, %d. %s%s", DayName[jul%7], L_ON, d, \
  818. X!              MonthName[m], L_PARTIT);
  819. X  #define L_H_OVER sprintf(s, "%02d%c%02d", d, DATESEP, m+1);
  820. X  #define L_I_OVER sprintf(s, "%02d%c%02d", m+1, DATESEP, d);
  821. X  #define L_J_OVER sprintf(s, "%s%s, %sn %d%s %d", DayName[jul%7], L_ON, \
  822. X!              MonthName[m], d, plu, y);
  823. X  #define L_K_OVER sprintf(s, "%s%s, %sn %d%s", DayName[jul%7], L_ON, \
  824. X                 MonthName[m], d, plu);
  825. X  #define L_L_OVER sprintf(s, "%04d%c%02d%c%02d", y, DATESEP, m+1, DATESEP, d);
  826. X  #define L_Q_OVER sprintf(s, "n");
  827. X  #define L_U_OVER sprintf(s, "%s%s, %d%s %s%s %d", DayName[jul%7], L_ON, \
  828. X!                 d, plu, MonthName[m], L_PARTIT, y);
  829. X  #define L_V_OVER sprintf(s, "%s%s, %d%s %s%s", DayName[jul%7], L_ON, d, \
  830. X!              plu, MonthName[m], L_PARTIT);
  831. X  #define L_1_OVER if (tdiff == 0) \
  832. X!              sprintf(s, L_NOW); \
  833. X!          else { \
  834. X!              if (hdiff != 0) { \
  835. X!              if (tdiff < 0) \
  836. X!                  sprintf(s, "%d %s%s ", hdiff, L_HOUR, hplu); \
  837. X!              else \
  838. X!                  sprintf(s, "%d %s ", hdiff, L_HGEN); \
  839. X!              s += strlen(s); \
  840. X!              } \
  841. X!              if (mdiff != 0) { \
  842. X!              if (tdiff < 0) \
  843. X!                  sprintf(s, "%d %s%s ", mdiff, L_MINUTE, \
  844. X!                      mplu); \
  845. X!              else \
  846. X!                  sprintf(s, "%d %s ", mdiff, L_MGEN); \
  847. X!              s += strlen(s); \
  848. X!              } \
  849. X!              sprintf(s, when); \
  850. X!          }
  851. X  #endif /* L_IN_DOSUBST */
  852. X+ 
  853. X+ /* The next ones are used only when MK_GLOBALS is set */
  854. X+ #ifdef MK_GLOBALS
  855. X+ #define L_ERR_OVERRIDE 1
  856. X+ EXTERN char *ErrMsg[] =
  857. X+ {
  858. X+ #if defined(ISOLATIN1)
  859. X+    "Ok",
  860. X+    "Puuttuva ']'",
  861. X+    "Puuttuva lainausmerkki",
  862. X+    "Liian monimutkainen lauseke - liikaa operaattoreita",
  863. X+    "Liian monimutkainen lauseke - liikaa operandeja",
  864. X+    "Puuttuva ')'",
  865. X+    "M\xE4\xE4rittelem\xE4t\xF6n funktio",
  866. X+    "Virheellinen merkki",
  867. X+    "Kaksipaikkainen operaattori puuttuu",
  868. X+    "Muisti loppui",
  869. X+    "Virheellinen luku",
  870. X+    "Operaattoripino tyhj\xE4 - sis\xE4inen virhe",
  871. X+    "Muuttujapino tyhj\xE4 - sis\xE4inen virhe",
  872. X+    "Tyyppimuunnos ei onnistu",
  873. X+    "Virheellinen tyyppi",
  874. X+    "Liian suuri p\xE4iv\xE4ys",
  875. X+    "Pinovirhe - sis\xE4inen virhe",
  876. X+    "Jako nollalla",
  877. X+    "M\xE4\xE4rittelem\xE4t\xF6n funktio",
  878. X+    "Odottamaton rivin loppu",
  879. X+    "Odottamaton tiedoston loppu",
  880. X+    "Sy\xF6tt\xF6- tai tulostusvirhe",
  881. X+    "Liian pitk\xE4 rivi",
  882. X+    "Sis\xE4inen virhe",
  883. X+    "Virheellinen p\xE4iv\xE4ys",
  884. X+    "Liian v\xE4h\xE4n argumentteja",
  885. X+    "Liian paljon argumentteja",
  886. X+    "Virheellinen aika",
  887. X+    "Liian suuri luku",
  888. X+    "Liian pieni luku",
  889. X+    "Tiedoston avaus ei onnistu",
  890. X+    "Liian monta sis\xE4kk\xE4ist\xE4 INCLUDEa",
  891. X+    "J\xE4sennysvirhe",
  892. X+    "Laukaisuhetken laskenta ei onnistu",
  893. X+    "Liian monta sis\xE4kk\xE4ist\xE4 IF-lausetta",
  894. X+    "ELSE ilman IF-lausetta",
  895. X+    "ENDIF ilman IF-lausetta",
  896. X+    "Kaikkia viikonp\xE4ivi\xE4 ei voi j\xE4tt\xE4\xE4 pois",
  897. X+    "Ylim\xE4\xE4r\xE4isi\xE4 merkkej\xE4 rivill\xE4",
  898. X+    "POP-OMIT-CONTEXT ilman PUSH-OMIT-CONTEXTia",
  899. X+    "RUN-lauseen k\xE4ytt\xF6 estetty",
  900. X+    "Arvoaluevirhe",
  901. X+    "Virheellinen tunniste",
  902. X+    "Rekursiivinen funktiokutsu havaittu",
  903. X+    "",
  904. X+    "J\xE4rjestelm\xE4muuttujan muuttaminen ei onnistu",
  905. X+    "C-kirjastofunktio ei pysty esitt\xE4m\xE4\xE4n p\xE4iv\xE4yst\xE4 tai aikaa",
  906. X+    "Sis\xE4isen funktion m\xE4\xE4ritelm\xE4\xE4 yritettiin muuttaa",
  907. X+    "Lausekkeessa ei voi olla sis\xE4kk\xE4isi\xE4 funktiom\xE4\xE4ritelmi\xE4",
  908. X+    "P\xE4iv\xE4yksen t\xE4ytyy olla t\xE4ydellinen toistokertoimessa",
  909. X+    "Vuosi annettu kahdesti",
  910. X+    "Kuukausi annettu kahdesti",
  911. X+    "P\xE4iv\xE4 annettu kahdesti",
  912. X+    "Tuntematon sana tai merkki",
  913. X+    "OMIT-komennossa on annettava kuukausi ja p\xE4iv\xE4",
  914. X+    "Liian monta osittaista OMIT-komentoa",
  915. X+    "Liian monta t\xE4ydellist\xE4 OMIT-komentoa",
  916. X+    "Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia",
  917. X+    "Virhe tiedoston luvussa",
  918. X+    "Pilkku puuttuu",
  919. X+    "Virheellinen juutalainen p\xE4iv\xE4ys",
  920. X+    "IIF vaatii parittoman m\xE4\xE4r\xE4n argumentteja",
  921. X+    "Varoitus: puuttuva ENDIF",
  922. X+    "Pilkku puuttuu",
  923. X+    "Viikonp\xE4iv\xE4 annettu kahdesti",
  924. X+    "K\xE4yt\xE4 vain yht\xE4 komennoista BEFORE, AFTER ja SKIP",
  925. X+    "Sis\xE4kk\xE4isi\xE4 MSG-, MSF- ja RUN-lauseita ei voi k\xE4ytt\xE4\xE4 lausekkeessa",
  926. X+    "Toistokerroin annettu kahdesti",
  927. X+    "Delta-arvo annettu kahdesti",
  928. X+    "Peruutusarvo annettu kahdesti",
  929. X+    "ONCE-avainsanaa k\xE4ytetty kahdesti. (Hah.)",
  930. X+    "AT-sanan per\xE4st\xE4 puuttuu aika",
  931. X+    "UNTIL-sanaa k\xE4ytetty kahdesti",
  932. X+    "Ep\xE4t\xE4ydellinen p\xE4iv\xE4ys",
  933. X+    "SCANFROM-sanaa k\xE4ytetty kahdesti",
  934. X+    "Muuttuja",
  935. X+    "Arvo",
  936. X+    "*M\xC4\xC4RITTELEM\xC4T\xD6N*",
  937. X+    "Siirryt\xE4\xE4n funktioon",
  938. X+    "Poistutaan funktiosta",
  939. X+    "Vanhentunut",
  940. X+    "fork() ep\xE4onnistui - jonomuistutukset eiv\xE4t toimi",
  941. X+    "Tiedoston avaus ei onnistu",
  942. X+    "Virheellinen j\xE4rjestelm\xE4p\xE4iv\xE4ys: vuosi on v\xE4hemm\xE4n kuin %d\n",
  943. X+    "Tuntematon virheenetsint\xE4tarkenne '%c'\n",
  944. X+    "Tuntematon tarkenne '%c'\n",
  945. X+    "Tuntematon k\xE4ytt\xE4j\xE4 '%s'\n",
  946. X+    "Ryhm\xE4numeron vaihto %d:ksi ei onnistunut\n",
  947. X+    "K\xE4ytt\xE4j\xE4numeron vaihto %d:ksi ei onnistunut\n",
  948. X+    "Muisti ei riit\xE4 ymp\xE4rist\xF6lle\n",
  949. X+    "Puuttuva '='-merkki",
  950. X+    "Puuttuva muuttujanimi",
  951. X+    "Puuttuva lauseke",
  952. X+    "P\xE4iv\xE4n asetus %s:ksi ei onnitus\n",
  953. X+    "Remind: tarkenne '-i': %s\n",
  954. X+    "Ei viestej\xE4.",
  955. X+    "%d viesti(\xE4) t\xE4m\xE4n p\xE4iv\xE4n jonossa.\n",
  956. X+ #elif defined(IBMEXTENDED)
  957. X+    "Ok",
  958. X+    "Puuttuva ']'",
  959. X+    "Puuttuva lainausmerkki",
  960. X+    "Liian monimutkainen lauseke - liikaa operaattoreita",
  961. X+    "Liian monimutkainen lauseke - liikaa operandeja",
  962. X+    "Puuttuva ')'",
  963. X+    "M\x84\x84rittelem\x84t\x94n funktio",
  964. X+    "Virheellinen merkki",
  965. X+    "Kaksipaikkainen operaattori puuttuu",
  966. X+    "Muisti loppui",
  967. X+    "Virheellinen luku",
  968. X+    "Operaattoripino tyhj\x84 - sis\x84inen virhe",
  969. X+    "Muuttujapino tyhj\x84 - sis\x84inen virhe",
  970. X+    "Tyyppimuunnos ei onnistu",
  971. X+    "Virheellinen tyyppi",
  972. X+    "Liian suuri p\x84iv\x84ys",
  973. X+    "Pinovirhe - sis\x84inen virhe",
  974. X+    "Jako nollalla",
  975. X+    "M\x84\x84rittelem\x84t\x94n funktio",
  976. X+    "Odottamaton rivin loppu",
  977. X+    "Odottamaton tiedoston loppu",
  978. X+    "Sy\x94tt\x94- tai tulostusvirhe",
  979. X+    "Liian pitk\x84 rivi",
  980. X+    "Sis\x84inen virhe",
  981. X+    "Virheellinen p\x84iv\x84ys",
  982. X+    "Liian v\x84h\x84n argumentteja",
  983. X+    "Liian paljon argumentteja",
  984. X+    "Virheellinen aika",
  985. X+    "Liian suuri luku",
  986. X+    "Liian pieni luku",
  987. X+    "Tiedoston avaus ei onnistu",
  988. X+    "Liian monta sis\x84kk\x84ist\x84 INCLUDEa",
  989. X+    "J\x84sennysvirhe",
  990. X+    "Laukaisuhetken laskenta ei onnistu",
  991. X+    "Liian monta sis\x84kk\x84ist\x84 IF-lausetta",
  992. X+    "ELSE ilman IF-lausetta",
  993. X+    "ENDIF ilman IF-lausetta",
  994. X+    "Kaikkia viikonp\x84ivi\x84 ei voi j\x84tt\x84\x84 pois",
  995. X+    "Ylim\x84\x84r\x84isi\x84 merkkej\x84 rivill\x84",
  996. X+    "POP-OMIT-CONTEXT ilman PUSH-OMIT-CONTEXTia",
  997. X+    "RUN-lauseen k\x84ytt\x94 estetty",
  998. X+    "Arvoaluevirhe",
  999. X+    "Virheellinen tunniste",
  1000. X+    "Rekursiivinen funktiokutsu havaittu",
  1001. X+    "",
  1002. X+    "J\x84rjestelm\x84muuttujan muuttaminen ei onnistu",
  1003. X+    "C-kirjastofunktio ei pysty esitt\x84m\x84\x84n p\x84iv\x84yst\x84 tai aikaa",
  1004. X+    "Sis\x84isen funktion m\x84\x84ritelm\x84\x84 yritettiin muuttaa",
  1005. X+    "Lausekkeessa ei voi olla sis\x84kk\x84isi\x84 funktiom\x84\x84ritelmi\x84",
  1006. X+    "P\x84iv\x84yksen t\x84ytyy olla t\x84ydellinen toistokertoimessa",
  1007. X+    "Vuosi annettu kahdesti",
  1008. X+    "Kuukausi annettu kahdesti",
  1009. X+    "P\x84iv\x84 annettu kahdesti",
  1010. X+    "Tuntematon sana tai merkki",
  1011. X+    "OMIT-komennossa on annettava kuukausi ja p\x84iv\x84",
  1012. X+    "Liian monta osittaista OMIT-komentoa",
  1013. X+    "Liian monta t\x84ydellist\x84 OMIT-komentoa",
  1014. X+    "Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia",
  1015. X+    "Virhe tiedoston luvussa",
  1016. X+    "Pilkku puuttuu",
  1017. X+    "Virheellinen juutalainen p\x84iv\x84ys",
  1018. X+    "IIF vaatii parittoman m\x84\x84r\x84n argumentteja",
  1019. X+    "Varoitus: puuttuva ENDIF",
  1020. X+    "Pilkku puuttuu",
  1021. X+    "Viikonp\x84iv\x84 annettu kahdesti",
  1022. X+    "K\x84yt\x84 vain yht\x84 komennoista BEFORE, AFTER ja SKIP",
  1023. X+    "Sis\x84kk\x84isi\x84 MSG-, MSF- ja RUN-lauseita ei voi k\x84ytt\x84\x84 lausekkeessa",
  1024. X+    "Toistokerroin annettu kahdesti",
  1025. X+    "Delta-arvo annettu kahdesti",
  1026. X+    "Peruutusarvo annettu kahdesti",
  1027. X+    "ONCE-avainsanaa k\x84ytetty kahdesti. (Hah.)",
  1028. X+    "AT-sanan per\x84st\x84 puuttuu aika",
  1029. X+    "UNTIL-sanaa k\x84ytetty kahdesti",
  1030. X+    "Ep\x84t\x84ydellinen p\x84iv\x84ys",
  1031. X+    "SCANFROM-sanaa k\x84ytetty kahdesti",
  1032. X+    "Muuttuja",
  1033. X+    "Arvo",
  1034. X+    "*M\x8E\x8ERITTELEM\x8ET\x99N*",
  1035. X+    "Siirryt\x84\x84n funktioon",
  1036. X+    "Poistutaan funktiosta",
  1037. X+    "Vanhentunut",
  1038. X+    "fork() ep\x84onnistui - jonomuistutukset eiv\x84t toimi",
  1039. X+    "Tiedoston avaus ei onnistu",
  1040. X+    "Virheellinen j\x84rjestelm\x84p\x84iv\x84ys: vuosi on v\x84hemm\x84n kuin %d\n",
  1041. X+    "Tuntematon virheenetsint\x84tarkenne '%c'\n",
  1042. X+    "Tuntematon tarkenne '%c'\n",
  1043. X+    "Tuntematon k\x84ytt\x84j\x84 '%s'\n",
  1044. X+    "Ryhm\x84numeron vaihto %d:ksi ei onnistunut\n",
  1045. X+    "K\x84ytt\x84j\x84numeron vaihto %d:ksi ei onnistunut\n",
  1046. X+    "Muisti ei riit\x84 ymp\x84rist\x94lle\n",
  1047. X+    "Puuttuva '='-merkki",
  1048. X+    "Puuttuva muuttujanimi",
  1049. X+    "Puuttuva lauseke",
  1050. X+    "P\x84iv\x84n asetus %s:ksi ei onnitus\n",
  1051. X+    "Remind: tarkenne '-i': %s\n",
  1052. X+    "Ei viestej\x84.",
  1053. X+    "%d viesti(\x84) t\x84m\x84n p\x84iv\x84n jonossa.\n",
  1054. X+ #else
  1055. X+    "Ok",
  1056. X+    "Puuttuva ']'",
  1057. X+    "Puuttuva lainausmerkki",
  1058. X+    "Liian monimutkainen lauseke - liikaa operaattoreita",
  1059. X+    "Liian monimutkainen lauseke - liikaa operandeja",
  1060. X+    "Puuttuva ')'",
  1061. X+    "M{{rittelem{t|n funktio",
  1062. X+    "Virheellinen merkki",
  1063. X+    "Kaksipaikkainen operaattori puuttuu",
  1064. X+    "Muisti loppui",
  1065. X+    "Virheellinen luku",
  1066. X+    "Operaattoripino tyhj{ - sis{inen virhe",
  1067. X+    "Muuttujapino tyhj{ - sis{inen virhe",
  1068. X+    "Tyyppimuunnos ei onnistu",
  1069. X+    "Virheellinen tyyppi",
  1070. X+    "Liian suuri p{iv{ys",
  1071. X+    "Pinovirhe - sis{inen virhe",
  1072. X+    "Jako nollalla",
  1073. X+    "M{{rittelem{t|n funktio",
  1074. X+    "Odottamaton rivin loppu",
  1075. X+    "Odottamaton tiedoston loppu",
  1076. X+    "Sy|tt|- tai tulostusvirhe",
  1077. X+    "Liian pitk{ rivi",
  1078. X+    "Sis{inen virhe",
  1079. X+    "Virheellinen p{iv{ys",
  1080. X+    "Liian v{h{n argumentteja",
  1081. X+    "Liian paljon argumentteja",
  1082. X+    "Virheellinen aika",
  1083. X+    "Liian suuri luku",
  1084. X+    "Liian pieni luku",
  1085. X+    "Tiedoston avaus ei onnistu",
  1086. X+    "Liian monta sis{kk{ist{ INCLUDEa",
  1087. X+    "J{sennysvirhe",
  1088. X+    "Laukaisuhetken laskenta ei onnistu",
  1089. X+    "Liian monta sis{kk{ist{ IF-lausetta",
  1090. X+    "ELSE ilman IF-lausetta",
  1091. X+    "ENDIF ilman IF-lausetta",
  1092. X+    "Kaikkia viikonp{ivi{ ei voi j{tt{{ pois",
  1093. X+    "Ylim{{r{isi{ merkkej{ rivill{",
  1094. X+    "POP-OMIT-CONTEXT ilman PUSH-OMIT-CONTEXTia",
  1095. X+    "RUN-lauseen k{ytt| estetty",
  1096. X+    "Arvoaluevirhe",
  1097. X+    "Virheellinen tunniste",
  1098. X+    "Rekursiivinen funktiokutsu havaittu",
  1099. X+    "",
  1100. X+    "J{rjestelm{muuttujan muuttaminen ei onnistu",
  1101. X+    "C-kirjastofunktio ei pysty esitt{m{{n p{iv{yst{ tai aikaa",
  1102. X+    "Sis{isen funktion m{{ritelm{{ yritettiin muuttaa",
  1103. X+    "Lausekkeessa ei voi olla sis{kk{isi{ funktiom{{ritelmi{",
  1104. X+    "P{iv{yksen t{ytyy olla t{ydellinen toistokertoimessa",
  1105. X+    "Vuosi annettu kahdesti",
  1106. X+    "Kuukausi annettu kahdesti",
  1107. X+    "P{iv{ annettu kahdesti",
  1108. X+    "Tuntematon sana tai merkki",
  1109. X+    "OMIT-komennossa on annettava kuukausi ja p{iv{",
  1110. X+    "Liian monta osittaista OMIT-komentoa",
  1111. X+    "Liian monta t{ydellist{ OMIT-komentoa",
  1112. X+    "Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia",
  1113. X+    "Virhe tiedoston luvussa",
  1114. X+    "Pilkku puuttuu",
  1115. X+    "Virheellinen juutalainen p{iv{ys",
  1116. X+    "IIF vaatii parittoman m{{r{n argumentteja",
  1117. X+    "Varoitus: puuttuva ENDIF",
  1118. X+    "Pilkku puuttuu",
  1119. X+    "Viikonp{iv{ annettu kahdesti",
  1120. X+    "K{yt{ vain yht{ komennoista BEFORE, AFTER ja SKIP",
  1121. X+    "Sis{kk{isi{ MSG-, MSF- ja RUN-lauseita ei voi k{ytt{{ lausekkeessa",
  1122. X+    "Toistokerroin annettu kahdesti",
  1123. X+    "Delta-arvo annettu kahdesti",
  1124. X+    "Peruutusarvo annettu kahdesti",
  1125. X+    "ONCE-avainsanaa k{ytetty kahdesti. (Hah.)",
  1126. X+    "AT-sanan per{st{ puuttuu aika",
  1127. X+    "UNTIL-sanaa k{ytetty kahdesti",
  1128. X+    "Ep{t{ydellinen p{iv{ys",
  1129. X+    "SCANFROM-sanaa k{ytetty kahdesti",
  1130. X+    "Muuttuja",
  1131. X+    "Arvo",
  1132. X+    "*M[[RITTELEM[T\\N*",
  1133. X+    "Siirryt{{n funktioon",
  1134. X+    "Poistutaan funktiosta",
  1135. X+    "Vanhentunut",
  1136. X+    "fork() ep{onnistui - jonomuistutukset eiv{t toimi",
  1137. X+    "Tiedoston avaus ei onnistu",
  1138. X+    "Virheellinen j{rjestelm{p{iv{ys: vuosi on v{hemm{n kuin %d\n",
  1139. X+    "Tuntematon virheenetsint{tarkenne '%c'\n",
  1140. X+    "Tuntematon tarkenne '%c'\n",
  1141. X+    "Tuntematon k{ytt{j{ '%s'\n",
  1142. X+    "Ryhm{numeron vaihto %d:ksi ei onnistunut\n",
  1143. X+    "K{ytt{j{numeron vaihto %d:ksi ei onnistunut\n",
  1144. X+    "Muisti ei riit{ ymp{rist|lle\n",
  1145. X+    "Puuttuva '='-merkki",
  1146. X+    "Puuttuva muuttujanimi",
  1147. X+    "Puuttuva lauseke",
  1148. X+    "P{iv{n asetus %s:ksi ei onnitus\n",
  1149. X+    "Remind: tarkenne '-i': %s\n",
  1150. X+    "Ei viestej{.",
  1151. X+    "%d viesti({) t{m{n p{iv{n jonossa.\n",
  1152. X+ #endif
  1153. X+ };
  1154. X+ #endif /* MK_GLOBALS */
  1155. X+ 
  1156. X+ /* The following is only used in init.c */
  1157. X+ #ifdef L_IN_INIT
  1158. X+ #define L_USAGE_OVERRIDE 1
  1159. X+ #ifdef HAVE_PROTOS
  1160. X+ PUBLIC void Usage(void)
  1161. X+ #else
  1162. X+ void Usage()
  1163. X+ #endif /* HAVE_PROTOS */
  1164. X+ {
  1165. X+    fprintf(ErrFp, "\nREMIND %s (%s version) Copyright 1992, 1993 by David F. Skoll\n", VERSION, L_LANGNAME);
  1166. X+ #ifdef BETA
  1167. X+    fprintf(ErrFp, ">>>> BETAVERSIO <<<<\n");
  1168. X+ #endif
  1169. X+ #if defined(ISOLATIN1)
  1170. X+    fprintf(ErrFp, "K\xE4ytt\xF6: remind [tarkenteet] tiedosto [p\xE4iv\xE4ys]\n");
  1171. X+    fprintf(ErrFp, "Tarkenteet:\n");
  1172. X+    fprintf(ErrFp, " -n     Tulosta viestien seuraavat esiintymiskerrat yksink. muodossa\n");
  1173. X+    fprintf(ErrFp, " -r     Est\xE4 RUN-lauseiden k\xE4ytt\xF6\n");
  1174. X+    fprintf(ErrFp, " -c[n]  Tulosta n:n kuukauden kalenteri (oletus 1)\n");
  1175. X+    fprintf(ErrFp, " -c+[n] Tulosta n:n viikon kalenteri (oletus 1)\n");
  1176. X+    fprintf(ErrFp, " -w[n[,p[,s]]] Aseta kalenterin leveys, tasaus ja v\xE4lit\n");
  1177. X+    fprintf(ErrFp, " -s[+][n] Tulosta n:n kuukauden (viikon) 'yksink. kalenteri' (oletus 1)\n");
  1178. X+    fprintf(ErrFp, " -p[n]  Kuten -s, mutta tulosta rem2ps:lle sopivassa muodossa\n");
  1179. X+    fprintf(ErrFp, " -v     Laveat tulostukset\n");
  1180. X+    fprintf(ErrFp, " -o     \xC4l\xE4 noudata ONCE-lauseita\n");
  1181. X+    fprintf(ErrFp, " -t     Laukaise kaikki viestit deltan arvosta v\xE4litt\xE4m\xE4tt\xE4\n");
  1182. X+    fprintf(ErrFp, " -h     Suppeat tulostukset\n");
  1183. X+ #ifdef HAVE_QUEUED
  1184. X+    fprintf(ErrFp, " -a     \xC4l\xE4 laukaise viestej\xE4 heti - lis\xE4\xE4 ne jonoon\n");
  1185. X+    fprintf(ErrFp, " -q     \xC4l\xE4 lis\xE4\xE4 viestej\xE4 jonoon\n");
  1186. X+    fprintf(ErrFp, " -f     Laukaise viestit, pysy etualalla\n");
  1187. X+    fprintf(ErrFp, " -z[n]  K\xE4ynnisty demonina, her\xE4tys n:n (5:n) minuutin v\xE4lein\n");
  1188. X+ #endif
  1189. X+    fprintf(ErrFp, " -d...  Virheenetsint\xE4: e=echo x=expr-eval t=trig v=dumpvars l=showline\n");
  1190. X+    fprintf(ErrFp, " -e     Ohjaa virhetulostus stdout-vuohon\n");
  1191. X+    fprintf(ErrFp, " -b[n]  Ajan ilmaisu: 0=ap/ip, 1=24 tuntia, 2=ei aikoja\n");
  1192. X+    fprintf(ErrFp, " -x[n]  SATISFY-lauseen toistoraja (oletus 150)\n");
  1193. X+    fprintf(ErrFp, " -kcmd  Suorita 'cmd' MSG-tyyppisille viesteille\n");
  1194. X+    fprintf(ErrFp, " -g[d[d]] Lajittele viestit p\xE4iv\xE4yksen ja ajan mukaan\n");
  1195. X+    fprintf(ErrFp, " -ivar=val Alusta muuttuja var arvolla val ja s\xE4ilyt\xE4 var\n");
  1196. X+    fprintf(ErrFp, " -m     Aloita kalenteri maanantaista eik\xE4 sunnuntaista");
  1197. X+    exit(1);
  1198. X+ #elif defined(IBMEXTENDED)
  1199. X+    fprintf(ErrFp, "K\x84ytt\x94: remind [tarkenteet] tiedosto [p\x84iv\x84ys]\n");
  1200. X+    fprintf(ErrFp, "Tarkenteet:\n");
  1201. X+    fprintf(ErrFp, " -n     Tulosta viestien seuraavat esiintymiskerrat yksink. muodossa\n");
  1202. X+    fprintf(ErrFp, " -r     Est\x84 RUN-lauseiden k\x84ytt\x94\n");
  1203. X+    fprintf(ErrFp, " -c[n]  Tulosta n:n kuukauden kalenteri (oletus 1)\n");
  1204. X+    fprintf(ErrFp, " -c+[n] Tulosta n:n viikon kalenteri (oletus 1)\n");
  1205. X+    fprintf(ErrFp, " -w[n[,p[,s]]] Aseta kalenterin leveys, tasaus ja v\x84lit\n");
  1206. X+    fprintf(ErrFp, " -s[+][n] Tulosta n:n kuukauden (viikon) 'yksink. kalenteri' (oletus 1)\n");
  1207. X+    fprintf(ErrFp, " -p[n]  Kuten -s, mutta tulosta rem2ps:lle sopivassa muodossa\n");
  1208. X+    fprintf(ErrFp, " -v     Laveat tulostukset\n");
  1209. X+    fprintf(ErrFp, " -o     \x8El\x84 noudata ONCE-lauseita\n");
  1210. X+    fprintf(ErrFp, " -t     Laukaise kaikki viestit deltan arvosta v\x84litt\x84m\x84tt\x84\n");
  1211. X+    fprintf(ErrFp, " -h     Suppeat tulostukset\n");
  1212. X+ #ifdef HAVE_QUEUED
  1213. X+    fprintf(ErrFp, " -a     \x8El\x84 laukaise viestej\x84 heti - lis\x84\x84 ne jonoon\n");
  1214. X+    fprintf(ErrFp, " -q     \x8El\x84 lis\x84\x84 viestej\x84 jonoon\n");
  1215. X+    fprintf(ErrFp, " -f     Laukaise viestit, pysy etualalla\n");
  1216. X+    fprintf(ErrFp, " -z[n]  K\x84ynnisty demonina, her\x84tys n:n (5:n) minuutin v\x84lein\n");
  1217. X+ #endif
  1218. X+    fprintf(ErrFp, " -d...  Virheenetsint\x84: e=echo x=expr-eval t=trig v=dumpvars l=showline\n");
  1219. X+    fprintf(ErrFp, " -e     Ohjaa virhetulostus stdout-vuohon\n");
  1220. X+    fprintf(ErrFp, " -b[n]  Ajan ilmaisu: 0=ap/ip, 1=24 tuntia, 2=ei aikoja\n");
  1221. X+    fprintf(ErrFp, " -x[n]  SATISFY-lauseen toistoraja (oletus 150)\n");
  1222. X+    fprintf(ErrFp, " -kcmd  Suorita 'cmd' MSG-tyyppisille viesteille\n");
  1223. X+    fprintf(ErrFp, " -g[d[d]] Lajittele viestit p\x84iv\x84yksen ja ajan mukaan\n");
  1224. X+    fprintf(ErrFp, " -ivar=val Alusta muuttuja var arvolla val ja s\x84ilyt\x84 var\n");
  1225. X+    fprintf(ErrFp, " -m     Aloita kalenteri maanantaista eik\x84 sunnuntaista");
  1226. X+    exit(1);
  1227. X+ #else
  1228. X+    fprintf(ErrFp, "K{ytt|: remind [tarkenteet] tiedosto [p{iv{ys]\n");
  1229. X+    fprintf(ErrFp, "Tarkenteet:\n");
  1230. X+    fprintf(ErrFp, " -n     Tulosta viestien seuraavat esiintymiskerrat yksink. muodossa\n");
  1231. X+    fprintf(ErrFp, " -r     Est{ RUN-lauseiden k{ytt|\n");
  1232. X+    fprintf(ErrFp, " -c[n]  Tulosta n:n kuukauden kalenteri (oletus 1)\n");
  1233. X+    fprintf(ErrFp, " -c+[n] Tulosta n:n viikon kalenteri (oletus 1)\n");
  1234. X+    fprintf(ErrFp, " -w[n[,p[,s]]] Aseta kalenterin leveys, tasaus ja v{lit\n");
  1235. X+    fprintf(ErrFp, " -s[+][n] Tulosta n:n kuukauden (viikon) 'yksink. kalenteri' (oletus 1)\n");
  1236. X+    fprintf(ErrFp, " -p[n]  Kuten -s, mutta tulosta rem2ps:lle sopivassa muodossa\n");
  1237. X+    fprintf(ErrFp, " -v     Laveat tulostukset\n");
  1238. X+    fprintf(ErrFp, " -o     [l{ noudata ONCE-lauseita\n");
  1239. X+    fprintf(ErrFp, " -t     Laukaise kaikki viestit deltan arvosta v{litt{m{tt{\n");
  1240. X+    fprintf(ErrFp, " -h     Suppeat tulostukset\n");
  1241. X+ #ifdef HAVE_QUEUED
  1242. X+    fprintf(ErrFp, " -a     [l{ laukaise viestej{ heti - lis{{ ne jonoon\n");
  1243. X+    fprintf(ErrFp, " -q     [l{ lis{{ viestej{ jonoon\n");
  1244. X+    fprintf(ErrFp, " -f     Laukaise viestit, pysy etualalla\n");
  1245. X+    fprintf(ErrFp, " -z[n]  K{ynnisty demonina, her{tys n:n (5:n) minuutin v{lein\n");
  1246. X+ #endif
  1247. X+    fprintf(ErrFp, " -d...  Virheenetsint{: e=echo x=expr-eval t=trig v=dumpvars l=showline\n");
  1248. X+    fprintf(ErrFp, " -e     Ohjaa virhetulostus stdout-vuohon\n");
  1249. X+    fprintf(ErrFp, " -b[n]  Ajan ilmaisu: 0=ap/ip, 1=24 tuntia, 2=ei aikoja\n");
  1250. X+    fprintf(ErrFp, " -x[n]  SATISFY-lauseen toistoraja (oletus 150)\n");
  1251. X+    fprintf(ErrFp, " -kcmd  Suorita 'cmd' MSG-tyyppisille viesteille\n");
  1252. X+    fprintf(ErrFp, " -g[d[d]] Lajittele viestit p{iv{yksen ja ajan mukaan\n");
  1253. X+    fprintf(ErrFp, " -ivar=val Alusta muuttuja var arvolla val ja s{ilyt{ var\n");
  1254. X+    fprintf(ErrFp, " -m     Aloita kalenteri maanantaista eik{ sunnuntaista");
  1255. X+    exit(1);
  1256. X+ #endif
  1257. X+ }
  1258. X+ #endif /* L_IN_INIT */
  1259. END_OF_FILE
  1260.   if test 43820 -ne `wc -c <'patch.09.B'`; then
  1261.     echo shar: \"'patch.09.B'\" unpacked with wrong size!
  1262.   elif test -f 'patch.09.A' && test -f 'patch.09.C' && test -f 'patch.09.D'
  1263.   then
  1264.     echo shar: Combining  \"'patch.09'\" \(145785 characters\)
  1265.     cat 'patch.09.A' 'patch.09.B' 'patch.09.C' 'patch.09.D' > 'patch.09'
  1266.     if test 145785 -ne `wc -c <'patch.09'`; then
  1267.       echo shar: \"'patch.09'\" combined with wrong size!
  1268.     else
  1269.       rm patch.09.A patch.09.B patch.09.C patch.09.D
  1270.     fi
  1271.   fi
  1272.   # end of 'patch.09.B'
  1273. fi
  1274. echo shar: End of archive 1 \(of 4\).
  1275. cp /dev/null ark1isdone
  1276. MISSING=""
  1277. for I in 1 2 3 4 ; do
  1278.     if test ! -f ark${I}isdone ; then
  1279.     MISSING="${MISSING} ${I}"
  1280.     fi
  1281. done
  1282. if test "${MISSING}" = "" ; then
  1283.     echo You have unpacked all 4 archives.
  1284.     rm -f ark[1-9]isdone
  1285. else
  1286.     echo You still must unpack the following archives:
  1287.     echo "        " ${MISSING}
  1288. fi
  1289. exit 0
  1290. exit 0 # Just in case...
  1291.