home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / windows / x / 14227 < prev    next >
Encoding:
Internet Message Format  |  1992-07-22  |  7.4 KB

  1. Path: sparky!uunet!mcsun!fuug!demos!kiae!glas!demos!elroy.jpl!poseur.JPL.NASA.GOV!earle
  2. From: earle@poseur.JPL.NASA.GOV
  3. Newsgroups: comp.windows.x
  4. Date: 18 Jul 92 16:30 MDT
  5. Subject: ANNOUNCEMENT: New version of X11-on
  6. Sender: Notesfile to Usenet Gateway <notes@glas.apc.org>
  7. Message-ID: <1992Jul18.123036.26328@elroy.jpl>
  8. Nf-ID: #N:1992Jul18.123036.26328@elroy.jpl:76191303:001:7165
  9. Nf-From: poseur.JPL.NASA.GOV!earle    Jul 18 16:30:00 1992
  10. Lines: 186
  11.  
  12.  
  13. I have released a new version of my Perl ersatz "DocViewer" replacement
  14. for enabling the use of AnswerBook on X11-only servers.  Version 2.0 now
  15. supports AnswerBook 2.0 SMCC Version A, the version of AnswerBook released in
  16. tandem with Solaris 2.0 SMCC Version A.  This new version follows below.
  17. (It also lives on export.LCS.MIT.EDU in ~ftp/contrib/xdocviewer-2.0 with an
  18.  accompaning README file.)
  19.  
  20. What "xdocviewer-2.0" is:
  21. -------------------------
  22.  
  23. xdocviewer 2.0 is a Perl script that can be named "docviewer" and put into your
  24. search $PATH ahead of the normal directory where the AnswerBook's version of
  25. "docviewer" lives.  If this is done (it needs a small mod to your "answerbook"
  26. shell script to work properly; see below), this script will get invoked when
  27. the Navigator program goes to invoke the DocViewer to display the AnswerBook's
  28. PostScript HyperText documentation.  This gets around the problem of using
  29. AnswerBook on non-OpenWindows servers, such as plain X11 or X terminals, as
  30. the script invokes a GhostScript previewer to display the document.
  31.  
  32. What "xdocviewer-2.0" is NOT:
  33. -----------------------------
  34.  
  35. This script is most emphatically not a replacement for the "real" DocViewer
  36. that comes with AnswerBook!  It's a "crippled crutch" to merely allow you to
  37. use the Navigator and get a PostScript document up on your screen.  You lose
  38. the HyperText capability right away, and every document you choose (or
  39. manually double-click on in the Navigator) results in a new GhostScript
  40. previewer process being run, as the Navigator and GhostScript previewers don't
  41. talk to one another.  You also can't go past the end of a document (or, vice
  42. versa, go back before the start of one) and have the viewer automatically
  43. "know" how to get to the next document (or the previous document).  Etc., etc.
  44.  
  45. The problem of having the "real" DocViewer work on plain X11-only servers is
  46. being dealt with by the AnswerBook folks.  In the meantime, try this out and
  47. see if it is useful to you.  (I use it daily, as the AnswerBook is too useful
  48. a tool to not be able to use it, no matter how limited a fashion it may be.)
  49.  
  50. Prerequisites to use xdocviewer-2.0:
  51. ------------------------------------
  52.  
  53. - You need Perl (-:  I use 4.0 pl 19; I suspect 4.0 pl 35 will work fine.
  54.  
  55. - You need GhostScript.  2.4.1 is supported/preferred.  aeneas.MIT.EDU has it.
  56.  
  57. - You need a GhostScript previewer.  GhostView 1.3 and GSpreview 2.1 are the
  58.   supported previewers currently (those versions supply the "-page" option
  59.   which is needed for this to work).  Check on export or aeneas for these.
  60.  
  61. - You need the XView shared libraries - libxview, libolgx - installed somewhere
  62.   that's accessible, either /usr/lib or /usr/local/lib or someplace accessible
  63.   via LD_LIBRARY_PATH.  You can either build those libraries from the XView 3.0
  64.   distribution with R5, or else nick them from your favorite local OpenWindows
  65.   $OPENWINHOME/lib directory.  The Navigator needs these shared libraries.
  66.  
  67. - You need a BOOKINFO file (default /etc/bookinfo).  With the AnswerBook 1.3
  68.   release CD-ROM, you could create one by running the "answerbook_demo" script
  69.   and hand-editting the /tmp/bookinfo file it emits.  The Solaris 2.0 AB will
  70.   create a temporary bookinfo file on the fly and use that; e.g.:
  71.  
  72. poseur:2:1278 % head -2 /tmp/bookinfo*
  73. SUNWab_2_1:../../../../NonReloc_SUNWabook/_data:../../PostScriptDEST:../../PostScriptDEST/sr_index/SUNWab_2_1:Solaris 2.0 AnswerBook
  74. ABGTOUR:../../../../NonReloc_SUNWabook/_data:../../PostScriptDEST::Solaris 2.0 AnswerBook
  75.  
  76. (These caveats are repeated in the comments in the script below.)
  77.  
  78. Please address all bug reports/questions/comments to me:
  79.  
  80. Enjoy,
  81.  
  82.     - Greg Earle
  83.       Sun Microsystems, Inc. - Los Angeles
  84.       JPL on-site Software Support Engineer
  85.       earle@poseur.JPL.NASA.GOV, earle@Sun.COM
  86.  
  87. ------------------------------ >8  Cut here  8< ------------------------------
  88. #!/usr/local/bin/perl
  89. #
  90. #    @(#)docviewer.sh 2.0 92/07/17 SMI
  91.  
  92. # Display AnswerBook document pages using ndbm database keys and data
  93.  
  94. # If you don't have "perl", too bad.  Go get it.
  95.  
  96. # This is Version 1.0 (meaning, it's the first thing that I got to work)
  97.  
  98. # Revision history:
  99. #
  100. # 1.0Alpha    92/06/06    Initial release.  First thing I got to work
  101. # 1.0Beta    92/06/07    Changed several things thanks to Wayne Thompson
  102. #                All changes due to my own Perl brain-death
  103. # 1.0        92/06/08    BOOKINFO and GSVIEWER now have default values
  104. # 2.0        92/07/17    Fixed bugs that showed up when attempting to
  105. #                use with Solaris 2.0 AnswerBook 2.0 - things
  106. #                were not quite as they seemed.  Code is now
  107. #                more general and supports AB 2.0
  108. #
  109. # Requirements:
  110.  
  111. # Needs the XView libraries installed (libxview.s[oa].3.x and libolgx.s[oa].3.x)
  112. # somewhere reachable, either in /usr/lib or /usr/local/lib or in your X11 R[45]
  113. # lib directory or ... etc. - if the latter, e.g. $OPENWINHOME/lib, you'll
  114. # probably have to set the LD_LIBRARY_PATH variable to point to that directory
  115. # in order to pick the libraries up.  Otherwise, the Navigator program won't
  116. # come up.
  117.  
  118. # Needs BOOKINFO set (default is /etc/bookinfo) either in the environment or in
  119. # the "answerbook" script so it can find where the AnswerBook data files are
  120.  
  121. # Needs a new environment variable named GSVIEWER set to your preferred
  122. # GhostScript previewer that's available in your $PATH - common choices are
  123. # "ghostview" (requires version 1.3 to work!) or "gspreview" (requires 2.1)
  124. # Default is "gspreview" (I flipped a coin (-: )
  125.  
  126. # Warning: normal "answerbook" script puts DocViewer directory at the front of
  127. # the search path, so to get this version first, I recommend changing it; e.g.:
  128. #
  129. # *** /cdrom/AnswerBook1.3/answerbook     Thu Dec 19 11:06:28 1991
  130. # --- /usr/local/bin/answerbook   Sat Jun  6 04:20:29 1992
  131. # ***************
  132. # *** 49,53 ****
  133. #   echo $PATH | fgrep -s  "$dvbin" ||
  134. #   {
  135. # !       PATH="$dvbin:$PATH"
  136. #   }
  137. #
  138. # --- 60,65 ----
  139. #   echo $PATH | fgrep -s  "$dvbin" ||
  140. #   {
  141. # ! #     PATH="$dvbin:$PATH"
  142. # !       PATH="$PATH:$dvbin"
  143. #   }
  144.  
  145. sub getbookinfo {
  146.  
  147.     $ENV{'BOOKINFO'} = $ENV{'BOOKINFO'} || "/etc/bookinfo";
  148.  
  149.     open(BOOKINFO, $ENV{'BOOKINFO'}) || die "Can't open bookinfo file!\n";
  150.  
  151.     while (<BOOKINFO>) {
  152.         ($db, $dbpathhead, $pspathhead) = split(/:/);
  153.         if ($db eq $dbname) {
  154.             return $dbpathhead;
  155.         }
  156.     }
  157.     close(BOOKINFO);
  158. }
  159.  
  160. $ENV{'GSVIEWER'} = $ENV{'GSVIEWER'} || "gspreview";
  161.  
  162. # Kill off any running ghostview/gspreview/whatever processes
  163.  
  164. open(PS, "/bin/ps -xc 2>&1 |");
  165. while (<PS>) {
  166.     if (/$ENV{'GSVIEWER'}/) {
  167.         split(' ');
  168.         push(@pids, $_[0]);
  169.     }
  170. }
  171. close(PS);
  172. $nkilled = kill("SIGTERM", @pids);
  173.  
  174. ($dbname) = ((join($",@ARGV)) =~ /^.*<(\S+)>/);
  175. ($dbtoken) = (join('', '<', $dbname, '>', ((join($",@ARGV)) =~ /^.*>(\S+)/)));
  176.  
  177. $dbhead = &getbookinfo();
  178.  
  179. $dbpath = "$dbhead/$dbname";
  180. $pspath = "$pspathhead/$dbname";
  181.  
  182. dbmopen(ABDB, $dbpath, undef) || die "can't dbmopen AnswerBook database";
  183.  
  184. while (($key, $val) = each %ABDB) {
  185.     local ($data, $datum);
  186.  
  187.     $datum = unpack('@8A*', $key);
  188.     @data = split(/:/, $val);
  189.  
  190.     $page = @data[$#data];
  191.     $doc = @data[$#data-1];
  192.     last if (($datum eq $ARGV[$#ARGV]) || ($datum eq $dbtoken));
  193. }
  194.  
  195. dbmclose(ABDB);
  196. exec($ENV{GSVIEWER}, '-page', $page, "$pspath/$doc");
  197.  
  198.