home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume14 / mp-2.4.5 / part02 < prev    next >
Encoding:
Text File  |  1990-08-29  |  47.9 KB  |  1,638 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v14i068: Mp v2.4.5 - the mail/news pretty printer (Part 2 of 2).
  3. from: rburridge@Sun.COM (Rich Burridge)
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 14, Issue 68
  7. Submitted-by: rburridge@Sun.COM (Rich Burridge)
  8. Archive-name: mp-2.4.5/part02
  9.  
  10. ------CUT HERE------mp.shar.part2------CUT HERE------
  11. #! /bin/sh
  12. # this is a shell archive, meaning:
  13. # 1. Remove everything above the #! /bin/sh line
  14. # 2. Save the resulting text in a file.
  15. # 3. Execute the file with /bin/sh to create the files:
  16. #    Makefile.dist
  17. #    mailp
  18. #    mp.1
  19. #    mp.el
  20. #    Data (directory)
  21. #    mp.pro.ps
  22. #    mp.pro.alt.ps
  23. #    mp.pro.filofax.ps
  24. #    mp.pro.timeman.ps
  25. # This archive created: Wed Aug 29 12:25:57 EST 1990
  26. #
  27. #
  28. export PATH; PATH=/bin:$PATH
  29. #
  30. if [ -f Makefile.dist ]
  31. then
  32. echo shar: will not over-write existing file Makefile.dist
  33. else
  34. echo shar: extracting 'Makefile.dist',     2759 characters
  35. cat > Makefile.dist <<'Funky_Stuff'
  36. #
  37. #  Makefile for mp, the PostScript pretty printer.
  38. #
  39. #  @(#)Makefile.dist 1.1 90/08/29
  40. #
  41. #  Copyright (c) Steve Holden and Rich Burridge.
  42. #                All rights reserved.
  43. #
  44. #  Permission is given to distribute these sources, as long as the
  45. #  copyright messages are not removed, and no monies are exchanged.
  46. #
  47. #  No responsibility is taken for any errors inherent either
  48. #  to the comments or the code of this program, but if reported
  49. #  to me then an attempt will be made to fix them.
  50. #
  51. #=====================================================================
  52. #
  53. #  It is possible to change the location of the mp prologue file
  54. #  with the -p command line option. It can also be defined at compile
  55. #  time, by uncommenting the macro definition below and setting
  56. #  appropriately. If it's not present, then a sensible default value
  57. #  is used.
  58. #
  59. #PROLOGUE = -DPROLOGUE=\"$(LIBDIR)\"
  60. #---------------------------------------------------------------------
  61. #  Not all machines have the index() string library function. If you
  62. #  don't have this function then you should uncomment the NOINDEX
  63. #  definition below.
  64. #
  65. #NOINDEX         = -DNOINDEX
  66. #=====================================================================
  67. #
  68. #  Default locations where mp files will be installed.
  69. #  You might wish to alter these values.
  70. #
  71. BINDIR   = /usr/local/bin
  72. LIBDIR   = /usr/local/lib
  73. MANDIR   = /usr/man/man$(MANSECT)
  74. MANSECT  = l
  75. #
  76. #  Compilation flags and standard macro definitions.
  77. #
  78. CFLAGS   = -g $(NOINDEX) $(PROLOGUE)
  79. LDFLAGS  =
  80. #=================================================================
  81.  
  82. .KEEPSTATE:
  83.  
  84. BINARIES = mp
  85.  
  86. SRCS     = header.c io.c main.c misc.c print.c
  87. OBJS     = header.o io.o main.o misc.o print.o
  88.  
  89. HDRS     = extern.h mp.h patchlevel.h
  90. OTHERS   = README Makefile.dist mailp mp.1 \
  91.        MANIFEST FILES CHANGES TODO \
  92.        mp.el mp.pro.ps mp.pro.alt.ps mp.pro.filofax.ps \
  93.        mp.pro.timeman.ps Data
  94.  
  95. SFILES1  = $(SRCS) $(HDRS) README MANIFEST FILES CHANGES TODO
  96. SFILES2  = Makefile.dist mailp mp.1 mp.el Data \
  97.        mp.pro.ps mp.pro.alt.ps mp.pro.filofax.ps mp.pro.timeman.ps
  98.  
  99. all:       $(BINARIES)
  100.  
  101. mp:        $(OBJS)
  102.        cc $(LDFLAGS) -o mp $(OBJS)
  103.  
  104. install:   $(BINARIES)
  105.        install -s -m 751 mp $(BINDIR)
  106.        install -c -m 644 mp.1 $(MANDIR)/mp.$(MANSECT)
  107.        install -c -m 644 mp.pro.ps $(LIBDIR)
  108.        install -c -m 644 mp.pro.filofax.ps $(LIBDIR)
  109.        install -c -m 644 mp.pro.timeman.ps $(LIBDIR)
  110.  
  111. clean:;    rm -rf mp *.o core
  112.  
  113. create:    SCCS
  114.        -sccs create $(SRCS) $(OTHERS)
  115.  
  116. lint:;     lint $(SRCS)
  117.  
  118. shar:;     shar.script $(SFILES1) > Part1
  119.        shar.script $(SFILES2) > Part2
  120.  
  121. SCCS:
  122.        mkdir SCCS
  123.        chmod 755 SCCS
  124.  
  125. header.o:    mp.h extern.h
  126. io.o:        mp.h extern.h
  127. main.o:        mp.h
  128. misc.o:        mp.h extern.h patchlevel.h
  129. print.o:    mp.h extern.h
  130. Funky_Stuff
  131. len=`wc -c < Makefile.dist`
  132. if [ $len !=     2759 ] ; then
  133. echo error: Makefile.dist was $len bytes long, should have been     2759
  134. fi
  135. fi # end of overwriting check
  136. if [ -f mailp ]
  137. then
  138. echo shar: will not over-write existing file mailp
  139. else
  140. echo shar: extracting 'mailp',      655 characters
  141. cat > mailp <<'Funky_Stuff'
  142. #! /bin/sh
  143. #
  144. #  @(#)mailp 1.5 89/06/28
  145. #
  146. #  mailp, newsp, filep, digestp, filofaxp and timemanp
  147. #  shell script de lancement de mp
  148. #  (mail/news/file/digest/filofax/time-manager pretty printer)
  149. #
  150. #  Original: Bruno Pillard - October 1988.
  151. #  Modified: Rich Burridge - June 1989.
  152.  
  153. BIN=/usr/local/bin
  154.  
  155. case $0 in
  156.     *mailp)    PROG=mp       ;; 
  157.     *newsp)       PROG=mp       ;;
  158.     *digestp)  PROG="mp -d"     ;;
  159.     *filep)       PROG="mp -o"  ;;
  160.     *filofaxp) PROG="mp -f      ;;
  161.     *timemanp) PROG="mp -t      ;;
  162.     *)    echo Unknown pretty printer: $0
  163.         exit;;
  164. esac
  165.  
  166. if    [ $# -eq 0 ]
  167. then
  168.     set - " - "
  169. fi
  170. while [ $# -gt 0 ]
  171. do
  172.     /bin/cat $1 | ${BIN}/${PROG} | lpr -h -Plw
  173.     shift
  174. done
  175. Funky_Stuff
  176. len=`wc -c < mailp`
  177. if [ $len !=      655 ] ; then
  178. echo error: mailp was $len bytes long, should have been      655
  179. fi
  180. fi # end of overwriting check
  181. if [ -f mp.1 ]
  182. then
  183. echo shar: will not over-write existing file mp.1
  184. else
  185. echo shar: extracting 'mp.1',     4805 characters
  186. cat > mp.1 <<'Funky_Stuff'
  187. .\" @(#)mp.1 1.13 90/04/12
  188. .TH MP 1L "12 April 1990"
  189. .SH NAME
  190. mp \- Postscript pretty printer
  191. .SH SYNOPSIS
  192. .B mp
  193. [
  194. .B \-a
  195. ]
  196. [
  197. .B \-d
  198. ]
  199. [
  200. .B \-f
  201. ]
  202. [
  203. .B \-l
  204. ]
  205. [
  206. .B \-m
  207. ]
  208. [
  209. .B \-o
  210. ]
  211. [
  212. .B \-p
  213. .I prologue
  214. ]
  215. [
  216. .B \-s
  217. .I subject
  218. ]
  219. [
  220. .B \-t
  221. ]
  222. [
  223. .B \-v
  224. ]
  225. [
  226. .B \-?
  227. ]
  228. [
  229. .IR filename .\|.\|.
  230. ]
  231. .SH DESCRIPTION
  232. .B mp
  233. will read each
  234. .I filename
  235. in sequence and generate a Postscript file on standard output,
  236. which is a pretty print of the original. If no filename argument is given
  237. .B mp
  238. reads from the standard input. If the standard input is a terminal, input
  239. is terminated by an
  240. .SM EOF
  241. signal, usually
  242. .SM CTRL-D\s0.
  243. .LP
  244. The input files to
  245. .B mp
  246. can be mail items, news articles or ordinary ASCII files. It is also
  247. possible to print out complete mail folders and digests.
  248. .PP
  249. The format adopted has textured areas containing banner information
  250. at the top and bottom of every page.
  251. .PP
  252. .B mp
  253. was originally designed to be used in conjunction with the print
  254. button in the
  255. .B "mailtool (1)"
  256. program, or the
  257. .B pipe
  258. command from within mail. Add (or alter) the following two line in your
  259. .B .mailrc
  260. file:
  261. .in +1.0i
  262. .nf
  263. \fCset printmail='mp | lpr'
  264. set cmd="mp | lpr &"\fP
  265. .fi
  266. .in -1.0i
  267. .PP
  268. Source the
  269. .B .mailrc
  270. file again, and you are ready.
  271. .PP
  272. A useful alias to use used in conjunction with your
  273. .I .cshrc
  274. file for printing out ordinary text files is:
  275. .in +1.0i
  276. .nf
  277. \fCalias print 'mp -o -s "\\!*" <\\!* | lpr'\fP
  278. .fi
  279. .in -1.0i
  280. .SH OPTIONS
  281. .TP
  282. .B \-a
  283. The file on standard input is a news article, and should be printed with
  284. "Article from
  285. .I newsgroup
  286. " in the top banner, where
  287. .I newsgroup
  288. is the first news group found on the Newsgroups: line.
  289. .TP
  290. .B \-d
  291. The file on standard input is a digest so print accordingly.
  292. .TP
  293. .B \-f
  294. The file on standard input is printed specifically was use with Filofax,
  295. a personal organiser.
  296. .TP
  297. .B \-l
  298. Prints output in landscape mode. Two pages of text will be printed per
  299. sheet of paper.
  300. .TP
  301. .B \-m
  302. The file on standard input is a mail folder, so print out multiple messages.
  303. .TP
  304. .B \-o
  305. The file on standard input is an ASCII file so print accordingly.
  306. .TP
  307. .BI \-p " prologue filename"
  308. Employ
  309. .I "prologue filename"
  310. as the Postscript prologue file. This overrides any previously defined
  311. prologue values.
  312. The
  313. .I mp
  314. prologue file is determined by first looking for the environment variable
  315. .IR MP_PROLOGUE .
  316. This will be the directory where the mp prologue files are to be found.
  317. Three different prologue files are used. Normally the prologue file is
  318. .I mp.pro.ps
  319. but if the
  320. .I \-f
  321. option is used, then the prologue file is called
  322. .I mp.pro.filofax.ps
  323. and if the
  324. .I \-t
  325. option is used, then the prologue file is
  326. .I mp.pro.timeman.ps
  327. If
  328. .I MP_PROLOGUE
  329. isn't found, then the default location is used. The default location is
  330. .IR /usr/local/lib/mp.pro.ps .
  331. .TP
  332. .BI \-s " subject"
  333. Use
  334. .I " subject"
  335. as the new subject for the printout. If you are printing ordinary text
  336. files which have been specified on the command line, the the subject will
  337. default to the name of each of these files.
  338. .TP
  339. .B \-t
  340. The file on standard input is printed specifically for use with Time Manager,
  341. a personal organiser.
  342. .TP
  343. .B \-v
  344. Print the version number of this release of the
  345. .B mp
  346. program.
  347. .TP
  348. .B \-?
  349. Print the usage line for this program. Note that the
  350. .B ?
  351. character should be escaped if running from
  352. .BR csh (1).
  353. .SH FILES
  354. .TP
  355. .B /usr/local/bin/mp
  356. executable
  357. .TP
  358. .B /usr/local/lib/mp.pro.ps
  359. PostScript prologue to define required vocabulary for mail printing.
  360. Editing this file will allow you to introduce some stylistic variation
  361. in the printing of mail.
  362. .TP
  363. .B /usr/local/lib/mp.pro.filofax.ps
  364. Postscript prologue used to print out files in Filofax format.
  365. .TP
  366. .B /usr/local/lib/mp.pro.timeman.ps
  367. PostScript prologue used to print out files in Time Manager format.
  368. .SH "SEE ALSO"
  369. mail(1)
  370. .SH AUTHORS
  371. Original version by Steve Holden.
  372. .PP
  373. Converted to C, modified and maintained by Rich Burridge, Sun Microsystems Australia,
  374. .PP
  375. Original modified to handle net news articles and MH mail by Bruno Pillard, Chorus Systemes, France,
  376. .PP
  377. Handling of mail digests added by Dave Glowacki of Public Works Computer Services, St Paul, MN.
  378. .PP
  379. Manual page for the initial version revised by Rick Rodgers, UCSF School of Pharmacy, San Francicso.
  380. .PP
  381. Support for Personal Organiser printing style added by Douglas Buchanan,
  382. Sun Microsystems Europe.
  383. .PP
  384. Substantial modifications to header parsing by Jeremy Webber,
  385. Computer Science Department, University of Adelaide, Australia.
  386. .PP
  387. Support for printing multiple files and subject line filename print for
  388. ordinary files added by Sam Manoharan, Edinburgh University.
  389. .PP
  390. Support for landscape mode written by Michael Tuciarone.
  391. .PP
  392. Rich Burridge,             Domain: richb@Aus.Sun.COM
  393. .nf
  394. PHONE: +61 2 413 2666   Path: {uunet,mcvax,ukc}!munnari!sunaus.oz!richb
  395. .fi
  396. Funky_Stuff
  397. len=`wc -c < mp.1`
  398. if [ $len !=     4805 ] ; then
  399. echo error: mp.1 was $len bytes long, should have been     4805
  400. fi
  401. fi # end of overwriting check
  402. if [ -f mp.el ]
  403. then
  404. echo shar: will not over-write existing file mp.el
  405. else
  406. echo shar: extracting 'mp.el',     2297 characters
  407. cat > mp.el <<'Funky_Stuff'
  408. ;;  @(#)mp.el 1.1 90/08/14
  409. ;;
  410. ;;  From Roger Riggs <riggs@suneast.East.Sun.COM>
  411. ;;
  412. ;;  I and other people here have created functions to print with mp.
  413. ;;  This is particularly good with mail and newsgroup articles
  414. ;;  and the PostScript page decorations can be tailored if you know a
  415. ;;  little PostScript. Both are variations of the original lpr and print
  416. ;;  buffer/region code.
  417. ;;
  418. ;;  Interface to mp.
  419.  
  420. (defun mp-buffer ()
  421.   "Print buffer contents as with Unix command `mp | lpr -h'.
  422. `lpr-switches' is a list of extra switches (strings) to pass to lpr."
  423.   (interactive)
  424.   (mp-region-1 (point-min) (point-max)))
  425.  
  426. (defun mp-region (start end)
  427.   "Print region contents as with Unix command `mp | lpr -h'.
  428. `lpr-switches' is a list of extra switches (strings) to pass to lpr."
  429.   (interactive "r")
  430.   (mp-region-1 start end))
  431.  
  432. (defun mp-region-1 (start end)
  433.   "Print region using mp to lpr"
  434.   (interactive)
  435.   (let ((mp-switches) (msg "Formatting...") (oldbuf (current-buffer)))
  436.     (cond ((string-equal major-mode 'gnus-Article-mode)
  437.        (if (and (= (point-min) start) (= (point-max) end))
  438.            (setq mp-switches (list "-a"))
  439.          (setq mp-switches (list "-o" "-s" (mail-fetch-field "Subject")))))
  440.       ((string-equal major-mode 'rmail-mode)
  441.        (if (and (= (point-min) start) (= (point-max) end))
  442.            (setq mp-switches nil)
  443.          (setq mp-switches (list "-o" "-s" (mail-fetch-field "Subject")))))
  444.       (t 
  445.        (setq mp-switches
  446.          (list "-o" "-s" (concat "\"" (buffer-name) " Emacs buffer" "\"")))))
  447.     (save-excursion
  448.       (message "%s" msg)
  449.       (set-buffer (get-buffer-create "*spool temp*"))
  450.       (widen) (erase-buffer)
  451.       (insert-buffer-substring oldbuf start end)
  452.       (if (/= tab-width 8)
  453.       (progn
  454.         (setq msg (concat msg " tabs..."))
  455.         (message "%s" msg)
  456.         (setq tab-width tab-width)
  457.         (untabify (point-min) (point-max))))
  458.       
  459.       (setq msg (concat msg " mp..."))
  460.       (message "%s" msg)
  461.       (apply 'call-process-region
  462.          (nconc (list (point-min) (point-max) "mp" t t nil )
  463.             mp-switches))
  464.       
  465.       (setq msg (concat msg " lpr..."))
  466.       (message "%s" msg)
  467.       (apply 'call-process-region
  468.          (nconc (list (point-min) (point-max) "lpr" t nil nil "-h" )
  469.             lpr-switches))
  470.       (setq msg (concat msg " done."))
  471.       (message "%s" msg))))
  472. Funky_Stuff
  473. len=`wc -c < mp.el`
  474. if [ $len !=     2297 ] ; then
  475. echo error: mp.el was $len bytes long, should have been     2297
  476. fi
  477. fi # end of overwriting check
  478. if [ -f Data ]
  479. then
  480. echo shar: can not write a directory over file Data
  481. else
  482. if [ ! -d Data ]
  483. then
  484. echo shar: creating directory Data
  485. mkdir Data
  486. fi
  487. echo shar: entering directory Data
  488. cd Data
  489. if [ -f Mail ]
  490. then
  491. echo shar: will not over-write existing file Mail
  492. else
  493. echo shar: extracting 'Mail',     1296 characters
  494. cat > Mail <<'Funky_Stuff'
  495. Return-Path: rb-archive-server@Aus.Sun.COM
  496. Received: by hawk from Sun.COM ([192.9.9.1])
  497.         for pmaresch (from rb-archive-server@Aus.Sun.COM)
  498.         id <AA23438@hawk>; Thu, 5 Jul 90 09:44:34 edt
  499. Received: from Aus.Sun.COM ([129.158.10.50]) by Sun.COM (4.1/SMI-4.1)
  500.     id AA04815; Thu, 5 Jul 90 06:48:22 PDT
  501. Received: from stard.Aus.Sun.COM by Aus.Sun.COM (4.1/SMI-4.1)
  502.     id AA28245; Thu, 5 Jul 90 23:51:17 EST
  503. Received: by stard.Aus.Sun.COM (4.1/SMI-4.1)
  504.     id AA19213; Thu, 5 Jul 90 23:46:07 EST
  505. Date: Thu, 5 Jul 90 23:46:07 EST
  506. Message-Id: <9007051346.AA19213@stard.Aus.Sun.COM>
  507. From: Rich Burridge Archive Service <rb-archive-server@Aus.Sun.COM>
  508. To: pmaresch@hawk.ulowell.edu (pierre mareschal)
  509. Subject: ack receipt of your archive retrieval request
  510. In-Reply-To: Request from pmaresch@hawk.ulowell.edu (pierre mareschal) dated Thu Jul 5 23:46:02 EST 1990
  511.  
  512. The Rich Burridge Archive Server has received your request.
  513. All of the files that you asked for are in the database.
  514. Your request is 66314 bytes. It has been placed in the mailer's work
  515. queue. The work queue is periodically processed by the archive mailer, which
  516. always sends the shortest queued request first. The length of time that it
  517. takes to receive your request will depend on how many smaller requests are in
  518. front of it in line.
  519. Funky_Stuff
  520. len=`wc -c < Mail`
  521. if [ $len !=     1296 ] ; then
  522. echo error: Mail was $len bytes long, should have been     1296
  523. fi
  524. fi # end of overwriting check
  525. if [ -f MailFolder ]
  526. then
  527. echo shar: will not over-write existing file MailFolder
  528. else
  529. echo shar: extracting 'MailFolder',      318 characters
  530. cat > MailFolder <<'Funky_Stuff'
  531. From pmaresch Thu Jul  5 13:35:28 1990
  532. Date: Thu, 5 Jul 90 13:35:22 EDT
  533. From: pmaresch (Pierre Mareschal)
  534. To: pmaresch
  535. Subject: Subject 2
  536. Status: R
  537.  
  538. Text Two
  539.  
  540. From pmaresch Thu Jul  5 13:35:28 1990
  541. Date: Thu, 5 Jul 90 13:35:03 EDT
  542. From: pmaresch (Pierre Mareschal)
  543. To: pmaresch
  544. Subject: Subject 1
  545. Status: R
  546.  
  547. Text One
  548.  
  549. Funky_Stuff
  550. len=`wc -c < MailFolder`
  551. if [ $len !=      318 ] ; then
  552. echo error: MailFolder was $len bytes long, should have been      318
  553. fi
  554. fi # end of overwriting check
  555. if [ -f NewsArticle1 ]
  556. then
  557. echo shar: will not over-write existing file NewsArticle1
  558. else
  559. echo shar: extracting 'NewsArticle1',     2882 characters
  560. cat > NewsArticle1 <<'Funky_Stuff'
  561. Article: 3019 of +Comp.object
  562. Path: swan!bbn.com!mit-eddie!rutgers!uwm.edu!rpi!image.soe.clarkson.edu!news
  563. From: cline@cheetah.ece.clarkson.edu (Marshall Cline)
  564. Newsgroups: comp.lang.c++,comp.object
  565. Subject: ``Object Oriented Design'' by Grady Booch -- A First Look
  566. Message-ID: <CLINE.90Jun2004848@cheetah.ece.clarkson.edu>
  567. Date: 2 Jun 90 04:51:44 GMT
  568. Sender: news@sun.soe.clarkson.edu
  569. Reply-To: cline@sun.soe.clarkson.edu (Marshall Cline)
  570. Distribution: comp
  571. Organization: (I don't speak for the) ECE Dept, Clarkson Univ, Potsdam, NY
  572. Lines: 44
  573. Xref: swan comp.lang.c++:3019
  574.  
  575. Benjamin/Cummings just sent me a fresh copy of Grady Booch's new book:
  576. ``Object Oriented Design''.  I had heard good things about it 4th hand, and
  577. I must say that I haven't been let down.  I like the numerous good examples,
  578. the Software Engineering approach, and the emphasis on design.  I've skimmed
  579. it, and will give a more complete report in a few weeks.  But my first
  580. impressions were very positive.  It's about time we had a good OOD book!
  581.  
  582.     Author:        Grady Booch
  583.     Title:        Object Oriented Design with Applications
  584.     Publisher:    Benjamin/Cummings
  585.     ISBN:        0-8053-0091-0
  586.     Copyright:    1991
  587.  
  588. A couple of initial thoughts: the book is not based on any one OOPL, but
  589. rather gives roughly equal time to C++, Smalltalk, CLOS, Object Pascal, and
  590. Ada.  He doesn't seem to `put down' any one of these, but rather discusses
  591. their relative strengths and weaknesses in a sensible manner.
  592.  
  593. The book is distinctly *not* a book from which you could learn all the
  594. nuiances of any of these languages; rather it centers on the concepts of how
  595. you do *design* in the OO paradigm.
  596.  
  597. Booch seems very concerned with unconstrained software complexity.  OOP
  598. isn't just a fun theoretical ideal to him, but it's something which may
  599. alleviate the software crisis we are presently battling.  He's wants
  600. `industrial strength software'.  Healthy dose of reality.
  601.  
  602. The Section on Applications looks good.  It's quite a healthy chunk of the
  603. book (250 pgs out of around 500 total).  There's a rather large example in
  604. each of the major programming languages.  The key (as I understand Booch's
  605. goals) is not `this language or that', but rather how can these problems be
  606. *designed* using OO technology.  His method is: design a little, implement a
  607. little, think it through and redesign, etc.  Most of us are embarassed to
  608. admit that we do it that way too rather than getting it right the first time.
  609.  
  610. Marshall Cline
  611. --
  612. ==============================================================================
  613. Marshall Cline / Asst.Prof / ECE Dept / Clarkson Univ / Potsdam, NY 13676
  614. cline@sun.soe.clarkson.edu / Bitnet:BH0W@CLUTX / uunet!clutx.clarkson.edu!bh0w
  615. Voice: 315-268-3868 / FAX: 315-268-7600
  616. Career search in progress; ECE faculty; research oriented; will send vita.
  617. ==============================================================================
  618. Funky_Stuff
  619. len=`wc -c < NewsArticle1`
  620. if [ $len !=     2882 ] ; then
  621. echo error: NewsArticle1 was $len bytes long, should have been     2882
  622. fi
  623. fi # end of overwriting check
  624. if [ -f NewsArticle2 ]
  625. then
  626. echo shar: will not over-write existing file NewsArticle2
  627. else
  628. echo shar: extracting 'NewsArticle2',     1239 characters
  629. cat > NewsArticle2 <<'Funky_Stuff'
  630. Article: 3375 of +Comp.lang.c++
  631. Path: swan!bbn.com!mit-eddie!rutgers!cs.utexas.edu!usc!samsung!uakari.primate.wisc.edu!uflorida!unf7!shite
  632. From: shite@unf7.UUCP (Stephen Hite)
  633. Newsgroups: comp.lang.c++
  634. Subject: Grady Booch's OOD book is excellent!
  635. Keywords: design
  636. Message-ID: <272@unf7.UUCP>
  637. Date: 28 Jun 90 05:52:17 GMT
  638. Organization: Univ. of N. Florida, Jacksonville
  639. Lines: 19
  640.  
  641.  
  642.   Put "Object Oriented Design With Applications" by Grady Booch on your
  643. "A+ shelf" right next to the others that are already there :-) ("C++ Primer" 
  644. by Stanley Lippman, "C++ Answer Book" by Tony Hansen, the new annotated
  645. C++ reference by Bjarne and "Object-oriented Software Construction by
  646. Bertrand Meyer).
  647.  
  648.   It reads very well for me...almost reminiscent in its ease of explanation
  649. as Andy Tanenbaum's Operating System book (Minix).  Booch has a great
  650. command of references that blend well with his explanations.  The bibliography
  651. is also truly amazing...I know, I'm probably sounding naieve...but it's
  652. fun learning from someone who knows what they're talking about!  
  653.  
  654. ...Now, if only Andy Koenig would write a "C++ Traps and Pitfalls" book...
  655. I would achieve total nirvana!  :-)
  656.  
  657. -----------------------------
  658. Steve Hite
  659. ...gatech!uflorida!unf7!shite
  660. Funky_Stuff
  661. len=`wc -c < NewsArticle2`
  662. if [ $len !=     1239 ] ; then
  663. echo error: NewsArticle2 was $len bytes long, should have been     1239
  664. fi
  665. fi # end of overwriting check
  666. if [ -f NewsDigest ]
  667. then
  668. echo shar: will not over-write existing file NewsDigest
  669. else
  670. echo shar: extracting 'NewsDigest',    10627 characters
  671. cat > NewsDigest <<'Funky_Stuff'
  672. From swan!bbn.com!nic!bunny!husc6!rutgers!tut.cis.ohio-state.edu!ucbvax!CSL.SRI.COM!risks Thu Jul  5 10:07:45 EDT 1990
  673. Article 85 of comp.risks:
  674. Path: swan!bbn.com!nic!bunny!husc6!rutgers!tut.cis.ohio-state.edu!ucbvax!CSL.SRI.COM!risks
  675. From: risks@CSL.SRI.COM (RISKS Forum)
  676. Newsgroups: comp.risks
  677. Subject: RISKS DIGEST 10.14
  678. Message-ID: <CMM.0.88.646701765.risks@hercules.csl.sri.com>
  679. Date: 29 Jun 90 23:22:45 GMT
  680. Sender: daemon@ucbvax.BERKELEY.EDU
  681. Reply-To: risks@csl.sri.com
  682. Organization: The Internet
  683. Lines: 208
  684. Approved: risks@csl.sri.com
  685.  
  686. RISKS-LIST: RISKS-FORUM Digest  Friday 29 June 1990   Volume 10 : Issue 14
  687.  
  688.         FORUM ON RISKS TO THE PUBLIC IN COMPUTERS AND RELATED SYSTEMS 
  689.    ACM Committee on Computers and Public Policy, Peter G. Neumann, moderator
  690.  
  691. Contents:
  692.   RISKS WILL BE ON VACATION (RISKS Forum)
  693.   Hubble (Dimitri Mihalas via Mark Bartelt)
  694.   Re: "Unbreakable Math Code Finally Broken" (Richard A. Schumacher)
  695.   More on the Risks of searching the Lexis fulltext database (Peter D. Junger)
  696.   Re: info on carpal tunnel syndrome (Terry Kane)
  697.  
  698. The RISKS Forum is moderated.  Contributions should be relevant, sound, in good
  699. taste, objective, coherent, concise, and nonrepetitious.  Diversity is welcome.
  700. CONTRIBUTIONS to RISKS@CSL.SRI.COM, with relevant, substantive "Subject:" line
  701. (otherwise they may be ignored).  REQUESTS to RISKS-Request@CSL.SRI.COM.
  702. TO FTP VOL i ISSUE j:  ftp CRVAX.sri.com<CR>login anonymous<CR>AnyNonNullPW<CR>
  703. cd sys$user2:[risks]<CR>GET RISKS-i.j <CR>; j is TWO digits.  Vol summaries in 
  704. risks-i.00 (j=0); "dir risks-*.*<CR>" gives directory listing of back issues.
  705. ALL CONTRIBUTIONS ARE CONSIDERED AS PERSONAL COMMENTS; USUAL DISCLAIMERS APPLY.
  706.  
  707. ----------------------------------------------------------------------
  708.  
  709. Date: Fri, 29 Jun 1990 13:34:45 PDT
  710. From: RISKS Forum <risks@csl.sri.com>
  711. Subject: RISKS WILL BE ON VACATION
  712.  
  713. for the next three weeks.  There might be an issue or two, but don't bet on it.
  714. Keep sending in the good stuff in any case.  Thanks.  The Management
  715.  
  716. ------------------------------
  717.  
  718. Date: Fri, 29 Jun 90 13:20:14 EDT
  719. From: Mark Bartelt <sysmark@orca.cita.utoronto.ca>
  720. Subject: Hubble
  721.  
  722. [This is a message from Dimitri Mihalas (dmihalas@altair.astro.uiuc.edu).
  723. Mark Bartelt, Canadian Institute of Theoretical Astrophysics]
  724.  
  725. in case you have not heard: from a reliable inside source i found out that the
  726. problem with ST is that the SOFTWARE driving the polisher was defective. the
  727. corrections for spherical aberration were put in with the wrong sign.
  728. consequently the mirror is not corrected for sph. abb., but has an added dose
  729. of it.
  730.  
  731. the error was not detected during testing because no test with collimated
  732. light was ever done. (editorial remark: unthinkable!) apparently this was
  733. a $30M economy measure in the face of the Challenger accident. likewise
  734. none of the optics were ever tested in vacuum. the primary was and is
  735. "perfect" relative to the specified curve; but alas the specification
  736. was wrong. sigh.
  737.  
  738. from my amateur astronomer days (does that include 1990?) i recall that
  739. spherical aberration is EASY to detect with the foucault test, which is
  740. done with a pinhole, not collimated light. it is hard to believe that
  741. ANYONE could have made such a blunder..
  742.  
  743. the only reason that people know this much is that the same software
  744. was used for AXAF. the errors there were so huge as to be immediately
  745. noticeable, and when the software was corrected, the mirror was "perfect".
  746. i don't know whether the information from axaf was available prior to
  747. the launch of ST, but it seems that it had to be. in which case one
  748. wonders why PE didn't issue a "hold everything!".
  749.  
  750. the future: no chance of bringing the whole telescope down for a refit.
  751. best plan is to design compensating optics into the lightpath for future 
  752. instruments: relatively easy to do. but that will still take 3-5 years.
  753.  
  754. i suppose it's "win a few, lose a few..." but i personally think that
  755. nasa, the government, and the people should stick it into PE and TURN
  756. it hard until they agree to refund the cost of the mistake and of the repairs.
  757. i'm sick of seeing defense and defense-related contractors get away
  758. with bloody murder and just get fatter and fatter on the profits.
  759.  
  760. back to theory
  761. dimitri
  762.  
  763. ------------------------------
  764.  
  765. Date: 28 Jun 90 18:02:18 GMT
  766. From: schumach@convex.UUCP (Richard A. Schumacher)
  767. Subject: Re: "Unbreakable Math Code Finally Broken"
  768. References: <CMM.0.88.646532535.risks@hercules.csl.sri.com>
  769.  
  770. Y. Radai <RADAI1@HBUNOS.BITNET> writes:
  771. >  So the statements that an impenetrable code has been broken and that
  772. >organizations need to change their cryptographic systems because of this
  773. >achievement seem a wee bit exaggerated.
  774.  
  775. On the other hand, the NPR report mentioned that the Bank of England
  776. was planning to use a 150 digit number as a key in a new transaction
  777. processing system, but changed it to something "much larger" when
  778. they learned of the 9th Fermat prime factoring.
  779.  
  780. ------------------------------
  781.  
  782. Date: 29 Jun 90 16:25:00 EST
  783. From: junger@cwru.cwru.edu
  784. Subject: More on the Risks of searching the Lexis fulltext database
  785.  
  786.         A while back I sent to RISKS an (itself rather buggy) description of a
  787. bug that turned up in the Lexis/Nexis database when I was doing date delimited
  788. searches in the library containing the fulltext opinions of the United States
  789. Supreme Court.  A representative of Mead Data Central--the owner of the
  790. Nexis/Lexis service--has since contacted me to explain the nature of the bug
  791. and to assure me that it will be corrected on June 30.
  792.  
  793.         In the first place, it appears that the bug is _not_ in the
  794. basic software that searches through the database for cases decided on,
  795. after, or before a specified date.  Secondly, it is clear that the bug
  796. did _not_ cause me to miss any cases that I should have located, it just
  797. turned up some additonal cases that were not decided within the period
  798. that I was searching.  That is the good news.
  799.  
  800.         The bad news is that the problem relates to the way that the
  801. Lexis/Nexis system parses dates in the database and that the proposed
  802. fix will work only until the year 2000, at which time a new variant of
  803. the bug should cause real havoc.
  804.  
  805.         Here is a corrected version of the type of search that exposed
  806. the bug:
  807.  
  808.         Entitlement and date(aft 12/31/39 and bef 1/1/50)
  809.  
  810. That search, when conducted in the Supreme Court file, should find all
  811. opinions, and only those opinions, decided by the United States Supreme
  812. Court during the decade of the 1940's that contained the word
  813. `entitlement'.  (Lexis warned me that it assumed that I meant after
  814. 12/31/1939 and before 1/1/1950.)  As it happens, there are no cases that meet
  815. those criteria.  But Lexis reported that it had found a dozen or so
  816. cases--cases that did contain the word `entitlement' but that were
  817. decided in the 1960's, 70's, and 80's.
  818.  
  819.         It seems that a couple of months ago Mead Data Central decided
  820. to include the argued-date as well as the decided-date within the date
  821. field, and it is this enhancement that caused the bug.  The fix that
  822. will be implimented this Saturday is to once again exclude the
  823. argued-date from the date field.
  824.  
  825.         Since cases are not always decided in the same year that they
  826. are argued, including the argued-date in the date field will, of course,
  827. cause some cases to be reported as occurring in two different decades,
  828. which would be a nuisance.  But that is only a miniscule part of the
  829. bug.  The real problem occurs because some cases are argued on more than
  830. one date, so that the argued-date field would appear in the database as,
  831. say:  "argued June 22-23, 1980" and the decided date field as: "July 3,
  832. 1980)."  At first glance that would not seem to cause any problem.  And
  833. it wouldn't, except for the fact that the Lexis system parses the date
  834. fields in the same way that it parses user input, and thus concludes
  835. that "June 22-23" means "June 22-1923".  Thus our hypothetical case
  836. would have a date of July 3, 1980 (which is after December 31, 1939) and
  837. would also have a date of June 22, 1923 (which is before January 1,
  838. 1950).  If that case--decided, you will recall, in 1980--contains the
  839. word `entitlement' it will turn up in my search for cases in the decade
  840. of the 1940's, and in my searches in the 1950's, and in the 1960's, etc.
  841.  
  842.         I can understand why the system parses user input so as to
  843. interpret 1/1/50 as 1/1/1950--but I never dreamed that a system would
  844. parse its own data.  According to the people at Mead Data Central,
  845. however, their system parses the data fields in exactly the same way
  846. that it parses user input.  It seems that the Lexis/Nexis database
  847. contains texts--especially news reports--with dates in the form
  848. "nn/nn/nn". Today those dates are parsed as "nn/nn/19nn", but what is
  849. going to happen in the year 2000?
  850.  
  851.         It would seem that ambiguous data in the data base will be much
  852. harder to find and fix than a software bug.
  853.  
  854. Peter D. Junger, CWRU Law School
  855.  
  856. ------------------------------
  857.  
  858. Date: 29 Jun 90 19:36:47 GMT
  859. From: tok@stiatl.UUCP (Terry Kane)
  860. Subject: Re: info on carpal tunnel syndrome (CTS)
  861.  
  862. I am a long time sufferer of CTS.  The first symptoms I recall were during
  863. high school, nearly twenty years ago, but it was not properly diagnosed
  864. until I was in excruciating pain, dropping things, not sleeping because
  865. my hand was burning at night and more, all about four years ago.
  866.  
  867. Tests said that I had "a very mild case"!?  That reassuring info did not
  868. make my hand better.  I used splints, Motrin, ice until I finally insisted
  869. on the carpal tunnel relief operation.  That was two years ago, this month,
  870. but I still have recurrences - especially when I meet the same RISK which
  871. pushed my CTS over the edge: using a MOUSE.
  872.  
  873. The typical mouse promotes all the bad habits that can result in CTS symptoms.
  874. One typically rests the heel of the palm on the mouse, and press the chord
  875. keys - frequently with constant pressure (on Apple's mice, the required
  876. pressure is substantial for me, and their new mouse reqlly aggravates the
  877. problem with its stylized, aerodynamic "look").  I cannot use a mouse to this
  878. day without suffering a "mouse hangover".
  879.  
  880. Track balls are better for me, but I still would rather avoid them.
  881.  
  882. I am really looking forward to _getting_my_hands_on_ ;-) a touch screen.
  883. I've seen some very nice ones with quite satisfactory resolution!
  884.  
  885. And please - If you think that you might have CTS - don't waste time.
  886.             See Your M.D.
  887.  
  888. Terry Kane, Sales Technologies, Inc, Atlanta, GA  (404) 841-4000
  889.  
  890. ------------------------------
  891.  
  892. End of RISKS-FORUM Digest 10.14
  893. ************************
  894.  
  895.  
  896. Funky_Stuff
  897. len=`wc -c < NewsDigest`
  898. if [ $len !=    10627 ] ; then
  899. echo error: NewsDigest was $len bytes long, should have been    10627
  900. fi
  901. fi # end of overwriting check
  902. cd ..
  903. echo shar: done with directory Data
  904. fi
  905. if [ -f mp.pro.ps ]
  906. then
  907. echo shar: will not over-write existing file mp.pro.ps
  908. else
  909. echo shar: extracting 'mp.pro.ps',     3592 characters
  910. cat > mp.pro.ps <<'Funky_Stuff'
  911. %!PS-Adobe-1.0
  912. %%Creator: Steve Holden
  913. %%Modified: Rich Burridge
  914. %%Title: @(#)mp.pro.ps 1.7 90/08/29
  915. %%CreationDate: see above
  916. %%PageLength 60
  917. %%LineLength 80
  918. %%DocumentFonts: Times-Bold Times-Roman Courier
  919. %%Pages: (atend)
  920. %%EndComments
  921.  
  922. /inch { 72 mul } def
  923. /leftedge 0 def
  924. /rightedge 8.5 inch def
  925. /bottomedge 0 def
  926. /topedge 11 inch def
  927. /LandscapeMode false def
  928.  
  929. %Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  930.  
  931. /backspacefont {
  932.     /Courier findfont dup length dict begin
  933.         { %forall
  934.             1 index /FID eq { pop pop } { def } ifelse
  935.         } forall
  936.         currentdict /UniqueID known { %if
  937.               /UniqueID UniqueID 16#800000 xor def
  938.         } if
  939.         CharStrings length 1 add dict begin
  940.             CharStrings { def } forall
  941.           /backspace { -600 0 setcharwidth } bind def
  942.             currentdict
  943.       end
  944.         /CharStrings exch def
  945.         /Encoding Encoding 256 array copy def
  946.         Encoding 8 /backspace put
  947.         currentdict
  948.     end
  949.     definefont
  950. } bind def
  951.  
  952. /CourierBack backspacefont
  953.  
  954. /FontSize 9 def
  955. /font1d /Times-Bold            findfont def
  956. /font2d /Times-Roman           findfont def
  957. /font3d /CourierBack           findfont def
  958. /fontHd /Helvetica-BoldOblique findfont 14 scalefont def
  959. /fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  960. /fontNd /Times-Bold            findfont 12 scalefont def
  961.  
  962. /BoldFont      { font1d FontSize scalefont setfont } def
  963. /pf            { font2d FontSize scalefont setfont } def
  964. /sf            { font3d FontSize scalefont setfont } def
  965. /fontH         { fontHd setfont } def
  966. /fontD         { fontH2 setfont } def
  967. /fontN         { fontNd setfont } def
  968.  
  969. /graybox    % x1 y1 x2 y2 graybox --
  970. {
  971.     newpath
  972.       4 -1 roll 2 copy            % y2 x1
  973.       10 sub exch moveto
  974.       4 -1 roll 2 copy            % x1 y1
  975.       10 180 270 arc
  976.       4 -1 roll 1 copy 3 -1 roll    % x2 y1
  977.       10 270 0 arc
  978.       3 -1 roll 1 copy 3 1 roll        % x1 y2 x2 y2
  979.       10 0 90 arc
  980.       10 90 180 arc
  981.     closepath
  982.     0.75 setgray fill
  983. } def
  984.  
  985. /endpage    % page_number endpage --
  986. {
  987.   gsave
  988.     fontH
  989.     leftedge 50 add topedge 56 sub    % bottom lt corner
  990.     rightedge 50 sub topedge 36 sub    % top rt corner
  991.     graybox
  992.     newpath
  993.       rightedge leftedge sub 2 div topedge 46 sub 15 0 360 arc
  994.       gsave
  995.         1 setgray fill
  996.       grestore
  997.     closepath
  998.     0 setgray stroke
  999.     leftedge 50 add topedge 52 sub moveto
  1000.     MailFor show
  1001.     User show
  1002.     fontD
  1003.     rightedge 50 sub TimeNow stringwidth pop sub
  1004.     topedge 52 sub moveto TimeNow show
  1005.     % center the page number
  1006.     fontN
  1007.     dup stringwidth
  1008.        topedge 52 sub exch sub                % y-centered
  1009.        exch 2 div rightedge leftedge sub 2 div exch sub    % x-centered
  1010.        exch moveto show
  1011.     fontH
  1012.     leftedge 50 add bottomedge 50 add    % bottom lt corner
  1013.     rightedge 50 sub bottomedge 70 add    % top rt corner
  1014.     graybox
  1015.     0 setgray
  1016.     leftedge 50 add bottomedge 54 add moveto Subject show
  1017.   grestore
  1018.   showpage              % display it
  1019.   newpage               % reset parameters for next
  1020. } def
  1021.  
  1022. /newpage
  1023. {
  1024.   LandscapeMode {setlandscape} if
  1025.   /lct 0 def
  1026.   /ypos topedge 92 sub def
  1027.   /xpos leftedge 50 add def
  1028.   xpos ypos moveto
  1029.   sf
  1030. } def
  1031.  
  1032. /setlandscape
  1033. {
  1034.   612 0 translate
  1035.   90 rotate
  1036.   /FontSize 7 def
  1037. } def
  1038.  
  1039. /Landscape
  1040. {
  1041.   /LandscapeMode true def
  1042.   /rightedge 11 inch def
  1043.   /topedge 8.5 inch def
  1044.   newpage
  1045. } def
  1046.  
  1047. /endcol
  1048. {
  1049.   /lct 0 def
  1050.   /ypos topedge 92 sub def
  1051.   /xpos rightedge leftedge sub 2 div def
  1052.   xpos ypos moveto
  1053. } def
  1054.  
  1055. /showline
  1056. {
  1057.   show
  1058.   /ypos ypos FontSize sub def
  1059.   xpos ypos moveto
  1060. } def
  1061.  
  1062. newpage                    % establish first page parameters
  1063. Funky_Stuff
  1064. len=`wc -c < mp.pro.ps`
  1065. if [ $len !=     3592 ] ; then
  1066. echo error: mp.pro.ps was $len bytes long, should have been     3592
  1067. fi
  1068. fi # end of overwriting check
  1069. if [ -f mp.pro.alt.ps ]
  1070. then
  1071. echo shar: will not over-write existing file mp.pro.alt.ps
  1072. else
  1073. echo shar: extracting 'mp.pro.alt.ps',     3444 characters
  1074. cat > mp.pro.alt.ps <<'Funky_Stuff'
  1075. %!PS-Adobe-1.0
  1076. %%Creator: Steve Holden
  1077. %%Modified: Rich Burridge
  1078. %%Title: @(#)mp.pro.alt.ps 1.3 90/08/29
  1079. %%CreationDate: see above
  1080. %%PageLength 60
  1081. %%LineLength 80
  1082. %%DocumentFonts: Times-Bold Times-Roman Courier
  1083. %%Pages: (atend)
  1084. %%EndComments
  1085.  
  1086. /inch { 72 mul } def
  1087. /leftedge 0 def
  1088. /rightedge 8.5 inch def
  1089. /bottomedge 0 def
  1090. /topedge 11 inch def
  1091. /LandscapeMode false def
  1092.  
  1093. %Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  1094.  
  1095. /backspacefont {
  1096.     /Courier findfont dup length dict begin
  1097.         { %forall
  1098.             1 index /FID eq { pop pop } { def } ifelse
  1099.         } forall
  1100.         currentdict /UniqueID known { %if
  1101.               /UniqueID UniqueID 16#800000 xor def
  1102.         } if
  1103.         CharStrings length 1 add dict begin
  1104.             CharStrings { def } forall
  1105.           /backspace { -600 0 setcharwidth } bind def
  1106.             currentdict
  1107.       end
  1108.         /CharStrings exch def
  1109.         /Encoding Encoding 256 array copy def
  1110.         Encoding 8 /backspace put
  1111.         currentdict
  1112.     end
  1113.     definefont
  1114. } bind def
  1115.  
  1116. /CourierBack backspacefont
  1117.  
  1118. /FontSize 9 def
  1119. /font1d /Times-Bold            findfont def
  1120. /font2d /Times-Roman           findfont def
  1121. /font3d /CourierBack           findfont def
  1122. /fontHd /Helvetica-BoldOblique findfont 14 scalefont def
  1123. /fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  1124. /fontNd /Times-Bold            findfont 12 scalefont def
  1125.  
  1126. /BoldFont      { font1d FontSize scalefont setfont } def
  1127. /pf            { font2d FontSize scalefont setfont } def
  1128. /sf            { font3d FontSize scalefont setfont } def
  1129. /fontH         { fontHd setfont } def
  1130. /fontD         { fontH2 setfont } def
  1131. /fontN         { fontNd setfont } def
  1132.  
  1133. /graybox    % x1 y1 x2 y2 graybox --
  1134. {
  1135.     newpath
  1136.       4 -1 roll 2 copy            % y2 x1
  1137.       10 sub exch moveto
  1138.       4 -1 roll 2 copy            % x1 y1
  1139.       10 180 270 arc
  1140.       4 -1 roll 1 copy 3 -1 roll    % x2 y1
  1141.       10 270 0 arc
  1142.       3 -1 roll 1 copy 3 1 roll        % x1 y2 x2 y2
  1143.       10 0 90 arc
  1144.       10 90 180 arc
  1145.     closepath
  1146.     0.75 setgray fill
  1147. } def
  1148.  
  1149. /endpage    % page_number endpage --
  1150. {
  1151.   gsave
  1152.     fontH
  1153.     leftedge 50 add topedge 56 sub    % bottom lt corner
  1154.     rightedge 50 sub topedge 36 sub    % top rt corner
  1155.     graybox
  1156.     0 setgray stroke
  1157.     leftedge 50 add topedge 52 sub moveto
  1158.     MailFor show
  1159.     User show
  1160.     fontD
  1161.     rightedge 50 sub TimeNow stringwidth pop sub
  1162.     topedge 52 sub moveto TimeNow show
  1163.     fontH
  1164.     leftedge 50 add bottomedge 50 add    % bottom lt corner
  1165.     rightedge 50 sub bottomedge 70 add    % top rt corner
  1166.     graybox
  1167.     0 setgray
  1168.     leftedge 50 add bottomedge 54 add moveto Subject show
  1169.     % page number of the left corner
  1170.     dup stringwidth
  1171.        bottomedge 54 add exch sub        % y-centered
  1172.        exch 2 div rightedge 54 sub exch sub    % x-centered
  1173.        exch moveto show
  1174.   grestore
  1175.   showpage              % display it
  1176.   newpage               % reset parameters for next
  1177. } def
  1178.  
  1179. /newpage
  1180. {
  1181.   LandscapeMode {setlandscape} if
  1182.   /lct 0 def
  1183.   /ypos topedge 92 sub def
  1184.   /xpos leftedge 50 add def
  1185.   xpos ypos moveto
  1186.   sf
  1187. } def
  1188.  
  1189. /setlandscape
  1190. {
  1191.   612 0 translate
  1192.   90 rotate
  1193.   /FontSize 7 def
  1194. } def
  1195.  
  1196. /Landscape
  1197. {
  1198.   /LandscapeMode true def
  1199.   /rightedge 11 inch def
  1200.   /topedge 8.5 inch def
  1201.   newpage
  1202. } def
  1203.  
  1204. /endcol
  1205. {
  1206.   /lct 0 def
  1207.   /ypos topedge 92 sub def
  1208.   /xpos rightedge leftedge sub 2 div def
  1209.   xpos ypos moveto
  1210. } def
  1211.  
  1212. /showline
  1213. {
  1214.   show
  1215.   /ypos ypos FontSize sub def
  1216.   xpos ypos moveto
  1217. } def
  1218.  
  1219. newpage                    % establish first page parameters
  1220. Funky_Stuff
  1221. len=`wc -c < mp.pro.alt.ps`
  1222. if [ $len !=     3444 ] ; then
  1223. echo error: mp.pro.alt.ps was $len bytes long, should have been     3444
  1224. fi
  1225. fi # end of overwriting check
  1226. if [ -f mp.pro.filofax.ps ]
  1227. then
  1228. echo shar: will not over-write existing file mp.pro.filofax.ps
  1229. else
  1230. echo shar: extracting 'mp.pro.filofax.ps',     4808 characters
  1231. cat > mp.pro.filofax.ps <<'Funky_Stuff'
  1232. %!PS-Adobe-1.0
  1233. %%Creator: Steve Holden
  1234. %%Modifed: Rich Burridge
  1235. %%Title: @(#)mp.pro.filofax.ps 1.4 90/08/29
  1236. %%CreationDate: see above
  1237. %%PageLength 60
  1238. %%LineLength 80
  1239. %%DocumentFonts: Times-Bold Times-Roman Courier
  1240. %%Pages: (atend)
  1241. %%EndComments
  1242.  
  1243. %Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  1244.  
  1245. /backspacefont {
  1246.     /Courier findfont dup length dict begin
  1247.         { %forall
  1248.             1 index /FID eq { pop pop } { def } ifelse
  1249.         } forall
  1250.         currentdict /UniqueID known { %if
  1251.               /UniqueID UniqueID 16#800000 xor def
  1252.         } if
  1253.         CharStrings length 1 add dict begin
  1254.             CharStrings { def } forall
  1255.           /backspace { -600 0 setcharwidth } bind def
  1256.             currentdict
  1257.       end
  1258.         /CharStrings exch def
  1259.         /Encoding Encoding 256 array copy def
  1260.         Encoding 8 /backspace put
  1261.         currentdict
  1262.     end
  1263.     definefont
  1264. } bind def
  1265.  
  1266. /CourierBack backspacefont
  1267.  
  1268. /FontSize 11 def
  1269. /font1d /Times-Bold            findfont def
  1270. /font2d /Times-Roman           findfont def
  1271. /font3d /CourierBack           findfont def
  1272. /fontHd /Helvetica-BoldOblique findfont 15 scalefont def
  1273. /fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  1274. /fontNd /Times-Bold            findfont 12 scalefont def
  1275.  
  1276. /BoldFont      { font1d FontSize scalefont setfont } def
  1277. /pf            { font2d FontSize scalefont setfont } def
  1278. /sf            { font3d 10       scalefont setfont } def
  1279. /fontH         { fontHd setfont } def
  1280. /fontD         { fontH2 setfont } def
  1281. /fontN         { fontNd setfont } def
  1282.  
  1283.  
  1284. sf
  1285. %% stick in all the fudge factors here. May need changing for page sizes,
  1286. %% laserwriter setups etc?
  1287. %%
  1288. /binderspace 100 def
  1289. /filowidth 484 def
  1290. /filoheight 972 def
  1291. /margin 12 def
  1292. /xleft binderspace 6 add def
  1293. /yco filoheight 50 sub def            % space at the top
  1294. /xright filowidth binderspace add 30 sub def    % space at right
  1295.  
  1296. /endpage
  1297. {
  1298.   gsave
  1299.     fontH
  1300.     % draw the top for owner
  1301.     newpath
  1302.       xleft 10 sub yco moveto
  1303.       xleft yco 20 sub 10 180 270 arc
  1304.       xright yco 20 sub 10 270 0 arc
  1305.       xright yco 10 0 90 arc
  1306.       xleft yco 10 90 180 arc
  1307.     closepath
  1308.     0.90 setgray fill
  1309.     0 setgray stroke
  1310.     xleft yco 16 sub moveto
  1311.     MailFor show
  1312.     User show
  1313.     fontD
  1314.     TimeNow stringwidth pop neg xright add yco 16 sub moveto TimeNow show
  1315.     fontN
  1316.     % dup stringwidth pop 2 div neg 318 add 858 moveto show
  1317.     fontH
  1318.     % lower box for subject etc
  1319.     newpath
  1320.       xleft 10 sub 60 moveto
  1321.       xleft 40 10 180 270 arc
  1322.       xright 40 10 270 0 arc
  1323.       xright 60 10 0 90 arc
  1324.       xleft 60 10 90 180 arc
  1325.     closepath
  1326.     0.90 setgray fill
  1327.     % stick the page number just a few points in from the right hand edge
  1328.     newpath
  1329.       xright 10 sub 50 15 0 360 arc
  1330.       gsave
  1331.         1 setgray fill
  1332.       grestore
  1333.     closepath
  1334.     0 setgray stroke
  1335.     xleft 44 moveto Subject show
  1336.     fontN
  1337.     % position and print the page number
  1338.     dup stringwidth pop 2 div neg xright 10 sub add 46 moveto show
  1339.     fontH
  1340.   grestore
  1341.   modu 2 eq eof 0 ne or { showpage } if    % do a 'form feed'
  1342.                     % if ready for it
  1343.   eof 0 eq { newpage } if    % reset parameters for next if not end of file
  1344. } def
  1345.  
  1346. /endfile
  1347. {
  1348.      /eof 1 def
  1349.      endpage
  1350. } def
  1351.  
  1352. /xo 36 def
  1353. /yo 0 def
  1354. /pageno 0 def
  1355. /modu pageno 3 mod def    % get mod to work out page pos
  1356. /eof 0 def
  1357.  
  1358. /weearc            % draws a little arc to show where the holes go
  1359. { newpath
  1360.   xo yo 4 0 360 arc
  1361.   closepath
  1362.   fill
  1363. } def
  1364.  
  1365. /filopage
  1366. { gsave
  1367. %  24 -118 translate
  1368.   /xstart filowidth modu mul def
  1369.   /xstart xstart binderspace add def
  1370.   /xfin xstart filowidth add def
  1371.   modu 0 eq {        % first break
  1372.     /yo 130 def    % show where the holes should be punched
  1373.     weearc        % except that they will normally be off the edge of
  1374.     /yo 238 def    % the page
  1375.     weearc
  1376.     /yo 346 def
  1377.     weearc
  1378.     /yo 639 def
  1379.     weearc
  1380.     /yo 742 def
  1381.     weearc
  1382.     /yo 850 def
  1383.     weearc
  1384.   } if
  1385.   [1 4] 0 setdash    % use dashed lines for marker
  1386.   newpath
  1387.   xstart 0 moveto
  1388.   xfin 0 lineto
  1389.   xfin filoheight lineto
  1390.   stroke
  1391.   grestore
  1392. } def
  1393.  
  1394. /newpage
  1395.   pageno 0 eq {            % set initial values for landscape drawing
  1396.         0.5 0.5 scale
  1397.         90 rotate
  1398.         -50 0 translate
  1399.         gsave            % save state for easy restore
  1400.     /eof 0 def
  1401.   } {
  1402.         grestore gsave        % return to preferred original state
  1403.   } ifelse            % initial setup
  1404.  
  1405.   /modu pageno 3 mod def    % get mod to work out page pos
  1406.   0 0 filoheight sub translate    % initial position (-filoheight)
  1407.   filopage            % draw neccessary page breaks
  1408.   /times filowidth modu mul def % shift origin as far right as needed
  1409.   /times times margin add def    % move right by fudge factor 12
  1410.   times 0 translate
  1411.   /lct 0 def
  1412.   /ypos filoheight 110 sub def
  1413.   xleft ypos moveto
  1414.   /pageno pageno 1 add def    % add one for the next time
  1415. } def
  1416.  
  1417. /showline
  1418. {
  1419.   show
  1420.   /ypos ypos 12 sub def
  1421.   xleft ypos moveto
  1422. } def
  1423.  
  1424. newpage            % establish first page parameters
  1425. Funky_Stuff
  1426. len=`wc -c < mp.pro.filofax.ps`
  1427. if [ $len !=     4808 ] ; then
  1428. echo error: mp.pro.filofax.ps was $len bytes long, should have been     4808
  1429. fi
  1430. fi # end of overwriting check
  1431. if [ -f mp.pro.timeman.ps ]
  1432. then
  1433. echo shar: will not over-write existing file mp.pro.timeman.ps
  1434. else
  1435. echo shar: extracting 'mp.pro.timeman.ps',     4808 characters
  1436. cat > mp.pro.timeman.ps <<'Funky_Stuff'
  1437. %!PS-Adobe-1.0
  1438. %%Creator: Steve Holden
  1439. %%Modifed: Rich Burridge
  1440. %%Title: @(#)mp.pro.timeman.ps 1.4 90/08/29
  1441. %%CreationDate: see above
  1442. %%PageLength 60
  1443. %%LineLength 80
  1444. %%DocumentFonts: Times-Bold Times-Roman Courier
  1445. %%Pages: (atend)
  1446. %%EndComments
  1447.  
  1448. %Title: backspacefont.ps suggested by Glenn Reid (Adobe Systems).
  1449.  
  1450. /backspacefont {
  1451.     /Courier findfont dup length dict begin
  1452.         { %forall
  1453.             1 index /FID eq { pop pop } { def } ifelse
  1454.         } forall
  1455.         currentdict /UniqueID known { %if
  1456.               /UniqueID UniqueID 16#800000 xor def
  1457.         } if
  1458.         CharStrings length 1 add dict begin
  1459.             CharStrings { def } forall
  1460.           /backspace { -600 0 setcharwidth } bind def
  1461.             currentdict
  1462.       end
  1463.         /CharStrings exch def
  1464.         /Encoding Encoding 256 array copy def
  1465.         Encoding 8 /backspace put
  1466.         currentdict
  1467.     end
  1468.     definefont
  1469. } bind def
  1470.  
  1471. /CourierBack backspacefont
  1472.  
  1473. /FontSize 12 def
  1474. /font1d /Times-Bold            findfont def
  1475. /font2d /Times-Roman           findfont def
  1476. /font3d /CourierBack           findfont def
  1477. /fontHd /Helvetica-BoldOblique findfont 15 scalefont def
  1478. /fontH2 /Helvetica-BoldOblique findfont 10 scalefont def
  1479. /fontNd /Times-Bold            findfont 12 scalefont def
  1480.  
  1481. /BoldFont      { font1d FontSize scalefont setfont } def
  1482. /pf            { font2d FontSize scalefont setfont } def
  1483. /sf            { font3d 11       scalefont setfont } def
  1484. /fontH         { fontHd setfont } def
  1485. /fontD         { fontH2 setfont } def
  1486. /fontN         { fontNd setfont } def
  1487.  
  1488. sf
  1489. %% stick in all the fudge factors here. May need changing for page sizes,
  1490. %% laserwriter setups etc?
  1491. %%
  1492. /binderspace 100 def
  1493. /filowidth 520 def
  1494. /filoheight 1024 def
  1495. /margin 12 def
  1496. /xleft binderspace 6 add def
  1497. /yco filoheight 50 sub def            % space at the top
  1498. /xright filowidth binderspace add 30 sub def    % space at right
  1499.  
  1500. /endpage
  1501. {
  1502.   gsave
  1503.     fontH
  1504.     % draw the top for owner
  1505.     newpath
  1506.       xleft 10 sub yco moveto
  1507.       xleft yco 20 sub 10 180 270 arc
  1508.       xright yco 20 sub 10 270 0 arc
  1509.       xright yco 10 0 90 arc
  1510.       xleft yco 10 90 180 arc
  1511.     closepath
  1512.     0.90 setgray fill
  1513.     0 setgray stroke
  1514.     xleft yco 16 sub moveto
  1515.     MailFor show
  1516.     User show
  1517.     fontD
  1518.     TimeNow stringwidth pop neg xright add yco 16 sub moveto TimeNow show
  1519.     fontN
  1520.     % dup stringwidth pop 2 div neg 318 add 858 moveto show
  1521.     fontH
  1522.     % lower box for subject etc
  1523.     newpath
  1524.       xleft 10 sub 60 moveto
  1525.       xleft 40 10 180 270 arc
  1526.       xright 40 10 270 0 arc
  1527.       xright 60 10 0 90 arc
  1528.       xleft 60 10 90 180 arc
  1529.     closepath
  1530.     0.90 setgray fill
  1531.     % stick the page number just a few points in from the right hand edge
  1532.     newpath
  1533.       xright 10 sub 50 15 0 360 arc
  1534.       gsave
  1535.         1 setgray fill
  1536.       grestore
  1537.     closepath
  1538.     0 setgray stroke
  1539.     xleft 44 moveto Subject show
  1540.     fontN
  1541.     % position and print the page number
  1542.     dup stringwidth pop 2 div neg xright 10 sub add 46 moveto show
  1543.     fontH
  1544.   grestore
  1545.   modu 2 eq eof 0 ne or { showpage } if    % do a 'form feed'
  1546.                     % if ready for it
  1547.   eof 0 eq { newpage } if    % reset parameters for next if not end of file
  1548. } def
  1549.  
  1550. /endfile
  1551. {
  1552.      /eof 1 def
  1553.      endpage
  1554. } def
  1555.  
  1556. /xo 36 def
  1557. /yo 0 def
  1558. /pageno 0 def
  1559. /modu pageno 3 mod def    % get mod to work out page pos
  1560. /eof 0 def
  1561.  
  1562. /weearc            % draws a little arc to show where the holes go
  1563. { newpath
  1564.   xo yo 4 0 360 arc
  1565.   closepath
  1566.   fill
  1567. } def
  1568.  
  1569. /filopage
  1570. { gsave
  1571. %  24 -118 translate
  1572.   /xstart filowidth modu mul def
  1573.   /xstart xstart binderspace add def
  1574.   /xfin xstart filowidth add def
  1575.   modu 0 eq {        % first break
  1576.     /yo 130 def    % show where the holes should be punched
  1577.     weearc        % except that they will normally be off the edge of
  1578.     /yo 238 def    % the page
  1579.     weearc
  1580.     /yo 346 def
  1581.     weearc
  1582.     /yo 639 def
  1583.     weearc
  1584.     /yo 742 def
  1585.     weearc
  1586.     /yo 850 def
  1587.     weearc
  1588.   } if
  1589.   [1 4] 0 setdash    % use dashed lines for marker
  1590.   newpath
  1591.   xstart 0 moveto
  1592.   xfin 0 lineto
  1593.   xfin filoheight lineto
  1594.   stroke
  1595.   grestore
  1596. } def
  1597.  
  1598. /newpage
  1599.   pageno 0 eq {            % set initial values for landscape drawing
  1600.         0.5 0.5 scale
  1601.         90 rotate
  1602.         -50 0 translate
  1603.         gsave            % save state for easy restore
  1604.     /eof 0 def
  1605.   } {
  1606.         grestore gsave        % return to preferred original state
  1607.   } ifelse            % initial setup
  1608.  
  1609.   /modu pageno 3 mod def    % get mod to work out page pos
  1610.   0 0 filoheight sub translate    % initial position (-filoheight)
  1611.   filopage            % draw neccessary page breaks
  1612.   /times filowidth modu mul def % shift origin as far right as needed
  1613.   /times times margin add def    % move right by fudge factor 12
  1614.   times 0 translate
  1615.   /lct 0 def
  1616.   /ypos filoheight 110 sub def
  1617.   xleft ypos moveto
  1618.   /pageno pageno 1 add def    % add one for the next time
  1619. } def
  1620.  
  1621. /showline
  1622. {
  1623.   show
  1624.   /ypos ypos 12 sub def
  1625.   xleft ypos moveto
  1626. } def
  1627.  
  1628. newpage            % establish first page parameters
  1629. Funky_Stuff
  1630. len=`wc -c < mp.pro.timeman.ps`
  1631. if [ $len !=     4808 ] ; then
  1632. echo error: mp.pro.timeman.ps was $len bytes long, should have been     4808
  1633. fi
  1634. fi # end of overwriting check
  1635.  
  1636.