File ghostscript-9.00.dif of Package ghostscript-library.887

--- Resource/Init/Fontmap
+++ Resource/Init/Fontmap	2008-02-21 14:55:26.000000000 +0000
@@ -1,4 +1,9 @@
 %!
 % See Fontmap.GS for the syntax of real Fontmap files.
 %% Replace 1 (Fontmap.GS)
+(Fontmap.X11-auto) .runlibfileifexists
 (Fontmap.GS) .runlibfile
+(Fontmap.kanji) .runlibfileifexists
+(Fontmap.rus) .runlibfileifexists
+(Fontmap.CID) .runlibfileifexists
+(Fontmap.greek) .runlibfileifexists
--- Resource/Init/gs_fonts.ps
+++ Resource/Init/gs_fonts.ps	2008-02-21 14:55:26.000000000 +0000
@@ -203,7 +203,7 @@ userdict /Fontmap .FontDirectory maxleng
 NOFONTPATH { /FONTPATH () def } if
 /FONTPATH where
  { pop }
- { /FONTPATH (GS_FONTPATH) getenv not { () } if def }
+ { /FONTPATH (GS_FONTPATH) getenv not { (@@FONTPATH@@) } if def }
 ifelse
 FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
 /FONTPATH [ FONTPATH .pathlist ] def
