This commit is contained in:
Tim Waugh 2011-08-09 15:42:00 +01:00
parent 9049c1bb30
commit 29821914dd
11 changed files with 67 additions and 264 deletions

1
.gitignore vendored
View File

@ -29,3 +29,4 @@ ghostscript-8.71.tar.xz
/ghostscript-9.00.tar.xz
/ghostscript-9.01.tar.bz2
/ghostscript-9.02.tar.bz2
/ghostscript-9.04.tar.bz2

View File

@ -1,19 +0,0 @@
diff -up ghostscript-9.02/cups/colord.c.colord ghostscript-9.02/cups/colord.c
--- ghostscript-9.02/cups/colord.c.colord 2011-04-12 11:09:49.852203837 +0100
+++ ghostscript-9.02/cups/colord.c 2011-04-12 11:11:11.226356829 +0100
@@ -316,9 +316,14 @@ char *
colord_get_profile_for_device_id (const char *device_id,
const char **qualifier_tuple)
{
- DBusConnection *con;
+ DBusConnection *con = NULL;
char *filename = NULL;
+ if (device_id == NULL) {
+ fprintf(stderr, "DEBUG: No colord device ID available\n");
+ goto out;
+ }
+
/* connect to system bus */
con = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
if (con == NULL) {

View File

@ -1,107 +0,0 @@
diff -up ghostscript-9.04rc1/cups/gdevcups.c.gstoraster-errors ghostscript-9.04rc1/cups/gdevcups.c
diff -up ghostscript-9.04rc1/cups/gstoraster.c.gstoraster-errors ghostscript-9.04rc1/cups/gstoraster.c
--- ghostscript-9.04rc1/cups/gstoraster.c.gstoraster-errors 2011-08-01 15:10:36.850534567 +0100
+++ ghostscript-9.04rc1/cups/gstoraster.c 2011-08-01 15:11:21.215732758 +0100
@@ -381,7 +381,7 @@ gs_spawn (const char *filename,
{
fds[0] = -1;
fds[1] = -1;
- fprintf(stderr, "ERROR: Unable to establish pipe for Ghostscript call");
+ fprintf(stderr, "ERROR: Unable to establish pipe for Ghostscript call\n");
goto out;
}
@@ -392,14 +392,14 @@ gs_spawn (const char *filename,
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");
+ fprintf(stderr, "ERROR: Unable to set \"close on exec\" flag on read end of the pipe for Ghostscript call\n");
goto out;
}
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");
+ fprintf(stderr, "ERROR: Unable to set \"close on exec\" flag on write end of the pipe for Ghostscript call\n");
goto out;
}
@@ -411,7 +411,7 @@ gs_spawn (const char *filename,
if (fds[0] > 0)
dup(fds[0]);
else {
- fprintf(stderr, "ERROR: Unable to couple pipe with STDIN of Ghostscript process");
+ fprintf(stderr, "ERROR: Unable to couple pipe with STDIN of Ghostscript process\n");
goto out;
}
}
@@ -425,7 +425,7 @@ gs_spawn (const char *filename,
/* 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");
+ fprintf(stderr, "ERROR: Can't feed job data into Ghostscript\n");
goto out;
}
}
@@ -542,7 +542,7 @@ main (int argc, char **argv, char *envp[
t = getenv("PPD");
if ((ppd = ppdOpenFile(t)) == NULL) {
- fprintf(stderr, "ERROR: Failed to open PPD: %s", t);
+ fprintf(stderr, "ERROR: Failed to open PPD: %s\n", t);
goto out;
}
@@ -554,7 +554,7 @@ main (int argc, char **argv, char *envp[
fd = cupsTempFd(buf,BUFSIZ);
if (fd < 0) {
- fprintf(stderr, "ERROR: Can't create temporary file");
+ fprintf(stderr, "ERROR: Can't create temporary file\n");
goto out;
}
/* remove name */
@@ -563,19 +563,19 @@ main (int argc, char **argv, char *envp[
/* 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");
+ fprintf(stderr, "ERROR: Can't copy stdin to temporary file\n");
close(fd);
goto out;
}
}
if (lseek(fd,0,SEEK_SET) < 0) {
- fprintf(stderr, "ERROR: Can't rewind temporary file");
+ fprintf(stderr, "ERROR: Can't rewind temporary file\n");
close(fd);
goto out;
}
if ((fp = fdopen(fd,"rb")) == 0) {
- fprintf(stderr, "ERROR: Can't fdopen temporary file");
+ fprintf(stderr, "ERROR: Can't fdopen temporary file\n");
close(fd);
goto out;
}
@@ -583,7 +583,7 @@ main (int argc, char **argv, char *envp[
/* argc == 7 filename is specified */
if ((fp = fopen(argv[6],"rb")) == 0) {
- fprintf(stderr, "ERROR: Can't open input file %s",argv[6]);
+ fprintf(stderr, "ERROR: Can't open input file %s\n",argv[6]);
goto out;
}
}
@@ -591,7 +591,7 @@ main (int argc, char **argv, char *envp[
/* find out file type */
doc_type = parse_doc_type(fp);
if (doc_type == GS_DOC_TYPE_UNKNOWN) {
- fprintf(stderr, "ERROR: Can't detect file type");
+ fprintf(stderr, "ERROR: Can't detect file type\n");
goto out;
}

View File

@ -1,7 +1,7 @@
diff -up ghostscript-9.01/psi/zusparam.c.iccprofiles-initdir ghostscript-9.01/psi/zusparam.c
--- ghostscript-9.01/psi/zusparam.c.iccprofiles-initdir 2010-11-16 14:48:31.000000000 +0000
+++ ghostscript-9.01/psi/zusparam.c 2011-02-10 09:51:59.107972983 +0000
@@ -607,12 +607,31 @@ set_default_gray_icc(i_ctx_t *i_ctx_p, g
diff -up ghostscript-9.04rc1/psi/zusparam.c.iccprofiles-initdir ghostscript-9.04rc1/psi/zusparam.c
--- ghostscript-9.04rc1/psi/zusparam.c.iccprofiles-initdir 2011-07-29 10:42:52.000000000 +0100
+++ ghostscript-9.04rc1/psi/zusparam.c 2011-08-01 12:32:41.203228412 +0100
@@ -605,6 +605,8 @@ set_default_gray_icc(i_ctx_t *i_ctx_p, g
return code;
}
@ -10,26 +10,27 @@ diff -up ghostscript-9.01/psi/zusparam.c.iccprofiles-initdir ghostscript-9.01/ps
static void
current_icc_directory(i_ctx_t *i_ctx_p, gs_param_string * pval)
{
static const char *const rfs = DEFAULT_DIR_ICC; /* as good as any other */
const gs_imager_state * pis = (gs_imager_state *) igs;
+ int have_rom_device = 0;
+
+ if (pis->icc_manager->profiledir != NULL)
+ pval->data = (const byte *) pis->icc_manager->profiledir;
+ else {
+ int i;
+ for (i = 0; i < gx_io_device_table_count; i++) {
+ const gx_io_device *iodev = gx_io_device_table[i];
+ const char *dname = iodev->dname;
+
+ if (dname && strlen(dname) == 5 && !memcmp("%rom%", dname, 5)) {
+ have_rom_device = 1;
+ break;
+ }
+ }
@@ -612,8 +614,21 @@ current_icc_directory(i_ctx_t *i_ctx_p,
const gs_lib_ctx_t *lib_ctx = ((gs_imager_state *)igs)->memory->gs_lib_ctx;
+ pval->data = (const byte *) (have_rom_device ? rfs : "");
+ }
pval->data = (const byte *)( (pis->icc_manager->profiledir == NULL) ?
rfs : pis->icc_manager->profiledir);
pval->size = strlen((const char *)pval->data);
if (lib_ctx->profiledir == NULL) {
- pval->data = (const byte *)rfs;
- pval->size = strlen(rfs);
+ int have_rom_device = 0;
+ int i;
+
+ for (i = 0; i < gx_io_device_table_count; i++) {
+ const gx_io_device *iodev = gx_io_device_table[i];
+ const char *dname = iodev->dname;
+
+ if (dname && strlen(dname) == 5 && !memcpy("%rom%", dname, 5)) {
+ have_rom_device = 1;
+ break;
+ }
+ }
+
+ pval->data = (const byte *) (have_rom_device ? rfs : "");
+ pval->size = strlen(pval->data);
} else {
pval->data = (const byte *)(lib_ctx->profiledir);
pval->size = lib_ctx->profiledir_len;

View File

@ -1,12 +0,0 @@
diff -up ghostscript-8.64/base/gxclrast.c.pksmraw ghostscript-8.64/base/gxclrast.c
--- ghostscript-8.64/base/gxclrast.c.pksmraw 2008-12-13 20:05:37.000000000 +0000
+++ ghostscript-8.64/base/gxclrast.c 2009-02-04 11:36:25.000000000 +0000
@@ -2685,8 +2685,6 @@ static int apply_create_compositor(gx_de
rc_increment(tdev);
*ptarget = tdev;
}
- if (code < 0)
- return code;
/* Perform any updates for the clist device required */
code = pcomp->type->procs.clist_compositor_read_update(pcomp,

View File

@ -1,12 +1,12 @@
diff -up ghostscript-9.02/base/gdevpxut.c.pxl-landscape ghostscript-9.02/base/gdevpxut.c
--- ghostscript-9.02/base/gdevpxut.c.pxl-landscape 2011-04-06 16:40:09.266015684 +0100
+++ ghostscript-9.02/base/gdevpxut.c 2011-04-06 16:42:25.134593037 +0100
diff -up ghostscript-9.04rc1/base/gdevpxut.c.pxl-landscape ghostscript-9.04rc1/base/gdevpxut.c
--- ghostscript-9.04rc1/base/gdevpxut.c.pxl-landscape 2011-07-29 10:42:51.000000000 +0100
+++ ghostscript-9.04rc1/base/gdevpxut.c 2011-08-01 12:34:54.201815802 +0100
@@ -115,11 +115,7 @@ px_write_file_header(stream *s, const gx
int
px_write_page_header(stream *s, const gx_device *dev)
{
- static const byte page_header_1[] = {
- DUB(ePortraitOrientation), DA(pxaOrientation)
- DUB(ePortraitOrientation), DA(pxaOrientation)
- };
-
- PX_PUT_LIT(s, page_header_1);
@ -23,17 +23,18 @@ diff -up ghostscript-9.02/base/gdevpxut.c.pxl-landscape ghostscript-9.02/base/gd
/* The default is eDefaultPaperSize (=96), but we'll emit CustomMediaSize */
@@ -156,11 +153,19 @@ px_write_select_media(stream *s, const g
match_found = true;
size = media_sizes[i].ms;
break;
+ } else if (fabs(media_sizes[i].height - w) < 0.05 &&
match_found = true;
size = media_sizes[i].ms;
break;
- }
+ } else if (fabs(media_sizes[i].height - w) < 0.05 &&
+ fabs(media_sizes[i].width - h) < 0.05
+ ) {
+ match_found = true;
+ size = media_sizes[i].ms;
+ orientation = eLandscapeOrientation;
+ break;
}
+ }
/*
* According to the PCL XL documentation, MediaSize/CustomMediaSize must always
* be specified, but MediaSource is optional.

View File

@ -1,6 +1,6 @@
diff -up ghostscript-8.71/Resource/Init/gs_fonts.ps.runlibfileifexists ghostscript-8.71/Resource/Init/gs_fonts.ps
--- ghostscript-8.71/Resource/Init/gs_fonts.ps.runlibfileifexists 2010-09-13 15:00:22.566812041 +0100
+++ ghostscript-8.71/Resource/Init/gs_fonts.ps 2010-09-13 15:03:24.520814577 +0100
diff -up ghostscript-9.04/Resource/Init/gs_fonts.ps.runlibfileifexists ghostscript-9.04/Resource/Init/gs_fonts.ps
--- ghostscript-9.04/Resource/Init/gs_fonts.ps.runlibfileifexists 2011-08-09 17:05:39.736485415 +0100
+++ ghostscript-9.04/Resource/Init/gs_fonts.ps 2011-08-09 17:06:08.615943187 +0100
@@ -96,10 +96,19 @@ userdict /Fontmap .FontDirectory maxleng
% stack: dict file fontname filename|aliasname
1 index type /stringtype eq
@ -24,26 +24,26 @@ diff -up ghostscript-8.71/Resource/Init/gs_fonts.ps.runlibfileifexists ghostscri
} {
% This is a real entry.
% Read and pop tokens until a semicolon.
diff -up ghostscript-8.64/Resource/Init/gs_init.ps.runlibfileifexists ghostscript-8.64/Resource/Init/gs_init.ps
--- ghostscript-8.64/Resource/Init/gs_init.ps.runlibfileifexists 2009-01-08 09:17:18.000000000 +0000
+++ ghostscript-8.64/Resource/Init/gs_init.ps 2009-02-04 11:35:19.000000000 +0000
@@ -672,6 +672,14 @@ systemdict /internaldict dup .makeintern
{ /undefinedfilename signalerror }
ifelse
} bind def
diff -up ghostscript-9.04/Resource/Init/gs_init.ps.runlibfileifexists ghostscript-9.04/Resource/Init/gs_init.ps
--- ghostscript-9.04/Resource/Init/gs_init.ps.runlibfileifexists 2011-08-09 17:05:44.395397937 +0100
+++ ghostscript-9.04/Resource/Init/gs_init.ps 2011-08-09 17:06:15.238818843 +0100
@@ -674,6 +674,14 @@ systemdict /internaldict dup .makeintern
{ /undefinedfilename signalerror }
ifelse
} bind def
+/runlibfileifexists
+ { % We don't want to bind 'run' into this procedure,
+ % since run may get redefined.
+ findlibfile
+ { exch pop /run .systemvar exec }
+ { pop }
+ ifelse
+ } bind def
+ { % We don't want to bind 'run' into this procedure,
+ % since run may get redefined.
+ findlibfile
+ { exch pop /run .systemvar exec }
+ { pop }
+ ifelse
+ } bind def
/selectdevice
{ finddevice setdevice .setdefaultscreen } bind def
{ finddevice setdevice .setdefaultscreen } bind def
/signalerror % <object> <errorname> signalerror -
@@ -840,6 +848,7 @@ userdict /.currentresourcefile //null pu
} bind def
@@ -842,6 +850,7 @@ userdict /.currentresourcefile //null pu
} bind def
% Temporarily substitute it for the real runlibfile.
/.runlibfile /runlibfile load def
+/.runlibfileifexists /runlibfileifexists load def

View File

@ -7,25 +7,4 @@ diff -up ghostscript-9.00/lib/dvipdf.scripts ghostscript-9.00/lib/dvipdf
# appears before other options.
-exec dvips -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
+exec dvips -R -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
diff -up ghostscript-9.00/lib/pv.sh.scripts ghostscript-9.00/lib/pv.sh
--- ghostscript-9.00/lib/pv.sh.scripts 2010-06-03 01:32:07.000000000 +0100
+++ ghostscript-9.00/lib/pv.sh 2010-09-23 09:56:59.512796516 +0100
@@ -31,7 +31,7 @@ fi
GS_EXECUTABLE=gs
TEMPDIR=.
-PAGE=$1
+PAGE="$1"
shift
FILE="$1"
shift
@@ -44,7 +44,7 @@ else
tmpfile="$TEMPDIR/$FILE.$$.pv"
fi
trap "rm -rf $tmpfile" 0 1 2 15
-#dvips -D$RESOLUTION -p $PAGE -n 1 "$FILE" "$@" -o $tmpfile
-dvips -p $PAGE -n 1 "$FILE" "$@" -o $tmpfile
+#dvips -R -D$RESOLUTION -p $PAGE -n 1 "$FILE" "$@" -o $tmpfile
+dvips -R -p $PAGE -n 1 "$FILE" "$@" -o $tmpfile
$GS_EXECUTABLE -P- -dSAFER $tmpfile
exit 0

View File

@ -1,25 +0,0 @@
diff -up ghostscript-9.01/base/gsmisc.c.vsnprintf ghostscript-9.01/base/gsmisc.c
diff -up ghostscript-9.01/base/gxttfb.c.vsnprintf ghostscript-9.01/base/gxttfb.c
--- ghostscript-9.01/base/gxttfb.c.vsnprintf 2011-01-14 18:58:46.000000000 +0000
+++ ghostscript-9.01/base/gxttfb.c 2011-02-10 09:48:01.334990056 +0000
@@ -246,7 +246,7 @@ static int DebugPrint(ttfFont *ttf, cons
if (gs_debug_c('Y')) {
va_start(args, fmt);
- count = vsprintf(buf, fmt, args);
+ count = vsnprintf(buf, sizeof (buf), fmt, args);
/* NB: moved debug output from stdout to stderr
*/
errwrite(ttf->DebugMem, buf, count);
diff -up ghostscript-9.01/base/rinkj/rinkj-byte-stream.c.vsnprintf ghostscript-9.01/base/rinkj/rinkj-byte-stream.c
--- ghostscript-9.01/base/rinkj/rinkj-byte-stream.c.vsnprintf 2008-04-04 02:02:16.000000000 +0100
+++ ghostscript-9.01/base/rinkj/rinkj-byte-stream.c 2011-02-10 09:48:01.338989692 +0000
@@ -43,7 +43,7 @@ rinkj_byte_stream_printf (RinkjByteStrea
va_list ap;
va_start (ap, fmt);
- len = vsprintf (str, fmt, ap);
+ len = vsnprintf (str, sizeof (str), fmt, ap);
va_end (ap);
return rinkj_byte_stream_write (bs, str, len);
}

View File

@ -1,11 +1,11 @@
%define gs_ver 9.02
%define gs_dot_ver 9.02
%define gs_ver 9.04
%define gs_dot_ver 9.04
%{expand: %%define build_with_freetype %{?_with_freetype:1}%{!?_with_freetype:0}}
Summary: A PostScript interpreter and renderer
Name: ghostscript
Version: %{gs_ver}
Release: 5%{?dist}
Release: 1%{?dist}
# Included CMap data is Redistributable, no modification permitted,
# see http://bugzilla.redhat.com/487510
@ -21,16 +21,12 @@ Patch2: ghostscript-scripts.patch
Patch3: ghostscript-noopt.patch
Patch4: ghostscript-ijs-automake-ver.patch
Patch5: ghostscript-runlibfileifexists.patch
Patch6: ghostscript-colord.patch
Patch7: ghostscript-pksmraw.patch
Patch8: ghostscript-jbig2dec-nullderef.patch
Patch10: ghostscript-cups-filters.patch
Patch12: ghostscript-vsnprintf.patch
Patch27: ghostscript-Fontmap.local.patch
Patch28: ghostscript-iccprofiles-initdir.patch
Patch29: ghostscript-gdevcups-debug-uninit.patch
Patch30: ghostscript-pxl-landscape.patch
Patch31: ghostscript-gstoraster-errors.patch
Requires: urw-fonts >= 1.1, ghostscript-fonts
Requires: poppler-data
@ -124,21 +120,12 @@ rm -rf libpng zlib jpeg jasper expat
# Define .runlibfileifexists.
%patch5 -p1
# Prevent segfault when running gstoraster outside CUPS.
%patch6 -p1 -b .colord
# Fix pksmraw output (bug #308211). Still needed in 8.63.
%patch7 -p1 -b .pksmraw
# Applied patch to fix NULL dereference in JBIG2 decoder (bug #501710).
%patch8 -p1 -b .jbig2dec-nullderef
# Install CUPS filter convs files in the correct place.
%patch10 -p1 -b .cups-filters
# Harden ghostscript's debugging output functions (bug #540760).
%patch12 -p1 -b .vsnprintf
# Restored Fontmap.local patch, incorrectly dropped after
# ghostscript-8.15.4-3 (bug #610301).
# Note: don't use -b here to avoid the backup file ending up in the
@ -154,9 +141,6 @@ rm -rf libpng zlib jpeg jasper expat
# pxl: match landscape page sizes (bug #692165).
%patch30 -p1 -b .pxl-landscape
# Fixed error reporting in the gstoraster filter.
%patch31 -p1 -b .gstoraster-errors
# Convert manual pages to UTF-8
from8859_1() {
iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_"
@ -193,6 +177,7 @@ done
autoconf --force
%configure --with-ijs --enable-dynamic --with-fontpath="$FONTPATH" \
--with-drivers=ALL --disable-compile-inits --with-system-libtiff \
--with-install-cups \
CFLAGS="$CFLAGS $EXTRACFLAGS"
# Build IJS
@ -252,10 +237,6 @@ mv $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resource/Init/cidfmap{,.GS}
install -m0644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resource/Init/CIDFnmap
install -m0644 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resource/Init/cidfmap
# Header files.
mkdir -p $RPM_BUILD_ROOT%{_includedir}/ghostscript
install -m0644 base/errors.h $RPM_BUILD_ROOT%{_includedir}/ghostscript
# Documentation
install -m0644 doc/COPYING $RPM_BUILD_ROOT%{_docdir}/%{name}-%{gs_dot_ver}
@ -349,6 +330,9 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libgs.so
%changelog
* Mon Aug 1 2011 Tim Waugh <twaugh@redhat.com> 9.04-1
- 9.04.
* Mon Aug 1 2011 Tim Waugh <twaugh@redhat.com> 9.02-5
- No longer need jbig2-image-refcount patch.
- Fixed error reporting in the gstoraster filter.

View File

@ -1,3 +1,3 @@
2fbae60417d42779f6488ab897dcaaf6 acro5-cmaps-2001.tar.gz
dfc93dd2aaaf2b86d2fd55f654c13261 adobe-cmaps-200406.tar.gz
f67151444bd56a7904579fc75a083dd6 ghostscript-9.02.tar.bz2
9f6899e821ab6d78ab2c856f10fa3023 ghostscript-9.04.tar.bz2