diff -rc2N gs251/NEWS gs252/NEWS *** gs251/NEWS Thu Sep 10 16:58:50 1992 --- gs252/NEWS Mon Sep 21 00:05:12 1992 *************** *** 26,29 **** --- 26,129 ---- README. + Version 2.5.2 (9/20/92) + ============= + + This is yet another bug fix release to (finally!) get the PCL drivers + working again. + + Procedures + ---------- + + Fixes bugs: + - The comment in devs.mak for cdjcolor said it used 8 bits + per pixel, rather than the correct 24. + + Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix + systems. + + Removes dps.dev and level2.dev from the standard configurations on + all platforms, since the presence of the setcolor operator was + causing the output of some common applications to fail. + + Utilities + --------- + + Fixes bugs: + - font2c produced invalid output for any font that didn't use + StandardEncoding or ISOLatin1Encoding. + + Platforms + --------- + + Fixes bugs: + - gp_sysv.c required an extern long timezone. + + Drivers + ------- + + Fixes bugs: + - The PCL drivers were *still* doing the wrong thing about + zeroing the seed row for Mode 3 compression. + - Setting the resolution with -r didn't work under Windows. + - The Windows driver got a stack overflow if it was ever + asked to display a bit image wider than 32 pixels. + - The Tseng driver didn't sense the model (ET3000 vs. ET4000) + correctly. + + Adds the eps9high device to the standard MS-DOS makefiles. + + Interpreter + ----------- + + Fixes bugs: + - gs_run_string used gs_user_errors (a global) rather than + user_errors (its argument) to control error handling. (This does not + affect normal operation of Ghostscript, only use as a server.) + - eexec popped the top element of the dictionary stack + afterwards even if the encrypted code had pushed something onto it. + This caused problems for some badly written PostScript code. + - The printed form of real numbers didn't always include a + decimal point, causing compatibility problems. + + Makes -s and -d work for device properties. + + Increases the cache limit on large-memory systems. + + Adds a check to ensure that the revision of gs_init.ps matches that + of the interpreter. + + Adds the .knownget operator. + + Library + ------- + + Fixes bugs: + - The raster computation in clist_render_init, and the + computation of state_size in clist_open, didn't widen an operand to + long, leading to possibly incorrect operation for 24-bit-per-pixel + printers on MS-DOS systems. + - The flatness was set too large for Type 1 characters, + leading to visible straight edges instead of curves at large sizes. + - Type 1 fonts that contained out-of-range coordinates would + produce garbled output. (This was not a problem with the standard + Ghostscript fonts, or with Adobe Type Manager fonts.) + - gschar0.c wouldn't compile, because it referred to a + non-existing structure member penum->chr. (This had no effect on + Ghostscript's operation.) + - The curve flattener required line segments to be no more + than 8 x the flatness in length, leading to an enormous number of + segments. + - pathforall would cause an addressing fault if the path + consisted of only a moveto. + + Refactors some header files so that std.h is always included before + any system header file that might include sys/types.h. + + Adds logic for removing top and bottom blank rows in cached + characters. (This is the beginning of compression for the cache.) + + Changes the arguments of memswab2/4 from char * to byte *, for more + accurate type conformance. + Version 2.5.1 (9/11/92) ============= *************** *** 129,134 **** end of an input buffer, the character would be doubled. - The procedures in gs_statd.ps didn't use "bind". - - pathforall would cause an addressing fault if the path - consisted of only a moveto. - Setting the page size didn't work properly with devices with rotated coordinate systems. --- 229,232 ---- diff -rc2N gs251/README gs252/README *** gs251/README Wed Sep 9 03:11:52 1992 --- gs252/README Mon Sep 21 00:05:23 1992 *************** *** 21,25 **** ***************************************************** ! * This file describes version 2.5.1 of Ghostscript. * ***************************************************** --- 21,25 ---- ***************************************************** ! * This file describes version 2.5.2 of Ghostscript. * ***************************************************** *************** *** 72,76 **** ******** ! There are two freely available screen previewers based on Ghostscript: Ghostview and GSPreview. For information on Ghostview, contact Tim Theisen (ghostview@cs.wisc.edu). For information on --- 72,76 ---- ******** ! There are two freely available X Windows screen previewers based on Ghostscript: Ghostview and GSPreview. For information on Ghostview, contact Tim Theisen (ghostview@cs.wisc.edu). For information on *************** *** 321,328 **** Clemens Schrimpe (for help with accented characters), Mike Smolenski (for the Sony drivers), - Karsten Spang (for the Tektronix ink-jet driver), - Andreas Stolcke (for help with the SunView driver), Snoopy (for major help with Hershey fonts, and many other contributions), Michael Sweet (for help with the high-density Epson driver), Tim Theisen (for help with the X Windows driver, and for the --- 321,329 ---- Clemens Schrimpe (for help with accented characters), Mike Smolenski (for the Sony drivers), Snoopy (for major help with Hershey fonts, and many other contributions), + Karsten Spang (for the Tektronix ink-jet driver), + Andreas Stolcke (for help with the SunView driver), + Chris Strozyk (for getting the URW fonts made available), Michael Sweet (for help with the high-density Epson driver), Tim Theisen (for help with the X Windows driver, and for the diff -rc2N gs251/ansi2knr.c gs252/ansi2knr.c *** gs251/ansi2knr.c Tue Apr 28 16:36:58 1992 --- gs252/ansi2knr.c Wed Sep 16 17:19:18 1992 *************** *** 20,24 **** /* ansi2knr.c */ /* Convert ANSI function declarations to K&R syntax */ ! #include #include #include "string_.h" --- 20,24 ---- /* ansi2knr.c */ /* Convert ANSI function declarations to K&R syntax */ ! #include "stdio_.h" #include #include "string_.h" diff -rc2N gs251/ansihead.mak gs252/ansihead.mak *** gs251/ansihead.mak Sat Aug 1 03:07:54 1992 --- gs252/ansihead.mak Fri Sep 18 18:37:50 1992 *************** *** 82,85 **** --- 82,86 ---- # SunOS and some others want -X; Ultrix wants -x. # SunOS 4.n may need -Bstatic. + # Apollos running DomainOS don't support -X (and -x has no effect). # XLDFLAGS can be set from the command line. *************** *** 108,112 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 109,113 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. diff -rc2N gs251/bcwin.mak gs252/bcwin.mak *** gs251/bcwin.mak Mon Sep 7 14:03:28 1992 --- gs252/bcwin.mak Mon Sep 14 17:32:24 1992 *************** *** 180,184 **** # Choose the device(s) to include. See devs.mak for details. ! DEVICE_DEVS=mswin.dev epson.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev --- 180,184 ---- # Choose the device(s) to include. See devs.mak for details. ! DEVICE_DEVS=mswin.dev epson.dev eps9high.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev diff -rc2N gs251/cc-head.mak gs252/cc-head.mak *** gs251/cc-head.mak Sat Aug 1 03:07:00 1992 --- gs252/cc-head.mak Fri Sep 18 18:37:36 1992 *************** *** 104,108 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 104,108 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. diff -rc2N gs251/devs.mak gs252/devs.mak *** gs251/devs.mak Tue Sep 8 18:45:14 1992 --- gs252/devs.mak Sun Sep 13 20:01:24 1992 *************** *** 53,57 **** # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 8 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only --- 53,57 ---- # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 24 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only diff -rc2N gs251/dos_.h gs252/dos_.h *** gs251/dos_.h Sun Jul 26 05:12:34 1992 --- gs252/dos_.h Fri Sep 18 09:29:44 1992 *************** *** 38,42 **** # define disable() _disable() # define MK_PTR(seg,off) (((seg) << 4) + (off)) ! # define PTR_OFF(ptr) ((unsigned)(ptr) & 0xffff) # define int86 int386 # define int86x int386x --- 38,42 ---- # define disable() _disable() # define MK_PTR(seg,off) (((seg) << 4) + (off)) ! # define PTR_OFF(ptr) ((ushort)(uint)(ptr)) # define int86 int386 # define int86x int386x diff -rc2N gs251/echogs.c gs252/echogs.c *** gs251/echogs.c Tue Sep 1 05:58:06 1992 --- gs252/echogs.c Sat Sep 19 06:48:42 1992 *************** *** 136,140 **** { case 0: - sw = '-'; case '-': if ( hexx ) goto xx; --- 136,139 ---- diff -rc2N gs251/font2c.ps gs252/font2c.ps *** gs251/font2c.ps Thu Aug 20 05:42:52 1992 --- gs252/font2c.ps Fri Sep 18 15:32:30 1992 *************** *** 469,473 **** % Write out the Encoding vector, if it isn't standard. encodingnames Encoding known not ! { (str_elts_) Encoding wsna (\tcode = \(*pprocs->name_array_create\)\(&Encoding, str_elts_, ) ws Encoding length wt (\);) wl --- 469,474 ---- % Write out the Encoding vector, if it isn't standard. encodingnames Encoding known not ! { ({) wl ! (str_elts_) Encoding wsna (\tcode = \(*pprocs->name_array_create\)\(&Encoding, str_elts_, ) ws Encoding length wt (\);) wl diff -rc2N gs251/gcc-head.mak gs252/gcc-head.mak *** gs251/gcc-head.mak Sat Aug 1 03:07:34 1992 --- gs252/gcc-head.mak Fri Sep 18 18:37:44 1992 *************** *** 112,116 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 112,116 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. diff -rc2N gs251/gdevcdj.c gs252/gdevcdj.c *** gs251/gdevcdj.c Thu Sep 10 16:56:50 1992 --- gs252/gdevcdj.c Sat Sep 19 09:37:50 1992 *************** *** 23,26 **** --- 23,27 ---- #include "gdevprn.h" #include "gdevpcl.h" + #include "gsprops.h" /*** *************** *** 42,57 **** */ - /* Definitions affecting print quality/speed */ - - #ifndef SHINGLING /* Interlaced, multi-pass printing */ - #define SHINGLING 1 /* 0 = none, 1 = 50%, 2 = 25%, 2 is best & - * slowest */ - #endif - - #ifndef DEPLETION /* 'Intelligent' dot-removal */ - #define DEPLETION 1 /* 0 = none, 1 = 25%, 2 = 50%, 1 best for - * graphics? */ - #endif /* Use 0 for transparencies */ - /* * You may select a resolution of 75, 100, 150, or 300 DPI. Normally you --- 43,46 ---- *************** *** 81,86 **** /* Margins are left, bottom, right, top. */ ! #define DESKJET_MARGINS_LETTER 0.25, 0.40, 0.25, 0.40 ! #define DESKJET_MARGINS_A4 0.134, 0.40, 0.134, 0.25 #ifndef A4 --- 70,75 ---- /* Margins are left, bottom, right, top. */ ! #define DESKJET_MARGINS_LETTER 0.25, 0.50, 0.25, 0.167 ! #define DESKJET_MARGINS_A4 0.15, 0.50, 0.15, 0.167 #ifndef A4 *************** *** 100,103 **** --- 89,93 ---- #define W sizeof(word) #define I sizeof(int) + #define WSIZE(a) (((a) + W - 1) / W) /* Printer types */ *************** *** 115,153 **** private dev_proc_print_page(cdjcolor_print_page); private dev_proc_print_page(cdjmono_print_page); ! #define hp_dj500c_procs(proc_map_rgb_color, proc_map_color_rgb)\ ! prn_color_matrix_procs(hp_dj500c_open, gdev_pcl_get_initial_matrix,\ ! gdev_prn_output_page, gdev_prn_close,\ ! proc_map_rgb_color, proc_map_color_rgb) private gx_device_procs cdeskjet_procs = ! hp_dj500c_procs(gdev_pcl_3bit_map_rgb_color, gdev_pcl_3bit_map_color_rgb); private gx_device_procs cdjcolor_procs = ! hp_dj500c_procs(gdev_pcl_true_map_rgb_color, gdev_pcl_true_map_color_rgb); private gx_device_procs cdjmono_procs = ! hp_dj500c_procs(gdev_prn_map_rgb_color, gdev_prn_map_color_rgb); ! gx_device_printer gs_cdeskjet_device = ! prn_device(cdeskjet_procs, "cdeskjet", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 3, cdeskjet_print_page); ! gx_device_printer gs_cdjcolor_device = ! prn_device(cdjcolor_procs, "cdjcolor", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 24, cdjcolor_print_page); ! gx_device_printer gs_cdjmono_device = ! prn_device(cdjmono_procs, "cdjmono", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 1, cdjmono_print_page); /* Forward references */ --- 105,192 ---- private dev_proc_print_page(cdjcolor_print_page); private dev_proc_print_page(cdjmono_print_page); + private dev_proc_get_props(hp_dj500c_get_props); + private dev_proc_put_props(hp_dj500c_put_props); ! /* The device descriptor */ ! typedef struct gx_device_hp_dj500c_s gx_device_hp_dj500c; ! struct gx_device_hp_dj500c_s { ! gx_device_common; ! gx_prn_device_common; ! int shingling; /* Interlaced, multi-pass printing */ ! /* 0 = none, 1 = 50%, 2 = 25%, 2 is best & ! * slowest */ ! int depletion; /* 'Intelligent' dot-removal */ ! /* 0 = none, 1 = 25%, 2 = 50%, 1 best for ! /* graphics? */ ! /* Use 0 for transparencies */ ! }; ! ! #define ppdev ((gx_device_hp_dj500c *)pdev) ! ! #define hp_dj500c_device(procs, dev_name, width_10ths, height_10ths, x_dpi, y_dpi, l_margin, b_margin, r_margin, t_margin, color_bits, print_page, shingling, depletion)\ ! { prn_device_body(gx_device_printer, procs, dev_name,\ ! width_10ths, height_10ths, x_dpi, y_dpi,\ ! l_margin, b_margin, r_margin, t_margin,\ ! (color_bits > 1 ? 3 : 1),\ ! ((color_bits > 1) & (color_bits < 8) ? 8 : color_bits),\ ! (color_bits >= 8 ? 255 : 1),\ ! (color_bits >= 8 ? 255 : color_bits > 1 ? 1 : 0),\ ! (color_bits >= 8 ? 5 : 2),\ ! (color_bits >= 8 ? 5 : color_bits > 1 ? 2 : 0),\ ! print_page),\ ! shingling,\ ! depletion\ ! } ! ! #define hp_dj500c_procs(proc_map_rgb_color, proc_map_color_rgb, proc_get_props, proc_put_props) {\ ! hp_dj500c_open,\ ! gdev_pcl_get_initial_matrix,\ ! gx_default_sync_output,\ ! gdev_prn_output_page,\ ! gdev_prn_close,\ ! proc_map_rgb_color,\ ! proc_map_color_rgb,\ ! NULL, /* fill_rectangle */\ ! NULL, /* tile_rectangle */\ ! NULL, /* copy_mono */\ ! NULL, /* copy_color */\ ! NULL, /* draw_line */\ ! gx_default_get_bits,\ ! proc_get_props,\ ! proc_put_props\ ! } private gx_device_procs cdeskjet_procs = ! hp_dj500c_procs(gdev_pcl_3bit_map_rgb_color, gdev_pcl_3bit_map_color_rgb, ! hp_dj500c_get_props, hp_dj500c_put_props); private gx_device_procs cdjcolor_procs = ! hp_dj500c_procs(gdev_pcl_true_map_rgb_color, gdev_pcl_true_map_color_rgb, ! hp_dj500c_get_props, hp_dj500c_put_props); private gx_device_procs cdjmono_procs = ! hp_dj500c_procs(gdev_prn_map_rgb_color, gdev_prn_map_color_rgb, ! hp_dj500c_get_props, hp_dj500c_put_props); ! gx_device_hp_dj500c gs_cdeskjet_device = ! hp_dj500c_device(cdeskjet_procs, "cdeskjet", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 3, cdeskjet_print_page, 1, 1); ! gx_device_hp_dj500c gs_cdjcolor_device = ! hp_dj500c_device(cdjcolor_procs, "cdjcolor", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 24, cdjcolor_print_page, 2, 1); ! gx_device_hp_dj500c gs_cdjmono_device = ! hp_dj500c_device(cdjmono_procs, "cdjmono", WIDTH_10THS, HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, ! 1, cdjmono_print_page, 1, 1); /* Forward references */ *************** *** 171,177 **** } /* ------ Internal routines ------ */ ! /* The DeskJet500C can compress (mode 9, for all versions) */ private int cdeskjet_print_page(gx_device_printer * pdev, FILE * prn_stream) --- 210,271 ---- } + /* Added properties for DeskJet 500C */ + + private const gs_prop_item props_dj500c[] = { + /* Read-write properties. */ + prop_def("Shingling", prt_int), + prop_def("Depletion", prt_int), + }; + + /* Get properties. In addition to the standard and printer */ + /* properties, we supply shingling and depletion parameters */ + private int + hp_dj500c_get_props(gx_device *pdev, gs_prop_item *plist) + { int start = gdev_prn_get_props(pdev, plist); + if ( plist != 0 ) + { register gs_prop_item *pi = plist + start; + memcpy(pi, props_dj500c, sizeof(props_dj500c)); + pi[0].value.i = ppdev->shingling; + pi[1].value.i = ppdev->depletion; + } + return start + sizeof(props_dj500c) / sizeof(gs_prop_item); + } + + /* Put properties. */ + private int + hp_dj500c_put_props(gx_device *pdev, gs_prop_item *plist, int count) + { gs_prop_item *known[2]; + int code = 0; + int j; + props_extract(plist, count, props_dj500c, 2, known, 0); + code = gdev_prn_put_props(pdev, plist, count); + if ( code < 0 ) return code; + for (j = 0; j < 2; j++) { + if ( known[j] != 0 ) { + gs_prop_item *pi = known[j]; + if ( pi->value.i < 0 || pi->value.i > 2 ) + pi->status = pv_rangecheck, + code = gs_error_rangecheck; + else { + switch (j) { + case 0: + ppdev->shingling = known[j]->value.i; + break; + case 1: + ppdev->depletion = known[j]->value.i; + break; + } + if ( code == 0 ) code = 1; + } + } + } + if ( code < 0 ) + return_error(code); + return code; + } + /* ------ Internal routines ------ */ ! /* The DeskJet 500C can compress (mode 9, for all versions) */ private int cdeskjet_print_page(gx_device_printer * pdev, FILE * prn_stream) *************** *** 199,203 **** #define b_margin (pdev->b_margin) #define XTRA 12 /* 2 x 6 XTRA values for end-of-line */ ! #define W_XTRA (XTRA * I / W) /* in FSdither error buffers */ /* Floyd-Steinberg dithering. Often results in a dramatic improvement in --- 293,297 ---- #define b_margin (pdev->b_margin) #define XTRA 12 /* 2 x 6 XTRA values for end-of-line */ ! /* in FSdither error buffers */ /* Floyd-Steinberg dithering. Often results in a dramatic improvement in *************** *** 226,241 **** hp_dj500c_print_page(gx_device_printer * pdev, FILE * prn_stream, int ptype) { - /* We round up buffer space to a multiple of 24 bytes because that's the - * unit of transposition from pixels to planes in 24-bit mode; it's hardly - * worth trying to save a few bytes by being less generous in other modes. */ int line_size = gdev_prn_raster(pdev); ! int line_size_words = (line_size + W - 1) / W; ! int plane_size = (line_size + 23) / 24; ! int plane_size_words = (plane_size + W - 1) / W; ! int buffer_size = plane_size * 24; int paper_size = gdev_pcl_paper_size((gx_device *)pdev); int num_comps = pdev->color_info.num_components; ! int depletion = DEPLETION; ! int shingling = SHINGLING; int *errors; byte *data, *plane_data[3], *prev_plane_data[3], *out_data; --- 320,329 ---- hp_dj500c_print_page(gx_device_printer * pdev, FILE * prn_stream, int ptype) { int line_size = gdev_prn_raster(pdev); ! int line_size_words = WSIZE(line_size); int paper_size = gdev_pcl_paper_size((gx_device *)pdev); int num_comps = pdev->color_info.num_components; ! int plane_size; ! int buffer_size; int *errors; byte *data, *plane_data[3], *prev_plane_data[3], *out_data; *************** *** 245,260 **** switch (ptype) { case DJ500C_COLOUR: ! plane_size *= 3; /* should really have divided by 8, not 24 */ ! storage_size_words = plane_size_words * (8 + 3 + 3 + 2); ! /* data, plane, prev_plane, out_data */ break; case DJ500C_COLOUR_FS: ! storage_size_words = plane_size_words * (24 * I + 24 + 3 + 3 + 2) + W_XTRA; ! /* errors, data, plane, prev_plane, out_data, XTRA */ ! shingling = 2; /* this is a maximum-quality mode */ break; case DJ500C_MONO: ! plane_size *= 24; /* (ie. same as buffer size) */ ! storage_size_words = plane_size_words * (1 + 1 + 2); /* plane, prev_plane, out_data */ break; --- 333,351 ---- switch (ptype) { case DJ500C_COLOUR: ! plane_size = (line_size + 7) / 8; ! buffer_size = plane_size * 8; ! storage_size_words = WSIZE(plane_size * (8 + 3 + 3)); ! /* data, plane, prev_plane */ break; case DJ500C_COLOUR_FS: ! plane_size = (line_size + 23) / 24; ! buffer_size = plane_size * 24; ! storage_size_words = WSIZE(plane_size * (24 * I + 24 + 3 + 3) + XTRA * I); ! /* errors, data, plane, prev_plane, XTRA */ break; case DJ500C_MONO: ! plane_size = WSIZE(line_size) * W; ! buffer_size = plane_size; ! storage_size_words = WSIZE(plane_size * (1 + 1 + 2)); /* plane, prev_plane, out_data */ break; *************** *** 267,271 **** else { int i; ! byte *p = data = (byte *) storage; if ((ptype == DJ500C_COLOUR) || (ptype == DJ500C_COLOUR_FS)) { p += buffer_size; --- 358,362 ---- else { int i; ! byte *p = data = out_data = (byte *) storage; if ((ptype == DJ500C_COLOUR) || (ptype == DJ500C_COLOUR_FS)) { p += buffer_size; *************** *** 283,287 **** p += plane_size; } ! out_data = p; /* size is plane_size x 2 */ } --- 374,380 ---- p += plane_size; } ! if (ptype == DJ500C_MONO) { ! out_data = p; /* size is plane_size x 2 */ ! } } *************** *** 299,303 **** /* set depletion and shingling levels */ ! fprintf(prn_stream, "\033*o%dd%dQ", depletion, shingling); /* move to top left of printed area */ --- 392,396 ---- /* set depletion and shingling levels */ ! fprintf(prn_stream, "\033*o%dd%dQ", ppdev->depletion, ppdev->shingling); /* move to top left of printed area */ diff -rc2N gs251/gdevdjet.c gs252/gdevdjet.c *** gs251/gdevdjet.c Thu Sep 10 05:49:12 1992 --- gs252/gdevdjet.c Sat Sep 19 09:53:40 1992 *************** *** 23,29 **** #include "gdevpcl.h" ! /* Thanks to Jim Mayer, Xerox Webster Research Center, */ ! /* and to Jan-Mark Wams (jms@cs.vu.nl) and Frans van Hoesel */ ! /* (hoesel@rugr86.rug.nl) for improvements. */ /* --- 23,31 ---- #include "gdevpcl.h" ! /* ! * Thanks to Jim Mayer (mayer@wrc.xerox.com), ! * Jan-Mark Wams (jms@cs.vu.nl), Frans van Hoesel (hoesel@rugr86.rug.nl), ! * and George Cameron (g.cameron@biomed.abdn.ac.uk) for improvements. ! */ /* *************** *** 100,103 **** --- 102,112 ---- #define DJ500 5 + /* Printer compression capabilities */ + typedef enum { + mode_0, + mode_2, + mode_3 /* includes mode 2 */ + } compression_modes; + /* The printer initialization strings. */ private const char *init_strings[] = { *************** *** 111,117 **** "\033*r0F\033*p0x75Y", /* DeskJet almost PCL 4, mode 2 compression */ ! "\033&k1W\033*p0x0Y\033*b2M", /* DeskJet 500 almost PCL 4, mode 2&3 compression */ ! "\033&k1W\033*p0x0Y", }; --- 120,126 ---- "\033*r0F\033*p0x75Y", /* DeskJet almost PCL 4, mode 2 compression */ ! "\033&k1W\033*p0x37Y\033*b2M", /* DeskJet 500 almost PCL 4, mode 2&3 compression */ ! "\033&k1W\033*p0x37Y", }; *************** *** 172,176 **** /* Forward references */ ! private int hpjet_print_page(P3(gx_device_printer *, FILE *, int)); /* Open the printer, adjusting the margins if necessary. */ --- 181,185 ---- /* Forward references */ ! private int hpjet_print_page(P4(gx_device_printer *, FILE *, int, compression_modes)); /* Open the printer, adjusting the margins if necessary. */ *************** *** 207,216 **** private int djet_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, DJ); } ! /* The DeskJet500 can compress (mode 3) */ private int djet500_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, DJ500); } /* The LaserJet series II can't compress */ --- 216,225 ---- private int djet_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, DJ, mode_2); } ! /* The DeskJet500 can compress (modes 2&3) */ private int djet500_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, DJ500, mode_3); } /* The LaserJet series II can't compress */ *************** *** 217,221 **** private int ljet_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ); } /* The LaserJet Plus can't compress */ --- 226,230 ---- private int ljet_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ, mode_0); } /* The LaserJet Plus can't compress */ *************** *** 222,231 **** private int ljetplus_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJplus); } ! /* All LaserJet series IIIs (III,IIId,IIIp,IIIsi) compress (mode 3) */ private int ljet3_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ3); } /* LaserJet series IIp & IId compress (mode 2) */ --- 231,240 ---- private int ljetplus_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJplus, mode_0); } ! /* All LaserJet series IIIs (III,IIId,IIIp,IIIsi) compress (modes 2&3) */ private int ljet3_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ3, mode_3); } /* LaserJet series IIp & IId compress (mode 2) */ *************** *** 232,236 **** private int ljet2p_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ2p); } --- 241,245 ---- private int ljet2p_print_page(gx_device_printer *pdev, FILE *prn_stream) ! { return hpjet_print_page(pdev, prn_stream, LJ2p, mode_2); } *************** *** 238,242 **** /* since computer-to-printer communication time is often a bottleneck. */ private int ! hpjet_print_page(gx_device_printer *pdev, FILE *prn_stream, int ptype) { int line_size = gdev_mem_bytes_per_scan_line((gx_device *)pdev); int line_size_words = (line_size + W - 1) / W; --- 247,252 ---- /* since computer-to-printer communication time is often a bottleneck. */ private int ! hpjet_print_page(gx_device_printer *pdev, FILE *prn_stream, int ptype, ! compression_modes cmodes) { int line_size = gdev_mem_bytes_per_scan_line((gx_device *)pdev); int line_size_words = (line_size + W - 1) / W; *************** *** 259,264 **** int compression = -1; static const char *from2to3 = "\033*b3M"; - int penalty_from2to3 = strlen(from2to3); static const char *from3to2 = "\033*b2M"; int penalty_from3to2 = strlen(from3to2); int paper_size = gdev_pcl_paper_size((gx_device *)pdev); --- 269,274 ---- int compression = -1; static const char *from2to3 = "\033*b3M"; static const char *from3to2 = "\033*b2M"; + int penalty_from2to3 = strlen(from2to3); int penalty_from3to2 = strlen(from3to2); int paper_size = gdev_pcl_paper_size((gx_device *)pdev); *************** *** 325,344 **** /* if the number of lines is small, */ /* we're better off printing blanks. */ ! if ( compression == 3 ) ! { /* Switch to mode 2 compression so */ ! /* we can zero the seed row. */ ! fputs(from3to2, prn_stream); ! compression == 2; } ! fputs("\033*b0", prn_stream); ! for ( ; num_blank_lines > 1; num_blank_lines-- ) ! fputs("w", prn_stream); ! fputs("W", prn_stream); } ! else { fprintf(prn_stream, "\033*p+%dY", num_blank_lines * y_dots_per_pixel); } ! /* Either way, clear the seed row. */ memset(prev_row, 0, line_size); } --- 335,355 ---- /* if the number of lines is small, */ /* we're better off printing blanks. */ ! if ( cmodes == mode_3 ) ! { /* Must clear the seed row. */ ! fputs("\033*bY", prn_stream); } ! for ( ; num_blank_lines; num_blank_lines-- ) ! fputs("\033*bW", prn_stream); } ! else if ( cmodes == mode_0 ) /* PCL 3 */ { fprintf(prn_stream, "\033*p+%dY", num_blank_lines * y_dots_per_pixel); } ! else ! { fprintf(prn_stream, "\033*b%dY", ! num_blank_lines); ! } ! /* Clear the seed row (only matters for */ ! /* mode 3 compression). */ memset(prev_row, 0, line_size); } *************** *** 347,354 **** /* Choose the best compression mode */ /* for this particular line. */ ! switch (ptype) { ! case LJ3: ! case DJ500: { /* Compression modes 2 and 3 are both */ /* available. Try both and see which one */ --- 358,364 ---- /* Choose the best compression mode */ /* for this particular line. */ ! switch (cmodes) { ! case mode_3: { /* Compression modes 2 and 3 are both */ /* available. Try both and see which one */ *************** *** 378,383 **** break; } ! case DJ: ! case LJ2p: out_data = out_row; out_count = gdev_pcl_mode2compress(data_words, end_data, --- 388,392 ---- break; } ! case mode_2: out_data = out_row; out_count = gdev_pcl_mode2compress(data_words, end_data, diff -rc2N gs251/gdevepsc.c gs252/gdevepsc.c *** gs251/gdevepsc.c Fri Feb 28 06:05:00 1992 --- gs252/gdevepsc.c Sat Sep 19 06:10:04 1992 *************** *** 22,26 **** #include "gdevprn.h" ! /****** * For 9-pin printers, you may select * X_DPI = 60, 120, or 240 --- 22,26 ---- #include "gdevprn.h" ! /* * For 9-pin printers, you may select * X_DPI = 60, 120, or 240 *************** *** 43,47 **** * ESC++ command that spaces vertically in units of 1/360" * (not supported on many printers.) ! ******/ #ifndef X_DPI --- 43,47 ---- * ESC++ command that spaces vertically in units of 1/360" * (not supported on many printers.) ! */ #ifndef X_DPI diff -rc2N gs251/gdevmem.h gs252/gdevmem.h *** gs251/gdevmem.h Thu Sep 10 17:12:46 1992 --- gs252/gdevmem.h Sat Sep 19 06:08:56 1992 *************** *** 127,134 **** * for this reason, the chunk size cannot be larger than uint. */ ! /****** ! ****** Note: we assume that ints are 2 or 4 bytes in size! ! ****** (This is required by the clog2_bytes macro.) ! ******/ /* Generic macros for chunk accessing. */ #define cbytes(ct) ((int)sizeof(ct)) /* sizeof may be unsigned */ --- 127,137 ---- * for this reason, the chunk size cannot be larger than uint. */ ! /* ! * The clog2_bytes macro assumes that ints are 2 or 4 bytes in size: ! * check this now. ! */ ! #if !(arch_sizeof_int == 2 || arch_sizeof_int == 4) ! # error sizeof(int) must be 2 or 4 for correct operation. ! #endif /* Generic macros for chunk accessing. */ #define cbytes(ct) ((int)sizeof(ct)) /* sizeof may be unsigned */ diff -rc2N gs251/gdevmswn.c gs252/gdevmswn.c *** gs251/gdevmswn.c Thu Sep 10 18:10:50 1992 --- gs252/gdevmswn.c Sat Sep 19 06:32:42 1992 *************** *** 131,136 **** &win_procs, "win", ! 32767, 32767, /* win_open() fills these in later */ ! 96.0, 96.0, /* win_open() fills these in later */ no_margins, dci_black_and_white, --- 131,139 ---- &win_procs, "win", ! #define INITIAL_RESOLUTION 96 ! #define INITIAL_WIDTH (INITIAL_RESOLUTION * 85 / 10 + 1) ! #define INITIAL_HEIGHT (INITIAL_RESOLUTION * 11 + 1) ! INITIAL_WIDTH, INITIAL_HEIGHT, /* win_open() fills these in later */ ! INITIAL_RESOLUTION, INITIAL_RESOLUTION, /* win_open() fills these in later */ no_margins, dci_black_and_white, *************** *** 153,159 **** /* Set parameters that were unknown before opening device */ ! if (dev->width == 32767) dev->width = (int)(8.5 * dev->x_pixels_per_inch); ! if (dev->height == 32767) dev->height = (int)(11.0 * dev->y_pixels_per_inch); --- 156,162 ---- /* Set parameters that were unknown before opening device */ ! if (dev->width == INITIAL_WIDTH) dev->width = (int)(8.5 * dev->x_pixels_per_inch); ! if (dev->height == INITIAL_HEIGHT) dev->height = (int)(11.0 * dev->y_pixels_per_inch); *************** *** 506,510 **** int x, int y, int w, int h, gx_color_index zero, gx_color_index one) ! { const byte *ptr_line; int width_bytes, height; DWORD rop = rop_write_at_1s; --- 509,514 ---- int x, int y, int w, int h, gx_color_index zero, gx_color_index one) ! { int endx; ! const byte *ptr_line; int width_bytes, height; DWORD rop = rop_write_at_1s; *************** *** 521,539 **** /* Break up large transfers into smaller ones. */ ! while ( sourcex + w > bmWidthBits ) ! { int code = win_copy_mono(dev, base, sourcex + w - bmWidthBits, raster, gx_no_bitmap_id, ! x + w - bmWidthBits, y, ! bmWidthBits, h, zero, one); if ( code < 0 ) return code; ! w -= bmWidthBits; } while ( h > bmHeight ) ! { int code = win_copy_mono(dev, base + (h - bmHeight) * raster, ! sourcex, raster, gx_no_bitmap_id, ! x, y + h - bmHeight, ! w, bmHeight, zero, one); ! if ( code < 0 ) return code; h -= bmHeight; } --- 525,545 ---- /* Break up large transfers into smaller ones. */ ! while ( (endx = sourcex + w) > bmWidthBits ) ! { int lastx = (endx - 1) & -bmWidthBits; ! int subw = endx - lastx; ! int code = win_copy_mono(dev, base, lastx, raster, gx_no_bitmap_id, ! x + lastx - sourcex, y, ! subw, h, zero, one); if ( code < 0 ) return code; ! w -= subw; } while ( h > bmHeight ) ! { int code; h -= bmHeight; + code = win_copy_mono(dev, base + h * raster, sourcex, raster, + gx_no_bitmap_id, x, y + h, w, bmHeight, + zero, one); + if ( code < 0 ) return code; } diff -rc2N gs251/gdevpcfb.c gs252/gdevpcfb.c *** gs251/gdevpcfb.c Thu Sep 10 17:23:24 1992 --- gs252/gdevpcfb.c Fri Sep 18 09:41:34 1992 *************** *** 204,208 **** private void cmemsetcol(rop_ptr rop) ! { byte far *addr = rop->dest; int yc = rop->height; byte data = rop->data; --- 204,208 ---- private void cmemsetcol(rop_ptr rop) ! { byte *addr = rop->dest; int yc = rop->height; byte data = rop->data; diff -rc2N gs251/gdevpcfb.h gs252/gdevpcfb.h *** gs251/gdevpcfb.h Thu Sep 10 17:22:14 1992 --- gs252/gdevpcfb.h Fri Sep 18 09:40:54 1992 *************** *** 51,57 **** extern dev_proc_get_bits(ega_get_bits); ! /* Type for frame buffer pointers. */ /* Note that 'far' gets defined as null on 32-bit systems. */ typedef byte far *fb_ptr; /* The device descriptor */ --- 51,58 ---- extern dev_proc_get_bits(ega_get_bits); ! /* Types for frame buffer pointers. */ /* Note that 'far' gets defined as null on 32-bit systems. */ typedef byte far *fb_ptr; + typedef volatile byte far *volatile_fb_ptr; /* The device descriptor */ diff -rc2N gs251/gdevprn.c gs252/gdevprn.c *** gs251/gdevprn.c Thu Sep 10 15:27:10 1992 --- gs252/gdevprn.c Wed Sep 16 17:31:30 1992 *************** *** 266,270 **** else { /* Free the memory device bitmap */ ! gs_free(pmemdev->base, (uint)gdev_mem_bitmap_size(pmemdev), 1, "printer buffer(close)"); } --- 266,271 ---- else { /* Free the memory device bitmap */ ! gs_free((char *)pmemdev->base, ! (uint)gdev_mem_bitmap_size(pmemdev), 1, "printer buffer(close)"); } *************** *** 339,343 **** int n; if ( swap ) /* swap the mask */ ! memswab4(&last_mask, &last_mask, sizeof(last_mask)); for ( n = size; n >= line_size; n -= line_size, line_end += line_size --- 340,345 ---- int n; if ( swap ) /* swap the mask */ ! memswab4((byte *)&last_mask, (byte *)&last_mask, ! sizeof(last_mask)); for ( n = size; n >= line_size; n -= line_size, line_end += line_size diff -rc2N gs251/gdevsvga.c gs252/gdevsvga.c *** gs251/gdevsvga.c Thu Sep 10 17:28:40 1992 --- gs252/gdevsvga.c Fri Sep 18 09:56:24 1992 *************** *** 657,662 **** }; int code = svga_find_mode(dev, mode_table); ! fb_ptr p0 = (fb_ptr)MK_PTR(regen, 0); if ( code < 0 ) return code; /* mode not available */ /* Figure out whether we have an ET3000 or an ET4000 */ /* by playing with the segment register. */ --- 657,664 ---- }; int code = svga_find_mode(dev, mode_table); ! volatile_fb_ptr p0 = (volatile_fb_ptr)MK_PTR(regen, 0); if ( code < 0 ) return code; /* mode not available */ + code = svga_open(dev); + if ( code < 0 ) return 0; /* Figure out whether we have an ET3000 or an ET4000 */ /* by playing with the segment register. */ *************** *** 668,672 **** /* read page 0 if ET3000, */ /* page 4 if ET4000 */ ! return svga_open(dev); } } --- 670,674 ---- /* read page 0 if ET3000, */ /* page 4 if ET4000 */ ! return 0; } } diff -rc2N gs251/gdevtknk.c gs252/gdevtknk.c *** gs251/gdevtknk.c Tue Aug 4 01:58:56 1992 --- gs252/gdevtknk.c Wed Sep 16 17:26:04 1992 *************** *** 25,29 **** device descriptors with other geometrical characteristics. */ - #include #include "gdevprn.h" --- 25,28 ---- diff -rc2N gs251/gp_sysv.c gs252/gp_sysv.c *** gs251/gp_sysv.c Fri Sep 4 16:18:28 1992 --- gs252/gp_sysv.c Sat Sep 19 10:38:22 1992 *************** *** 30,33 **** --- 30,35 ---- #include + extern long timezone; /* doesn't seem to be declared anywhere */ + /* rename */ int diff -rc2N gs251/gs.c gs252/gs.c *** gs251/gs.c Sun Sep 6 03:16:08 1992 --- gs252/gs.c Tue Sep 15 05:43:44 1992 *************** *** 20,23 **** --- 20,25 ---- /* gs.c */ /* Driver program for Ghostscript */ + /* We have to include std.h before any file that includes . */ + #include "std.h" #include #include "memory_.h" diff -rc2N gs251/gs.h gs252/gs.h *** gs251/gs.h Sun Aug 2 17:34:32 1992 --- gs252/gs.h Wed Sep 16 17:17:46 1992 *************** *** 20,25 **** /* gs.h */ /* Common definitions for Ghostscript library */ ! #include ! #include "std.h" /* Ghostscript never uses stdin/out/err directly. */ --- 20,24 ---- /* gs.h */ /* Common definitions for Ghostscript library */ ! #include "stdio_.h" /* includes std.h */ /* Ghostscript never uses stdin/out/err directly. */ diff -rc2N gs251/gs.mak gs252/gs.mak *** gs251/gs.mak Tue Sep 8 05:19:30 1992 --- gs252/gs.mak Thu Sep 17 11:34:10 1992 *************** *** 124,130 **** arch_h=arch.h std_h=std.h $(arch_h) - gdebug_h=gdebug.h - gs_h=gs.h $(std_h) - gx_h=gx.h $(gs_h) $(gdebug_h) # Platform interfaces --- 124,127 ---- *************** *** 141,153 **** dos__h=dos_.h ! malloc__h=malloc_.h ! math__h=math_.h $(vmsmath_h) ! memory__h=memory_.h ! stat__h=stat_.h ! string__h=string_.h ! time__h=time_.h # Miscellaneous gserrors_h=gserrors.h --- 138,154 ---- dos__h=dos_.h ! malloc__h=malloc_.h $(std_h) ! math__h=math_.h $(std_h) $(vmsmath_h) ! memory__h=memory_.h $(std_h) ! stat__h=stat_.h $(std_h) ! stdio__h=stdio_.h $(std_h) ! string__h=string_.h $(std_h) ! time__h=time_.h $(std_h) # Miscellaneous + gdebug_h=gdebug.h + gs_h=gs.h $(stdio__h) + gx_h=gx.h $(gs_h) $(gdebug_h) gserrors_h=gserrors.h *************** *** 231,235 **** gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) \ $(gzdevice_h) $(gzstate_h) --- 232,236 ---- gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) $(gxop1_h) \ $(gzdevice_h) $(gzstate_h) *************** *** 430,437 **** $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(std_h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(std_h) $(stream_h) $(scanchar_h) ###### Operators --- 431,438 ---- $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(stdio__h) $(stream_h) $(scanchar_h) ###### Operators *************** *** 619,631 **** scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(std_h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(std_h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(std_h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) --- 620,632 ---- scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) diff -rc2N gs251/gs_init.ps gs252/gs_init.ps *** gs251/gs_init.ps Thu Sep 3 13:40:10 1992 --- gs252/gs_init.ps Fri Sep 18 11:57:38 1992 *************** *** 21,24 **** --- 21,33 ---- % When this is run, systemdict is still writable. + % Check the interpreter revision. + 252 + dup revision ne + { (gs: Interpreter revision ) print revision 10 string cvs print + ( does not match gs_init.ps revision ) print 10 string cvs print + (.\n) print flush 1 .quit + } + if pop + % Acquire the debugging flags. currentdict /DEBUG known /DEBUG exch def *************** *** 97,101 **** /eexec { 55665 .filtereexecDecode ! cvx systemdict begin stopped end {stop} if } bind def /executive --- 106,114 ---- /eexec { 55665 .filtereexecDecode ! cvx systemdict begin stopped ! % Only pop systemdict if it is still the top element, ! % because this is apparently what Adobe interpreters do. ! currentdict systemdict eq { end } if ! { stop } if } bind def /executive *************** *** 473,477 **** /.dict 18 dict dup begin def ! /.buf 128 string def /.cvp {.buf cvs .p} bind def % /.f {the_output_file} def --- 486,490 ---- /.dict 18 dict dup begin def ! /.buf =string def /.cvp {.buf cvs .p} bind def % /.f {the_output_file} def *************** *** 759,763 **** } for ! dw drq mul cvi /dw exch def /dxres DEVICEXRESOLUTION def } --- 772,776 ---- } for ! dw drq mul round cvi /dw exch def /dxres DEVICEXRESOLUTION def } *************** *** 771,775 **** } for ! dh drq mul cvi /dh exch def /dyres DEVICEYRESOLUTION def } --- 784,788 ---- } for ! dh drq mul round cvi /dh exch def /dyres DEVICEYRESOLUTION def } *************** *** 786,794 **** % Check for device sizes specified in points. /DEVICEWIDTHPOINTS where ! { pop /dw DEVICEWIDTHPOINTS dxres mul 72 div cvi def } if /DEVICEHEIGHTPOINTS where ! { pop /dh DEVICEHEIGHTPOINTS dyres mul 72 div cvi def } if --- 799,807 ---- % Check for device sizes specified in points. /DEVICEWIDTHPOINTS where ! { pop /dw DEVICEWIDTHPOINTS dxres mul 72 div round cvi def } if /DEVICEHEIGHTPOINTS where ! { pop /dh DEVICEHEIGHTPOINTS dyres mul 72 div round cvi def } if *************** *** 798,807 **** end end %END DEVICE ! mark systemdict /BufferSpace known ! { /BufferSpace BufferSpace /MaxBitmap BufferSpace ! } if ! systemdict /OutputFile known ! { /OutputFile OutputFile } if counttomark dup 0 ne --- 811,825 ---- end end %END DEVICE ! % Set any device properties defined on the command line. ! dup getdeviceprops ! counttomark 2 idiv ! { systemdict 2 index known ! { pop dup load counttomark 2 roll } ! { pop pop } ! ifelse ! } repeat systemdict /BufferSpace known ! systemdict /MaxBitmap known not and ! { /MaxBitmap BufferSpace } if counttomark dup 0 ne *************** *** 818,827 **** % Establish a default upper limit in the character cache, % namely, enough room for a 1/4" x 1/4" character at the resolution ! % of the default device. mark 18 18 dtransform % 1/4" x 1/4" exch abs cvi 31 add 32 idiv 4 mul % X raster exch abs cvi mul % Y ! dup 10 idiv exch setcacheparams % Conditionally disable the character cache. --- 836,849 ---- % Establish a default upper limit in the character cache, % namely, enough room for a 1/4" x 1/4" character at the resolution ! % of the default device, or for 3 x the "average" character size, ! % whichever is larger. mark + % Compute limit based on character size. 18 18 dtransform % 1/4" x 1/4" exch abs cvi 31 add 32 idiv 4 mul % X raster exch abs cvi mul % Y ! % Compute limit based on allocated space. ! cachestatus 5 2 roll pop pop pop pop div 3 mul cvi exch pop ! max dup 10 idiv exch setcacheparams % Conditionally disable the character cache. diff -rc2N gs251/gsbj gs252/gsbj *** gs251/gsbj --- gs252/gsbj Sun Dec 29 03:42:44 1991 *************** *** 0 **** --- 1 ---- + gs -q -sDEVICE=bj10e -r180 -dNOPAUSE -- gslp.ps $* diff -rc2N gs251/gschar.c gs252/gschar.c *** gs251/gschar.c Mon Jul 20 17:23:44 1992 --- gs252/gschar.c Sun Sep 20 08:53:42 1992 *************** *** 60,65 **** /* Setup macros for show operators */ - #define setup_show()\ - penum->size = strlen(str) #define setup_show_n()\ penum->size = size --- 60,63 ---- *************** *** 74,84 **** /* show[_n] */ int - gs_show_init(register gs_show_enum *penum, - gs_state *pgs, const char *str) - { setup_show(); - penum->slow_show = 0; - return show_setup(penum, pgs, str); - } - int gs_show_n_init(register gs_show_enum *penum, gs_state *pgs, const char *str, uint size) --- 72,75 ---- *************** *** 87,101 **** return show_setup(penum, pgs, str); } - - /* ashow[_n] */ int ! gs_ashow_init(register gs_show_enum *penum, ! gs_state *pgs, floatp ax, floatp ay, const char *str) ! { int code; ! setup_show(); ! code = show_setup(penum, pgs, str); ! setup_a(); ! return code; } int gs_ashow_n_init(register gs_show_enum *penum, --- 78,87 ---- return show_setup(penum, pgs, str); } int ! gs_show_init(gs_show_enum *penum, gs_state *pgs, const char *str) ! { return gs_show_n_init(penum, pgs, str, strlen(str)); } + + /* ashow[_n] */ int gs_ashow_n_init(register gs_show_enum *penum, *************** *** 107,121 **** return code; } - - /* widthshow[_n] */ int ! gs_widthshow_init(register gs_show_enum *penum, ! gs_state *pgs, floatp cx, floatp cy, char chr, const char *str) ! { int code; ! setup_show(); ! code = show_setup(penum, pgs, str); ! setup_width(); ! return code; } int gs_widthshow_n_init(register gs_show_enum *penum, --- 93,103 ---- return code; } int ! gs_ashow_init(gs_show_enum *penum, ! gs_state *pgs, floatp ax, floatp ay, const char *str) ! { return gs_ashow_n_init(penum, pgs, ax, ay, str, strlen(str)); } + + /* widthshow[_n] */ int gs_widthshow_n_init(register gs_show_enum *penum, *************** *** 127,143 **** return code; } - - /* awidthshow[_n] */ int ! gs_awidthshow_init(register gs_show_enum *penum, ! gs_state *pgs, floatp cx, floatp cy, char chr, floatp ax, floatp ay, ! const char *str) ! { int code; ! setup_show(); ! code = show_setup(penum, pgs, str); ! setup_a(); ! setup_width(); ! return code; } int gs_awidthshow_n_init(register gs_show_enum *penum, --- 109,119 ---- return code; } int ! gs_widthshow_init(gs_show_enum *penum, ! gs_state *pgs, floatp cx, floatp cy, char chr, const char *str) ! { return gs_widthshow_n_init(penum, pgs, cx, cy, chr, str, strlen(str)); } + + /* awidthshow[_n] */ int gs_awidthshow_n_init(register gs_show_enum *penum, *************** *** 151,167 **** return code; } - - /* kshow[_n] */ int ! gs_kshow_init(register gs_show_enum *penum, ! gs_state *pgs, const char *str) ! { int code; ! if ( pgs->font->FontType == ft_composite) ! return_error(gs_error_invalidfont); ! setup_show(); ! code = show_setup(penum, pgs, str); ! penum->do_kern = penum->slow_show = 1; ! return code; } int gs_kshow_n_init(register gs_show_enum *penum, --- 127,139 ---- return code; } int ! gs_awidthshow_init(gs_show_enum *penum, ! gs_state *pgs, floatp cx, floatp cy, char chr, floatp ax, floatp ay, ! const char *str) ! { return gs_awidthshow_n_init(penum, pgs, cx, cy, chr, ax, ay, ! str, strlen(str)); } + + /* kshow[_n] */ int gs_kshow_n_init(register gs_show_enum *penum, *************** *** 175,178 **** --- 147,154 ---- return code; } + int + gs_kshow_init(gs_show_enum *penum, gs_state *pgs, const char *str) + { return gs_kshow_n_init(penum, pgs, str, strlen(str)); + } /* ------ Related operators ------ */ *************** *** 180,188 **** /* stringwidth[_n] */ int - gs_stringwidth_init(gs_show_enum *penum, gs_state *pgs, const char *str) - { setup_show(); - return stringwidth_setup(penum, pgs, str); - } - int gs_stringwidth_n_init(gs_show_enum *penum, gs_state *pgs, const char *str, uint size) { setup_show_n(); --- 156,159 ---- *************** *** 189,192 **** --- 160,167 ---- return stringwidth_setup(penum, pgs, str); } + int + gs_stringwidth_init(gs_show_enum *penum, gs_state *pgs, const char *str) + { return gs_stringwidth_n_init(penum, pgs, str, strlen(str)); + } /* Common code for stringwidth[_n] */ *************** *** 206,219 **** /* charpath[_n] */ int - gs_charpath_init(gs_show_enum *penum, gs_state *pgs, - const char *str, int bool) - { int code; - setup_show(); - code = show_setup(penum, pgs, str); - penum->charpath_flag = (bool ? 2 : 1); - penum->can_cache = 0; - return code; - } - int gs_charpath_n_init(gs_show_enum *penum, gs_state *pgs, const char *str, uint size, int bool) --- 181,184 ---- *************** *** 224,227 **** --- 189,197 ---- penum->can_cache = 0; return code; + } + int + gs_charpath_init(gs_show_enum *penum, gs_state *pgs, + const char *str, int bool) + { return gs_charpath_n_init(penum, pgs, str, strlen(str), bool); } diff -rc2N gs251/gschar0.c gs252/gschar0.c *** gs251/gschar0.c Thu Sep 10 06:17:10 1992 --- gs252/gschar0.c Thu Sep 17 02:48:54 1992 *************** *** 137,141 **** goto top1; /* must be non-modal */ } ! penum->chr = *p++; penum->index = index + 1; return 0; --- 137,141 ---- goto top1; /* must be non-modal */ } ! /****** penum->chr = *p++; ******/ penum->index = index + 1; return 0; *************** *** 185,189 **** } penum->pfont = pfont; ! penum->chr = mc.chr; return 0; } --- 185,189 ---- } penum->pfont = pfont; ! /****** penum->chr = mc.chr; ******/ return 0; } diff -rc2N gs251/gscoord.c gs252/gscoord.c *** gs251/gscoord.c Tue Mar 24 03:49:56 1992 --- gs252/gscoord.c Tue Sep 15 06:42:34 1992 *************** *** 276,287 **** scale -= shift; } ! pfc->xx = (is_fzero(ctm.xx) ? 0 : (long)ldexp(ctm.xx, scale)); ! pfc->yy = (is_fzero(ctm.yy) ? 0 : (long)ldexp(ctm.yy, scale)); ! if ( pfc->skewed ) ! { pfc->xy = (is_fzero(ctm.xy) ? 0 : (long)ldexp(ctm.xy, scale)); ! pfc->yx = (is_fzero(ctm.yx) ? 0 : (long)ldexp(ctm.yx, scale)); ! } ! else ! pfc->xy = pfc->yx = 0; #ifdef DEBUG if ( gs_debug['x'] ) --- 276,286 ---- scale -= shift; } ! #define set_c(c)\ ! if ( is_fzero(ctm.c) ) pfc->c.f = 0, pfc->c.l = 0;\ ! else pfc->c.f = ldexp(ctm.c, _fixed_shift), pfc->c.l = (long)ldexp(ctm.c, scale) ! set_c(xx); ! set_c(xy); ! set_c(yx); ! set_c(yy); #ifdef DEBUG if ( gs_debug['x'] ) diff -rc2N gs251/gsmain.c gs252/gsmain.c *** gs251/gsmain.c Sun Sep 6 03:17:56 1992 --- gs252/gsmain.c Sat Sep 12 08:20:24 1992 *************** *** 177,181 **** make_tasv(&stref, t_string, a_executable + a_readonly, strlen(str), const_bytes, (byte *)str); ! return gs_interpret(&stref, gs_user_errors, pexit_code, perror_object); } --- 177,181 ---- make_tasv(&stref, t_string, a_executable + a_readonly, strlen(str), const_bytes, (byte *)str); ! return gs_interpret(&stref, user_errors, pexit_code, perror_object); } diff -rc2N gs251/gsmisc.c gs252/gsmisc.c *** gs251/gsmisc.c Wed Aug 12 18:13:58 1992 --- gs252/gsmisc.c Wed Sep 16 17:31:04 1992 *************** *** 161,165 **** #undef memswab2 /* see memory_.h */ void ! memswab2(const char *src, char *dest, int count) { register const uint *sptr = (const uint *)src; register uint *dptr = (uint *)dest; --- 161,165 ---- #undef memswab2 /* see memory_.h */ void ! memswab2(const byte *src, byte *dest, int count) { register const uint *sptr = (const uint *)src; register uint *dptr = (uint *)dest; *************** *** 207,211 **** #undef memswab4 /* see memory_.h */ void ! memswab4(const char *src, char *dest, int count) { register const ulong *sptr = (const ulong *)src; register ulong *dptr = (ulong *)dest; --- 207,211 ---- #undef memswab4 /* see memory_.h */ void ! memswab4(const byte *src, byte *dest, int count) { register const ulong *sptr = (const ulong *)src; register ulong *dptr = (ulong *)dest; diff -rc2N gs251/gspath2.c gs252/gspath2.c *** gs251/gspath2.c Thu Sep 10 17:37:00 1992 --- gs252/gspath2.c Fri Sep 18 18:33:18 1992 *************** *** 109,113 **** const subpath *psub = ppath->current_subpath; if ( !ppath->subpath_open && ppath->position_valid && ! !penum->moveto_done && (!psub->closed || /* If the last subpath was closed, we can't know */ /* if it was followed by a move to the same point. */ --- 109,113 ---- const subpath *psub = ppath->current_subpath; if ( !ppath->subpath_open && ppath->position_valid && ! !penum->moveto_done && (psub == 0 || !psub->closed || /* If the last subpath was closed, we can't know */ /* if it was followed by a move to the same point. */ diff -rc2N gs251/gstype1.c gs252/gstype1.c *** gs251/gstype1.c Mon Jul 20 15:19:06 1992 --- gs252/gstype1.c Tue Sep 15 06:46:08 1992 *************** *** 108,115 **** /* reasonably good-looking curves, regardless of its */ /* current value in the graphics state. */ ! { /* With the conventional 1000-unit characters, */ ! /* a small "o" will be about 250 units, */ ! /* so set the flatness to 10 units. */ ! /* If the character is very small, set the flatness */ /* to zero, which will produce very accurate curves. */ float cxx = pgs->ctm.xx, cyy = pgs->ctm.yy; --- 108,112 ---- /* reasonably good-looking curves, regardless of its */ /* current value in the graphics state. */ ! { /* If the character is very small, set the flatness */ /* to zero, which will produce very accurate curves. */ float cxx = pgs->ctm.xx, cyy = pgs->ctm.yy; *************** *** 126,130 **** /* Now cxx is approximately one character space unit */ /* in device pixels. */ ! pis->flatness = (cxx > 0.1 ? cxx * 10 : 0.0); } return 0; --- 123,127 ---- /* Now cxx is approximately one character space unit */ /* in device pixels. */ ! pis->flatness = (cxx >= 0.2 ? cxx : 0.0); } return 0; *************** *** 154,164 **** /****** THESE ARE NOT ACCURATE FOR NON-INTEGER DELTAS. ******/ /* This probably doesn't make any difference in practice. */ ! #define c_fixed(d, c) m_fixed(arg2int(d), c, sfc) #define accum_x(dx)\ ! ptx += c_fixed(dx, sfc.xx);\ ! if ( sfc.skewed ) pty += c_fixed(dx, sfc.xy) #define accum_y(dy)\ ! pty += c_fixed(dy, sfc.yy);\ ! if ( sfc.skewed ) ptx += c_fixed(dy, sfc.yx) #define accum_xy(dx,dy)\ accum_xy_proc(&s, dx, dy) --- 151,161 ---- /****** THESE ARE NOT ACCURATE FOR NON-INTEGER DELTAS. ******/ /* This probably doesn't make any difference in practice. */ ! #define c_fixed(d, c) m_fixed(fixed2int_var(d), c, sfc, max_coeff_bits) #define accum_x(dx)\ ! ptx += c_fixed(dx, xx);\ ! if ( sfc.skewed ) pty += c_fixed(dx, xy) #define accum_y(dy)\ ! pty += c_fixed(dy, yy);\ ! if ( sfc.skewed ) ptx += c_fixed(dy, yx) #define accum_xy(dx,dy)\ accum_xy_proc(&s, dx, dy) *************** *** 165,169 **** #define s (*ps) - #define arg2int(f) fixed2int_var(f) private void near --- 162,165 ---- *************** *** 170,178 **** accum_xy_proc(register is_ptr ps, fixed dx, fixed dy) { int idx, idy; ! ptx += m_fixed((idx = arg2int(dx)), sfc.xx, sfc), ! pty += m_fixed((idy = arg2int(dy)), sfc.yy, sfc); if ( sfc.skewed ) ! ptx += m_fixed(idy, sfc.yx, sfc), ! pty += m_fixed(idx, sfc.xy, sfc); } --- 166,176 ---- accum_xy_proc(register is_ptr ps, fixed dx, fixed dy) { int idx, idy; ! idx = fixed2int_var(dx); ! ptx += m_fixed(idx, xx, sfc, max_coeff_bits), ! idy = fixed2int_var(dy); ! pty += m_fixed(idy, yy, sfc, max_coeff_bits); if ( sfc.skewed ) ! ptx += m_fixed(idy, yx, sfc, max_coeff_bits), ! pty += m_fixed(idx, xy, sfc, max_coeff_bits); } diff -rc2N gs251/gxcache.c gs252/gxcache.c *** gs251/gxcache.c Sun Jul 12 20:09:24 1992 --- gs252/gxcache.c Wed Sep 16 05:48:02 1992 *************** *** 212,216 **** gx_add_cached_char(gs_font_dir *dir, gx_device_memory *dev, cached_char *cc, cached_fm_pair *pair) ! { cc->id = gs_next_ids(1); /* Make sure the bits are in the right order */ /* to use as a source. */ --- 212,219 ---- gx_add_cached_char(gs_font_dir *dir, gx_device_memory *dev, cached_char *cc, cached_fm_pair *pair) ! { uint raster = cc->raster; ! uint bsize = raster * cc->height; ! byte *bits = cc_bits(cc); ! cc->id = gs_next_ids(1); /* Make sure the bits are in the right order */ /* to use as a source. */ *************** *** 217,221 **** gdev_mem_ensure_byte_order(dev); /* Add the new character at the tail of its chain. */ ! { register cached_char **head = chars_head(dir, cc->code, pair); while ( *head != 0 ) head = &(*head)->next; --- 220,224 ---- gdev_mem_ensure_byte_order(dev); /* Add the new character at the tail of its chain. */ ! { register cached_char **head = chars_head(dir, cc->code, pair); while ( *head != 0 ) head = &(*head)->next; *************** *** 224,237 **** cc->head.pair = pair; pair->num_chars++; ! } /* Discard the memory device overhead that follows the bits. */ ! { uint diff = gdev_mem_bitmap_size(dev) - cc->raster * cc->height; ! if ( diff >= sizeof(cached_char_head) ) ! { shorten_cached_char(dir, cc, diff); ! dir->bsize -= diff; ! if_debug2('K', "[K]shortening 0x%lx by %u (mdev overhead)\n", ! (ulong)cc, diff); ! } ! } } --- 227,262 ---- cc->head.pair = pair; pair->num_chars++; ! } ! /* Compress the character in place. */ ! /* For now, just discard leading and trailing blank rows. */ ! { /* Discard trailing blank rows. */ ! register byte *p = bits + bsize; ! register uint n = bsize; ! while ( n && !p[-1] ) --n, --p; ! bsize = (n + raster - 1) / raster * raster; ! } ! if ( bsize ) ! { /* Discard leading blank rows. */ ! int offset; ! register byte *p = bits; ! while ( !*p ) ++p; ! offset = (p - bits) / raster; ! if ( offset ) ! { uint diff = offset * raster; ! bsize -= diff; ! memcpy((char *)bits, (char *)bits + diff, bsize); ! cc->offset.y -= int2fixed(offset); ! } ! } ! cc->height = bsize / raster; /* Discard the memory device overhead that follows the bits. */ ! { uint diff = gdev_mem_bitmap_size(dev) - bsize; ! if ( diff >= sizeof(cached_char_head) ) ! { shorten_cached_char(dir, cc, diff); ! dir->bsize -= diff; ! if_debug2('K', "[K]shortening 0x%lx by %u (mdev overhead)\n", ! (ulong)cc, diff); ! } ! } } diff -rc2N gs251/gxclist.c gs252/gxclist.c *** gs251/gxclist.c Thu Sep 10 17:20:06 1992 --- gs252/gxclist.c Sat Sep 19 07:11:32 1992 *************** *** 205,211 **** #define alloc_data(n) data += (n), size -= (n) gx_device *target = cdev->target; ! int raster, nbands, band; gx_clist_state *states; ! uint state_size; cdev->ymin = cdev->ymax = -1; /* render_init not done yet */ cdev->tile_data = data; --- 205,211 ---- #define alloc_data(n) data += (n), size -= (n) gx_device *target = cdev->target; ! uint raster, nbands, band; gx_clist_state *states; ! ulong state_size; cdev->ymin = cdev->ymax = -1; /* render_init not done yet */ cdev->tile_data = data; *************** *** 212,217 **** cdev->tile_data_size = (size / 5) & -4; /* arbitrary! */ alloc_data(cdev->tile_data_size); ! raster = ((((ulong)(target->width) * target->color_info.depth + 31) >> 5) << 2) + sizeof(byte *); ! cdev->band_height = size / (uint)raster; if ( cdev->band_height == 0 ) /* can't even fit one scan line */ return_error(gs_error_limitcheck); --- 212,217 ---- cdev->tile_data_size = (size / 5) & -4; /* arbitrary! */ alloc_data(cdev->tile_data_size); ! raster = gx_device_raster(target, 1) + sizeof(byte *); ! cdev->band_height = size / raster; if ( cdev->band_height == 0 ) /* can't even fit one scan line */ return_error(gs_error_limitcheck); *************** *** 220,229 **** if_debug4('l', "[l]width=%d, raster=%d, band_height=%d, nbands=%d\n", target->width, raster, cdev->band_height, cdev->nbands); ! state_size = nbands * sizeof(gx_clist_state); ! if ( state_size > size - (sizeof(cmd_prefix) + cmd_largest_size + raster + 4) ) /* not enough room */ return_error(gs_error_limitcheck); cdev->mdev.base = data; cdev->states = states = (gx_clist_state *)data; ! alloc_data(state_size); cdev->cbuf = data; cdev->cnext = data; --- 220,229 ---- if_debug4('l', "[l]width=%d, raster=%d, band_height=%d, nbands=%d\n", target->width, raster, cdev->band_height, cdev->nbands); ! state_size = nbands * (ulong)sizeof(gx_clist_state); ! if ( state_size + sizeof(cmd_prefix) + cmd_largest_size + raster + 4 > size ) /* not enough room */ return_error(gs_error_limitcheck); cdev->mdev.base = data; cdev->states = states = (gx_clist_state *)data; ! alloc_data((uint)state_size); cdev->cbuf = data; cdev->cnext = data; *************** *** 885,889 **** byte *base = cdev->mdev.base; /* save */ int depth = target->color_info.depth; ! uint raster = ((target->width * depth + 31) >> 5) << 2; const gx_device_memory *mdev = gdev_mem_device_for_bits(depth); if ( mdev == 0 ) --- 885,889 ---- byte *base = cdev->mdev.base; /* save */ int depth = target->color_info.depth; ! uint raster = gx_device_raster(target, 1); const gx_device_memory *mdev = gdev_mem_device_for_bits(depth); if ( mdev == 0 ) diff -rc2N gs251/gxhint1.c gs252/gxhint1.c *** gs251/gxhint1.c Mon Jul 20 17:04:50 1992 --- gs252/gxhint1.c Tue Sep 15 06:52:52 1992 *************** *** 31,34 **** --- 31,35 ---- #include "gxfont.h" #include "gxtype1.h" + #include "gxop1.h" /* Define the tolerance for testing whether a point is in a zone, */ *************** *** 217,221 **** find_zone(P3(gs_type1_state *, fixed, fixed)); ! #define c_fixed(d, c) m_fixed(fixed2int_var(d), c, pis->fc) /* Add a horizontal stem hint. */ --- 218,222 ---- find_zone(P3(gs_type1_state *, fixed, fixed)); ! #define c_fixed(d, c) m_fixed(fixed2int_var(d), c, pis->fc, max_coeff_bits) /* Add a horizontal stem hint. */ *************** *** 230,240 **** y += pis->lsb.y; if ( pis->fh.axes_swapped ) ! v = pis->vs_offset.x + c_fixed(y, pis->fc.yx) + pis->pgs->ctm.tx_fixed, ! dv = c_fixed(dy, pis->fc.yx); else ! v = pis->vs_offset.y + c_fixed(y, pis->fc.yy) + pis->pgs->ctm.ty_fixed, ! dv = c_fixed(dy, pis->fc.yy); if ( dy < 0 ) vbot = v + dv, vtop = v; --- 231,241 ---- y += pis->lsb.y; if ( pis->fh.axes_swapped ) ! v = pis->vs_offset.x + c_fixed(y, yx) + pis->pgs->ctm.tx_fixed, ! dv = c_fixed(dy, yx); else ! v = pis->vs_offset.y + c_fixed(y, yy) + pis->pgs->ctm.ty_fixed, ! dv = c_fixed(dy, yy); if ( dy < 0 ) vbot = v + dv, vtop = v; *************** *** 316,326 **** x += pis->lsb.x; if ( pis->fh.axes_swapped ) ! v = pis->vs_offset.y + c_fixed(x, pis->fc.xy) + pis->pgs->ctm.ty_fixed, ! dv = c_fixed(dx, pis->fc.xy); else ! v = pis->vs_offset.x + c_fixed(x, pis->fc.xx) + pis->pgs->ctm.tx_fixed, ! dv = c_fixed(dx, pis->fc.xx); if ( dv < 0 ) v += dv, dv = -dv; psh = type1_stem(&pis->vstem_hints, v, dv); --- 317,327 ---- x += pis->lsb.x; if ( pis->fh.axes_swapped ) ! v = pis->vs_offset.y + c_fixed(x, xy) + pis->pgs->ctm.ty_fixed, ! dv = c_fixed(dx, xy); else ! v = pis->vs_offset.x + c_fixed(x, xx) + pis->pgs->ctm.tx_fixed, ! dv = c_fixed(dx, xx); if ( dv < 0 ) v += dv, dv = -dv; psh = type1_stem(&pis->vstem_hints, v, dv); diff -rc2N gs251/gxmatrix.h gs252/gxmatrix.h *** gs251/gxmatrix.h Sun May 24 04:20:38 1992 --- gs252/gxmatrix.h Tue Sep 15 06:45:10 1992 *************** *** 1,3 **** ! /* Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved. Distributed by Free Software Foundation, Inc. --- 1,3 ---- ! /* Copyright (C) 1989, 1990, 1992 Aladdin Enterprises. All rights reserved. Distributed by Free Software Foundation, Inc. *************** *** 43,50 **** /* floating point in coordinate transformations. */ /* Currently this is used only by the Type 1 font interpreter. */ typedef struct { ! long xx, xy, yx, yy; int skewed; ! int shift; /* see c_fixed */ int max_bits; /* max bits of coefficient */ fixed round; /* ditto */ --- 43,55 ---- /* floating point in coordinate transformations. */ /* Currently this is used only by the Type 1 font interpreter. */ + /* The setup is in gscoord.c. */ typedef struct { ! long l; ! fixed f; ! } coeff1; ! typedef struct { ! coeff1 xx, xy, yx, yy; int skewed; ! int shift; /* see m_fixed */ int max_bits; /* max bits of coefficient */ fixed round; /* ditto */ *************** *** 52,55 **** /* Multiply an integer not exceeding max_bits in magnitude */ /* by a coefficient from a fixed_coeff. */ ! #define m_fixed(iv, c, fc)\ ! arith_rshift((iv) * (c) + (fc).round, (fc).shift) --- 57,62 ---- /* Multiply an integer not exceeding max_bits in magnitude */ /* by a coefficient from a fixed_coeff. */ ! #define m_fixed(iv, c, fc, maxb)\ ! (((iv) + (1 << (maxb - 1))) & (-1 << maxb) ? /* out of range */\ ! (long)((iv) * (fc).c.f) :\ ! arith_rshift((iv) * (fc).c.l + (fc).round, (fc).shift)) diff -rc2N gs251/gxpcopy.c gs252/gxpcopy.c *** gs251/gxpcopy.c Sun Sep 6 17:27:02 1992 --- gs252/gxpcopy.c Fri Sep 18 10:22:32 1992 *************** *** 186,191 **** * compute sqrt(1+t*t) by table lookup on the high bits of abs(t). * ! * To avoid replacing shallow curves by long straight lines, ! * we also require that abs(dx) and abs(dy) be reasonably small. * * Note that if scaled_flat is very small, we don't do any of this; --- 186,192 ---- * compute sqrt(1+t*t) by table lookup on the high bits of abs(t). * ! * To avoid replacing shallow curves by short straight lines, ! * we halve the flatness if the curve is very short. ! * We don't do anything about long, nearly flat curves. * * Note that if scaled_flat is very small, we don't do any of this; *************** *** 197,200 **** --- 198,202 ---- fixed dy3 = y3 - y0; fixed ady3 = any_abs(dy3); + fixed flat = scaled_flat; /* We have to be quite careful to ensure that */ /* none of the multiplications will overflow. */ *************** *** 218,225 **** else goto sub; } ! else if ( adx3 >> 3 > scaled_flat ) ! goto sub; reduce_3(ady3, short_max); ! d = (scaled_sqrt_tab[(ady3 << sqrt_index_shift) / adx3] * scaled_flat) >> sqrt_value_shift; dx = x1 - x0, dy = y1 - y0; reduce_d(dx); --- 220,226 ---- else goto sub; } ! if ( adx3 < 16 ) flat >>= 1; reduce_3(ady3, short_max); ! d = (scaled_sqrt_tab[(ady3 << sqrt_index_shift) / adx3] * flat) >> sqrt_value_shift; dx = x1 - x0, dy = y1 - y0; reduce_d(dx); *************** *** 244,251 **** else goto sub; } ! else if ( ady3 >> 3 > scaled_flat ) ! goto sub; reduce_3(adx3, short_max); ! d = (scaled_sqrt_tab[(adx3 << sqrt_index_shift) / ady3] * scaled_flat) >> sqrt_value_shift; dy = y1 - y0, dx = x1 - x0; reduce_d(dy); --- 245,251 ---- else goto sub; } ! if ( ady3 < 16 ) flat >>= 1; reduce_3(adx3, short_max); ! d = (scaled_sqrt_tab[(adx3 << sqrt_index_shift) / ady3] * flat) >> sqrt_value_shift; dy = y1 - y0, dx = x1 - x0; reduce_d(dy); *************** *** 268,276 **** } /* Curve is flat enough. Add a line and exit. */ ! #ifdef DEBUG ! if ( gs_debug['2'] ) ! dprintf2("[2]\t*** x=%f, y=%f ***\n", ! fixed2float(x3), fixed2float(y3)); ! #endif return gx_path_add_line(ppath, x3, y3); --- 268,273 ---- } /* Curve is flat enough. Add a line and exit. */ ! if_debug2('2', "[2]\t*** x=%f, y=%f ***\n", ! fixed2float(x3), fixed2float(y3)); return gx_path_add_line(ppath, x3, y3); diff -rc2N gs251/iinit.c gs252/iinit.c *** gs251/iinit.c Thu Sep 10 17:37:22 1992 --- gs252/iinit.c Sun Sep 20 12:24:54 1992 *************** *** 34,39 **** /* Define the revision and revision date of this interpreter. */ /* The revision is the Ghostscript release number x 100 + the sub-release. */ ! const int gs_revision = 251; ! const char *gs_revisiondate = "9/11/92"; /* Implementation parameters. */ --- 34,39 ---- /* Define the revision and revision date of this interpreter. */ /* The revision is the Ghostscript release number x 100 + the sub-release. */ ! const int gs_revision = 252; ! const char *gs_revisiondate = "9/20/92"; /* Implementation parameters. */ diff -rc2N gs251/isave.c gs252/isave.c *** gs251/isave.c Tue Jul 14 19:24:56 1992 --- gs252/isave.c Fri Sep 18 18:40:46 1992 *************** *** 206,209 **** --- 206,211 ---- if ( ap->save_level == 0 ) /* no saving */ return obj; + if ( num_refs == 0 ) /* no saving */ + return obj; cp = ap->changes; if ( cp != 0 && cp->where == 0 && cp->contents.value.refs != 0 && *************** *** 218,222 **** #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]alloc_refs %s merge", client_name); alloc_save_print(cp); } --- 220,224 ---- #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]alloc_refs(%s) merge", client_name); alloc_save_print(cp); } *************** *** 238,242 **** #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]alloc_refs %s", client_name); alloc_save_print(cp); } --- 240,244 ---- #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]alloc_refs(%s)", client_name); alloc_save_print(cp); } *************** *** 254,259 **** alloc_change *cp = ap->changes; ref *top = ptr + num_refs; ! if_debug3('U', "[u]alloc_free_refs (%lx,%d) %s\n", ! (ulong)ptr, num_refs, client_name); if ( ap->save_level == 0 ) { /* Always OK to free if not saving. */ --- 256,263 ---- alloc_change *cp = ap->changes; ref *top = ptr + num_refs; ! if_debug3('U', "[u]alloc_free_refs(%s) (%lx,%d)\n", ! client_name, (ulong)ptr, num_refs); ! if ( num_refs == 0 ) /* may point anywhere! */ ! return; if ( ap->save_level == 0 ) { /* Always OK to free if not saving. */ *************** *** 303,307 **** #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]save %s", client_name); alloc_save_print(cp); } --- 307,311 ---- #ifdef DEBUG if ( gs_debug['U'] ) ! { dprintf1("[u]save(%s)", client_name); alloc_save_print(cp); } diff -rc2N gs251/iutil.c gs252/iutil.c *** gs251/iutil.c Thu Jul 16 17:34:42 1992 --- gs252/iutil.c Tue Sep 15 04:15:56 1992 *************** *** 171,174 **** --- 171,191 ---- case t_real: sprintf(buf, "%g", op->value.realval); + /* Make sure the output has a decimal point. */ + /* This is needed for compatibility with */ + /* Adobe (and other) interpreters. */ + /* Old Borland compilers require &buf[0], not just buf. */ + if ( strchr(&buf[0], '.') != NULL ) break; + { char *ept = strchr(&buf[0], 'e'); + if ( ept == NULL ) + strcat(buf, ".0"); + else + { /* Insert the .0 before the exponent. */ + /* What a nuisance! */ + char buf1[30]; + strcpy(&buf1[0], ept); + strcpy(ept, ".0"); + strcat(&buf[0], &buf1[0]); + } + } break; case t_string: diff -rc2N gs251/maint.mak gs252/maint.mak *** gs251/maint.mak Thu Sep 10 18:28:58 1992 --- gs252/maint.mak Sun Sep 20 13:45:08 1992 *************** *** 23,30 **** # and is unlikely to be useful to users. - DRIVE=a: - LABEL=GS_090892 - VERIFY= - # Targets: # xmit -- make the .BE files for Kermit transmission --- 23,26 ---- *************** *** 32,36 **** # xfer -- make a diskette for transferring files to the Sun # release -- make the .BE files for a release - # disks -- make the ZIP files for MS-DOS filesets # Remember to erase *.zip / *.z / *.be, if needed, before running these. --- 28,31 ---- *************** *** 51,54 **** --- 46,51 ---- xmit: $(TARS) + xexe: tar0.be + xfonts: tar8.be *************** *** 60,64 **** xcopy tar*.z a: ! release: $(TARS) tar0.be # The dependency lists for the .be files should be much longer! --- 57,61 ---- xcopy tar*.z a: ! release: xmit xexe # The dependency lists for the .be files should be much longer! *************** *** 154,167 **** @echo ---------------- Done. ---------------- ! zips: gsexe.zip gsfiles.zip gssrc1.zip gssrc2.zip @echo ---------------- Done. ---------------- ! disks: ! make disk1hd ! make disk2hd ! make disk3hd @echo ---------------- Done. ---------------- ! # ------ Here are the ZIP files that go onto the diskettes. ------ gsexe.zip: gs.exe --- 151,161 ---- @echo ---------------- Done. ---------------- ! srczips: gsfiles.zip gssrc1.zip gssrc2.zip @echo ---------------- Done. ---------------- ! zips: gsexe.zip gsfiles.zip gssrc1.zip gssrc2.zip @echo ---------------- Done. ---------------- ! # Here are the ZIP files that go onto the diskettes. gsexe.zip: gs.exe *************** *** 224,236 **** if exist gsfonts4.zip erase gsfonts4.zip rename _temp_.zip gsfonts4.zip - - # ------ Now the actual contents of the diskettes. ------ - - disk1hd: readme.1st gsexe.zip gsfiles.zip - @askdisk 1 $(DRIVE) $(LABEL)_1 $(VERIFY) readme.1st \utils\pkunzip.exe gsexe.zip gsfiles.zip - - disk2hd: gssrc1.zip gssrc2.zip gsfonts1.zip - @askdisk 2 $(DRIVE) $(LABEL)_2 $(VERIFY) gssrc1.zip gssrc2.zip gsfonts1.zip - - disk3hd: gsfonts2.zip gsfonts3.zip gsfonts4.zip - @askdisk 3 $(DRIVE) $(LABEL)_3 $(VERIFY) gsfonts2.zip gsfonts3.zip gsfonts4.zip --- 218,219 ---- diff -rc2N gs251/make.doc gs252/make.doc *** gs251/make.doc Sat Sep 5 17:05:02 1992 --- gs252/make.doc Wed Sep 16 04:40:34 1992 *************** *** 246,250 **** Ghostscript windows will redisplay properly when they are covered and exposed, but drawing operations will go slower. This choice is controlled ! by a line in the file gdevx.c that says private int use_backing = 1; Changing this line to read --- 246,250 ---- Ghostscript windows will redisplay properly when they are covered and exposed, but drawing operations will go slower. This choice is controlled ! by a line in the file gdevxini.c that says private int use_backing = 1; Changing this line to read *************** *** 256,260 **** Some versions of the X server do not implement tiling properly. This will show up as broad bands of color where dither patterns should appear. If ! this happens, change private int use_XSetTile = 1; to --- 256,260 ---- Some versions of the X server do not implement tiling properly. This will show up as broad bands of color where dither patterns should appear. If ! this happens, in the file gdevx.c, change private int use_XSetTile = 1; to *************** *** 268,272 **** characters should appear, or characters may appear in "inverse video" (e.g., white on a black rectangle). If this happens, it may help you to ! change private int use_XPutImage = 1; to --- 268,272 ---- characters should appear, or characters may appear in "inverse video" (e.g., white on a black rectangle). If this happens, it may help you to ! change, in the file gdevx.c, private int use_XPutImage = 1; to diff -rc2N gs251/malloc_.h gs252/malloc_.h *** gs251/malloc_.h Wed Jun 3 18:23:42 1992 --- gs252/malloc_.h Fri Sep 18 14:42:24 1992 *************** *** 21,24 **** --- 21,27 ---- /* Generic substitute for Unix malloc.h */ + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" + #ifdef __TURBOC__ # include *************** *** 31,35 **** extern char *malloc(); # else /* should really be a POSIX define */ ! # if defined(_HPUX_SOURCE) || defined(__CONVEX__) || defined(__convex__) # include # else --- 34,38 ---- extern char *malloc(); # else /* should really be a POSIX define */ ! # if defined(_HPUX_SOURCE) || defined(__CONVEX__) || defined(__convex__) || defined(__OSF__) # include # else diff -rc2N gs251/man.doc gs252/man.doc *** gs251/man.doc Tue Sep 8 14:31:04 1992 --- gs252/man.doc Sat Sep 19 09:32:40 1992 *************** *** 1,5 **** .\"- -*- nroff -*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - .\" ! .\"This file describes version 2.5.1 of Ghostscript. .\" .\"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --- 1,5 ---- .\"- -*- nroff -*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - .\" ! .\"This file describes version 2.5.2 of Ghostscript. .\" .\"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *************** *** 517,521 **** spam% gs Initializing... done. ! Ghostscript 2.5.1 (9/8/92) Copyright (C) 1990, 1992 Aladdin Enterprises, Menlo Park, CA. All rights reserved. --- 517,521 ---- spam% gs Initializing... done. ! Ghostscript 2.5.2 (9/19/92) Copyright (C) 1990, 1992 Aladdin Enterprises, Menlo Park, CA. All rights reserved. *************** *** 560,564 **** spam% gs Initializing... done. ! Ghostscript 2.5.1 (9/8/92) Copyright (C) 1990, 1992 Aladdin Enterprises, Menlo Park, CA. All rights reserved. --- 560,564 ---- spam% gs Initializing... done. ! Ghostscript 2.5.2 (9/19/92) Copyright (C) 1990, 1992 Aladdin Enterprises, Menlo Park, CA. All rights reserved. diff -rc2N gs251/math_.h gs252/math_.h *** gs251/math_.h Fri Apr 24 19:48:42 1992 --- gs252/math_.h Wed Sep 16 18:06:46 1992 *************** *** 21,24 **** --- 21,27 ---- /* Generic substitute for math.h */ + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" + #ifdef VMS /* DEC VAX/VMS C comes with a math.h file, but GNU VAX/VMS C does not. */ *************** *** 46,50 **** extern double hypot(double, double); #else ! # if !defined(__MSDOS__) && !defined(BSD4_2) && !defined(VMS) # define hypot(x,y) sqrt((x)*(x)+(y)*(y)) # endif --- 49,53 ---- extern double hypot(double, double); #else ! # if !defined(__TURBOC__) && !defined(BSD4_2) && !defined(VMS) # define hypot(x,y) sqrt((x)*(x)+(y)*(y)) # endif diff -rc2N gs251/memory_.h gs252/memory_.h *** gs251/memory_.h Wed Aug 12 18:03:54 1992 --- gs252/memory_.h Wed Sep 16 18:05:40 1992 *************** *** 21,24 **** --- 21,27 ---- /* Generic substitute for Unix memory.h */ + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" + /****** Note: the System V bcmp routine only returns zero or non-zero, ******/ /****** unlike memcmp which returns -1, 0, or 1. ******/ *************** *** 63,67 **** # endif /* !BSD4_2, ... */ # endif /* !VMS */ ! #endif /* !__MSDOS__ */ /* memswab2 and memswab4 are not standard routines; */ --- 66,70 ---- # endif /* !BSD4_2, ... */ # endif /* !VMS */ ! #endif /* !__TURBOC__ */ /* memswab2 and memswab4 are not standard routines; */ *************** *** 69,77 **** /* We thought we would come out ahead by using the Watcom C `swab' library */ /* routine for memswab2, but it's slower than the C routine in gsmisc.c! */ ! /* Note that the arguments are declared char *, */ /* but the implementation may assume they are int-aligned. */ #ifdef __PROTOTYPES__ ! extern void memswab2(const char *src, char *dest, int count); ! extern void memswab4(const char *src, char *dest, int count); #else extern void memswab2(), memswab4(); --- 72,80 ---- /* We thought we would come out ahead by using the Watcom C `swab' library */ /* routine for memswab2, but it's slower than the C routine in gsmisc.c! */ ! /* Note that the arguments are declared byte *, */ /* but the implementation may assume they are int-aligned. */ #ifdef __PROTOTYPES__ ! extern void memswab2(const byte *src, byte *dest, int count); ! extern void memswab4(const byte *src, byte *dest, int count); #else extern void memswab2(), memswab4(); diff -rc2N gs251/oper.h gs252/oper.h *** gs251/oper.h Thu Aug 6 19:31:08 1992 --- gs252/oper.h Wed Sep 16 18:06:04 1992 *************** *** 35,39 **** /* Operand stack manipulation */ /* The most efficient code is different depending on the compiler.... */ ! #ifdef __MSDOS__ /* stupid compilers */ #define push(n)\ if ( (op += (n)) > ostop ) return (e_stackoverflow); else osp += (n) --- 35,39 ---- /* Operand stack manipulation */ /* The most efficient code is different depending on the compiler.... */ ! #ifdef __TURBOC__ /* stupid compilers */ #define push(n)\ if ( (op += (n)) > ostop ) return (e_stackoverflow); else osp += (n) diff -rc2N gs251/pstoppm.ps gs252/pstoppm.ps *** gs251/pstoppm.ps Thu Sep 10 12:49:32 1992 --- gs252/pstoppm.ps Tue Sep 15 13:49:20 1992 *************** *** 1,5 **** %! PS-Adobe-2.0 %% Program for reading a .ps file and writing out a PPM file. ! %% For Ghostscript 2.5.1. %% %% Modified by L. Peter Deutsch 9/10/92: --- 1,5 ---- %! PS-Adobe-2.0 %% Program for reading a .ps file and writing out a PPM file. ! %% For Ghostscript 2.5.2. %% %% Modified by L. Peter Deutsch 9/10/92: diff -rc2N gs251/readme.doc gs252/readme.doc *** gs251/readme.doc Tue Sep 1 14:30:54 1992 --- gs252/readme.doc Sat Sep 19 09:33:26 1992 *************** *** 21,25 **** This file, readme.doc, describes problems and new features in the ! current release of Ghostscript. This file describes version 2.5.1 of Ghostscript. --- 21,25 ---- This file, readme.doc, describes problems and new features in the ! current release of Ghostscript. This file describes version 2.5.2 of Ghostscript. *************** *** 33,41 **** section of NEWS for full details. ! A serious performance bug in curve drawing (introduced in release ! 2.5) has been fixed. ! The standard MS-DOS executables now include a driver for the H-P ! DeskJet 500C. Known problems --- 33,40 ---- section of NEWS for full details. ! The DeskJet and LaserJet drivers (finally) work correctly. ! You can now set all settable device properties (OutputFile, ! BufferSpace, MaxBitmap) using -s or -d on the command line. Known problems *************** *** 58,62 **** resetfile ! banddevice, renderbands The following are not implemented completely: --- 57,61 ---- resetfile ! banddevice, renderbands (these are obsolete) The following are not implemented completely: diff -rc2N gs251/scfd.c gs252/scfd.c *** gs251/scfd.c Mon Aug 10 14:35:26 1992 --- gs252/scfd.c Wed Sep 16 17:23:48 1992 *************** *** 20,26 **** /* scfd.c */ /* CCITTFax decoding filter */ ! #include #include "memory_.h" - #include "std.h" #include "gdebug.h" #include "scf.h" --- 20,25 ---- /* scfd.c */ /* CCITTFax decoding filter */ ! #include "stdio_.h" /* includes std.h */ #include "memory_.h" #include "gdebug.h" #include "scf.h" *************** *** 103,107 **** /* Get a run from the stream. */ ! #define get_run(decode, initial_bits, rlen, str)\ { const cfd_node _ds *np;\ int clen;\ --- 102,106 ---- /* Get a run from the stream. */ ! #define get_run(decode, initial_bits, runlen, str)\ { const cfd_node _ds *np;\ int clen;\ *************** *** 126,130 **** skip_bits(clen);\ }\ ! rlen = np->run_length;\ } --- 125,129 ---- skip_bits(clen);\ }\ ! runlen = np->run_length;\ } diff -rc2N gs251/scfdgen.c gs252/scfdgen.c *** gs251/scfdgen.c Mon Jun 15 04:57:40 1992 --- gs252/scfdgen.c Wed Sep 16 17:23:20 1992 *************** *** 20,25 **** /* scfdgen.c */ /* Generate the CCITTFaxDecode tables */ ! #include ! #include "std.h" #include "scf.h" #include "malloc_.h" --- 20,24 ---- /* scfdgen.c */ /* Generate the CCITTFaxDecode tables */ ! #include "stdio_.h" /* includes std.h */ #include "scf.h" #include "malloc_.h" diff -rc2N gs251/scfe.c gs252/scfe.c *** gs251/scfe.c Thu Aug 20 03:10:32 1992 --- gs252/scfe.c Wed Sep 16 17:23:34 1992 *************** *** 20,26 **** /* scfe.c */ /* CCITTFax encoding filter */ ! #include #include "memory_.h" - #include "std.h" #include "gdebug.h" #include "scf.h" --- 20,25 ---- /* scfe.c */ /* CCITTFax encoding filter */ ! #include "stdio_.h" /* includes std.h */ #include "memory_.h" #include "gdebug.h" #include "scf.h" diff -rc2N gs251/sfilter.c gs252/sfilter.c *** gs251/sfilter.c Thu Sep 10 04:55:40 1992 --- gs252/sfilter.c Wed Sep 16 17:22:48 1992 *************** *** 20,26 **** /* sfilter.c */ /* Stream functions for filters */ ! #include #include "memory_.h" - #include "std.h" #include "scanchar.h" #include "stream.h" --- 20,25 ---- /* sfilter.c */ /* Stream functions for filters */ ! #include "stdio_.h" /* includes std.h */ #include "memory_.h" #include "scanchar.h" #include "stream.h" diff -rc2N gs251/sfilter2.c gs252/sfilter2.c *** gs251/sfilter2.c Sun May 17 20:45:42 1992 --- gs252/sfilter2.c Wed Sep 16 17:23:02 1992 *************** *** 20,26 **** /* sfilter2.c */ /* Additional stream functions for filters */ ! #include #include "memory_.h" - #include "std.h" #include "scanchar.h" #include "stream.h" --- 20,25 ---- /* sfilter2.c */ /* Additional stream functions for filters */ ! #include "stdio_.h" /* includes std.h */ #include "memory_.h" #include "scanchar.h" #include "stream.h" diff -rc2N gs251/slzwd.c gs252/slzwd.c *** gs251/slzwd.c Mon Aug 10 14:34:56 1992 --- gs252/slzwd.c Wed Sep 16 17:22:22 1992 *************** *** 20,25 **** /* slzwd.c */ /* LZW decoding filter */ ! #include ! #include "std.h" #include "gdebug.h" #include "stream.h" --- 20,24 ---- /* slzwd.c */ /* LZW decoding filter */ ! #include "stdio_.h" /* includes std.h */ #include "gdebug.h" #include "stream.h" diff -rc2N gs251/slzwe.c gs252/slzwe.c *** gs251/slzwe.c Mon Aug 10 14:34:24 1992 --- gs252/slzwe.c Wed Sep 16 17:22:32 1992 *************** *** 20,25 **** /* slzwe.c */ /* LZW encoding filter */ ! #include ! #include "std.h" #include "gdebug.h" #include "stream.h" --- 20,24 ---- /* slzwe.c */ /* LZW encoding filter */ ! #include "stdio_.h" /* includes std.h */ #include "gdebug.h" #include "stream.h" diff -rc2N gs251/stat_.h gs252/stat_.h *** gs251/stat_.h Wed Dec 11 02:41:14 1991 --- gs252/stat_.h Wed Sep 16 17:15:14 1992 *************** *** 20,23 **** --- 20,26 ---- /* stat_.h */ /* Generic substitute for Unix sys/stat.h */ + + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" #include diff -rc2N gs251/std.h gs252/std.h *** gs251/std.h Sat Aug 8 08:07:38 1992 --- gs252/std.h Sat Sep 19 09:39:44 1992 *************** *** 70,76 **** #endif ! /* Disable 'const' if the compiler can't handle it. */ #ifndef __PROTOTYPES__ # define const /* */ #endif --- 70,79 ---- #endif ! /* Disable 'const' and 'volatile' if the compiler can't handle them. */ #ifndef __PROTOTYPES__ + # undef const # define const /* */ + # undef volatile + # define volatile /* */ #endif diff -rc2N gs251/stdio_.h gs252/stdio_.h *** gs251/stdio_.h --- gs252/stdio_.h Wed Sep 16 17:11:20 1992 *************** *** 0 **** --- 1,26 ---- + /* Copyright (C) 1992 Aladdin Enterprises. All rights reserved. + Distributed by Free Software Foundation, Inc. + + This file is part of Ghostscript. + + Ghostscript is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY. No author or distributor accepts responsibility + to anyone for the consequences of using it or for whether it serves any + particular purpose or works at all, unless he says so in writing. Refer + to the Ghostscript General Public License for full details. + + Everyone is granted permission to copy, modify and redistribute + Ghostscript, but only under the conditions described in the Ghostscript + General Public License. A copy of this license is supposed to have been + given to you along with Ghostscript so you can know your rights and + responsibilities. It should be in a file named COPYING. Among other + things, the copyright notice and this notice must be preserved on all + copies. */ + + /* stdio_.h */ + /* Generic substitute for stdio.h */ + + /* This is here only because we must include std.h before any file that */ + /* includes sys/types.h. */ + #include "std.h" + #include diff -rc2N gs251/stream.c gs252/stream.c *** gs251/stream.c Mon Aug 10 12:32:10 1992 --- gs252/stream.c Wed Sep 16 17:18:40 1992 *************** *** 20,26 **** /* stream.c */ /* Stream package for Ghostscript interpreter */ ! #include #include "memory_.h" - #include "std.h" #include "stream.h" #include "scanchar.h" --- 20,25 ---- /* stream.c */ /* Stream package for Ghostscript interpreter */ ! #include "stdio_.h" /* includes std.h */ #include "memory_.h" #include "stream.h" #include "scanchar.h" diff -rc2N gs251/string_.h gs252/string_.h *** gs251/string_.h Sun May 10 17:32:02 1992 --- gs252/string_.h Wed Sep 16 18:06:14 1992 *************** *** 21,24 **** --- 21,27 ---- /* Generic substitute for Unix string.h */ + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" + #ifdef BSD4_2 # include *************** *** 25,29 **** # define strchr index #else ! # ifdef __MSDOS__ # undef memset /* see memory_.h */ # include --- 28,32 ---- # define strchr index #else ! # ifdef __TURBOC__ # undef memset /* see memory_.h */ # include diff -rc2N gs251/tbcplus.mak gs252/tbcplus.mak *** gs251/tbcplus.mak Thu Sep 10 17:44:24 1992 --- gs252/tbcplus.mak Sat Sep 19 06:07:12 1992 *************** *** 45,51 **** DEBUG=0 ! # Setting TDEBUG=1 includes symbol table information for the Borland debugger. ! # No execution time or space penalty, just larger .OBJ and .EXE files ! # and slower linking. TDEBUG=0 --- 45,50 ---- DEBUG=0 ! # Setting TDEBUG=1 includes symbol table information for the Borland debugger, ! # and also enables stack checking. Code is substantially slower and larger. TDEBUG=0 *************** *** 222,226 **** # non-overlayable code space. ! DEVICE_DEVS=vga.dev ega.dev epson.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev --- 221,225 ---- # non-overlayable code space. ! DEVICE_DEVS=vga.dev ega.dev epson.dev eps9high.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev diff -rc2N gs251/time_.h gs252/time_.h *** gs251/time_.h Sat Sep 5 17:07:20 1992 --- gs252/time_.h Wed Sep 16 17:15:30 1992 *************** *** 21,24 **** --- 21,27 ---- /* Generic substitute for Unix sys/time.h */ + /* We must include std.h before any file that includes sys/types.h. */ + #include "std.h" + /* Some System V environments don't include sys/time.h. */ /* We detect this in the makefile rules for gp_sysv.c and gp_unix.c, */ diff -rc2N gs251/turboc.mak gs252/turboc.mak *** gs251/turboc.mak Mon Sep 7 13:40:36 1992 --- gs252/turboc.mak Mon Sep 14 17:31:58 1992 *************** *** 165,169 **** # we only include a limited set of device drivers. ! DEVICE_DEVS=vga.dev ega.dev epson.dev bj10e.dev !include "gs.mak" !include "devs.mak" --- 165,169 ---- # we only include a limited set of device drivers. ! DEVICE_DEVS=vga.dev ega.dev epson.dev eps9high.dev bj10e.dev !include "gs.mak" !include "devs.mak" diff -rc2N gs251/unix-ansi.mak gs252/unix-ansi.mak *** gs251/unix-ansi.mak Fri Sep 11 17:50:43 1992 --- gs252/unix-ansi.mak Mon Sep 21 00:55:29 1992 *************** *** 82,85 **** --- 82,86 ---- # SunOS and some others want -X; Ultrix wants -x. # SunOS 4.n may need -Bstatic. + # Apollos running DomainOS don't support -X (and -x has no effect). # XLDFLAGS can be set from the command line. *************** *** 108,112 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 109,113 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. *************** *** 316,322 **** arch_h=arch.h std_h=std.h $(arch_h) - gdebug_h=gdebug.h - gs_h=gs.h $(std_h) - gx_h=gx.h $(gs_h) $(gdebug_h) # Platform interfaces --- 317,320 ---- *************** *** 333,345 **** dos__h=dos_.h ! malloc__h=malloc_.h ! math__h=math_.h $(vmsmath_h) ! memory__h=memory_.h ! stat__h=stat_.h ! string__h=string_.h ! time__h=time_.h # Miscellaneous gserrors_h=gserrors.h --- 331,347 ---- dos__h=dos_.h ! malloc__h=malloc_.h $(std_h) ! math__h=math_.h $(std_h) $(vmsmath_h) ! memory__h=memory_.h $(std_h) ! stat__h=stat_.h $(std_h) ! stdio__h=stdio_.h $(std_h) ! string__h=string_.h $(std_h) ! time__h=time_.h $(std_h) # Miscellaneous + gdebug_h=gdebug.h + gs_h=gs.h $(stdio__h) + gx_h=gx.h $(gs_h) $(gdebug_h) gserrors_h=gserrors.h *************** *** 423,427 **** gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) \ $(gzdevice_h) $(gzstate_h) --- 425,429 ---- gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) $(gxop1_h) \ $(gzdevice_h) $(gzstate_h) *************** *** 622,629 **** $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(std_h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(std_h) $(stream_h) $(scanchar_h) ###### Operators --- 624,631 ---- $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(stdio__h) $(stream_h) $(scanchar_h) ###### Operators *************** *** 811,823 **** scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(std_h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(std_h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(std_h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) --- 813,825 ---- scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) *************** *** 930,934 **** # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 8 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only --- 932,936 ---- # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 24 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only *************** *** 1524,1528 **** # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c --- 1526,1530 ---- # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(stdio__h) $(string__h) $(malloc__h) $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c *************** *** 1570,1573 **** --- 1572,1579 ---- -mkdir $(bindir) $(INSTALL_PROGRAM) gs $(bindir) + $(INSTALL_PROGRAM) gsbj $(bindir) + $(INSTALL_PROGRAM) gsdj $(bindir) + $(INSTALL_PROGRAM) gslj $(bindir) + $(INSTALL_PROGRAM) gslp $(bindir) $(INSTALL_PROGRAM) gsnd $(bindir) $(INSTALL_PROGRAM) bdftops $(bindir) *************** *** 1575,1578 **** --- 1581,1585 ---- -mkdir $(gsdatadir) $(INSTALL_DATA) README $(gsdatadir) + $(INSTALL_DATA) gslp.ps $(gsdatadir) $(INSTALL_DATA) gs_init.ps $(gsdatadir) $(INSTALL_DATA) gs_2asc.ps $(gsdatadir) diff -rc2N gs251/unix-cc.mak gs252/unix-cc.mak *** gs251/unix-cc.mak Fri Sep 11 17:50:44 1992 --- gs252/unix-cc.mak Mon Sep 21 00:55:29 1992 *************** *** 104,108 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 104,108 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. *************** *** 312,318 **** arch_h=arch.h std_h=std.h $(arch_h) - gdebug_h=gdebug.h - gs_h=gs.h $(std_h) - gx_h=gx.h $(gs_h) $(gdebug_h) # Platform interfaces --- 312,315 ---- *************** *** 329,341 **** dos__h=dos_.h ! malloc__h=malloc_.h ! math__h=math_.h $(vmsmath_h) ! memory__h=memory_.h ! stat__h=stat_.h ! string__h=string_.h ! time__h=time_.h # Miscellaneous gserrors_h=gserrors.h --- 326,342 ---- dos__h=dos_.h ! malloc__h=malloc_.h $(std_h) ! math__h=math_.h $(std_h) $(vmsmath_h) ! memory__h=memory_.h $(std_h) ! stat__h=stat_.h $(std_h) ! stdio__h=stdio_.h $(std_h) ! string__h=string_.h $(std_h) ! time__h=time_.h $(std_h) # Miscellaneous + gdebug_h=gdebug.h + gs_h=gs.h $(stdio__h) + gx_h=gx.h $(gs_h) $(gdebug_h) gserrors_h=gserrors.h *************** *** 419,423 **** gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) \ $(gzdevice_h) $(gzstate_h) --- 420,424 ---- gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) $(gxop1_h) \ $(gzdevice_h) $(gzstate_h) *************** *** 618,625 **** $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(std_h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(std_h) $(stream_h) $(scanchar_h) ###### Operators --- 619,626 ---- $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(stdio__h) $(stream_h) $(scanchar_h) ###### Operators *************** *** 807,819 **** scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(std_h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(std_h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(std_h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) --- 808,820 ---- scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) *************** *** 926,930 **** # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 8 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only --- 927,931 ---- # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 24 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only *************** *** 1520,1524 **** # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c --- 1521,1525 ---- # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(stdio__h) $(string__h) $(malloc__h) $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c *************** *** 1566,1569 **** --- 1567,1574 ---- -mkdir $(bindir) $(INSTALL_PROGRAM) gs $(bindir) + $(INSTALL_PROGRAM) gsbj $(bindir) + $(INSTALL_PROGRAM) gsdj $(bindir) + $(INSTALL_PROGRAM) gslj $(bindir) + $(INSTALL_PROGRAM) gslp $(bindir) $(INSTALL_PROGRAM) gsnd $(bindir) $(INSTALL_PROGRAM) bdftops $(bindir) *************** *** 1571,1574 **** --- 1576,1580 ---- -mkdir $(gsdatadir) $(INSTALL_DATA) README $(gsdatadir) + $(INSTALL_DATA) gslp.ps $(gsdatadir) $(INSTALL_DATA) gs_init.ps $(gsdatadir) $(INSTALL_DATA) gs_2asc.ps $(gsdatadir) diff -rc2N gs251/unix-gcc.mak gs252/unix-gcc.mak *** gs251/unix-gcc.mak Fri Sep 11 17:50:44 1992 --- gs252/unix-gcc.mak Mon Sep 21 00:55:29 1992 *************** *** 112,116 **** # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. --- 112,116 ---- # Choose the language feature(s) to include. See gs.mak for details. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. *************** *** 320,326 **** arch_h=arch.h std_h=std.h $(arch_h) - gdebug_h=gdebug.h - gs_h=gs.h $(std_h) - gx_h=gx.h $(gs_h) $(gdebug_h) # Platform interfaces --- 320,323 ---- *************** *** 337,349 **** dos__h=dos_.h ! malloc__h=malloc_.h ! math__h=math_.h $(vmsmath_h) ! memory__h=memory_.h ! stat__h=stat_.h ! string__h=string_.h ! time__h=time_.h # Miscellaneous gserrors_h=gserrors.h --- 334,350 ---- dos__h=dos_.h ! malloc__h=malloc_.h $(std_h) ! math__h=math_.h $(std_h) $(vmsmath_h) ! memory__h=memory_.h $(std_h) ! stat__h=stat_.h $(std_h) ! stdio__h=stdio_.h $(std_h) ! string__h=string_.h $(std_h) ! time__h=time_.h $(std_h) # Miscellaneous + gdebug_h=gdebug.h + gs_h=gs.h $(stdio__h) + gx_h=gx.h $(gs_h) $(gdebug_h) gserrors_h=gserrors.h *************** *** 427,431 **** gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) \ $(gzdevice_h) $(gzstate_h) --- 428,432 ---- gxhint1.$(OBJ): gxhint1.c $(GXERR) \ ! $(gxarith_h) $(gxfixed_h) $(gxmatrix_h) $(gxdevmem_h) $(gxchar_h) $(gxfont_h) $(gxtype1_h) $(gxop1_h) \ $(gzdevice_h) $(gzstate_h) *************** *** 626,633 **** $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(std_h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(std_h) $(stream_h) $(scanchar_h) ###### Operators --- 627,634 ---- $(gsmatrix_h) $(gxdevice_h) $(gzcolor_h) ! sfilter.$(OBJ): sfilter.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) \ $(gscrypt1_h) ! stream.$(OBJ): stream.c $(AK) $(stdio__h) $(stream_h) $(scanchar_h) ###### Operators *************** *** 815,827 **** scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(std_h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(std_h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(std_h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(std_h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) --- 816,828 ---- scfdtab.$(OBJ): scfdtab.c $(AK) $(std_h) $(scf_h) ! scfd.$(OBJ): scfd.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! scfe.$(OBJ): scfe.c $(AK) $(stdio__h) $(gdebug_h) $(scf_h) $(stream_h) ! sfilter2.$(OBJ): sfilter2.c $(AK) $(stdio__h) $(scanchar_h) $(stream_h) ! slzwd.$(OBJ): slzwd.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) ! slzwe.$(OBJ): slzwe.c $(AK) $(stdio__h) $(gdebug_h) $(stream_h) zfilter2.$(OBJ): zfilter2.c $(OP) $(alloc_h) $(dict_h) $(dparam_h) $(stream_h) *************** *** 934,938 **** # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 8 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only --- 935,939 ---- # bj10e Canon BubbleJet BJ10e # * cdeskjet H-P DeskJet 500C with 1 bit/pixel color ! # * cdjcolor H-P DeskJet 500C with 24 bit/pixel color and # high-quality color (Floyd-Steinberg) dithering # * cdjmono H-P DeskJet 500C printing black only *************** *** 1528,1532 **** # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c --- 1529,1533 ---- # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(stdio__h) $(string__h) $(malloc__h) $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c *************** *** 1574,1577 **** --- 1575,1582 ---- -mkdir $(bindir) $(INSTALL_PROGRAM) gs $(bindir) + $(INSTALL_PROGRAM) gsbj $(bindir) + $(INSTALL_PROGRAM) gsdj $(bindir) + $(INSTALL_PROGRAM) gslj $(bindir) + $(INSTALL_PROGRAM) gslp $(bindir) $(INSTALL_PROGRAM) gsnd $(bindir) $(INSTALL_PROGRAM) bdftops $(bindir) *************** *** 1579,1582 **** --- 1584,1588 ---- -mkdir $(gsdatadir) $(INSTALL_DATA) README $(gsdatadir) + $(INSTALL_DATA) gslp.ps $(gsdatadir) $(INSTALL_DATA) gs_init.ps $(gsdatadir) $(INSTALL_DATA) gs_2asc.ps $(gsdatadir) diff -rc2N gs251/unixtail.mak gs252/unixtail.mak *** gs251/unixtail.mak Mon Sep 7 15:26:46 1992 --- gs252/unixtail.mak Wed Sep 16 17:26:58 1992 *************** *** 58,62 **** # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c --- 58,62 ---- # -------------------------- Auxiliary programs --------------------------- # ! ansi2knr$(XE): ansi2knr.c $(stdio__h) $(string__h) $(malloc__h) $(CC) -o ansi2knr$(XE) $(CFLAGS) ansi2knr.c *************** *** 104,107 **** --- 104,111 ---- -mkdir $(bindir) $(INSTALL_PROGRAM) gs $(bindir) + $(INSTALL_PROGRAM) gsbj $(bindir) + $(INSTALL_PROGRAM) gsdj $(bindir) + $(INSTALL_PROGRAM) gslj $(bindir) + $(INSTALL_PROGRAM) gslp $(bindir) $(INSTALL_PROGRAM) gsnd $(bindir) $(INSTALL_PROGRAM) bdftops $(bindir) *************** *** 109,112 **** --- 113,117 ---- -mkdir $(gsdatadir) $(INSTALL_DATA) README $(gsdatadir) + $(INSTALL_DATA) gslp.ps $(gsdatadir) $(INSTALL_DATA) gs_init.ps $(gsdatadir) $(INSTALL_DATA) gs_2asc.ps $(gsdatadir) diff -rc2N gs251/vms-cc.mak gs252/vms-cc.mak *** gs251/vms-cc.mak Sat Aug 15 10:52:26 1992 --- gs252/vms-cc.mak Thu Sep 17 02:53:06 1992 *************** *** 78,83 **** $ ! To incorporate compiled fonts, add the line $ ! oper_(ccfonts_op_defs) - $ ! and then, for each font name XYZ, a line of the form - $ ! font_("0.font_XYZ",gsf_XYZ,zf_XYZ) $ ! Also add the name ICCFONT and the names of the compiled fonts $ ! to the compilation and linking lists. --- 78,81 ---- *************** *** 86,89 **** --- 84,96 ---- $ CREATE GCONFIG.H device_(gs_x11_device) + $ ! + $ ! + $ Create gconfigf.h similarly. This is only used for compiled fonts. + $ For each compiled font XYZ, add a line of the form + $ ! font_("0.font_XYZ",gsf_XYZ,zf_XYZ) + $ ! + $ ! + $ CREATE GCONFIGF.H + $ ! $ ! $ ! Create an empty object library diff -rc2N gs251/vms-gcc.mak gs252/vms-gcc.mak *** gs251/vms-gcc.mak Sat Aug 15 10:52:56 1992 --- gs252/vms-gcc.mak Thu Sep 17 02:53:06 1992 *************** *** 85,90 **** $ ! To incorporate compiled fonts, add the line $ ! oper_(ccfonts_op_defs) - $ ! and then, for each font name XYZ, a line of the form - $ ! font_("0.font_XYZ",gsf_XYZ,zf_XYZ) $ ! Also add the name ICCFONT and the names of the compiled fonts $ ! to the compilation and linking lists. --- 85,88 ---- *************** *** 93,96 **** --- 91,102 ---- $ CREATE GCONFIG.H device_(gs_x11_device) + $ ! + $ ! + $ Create gconfigf.h similarly. This is only used for compiled fonts. + $ For each compiled font XYZ, add a line of the form + $ ! font_("0.font_XYZ",gsf_XYZ,zf_XYZ) + $ ! + $ ! + $ CREATE GCONFIGF.H $ ! $ ! Create an empty object library diff -rc2N gs251/watc.mak gs252/watc.mak *** gs251/watc.mak Tue Sep 8 14:25:46 1992 --- gs252/watc.mak Sat Sep 19 07:05:18 1992 *************** *** 45,51 **** DEBUG=0 ! # Setting TDEBUG=1 includes symbol table information for the Watcom debugger. ! # No execution time or space penalty, just larger .OBJ and .EXE files ! # and slower linking. TDEBUG=0 --- 45,50 ---- DEBUG=0 ! # Setting TDEBUG=1 includes symbol table information for the Watcom debugger, ! # and also enables stack checking. Code is substantially slower and larger. TDEBUG=0 *************** *** 171,175 **** $(CCL) $(CCFLAGS) -i=$(LIBDIR) @_temp_.tr echogs.c - genarch$(XE): genarch.c $(CCL) $(CCFLAGS) -i=$(LIBDIR) genarch.c --- 170,173 ---- *************** *** 232,240 **** # Since we have a large address space, we include the optional features. ! FEATURE_DEVS=filter.dev dps.dev level2.dev # Choose the device(s) to include. See devs.mak for details. ! DEVICE_DEVS=vga.dev ega.dev tseng.dev epson.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev --- 230,238 ---- # Since we have a large address space, we include the optional features. ! FEATURE_DEVS=filter.dev # Choose the device(s) to include. See devs.mak for details. ! DEVICE_DEVS=vga.dev ega.dev tseng.dev epson.dev eps9high.dev bj10e.dev DEVICE_DEVS2=deskjet.dev djet500.dev laserjet.dev ljetplus.dev ljet2p.dev ljet3.dev DEVICE_DEVS3=cdeskjet.dev cdjcolor.dev cdjmono.dev paintjet.dev pjetxl.dev diff -rc2N gs251/zdict.c gs252/zdict.c *** gs251/zdict.c Sun May 17 17:33:48 1992 --- gs252/zdict.c Sat Sep 19 17:23:08 1992 *************** *** 168,171 **** --- 168,189 ---- } + /* .knownget */ + int + zknownget(register os_ptr op) + { register os_ptr op1 = op - 1; + ref *pvalue; + check_type(*op1, t_dictionary); + check_dict_read(*op1); + if ( r_has_type(op, t_null) || dict_find(op1, op, &pvalue) <= 0 ) + { make_false(op1); + pop(1); + } + else + { ref_assign(op1, pvalue); + make_true(op); + } + return 0; + } + /* where */ int *************** *** 254,257 **** --- 272,276 ---- {"0end", zend}, {"2known", zknown}, + {"2.knownget", zknownget}, {"1load", zload}, {"1maxlength", zmaxlength}, diff -rc2N gs251/zmisc.c gs252/zmisc.c *** gs251/zmisc.c Tue May 19 17:26:14 1992 --- gs252/zmisc.c Wed Sep 16 18:07:58 1992 *************** *** 35,39 **** /* Import the C getenv function */ ! extern char *getenv(P1(char *)); /* bind */ --- 35,39 ---- /* Import the C getenv function */ ! extern char *getenv(P1(const char *)); /* bind */