home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume12 / postscript / ps.diff.v2 < prev    next >
Encoding:
Text File  |  1989-02-16  |  18.1 KB  |  661 lines

  1. Make sure you have already applied either 'ps.diff.v1' or my
  2. original posting to comp.sources.bugs.
  3.  
  4. To apply this, you need the 'patch' program which is available from
  5. the comp.sources.unix archives.
  6.  
  7. Change directories to the top-level postscript directory (the one with
  8. the file "MANIFEST" in it) and apply this patch with the command:
  9.  
  10. patch -p0 <ps.diff.v2
  11.  
  12.                 _.John G. Myers
  13.                 jm36+@andrew.cmu.edu
  14.  
  15. *** /usr/tmp/ps/CHANGES.JGM    Thu Jul 28 13:53:12 1988
  16. --- ./CHANGES.JGM    Thu Jul 28 14:58:10 1988
  17. ***************
  18. *** 1,6 ****
  19. ! Here is a patch that makes several bug fixes and enhancements to the Postscript
  20.   interpreter recently posted.  The changes are:
  21.   
  22.   
  23.   Bugs fixed:
  24.   
  25. --- 1,7 ----
  26. ! These patches make several bug fixes and enhancements to the Postscript
  27.   interpreter recently posted.  The changes are:
  28.   
  29. +                   Version 1:
  30.   
  31.   Bugs fixed:
  32.   
  33. ***************
  34. *** 41,46 ****
  35. --- 42,64 ----
  36.       <string> getenv <false>
  37.   if it does not.
  38.   
  39. +                   Version 2:
  40. + Bugs fixed:
  41. + Fixed operators kshow, translate, scale, rotate, reversepath
  42. + Casted NULL to appropriate type when it was passed as a parameter.
  43. + Removed unused variables.
  44. + Enhancements made:
  45. + Each driver must now define the character pointer "DriverType".  The
  46. + value of this variable is placed in the string produced by the
  47. + "version" operator.
  48. + Added operators letter, note, and legal.
  49.   
  50.                   John G. Myers
  51.                   jm36@andrew.cmu.edu
  52. diff -cr ./doc/hard-interface /cmu/math/jm36/src/ps/doc/hard-interface
  53. *** ./doc/hard-interface    Fri Apr  1 22:41:07 1988
  54. --- /cmu/math/jm36/src/ps/doc/hard-interface    Mon Mar 28 20:25:28 1988
  55. ***************
  56. *** 15,20 ****
  57. --- 15,29 ----
  58.    *    may be expected to be NULL.
  59.    */
  60.   
  61. + /* Begin jgm */
  62. + /*
  63. +  *    DriverType contains a pointer to a string naming the device that this
  64. +  *     is a driver for.  The given string will show up in the "version"
  65. +  *    operator.
  66. +  */
  67. + char *DriverType = "";
  68. + /* End jgm */
  69.   /************************* CREATION OF WINDOWS AND BITMAPS *******************/
  70.   
  71.   struct hardware *InitHardware () {}
  72. diff -cr ./doc/hard-interface.c /cmu/math/jm36/src/ps/doc/hard-interface.c
  73. *** ./doc/hard-interface.c    Fri Apr  1 22:42:05 1988
  74. --- /cmu/math/jm36/src/ps/doc/hard-interface.c    Mon Mar 28 20:24:19 1988
  75. ***************
  76. *** 17,22 ****
  77. --- 17,31 ----
  78.    *    of access that PostScript is interested in. Any Hardware parameter may be expected to be NULL.
  79.    */
  80.   
  81. + /* Begin jgm */
  82. + /*
  83. +  *    DriverType contains a pointer to a string naming the device that this
  84. +  *     is a driver for.  The given string will show up in the "version"
  85. +  *    operator.
  86. +  */
  87. + char *DriverType = "";
  88. + /* End jgm */
  89.   /*********************************** CREATION OF WINDOWS AND BITMAPS *******************/
  90.   
  91.   struct hardware *InitHardware () {}
  92. diff -cr ./postscript/psrc /cmu/math/jm36/src/ps/postscript/psrc
  93. *** ./postscript/psrc    Fri Apr  1 22:48:12 1988
  94. --- /cmu/math/jm36/src/ps/postscript/psrc    Wed Mar 23 23:05:53 1988
  95. ***************
  96. *** 125,130 ****
  97. --- 141,148 ----
  98.   } def
  99.   
  100.   /kshow {
  101. +     exch    % jgm
  102.       showdict begin /p exch def
  103.           dup length 0 ne {
  104.               dup 0 get /last exch def
  105. ***************
  106. *** 132,137 ****
  107. --- 150,156 ----
  108.               dup length 1 sub 1 exch getinterval {
  109.                   last exch dup /last exch def
  110.                   /p load exec
  111. +                 ( ) dup 0 last put show  % jgm
  112.               } forall
  113.           } if
  114.       end
  115. ***************
  116. *** 467,472 ****
  117. --- 493,526 ----
  118.       [ 0 f f 0 0 0] w h [] framedevice
  119.       end
  120.   } def
  121. + % Begin additions --jgm
  122. + /letter {
  123. +     5 dict begin
  124. +     /m [1.13889 0 0 -1.13889 0 0] def
  125. +     /f m 0 get def
  126. +     /h 11 72 mul f mul cvi def
  127. +     /w 8.5 72 mul f mul 8 div cvi def
  128. +     m 5 h put
  129. +     m w h [] framedevice
  130. +     end
  131. + } def
  132. + /note { letter } def
  133. + /legal {
  134. +     5 dict begin
  135. +     /m [1.13889 0 0 -1.13889 0 0] def
  136. +     /f m 0 get def
  137. +     /h 14 72 mul f mul cvi def
  138. +     /w 8.5 72 mul f mul 8 div cvi def
  139. +     m 5 h put
  140. +     m w h [] framedevice
  141. +     end
  142. + } def
  143. + % End additions --jgm
  144.   
  145.   /ascii-set ( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~) def
  146.   
  147. diff -cr ./source/X.c /cmu/math/jm36/src/ps/source/X.c
  148. *** ./source/X.c    Fri Apr  1 22:44:35 1988
  149. --- /cmu/math/jm36/src/ps/source/X.c    Fri Mar 11 23:39:36 1988
  150. ***************
  151. *** 17,22 ****
  152. --- 17,24 ----
  153.   #define TRANSFER_SIZE    256
  154.   #define XMAX        65535
  155.   
  156. + char *DriverType = "X10"; /* jgm */
  157.   static int transfer [TRANSFER_SIZE + 1];
  158.   
  159.   static unsigned char reverse [0x100];
  160. diff -cr ./source/array.c /cmu/math/jm36/src/ps/source/array.c
  161. *** ./source/array.c    Fri Apr  1 22:48:17 1988
  162. --- /cmu/math/jm36/src/ps/source/array.c    Sun Mar  6 17:16:25 1988
  163. ***************
  164. *** 85,94 ****
  165. --- 85,96 ----
  166.        return res;
  167.    }
  168.   
  169. + #ifdef notdef /* jgm */
  170.   static Object *Body (item) Object item;
  171.    {
  172.        return item.u.Array;
  173.    }
  174. + #endif /* jgm */
  175.   
  176.   #define Body(a) ((a).u.Array)
  177.   
  178. diff -cr ./source/config.c /cmu/math/jm36/src/ps/source/config.c
  179. *** ./source/config.c    Fri Apr  1 22:48:20 1988
  180. --- /cmu/math/jm36/src/ps/source/config.c    Sat Mar 12 00:08:51 1988
  181. ***************
  182. *** 20,30 ****
  183.   Type Real, Name, Operator, String, Poly, Float, FontID;
  184.   
  185.   extern Object Absent, Nil, SysDict;
  186.   
  187. ! char default_library[] = "/usr/ral/lib/postscript";
  188.   
  189.   Init ()
  190.    {    
  191.       Nil     = MakeObject ((Type) 0);
  192.       Null          = Nil.type = MakeType (SizeNull);
  193.       EmptyDict (Null);    /* needed because of this recursion */
  194. --- 20,33 ----
  195.   Type Real, Name, Operator, String, Poly, Float, FontID;
  196.   
  197.   extern Object Absent, Nil, SysDict;
  198. + extern char *DriverType;
  199.   
  200. ! char default_library[] = "/usr/ral/lib/postscript";
  201.   
  202.   Init ()
  203.    {    
  204. +     char versionbuf[1024]; /* --jgm */
  205.       Nil     = MakeObject ((Type) 0);
  206.       Null          = Nil.type = MakeType (SizeNull);
  207.       EmptyDict (Null);    /* needed because of this recursion */
  208. ***************
  209. *** 87,91 ****
  210.        Install ("polytype",        DictFrom (Poly));
  211.       Install ("fonttype",        DictFrom (FontID));
  212.       
  213. !     Install ("version",    StringFrom ("Version 1.4 with mods by jgm")); /* jgm */
  214.    }
  215. --- 90,98 ----
  216.        Install ("polytype",        DictFrom (Poly));
  217.       Install ("fonttype",        DictFrom (FontID));
  218.       
  219. !     /* Begin jgm */
  220. !     strcpy(versionbuf, DriverType);
  221. !     strcat(versionbuf, " version 1.4 with jgm mods v2");
  222. !     Install ("version",    StringFrom (versionbuf));
  223. !     /* End jgm */
  224.    }
  225. diff -cr ./source/device.c /cmu/math/jm36/src/ps/source/device.c
  226. *** ./source/device.c    Fri Apr  1 22:41:29 1988
  227. --- /cmu/math/jm36/src/ps/source/device.c    Sun Mar  6 17:29:48 1988
  228. ***************
  229. *** 200,206 ****
  230.            UnlinkDevice (d);
  231.         }
  232.        else
  233. !          */BitBlt (NULL, res->dev, NewDevicePoint (0, 0), NewDevicePoint (0, 0), ex, ROP_FALSE);
  234.        
  235.        return res;
  236.    }
  237. --- 200,206 ----
  238.            UnlinkDevice (d);
  239.         }
  240.        else
  241. !          */BitBlt ((struct hardware *)NULL, res->dev, NewDevicePoint (0, 0), NewDevicePoint (0, 0), ex, ROP_FALSE); /* cast NULL --jgm */
  242.        
  243.        return res;
  244.    }
  245. diff -cr ./source/file.c /cmu/math/jm36/src/ps/source/file.c
  246. *** ./source/file.c    Fri Apr  1 22:45:31 1988
  247. --- /cmu/math/jm36/src/ps/source/file.c    Sun Mar  6 17:16:15 1988
  248. ***************
  249. *** 168,184 ****
  250. --- 168,188 ----
  251.   
  252.   #define Getc(a) getc(a)
  253.   
  254. + #ifdef notdef /* jgm */
  255.   static int Getchar ()
  256.    {
  257.        return Getc (stdin);
  258.    }
  259. + #endif /* jgm */
  260.   
  261.   #define Getchar getchar
  262.   
  263. + #ifdef notdef /* jgm */
  264.   static int Status (file) Object file;
  265.    {
  266.        return Body (file)->available;
  267.    }
  268. + #endif /* jgm */
  269.   
  270.   #define Status(f) (Body(f)->available)
  271.   
  272. ***************
  273. *** 306,312 ****
  274.        Cbreak (FALSE);
  275.    }
  276.   
  277. ! static cbreak = FALSE, echoing = TRUE;
  278.   
  279.   /*ARGSUSED*/
  280.   Cbreak (cond) int cond;
  281. --- 310,316 ----
  282.        Cbreak (FALSE);
  283.    }
  284.   
  285. ! static /* cbreak = FALSE, (removed --jgm) */ echoing = TRUE;
  286.   
  287.   /*ARGSUSED*/
  288.   Cbreak (cond) int cond;
  289. diff -cr ./source/fill.c /cmu/math/jm36/src/ps/source/fill.c
  290. *** ./source/fill.c    Fri Apr  1 22:44:44 1988
  291. --- /cmu/math/jm36/src/ps/source/fill.c    Sun Mar  6 17:46:45 1988
  292. ***************
  293. *** 149,155 ****
  294.        UnlinkDevice (gstate->clipdevice);
  295.         gstate->clipdevice = NULL;
  296.         
  297. !      SetClipHardware (gstate->device->dev, NULL);
  298.       
  299.       return TRUE;
  300.    }
  301. --- 149,155 ----
  302.        UnlinkDevice (gstate->clipdevice);
  303.         gstate->clipdevice = NULL;
  304.         
  305. !      SetClipHardware (gstate->device->dev, (struct hardware *)NULL); /* cast NULL --jgm */
  306.       
  307.       return TRUE;
  308.    }
  309. ***************
  310. *** 226,232 ****
  311.   static int FillIt (path_a, rule_a, path_b, rule_b, emitfn)
  312.       Path path_a, path_b; int (*rule_a)(), (*rule_b)(); void (*emitfn)();
  313.    {
  314. !     Path new;
  315.       static int edgecmp ();
  316.       static void Trapezoids (), BuildEdgeList ();
  317.       
  318. --- 226,232 ----
  319.   static int FillIt (path_a, rule_a, path_b, rule_b, emitfn)
  320.       Path path_a, path_b; int (*rule_a)(), (*rule_b)(); void (*emitfn)();
  321.    {
  322. !     /* Path new; (unused --jgm) */
  323.       static int edgecmp ();
  324.       static void Trapezoids (), BuildEdgeList ();
  325.       
  326. ***************
  327. *** 288,298 ****
  328.    {
  329.       struct edge *up_edge;
  330.       int i, count_a = 0, count_b = 0;
  331. !     static void RemoveEdges ();
  332.       
  333.       for (i = 0; i < ninteresting; i++)
  334.        {
  335. !          static void Emit ();
  336.            int d_a = 0, d_b = 0;
  337.            
  338.            if (interesting[i]->clip)
  339. --- 288,298 ----
  340.    {
  341.       struct edge *up_edge;
  342.       int i, count_a = 0, count_b = 0;
  343. !     /* static void RemoveEdges (); (unused --jgm) */
  344.       
  345.       for (i = 0; i < ninteresting; i++)
  346.        {
  347. !          /* static void Emit (); (unused --jgm) */
  348.            int d_a = 0, d_b = 0;
  349.            
  350.            if (interesting[i]->clip)
  351. diff -cr ./source/font.c /cmu/math/jm36/src/ps/source/font.c
  352. *** ./source/font.c    Fri Apr  1 22:45:11 1988
  353. --- /cmu/math/jm36/src/ps/source/font.c    Sun Mar  6 17:11:46 1988
  354. ***************
  355. *** 535,541 ****
  356.        for (;;)
  357.        {
  358.            int code = *++s;
  359. !          HardPoint offset, cp;
  360.            
  361.            offset = Adjust (DExtToInt (last_width), code);
  362.           loc.hx += offset.hx;
  363. --- 535,541 ----
  364.        for (;;)
  365.        {
  366.            int code = *++s;
  367. !          HardPoint offset/* , cp (unused --jgm) */;
  368.            
  369.            offset = Adjust (DExtToInt (last_width), code);
  370.           loc.hx += offset.hx;
  371. diff -cr ./source/gsave.c /cmu/math/jm36/src/ps/source/gsave.c
  372. *** ./source/gsave.c    Fri Apr  1 22:39:48 1988
  373. --- /cmu/math/jm36/src/ps/source/gsave.c    Sun Mar  6 17:34:40 1988
  374. ***************
  375. *** 75,81 ****
  376.                 SetScreen (gstate->screen.frequency, gstate->screen.rotation, gstate->screen.thresh);
  377.             if (tflag)
  378.                 SetTransfer (gstate->transfer.tran);
  379. !           SetClipHardware (gstate->device->dev, (gstate->clipdevice ? gstate->clipdevice->dev : NULL));
  380.        }
  381.        
  382.        return TRUE;
  383. --- 75,81 ----
  384.                 SetScreen (gstate->screen.frequency, gstate->screen.rotation, gstate->screen.thresh);
  385.             if (tflag)
  386.                 SetTransfer (gstate->transfer.tran);
  387. !           SetClipHardware (gstate->device->dev, (gstate->clipdevice ? gstate->clipdevice->dev : (struct hardware *)NULL)); /* Cast NULL --jgm */
  388.        }
  389.        
  390.        return TRUE;
  391. diff -cr ./source/image.c /cmu/math/jm36/src/ps/source/image.c
  392. *** ./source/image.c    Fri Apr  1 22:48:26 1988
  393. --- /cmu/math/jm36/src/ps/source/image.c    Sun Mar  6 17:34:36 1988
  394. ***************
  395. *** 250,256 ****
  396.                       FillMask (mask, i, dep);
  397.                      
  398.                      BitBlt (from, mask, NewDevicePoint (0, 0), NewDevicePoint (0, 0), HardwareExtent (from), ROP_NXOR);
  399. !                    BitBlt (NULL, temp, NewDevicePoint (0, 0), NewDevicePoint (0, 0), HardwareExtent (temp), ROP_TRUE);
  400.                       for (j = 0; j < dep; j++)
  401.                           BitBlt (mask, temp, NewDevicePoint (j, 0), NewDevicePoint (0, 0), HardwareExtent (mask), ROP_AND);
  402.                       for (j = 0; j < w; j++)
  403. --- 250,256 ----
  404.                       FillMask (mask, i, dep);
  405.                      
  406.                      BitBlt (from, mask, NewDevicePoint (0, 0), NewDevicePoint (0, 0), HardwareExtent (from), ROP_NXOR);
  407. !                    BitBlt ((struct  hardware *)NULL, temp, NewDevicePoint (0, 0), NewDevicePoint (0, 0), HardwareExtent (temp), ROP_TRUE);  /* cast NULL --jgm */
  408.                       for (j = 0; j < dep; j++)
  409.                           BitBlt (mask, temp, NewDevicePoint (j, 0), NewDevicePoint (0, 0), HardwareExtent (mask), ROP_AND);
  410.                       for (j = 0; j < w; j++)
  411. diff -cr ./source/matrix.c /cmu/math/jm36/src/ps/source/matrix.c
  412. *** ./source/matrix.c    Fri Apr  1 22:43:11 1988
  413. --- /cmu/math/jm36/src/ps/source/matrix.c    Wed Mar 23 22:40:28 1988
  414. ***************
  415. *** 126,131 ****
  416. --- 126,132 ----
  417.   static int PTranslate ()
  418.    {
  419.        Object tx, ty, mat;
  420. +     Matrix m;
  421.        float x, y;
  422.        
  423.        if (!OpCheck (2, 1))
  424. ***************
  425. *** 136,141 ****
  426. --- 137,144 ----
  427.                 return Push (OpStack, mat), Error (PInvAccess);
  428.            else if (lengthArray (mat) != 6)
  429.                 return Push (OpStack, mat), Error (PRangeCheck);
  430. +         else if    (!ExtractMatrix    (&m, mat))  /* --jgm */
  431. +                 return Push (OpStack, mat), Error (PTypeCheck); /* --jgm */
  432.            else
  433.             {
  434.                 ty = Pop (OpStack);
  435. ***************
  436. *** 153,159 ****
  437.                 else
  438.                      return Push (OpStack, tx), Push (OpStack, ty), Push (OpStack, mat), Error (PTypeCheck);
  439.                
  440. !               VOID AssignMatrix (mat, NewMatrix (1.0, 0.0, 0.0, 1.0, x, y));
  441.                 
  442.                 return Push (OpStack, mat);
  443.             }
  444. --- 156,164 ----
  445.                 else
  446.                      return Push (OpStack, tx), Push (OpStack, ty), Push (OpStack, mat), Error (PTypeCheck);
  447.                
  448. ! /*              VOID AssignMatrix (mat, NewMatrix (1.0, 0.0, 0.0, 1.0, x, y)); WRONG --jgm */
  449. !               VOID AssignMatrix (mat, Translate(m, x, y)); /* --jgm */
  450.                 
  451.                 return Push (OpStack, mat);
  452.             }
  453. ***************
  454. *** 178,184 ****
  455.   static int PScale ()
  456.    {
  457.        Object tx, ty, mat;
  458. !      float x, y;
  459.        
  460.        if (!OpCheck (2, 1))
  461.            return FALSE;
  462. --- 183,190 ----
  463.   static int PScale ()
  464.    {
  465.        Object tx, ty, mat;
  466. !     Matrix m; /* --jgm */
  467. !     float x, y;
  468.        
  469.        if (!OpCheck (2, 1))
  470.            return FALSE;
  471. ***************
  472. *** 188,193 ****
  473. --- 194,201 ----
  474.                 return Push (OpStack, mat), Error (PInvAccess);
  475.            else if (lengthArray (mat) != 6)
  476.                 return Push (OpStack, mat), Error (PRangeCheck);
  477. +         else if    (!ExtractMatrix    (&m, mat))  /* --jgm */
  478. +                 return Push (OpStack, mat), Error (PTypeCheck); /* --jgm */
  479.            else
  480.             {
  481.                ty = Pop (OpStack);
  482. ***************
  483. *** 205,211 ****
  484.                 else
  485.                      return Push (OpStack, tx), Push (OpStack, ty), Push (OpStack, mat), Error (PTypeCheck);
  486.                
  487. !               VOID AssignMatrix (mat, NewMatrix (x, 0.0, 0.0, y, 0.0, 0.0));
  488.                 
  489.                 return Push (OpStack, mat);
  490.             }
  491. --- 213,220 ----
  492.                 else
  493.                      return Push (OpStack, tx), Push (OpStack, ty), Push (OpStack, mat), Error (PTypeCheck);
  494.                
  495. ! /*              VOID AssignMatrix (mat, NewMatrix (x, 0.0, 0.0, y, 0.0, 0.0)); WRONG --jgm */
  496. !               VOID AssignMatrix (mat, Scale(m, x, y)); /* --jgm */
  497.                 
  498.                 return Push (OpStack, mat);
  499.             }
  500. ***************
  501. *** 249,256 ****
  502.                     a = BodyReal (ang);
  503.                 else
  504.                     return Push (OpStack, ang), Push (OpStack, mat), Error (PTypeCheck);
  505. !               
  506. !               VOID AssignMatrix (mat, NewMatrix (cos(a), sin(a), -sin(a), -cos(a), 0.0, 0.0));
  507.                 
  508.                 return Push (OpStack, mat);
  509.             }
  510. --- 258,265 ----
  511.                     a = BodyReal (ang);
  512.                 else
  513.                     return Push (OpStack, ang), Push (OpStack, mat), Error (PTypeCheck);
  514. !               a = Rad(a); /* jgm */
  515. !               VOID AssignMatrix (mat, NewMatrix (cos(a), sin(a), -sin(a), cos(a), 0.0, 0.0)); /* last "-cos" changed to "cos" --jgm */
  516.                 
  517.                 return Push (OpStack, mat);
  518.             }
  519. diff -cr ./source/name.c /cmu/math/jm36/src/ps/source/name.c
  520. *** ./source/name.c    Fri Apr  1 22:39:54 1988
  521. --- /cmu/math/jm36/src/ps/source/name.c    Sun Mar  6 17:16:20 1988
  522. ***************
  523. *** 107,113 ****
  524.   
  525.   static int HashName (s, length) unsigned char *s; int length;
  526.    {
  527. !     int i, res = 0;
  528.       
  529.       while (length--)
  530.           res += *s++;
  531. --- 107,113 ----
  532.   
  533.   static int HashName (s, length) unsigned char *s; int length;
  534.    {
  535. !     int /* i, (unused --jgm) */ res = 0;
  536.       
  537.       while (length--)
  538.           res += *s++;
  539. diff -cr ./source/operator.c /cmu/math/jm36/src/ps/source/operator.c
  540. *** ./source/operator.c    Fri Apr  1 22:41:54 1988
  541. --- /cmu/math/jm36/src/ps/source/operator.c    Sun Mar  6 17:16:23 1988
  542. ***************
  543. *** 69,75 ****
  544.    {
  545.        Object res;
  546.        struct op_struct *op;
  547. !      int i;
  548.        res = Cvx (MakeObject (Operator));
  549.        res.u.Operator = op = (struct op_struct *) Malloc (sizeof (struct op_struct));
  550.       
  551. --- 69,75 ----
  552.    {
  553.        Object res;
  554.        struct op_struct *op;
  555. !      /* int i; (unused --jgm) */
  556.        res = Cvx (MakeObject (Operator));
  557.        res.u.Operator = op = (struct op_struct *) Malloc (sizeof (struct op_struct));
  558.       
  559. ***************
  560. *** 130,139 ****
  561. --- 130,141 ----
  562.        TypeInstall (type, name, res);
  563.    }
  564.   
  565. + #ifdef notdef /* jgm */
  566.   static struct op_struct *Body (item) Object item;
  567.    {
  568.        return item.u.Operator;
  569.    }
  570. + #endif /* jgm */
  571.   
  572.   #define Body(op)    ((op).u.Operator)
  573.   
  574. diff -cr ./source/path.c /cmu/math/jm36/src/ps/source/path.c
  575. *** ./source/path.c    Fri Apr  1 22:43:14 1988
  576. --- /cmu/math/jm36/src/ps/source/path.c    Sat Mar 19 17:00:52 1988
  577. ***************
  578. *** 194,200 ****
  579.        
  580.        if ((res = ReversePath (gstate->path)) == NULL)
  581.            return Error (PLimitCheck);
  582. !       SetPath (&gstate->path, res);
  583.        return TRUE;    
  584.    }
  585.   
  586. --- 194,201 ----
  587.        
  588.        if ((res = ReversePath (gstate->path)) == NULL)
  589.            return Error (PLimitCheck);
  590. !       /* SetPath (&gstate->path, res); --jgm */
  591. !     gstate->path = res; /* Don't free gstate->path twice. --jgm */
  592.        return TRUE;    
  593.    }
  594.   
  595. diff -cr ./source/pixrect.c /cmu/math/jm36/src/ps/source/pixrect.c
  596. *** ./source/pixrect.c    Fri Apr  1 22:40:34 1988
  597. --- /cmu/math/jm36/src/ps/source/pixrect.c    Fri Mar 11 23:35:16 1988
  598. ***************
  599. *** 15,20 ****
  600. --- 15,22 ----
  601.   #include "canon.h"
  602.   #include <pixrect/pixrect_hs.h>
  603.   
  604. + char *DriverType = "Sun pixrect"; /* jgm */
  605.   int rop_map [] =
  606.    {
  607.        PIX_SRC & PIX_NOT (PIX_SRC),
  608. diff -cr ./source/state.c /cmu/math/jm36/src/ps/source/state.c
  609. *** ./source/state.c    Fri Apr  1 22:43:34 1988
  610. --- /cmu/math/jm36/src/ps/source/state.c    Sun Mar  6 17:33:19 1988
  611. ***************
  612. *** 114,120 ****
  613.   
  614.   int ErasePage ()
  615.    {
  616. !     Paint (NULL, gstate->device->dev,
  617.           NewDevicePoint (0, 0), NewDevicePoint (0, 0),
  618.           HardwareExtent (gstate->device->dev),
  619.           White);
  620. --- 114,120 ----
  621.   
  622.   int ErasePage ()
  623.    {
  624. !     Paint ((struct hardware *)NULL, gstate->device->dev, /* cast NULL --jgm */
  625.           NewDevicePoint (0, 0), NewDevicePoint (0, 0),
  626.           HardwareExtent (gstate->device->dev),
  627.           White);
  628. diff -cr ./source/ww.c /cmu/math/jm36/src/ps/source/ww.c
  629. *** ./source/ww.c    Fri Apr  1 22:41:00 1988
  630. --- /cmu/math/jm36/src/ps/source/ww.c    Fri Mar 11 23:39:23 1988
  631. ***************
  632. *** 14,19 ****
  633. --- 14,21 ----
  634.   #include "canon.h"
  635.   #include "wwinfo.h"
  636.   
  637. + char *DriverType = "ww"; /* jgm */
  638.   static void xxrasterop ();
  639.   
  640.   static struct hardware *NewHardware ();
  641.