--- Resource/Init/gs_init.ps
+++ Resource/Init/gs_init.ps	2008-02-21 14:55:26.000000000 +0000
@@ -75,7 +75,7 @@ systemdict /.languagelevel known not { /
 % standard page size A4 rather than US letter, the page size of 
 % devices that default to letter or A4 can be changed by setting
 % DEFAULTPAPERSIZE.
-% /DEFAULTPAPERSIZE (a4) def
+/DEFAULTPAPERSIZE (a4) def
 
 % Turn on array packing for the rest of initialization.
 true setpacking
@@ -239,7 +239,7 @@ userdict /=string 256 string put
  { mark
    product (Ghostscript) search
     { pop pop pop
-      (This software comes with NO WARRANTY: see the file PUBLIC for details.\n)
+      (This software comes with NO WARRANTY: see the file COPYING for details.\n)
     }
     { pop
     }
--- base/Makefile.in
+++ base/Makefile.in	2010-09-28 13:05:05.291926537 +0000
@@ -47,10 +47,11 @@ PSD=$(PSGENDIR)/
 # the directories also define the default search path for the
 # initialization files (gs_*.ps) and the fonts.
 
-INSTALL = $(GLSRCDIR)/instcopy -c
+INSTALL = install -c
 INSTALL_PROGRAM = $(INSTALL) -m 755
 INSTALL_DATA = $(INSTALL) -m 644
 INSTALL_SHARED = @INSTALL_SHARED@
+ARCHLIB=$(shell test -d /usr/lib64 && echo lib64 || echo lib)
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
@@ -87,7 +88,7 @@ CUPSPDFTORASTER=@CUPSPDFTORASTER@
 # Define the default directory/ies for the runtime
 # initialization and font files.  Separate multiple directories with a :.
 
-GS_LIB_DEFAULT=$(gsdatadir)/Resource/Init:$(gsdatadir)/lib:$(gsdatadir)/Resource/Font:$(gsdir)/fonts:@fontpath@
+GS_LIB_DEFAULT=/etc/ghostscript/$(GS_DOT_VERSION):$(gsdatadir)/Resource/Init:$(gsdatadir)/lib:$(gsdatadir)/Resource/Font:$(gsdir)/Resource:$(gsdir)/fonts:@fontpath@
 
 # Define the default directory for cached data files
 # this must be a single path.
@@ -112,7 +113,9 @@ GS_INIT=gs_init.ps
 #	  Code runs substantially slower even if no debugging switches
 #	  are set.
 
-GENOPT=
+GLIBOPT=
+DEBUG=
+GENOPT=-DA4 -DHAVE_PNG_H $(GLIBOPT) $(DEBUG) -DICCPROFILESDIR=\"$(gsdatadir)/iccprofiles/\"
 
 # Choose capability options.
 
@@ -251,6 +254,11 @@ LCMSSRCDIR=lcms
 IJSSRCDIR=@IJSDIR@
 IJSEXECTYPE=unix
 
+# Define library names for the Gimp-Print (stp) driver
+STPLIB=gimpprint
+STPINC=$(CONTRIBSRC)/../stp/include
+STPDIR=$(CONTRIBSRC)/../stp/src/main/.libs
+
 # Define the directory where the imdi library source is stored.
 # See devs.mak for more information.
 
@@ -325,7 +333,7 @@ LDFLAGS=@LDFLAGS@ $(XLDFLAGS)
 # Solaris may need -lnsl -lsocket -lposix4.
 # (Libraries required by individual drivers are handled automatically.)
 
-EXTRALIBS=@LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@
+EXTRALIBS=@LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ $(FT_LIBS) -Wl,-rpath-link,$(STPDIR)/ -L$(STPDIR)/ -rdynamic -ldl
 
 # Define the standard libraries to search at the end of linking.
 # Most platforms require -lpthread for the POSIX threads library;
@@ -387,7 +395,9 @@ CAIRO_LIBS	=	@CAIRO_LIBS@
 
 # Choose the language feature(s) to include.  See gs.mak for details.
 
-FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev $(GLD)pipe.dev $(GLD)gsnogc.dev $(GLD)roplib.dev $(GLD)htxlib.dev $(PSD)fapi.dev @JBIG2DEVS@ @JPXDEVS@ @UTF8DEVS@
+FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dps.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)epsf.dev \
+    $(EXTRADEVS) $(GLD)pipe.dev $(PSD)rasterop.dev $(PSD)fzlib.dev $(PSD)cidfont.dev $(GLD)gsnogc.dev \
+    $(GLD)roplib.dev $(GLD)htxlib.dev $(PSD)fapi.dev $(PSD)type1.dev $(PSD)type32.dev $(PSD)type42.dev $(PSD)compfont.dev @JBIG2DEVS@ @JPXDEVS@ @UTF8DEVS@
 #FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev
 #FEATURE_DEVS=$(PSD)psl3.dev $(PSD)pdf.dev $(PSD)dpsnext.dev $(PSD)ttfont.dev $(PSD)rasterop.dev $(GLD)pipe.dev
 # The following is strictly for testing.
@@ -416,7 +426,7 @@ BAND_LIST_COMPRESSOR=zlib
 # Choose the implementation of file I/O: 'stdio', 'fd', or 'both'.
 # See gs.mak and sfxfd.c for more details.
 
-FILE_IMPLEMENTATION=stdio
+FILE_IMPLEMENTATION=both
 
 # Choose the implementation of stdio: '' for file I/O and 'c' for callouts
 # See gs.mak and ziodevs.c/ziodevsc.c for more details.
@@ -429,7 +439,7 @@ GS_DEV_DEFAULT="x11alpha x11 bbox"
 
 # Fallback default device.  This is set to 'display' by 
 # unix-dll.mak when building a shared object.
-DISPLAY_DEV=$(DD)bbox.dev
+DISPLAY_DEV=
 
 # Choose the device(s) to include.  See devs.mak for details,
 # devs.mak and contrib.mak for the list of available devices.
@@ -461,13 +471,13 @@ DISPLAY_DEV=$(DD)bbox.dev
 #DEVICE_DEVS19=
 #DEVICE_DEVS20=$(DD)cljet5.dev $(DD)cljet5c.dev
 #DEVICE_DEVS21=$(DD)spotcmyk.dev $(DD)devicen.dev $(DD)xcf.dev $(DD)psdcmyk.dev $(DD)psdrgb.dev
-DEVICE_DEVS=$(DISPLAY_DEV) @X_DEVS@
+DEVICE_DEVS=$(DISPLAY_DEV) $(STATIC_DEVS)
 DEVICE_DEVS1=@FILES@
 DEVICE_DEVS2=@PRINTERS@
-DEVICE_DEVS3=@CUPSDEV@
-DEVICE_DEVS4=@IJSDEVS@
-DEVICE_DEVS5=@OMNIDEVS@
-DEVICE_DEVS6=@PNGDEVS@
+DEVICE_DEVS3=
+DEVICE_DEVS4=
+DEVICE_DEVS5=
+DEVICE_DEVS6=
 DEVICE_DEVS7=@JBIG2DEVS@
 DEVICE_DEVS8=$(DD)svgwrite.dev
 DEVICE_DEVS9=
--- base/configure.ac
+++ base/configure.ac	2008-02-21 15:12:05.000000000 +0000
@@ -789,6 +789,7 @@ JPEG 2000 PDF image support entirely.
   else
     AC_MSG_RESULT([no])
     AC_CHECK_LIB([jasper], [jas_image_create], [
+	JASPERDIR=/usr/include
 	SHARE_JASPER=1
     ], [
 	AC_MSG_WARN([disabling support for JPEG 2000 images])
@@ -1126,11 +1127,18 @@ if test -n "$P_DEVS"; then
 
 # Remove contributed drivers if requested and make sure we don't have any 
 # duplicates in there, add $(DD)foo.dev constructs
+	OIFS="$IFS"
+	IFS=$'\n'
 	noncontribmakefiles=`find . -name '*.mak' -print | grep -v '^\./contrib/'`
-	PRINTERS=`(for i in $P_DEVS; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles 2>&1 >/dev/null ) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012' ' '`
+	IFS="$OIFS"
+	PRINTERS=`(for i in $P_DEVS; do d='$(DD)'${i}.dev; if (IFS=$'\n'; grep '^'$d $noncontribmakefiles &> /dev/null ) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012' ' '`
 fi
 if test -n "$F_DEVS"; then
-	FILES=`(for i in $F_DEVS; do d='$(DD)'${i}.dev; if ( grep '^'$d $noncontribmakefiles  2>&1 >/dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012' ' '`
+	OIFS="$IFS"
+	IFS=$'\n'
+	noncontribmakefiles=`find . -name '*.mak' -print | grep -v '^\./contrib/'`
+	IFS="$OIFS"
+	FILES=`(for i in $F_DEVS; do d='$(DD)'${i}.dev; if (IFS=$'\n'; grep '^'$d $noncontribmakefiles  >& /dev/null) || ( ! test -z "$CONTRIBINCLUDE" ); then echo $d; fi; done) | sort | uniq | tr '\012' ' '`
 fi
 AC_SUBST(PRINTERS)
 AC_SUBST(FILES)
--- base/contrib.mak
+++ base/contrib.mak	2008-02-21 14:55:26.000000000 +0000
@@ -26,7 +26,7 @@ CONTRIB_MAK=$(GLSRC)contrib.mak
 # Displays:
 #   MS-DOS (note: not usable with Desqview/X):
 #	herc	Hercules Graphics display   [MS-DOS only]
-#	pe	Private Eye display
+#	pe	Private Eye display [MS-DOS only]
 #   Unix and VMS:
 #	att3b1	AT&T 3b1/Unixpc monochrome display   [3b1 only]
 #	sonyfb	Sony Microsystems monochrome display   [Sony only]
@@ -299,6 +299,9 @@ $(DD)bjc800.dev : $(cdeskjet_) $(DD)page
 $(DD)escp.dev : $(cdeskjet_) $(DD)page.dev
 	$(SETPDEV) $(DD)escp $(cdeskjet_)
 
+$(DD)escpc.dev : $(cdeskjet_) $(DD)page.dev
+	$(SETPDEV) $(DD)escpc $(cdeskjet_)
+
 # NB: you can also customise the build if required, using
 # -DBitsPerPixel=<number> if you wish the default to be other than 24
 # for the generic drivers (cdj500, cdj550, pjxl300, pjtest, pjxltest).
@@ -557,8 +560,8 @@ lbp8_=$(GLOBJ)gdevlbp8.$(OBJ)
 $(DD)lbp8.dev : $(lbp8_) $(DD)page.dev
 	$(SETPDEV) $(DD)lbp8 $(lbp8_)
 
-$(DD)lips3.dev : $(lbp8_) $(DD)page.dev
-	$(SETPDEV) $(DD)lips3 $(lbp8_)
+#$(DD)lips3.dev : $(lbp8_) $(DD)page.dev
+#	$(SETPDEV) $(DD)lips3 $(lbp8_)
 
 $(GLOBJ)gdevlbp8.$(OBJ) : $(GLSRC)gdevlbp8.c $(PDEVH)
 	$(GLCC) $(GLO_)gdevlbp8.$(OBJ) $(C_) $(GLSRC)gdevlbp8.c
--- base/devs.mak
+++ base/devs.mak	2009-06-16 13:09:00.000000000 +0000
@@ -44,19 +44,19 @@ GDEV=$(AK) $(ECHOGS_XE) $(GDEVH)
 
 # MS-DOS displays (note: not usable with Desqview/X):
 #   MS-DOS EGA and VGA:
-#	ega	EGA (640x350, 16-color)
-#	vga	VGA (640x480, 16-color)
+#	ega	EGA (640x350, 16-color) [MS-DOS]
+#	vga	VGA (640x480, 16-color) [MS-DOS]
 #   MS-DOS SuperVGA:
-# *	ali	SuperVGA using Avance Logic Inc. chipset, 256-color modes
-# *	atiw	ATI Wonder SuperVGA, 256-color modes
-# *	cirr	SuperVGA using Cirrus Logic CL-GD54XX chips, 256-color modes
-# *	s3vga	SuperVGA using S3 86C911 chip (e.g., Diamond Stealth board)
-#	svga16	Generic SuperVGA in 800x600, 16-color mode
-# *	tseng	SuperVGA using Tseng Labs ET3000/4000 chips, 256-color modes
-# *	tvga	SuperVGA using Trident chipset, 256-color modes
-#   ****** NOTE: The vesa device does not work with the Watcom (32-bit MS-DOS)
+# *	ali	SuperVGA using Avance Logic Inc. chipset, 256-color modes [MS-DOS]
+# *	atiw	ATI Wonder SuperVGA, 256-color modes [MS-DOS]
+# *	cirr	SuperVGA using Cirrus Logic CL-GD54XX chips, 256-color modes [MS-DOS]
+# *	s3vga	SuperVGA using S3 86C911 chip (e.g., Diamond Stealth board) [MS-DOS]
+#	svga16	Generic SuperVGA in 800x600, 16-color mode [MS-DOS]
+# *	tseng	SuperVGA using Tseng Labs ET3000/4000 chips, 256-color modes [MS-DOS]
+# *	tvga	SuperVGA using Trident chipset, 256-color modes [MS-DOS]
+#   ****** NOTE: The vesa device does not work with the Watcom (32-bit MS-DOS) [MS-DOS]
 #   ****** compiler or executable.
-#	vesa	SuperVGA with VESA standard API driver
+#	vesa	SuperVGA with VESA standard API driver [MS-DOS]
 # Other displays:
 #	display   For use on any platform that supports DLLs
 #   MS Windows:
@@ -238,6 +238,10 @@ GDEV=$(AK) $(ECHOGS_XE) $(GDEVH)
 # "Printer" drivers depend on the following:
 PDEVH=$(AK) $(gdevprn_h)
 
+# General rules
+$(GLOBJ)%.$(OBJ): $(GLSRC)%.c $(PDEVH)
+	$(GLCC) $(O_) $@ $(C_) $<
+
 # Define the header files for device drivers.  Every header file used by
 # more than one device driver family must be listed here.
 gdev8bcm_h=$(GLSRC)gdev8bcm.h
--- base/gdevhl7x.c
+++ base/gdevhl7x.c	2008-02-21 14:55:26.000000000 +0000
@@ -19,7 +19,7 @@
  * The original code was borrowed from the
  * HP LaserJet/DeskJet driver for Ghostscript.
  * The code specific to the Brother HL 720 was written by :
- *       Pierre-Olivier Gaillard (pierre.gaillard@hol.fr)
+ *        Gaillard Pierre-Olivier <gaillarp@club-internet.fr>
  * Thanks to the documentation kindly provided by :
  *        Richard Thomas <RICHARDT@brother.co.uk>
  *
@@ -89,6 +89,7 @@ typedef struct {
 
 typedef unsigned char Byte; /* Rep. of elementary data unit */
 
+#define USE_POSSIBLY_FLAWED_COMPRESSION 1
 
 
 /*
--- base/gdevl256.c
+++ base/gdevl256.c	2008-02-21 14:55:26.000000000 +0000
@@ -32,6 +32,10 @@
 #include <errno.h>
 #include <vga.h>
 #include <vgagl.h>
+#ifdef __linux__
+#  include <unistd.h>
+   extern uid_t saveuid, savegid;
+#endif
 
 /* The color map for dynamically assignable colors. */
 #define first_dc_index 64
@@ -102,7 +106,16 @@ lvga256_open(gx_device * dev)
     int vgamode;
     int width, height;
 
+#ifdef __linux__
+    /* get old privileges */
+    seteuid(saveuid);
+    setegid(savegid);
+#endif
     vga_init();
+#ifdef __linux__
+    seteuid(getuid());
+    setegid(getgid());
+#endif
     vgamode = vga_getdefaultmode();
     if (vgamode == -1)
 	vgamode = G320x200x256;
--- base/gdevperm.c
+++ base/gdevperm.c	2008-02-21 14:55:26.000000000 +0000
@@ -286,7 +286,7 @@ perm_get_color_mapping_procs(const gx_de
 	(strncmp((const char *)name, (const char *)str, name_size) == 0))
 
 static int
-perm_get_color_comp_index(const gx_device *pdev, const char *pname,
+perm_get_color_comp_index(gx_device *pdev, const char *pname,
 					int name_size, int component_type)
 {
     const gx_device_perm_t * const dev = (const gx_device_perm_t *)pdev;
--- base/gdevpng.c
+++ base/gdevpng.c	2008-02-21 14:55:27.000000000 +0000
@@ -410,7 +410,7 @@ png_print_page(gx_device_printer * pdev,
  * This could be avoided if we were willing to edit pngconf.h to
  *      #undef PNG_PROGRESSIVE_READ_SUPPORTED
  */
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
+#if !defined(PNG_EXTERN) && defined(PNG_PROGRESSIVE_READ_SUPPORTED)
 #  if PNG_LIBPNG_VER >= 95
 #    define PPFB_LENGTH_T png_size_t
 #  else
--- base/gdevxalt.c
+++ base/gdevxalt.c	2008-02-21 14:55:27.000000000 +0000
@@ -23,6 +23,11 @@
 #include "gxdevice.h"
 #include "gsdevice.h"		/* for gs_copydevice */
 #include "gdevx.h"
+#ifdef GS_DEVS_SHARED
+# include <stdlib.h>
+# include "gp.h"
+extern void gs_lib_register_device(const gx_device *dev);
+#endif
 
 extern const gx_device_X gs_x11_device;
 extern const gx_device_X gs_x11alpha_device;
@@ -845,18 +850,20 @@ x_rg32x_alt_map_color(gx_device * dev, g
 }
 
 #ifdef GS_DEVS_SHARED
-extern void gs_lib_register_device(const gx_device *dev);
 void
 gs_shared_init(void)
 {
-  gs_lib_register_device(&gs_x11_device);
-  gs_lib_register_device(&gs_x11alpha_device);
-  gs_lib_register_device(&gs_x11cmyk_device);
-  gs_lib_register_device(&gs_x11cmyk2_device);
-  gs_lib_register_device(&gs_x11cmyk4_device);
-  gs_lib_register_device(&gs_x11cmyk8_device);
-  gs_lib_register_device(&gs_x11gray2_device);
-  gs_lib_register_device(&gs_x11gray4_device);
-  gs_lib_register_device(&gs_x11mono_device);
+  gs_lib_register_device((const gx_device *)&gs_x11_device);
+  gs_lib_register_device((const gx_device *)&gs_x11alpha_device);
+  gs_lib_register_device((const gx_device *)&gs_x11cmyk_device);
+  gs_lib_register_device((const gx_device *)&gs_x11cmyk2_device);
+  gs_lib_register_device((const gx_device *)&gs_x11cmyk4_device);
+  gs_lib_register_device((const gx_device *)&gs_x11cmyk8_device);
+  gs_lib_register_device((const gx_device *)&gs_x11gray2_device);
+  gs_lib_register_device((const gx_device *)&gs_x11gray4_device);
+  gs_lib_register_device((const gx_device *)&gs_x11mono_device);
+
+  if (gp_getenv_display() && getenv("GS_DEVICE") == (char*)0)
+    (void)setenv("GS_DEVICE", "x11", 1);
 }
 #endif
--- base/gp.h
+++ base/gp.h	2008-02-21 14:55:27.000000000 +0000
@@ -167,7 +167,12 @@ const char *gp_getenv_display(void);
  * Note that this is the size of the buffer, not the maximum number of
  * characters: the latter is one less, because of the terminating \0.
  */
-#define gp_file_name_sizeof 260 /* == MAX_PATH on Windows */
+#ifdef linux
+# include <limits.h>
+# define gp_file_name_sizeof PATH_MAX
+#else
+# define gp_file_name_sizeof 260 /* == MAX_PATH on Windows */
+#endif
 
 /* Define the character used for separating file names in a list. */
 extern const char gp_file_name_list_separator;
--- base/gp_unifs.c
+++ base/gp_unifs.c	2010-09-29 13:01:55.383926360 +0000
@@ -14,6 +14,7 @@
 /* $Id: gp_unifs.c 11250 2010-05-15 03:12:31Z hintak $ */
 /* "Unix-like" file system platform routines for Ghostscript */
 
+#include "std.h"
 #include "stdio_.h"             /* for FILENAME_MAX */
 #include "memory_.h"
 #include "string_.h"
@@ -55,6 +56,14 @@ const char gp_null_file_name[] = "/dev/n
 /* Define the name that designates the current directory. */
 const char gp_current_directory_name[] = ".";
 
+static char ** tempfiles;
+static unsigned ntempfiles = 0;
+static void cleanup_tempfiles(void)
+{
+    while (ntempfiles--)
+       unlink(tempfiles[ntempfiles]);
+}
+
 /* Create and open a scratch file with a given name prefix. */
 /* Write the actual file name at fname. */
 static FILE *
@@ -66,11 +75,13 @@ gp_open_scratch_file_generic(const gs_me
 {       /* The -8 is for XXXXXX plus a possible final / and -. */
     int prefix_length = strlen(prefix);
     int len = gp_file_name_sizeof - prefix_length - 8;
+    int is_absolute = 0;
     FILE *fp;
 
-    if (gp_file_name_is_absolute(prefix, prefix_length))
+    if (gp_file_name_is_absolute(prefix, prefix_length)) {
         *fname = 0;
-    else if (gp_gettmpdir(fname, &len) != 0)
+	is_absolute++;
+    } else if (gp_gettmpdir(fname, &len) != 0)
         strcpy(fname, "/tmp/");
     else {
         if (strlen(fname) != 0 && fname[strlen(fname) - 1] != '/')
@@ -84,31 +95,33 @@ gp_open_scratch_file_generic(const gs_me
         strcat(fname, "-");
     strcat(fname, "XXXXXX");
 
-#ifdef HAVE_MKSTEMP
+#if defined(HAVE_MKSTEMP) || defined(__linux__)
     {
         int file;
         char ofname[gp_file_name_sizeof];
 
         /* save the old filename template in case mkstemp fails */
         memcpy(ofname, fname, gp_file_name_sizeof);
-#ifdef HAVE_MKSTEMP64
-        if (b64)
-            file = mkstemp64(fname);
-        else
+
+	if (is_absolute) {
+	    file = mkstemp(fname);
+	    if (file < -1) {
+		emprintf1(mem, "**** Could not open temporary file %s\n", ofname);
+		return NULL;
+	    }
+	} else {
+	    tempfiles = (char **) realloc(tempfiles, (ntempfiles+1) * sizeof(char *));
+	    if (tempfiles == NULL)
+		return NULL;
             file = mkstemp(fname);
-#else
-        file = mkstemp(fname);
-#endif
-        if (file < -1) {
-            emprintf1(mem, "**** Could not open temporary file %s\n", ofname);
-            return NULL;
-        }
-#if defined(O_LARGEFILE) && defined(__hpux)
-        if (b64)
-            fcntl(file, F_SETFD, fcntl(file, F_GETFD) | O_LARGEFILE);
-#else
-        /* Fixme : what to do with b64 and 32-bit mkstemp? Unimplemented. */
-#endif
+	    if (file < -1) {
+		emprintf1(mem, "**** Could not open temporary file %s\n", ofname);
+		return NULL;
+	    }
+	    if (ntempfiles == 0)
+		atexit(cleanup_tempfiles);
+	    tempfiles[ntempfiles++] = strdup(fname);
+	}
 
         fp = fdopen(file, mode);
         if (fp == NULL)
--- base/gsargs.c
+++ base/gsargs.c	2008-02-21 14:55:33.000000000 +0000
@@ -153,7 +153,7 @@ arg_next(arg_list * pal, int *code)
 	    /* Skip a comment. */
 	    do {
 		c = cfsgetc();
-	    } while (!(c == endc || is_eol(c)));
+	    } while (!(c == endc || (eol = is_eol(c))));
 	    if (c == '\r')
 		c = cfsgetc();
 	    if (c == '\n')
@@ -163,12 +163,11 @@ arg_next(arg_list * pal, int *code)
 	if (c == '\\') {
 	    /* Check for \ followed by newline. */
 	    c = cfsgetc();
-	    if (is_eol(c)) {
+	    if ((eol = is_eol(c))) {
 		if (c == '\r')
 		    c = cfsgetc();
 		if (c == '\n')
 		    c = cfsgetc();
-		eol = true;
 		continue;
 	    }
 	    /* \ anywhere else is treated as a printing character. */
--- base/gsmisc.c
+++ base/gsmisc.c	2008-02-21 14:55:33.000000000 +0000
@@ -45,6 +45,7 @@ orig_sqrt(double x)
 #include "gserrors.h"
 #include "gxfarith.h"
 #include "gxfixed.h"
+#include "gscdefs.h"
 #include "stdint_.h"
 #include "stdio_.h"
 
--- base/ijs.mak
+++ base/ijs.mak	2008-02-21 14:55:33.000000000 +0000
@@ -10,6 +10,10 @@
 #  or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
 #  San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
 #
+###### --------------------------- Catalog -------------------------- ######
+#	ijs HP - developed DeskJet 630C upto 900C
+###### ----------------------- End of catalog ----------------------- ######
+#
 # $Id: ijs.mak 8022 2007-06-05 22:23:38Z giles $
 # makefile for ijs client library code.
 # Users of this makefile must define the following:
--- base/lib.mak
+++ base/lib.mak	2008-02-21 14:55:26.000000000 +0000
@@ -914,7 +914,7 @@ $(GLOBJ)gsparam.$(OBJ) : $(GLSRC)gsparam
 $(GLOBJ)gsparamx.$(OBJ) : $(GLSRC)gsparamx.c $(string__h)\
  $(gserror_h) $(gserrors_h) $(gsmemory_h) $(gsparam_h) $(gsparamx_h)\
  $(gstypes_h)
-	$(GLCC) $(GLO_)gsparamx.$(OBJ) $(C_) $(GLSRC)gsparamx.c
+	$(GLCCSHARED) $(GLO_)gsparamx.$(OBJ) $(C_) $(GLSRC)gsparamx.c
 
 # Future replacement for gsparams.c
 $(GLOBJ)gsparam2.$(OBJ) : $(GLSRC)gsparam2.c $(GXERR) $(memory__h)\
--- base/malloc_.h
+++ base/malloc_.h	2008-02-21 14:55:33.000000000 +0000
@@ -41,7 +41,7 @@ extern void free();
 #endif /* !__TURBOC__ */
 
 /* (At least some versions of) Linux don't have a working realloc.... */
-#ifdef linux
+#ifdef __linux__
 #  define malloc__need_realloc
 void *gs_realloc(void *, size_t, size_t);
 
--- base/stdio_.h
+++ base/stdio_.h	2008-02-21 14:55:33.000000000 +0000
@@ -39,7 +39,9 @@
  * if they do, the declaration will be compatible with this one, as long
  * as const has not been disabled by defining it to be the empty string.
  */
-int unlink(const char *);
+#  include <unistd.h>
+#else
+#  include <unistd.h>
 #endif
 
 #endif
--- base/unix-dll.mak
+++ base/unix-dll.mak	2010-09-28 13:19:21.088426352 +0000
@@ -36,11 +36,6 @@ GSSOC_XENAME=$(GS)c$(XE)
 GSSOC_XE=$(BINDIR)/$(GSSOC_XENAME)
 GSSOC=$(BINDIR)/$(SOBINRELDIR)/$(GSSOC_XENAME)
 
-# loader suporting display device using Gtk+
-GSSOX_XENAME=$(GS)x$(XE)
-GSSOX_XE=$(BINDIR)/$(GSSOX_XENAME)
-GSSOX=$(BINDIR)/$(SOBINRELDIR)/$(GSSOX_XENAME)
-
 # shared library
 GS_SONAME_BASE=lib$(GS)
 
@@ -78,12 +73,8 @@ $(GS_SO_MAJOR): $(GS_SO_MAJOR_MINOR)
 
 # Build the small Ghostscript loaders, with Gtk+ and without
 $(GSSOC_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
-	$(GLCC) -g -o $(GSSOC_XE) $(PSSRC)dxmainc.c \
-	$(LDFLAGS) -L$(BINDIR) -l$(GS)
-
-$(GSSOX_XE): $(GS_SO) $(PSSRC)$(SOC_LOADER)
-	$(GLCC) -g $(SOC_CFLAGS) -o $(GSSOX_XE) $(PSSRC)$(SOC_LOADER) \
-	$(LDFLAGS) -L$(BINDIR) -l$(GS) $(SOC_LIBS)
+	$(GLCC) -g -o $(GSSOC_XE) $(PSSRC)$(SOC_LOADER) \
+	$(LDFLAGS) -L$(BINDIR) -l$(GS) $(EXTRALIBS) $(STDLIBS)
 
 # ------------------------- Recursive make targets ------------------------- #
 
@@ -107,7 +98,7 @@ so: SODIRS
                 $(GLOBJDIR)/$(SOOBJRELDIR)/echogs$(XEAUX) $(GLOBJDIR)/$(SOOBJRELDIR)/genarch$(XEAUX)
 	$(MAKE) $(SODEFS) LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)' CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' \
                 prefix=$(prefix)
-	$(MAKE) $(SODEFS) LDFLAGS='$(LDFLAGS)' CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
+	$(MAKE) $(SODEFS) LDFLAGS='$(LDFLAGS)' CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC)
 
 # Debug shared object
 # Note that this is in the same directory as the normal shared
@@ -120,10 +111,10 @@ sodebug: SODIRS
                 $(GLOBJDIR)/$(SOOBJRELDIR)/echogs$(XEAUX) $(GLOBJDIR)/$(SOOBJRELDIR)/genarch$(XEAUX)
 	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)' CFLAGS='$(CFLAGS_STANDARD) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' \
                 prefix=$(prefix)
-	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' LDFLAGS='$(LDFLAGS)' CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC) $(GSSOX)
+	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' LDFLAGS='$(LDFLAGS)' CFLAGS='$(CFLAGS_STANDARD) $(GCFLAGS) $(XCFLAGS)' prefix=$(prefix) $(GSSOC)
 
 
-#	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC) $(GSSOX)
+#	$(MAKE) $(SODEFS) GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(CFLAGS_SO) $(GCFLAGS) $(XCFLAGS)' $(GSSOC)
 
 install-so: so
 	-mkdir -p $(DESTDIR)$(prefix)
@@ -134,7 +125,6 @@ install-so: so
 	-mkdir -p $(DESTDIR)$(libdir)
 	-mkdir -p $(DESTDIR)$(gsincludedir)
 	$(INSTALL_PROGRAM) $(GSSOC) $(DESTDIR)$(bindir)/$(GSSOC_XENAME)
-	$(INSTALL_PROGRAM) $(GSSOX) $(DESTDIR)$(bindir)/$(GSSOX_XENAME)
 	$(INSTALL_PROGRAM) $(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR_MINOR)
 	$(RM_) $(DESTDIR)$(libdir)/$(GS_SONAME)
 	ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME)
--- base/unixlink.mak
+++ base/unixlink.mak	2008-04-01 10:48:19.000000000 +0000
@@ -44,15 +44,26 @@ $(GS_A): $(obj_tr) $(ECHOGS_XE) $(INT_AR
 	$(SH) <$(liar_tr)
 	$(RANLIB) $(GS_A)
 
-# Here is the final link step.  The stuff with LD_RUN_PATH is for SVR4
+# Here is the final link step.
 # systems with dynamic library loading; I believe it's harmless elsewhere.
 # The resetting of the environment variables to empty strings is for SCO Unix,
 # which has limited environment space.
 ldt_tr=$(PSOBJ)ldt.tr
+
+ifeq (omni,$(findstring omni,$(DEVS_ALL)))
+ LIBDLOPEN = $(shell glib-config --libs gmodule)
+ LIBCPP    = -lstdc++
+ CCLD      = gcc
+ ADDOMI    = $(ECHOGS_XE) -a $(ldt_tr) -n - $(LIBDLOPEN) $(LIBCPP)
+else
+ ADDOMI    = echo No OMNI
+endif
+
 $(GS_XE): $(ld_tr) $(ECHOGS_XE) $(XE_ALL) $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ)
 	$(ECHOGS_XE) -w $(ldt_tr) -n - $(CCLD) $(LDFLAGS) -o $(GS_XE)
 	$(ECHOGS_XE) -a $(ldt_tr) -n -s $(PSOBJ)gsromfs$(COMPILE_INITS).$(OBJ) $(PSOBJ)gs.$(OBJ) -s
 	cat $(ld_tr) >>$(ldt_tr)
+	$(ADDOMI)
 	$(ECHOGS_XE) -a $(ldt_tr) -s - $(EXTRALIBS) $(STDLIBS)
 	if [ x$(XLIBDIR) != x ]; then LD_RUN_PATH=$(XLIBDIR); export LD_RUN_PATH; fi; \
 	XCFLAGS= XINCLUDE= XLDFLAGS= XLIBDIRS= XLIBS= \
@@ -62,4 +73,4 @@ $(GS_XE): $(ld_tr) $(ECHOGS_XE) $(XE_ALL
 	DEVICE_DEVS13= DEVICE_DEVS14= DEVICE_DEVS15= DEVICE_DEVS16= \
 	DEVICE_DEVS17= DEVICE_DEVS18= DEVICE_DEVS19= DEVICE_DEVS20= \
 	DEVICE_DEVS_EXTRA= \
-	$(SH) <$(ldt_tr)
+	$(SH) -x <$(ldt_tr)
--- contrib/contrib.mak
+++ contrib/contrib.mak	2009-06-16 12:48:29.000000000 +0000
@@ -35,6 +35,13 @@ CONTRIBSRC=$(CONTRIBDIR)$(D)
 #
 # Printers:
 #
+#	alc1900  EPSON AcuLaser C1900
+#	alc2000  EPSON AcuLaser C2000
+#	alc4000  EPSON AcuLaser C4000,C4000PS
+#	alc4100  EPSON AcuLaser C4100
+#	alc8500  EPSON AcuLaser C8500
+#	alc8600  EPSON AcuLaser C8600
+#	alc9100  EPSON AcuLaser C9100
 #	bj10v	 Canon BubbleJet BJ10v/BJ15v (japanese)
 #	bj10vh	 Canon BubbleJet BJ10v/BJ15v/BJ35v (japanese)
 #	bjc880j	 Canon Color BubbleJet BJC-880J (japanese)
@@ -53,8 +60,18 @@ CONTRIBSRC=$(CONTRIBDIR)$(D)
 #	cdnj500  HP DesignJet 500
 #	chp2200  HP Business Inkjet 2200
 #       dl2100   DEC DL2100
+#	djet820c H-P DeskJet 820c, EXPERIMENTAL:
+#		 NO COLOR, HARDCODED PAPER SIZES (A4, letter)
 #	dmprt	 dot matrix printer driver for Ghostscript (it can use 
 #		 dviprt printer config files, japanese)
+#	epl2050  EPSON Laser EPL-2050
+#	epl2050p EPSON Laser EPL-2050+
+#	epl2120  EPSON Laser EPL-2120
+#	epl2500  EPSON Laser EPL-2500
+#	epl2750  EPSON Laser EPL-2750
+#	epl5800  EPSON Laser EPL-5800
+#	epl5900  EPSON Laser EPL-5900
+#	epl6100  EPSON Laser EPL-6100
 #	escpage  Epson ESC/Page driver for Ghostscript (japanese)
 #	fmpr	 Fujitsu FMPR (japanese)
 #	fmlbp	 Fujitsu FMLBP2xx Page Printer (japanese)
@@ -100,7 +117,39 @@ CONTRIBSRC=$(CONTRIBDIR)$(D)
 #	lips2p	 Canon LIPS-II+ (japanese)
 #	lips4v	 Canon LIPS IV vector mode driver
 #	lips4	 Canon LIPS IV raster mode driver
-#       ln03     DEC LN03
+#	ln03     DEC LN03
+#	lp1800   EPSON LP-1800
+#	lp1900   EPSON LP-1900
+#	lp2200   EPSON LP-2200
+#	lp2400   EPSON LP-2400
+#	lp2500   EPSON LP-2500
+#	lp3000c  EPSON LP-3000c
+#	lp7500   EPSON LP-7500
+#	lp7700   EPSON LP-7700
+#	lp7900   EPSON LP-7900
+#	lp8000c  EPSON LP-8000c
+#	lp8100   EPSON LP-8100
+#	lp8200c  EPSON LP-8200c
+#	lp8300c  EPSON LP-8300c
+#	lp8300f  EPSON LP-8300f
+#	lp8400f  EPSON LP-8400f
+#	lp8500c  EPSON LP-8500c
+#	lp8600   EPSON LP-8600
+#	lp8600f  EPSON LP-8600f
+#	lp8700   EPSON LP-8700
+#	lp8800c  EPSON LP-8800c
+#	lp8900   EPSON LP-8900
+#	lp9000b  EPSON LP-9000b
+#	lp9000c  EPSON LP-9000c
+#	lp9100   EPSON LP-9100
+#	lp9200b  EPSON LP-9200b
+#	lp9200c  EPSON LP-9200c
+#	lp9300   EPSON LP-9300
+#	lp9400   EPSON LP-9400
+#	lp9500c  EPSON LP-9500c
+#	lp9600   EPSON LP-9600
+#	lp9600s  EPSON LP-9600s
+#	lp9800c  EPSON LP-9800c
 #	lx5000   Lexmark 5000
 #       lxm3200  Lexmark 3200, Z31, Z12
 #	md1xMono Alps MD-1000/1300/1500 (monochrome mode, japanese)
@@ -126,16 +175,18 @@ CONTRIBSRC=$(CONTRIBDIR)$(D)
 #	samsunggdi Samsung's old driver for their SmartGDI laser printers:
 #		 ML-4500, ML-2xx, ML-1xxx, ML-5080, ML-6040, ... and
 #		 Lexmark E210, same as "gdi"
-#       xes      Xerox XES (2700, 3700, 4045, etc.)
+#	stp      STP driver -- Configurable Color ESC/P-, ESC/P2-,
+#	         HP-RTL/PCL mono/color driver
+#	xes      Xerox XES (2700, 3700, 4045, etc.)
 #
 # Fax systems:
 #
-#       None currently
+#	bff      Ferrari, electronic AG BFF fax format
 #
 # Other raster file formats and devices:
 #
-#	mag16	 MAG file format (from Red Hat's japanese driver pack)
-#	mag256	 MAG file format (from Red Hat's japanese driver pack)
+#	mag16	 MAG file format
+#	mag256	 MAG file format
 #
 # Special features
 #
@@ -176,6 +227,32 @@ $(DD)bjccmyk.dev : $(bjc_) $(DD)page.dev
 $(DD)bjccolor.dev : $(bjc_) $(DD)page.dev
 	$(SETPDEV) $(DD)bjccolor $(bjc_)
 
+### ------------------------- DEC sixel displays ------------------------ ###
+
+# Author: Phil Keegstra (keegstra@tonga.gsfc.nasa.gov)
+# Device: DEC sixel displays
+# This is a "printer" device, but it probably shouldn't be.
+# I don't know why the implementor chose to do it this way.
+
+sxlcrt_=$(GLOBJ)gdevln03.$(OBJ)
+$(DD)sxlcrt.dev : $(sxlcrt_) $(DD)page.dev
+	$(SETPDEV) $(DD)sxlcrt $(sxlcrt_)
+
+### -------------------- Gimp-Print (stp) driver -------------------###
+
+# To include this driver add '$(DD)stp.dev' to your DEVICE_DEVS
+# line and define 'STPLIB=gimpprint' in your top-level makefile.
+# See http://gimp-print.sourceforge.net/ for more information.
+
+stp_=$(GLOBJ)gdevstp.$(OBJ)
+
+$(DD)stp.dev : $(stp_) $(DD)page.dev
+	$(SETPDEV) $(DD)stp $(stp_)
+	$(ADDMOD) $(DD)stp -lib $(STPLIB)
+
+$(GLOBJ)gdevstp.$(OBJ) : $(CONTRIBSRC)gdevstp.c \
+ $(gdevprn_h) $(gdevpccm_h) $(gsparam_h)
+	$(GLCC) $(I_)$(PSI_) $(I_)$(STPINC) $(GLO_)gdevstp.$(OBJ) $(C_) $(CONTRIBSRC)gdevstp.c
 
 ### -------------- cdj850 - HP 850c Driver under development ------------- ###
 
@@ -205,19 +282,42 @@ $(GLOBJ)gdevcd8.$(OBJ) : $(CONTRIBSRC)gd
  $(gsparam_h) $(gxlum_h) $(gdevpcl_h)
 	$(GLCC) $(GLO_)gdevcd8.$(OBJ) $(C_) $(CONTRIBSRC)gdevcd8.c
 
+### -------------- chp2200 - HP Business Inkjet 2200 ------------- ###
+
+### NOTE:  Depends on the presence of the cdj850 section.
+
+#$(DD)chp2200.dev : $(cdeskjet8_) $(DD)page.dev
+#	$(SETPDEV2) $(DD)chp2200 $(cdeskjet8_)
+
 
 ### -------------- cdj880 - HP 880c Driver under development ------------- ###
 ### Since this driver is in the development phase it is not distributed    ###
 ### with Ghostscript, but is available from                                ###
-###   http://www.proaxis.com/~mgelhaus/linux/software/hp880c/hp880c.html   ###
+###   http://www.gelhaus.net/hp880c/                                       ###
+###   http://hp.sourceforge.net/gs-hp2200.php                              ###
 
 ### NOTE:  Depends on the presence of the cdj850 section above.            ###
 
+cdeskjet8chp2200_=$(GLOBJ)gdevcd8-chp2200.$(OBJ) $(HPPCL)
+cdeskjet8cdj880_= $(GLOBJ)gdevcd8-cdj880.$(OBJ)  $(HPPCL)
+
 # Author: Matthew Gelhaus (mgelhaus@proaxis.com)
 # Printer: HP 880c
-$(DD)cdj880.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)cdj880 $(cdeskjet8_)
+$(DD)cdj880.dev : $(cdeskjet8cdj880_) $(DD)page.dev
+	$(SETPDEV2) $(DD)cdj880 $(cdeskjet8cdj880_)
 
+# Author: Matthew J. Gelhaus (mgelhaus@proaxis.com)
+# Printer: HP Business Inkjet 2200
+$(DD)chp2200.dev : $(cdeskjet8chp2200_) $(DD)page.dev
+	$(SETPDEV) $(DD)chp2200 $(cdeskjet8chp2200_)
+
+$(GLOBJ)gdevcd8-chp2200.$(OBJ) : $(CONTRIBSRC)gdevcd8-chp2200.c $(PDEVH) \
+ $(math__h) $(gsparam_h) $(gxlum_h) $(gdevpcl_h)
+	$(GLCC) $(GLO_)gdevcd8-chp2200.$(OBJ) $(C_) $(CONTRIBSRC)gdevcd8-chp2200.c
+
+$(GLOBJ)gdevcd8-cdj880.$(OBJ) : $(CONTRIBSRC)gdevcd8-cdj880.c $(PDEVH) \
+ $(math__h) $(gsparam_h) $(gxlum_h) $(gdevpcl_h)
+	$(GLCC) $(GLO_)gdevcd8-cdj880.$(OBJ) $(C_) $(CONTRIBSRC)gdevcd8-cdj880.c
 
 ### ------------- cdj970 - HP 970Cxi Driver under development ------------- ###
 
@@ -241,14 +341,6 @@ $(DD)cdnj500.dev : $(cdeskjet8_) $(DD)pa
 	$(SETPDEV2) $(DD)cdnj500 $(cdeskjet8_)
 
 
-### -------------- chp2200 - HP Business Inkjet 2200 ------------- ###
-
-### NOTE:  Depends on the presence of the cdj850 section.
-
-$(DD)chp2200.dev : $(cdeskjet8_) $(DD)page.dev
-	$(SETPDEV2) $(DD)chp2200 $(cdeskjet8_)
-
-
 ### ---------------- The Samsung SmartGDI laser printer devices --------- ###
 ### Note : this driver is used by Samsung SmartGDI compatible printers.   ###
 ###
@@ -523,7 +615,9 @@ $(GLOBJ)gdevlx50.$(OBJ) : $(CONTRIBSRC)g
 	$(GLCC) $(GLO_)gdevlx50.$(OBJ) $(C_) $(CONTRIBSRC)gdevlx50.c
 
 
-### ----------- Lexmark 3200 device ------------ ###
+### ----------- Lexmark 3200 device ------------------------------------ ###
+### by Daniel Gordini (dgordin@tin.it)
+### http://www.geocities.com/dgordini
 
 lxm3200_=$(GLOBJ)gdevlx32.$(OBJ)
 
@@ -573,6 +667,9 @@ $(GLOBJ)gdevl4v.$(OBJ) : $(LIPS_SRC)gdev
 $(DD)lips2p.dev : $(lipsr_) $(DD)page.dev
 	$(SETPDEV) $(DD)lips2p $(lipsr_)
 
+$(DD)lips3.dev: $(lipsr_) $(DD)page.dev
+	$(SETPDEV) $(DD)lips3 $(lipsr_)
+
 $(DD)bjc880j.dev : $(lipsr_) $(DD)page.dev
 	$(SETPDEV) $(DD)bjc880j $(lipsr_)
 
@@ -589,6 +686,17 @@ $(DD)md5k.dev : $(md2k_) $(DD)page.dev
 
 $(GLOBJ)gdevmd2k.$(OBJ) : $(CONTRIBSRC)gdevmd2k.c $(PDEVH) $(gsparam_h)
 	$(GLCC) $(GLO_)gdevmd2k.$(OBJ) $(C_) $(CONTRIBSRC)gdevmd2k.c
+
+
+### ----------------------------- bff files ------------------------------ ###
+
+bff_=$(GLOBJ)gdevbff.$(OBJ)
+
+$(DD)bff.dev : $(bff_)
+	$(SETPDEV) $(DD)bff $(bff_)
+
+$(GLOBJ)gdevbff.$(OBJ) : $(CONTRIBSRC)gdevbff.c $(PDEVH)
+	$(GLCC) $(GLO_)gdevbff.$(OBJ) $(C_) $(CONTRIBSRC)gdevbff.c
  
 
 ###--------------- IBM Omni Driver Framework --------------------------###
@@ -689,7 +797,7 @@ $(DD)oprp.dev : $(opvp_) $(DD)page.dev
 ###############################################################################
 
 # Compilation options
-pcl3_options=
+pcl3_options=-DNDEBUG=1
 eprn_fs_options=
 
 # Version of the pcl3 rules: $Revision: 1.29 $.
@@ -854,7 +962,7 @@ pcl3opts_=$(pcl3_src)pcl3opts.c $(pcl3_s
 	$(pcl3_src)pclsize.c
 
 $(BINDIR)$(D)pcl3opts$(XE): $(pcl3opts_)
-	$(CC_) -o $@ -I$(eprn_src) $(pcl3opts_)
+	$(GLCC) -I$(eprn_src) -o $@ $(pcl3opts_)
 	gencat $(GLOBJ)pcl3opts-en.cat $(pcl3_src)pcl3opts-en.msg
 	#gencat $(GLOBJ)pcl3opts-de.cat $(pcl3_src)pcl3opts-de.msg
 
@@ -870,6 +978,121 @@ pcl3-install:
 	$(INSTALL_PROGRAM) $(BINDIR)$(D)pcl3opts$(XE) $(DESTDIR)$(bindir)
 
 
+### Driver for various printers understanding PCL 3+, mostly HP DeskJets ###
+#
+# The WWW home page for this driver is
+# ftp://ftp.sbs.de/pub/graphics/ghostscript/pcl3.html.
+#
+# The "hpdj" driver has several compile-time configuration options accessible
+# by preprocessor symbols. The first group is concerned with default values
+# and can be overridden at runtime:
+#
+# HPDJ_DEFAULT_COMPRESSION     The default is 'pcl_cm_crdr' (of type
+#                              'pcl_compression' defined in pclcomp.h), i.e.,
+#                              method 9.
+# HPDJ_DEFAULT_MODEL           The default is 'hpdj_none' (of type 'Model'
+#                              defined in hpdj.h).
+# HPDJ_DEFAULT_RESOLUTION      The default is '300' (pixels per inch).
+# HPDJ_MARGIN_FILE             If defined, this must be a string giving the
+#                              path name of an existing margin description
+#                              file. The model 'unspec' will then not use the
+#                              margin descriptions for the DJ 850C as a default
+#                              but will instead read from this source.
+#
+# You can leave these values undefined, but if you have only one printer it is
+# certainly a good idea to set HPDJ_DEFAULT_MODEL. In that case you should
+# ensure that HPDJ_DEFAULT_COMPRESSION and HPDJ_DEFAULT_RESOLUTION are set to
+# values supported by the model chosen as HPDJ_DEFAULT_MODEL. This is apparently
+# only a problem for the DJ 500 where HPDJ_DEFAULT_COMPRESSION should be set to
+# 'pcl_cm_delta'.
+#
+# The following preprocessor symbols are more esoteric:
+#
+# HPDJ_MEDIASIZE               Try defining this if the clipping should turn
+#                              out to be wrong when you are printing in
+#                              landscape orientation with future (> 5.50)
+#                              versions of ghostscript.
+# HPDJ_NO_PAGECOUNTFILE                Define this if you don't want to have the
+#                              page count file feature of hpdj. I suspect that
+#                              you must define this on non-UNIX platforms.
+#                              If you do define this parameter you should also
+#                              remove "pagecount.$(OBJ)" from the variable
+#                              'hpdj_' below unless you merely wish to insert
+#                              the calls into a more general part of
+#                              ghostscript.
+# HPDJ_PRINT_BLANK_ROWS                If defined, the driver will not use the PCL
+#                              command Relative Vertical Pixel Movement within
+#                              a page. Try defining this if you think your
+#                              printer shows excessive head movements on pages
+#                              having vertical white space.
+#
+# Finally, a few symbols exist to adapt hpdj to older versions of ghostscript:
+#
+#   HPDJ_INPUTMEDIA_PRN                (non-zero for gs <= 5.10, see hpdjparm.c)
+#   HPDJ_USEPAGESIZE           (non-zero for gs <  3.46, see gdevhpdj.c)
+#
+# Unless you run into compilation problems, you can ignore these symbols
+# because hpdj should recognize ghostscript's version automatically.
+# If, however, you are using an hpdj diff to patch a different version of
+# ghostscript than the one it was intended for and if your gs version is older
+# than 4.51, you should modify the value for GS_REVISION in 'hpdj_opts' below
+# to accurately reflect your version.
+#
+# Here follow some examples. First a DeskJet 500:
+#
+#   hpdj_options=-DHPDJ_DEFAULT_MODEL=hpdj500 \
+#      -DHPDJ_DEFAULT_COMPRESSION=pcl_cm_delta
+#
+# A DeskJet 850C:
+#
+#   hpdj_options=-DHPDJ_DEFAULT_MODEL=hpdj850c
+#
+# A newer PCL-3 printer using a margin file from ghostscript's usual data
+# directory:
+#
+#   hpdj_options=-DHPDJ_DEFAULT_MODEL=hpdj_unspec \
+#      -DHPDJ_MARGIN_FILE='"$(gsdatadir)/hpdj.mdf"'
+#
+###############################################################################
+
+# Compilation options
+hpdj_options= -DHPDJ_DEFAULT_MODEL=hpdj_unspec
+hpdj_opts=-DGS_REVISION=$(GS_REVISION) $(hpdj_options)
+
+# List of all object files needed for hpdj
+hpdj_=$(GLOBJ)gdevhpdj.$(OBJ) $(GLOBJ)hpdjdata.$(OBJ) $(GLOBJ)hpdjparm.$(OBJ) \
+  $(GLOBJ)hpdjprn.$(OBJ) $(GLOBJ)pclcomp.$(OBJ) $(GLOBJ)pagecount.$(OBJ)
+
+# Header file dependencies
+$(hpdj_): $(CONTRIBSRC)pclcomp.h $(CONTRIBSRC)hpdj.h $(PDEVH)
+$(DD)hpdj.dev: $(hpdj_) $(DD)page.dev
+	$(SETPDEV) $(DD)hpdj $(hpdj_)
+
+$(GLOBJ)gdevhpdj.$(OBJ): $(CONTRIBSRC)gdevhpdj.c
+	$(GLCC) $(C_) $(GLO_)gdevhpdj.$(OBJ) $(hpdj_opts) $(CONTRIBSRC)gdevhpdj.c
+
+$(GLOBJ)hpdjdata.$(OBJ): $(CONTRIBSRC)hpdjdata.c
+	$(GLCC) $(C_) $(GLO_)hpdjdata.$(OBJ) $(hpdj_opts) $(CONTRIBSRC)hpdjdata.c
+
+$(GLOBJ)hpdjparm.$(OBJ): $(CONTRIBSRC)hpdjparm.c
+	$(GLCC) $(C_) $(GLO_)hpdjparm.$(OBJ) $(hpdj_opts) $(CONTRIBSRC)hpdjparm.c
+
+$(GLOBJ)hpdjprn.$(OBJ): $(CONTRIBSRC)hpdjprn.c
+	$(GLCC) $(C_) $(GLO_)hpdjprn.$(OBJ) $(hpdj_opts) $(CONTRIBSRC)hpdjprn.c
+
+### -------------- djet820c - HP 820c experimental Driver -------------- ###
+### EXPERIMENTAL: NO COLOR, HARDCODED PAPER SIZES (A4, letter)           ###
+### available via anonymous ftp from:                                    ###
+###         ftp://ftp.ig.utexas.edu/outgoing/scottk/820C/                ###
+
+$(GLOBJ)gdev820c.$(OBJ): $(CONTRIBSRC)gdev820c.c $(PDEVH)
+	$(GLCC) $(GLO_)gdev820c.$(OBJ) $(C_) $(CONTRIBSRC)gdev820c.c
+
+djet820c_=$(GLOBJ)gdev820c.$(OBJ) $(GLOBJ)gdevprn.$(OBJ)
+
+$(DD)djet820c.dev: $(djet820c_) $(DD)page.dev
+	$(SETDEV) $(DD)djet820c $(djet820c_)
+
 ### ----------------- The Xerox XES printer device --------------------- ###
 
 xes_=$(GLOBJ)gdevxes.$(OBJ)
@@ -954,7 +1177,7 @@ $(DD)dmprt.dev : $(dmprt_) $(DD)page.dev
 	$(ADDMOD) $(DD)dmprt -ps dmp_init
 
 $(GLOBJ)gdevdmpr.$(OBJ) : $(JAPSRC)gdevdmpr.c $(JAPSRC)dviprlib.h $(PDEVH)
-	$(GLCC) $(O_)$@ $(C_) $(JAPSRC)gdevdmpr.c
+	$(GLCC) $(I_)$(PSI_) $(O_)$@ $(C_) $(JAPSRC)gdevdmpr.c
 
 $(GLOBJ)dviprlib.$(OBJ) : $(JAPSRC)dviprlib.c $(JAPSRC)dviprlib.h
 	$(GLCC) $(O_)$@ $(C_) $(JAPSRC)dviprlib.c
@@ -1105,6 +1328,45 @@ extra-upp-install:
 	    $(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)$(D)lib || exit 1; \
 	done
 
+### ------------ Install extra documentation --------------------------- ###
+
+extra-documentation:
+	-mkdir -p $(DESTDIR)$(install_prefix)$(docdir)/pcl3
+	cp $(CONTRIBSRC)/pcl3/NEWS   $(CONTRIBSRC)/pcl3/NEWS.pcl3
+	cp $(CONTRIBSRC)/pcl3/README $(CONTRIBSRC)/pcl3/README.pcl3
+	for f in BUGS LGPL NEWS.pcl3 README.pcl3 doc/gs-pcl3.html \
+		doc/how-to-report.txt doc/reports.txt  ps/margins-A4.ps \
+		ps/margins-A4Rotated.ps ps/margins-Letter.ps \
+		ps/margins-LetterRotated.ps ps/margins-Env10Rotated.ps \
+		ps/margins-EnvDLRotated.ps ps/levels-test.ps \
+		ps/dumppdd.ps ps/calign.ps ; \
+	do $(INSTALL_DATA) $(CONTRIBSRC)/pcl3/$$f $(DESTDIR)$(install_prefix)$(docdir)/pcl3/$${f##*/} ; \
+	done
+	tbl $(CONTRIBSRC)/pcl3/doc/gs-pcl3.1 | troff -Tlatin1 -t -mandoc | \
+		grotty -bou > $(DESTDIR)$(install_prefix)$(docdir)/pcl3/gs-pcl3.txt
+	-mkdir -p $(DESTDIR)$(install_prefix)$(docdir)/hpdj
+	for f in LGPL.txt NEWS.hpdj README.hpdj example.mdf gs-hpdj.ps \
+		hpdj.html margins-A4.ps margins-A4Rotated.ps \
+		margins-Letter.ps margins-LetterRotated.ps ; \
+	do $(INSTALL_DATA) hpdj/$$f $(DESTDIR)$(install_prefix)$(docdir)/hpdj/$$f ; \
+	done
+	tbl man/gs-hpdj.1 | troff -Tlatin1 -t -mandoc | \
+		grotty -bou > $(DESTDIR)$(install_prefix)$(docdir)/hpdj/gs-hpdj.txt
+	-mkdir -p $(DESTDIR)$(install_prefix)$(docdir)/stp
+	for f in stp/ChangeLog stp/src/ghost/README stp/src/ghost/COPYING \
+		stp/src/ghost/gs-stp.1 ; \
+	do $(INSTALL_DATA) $$f $(DESTDIR)$(install_prefix)$(docdir)/stp/`basename $$f` ; \
+	done
+
+extra-examples:
+	-mkdir -p $(DESTDIR)$(install_prefix)$(exdir)
+	for f in allkanji.ps article9.ps fmaptype.ps hankaku.ps \
+	vchars.ps vchars1.ps ; \
+		do test -e $(CONTRIBSRC)/examples/$$f || continue ; \
+		$(INSTALL_DATA) $(CONTRIBSRC)/examples/$$f $(DESTDIR)$(install_prefix)$(exdir) ; \
+	done
+
 ### ------------ Build/Install special features ------------ ###
 
-install-contrib-extras: extra-dmprt-install extra-upp-install
+install-contrib-extras: extra-dmprt-install extra-upp-install \
+	extra-documentation extra-examples
--- contrib/gdevcd8.c
+++ contrib/gdevcd8.c	2008-02-21 14:55:26.000000000 +0000
@@ -835,14 +835,14 @@ cdj_850_device(cdj850_procs, "cdj850", 6
 	       1.0, 0.0, 0.0, 0.0, 0.0, 1.0,
 	       cdj850_start_raster_mode, cdj850_print_non_blank_lines,
 	       cdj850_terminate_page);
-
+#if 0  /* given with gdevcd8-cdj880.c */
 const gx_device_cdj850 gs_cdj880_device =
 cdj_850_device(cdj880_procs, "cdj880", 600, 600, 32, cdj850_print_page, 0,
 	       PRESENTATION, PLAIN_PAPER, 4, DJ880C, 2,
 	       1.0, 0.0, 0.0, 0.0, 0.0, 1.0,
 	       cdj880_start_raster_mode, cdj880_print_non_blank_lines,
 	       cdj880_terminate_page);
-
+#endif
 const gx_device_cdj850 gs_cdj890_device =
 cdj_850_device(cdj890_procs, "cdj890", 600, 600, 32, cdj850_print_page, 0,
 	       PRESENTATION, PLAIN_PAPER, 4, DJ890C, 9,
@@ -856,7 +856,7 @@ cdj_1600_device(cdj1600_procs, "cdj1600"
 		1.0, 0.0, 0.0, 0.0, 0.0, 1.0,
 		cdj1600_start_raster_mode, cdj1600_print_non_blank_lines,
 		cdj1600_terminate_page);
-
+#if 0 /* given with gdevcd8-chp2200.c */
 /* HP2200 does not need color matching and halftoning parameters */
 const gx_device_cdj850 gs_chp2200_device =
 chp_2200_device(chp2200_procs, "chp2200", 300, 300, 24, chp2200_print_page, 0,
@@ -864,7 +864,7 @@ chp_2200_device(chp2200_procs, "chp2200"
 	       0.0, 0.0, 0.0, 0.0, 0.0, 0.0, /*all unused*/
 	       chp2200_start_raster_mode, NULL /*unused*/,
 	       chp2200_terminate_page);
-
+#endif
 /* DNJ500 does not need color matching and halftoning parameters */
 const gx_device_cdj850 gs_cdnj500_device =
 chp_2200_device(chp2200_procs, "cdnj500", 300, 300, 24, cdnj500_print_page, 0,
--- contrib/gdevgdi.c
+++ contrib/gdevgdi.c	2008-02-21 14:55:26.000000000 +0000
@@ -243,7 +243,7 @@ gdi_print_page(gx_device_printer *pdev,
             /*ul_tiff_size = FrameTiffComp(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);*/
             /*ul_scan_size = (unsigned long)bmp2run(obp, ibp, band_height, band_width_bytes, GDI_PRE_COMP);*/
 	    /*ul_min_size =  (ul_scan_size > ul_tiff_size) ? ul_tiff_size : ul_scan_size;*/
-	    ul_min_size = ul_tiff_size;
+	    /*ul_min_size = ul_tiff_size;*/
 	    compression_type = GDI_COMP_MODITIFF;
 	    /*compression_type =  (ul_scan_size > ul_tiff_size) ? GDI_COMP_MODITIFF : GDI_COMP_SCANLINE;*/
             switch (compression_type) {
--- contrib/gomni.c
+++ contrib/gomni.c	2008-02-21 14:55:26.000000000 +0000
@@ -673,9 +673,9 @@ SetupDevice (gx_device *pgxdev, gs_param
    static char             cDialogName[]      = "libomnijobdialog.so";
    static const char      *apszLibraryPaths[] = {
 #if __WORDSIZE == 64
-      "/usr/lib64/ghostscript/",
+      "/usr/lib64/ghostscript/Omni",
 #else
-      "/usr/lib/ghostscript/",
+      "/usr/lib/ghostscript/Omni",
 #endif
       "/usr/lib/Omni/",
       "/opt/Omni/bin/",
--- cups/cups.mak
+++ cups/cups.mak	2010-09-28 13:24:38.567926031 +0000
@@ -29,13 +29,12 @@ CUPS_MAK=cups/cups.mak
 cups_=	$(GLOBJ)gdevcups.$(OBJ)
 
 # These are set in the toplevel Makefile via autoconf(1)
-# CUPSCFLAGS=`cups-config --cflags`
-# CUPSSERVERBIN=`cups-config --serverbin`
-# CUPSSERVERROOT=`cups-config --serverroot`
-# CUPSDATA=`cups-config --datadir`
-# CUPSPDFTORASTER= 1 if CUPS is new enough (cups-config --version)
+# CUPSCFLAGS    =$(shell cups-config --cflags)
+# CUPSSERVERBIN =$(shell cups-config --serverbin)
+# CUPSSERVERROOT=$(shell cups-config --serverroot)
+# CUPSDATA      =$(shell cups-config --datadir)
 
-$(DD)cups.dev : $(CUPS_MAK) $(cups_) $(GLD)page.dev
+$(DD)cups.dev : $(CUPS_MAK) $(cups_) $(GLD)page.dev cups/pstoraster
 	$(SETPDEV2) $(DD)cups $(cups_)
 	$(ADDMOD) $(DD)cups -libpath $(CUPSLIBDIRS)
 	$(ADDMOD) $(DD)cups -lib $(CUPSLIBS)
@@ -50,11 +49,16 @@ pdftoraster: $(PDFTORASTER_XE)
 pdftoraster_=cups/pdftoraster.c
 
 $(PDFTORASTER_XE): $(pdftoraster_)
-	if [ "$(CUPSPDFTORASTER)" = "1" ]; then \
-	    $(GLCC) $(LDFLAGS) -DBINDIR='"$(bindir)"' -DGS='"$(GS)"' -o $@ $(pdftoraster_) `cups-config --image --ldflags --libs`; \
-	fi
+	$(GLCC) $(LDFLAGS) -DBINDIR='"$(bindir)"' -DGS='"$(GS)"' -o $@ $(pdftoraster_) `cups-config --image --ldflags --libs`
+
+cups/pstoraster: cups/pstoraster.in
+	sed -e 's|@prefix@|$(prefix)|' \
+	    -e 's|@exec_prefix@|$(exec_prefix)|' \
+	    -e 's|@bindir@|$(bindir)|' \
+	    -e 's|@GS@|$(GS)|' < cups/pstoraster.in > cups/pstoraster
 
 install:	install-cups
+soinstall:	install-cups
 
 install-cups: cups
 	-mkdir -p $(DESTDIR)$(CUPSSERVERBIN)/filter
--- cups/pdftoraster.c
+++ cups/pdftoraster.c	2010-01-20 09:44:00.000000000 +0000
@@ -66,7 +66,7 @@ void parseOpts(int argc, char **argv)
 
   if (argc < 6 || argc > 7) {
     fprintf(stderr, "ERROR: %s job-id user title copies options [file]",
-      argv[0]);
+	argv[0]);
     exit(1);
   }
 
--- doc/Deprecated.htm
+++ doc/Deprecated.htm	2008-02-21 14:55:26.000000000 +0000
@@ -1498,6 +1498,14 @@ changed with the <a href="Use.htm#Resolu
 switch</a>.
 </dl>
 
+dl>
+<dt><b><tt>PageSize</tt></b> (floats array)
+<dd> An array of 2 floats giving the width and height of the page size to
+use, in points.  The bjc600 driver supports papers up to A4 and letter
+(max width 612 points, max height 842 points) and the bjc800 up to A3
+and 11x17 (max width 842 points, max height 1224 points).
+</dl>
+
 <dl>
 <dt><code>ManualFeed</code> (bool)
 <dd>Indicate that the sheets won't be fed automatically by the printer,
--- ijs/Makefile.am
+++ ijs/Makefile.am	2008-02-21 14:55:26.000000000 +0000
@@ -62,11 +62,10 @@ else
 libijs_la_LIBADD = ijs_exec_unix.lo $(IJS_DEPLIBS)
 endif
 # Uncommment to build an unversioned library (version in soname)
-libijs_la_LDFLAGS = -release $(IJS_VERSION) -rpath $(libdir)
+#libijs_la_LDFLAGS = -release $(IJS_VERSION) -rpath $(libdir)
 # Uncomment to build a versioned library
-#libijs_la_LDFLAGS = \
-# -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-# -rpath $(libdir)
+libijs_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
 
 
 ijs_client_example_SOURCES = ijs_client_example.c
--- jbig2dec/jbig2.h
+++ jbig2dec/jbig2.h	2008-02-21 14:55:26.000000000 +0000
@@ -20,6 +20,8 @@ extern "C" {
 #ifndef _JBIG2_H
 #define _JBIG2_H
 
+#include <stdint.h>
+
 /* warning levels */
 typedef enum {
   JBIG2_SEVERITY_DEBUG,
--- lib/dumphint
+++ lib/dumphint	2010-09-28 13:19:55.771926311 +0000
@@ -27,4 +27,4 @@ if [ $# -ne 1 ]; then
 	exit 1
 fi
 
-exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- "`dirname \"$0\"`/dumphint.ps" "$1"
+exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- "`dirname \"$0\"`/dumphint.ps" ${1+"$@"}
--- lib/pdf2dsc
+++ lib/pdf2dsc	2010-09-28 13:22:00.659926268 +0000
@@ -22,6 +22,16 @@ usage() {
     exit 1
 }
 
+OPTIONS=""
+while true
+do
+	case "$1" in
+	-?*) OPTIONS="${OPTIONS:+$OPTIONS }$1" ;;
+	*)  break ;;
+	esac
+	shift
+done
+
 if [ $# -gt 2 ]
 then
     usage
@@ -31,5 +41,5 @@ pdffile=$1
 dscfile=$2
 : ${dscfile:=`echo $pdffile | sed 's,\.[^/.]*,,'`.dsc}
 
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER\
-    -sPDFname="$pdffile" -sDSCname="$dscfile" pdf2dsc.ps -c quit
+exec "$GS_EXECUTABLE" -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER $OPTIONS \
+    -sPDFname="$pdffile" -sDSCname="$dscfile" pdf2dsc.ps $OPTIONS -c quit
--- lib/pdf2ps
+++ lib/pdf2ps	2010-06-08 12:48:26.000000000 +0000
@@ -15,7 +15,7 @@ OPTIONS=""
 while true
 do
 	case "$1" in
-	-?*) OPTIONS="$OPTIONS $1" ;;
+	-?*) OPTIONS="${OPTIONS:+$OPTIONS }$1" ;;
 	*)  break ;;
 	esac
 	shift
--- lib/ps2epsi
+++ lib/ps2epsi	2008-02-21 14:55:26.000000000 +0000
@@ -10,14 +10,10 @@ if test ! -x "$gs"; then
 fi
 GS_EXECUTABLE="$gs"
 
-# try to create a temporary file securely
-if test -z "$TMPDIR"; then
-	TMPDIR=/tmp
-fi
 if which mktemp >/dev/null 2>/dev/null; then
-	tmpfile="`mktemp $TMPDIR/ps2epsi.XXXXXX`"
+	tmpfile="`mktemp ${TMPDIR-/tmp}/ps2epsi.XXXXXX`"
 else
-	tmpdir=$TMPDIR/ps2epsi.$$
+	tmpdir=${TMPDIR-/tmp}/ps2epsi.$$
 	(umask 077 && mkdir "$tmpdir")
 	if test ! -d "$tmpdir"; then
 		echo "failed: could not create temporary file"
--- lib/ps2pdfwr
+++ lib/ps2pdfwr	2010-06-08 12:51:50.000000000 +0000
@@ -15,7 +15,7 @@ OPTIONS="-P- -dSAFER"
 while true
 do
 	case "$1" in
-	-?*) OPTIONS="$OPTIONS $1" ;;
+	-?*) OPTIONS="${OPTIONS:+$OPTIONS }$1" ;;
 	*)  break ;;
 	esac
 	shift
--- psi/iinit.c
+++ psi/iinit.c	2008-02-21 14:55:33.000000000 +0000
@@ -44,29 +44,29 @@
  */
 /* The size of systemdict can be set in the makefile. */
 #ifndef SYSTEMDICT_SIZE
-#  define SYSTEMDICT_SIZE 631
+#  define SYSTEMDICT_SIZE 1901
 #endif
 #ifndef SYSTEMDICT_LEVEL2_SIZE
-#  define SYSTEMDICT_LEVEL2_SIZE 983
+#  define SYSTEMDICT_LEVEL2_SIZE 2953
 #endif
 #ifndef SYSTEMDICT_LL3_SIZE
-#  define SYSTEMDICT_LL3_SIZE 1123
+#  define SYSTEMDICT_LL3_SIZE 3371
 #endif
 /* The size of level2dict, if applicable, can be set in the makefile. */
 #ifndef LEVEL2DICT_SIZE
-#  define LEVEL2DICT_SIZE 251
+#  define LEVEL2DICT_SIZE 701
 #endif
 /* Ditto the size of ll3dict. */
 #ifndef LL3DICT_SIZE
-#  define LL3DICT_SIZE 43
+#  define LL3DICT_SIZE 131
 #endif
 /* Ditto the size of filterdict. */
 #ifndef FILTERDICT_SIZE
-#  define FILTERDICT_SIZE 43
+#  define FILTERDICT_SIZE 131
 #endif
 /* Define an arbitrary size for the operator procedure tables. */
 #ifndef OP_ARRAY_TABLE_SIZE
-#  define OP_ARRAY_TABLE_SIZE 300
+#  define OP_ARRAY_TABLE_SIZE 547
 #endif
 #ifndef OP_ARRAY_TABLE_GLOBAL_SIZE
 #  define OP_ARRAY_TABLE_GLOBAL_SIZE OP_ARRAY_TABLE_SIZE
--- psi/imainarg.c
+++ psi/imainarg.c	2008-02-21 14:55:33.000000000 +0000
@@ -47,6 +47,10 @@
 #include "iutil.h"
 #include "ivmspace.h"
 #include "vdtrace.h"
+#ifdef __linux__
+#  include <unistd.h>
+   uid_t saveuid, savegid;
+#endif
 
 /* Import operator procedures */
 extern int zflush(i_ctx_t *);
@@ -124,6 +128,14 @@ gs_main_init_with_args(gs_main_instance
     const char *arg;
     arg_list args;
     int code;
+#ifdef __linux__
+    /* save the priviliges */
+    saveuid=geteuid();
+    savegid=getegid();
+    /* and now drop them */
+    seteuid(getuid());
+    setegid(getgid());
+#endif
 
     arg_init(&args, (const char **)argv, argc,
 	     gs_main_arg_fopen, (void *)minst);
@@ -361,6 +373,19 @@ run_stdin:
 		if (code < 0)
 		    return code;
 		pal->expand_ats = false;
+
+		if (arg[0]) {
+		    char *sarg;
+
+		    if (arg[0] == '@' || (arg[0] == '-' && !isdigit((unsigned char)arg[1])))
+			break;
+		    sarg = arg_copy(arg, minst->heap);
+		    if (sarg == NULL)
+			return e_Fatal;
+		    code = runarg(minst, "", sarg, ".runstring", 0);
+		    if (code < 0)
+			return code;
+		}
 		while ((arg = arg_next(pal, &code)) != 0) {
 		    char *sarg;
 
--- psi/iminst.h
+++ psi/iminst.h	2008-02-21 14:55:33.000000000 +0000
@@ -82,7 +82,7 @@ struct gs_main_instance_s {
  * must include gconfig.h, because of SEARCH_HERE_FIRST.
  */
 #define gs_main_instance_default_init_values\
-  0, 20000, 0, 0, -1, 0, SEARCH_HERE_FIRST, 1
+  0, (24<<10), 0, 0, -1, 0, SEARCH_HERE_FIRST, 1
 extern const gs_main_instance gs_main_instance_init_values;
 
 #endif /* iminst_INCLUDED */
openSUSE Build Service is sponsored by