Package: ghostscript; Maintainer for ghostscript is Debian Printing Team <debian-printing@lists.debian.org>; Source for ghostscript is src:ghostscript (PTS, buildd, popcon).
Reported by: Till Kamppeter <till.kamppeter@gmail.com>
Date: Tue, 11 Nov 2008 11:57:05 UTC
Severity: normal
Fixed in version ghostscript/8.63.dfsg.1-1
Done: Masayuki Hatta (mhatta) <mhatta@debian.org>
Bug is archived. No further changes may be made.
View this report as an mbox folder, status mbox, maintainer mbox
Report forwarded
to debian-bugs-dist@lists.debian.org, Masayuki Hatta (mhatta) <mhatta@debian.org>:
Bug#505282; Package ghostscript.
(Tue, 11 Nov 2008 11:57:08 GMT) (full text, mbox, link).
Acknowledgement sent
to Till Kamppeter <till.kamppeter@gmail.com>:
New Bug report received and forwarded. Copy sent to Masayuki Hatta (mhatta) <mhatta@debian.org>.
(Tue, 11 Nov 2008 11:57:09 GMT) (full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
[Message part 1 (text/plain, inline)]
Package: ghostscript
We are currently implementing the PDF-based printing workflow:
http://www.linuxfoundation.org/en/OpenPrinting/PDF_as_Standard_Print_Job_Format
For this there was added a Poppler-based pdftoraster CUPS filter to the
"cups" package. As this filter caused problems we removed it again in
cups 1.3.9-4 which will be uploaded soon. See:
https://bugs.edge.launchpad.net/ubuntu/+source/cups/+bug/290395
The filter should be replaced by a Ghostscript-based pdftoraster filter
which I have developed and made upstream part of Ghostscript. It is
available in the SVN repository of Ghostscript.As this filter is part of
Ghostscript it needs to be added to the ghostscript package.
As I have done so with the Ubuntu package already, I add a patch which
adds the filter to the ghostscript package. A second patch (for
debian/patches/) fixes bugs in gdevcups.c ("cups" output device of
Ghostscript). These fixes are needed for the filter to work.
I highly recommend to also bump the Ghostscript version to 8.63 (merge
from Ubuntu).
Till
[ghostscript_8.63.dfsg.1-0ubuntu6-add-pdftoraster.patch (text/x-patch, inline)]
diff -u ghostscript-8.63.dfsg.1/debian/changelog ghostscript-8.63.dfsg.1/debian/changelog
--- ghostscript-8.63.dfsg.1/debian/changelog
+++ ghostscript-8.63.dfsg.1/debian/changelog
@@ -1,3 +1,14 @@
+ghostscript (8.63.dfsg.1-0ubuntu7) jaunty; urgency=low
+
+ * debian/local/pdftoraster/pdftoraster.c,
+ debian/local/pdftoraster/pdftoraster.convs, debian/rules: Added pdftoraster
+ filter from the Ghostscript SVN repository (LP: #290395).
+
+ * debian/control: Added conflict with cups < 1.3.9-4 because the pdftoraster
+ filter was there before.
+
+ -- Till Kamppeter <till.kamppeter@gmail.com> Tue, 11 Nov 2008 10:33:22 +0200
+
ghostscript (8.63.dfsg.1-0ubuntu6) intrepid; urgency=low
* debian/patches/42_gs-init-ps-delaybind-fix.dpatch: Make "ps2ascii" working
diff -u ghostscript-8.63.dfsg.1/debian/rules ghostscript-8.63.dfsg.1/debian/rules
--- ghostscript-8.63.dfsg.1/debian/rules
+++ ghostscript-8.63.dfsg.1/debian/rules
@@ -53,10 +53,11 @@
[ ! -f Makefile ] || $(MAKE) soclean
[ ! -f Makefile ] || $(MAKE) distclean
# These are somehow left...
- -rm -rf sobin soobj cups/pstopxl cups/pstoraster
+ -rm -rf sobin soobj cups/pstopxl cups/pstoraster debian/local/pdftoraster/pdftoraster
build/ghostscript::
#/usr/bin/docbook-to-man debian/ghostscript.sgml > ghostscript.1
+ gcc $(CFLAGS) $(LDFLAGS) `cups-config --image --libs` -DBINDIR='"/usr/bin"' -DGS='"gs"' -o debian/local/pdftoraster/pdftoraster debian/local/pdftoraster/pdftoraster.c
build/ghostscript-x::
$(MAKE) obj/X11.so
@@ -74,6 +75,10 @@
$(CURDIR)/debian/ghostscript/usr/share/cups/mime/ 2> /dev/null || :
rmdir --ignore-fail-on-non-empty $(CURDIR)/debian/ghostscript/etc/cups
rmdir --ignore-fail-on-non-empty $(CURDIR)/debian/ghostscript/etc
+ install -m 755 debian/local/pdftoraster/pdftoraster \
+ $(CURDIR)/debian/ghostscript/usr/lib/cups/filter/
+ install -m 644 debian/local/pdftoraster/pdftoraster.convs \
+ $(CURDIR)/debian/ghostscript/usr/share/cups/mime/
# Install DeFoMa script
install -m 644 $(CURDIR)/debian/gs.defoma $(CURDIR)/debian/ghostscript/usr/share/defoma/scripts
diff -u ghostscript-8.63.dfsg.1/debian/control ghostscript-8.63.dfsg.1/debian/control
--- ghostscript-8.63.dfsg.1/debian/control
+++ ghostscript-8.63.dfsg.1/debian/control
@@ -9,7 +9,7 @@
Package: ghostscript
Architecture: any
-Conflicts: gs (<< 8.62), gs-esp (<< 8.62), gs-gpl (<< 8.62), gs-afpl (<< 8.62), gs-aladdin (<< 8.62), gs-cjk-resource (<< 1.20010910-1), gs-pdfencrypt (<< 7.00), gs-common (<< 8.62), ghostscript-fonts
+Conflicts: gs (<< 8.62), gs-esp (<< 8.62), gs-gpl (<< 8.62), gs-afpl (<< 8.62), gs-aladdin (<< 8.62), gs-cjk-resource (<< 1.20010910-1), gs-pdfencrypt (<< 7.00), gs-common (<< 8.62), ghostscript-fonts, cups (<< 1.3.9-4)
Replaces: gs (<< 8.62), gs-esp (<< 8.62), gs-gpl (<< 8.62), gs-afpl (<< 8.62), gs-aladdin (<< 8.62), gs-pdfencrypt (<< 7.00), gs-common (<< 8.62), ghostscript-fonts
Provides: gs-pdfencrypt, postscript-viewer, gs-common
Recommends: psfontmgr
diff -u ghostscript-8.63.dfsg.1/debian/patches/00list ghostscript-8.63.dfsg.1/debian/patches/00list
--- ghostscript-8.63.dfsg.1.orig/debian/local/pdftoraster/pdftoraster.convs
+++ ghostscript-8.63.dfsg.1/debian/local/pdftoraster/pdftoraster.convs
@@ -0,0 +1,29 @@
+# Copyright (c) 2008, Till Kamppeter
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# MIT Open Source License - http://www.opensource.org/
+#
+# $Id: pdftoraster.convs 8803 2008-06-24 14:16:29Z till $
+#
+# CUPS file conversion rules for pdftoraster filter
+
+application/vnd.cups-pdf application/vnd.cups-raster 66 pdftoraster
+
only in patch2:
unchanged:
--- ghostscript-8.63.dfsg.1.orig/debian/local/pdftoraster/pdftoraster.c
+++ ghostscript-8.63.dfsg.1/debian/local/pdftoraster/pdftoraster.c
@@ -0,0 +1,509 @@
+/*
+Copyright (c) 2008, Till Kamppeter
+Copyright (c) 2008, BBR Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+MIT Open Source License - http://www.opensource.org/
+
+*/
+
+/* $Id: pdftoraster.c 9171 2008-10-17 22:58:21Z giles $ */
+
+/* PDF to CUPS Raster filter based on Ghostscript */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <cups/cups.h>
+#include <stdarg.h>
+#include <fcntl.h>
+#include <cups/raster.h>
+
+#define MAX_CHECK_COMMENT_LINES 20
+#ifndef GS
+#define GS "gs"
+#endif
+#ifndef BINDIR
+#define BINDIR "/usr/bin"
+#endif
+#ifndef CUPS_FONTPATH
+#define CUPS_FONTPATH "/usr/share/cups/fonts"
+#endif
+
+int exitCode = 0;
+int deviceCopies = 1;
+cups_bool_t deviceCollate = CUPS_FALSE;
+#ifdef CUPS_RASTER_SYNCv1
+cups_page_header2_t h;
+#else
+cups_page_header_t h;
+#endif /* CUPS_RASTER_SYNCv1 */
+int num_options = 0;
+cups_option_t *options = 0;
+
+void parseOpts(int argc, char **argv)
+{
+ ppd_file_t *ppd = 0;
+
+ if (argc < 6 || argc > 7) {
+ fprintf(stderr, "ERROR: %s job-id user title copies options [file]",
+ argv[0]);
+ exit(1);
+ }
+
+ ppd = ppdOpenFile(getenv("PPD"));
+ ppdMarkDefaults(ppd);
+ options = NULL;
+ num_options = cupsParseOptions(argv[5],0,&options);
+ cupsMarkOptions(ppd,num_options,options);
+ cupsRasterInterpretPPD(&h,ppd,num_options,options,0);
+}
+
+void parsePDFTOPDFComment(FILE *fp)
+{
+ char buf[4096];
+ int i;
+
+ /* skip until PDF start header */
+ while (fgets(buf,sizeof(buf),fp) != 0) {
+ if (strncmp(buf,"%PDF",4) == 0) {
+ break;
+ }
+ }
+ for (i = 0;i < MAX_CHECK_COMMENT_LINES;i++) {
+ if (fgets(buf,sizeof(buf),fp) == 0) break;
+ if (strncmp(buf,"%%PDFTOPDFNumCopies",19) == 0) {
+ char *p;
+
+ p = strchr(buf+19,':');
+ deviceCopies = atoi(p+1);
+ } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) {
+ char *p;
+
+ p = strchr(buf+17,':');
+ while (*p == ' ' || *p == '\t') p++;
+ if (strncasecmp(p,"true",4) == 0) {
+ deviceCollate = CUPS_TRUE;
+ } else {
+ deviceCollate = CUPS_FALSE;
+ }
+ }
+ }
+}
+
+int main(int argc, char *argv[], char *envp[]) {
+ int i;
+ FILE *fp;
+ cups_array_t *gs_args;
+ char tmpstr[1024];
+ const char *t = NULL;
+ int fd;
+ char buf[BUFSIZ];
+ int n;
+ int numargs;
+ char *argument;
+ char **gsargv;
+ const char* apos;
+ int fds[2];
+ int pid;
+
+ parseOpts(argc, argv);
+
+ if (argc == 6) {
+ /* stdin */
+
+ fd = cupsTempFd(buf,BUFSIZ);
+ if (fd < 0) {
+ fprintf(stderr, "ERROR: Can't create temporary file");
+ exit(1);
+ }
+ /* remove name */
+ unlink(buf);
+
+ /* copy stdin to the tmp file */
+ while ((n = read(0,buf,BUFSIZ)) > 0) {
+ if (write(fd,buf,n) != n) {
+ fprintf(stderr, "ERROR: Can't copy stdin to temporary file");
+ close(fd);
+ exit(1);
+ }
+ }
+ if (lseek(fd,0,SEEK_SET) < 0) {
+ fprintf(stderr, "ERROR: Can't rewind temporary file");
+ close(fd);
+ exit(1);
+ }
+
+ if ((fp = fdopen(fd,"rb")) == 0) {
+ fprintf(stderr, "ERROR: Can't fdopen temporary file");
+ close(fd);
+ exit(1);
+ }
+ } else {
+ /* argc == 7 filenmae is specified */
+
+ if ((fp = fopen(argv[6],"rb")) == 0) {
+ fprintf(stderr, "ERROR: Can't open input file %s",argv[6]);
+ exit(1);
+ }
+ }
+ parsePDFTOPDFComment(fp);
+ rewind(fp);
+
+ /* Fix NumCopies and Collate according to PDFTOPDFComments */
+ h.NumCopies = deviceCopies;
+ h.Collate = deviceCollate;
+ /* fixed other values that pdftopdf handles */
+ h.MirrorPrint = CUPS_FALSE;
+ h.Orientation = CUPS_ORIENT_0;
+
+ /* Ghostscript parameters */
+ gs_args = cupsArrayNew(NULL, NULL);
+ if (!gs_args)
+ {
+ fprintf(stderr, "ERROR: Unable to allocate memory for Ghostscript arguments array\n");
+ exit(1);
+ }
+
+ /* Part of Ghostscript command line which is not dependent on the job and/or
+ the driver */
+ snprintf(tmpstr, sizeof(tmpstr), "%s/%s", BINDIR, GS);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ cupsArrayAdd(gs_args, strdup("-dQUIET"));
+ /*cupsArrayAdd(gs_args, strdup("-dDEBUG"));*/
+ cupsArrayAdd(gs_args, strdup("-dPARANOIDSAFER"));
+ cupsArrayAdd(gs_args, strdup("-dNOPAUSE"));
+ cupsArrayAdd(gs_args, strdup("-dBATCH"));
+ /* cupsArrayAdd(gs_args, strdup("-dNOMEDIAATTRS")); */
+ cupsArrayAdd(gs_args, strdup("-sDEVICE=cups"));
+ cupsArrayAdd(gs_args, strdup("-sstdout=%stderr"));
+ cupsArrayAdd(gs_args, strdup("-sOutputFile=%stdout"));
+
+ /* CUPS font path */
+ if ((t = getenv("CUPS_FONTPATH")) == NULL)
+ t = CUPS_FONTPATH;
+ snprintf(tmpstr, sizeof(tmpstr), "-I%s", t);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+
+ /* Simple boolean, enumerated choice, numerical, and string parameters */
+ if (h.MediaClass[0] |= '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-sMediaClass=%s", h.MediaClass);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.MediaColor[0] |= '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-sMediaColor=%s", h.MediaColor);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.MediaType[0] |= '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-sMediaType=%s", h.MediaType);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.OutputType[0] |= '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-sOutputType=%s", h.OutputType);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.AdvanceDistance) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceDistance=%d",
+ (unsigned)(h.AdvanceDistance));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.AdvanceMedia) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceMedia=%d",
+ (unsigned)(h.AdvanceMedia));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.Collate) {
+ cupsArrayAdd(gs_args, strdup("-dCollate"));
+ }
+ if (h.CutMedia) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dCutMedia=%d",
+ (unsigned)(h.CutMedia));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.Duplex) {
+ cupsArrayAdd(gs_args, strdup("-dDuplex"));
+ }
+ if ((h.HWResolution[0] != 100) || (h.HWResolution[1] != 100))
+ snprintf(tmpstr, sizeof(tmpstr), "-r%dx%d",
+ (unsigned)(h.HWResolution[0]), (unsigned)(h.HWResolution[1]));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-r100x100");
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.InsertSheet) {
+ cupsArrayAdd(gs_args, strdup("-dInsertSheet"));
+ }
+ if (h.Jog) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dJog=%d",
+ (unsigned)(h.Jog));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.LeadingEdge) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dLeadingEdge=%d",
+ (unsigned)(h.LeadingEdge));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.ManualFeed) {
+ cupsArrayAdd(gs_args, strdup("-dManualFeed"));
+ }
+ if (h.MediaPosition) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dMediaPosition=%d",
+ (unsigned)(h.MediaPosition));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.MediaWeight) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dMediaWeight=%d",
+ (unsigned)(h.MediaWeight));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.MirrorPrint) {
+ cupsArrayAdd(gs_args, strdup("-dMirrorPrint"));
+ }
+ if (h.NegativePrint) {
+ cupsArrayAdd(gs_args, strdup("-dNegativePrint"));
+ }
+ if (h.NumCopies != 1) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dNumCopies=%d",
+ (unsigned)(h.NumCopies));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.Orientation) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dOrientation=%d",
+ (unsigned)(h.Orientation));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.OutputFaceUp) {
+ cupsArrayAdd(gs_args, strdup("-dOutputFaceUp"));
+ }
+ if (h.PageSize[0] != 612)
+ snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEWIDTHPOINTS=%d",
+ (unsigned)(h.PageSize[0]));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEWIDTHPOINTS=612");
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.PageSize[1] != 792)
+ snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEHEIGHTPOINTS=%d",
+ (unsigned)(h.PageSize[1]));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEHEIGHTPOINTS=792");
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.Separations) {
+ cupsArrayAdd(gs_args, strdup("-dSeparations"));
+ }
+ if (h.TraySwitch) {
+ cupsArrayAdd(gs_args, strdup("-dTraySwitch"));
+ }
+ if (h.Tumble) {
+ cupsArrayAdd(gs_args, strdup("-dTumble"));
+ }
+ if (h.cupsMediaType) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsMediaType=%d",
+ (unsigned)(h.cupsMediaType));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsBitsPerColor != 1)
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=%d",
+ (unsigned)(h.cupsBitsPerColor));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=1");
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.cupsColorOrder != CUPS_ORDER_CHUNKED)
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d",
+ (unsigned)(h.cupsColorOrder));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d",
+ CUPS_ORDER_CHUNKED);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.cupsColorSpace != CUPS_CSPACE_K)
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d",
+ (unsigned)(h.cupsColorSpace));
+ else
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d",
+ CUPS_CSPACE_K);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ if (h.cupsCompression) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsCompression=%d",
+ (unsigned)(h.cupsCompression));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsRowCount) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowCount=%d",
+ (unsigned)(h.cupsRowCount));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsRowFeed) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowFeed=%d",
+ (unsigned)(h.cupsRowFeed));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsRowStep) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowStep=%d",
+ (unsigned)(h.cupsRowStep));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+#ifdef CUPS_RASTER_SYNCv1
+ if (h.cupsBorderlessScalingFactor != 1.0f) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsBorderlessScalingFactor=%.4f",
+ h.cupsBorderlessScalingFactor);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ for (i=0; i <= 15; i ++)
+ if (h.cupsInteger[i]) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsInteger%d=%d",
+ i, (unsigned)(h.cupsInteger[i]));
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ for (i=0; i <= 15; i ++)
+ if (h.cupsReal[i]) {
+ snprintf(tmpstr, sizeof(tmpstr), "-dcupsReal%d=%.4f",
+ i, h.cupsReal[i]);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ for (i=0; i <= 15; i ++)
+ if (h.cupsString[i][0] != '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-scupsString%d=%s",
+ i, h.cupsString[i]);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsMarkerType[0] != '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-scupsMarkerType=%s",
+ h.cupsMarkerType);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsRenderingIntent[0] != '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-scupsRenderingIntent=%s",
+ h.cupsRenderingIntent);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+ if (h.cupsPageSizeName[0] != '\0') {
+ snprintf(tmpstr, sizeof(tmpstr), "-scupsPageSizeName=%s",
+ h.cupsPageSizeName);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+#endif /* CUPS_RASTER_SYNCv1 */
+
+ /* Parameters of array type. They cannot be supplied as "-d" or "-s"
+ command line options. We use "-c" here to supply them as
+ PostScript commands */
+
+ /* Switch to taking PostScript commands on the Ghostscript command line */
+ cupsArrayAdd(gs_args, "-c");
+
+ if ((t = cupsGetOption("profile", num_options, options)) != NULL) {
+ snprintf(tmpstr, sizeof(tmpstr), "<</cupsProfile(%s)>>setpagedevice", t);
+ cupsArrayAdd(gs_args, strdup(tmpstr));
+ }
+
+ /* Mark the end of PostScript commands supplied on the Ghostscript command
+ line (with the "-c" option), so that we can supply the input file name */
+ cupsArrayAdd(gs_args, strdup("-f"));
+
+ /* Let Ghostscript read from STDIN */
+ cupsArrayAdd(gs_args, strdup("-_"));
+
+ /* Put Ghostscript command line argument into an array for the "exec()"
+ call */
+ numargs = cupsArrayCount(gs_args);
+ gsargv = calloc(numargs + 1, sizeof(char *));
+ for (argument = (char *)cupsArrayFirst(gs_args), i = 0; argument;
+ argument = (char *)cupsArrayNext(gs_args), i++) {
+ gsargv[i] = argument;
+ }
+ gsargv[i] = NULL;
+
+ /* Debug output: Full Ghostscript command line and environment variables */
+ fprintf(stderr, "DEBUG: Ghostscript command line:");
+ for (i = 0; gsargv[i]; i ++) {
+ if ((strchr(gsargv[i],' ')) || (strchr(gsargv[i],'\t')))
+ apos = "'";
+ else
+ apos = "";
+ fprintf(stderr, " %s%s%s", apos, gsargv[i], apos);
+ }
+ fprintf(stderr, "\n");
+
+ for (i = 0; envp[i]; i ++)
+ fprintf(stderr, "DEBUG: envp[%d]=\"%s\"\n", i, envp[i]);
+
+ /* Create a pipe for feeding the job into Ghostscript */
+ if (pipe(fds))
+ {
+ fds[0] = -1;
+ fds[1] = -1;
+ fprintf(stderr, "ERROR: Unable to establish pipe for Ghostscript call");
+ exit(1);
+ }
+
+ /* Set the "close on exec" flag on each end of the pipe... */
+ if (fcntl(fds[0], F_SETFD, fcntl(fds[0], F_GETFD) | FD_CLOEXEC))
+ {
+ close(fds[0]);
+ close(fds[1]);
+ fds[0] = -1;
+ fds[1] = -1;
+ fprintf(stderr, "ERROR: Unable to set \"close on exec\" flag on read end of the pipe for Ghostscript call");
+ exit(1);
+ }
+ if (fcntl(fds[1], F_SETFD, fcntl(fds[1], F_GETFD) | FD_CLOEXEC))
+ {
+ close(fds[0]);
+ close(fds[1]);
+ fprintf(stderr, "ERROR: Unable to set \"close on exec\" flag on write end of the pipe for Ghostscript call");
+ exit(1);
+ }
+
+ if ((pid = fork()) == 0)
+ {
+ /* Ghostscript child process */
+
+ /* Couple pipe with STDIN of Ghostscript process */
+ if (fds[0] != 0) {
+ close(0);
+ if (fds[0] > 0)
+ dup(fds[0]);
+ else {
+ fprintf(stderr, "ERROR: Unable to couple pipe with STDIN of Ghostscript process");
+ exit(1);
+ }
+ }
+
+ /* Execute Ghostscript command line ... */
+ snprintf(tmpstr, sizeof(tmpstr), "%s/%s", BINDIR, GS);
+ execve(tmpstr, gsargv, envp);
+
+ perror(tmpstr);
+
+ exit(1);
+ } else {
+ /* Main process */
+
+ /* Feed job data into Ghostscript */
+ while ((n = fread(buf, 1, BUFSIZ, fp)) > 0) {
+ if (write(fds[1], buf, n) != n) {
+ fprintf(stderr, "ERROR: Can't feed job data into Ghostscript");
+ fclose(fp);
+ exit(1);
+ }
+ }
+ fclose(fp);
+ }
+
+ exit(0);
+}
+
[48_cups-output-device-pdf-duplex-uninitialized-memory.patch.dpatch (text/plain, inline)]
#! /bin/sh /usr/share/dpatch/dpatch-run
## 48_cups-output-device-pdf-duplex-uninitialized-memory.patch.dpatch by <till.kamppeter@gmail.com>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.
@DPATCH@
diff -urNad ghostscript-8.63.dfsg.1~/cups/gdevcups.c ghostscript-8.63.dfsg.1/cups/gdevcups.c
--- ghostscript-8.63.dfsg.1~/cups/gdevcups.c 2007-05-14 20:22:09.000000000 +0200
+++ ghostscript-8.63.dfsg.1/cups/gdevcups.c 2008-10-19 12:39:50.000000000 +0200
@@ -352,6 +352,21 @@
0, /* cupsRowCount */
0, /* cupsRowFeed */
0 /* cupsRowStep */
+#ifdef CUPS_RASTER_SYNCv1
+ ,
+ 1, /* cupsNumColors */
+ 1.0, /* cupsBorderlessScalingFactor */
+ { 612.0, 792.0 }, /* cupsPageSize */
+ { 0.0, 0.0, 612.0, 792.0 }, /* cupsImagingBBox */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* cupsInteger */
+ { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, /* cupsReal */
+ { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
+ /* cupsString */
+ "", /* cupsMarkerType */
+ "", /* cupsRenderingIntent */
+ "Letter" /* cupsPageSizeName */
+#endif /* CUPS_RASTER_SYNCv1 */
}
};
@@ -738,6 +753,10 @@
(int *)&(cups->header.CutMedia))) < 0)
return (code);
+ b = cups->header.Duplex;
+ if ((code = param_write_bool(plist, "Duplex", &b)) < 0)
+ return (code);
+
b = cups->header.InsertSheet;
if ((code = param_write_bool(plist, "InsertSheet", &b)) < 0)
return (code);
@@ -758,6 +777,10 @@
(int *)&(cups->header.MediaPosition))) < 0)
return (code);
+ if ((code = param_write_int(plist, "MediaWeight",
+ (int *)&(cups->header.MediaWeight))) < 0)
+ return (code);
+
b = cups->header.MirrorPrint;
if ((code = param_write_bool(plist, "MirrorPrint", &b)) < 0)
return (code);
@@ -833,9 +856,11 @@
return (code);
#ifdef CUPS_RASTER_SYNCv1
+#if 0 /* Don't include read-only parameters... */
if ((code = param_write_int(plist, "cupsNumColors",
(int *)&(cups->header.cupsNumColors))) < 0)
return (code);
+#endif /* 0 */
if ((code = param_write_float(plist, "cupsBorderlessScalingFactor",
&(cups->header.cupsBorderlessScalingFactor))) < 0)
@@ -844,7 +869,7 @@
for (i = 0; i < 16; i ++)
{
sprintf(name, "cupsInteger%d", i);
- if ((code = param_write_int(plist, name,
+ if ((code = param_write_int(plist, strdup(name),
(int *)(cups->header.cupsInteger + i))) < 0)
return (code);
}
@@ -852,16 +877,16 @@
for (i = 0; i < 16; i ++)
{
sprintf(name, "cupsReal%d", i);
- if ((code = param_write_float(plist, name,
+ if ((code = param_write_float(plist, strdup(name),
cups->header.cupsReal + i)) < 0)
return (code);
}
for (i = 0; i < 16; i ++)
{
- sprintf(name, "cupsReal%d", i);
+ sprintf(name, "cupsString%d", i);
param_string_from_string(s, cups->header.cupsString[i]);
- if ((code = param_write_string(plist, name, &s)) < 0)
+ if ((code = param_write_string(plist, strdup(name), &s)) < 0)
return (code);
}
@@ -2695,11 +2720,15 @@
#define stringoption(name, sname) \
if ((code = param_read_string(plist, sname, &stringval)) < 0) \
{ \
+ dprintf2("ERROR: Error setting %s to \"%s\"...\n", sname, \
+ (char *)stringval.data); \
param_signal_error(plist, sname, code); \
return (code); \
} \
else if (code == 0) \
{ \
+ dprintf2("DEBUG: Setting %s to \"%s\"...\n", sname, \
+ (char *)stringval.data); \
strncpy(cups->header.name, (const char *)stringval.data, \
stringval.size); \
cups->header.name[stringval.size] = '\0'; \
@@ -2708,29 +2737,35 @@
#define intoption(name, sname, type) \
if ((code = param_read_int(plist, sname, &intval)) < 0) \
{ \
+ dprintf2("ERROR: Error setting %s to %d...\n", sname, (int)intval); \
param_signal_error(plist, sname, code); \
return (code); \
} \
else if (code == 0) \
{ \
- dprintf2("DEBUG: Setting %s to %d...\n", sname, intval); \
+ dprintf2("DEBUG: Setting %s to %d...\n", sname, (int)intval); \
cups->header.name = (type)intval; \
}
#define floatoption(name, sname) \
if ((code = param_read_float(plist, sname, &floatval)) < 0) \
{ \
+ dprintf2("ERROR: Error setting %s to %.4f...\n", sname, (float)floatval); \
param_signal_error(plist, sname, code); \
return (code); \
} \
else if (code == 0) \
- cups->header.name = (unsigned)floatval;
+ { \
+ dprintf2("DEBUG: Setting %s to %.4f...\n", sname, (float)floatval); \
+ cups->header.name = (float)floatval; \
+ }
#define booloption(name, sname) \
if ((code = param_read_bool(plist, sname, &boolval)) < 0) \
{ \
if ((code = param_read_null(plist, sname)) < 0) \
{ \
+ dprintf2("ERROR: Error setting %s to %d...\n", sname, (int)boolval); \
param_signal_error(plist, sname, code); \
return (code); \
} \
@@ -2738,24 +2773,34 @@
cups->header.name = CUPS_FALSE; \
} \
else if (code == 0) \
- cups->header.name = (cups_bool_t)boolval;
+ { \
+ dprintf2("DEBUG: Setting %s to %d...\n", sname, (int)boolval); \
+ cups->header.name = (cups_bool_t)boolval; \
+ }
#define arrayoption(name, sname, count) \
if ((code = param_read_float_array(plist, sname, &arrayval)) < 0) \
{ \
if ((code = param_read_null(plist, sname)) < 0) \
{ \
+ dprintf1("ERROR: Error setting %s...\n", sname); \
param_signal_error(plist, sname, code); \
return (code); \
} \
if (code == 0) \
+ { \
+ dprintf1("DEBUG: Setting %s to zero\n", sname); \
for (i = 0; i < count; i ++) \
cups->header.name[i] = 0; \
+ } \
} \
else if (code == 0) \
{ \
+ dprintf1("DEBUG: Setting %s to", sname); \
for (i = 0; i < count; i ++) \
+ dprintf1(" %d", (unsigned)(arrayval.data[i])); \
cups->header.name[i] = (unsigned)arrayval.data[i]; \
+ dprintf("...\n"); \
}
size_set = param_read_float_array(plist, ".MediaSize", &arrayval) == 0 ||
@@ -2768,7 +2813,7 @@
stringoption(MediaColor, "MediaColor")
stringoption(MediaType, "MediaType")
stringoption(OutputType, "OutputType")
- floatoption(AdvanceDistance, "AdvanceDistance")
+ intoption(AdvanceDistance, "AdvanceDistance", unsigned)
intoption(AdvanceMedia, "AdvanceMedia", cups_adv_t)
booloption(Collate, "Collate")
intoption(CutMedia, "CutMedia", cups_cut_t)
@@ -2781,7 +2826,7 @@
booloption(ManualFeed, "ManualFeed")
intoption(MediaPosition, "cupsMediaPosition", unsigned) /* Compatibility */
intoption(MediaPosition, "MediaPosition", unsigned)
- floatoption(MediaWeight, "MediaWeight")
+ intoption(MediaWeight, "MediaWeight", unsigned)
booloption(MirrorPrint, "MirrorPrint")
booloption(NegativePrint, "NegativePrint")
intoption(Orientation, "Orientation", cups_orient_t)
@@ -2815,19 +2860,19 @@
for (i = 0; i < 16; i ++)
{
sprintf(name, "cupsInteger%d", i);
- intoption(cupsInteger[i], name, unsigned)
+ intoption(cupsInteger[i],strdup(name), unsigned)
}
for (i = 0; i < 16; i ++)
{
sprintf(name, "cupsReal%d", i);
- floatoption(cupsReal[i], name)
+ floatoption(cupsReal[i], strdup(name))
}
for (i = 0; i < 16; i ++)
{
sprintf(name, "cupsString%d", i);
- stringoption(cupsString[i], name)
+ stringoption(cupsString[i], strdup(name))
}
stringoption(cupsMarkerType, "cupsMarkerType");
Information forwarded
to debian-bugs-dist@lists.debian.org, Masayuki Hatta (mhatta) <mhatta@debian.org>:
Bug#505282; Package ghostscript.
(Tue, 11 Nov 2008 22:07:23 GMT) (full text, mbox, link).
Acknowledgement sent
to Till Kamppeter <till.kamppeter@gmail.com>:
Extra info received and forwarded to list. Copy sent to Masayuki Hatta (mhatta) <mhatta@debian.org>.
(Tue, 11 Nov 2008 22:07:26 GMT) (full text, mbox, link).
Message #10 received at 505282@bugs.debian.org (full text, mbox, reply):
I suggest that you simply merge the current Ubuntu Jaunty package (ghostscript 8.63.dfsg.1-0ubuntu7) into Debian. It contains the new filter and many other important bug fixes. Till
Reply sent
to Masayuki Hatta (mhatta) <mhatta@debian.org>:
You have taken responsibility.
(Sun, 04 Jan 2009 03:42:12 GMT) (full text, mbox, link).
Notification sent
to Till Kamppeter <till.kamppeter@gmail.com>:
Bug acknowledged by developer.
(Sun, 04 Jan 2009 03:42:12 GMT) (full text, mbox, link).
Message #15 received at 505282-close@bugs.debian.org (full text, mbox, reply):
Source: ghostscript
Source-Version: 8.63.dfsg.1-1
We believe that the bug you reported is fixed in the latest version of
ghostscript, which is due to be installed in the Debian FTP archive:
ghostscript-doc_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/ghostscript-doc_8.63.dfsg.1-1_all.deb
ghostscript-x_8.63.dfsg.1-1_i386.deb
to pool/main/g/ghostscript/ghostscript-x_8.63.dfsg.1-1_i386.deb
ghostscript_8.63.dfsg.1-1.diff.gz
to pool/main/g/ghostscript/ghostscript_8.63.dfsg.1-1.diff.gz
ghostscript_8.63.dfsg.1-1.dsc
to pool/main/g/ghostscript/ghostscript_8.63.dfsg.1-1.dsc
ghostscript_8.63.dfsg.1-1_i386.deb
to pool/main/g/ghostscript/ghostscript_8.63.dfsg.1-1_i386.deb
ghostscript_8.63.dfsg.1.orig.tar.gz
to pool/main/g/ghostscript/ghostscript_8.63.dfsg.1.orig.tar.gz
gs-aladdin_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/gs-aladdin_8.63.dfsg.1-1_all.deb
gs-common_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/gs-common_8.63.dfsg.1-1_all.deb
gs-esp_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/gs-esp_8.63.dfsg.1-1_all.deb
gs-gpl_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/gs-gpl_8.63.dfsg.1-1_all.deb
gs_8.63.dfsg.1-1_all.deb
to pool/main/g/ghostscript/gs_8.63.dfsg.1-1_all.deb
libgs-dev_8.63.dfsg.1-1_i386.deb
to pool/main/g/ghostscript/libgs-dev_8.63.dfsg.1-1_i386.deb
libgs8_8.63.dfsg.1-1_i386.deb
to pool/main/g/ghostscript/libgs8_8.63.dfsg.1-1_i386.deb
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 505282@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Masayuki Hatta (mhatta) <mhatta@debian.org> (supplier of updated ghostscript package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.8
Date: Sun, 04 Jan 2009 09:30:13 +0900
Source: ghostscript
Binary: ghostscript gs gs-esp gs-gpl gs-aladdin gs-common ghostscript-x ghostscript-doc libgs8 libgs-dev
Architecture: source all i386
Version: 8.63.dfsg.1-1
Distribution: unstable
Urgency: low
Maintainer: Masayuki Hatta (mhatta) <mhatta@debian.org>
Changed-By: Masayuki Hatta (mhatta) <mhatta@debian.org>
Description:
ghostscript - The GPL Ghostscript PostScript/PDF interpreter
ghostscript-doc - The GPL Ghostscript PostScript/PDF interpreter - Documentation
ghostscript-x - The GPL Ghostscript PostScript/PDF interpreter - X Display suppor
gs - Transitional package
gs-aladdin - Transitional package
gs-common - Dummy package depending on ghostscript
gs-esp - Transitional package
gs-gpl - Transitional package
libgs-dev - The Ghostscript PostScript Library - Development Files
libgs8 - The Ghostscript PostScript/PDF interpreter Library
Closes: 81430 131528 142228 229748 419183 472645 475704 495703 503712 505282
Changes:
ghostscript (8.63.dfsg.1-1) unstable; urgency=low
.
[Masayuki Hatta]
* Maintainer upload, New upstream release.
* Acknowledged NMUs, thanks tv - closes: #472645, #495703, #503712
* debian/patches/32_improve-handling-of-media-size-changes-from-gv.dpatch:
Allow gv to change the image and media size (Upstream bug #688943)
- closes: #142228
* debian/patches/33_bad-params-to-xinitimage-on-large-bitmaps.dpatch:
Fixed zooming problem in gv (Upstream bug #689547)
- closes: #419183
* debian/patches//34_ftbfs-on-hurd-fix.dpatch:
Fixed FTBFS on hurd-i386 - closes: #475704
* Added Homepage, Vcs-Svn and Vcs-Browser headers in control.
* Sync'd with the Ubuntu 8.63.dfsg.1-0ubuntu13.
.
[Till Kamppeter]
* debian/libgs8.shlibs: Removed. All libgs8 versions should have the same
API and ABI. The artificial restriction set by this file required all
reverse dependencies to be rebuilt for every stable release of Ghostscript.
* debian/patches/35_disable_libcairo.dpatch: Added possibility to
compile Ghostscript without the "cairo" output device. The device
is still in experimental state and with its dependency on libcairo
it pulls in a dependency on X.
* debian/control, debian/rules: Build Ghostscript without the "cairo"
output device.
* debian/patches/38_pxl-duplex.dpatch: The Duplex option of the "pxlmono"
and "pxlcolor" drivers did not work.
* debian/patches/39_pxl-resolution.dpatch: The resolution must be also set
as PJL command for the "pxlmono" and "pxlcolor" drivers.
* debian/patches/42_gs-init-ps-delaybind-fix.dpatch: Make "ps2ascii" working
again (Upstream bug #690124) - closes: #81430, #229748, #131528
* debian/patches/45_bjc600-bjc800-pdf-input.dpatch: Fix setting of the
"DitheringType" option. With PDF input Ghostscript crashes, with
PostScript input the "DitheringType" option was probably ignored
(Upstream bug #690032).
* debian/patches/48_cups-output-device-pdf-duplex-uninitialized-memory.patch.dpatch:
Fixed several bugs in the "cups" (CUPS Raster) output device:
- Ghostscript crashed with PDF input data
- The "Duplex" and "MediaWeight" options were ignored
- There was uninitialized memory and wrong usage of pointers, potential
cause for segmentation faults or even vulnerabilities
- There were mismatches in data types, leading to possible breakage
of the "AdvanceDistance", "MediaWeight", and "cupsStringXX" options.
(Upstream bug #690101).
* debian/local/pdftoraster/pdftoraster.c,
debian/local/pdftoraster/pdftoraster.convs, debian/rules: Added pdftoraster
filter from the Ghostscript SVN repository - closes: #505282
* debian/patches/50_lips4-floating-point-exception: Fixed floating-point
exception in "lips4" and other drivers (Upstream bug #690122).
* debian/patches/52_cups-device-logging.dpatch: Made logging of the "cups"
output device much less verbose. The log of one jub in debug mode did not
fit into the maximum log file size of CUPS.
* debian/patches/55_pcl-input-slot-fix.dpatch: Made the paper tray selection
via "-dMediaPosition=..." in the PCL 4/5/5e drivers work (Upstream bug
#690182).
* debian/patches/57_pxl-input-slot-fix.dpatch: Made the paper tray selection
via "-dMediaPosition=..." in the PCL 6/XL drivers work.
* debian/patches/60_pxl-cups-driver-pdf.dpatch: Made the PCL-XL CUPS filter
and PPDs work with PDF input.
* debian/patches/62_onebitcmyk-pdf.dpatch: Check the whole Decode array to
detect special cases of identity and inverse decoding in PDF files
(Upstream bug #690178).
* debian/ghostscript.postinst: Added automatic update of the PPD files
of already existing print queues.
* debian/ghostscript.postinst: Do not try to update the PPDs of existing
print queues if CUPS is not installed or not running.
* debian/patches/60_pxl-cups-driver-pdf.dpatch: The pstopxl filter did not
remove its temporary file after finishing.
* debian/patches/65_too-big-temp-files-1.dpatch: Ghostscript produced much
too big temporary files (> 10 GB) when printing photos from GNOME apps in
1200 dpi. Part 1 of the fix which reduces the temp file size to less than
2 GB (Upstream bug #690133).
* debian/patches/67_too-big-temp-files-2.dpatch: Complete fix for the too big
temporary files. Now the bug is completely fixed. Temp files are not much
bigger than the jobs themselves now (Upstream bug #690133).
* debian/patches/70_take-into-account-data-in-stream-buffer-before-refill.dpatch:
Certain files lead to a Ghostscript error due to wrong handling of the
stream buffer (Upstream bug #690090).
Checksums-Sha1:
6324585701af721f8b87b9499c4dc03f7cc185ed 1667 ghostscript_8.63.dfsg.1-1.dsc
abc7f1573e90378bd307bb5bd0aee0a61320184a 11990137 ghostscript_8.63.dfsg.1.orig.tar.gz
5b81c333014640a065ebf21b559021656e1df419 116874 ghostscript_8.63.dfsg.1-1.diff.gz
a17daae56fe00db9eb69435045dd5a7e5f7c95ef 29878 gs_8.63.dfsg.1-1_all.deb
26258869a9e4d34e86cc72d9caa517b58f85bb71 29878 gs-esp_8.63.dfsg.1-1_all.deb
93f4e95b862fd7cc72879dcfc8f0b74ad7ff65e5 29884 gs-gpl_8.63.dfsg.1-1_all.deb
cdc055396756bf16d240a6487cfc026e87bf7e7c 29888 gs-aladdin_8.63.dfsg.1-1_all.deb
713972db181c110c360cc3e28a700eec40c0664a 30092 gs-common_8.63.dfsg.1-1_all.deb
8e4ce41b4d65a21c7a1c18d7085355ec9905448e 2848712 ghostscript-doc_8.63.dfsg.1-1_all.deb
08aaf245b5db835770eff4f961275afe1b9e8daf 809934 ghostscript_8.63.dfsg.1-1_i386.deb
7201775bfaaffd05ed40d7b8434c90d552209d8f 62846 ghostscript-x_8.63.dfsg.1-1_i386.deb
5ef587e8cfc71b90c3dbe868bc76d6c27e0098dd 2259672 libgs8_8.63.dfsg.1-1_i386.deb
e9d5daa79edff5d12c8f140c57a3d8c6baa2aa51 37610 libgs-dev_8.63.dfsg.1-1_i386.deb
Checksums-Sha256:
15f4c0b551888807c9accf7a0f87ca8e4f43ec1583d401b84deeedcf1c94ac4f 1667 ghostscript_8.63.dfsg.1-1.dsc
f8573b7afa19fecd9cbf2a482c637d89bb5687be0f537b877f6a54eb54598e39 11990137 ghostscript_8.63.dfsg.1.orig.tar.gz
0bad795ed040735c353eae73610fe1579380ef6e1d5df0eab1f75cf8c5df8189 116874 ghostscript_8.63.dfsg.1-1.diff.gz
dc34bd0eb96822fe2ed19f3a71129eaa2d0921fa5ed0af4e2047c779ca2abb4a 29878 gs_8.63.dfsg.1-1_all.deb
ba9dd6e5f3a0b8a6399fb692c8050153177a657b958e4a27161f5c2ddc2aea19 29878 gs-esp_8.63.dfsg.1-1_all.deb
d67bc9145afc76e6fbfcc99c9a5470825b98252d57e8898e69473eb46a625ef0 29884 gs-gpl_8.63.dfsg.1-1_all.deb
0c8e64028ab3a4a77d0b1e2e54999735b2f032ef1b72ff4448bb0162feaa436a 29888 gs-aladdin_8.63.dfsg.1-1_all.deb
b54a0a19857841f0c1089ece9f8d4b4937aeef11655cc6c3f6e4b9e33649690d 30092 gs-common_8.63.dfsg.1-1_all.deb
ebe48be9cf7d4a462a988f09bb25212e89fc9e765fa372f216219cfccc509af2 2848712 ghostscript-doc_8.63.dfsg.1-1_all.deb
bbc27f3cc09e6d499cc0f8d9da57268f82201c2f54644e0950bf4d89414ec25d 809934 ghostscript_8.63.dfsg.1-1_i386.deb
f6ee1088011bf398556fa1935f04535f97cf6f922e11a2b47ee8d648dda54d26 62846 ghostscript-x_8.63.dfsg.1-1_i386.deb
2256ae077b3e241dd6c71e265bf719a97a5aba946972bae8321319fe077c6cae 2259672 libgs8_8.63.dfsg.1-1_i386.deb
194bd921e7721d78327f6e0a551317dd2be52f9ceaca12bfd84b82a93709064e 37610 libgs-dev_8.63.dfsg.1-1_i386.deb
Files:
d474db3e5ab0cb230b513d1488ab08a6 1667 text optional ghostscript_8.63.dfsg.1-1.dsc
13de82c53cb0e20ecb8485c8d08c5ffd 11990137 text optional ghostscript_8.63.dfsg.1.orig.tar.gz
3984532d21af03d4e8a59ce5c1700d97 116874 text optional ghostscript_8.63.dfsg.1-1.diff.gz
a02680206538578d960bca521bb54b1f 29878 text extra gs_8.63.dfsg.1-1_all.deb
3b4d8a0c3327b562cfabc88e87938433 29878 text extra gs-esp_8.63.dfsg.1-1_all.deb
dc395b331ffba5410bb8f2655c2cdf8d 29884 text extra gs-gpl_8.63.dfsg.1-1_all.deb
3805dc07b0678f2c626992557d9a1da7 29888 text extra gs-aladdin_8.63.dfsg.1-1_all.deb
2ba841b42ba1ade37ebe5b978b311626 30092 text extra gs-common_8.63.dfsg.1-1_all.deb
c98b81f8fe1219e06545afc1e0ba62d5 2848712 doc optional ghostscript-doc_8.63.dfsg.1-1_all.deb
2198048001a9cac83e00e7997d3c6ff7 809934 text optional ghostscript_8.63.dfsg.1-1_i386.deb
e3ddfffe318e9d0006847bcfda08788f 62846 text optional ghostscript-x_8.63.dfsg.1-1_i386.deb
dac9f3780e79825773321119d3853c3a 2259672 libs optional libgs8_8.63.dfsg.1-1_i386.deb
a514fd7448f48f11f8dc0dc10b438ea2 37610 libdevel optional libgs-dev_8.63.dfsg.1-1_i386.deb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAklgKGQACgkQy2+jQOcHWlRdvwCdETyAY2SrNv9wWAHlQNXbYkpr
O8UAn2BYXtx9mHydz2yK/Z7pRc5Zt5Ri
=fsjs
-----END PGP SIGNATURE-----
Bug archived.
Request was from Debbugs Internal Request <owner@bugs.debian.org>
to internal_control@bugs.debian.org.
(Mon, 02 Feb 2009 07:29:22 GMT) (full text, mbox, link).
Send a report that this bug log contains spam.
Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.
Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.