Compare commits
242 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9490e69583 | ||
|
23d38d6e8d | ||
|
59b553b156 | ||
|
c68619eeb3 | ||
|
d61c474922 | ||
|
213d41aedc | ||
|
f9f0f1a8e1 | ||
|
54e47e6634 | ||
|
1deda51edb | ||
|
e32518926c | ||
|
d4326877f7 | ||
|
a70c402edd | ||
|
bc34ffaf5b | ||
|
14bd3ebe38 | ||
|
d24aadea6e | ||
|
92552fba1e | ||
|
f35503ceee | ||
|
3f91350de4 | ||
|
c755f33188 | ||
|
51b02415a0 | ||
|
bf4041ceb4 | ||
|
0c1e7532d2 | ||
|
6526222ba4 | ||
|
5a5e48476c | ||
|
b3e2cfe5e0 | ||
|
56ff80c357 | ||
|
2e84257b37 | ||
|
92a0736e01 | ||
|
4257a957f7 | ||
|
fde4161596 | ||
|
02461c194f | ||
|
33c4fe6c8b | ||
|
9156a8754c | ||
|
4a1dbe16b0 | ||
|
561959feca | ||
|
986d069293 | ||
|
5c333312ef | ||
|
ba097d7d21 | ||
|
130b322cda | ||
|
9c4a7af0ae | ||
|
4ec0ef2948 | ||
|
51650e03ec | ||
|
32b0bc8f49 | ||
|
b41625a6c8 | ||
|
70ad2fc0e1 | ||
|
cc2011b1fc | ||
|
d12a8ce983 | ||
|
23a2c4f876 | ||
|
2c5f5bee43 | ||
|
23f47da015 | ||
|
865c7ebf9b | ||
|
babc847f71 | ||
|
a5134c5ade | ||
|
efdde165b7 | ||
|
e9e47e765b | ||
|
a8817762e8 | ||
|
a737ed8a5c | ||
|
117c32f095 | ||
|
e680683871 | ||
|
1b044baeeb | ||
|
d7e1d637e5 | ||
|
4a93f4fa87 | ||
|
7f19d06c8e | ||
|
1491db8937 | ||
|
2cf5f5aea9 | ||
|
a1afccab2e | ||
|
263db7bc48 | ||
|
30670513ba | ||
|
59db7de965 | ||
|
2656f78197 | ||
|
d847a511f6 | ||
|
01bff26309 | ||
|
972caf59ac | ||
|
15621b2b5a | ||
|
fd5bf36ff0 | ||
|
3016e15a0a | ||
|
a82e34fd34 | ||
|
0bb2e4c55a | ||
|
6df2cffe50 | ||
|
b76f8755c2 | ||
|
12d81d66b1 | ||
|
b62d20303f | ||
|
d22b996f9e | ||
|
85995c54ff | ||
|
41ce9923c6 | ||
|
47b08ccdb4 | ||
|
f8f891f65a | ||
|
8a86623f3f | ||
|
7e0d0560ab | ||
|
75f99711b7 | ||
|
b0a02a722b | ||
|
9f0b67fe7c | ||
|
3116a3c29a | ||
|
3f2c793a48 | ||
|
733f9f4f59 | ||
|
d6a8216e11 | ||
|
6fd98b0a31 | ||
|
6a01a7c271 | ||
|
1762de5bb7 | ||
|
05c0279c51 | ||
|
22dff3b597 | ||
|
dd8785b474 | ||
|
84e3fdeb18 | ||
|
0e32b81991 | ||
|
70fe506577 | ||
|
1fa2af9aa9 | ||
|
2cf528ec0f | ||
|
d121f06743 | ||
|
d05124d3e5 | ||
|
08d24bfef6 | ||
|
2050c98074 | ||
|
89ab42c26f | ||
|
3e4c6fe3b7 | ||
|
f08a51a880 | ||
|
58606b2428 | ||
|
a671dd4185 | ||
|
89d528c749 | ||
|
c09a9fe907 | ||
|
8d8748a20b | ||
|
f96f06c143 | ||
|
1b697da225 | ||
|
ff17cad90e | ||
|
bd2db7c620 | ||
|
6ab0d7dace | ||
|
fc314e5732 | ||
|
1555141555 | ||
|
0c939a784d | ||
|
06f2d18d9f | ||
|
5c25057eb1 | ||
|
da5847e794 | ||
|
f7888265f7 | ||
|
36419052f9 | ||
|
20e71695f9 | ||
|
b5ff478a7d | ||
|
09a3e2a37b | ||
|
f2d513ae8b | ||
|
b524225de7 | ||
|
ff495ba08e | ||
|
9446583888 | ||
|
043d60f302 | ||
|
b7c1eb3c1e | ||
|
07ece8cc04 | ||
|
d2691e1748 | ||
|
9adfd97848 | ||
|
3259141cf0 | ||
|
d7fa87e26a | ||
|
3da9d92cb8 | ||
|
2265fe0750 | ||
|
ee8eec74b1 | ||
|
566900fdec | ||
|
bb877a03dc | ||
|
baa88bc29f | ||
|
aaa2f40d15 | ||
|
42590c5c21 | ||
|
6e08ee84ce | ||
|
f21c6e9eb1 | ||
|
d2ff86e758 | ||
|
b8ce1a7b91 | ||
|
89e8e44b4d | ||
|
78127402c2 | ||
|
26861b1b4f | ||
|
93c8b75925 | ||
|
f8f327274e | ||
|
a68fa66733 | ||
|
1d190d27f5 | ||
|
8fb25e0ad2 | ||
|
da3a5d39ba | ||
|
e1f8bc1189 | ||
|
389a5d8f2d | ||
|
48b7127ce2 | ||
|
20d7c68a42 | ||
|
447cd5b79f | ||
|
12518b6b76 | ||
|
245be3029b | ||
|
05c310554c | ||
|
65276dde90 | ||
|
7cc772ff32 | ||
|
407204b668 | ||
|
66c3749723 | ||
|
6c921dfc73 | ||
|
45109fe931 | ||
|
47113264a3 | ||
|
06055cd6f7 | ||
|
ef16ab3992 | ||
|
20bfe6e080 | ||
|
57f3798439 | ||
|
970da03f19 | ||
|
74e57dbfa3 | ||
|
a4a834a987 | ||
|
2ac9b5fd68 | ||
|
0a08c4e277 | ||
|
c14c331cad | ||
|
0dfb5c0456 | ||
|
b2727e93a1 | ||
|
faa929d18b | ||
|
c0ac82aa41 | ||
|
8e258de719 | ||
|
a1de13651f | ||
|
41ce6ddc0a | ||
|
244cfbf7d1 | ||
|
8590f53889 | ||
|
9693b90353 | ||
|
d177acaf0f | ||
|
cdd169a7b6 | ||
|
acf8e9f01e | ||
|
6d266b1e63 | ||
|
1d8d9b49a6 | ||
|
310a76fc37 | ||
|
923b7d4a06 | ||
|
0057c84fd1 | ||
|
55e8fbca58 | ||
|
bda1546e93 | ||
|
b7ad57d64e | ||
|
1c8db13590 | ||
|
a309054d1b | ||
|
b0b63e57dc | ||
|
1c615e73d9 | ||
|
e82d38730b | ||
|
acc3e0ee06 | ||
|
d4867991c3 | ||
|
26d7b7a3d0 | ||
|
f17ffe4c87 | ||
|
d6f6040e9f | ||
|
407e0cf741 | ||
|
aa4475c8c7 | ||
|
55552e4126 | ||
|
d6620b3695 | ||
|
495e977fdd | ||
|
28df9c5785 | ||
|
4deb15317f | ||
|
e7b0486879 | ||
|
af6faed769 | ||
|
c259c84e9e | ||
|
31aefac56c | ||
|
5357184847 | ||
|
f6e2595ab3 | ||
|
181cea6580 | ||
|
cd9372848f | ||
|
4cf804b4e9 | ||
|
4581572020 | ||
|
084d933387 | ||
|
9ba9caf316 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -24,4 +24,5 @@ ghostscript-8.61.tar.bz2
|
|||||||
ghostscript-8.62.tar.bz2
|
ghostscript-8.62.tar.bz2
|
||||||
ghostscript-8.63.tar.bz2
|
ghostscript-8.63.tar.bz2
|
||||||
ghostscript-8.64.tar.bz2
|
ghostscript-8.64.tar.bz2
|
||||||
ghostscript-8.70.tar.bz2
|
ghostscript-8.70.tar.xz
|
||||||
|
ghostscript-8.71.tar.xz
|
||||||
|
1414
ghostscript--P-.patch
Normal file
1414
ghostscript--P-.patch
Normal file
File diff suppressed because it is too large
Load Diff
17
ghostscript-CVE-2009-4270.patch
Normal file
17
ghostscript-CVE-2009-4270.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff -up ghostscript-8.70/cups/gdevcups.c.gdevcups-debug ghostscript-8.70/cups/gdevcups.c
|
||||||
|
--- ghostscript-8.70/cups/gdevcups.c.gdevcups-debug 2009-05-20 23:30:48.000000000 +0100
|
||||||
|
+++ ghostscript-8.70/cups/gdevcups.c 2009-11-24 17:16:11.929250977 +0000
|
||||||
|
@@ -2816,11 +2816,11 @@ cups_put_params(gx_device *pdev, /*
|
||||||
|
} \
|
||||||
|
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'; \
|
||||||
|
+ dprintf2("DEBUG: Setting %s to \"%s\"...\n", sname, \
|
||||||
|
+ cups->header.name); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define intoption(name, sname, type) \
|
124
ghostscript-CVE-2010-1628.patch
Normal file
124
ghostscript-CVE-2010-1628.patch
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
diff -up ghostscript-8.70/psi/ialloc.c.CVE-2010-1628 ghostscript-8.70/psi/ialloc.c
|
||||||
|
--- ghostscript-8.70/psi/ialloc.c.CVE-2010-1628 2008-08-28 23:48:19.000000000 +0100
|
||||||
|
+++ ghostscript-8.70/psi/ialloc.c 2010-07-16 12:15:45.230948203 +0100
|
||||||
|
@@ -185,7 +185,14 @@ gs_alloc_ref_array(gs_ref_memory_t * mem
|
||||||
|
*/
|
||||||
|
chunk_t *pcc = mem->pcc;
|
||||||
|
ref *end;
|
||||||
|
+ alloc_change_t *cp = 0;
|
||||||
|
+ int code = 0;
|
||||||
|
|
||||||
|
+ if ((gs_memory_t *)mem != mem->stable_memory) {
|
||||||
|
+ code = alloc_save_change_alloc(mem, "gs_alloc_ref_array", &cp);
|
||||||
|
+ if (code < 0)
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
obj = gs_alloc_struct_array((gs_memory_t *) mem, num_refs + 1,
|
||||||
|
ref, &st_refs, cname);
|
||||||
|
if (obj == 0)
|
||||||
|
@@ -210,14 +217,10 @@ gs_alloc_ref_array(gs_ref_memory_t * mem
|
||||||
|
chunk_locate_ptr(obj, &cl);
|
||||||
|
cl.cp->has_refs = true;
|
||||||
|
}
|
||||||
|
- if ((gs_memory_t *)mem != mem->stable_memory) {
|
||||||
|
- ref_packed **ppr = 0;
|
||||||
|
- int code = alloc_save_change_alloc(mem, "gs_alloc_ref_array", &ppr);
|
||||||
|
- if (code < 0)
|
||||||
|
- return code;
|
||||||
|
- if (ppr)
|
||||||
|
- *ppr = (ref_packed *)obj;
|
||||||
|
- }
|
||||||
|
+ if (cp) {
|
||||||
|
+ mem->changes = cp;
|
||||||
|
+ cp->where = (ref_packed *)obj;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
make_array(parr, attrs | mem->space, num_refs, obj);
|
||||||
|
return 0;
|
||||||
|
diff -up ghostscript-8.70/psi/idosave.h.CVE-2010-1628 ghostscript-8.70/psi/idosave.h
|
||||||
|
--- ghostscript-8.70/psi/idosave.h.CVE-2010-1628 2008-08-28 23:48:19.000000000 +0100
|
||||||
|
+++ ghostscript-8.70/psi/idosave.h 2010-07-16 12:15:45.238073609 +0100
|
||||||
|
@@ -18,6 +18,22 @@
|
||||||
|
# define idosave_INCLUDED
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * Structure for saved change chain for save/restore. Because of the
|
||||||
|
+ * garbage collector, we need to distinguish the cases where the change
|
||||||
|
+ * is in a static object, a dynamic ref, or a dynamic struct.
|
||||||
|
+ */
|
||||||
|
+typedef struct alloc_change_s alloc_change_t;
|
||||||
|
+struct alloc_change_s {
|
||||||
|
+ alloc_change_t *next;
|
||||||
|
+ ref_packed *where;
|
||||||
|
+ ref contents;
|
||||||
|
+#define AC_OFFSET_STATIC (-2) /* static object */
|
||||||
|
+#define AC_OFFSET_REF (-1) /* dynamic ref */
|
||||||
|
+#define AC_OFFSET_ALLOCATED (-3) /* a newly allocated ref array */
|
||||||
|
+ short offset; /* if >= 0, offset within struct */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* Save a change that must be undone by restore. We have to pass the
|
||||||
|
* pointer to the containing object to alloc_save_change for two reasons:
|
||||||
|
*
|
||||||
|
@@ -29,6 +45,7 @@
|
||||||
|
* relocate the pointer to it from the change record during garbage
|
||||||
|
* collection.
|
||||||
|
*/
|
||||||
|
+
|
||||||
|
int alloc_save_change(gs_dual_memory_t *dmem, const ref *pcont,
|
||||||
|
ref_packed *ptr, client_name_t cname);
|
||||||
|
int alloc_save_change_in(gs_ref_memory_t *mem, const ref *pcont,
|
||||||
|
@@ -36,6 +53,6 @@ int alloc_save_change_in(gs_ref_memory_t
|
||||||
|
/* Remove an AC_OFFSET_ALLOCATED element. */
|
||||||
|
void alloc_save_remove(gs_ref_memory_t *mem, ref_packed *obj, client_name_t cname);
|
||||||
|
/* Allocate a structure for recording an allocation event. */
|
||||||
|
-int alloc_save_change_alloc(gs_ref_memory_t *mem, client_name_t cname, ref_packed ***ppr);
|
||||||
|
+int alloc_save_change_alloc(gs_ref_memory_t *mem, client_name_t cname, alloc_change_t **pcp);
|
||||||
|
|
||||||
|
#endif /* idosave_INCLUDED */
|
||||||
|
diff -up ghostscript-8.70/psi/isave.c.CVE-2010-1628 ghostscript-8.70/psi/isave.c
|
||||||
|
--- ghostscript-8.70/psi/isave.c.CVE-2010-1628 2008-08-28 23:48:19.000000000 +0100
|
||||||
|
+++ ghostscript-8.70/psi/isave.c 2010-07-16 12:15:45.245073557 +0100
|
||||||
|
@@ -156,22 +156,6 @@ print_save(const char *str, uint spacen,
|
||||||
|
/* A link to igcref.c . */
|
||||||
|
ptr_proc_reloc(igc_reloc_ref_ptr_nocheck, ref_packed);
|
||||||
|
|
||||||
|
-/*
|
||||||
|
- * Structure for saved change chain for save/restore. Because of the
|
||||||
|
- * garbage collector, we need to distinguish the cases where the change
|
||||||
|
- * is in a static object, a dynamic ref, or a dynamic struct.
|
||||||
|
- */
|
||||||
|
-typedef struct alloc_change_s alloc_change_t;
|
||||||
|
-struct alloc_change_s {
|
||||||
|
- alloc_change_t *next;
|
||||||
|
- ref_packed *where;
|
||||||
|
- ref contents;
|
||||||
|
-#define AC_OFFSET_STATIC (-2) /* static object */
|
||||||
|
-#define AC_OFFSET_REF (-1) /* dynamic ref */
|
||||||
|
-#define AC_OFFSET_ALLOCATED (-3) /* a newly allocated ref array */
|
||||||
|
- short offset; /* if >= 0, offset within struct */
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
static
|
||||||
|
CLEAR_MARKS_PROC(change_clear_marks)
|
||||||
|
{
|
||||||
|
@@ -519,7 +503,7 @@ alloc_save_change(gs_dual_memory_t * dme
|
||||||
|
|
||||||
|
/* Allocate a structure for recording an allocation event. */
|
||||||
|
int
|
||||||
|
-alloc_save_change_alloc(gs_ref_memory_t *mem, client_name_t cname, ref_packed ***ppr)
|
||||||
|
+alloc_save_change_alloc(gs_ref_memory_t *mem, client_name_t cname, alloc_change_t **pcp)
|
||||||
|
{
|
||||||
|
register alloc_change_t *cp;
|
||||||
|
|
||||||
|
@@ -533,8 +517,7 @@ alloc_save_change_alloc(gs_ref_memory_t
|
||||||
|
cp->where = 0;
|
||||||
|
cp->offset = AC_OFFSET_ALLOCATED;
|
||||||
|
make_null(&cp->contents);
|
||||||
|
- mem->changes = cp;
|
||||||
|
- *ppr = &cp->where;
|
||||||
|
+ *pcp = cp;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
9
ghostscript-Fontmap.local.patch
Normal file
9
ghostscript-Fontmap.local.patch
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
diff -up ghostscript-8.71/Resource/Init/Fontmap.Fontmap.local ghostscript-8.71/Resource/Init/Fontmap
|
||||||
|
--- ghostscript-8.71/Resource/Init/Fontmap.Fontmap.local 2008-08-08 05:22:38.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/Resource/Init/Fontmap 2010-09-03 11:53:47.273865979 +0100
|
||||||
|
@@ -2,3 +2,5 @@
|
||||||
|
% See Fontmap.GS for the syntax of real Fontmap files.
|
||||||
|
%% Replace 1 (Fontmap.GS)
|
||||||
|
(Fontmap.GS) .runlibfile
|
||||||
|
+% must be at the bottom of line to allow people overriding everything.
|
||||||
|
+(Fontmap.local) .runlibfileifexists
|
704
ghostscript-SEARCH_HERE_FIRST.patch
Normal file
704
ghostscript-SEARCH_HERE_FIRST.patch
Normal file
@ -0,0 +1,704 @@
|
|||||||
|
diff -up ghostscript-8.71/base/bcwin32.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/bcwin32.mak
|
||||||
|
--- ghostscript-8.71/base/bcwin32.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/bcwin32.mak 2011-02-01 11:47:56.202759760 +0000
|
||||||
|
@@ -78,13 +78,10 @@ GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
!ifndef SEARCH_HERE_FIRST
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
diff -up ghostscript-8.71/base/macos-mcp.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/macos-mcp.mak
|
||||||
|
--- ghostscript-8.71/base/macos-mcp.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/macos-mcp.mak 2011-02-01 11:47:56.203759868 +0000
|
||||||
|
@@ -53,12 +53,9 @@ GS_DOCDIR=:doc
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/macosx.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/macosx.mak
|
||||||
|
--- ghostscript-8.71/base/macosx.mak.SEARCH_HERE_FIRST 2008-10-02 20:33:22.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/base/macosx.mak 2011-02-01 11:47:56.204759975 +0000
|
||||||
|
@@ -78,12 +78,9 @@ GS_LIB_DEFAULT=$(gsdatadir)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/Makefile.in.SEARCH_HERE_FIRST ghostscript-8.71/base/Makefile.in
|
||||||
|
--- ghostscript-8.71/base/Makefile.in.SEARCH_HERE_FIRST 2009-12-18 07:04:10.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/Makefile.in 2011-02-01 11:47:56.209760511 +0000
|
||||||
|
@@ -96,12 +96,9 @@ GS_CACHE_DIR="~/.ghostscript/cache/"
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/msvclib.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/msvclib.mak
|
||||||
|
--- ghostscript-8.71/base/msvclib.mak.SEARCH_HERE_FIRST 2010-01-07 10:53:36.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/msvclib.mak 2011-02-01 11:47:56.210760618 +0000
|
||||||
|
@@ -49,13 +49,10 @@ GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
!ifndef SEARCH_HERE_FIRST
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
diff -up ghostscript-8.71/base/openvms.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/openvms.mak
|
||||||
|
--- ghostscript-8.71/base/openvms.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/openvms.mak 2011-02-01 11:47:56.211760726 +0000
|
||||||
|
@@ -68,12 +68,9 @@ GS_LIB_DEFAULT=GS_ROOT:[RESOURCE.INIT],G
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/openvms.mmk.SEARCH_HERE_FIRST ghostscript-8.71/base/openvms.mmk
|
||||||
|
--- ghostscript-8.71/base/openvms.mmk.SEARCH_HERE_FIRST 2009-01-08 09:17:18.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/openvms.mmk 2011-02-01 11:47:56.213760940 +0000
|
||||||
|
@@ -73,12 +73,9 @@ GS_LIB_DEFAULT=GS_LIB
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/ugcclib.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/ugcclib.mak
|
||||||
|
--- ghostscript-8.71/base/ugcclib.mak.SEARCH_HERE_FIRST 2008-11-05 20:41:22.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/ugcclib.mak 2011-02-01 11:47:56.214761048 +0000
|
||||||
|
@@ -30,7 +30,7 @@ gsdir = /usr/local/share/ghostscript
|
||||||
|
gsdatadir = $(gsdir)/$(GS_DOT_VERSION)
|
||||||
|
GS_DOCDIR=$(gsdatadir)/doc
|
||||||
|
GS_LIB_DEFAULT=$(gsdatadir)/Resource/Init:$(gsdatadir)/lib:$(gsdatadir)/Resource/Font
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
GS_INIT=gs_init.ps
|
||||||
|
|
||||||
|
#GENOPT=-DDEBUG
|
||||||
|
diff -up ghostscript-8.71/base/unixansi.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/unixansi.mak
|
||||||
|
--- ghostscript-8.71/base/unixansi.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/unixansi.mak 2011-02-01 11:47:56.215761155 +0000
|
||||||
|
@@ -73,12 +73,9 @@ GS_LIB_DEFAULT=$(gsdatadir)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/unix-gcc.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/unix-gcc.mak
|
||||||
|
--- ghostscript-8.71/base/unix-gcc.mak.SEARCH_HERE_FIRST 2009-11-11 15:50:28.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/unix-gcc.mak 2011-02-01 11:47:56.216761262 +0000
|
||||||
|
@@ -77,12 +77,9 @@ GS_LIB_DEFAULT=$(gsdatadir)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/base/watclib.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/watclib.mak
|
||||||
|
--- ghostscript-8.71/base/watclib.mak.SEARCH_HERE_FIRST 2009-01-08 09:17:18.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/watclib.mak 2011-02-01 11:47:56.217761369 +0000
|
||||||
|
@@ -20,7 +20,7 @@ AROOTDIR=c:/gs
|
||||||
|
GSROOTDIR=$(AROOTDIR)/gs$(GS_DOT_VERSION)
|
||||||
|
GS_DOCDIR=$(GSROOTDIR)/doc
|
||||||
|
GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Init\;$(GSROOTDIR)/lib\;$(GSROOTDIR)/Resource/Font\;$(AROOTDIR)/fonts
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
GS_INIT=gs_init.ps
|
||||||
|
|
||||||
|
!ifndef DEBUG
|
||||||
|
diff -up ghostscript-8.71/base/watcw32.mak.SEARCH_HERE_FIRST ghostscript-8.71/base/watcw32.mak
|
||||||
|
--- ghostscript-8.71/base/watcw32.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/watcw32.mak 2011-02-01 11:47:56.218761477 +0000
|
||||||
|
@@ -54,11 +54,8 @@ GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Ini
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/doc/Use.htm.SEARCH_HERE_FIRST ghostscript-8.71/doc/Use.htm
|
||||||
|
--- ghostscript-8.71/doc/Use.htm.SEARCH_HERE_FIRST 2010-02-10 18:17:48.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/doc/Use.htm 2011-02-01 11:47:56.222761906 +0000
|
||||||
|
@@ -823,8 +823,8 @@ file name specifies an absolute path.
|
||||||
|
using the name given. Otherwise it tries directories in this order:
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
-<li>The current directory (unless disabled by the
|
||||||
|
-<a href="#P-_switch"><code>-P-</code> switch</a>);
|
||||||
|
+<li>The current directory if enabled by the
|
||||||
|
+<a href="#P-_switch"><code>-P</code> switch</a>;
|
||||||
|
|
||||||
|
<li>The directories specified by <a href="#I_switch"><code>-I</code>
|
||||||
|
switches</a> in the command line, if any;
|
||||||
|
@@ -847,13 +847,10 @@ into the executable ;
|
||||||
|
directory or a list of directories separated by a character appropriate for
|
||||||
|
the operating system ("<code>:</code>" on Unix systems,
|
||||||
|
"<code>,</code>" on VMS systems, and
|
||||||
|
-"<code>;</code>" on MS Windows systems). We think that trying
|
||||||
|
-the current directory first is a very bad idea -- it opens serious security
|
||||||
|
-loopholes and can lead to very confusing errors if one has more than one
|
||||||
|
-version of Ghostscript in one's environment -- but when we attempted to
|
||||||
|
-change it, users insisted that we change it back. You can disable looking
|
||||||
|
-in the current directory first by using the
|
||||||
|
-<a href="#P_switch"><code>-P-</code> switch</a>.
|
||||||
|
+"<code>;</code>" on MS Windows systems).
|
||||||
|
+By default, Ghostscript no longer searches the current directory first
|
||||||
|
+but provides <a href="#P_switch"><code>-P</code> switch</a> for a degree
|
||||||
|
+of backward compatibility.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Note that Ghostscript does not use this file searching algorithm for the
|
||||||
|
@@ -2061,14 +2058,14 @@ for library files.
|
||||||
|
<dl>
|
||||||
|
<dt><a name="P_switch"></a><code>-P</code>
|
||||||
|
<dd>Makes Ghostscript look first in the current directory for library
|
||||||
|
-files. This is currently the default.
|
||||||
|
+files.
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><a name="P-_switch"></a><code>-P-</code>
|
||||||
|
<dd>Makes Ghostscript <b><em>not</em></b> look first in the current
|
||||||
|
directory for library files (unless, of course, the first explicitly
|
||||||
|
-supplied directory is "<code>.</code>").
|
||||||
|
+supplied directory is "<code>.</code>"). This is now the default.
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<h4><a name="Parameters"></a>Setting parameters</h4>
|
||||||
|
diff -up ghostscript-8.71/man/gs.1.SEARCH_HERE_FIRST ghostscript-8.71/man/gs.1
|
||||||
|
--- ghostscript-8.71/man/gs.1.SEARCH_HERE_FIRST 2010-02-10 18:17:48.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/man/gs.1 2011-02-01 11:47:56.229762657 +0000
|
||||||
|
@@ -208,6 +208,12 @@ whereas \fB\-sname=35\fR is equivalent t
|
||||||
|
.br
|
||||||
|
/name (35) def
|
||||||
|
.TP
|
||||||
|
+.B \-P
|
||||||
|
+Makes Ghostscript to look first in the current directory for library files.
|
||||||
|
+By default, Ghostscript no longer looks in the current directory,
|
||||||
|
+unless, of course, the first explicitly supplied directory is "." in \fB-I\fR.
|
||||||
|
+See also the \fBINITIALIZATION FILES\fR section below, and bundled
|
||||||
|
+\fBUse.htm\fR for detailed discussion on search paths and how Ghostcript finds files.
|
||||||
|
.B \-q
|
||||||
|
Quiet startup: suppress normal startup messages, and also do the
|
||||||
|
equivalent of \fB\-dQUIET\fR.
|
||||||
|
diff -up ghostscript-8.71/psi/msvc32.mak.SEARCH_HERE_FIRST ghostscript-8.71/psi/msvc32.mak
|
||||||
|
--- ghostscript-8.71/psi/msvc32.mak.SEARCH_HERE_FIRST 2010-02-02 18:14:37.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/psi/msvc32.mak 2011-02-01 11:47:56.230762764 +0000
|
||||||
|
@@ -100,13 +100,10 @@ GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
!ifndef SEARCH_HERE_FIRST
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
!endif
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
diff -up ghostscript-8.71/psi/os2.mak.SEARCH_HERE_FIRST ghostscript-8.71/psi/os2.mak
|
||||||
|
--- ghostscript-8.71/psi/os2.mak.SEARCH_HERE_FIRST 2009-11-05 22:24:30.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/psi/os2.mak 2011-02-01 11:47:56.232762979 +0000
|
||||||
|
@@ -54,12 +54,9 @@ GS_LIB_DEFAULT=$(GSROOTDIR)/Resource/Ini
|
||||||
|
|
||||||
|
# Define whether or not searching for initialization files should always
|
||||||
|
# look in the current directory first. This leads to well-known security
|
||||||
|
-# and confusion problems, but users insist on it.
|
||||||
|
-# NOTE: this also affects searching for files named on the command line:
|
||||||
|
-# see the "File searching" section of Use.htm for full details.
|
||||||
|
-# Because of this, setting SEARCH_HERE_FIRST to 0 is not recommended.
|
||||||
|
+# and confusion problems, but may be convenient sometimes.
|
||||||
|
|
||||||
|
-SEARCH_HERE_FIRST=1
|
||||||
|
+SEARCH_HERE_FIRST=0
|
||||||
|
|
||||||
|
# Define the name of the interpreter initialization file.
|
||||||
|
# (There is no reason to change this.)
|
||||||
|
diff -up ghostscript-8.71/psi/zfile.c.SEARCH_HERE_FIRST ghostscript-8.71/psi/zfile.c
|
||||||
|
--- ghostscript-8.71/psi/zfile.c.SEARCH_HERE_FIRST 2009-10-04 13:42:07.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/psi/zfile.c 2011-02-01 11:47:56.234763193 +0000
|
||||||
|
@@ -486,8 +486,13 @@ zstatus(i_ctx_t *i_ctx_p)
|
||||||
|
struct stat fstat;
|
||||||
|
int code = parse_file_name(op, &pname, i_ctx_p->LockFilePermissions);
|
||||||
|
|
||||||
|
- if (code < 0)
|
||||||
|
+ if (code < 0) {
|
||||||
|
+ if (code == e_undefinedfilename) {
|
||||||
|
+ make_bool(op, 0);
|
||||||
|
+ code = 0;
|
||||||
|
+ }
|
||||||
|
return code;
|
||||||
|
+ }
|
||||||
|
code = gs_terminate_file_name(&pname, imemory, "status");
|
||||||
|
if (code < 0)
|
||||||
|
return code;
|
||||||
|
@@ -903,6 +908,91 @@ check_file_permissions_aux(i_ctx_t *i_ct
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/* return zero for success, -ve for error, +1 for continue */
|
||||||
|
+static int
|
||||||
|
+lib_file_open_search_with_no_combine(gs_file_path_ptr lib_path, const gs_memory_t *mem, i_ctx_t *i_ctx_p,
|
||||||
|
+ const char *fname, uint flen, char *buffer, int blen, uint *pclen, ref *pfile,
|
||||||
|
+ gx_io_device *iodev, bool starting_arg_file, char *fmode)
|
||||||
|
+{
|
||||||
|
+ stream *s;
|
||||||
|
+ uint blen1 = blen;
|
||||||
|
+ if (gp_file_name_reduce(fname, flen, buffer, &blen1) != gp_combine_success)
|
||||||
|
+ goto skip;
|
||||||
|
+ if (iodev_os_open_file(iodev, (const char *)buffer, blen1,
|
||||||
|
+ (const char *)fmode, &s, (gs_memory_t *)mem) == 0) {
|
||||||
|
+ if (starting_arg_file ||
|
||||||
|
+ check_file_permissions_aux(i_ctx_p, buffer, blen1) >= 0) {
|
||||||
|
+ *pclen = blen1;
|
||||||
|
+ make_stream_file(pfile, s, "r");
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ sclose(s);
|
||||||
|
+ return_error(e_invalidfileaccess);
|
||||||
|
+ }
|
||||||
|
+ skip:;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* return zero for success, -ve for error, +1 for continue */
|
||||||
|
+static int
|
||||||
|
+lib_file_open_search_with_combine(gs_file_path_ptr lib_path, const gs_memory_t *mem, i_ctx_t *i_ctx_p,
|
||||||
|
+ const char *fname, uint flen, char *buffer, int blen, uint *pclen, ref *pfile,
|
||||||
|
+ gx_io_device *iodev, bool starting_arg_file, char *fmode)
|
||||||
|
+{
|
||||||
|
+ stream *s;
|
||||||
|
+ const gs_file_path *pfpath = lib_path;
|
||||||
|
+ uint pi;
|
||||||
|
+
|
||||||
|
+ for (pi = 0; pi < r_size(&pfpath->list); ++pi) {
|
||||||
|
+ const ref *prdir = pfpath->list.value.refs + pi;
|
||||||
|
+ const char *pstr = (const char *)prdir->value.const_bytes;
|
||||||
|
+ uint plen = r_size(prdir), blen1 = blen;
|
||||||
|
+ gs_parsed_file_name_t pname;
|
||||||
|
+ gp_file_name_combine_result r;
|
||||||
|
+
|
||||||
|
+ /* We need to concatenate and parse the file name here
|
||||||
|
+ * if this path has a %device% prefix. */
|
||||||
|
+ if (pstr[0] == '%') {
|
||||||
|
+ int code;
|
||||||
|
+
|
||||||
|
+ /* We concatenate directly since gp_file_name_combine_*
|
||||||
|
+ * rules are not correct for other devices such as %rom% */
|
||||||
|
+ code = gs_parse_file_name(&pname, pstr, plen);
|
||||||
|
+ if (code < 0)
|
||||||
|
+ continue;
|
||||||
|
+ memcpy(buffer, pname.fname, pname.len);
|
||||||
|
+ memcpy(buffer+pname.len, fname, flen);
|
||||||
|
+ code = pname.iodev->procs.open_file(pname.iodev, buffer, pname.len + flen, fmode,
|
||||||
|
+ &s, (gs_memory_t *)mem);
|
||||||
|
+ if (code < 0)
|
||||||
|
+ continue;
|
||||||
|
+ make_stream_file(pfile, s, "r");
|
||||||
|
+ /* fill in the buffer with the device concatenated */
|
||||||
|
+ memcpy(buffer, pstr, plen);
|
||||||
|
+ memcpy(buffer+plen, fname, flen);
|
||||||
|
+ *pclen = plen + flen;
|
||||||
|
+ return 0;
|
||||||
|
+ } else {
|
||||||
|
+ r = gp_file_name_combine(pstr, plen,
|
||||||
|
+ fname, flen, false, buffer, &blen1);
|
||||||
|
+ if (r != gp_combine_success)
|
||||||
|
+ continue;
|
||||||
|
+ if (iodev_os_open_file(iodev, (const char *)buffer, blen1, (const char *)fmode,
|
||||||
|
+ &s, (gs_memory_t *)mem) == 0) {
|
||||||
|
+ if (starting_arg_file ||
|
||||||
|
+ check_file_permissions_aux(i_ctx_p, buffer, blen1) >= 0) {
|
||||||
|
+ *pclen = blen1;
|
||||||
|
+ make_stream_file(pfile, s, "r");
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ sclose(s);
|
||||||
|
+ return_error(e_invalidfileaccess);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Return a file object of of the file searched for using the search paths. */
|
||||||
|
/* The fname cannot contain a device part (%...%) but the lib paths might. */
|
||||||
|
/* The startup code calls this to open the initialization file gs_init.ps. */
|
||||||
|
@@ -917,8 +1007,9 @@ lib_file_open(gs_file_path_ptr lib_path
|
||||||
|
bool search_with_no_combine = false;
|
||||||
|
bool search_with_combine = false;
|
||||||
|
char fmode[4] = { 'r', 0, 0, 0 }; /* room for binary suffix */
|
||||||
|
- stream *s;
|
||||||
|
gx_io_device *iodev = iodev_default;
|
||||||
|
+ gs_main_instance *minst = get_minst_from_memory(mem);
|
||||||
|
+ int code;
|
||||||
|
|
||||||
|
/* when starting arg files (@ files) iodev_default is not yet set */
|
||||||
|
if (iodev == 0)
|
||||||
|
@@ -932,75 +1023,36 @@ lib_file_open(gs_file_path_ptr lib_path
|
||||||
|
search_with_no_combine = starting_arg_file;
|
||||||
|
search_with_combine = true;
|
||||||
|
}
|
||||||
|
- if (search_with_no_combine) {
|
||||||
|
- uint blen1 = blen;
|
||||||
|
-
|
||||||
|
- if (gp_file_name_reduce(fname, flen, buffer, &blen1) != gp_combine_success)
|
||||||
|
- goto skip;
|
||||||
|
- if (iodev_os_open_file(iodev, (const char *)buffer, blen1,
|
||||||
|
- (const char *)fmode, &s, (gs_memory_t *)mem) == 0) {
|
||||||
|
- if (starting_arg_file ||
|
||||||
|
- check_file_permissions_aux(i_ctx_p, buffer, blen1) >= 0) {
|
||||||
|
- *pclen = blen1;
|
||||||
|
- make_stream_file(pfile, s, "r");
|
||||||
|
- return 0;
|
||||||
|
- }
|
||||||
|
- sclose(s);
|
||||||
|
- return_error(e_invalidfileaccess);
|
||||||
|
- }
|
||||||
|
- skip:;
|
||||||
|
- }
|
||||||
|
- if (search_with_combine) {
|
||||||
|
- const gs_file_path *pfpath = lib_path;
|
||||||
|
- uint pi;
|
||||||
|
-
|
||||||
|
- for (pi = 0; pi < r_size(&pfpath->list); ++pi) {
|
||||||
|
- const ref *prdir = pfpath->list.value.refs + pi;
|
||||||
|
- const char *pstr = (const char *)prdir->value.const_bytes;
|
||||||
|
- uint plen = r_size(prdir), blen1 = blen;
|
||||||
|
- gs_parsed_file_name_t pname;
|
||||||
|
- gp_file_name_combine_result r;
|
||||||
|
-
|
||||||
|
- /* We need to concatenate and parse the file name here
|
||||||
|
- * if this path has a %device% prefix. */
|
||||||
|
- if (pstr[0] == '%') {
|
||||||
|
- int code;
|
||||||
|
-
|
||||||
|
- /* We concatenate directly since gp_file_name_combine_*
|
||||||
|
- * rules are not correct for other devices such as %rom% */
|
||||||
|
- code = gs_parse_file_name(&pname, pstr, plen);
|
||||||
|
- if (code < 0)
|
||||||
|
- continue;
|
||||||
|
- memcpy(buffer, pname.fname, pname.len);
|
||||||
|
- memcpy(buffer+pname.len, fname, flen);
|
||||||
|
- code = pname.iodev->procs.open_file(pname.iodev, buffer, pname.len + flen, fmode,
|
||||||
|
- &s, (gs_memory_t *)mem);
|
||||||
|
- if (code < 0)
|
||||||
|
- continue;
|
||||||
|
- make_stream_file(pfile, s, "r");
|
||||||
|
- /* fill in the buffer with the device concatenated */
|
||||||
|
- memcpy(buffer, pstr, plen);
|
||||||
|
- memcpy(buffer+plen, fname, flen);
|
||||||
|
- *pclen = plen + flen;
|
||||||
|
- return 0;
|
||||||
|
- } else {
|
||||||
|
- r = gp_file_name_combine(pstr, plen,
|
||||||
|
- fname, flen, false, buffer, &blen1);
|
||||||
|
- if (r != gp_combine_success)
|
||||||
|
- continue;
|
||||||
|
- if (iodev_os_open_file(iodev, (const char *)buffer, blen1, (const char *)fmode,
|
||||||
|
- &s, (gs_memory_t *)mem) == 0) {
|
||||||
|
- if (starting_arg_file ||
|
||||||
|
- check_file_permissions_aux(i_ctx_p, buffer, blen1) >= 0) {
|
||||||
|
- *pclen = blen1;
|
||||||
|
- make_stream_file(pfile, s, "r");
|
||||||
|
- return 0;
|
||||||
|
- }
|
||||||
|
- sclose(s);
|
||||||
|
- return_error(e_invalidfileaccess);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ if (minst->search_here_first) {
|
||||||
|
+ if (search_with_no_combine) {
|
||||||
|
+ code = lib_file_open_search_with_no_combine(lib_path, mem, i_ctx_p,
|
||||||
|
+ fname, flen, buffer, blen, pclen, pfile,
|
||||||
|
+ iodev, starting_arg_file, fmode);
|
||||||
|
+ if (code <= 0) /* +ve means continue continue */
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
+ if (search_with_combine) {
|
||||||
|
+ code = lib_file_open_search_with_combine(lib_path, mem, i_ctx_p,
|
||||||
|
+ fname, flen, buffer, blen, pclen, pfile,
|
||||||
|
+ iodev, starting_arg_file, fmode);
|
||||||
|
+ if (code <= 0) /* +ve means continue searching */
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ if (search_with_combine) {
|
||||||
|
+ code = lib_file_open_search_with_combine(lib_path, mem, i_ctx_p,
|
||||||
|
+ fname, flen, buffer, blen, pclen, pfile,
|
||||||
|
+ iodev, starting_arg_file, fmode);
|
||||||
|
+ if (code <= 0) /* +ve means continue searching */
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
+ if (search_with_no_combine) {
|
||||||
|
+ code = lib_file_open_search_with_no_combine(lib_path, mem, i_ctx_p,
|
||||||
|
+ fname, flen, buffer, blen, pclen, pfile,
|
||||||
|
+ iodev, starting_arg_file, fmode);
|
||||||
|
+ if (code <= 0) /* +ve means continue searching */
|
||||||
|
+ return code;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
return_error(e_undefinedfilename);
|
||||||
|
}
|
||||||
|
diff -up ghostscript-8.71/Resource/Init/gs_fonts.ps.SEARCH_HERE_FIRST ghostscript-8.71/Resource/Init/gs_fonts.ps
|
||||||
|
--- ghostscript-8.71/Resource/Init/gs_fonts.ps.SEARCH_HERE_FIRST 2011-02-01 11:47:56.111749998 +0000
|
||||||
|
+++ ghostscript-8.71/Resource/Init/gs_fonts.ps 2011-02-01 11:47:56.236763408 +0000
|
||||||
|
@@ -948,7 +948,7 @@ $error /SubstituteFont { } put
|
||||||
|
if
|
||||||
|
}
|
||||||
|
{ % Font file name
|
||||||
|
- .loadfontloop { true exit } if
|
||||||
|
+ //true .loadfontloop { //true exit } if
|
||||||
|
}
|
||||||
|
ifelse
|
||||||
|
}
|
||||||
|
@@ -991,39 +991,47 @@ $error /SubstituteFont { } put
|
||||||
|
/.genericrfn where {
|
||||||
|
pop
|
||||||
|
pop dup .fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||||
|
- .loadfontloop {
|
||||||
|
+ //false .loadfontloop {
|
||||||
|
//true
|
||||||
|
} {
|
||||||
|
- dup .nametostring .loadfontloop
|
||||||
|
+ dup .nametostring
|
||||||
|
+ //true .loadfontloop
|
||||||
|
} ifelse
|
||||||
|
} {
|
||||||
|
- .loadfontloop
|
||||||
|
+ //true .loadfontloop
|
||||||
|
} ifelse
|
||||||
|
} bind def
|
||||||
|
-/.loadfontloop { % <fontname> <filename> .loadfontloop
|
||||||
|
+/.loadfontloop { % <fontname> <filename> <libflag> .loadfontloop
|
||||||
|
% <font> true
|
||||||
|
% -or-
|
||||||
|
% <fontname> false
|
||||||
|
% See above regarding the use of 'loop'.
|
||||||
|
{ % Is the font name a string?
|
||||||
|
- dup type /stringtype ne
|
||||||
|
- { QUIET not
|
||||||
|
+ 1 index type /stringtype ne
|
||||||
|
+ { pop
|
||||||
|
+ QUIET not
|
||||||
|
{ (Can't find font with non-string name: ) print dup =only (.) = flush
|
||||||
|
}
|
||||||
|
- if pop false exit
|
||||||
|
- }
|
||||||
|
- if
|
||||||
|
- % Can we open the file?
|
||||||
|
- findlibfile not
|
||||||
|
- { QUIET not
|
||||||
|
+ if pop //false exit
|
||||||
|
+ } if
|
||||||
|
+
|
||||||
|
+ % check <libflag>
|
||||||
|
+ {
|
||||||
|
+ findlibfile not
|
||||||
|
+ } {
|
||||||
|
+ dup (r) { file } stopped {
|
||||||
|
+ pop pop //true
|
||||||
|
+ } {
|
||||||
|
+ //false
|
||||||
|
+ } ifelse
|
||||||
|
+ } ifelse {
|
||||||
|
+ QUIET not
|
||||||
|
{ (Can't find \(or can't open\) font file ) print dup print
|
||||||
|
(.) = flush
|
||||||
|
}
|
||||||
|
if pop false exit
|
||||||
|
- }
|
||||||
|
- if
|
||||||
|
-
|
||||||
|
- % Stack: fontname fontfilename fontfile
|
||||||
|
+ } if
|
||||||
|
+ % Stack: fontname fontfilename fontfile
|
||||||
|
DISKFONTS
|
||||||
|
{ .currentglobal true .setglobal
|
||||||
|
2 index (r) file
|
||||||
|
diff -up ghostscript-8.71/Resource/Init/gs_res.ps.SEARCH_HERE_FIRST ghostscript-8.71/Resource/Init/gs_res.ps
|
||||||
|
--- ghostscript-8.71/Resource/Init/gs_res.ps.SEARCH_HERE_FIRST 2010-01-31 20:30:13.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/Resource/Init/gs_res.ps 2011-02-01 11:47:56.238763622 +0000
|
||||||
|
@@ -287,7 +287,8 @@ systemdict begin
|
||||||
|
} {
|
||||||
|
(Resource) search {
|
||||||
|
exch concatstrings
|
||||||
|
- exch 0 1 getinterval concatstrings exit
|
||||||
|
+ exch pop
|
||||||
|
+ .file_name_separator concatstrings exit
|
||||||
|
} {
|
||||||
|
pop
|
||||||
|
} ifelse
|
||||||
|
@@ -557,46 +558,29 @@ status {
|
||||||
|
{ forall } 0 get
|
||||||
|
currentdict end 2 .execn begin
|
||||||
|
} bind
|
||||||
|
-/.file_name_is_iodevice_or_absolute
|
||||||
|
-{ {
|
||||||
|
- dup length 0 gt {
|
||||||
|
- dup 0 get (%) 0 get eq {
|
||||||
|
- pop true exit
|
||||||
|
- } if
|
||||||
|
- } if
|
||||||
|
- .file_name_is_absolute exit
|
||||||
|
- } loop
|
||||||
|
-} bind def
|
||||||
|
-/ResourceFileName
|
||||||
|
- { % /in (scr)
|
||||||
|
- exch //.rfnstring cvs % (scr) (n)
|
||||||
|
- /GenericResourcePathSep getsystemparam exch % (scr) (/) (n)
|
||||||
|
- Category .namestring % (scr) (/) (n) (c)
|
||||||
|
- 3 1 roll % (scr) (c) (/) (n)
|
||||||
|
- concatstrings concatstrings % (scr) (c/n)
|
||||||
|
- /GenericResourceDir getsystemparam //.file_name_is_iodevice_or_absolute exec not {
|
||||||
|
- /GenericResourceDir getsystemparam exch concatstrings
|
||||||
|
- findlibfile
|
||||||
|
- { % (scr) (p/c/n) file
|
||||||
|
- pop exch copy true % (p/c/n) true
|
||||||
|
- } { % (scr) (c/n)
|
||||||
|
- false % (scr) (c/n) false
|
||||||
|
- } ifelse
|
||||||
|
- } { % (scr) (c/n)
|
||||||
|
- false % (scr) (c/n) false
|
||||||
|
- } ifelse
|
||||||
|
- not { % (scr) (c/n)
|
||||||
|
- /GenericResourceDir getsystemparam % (scr) (c/n) (d/)
|
||||||
|
- dup length exch % (scr) (c/n) Ld (d/)
|
||||||
|
- 3 index copy pop % (scr') (c/n) Ld
|
||||||
|
- 1 index length % (scr') (c/n) Ld Lcn
|
||||||
|
- 3 index 3 copy pop % (scr') (c/n) Ld Lcn (scr') Ld Lcn
|
||||||
|
- getinterval % (scr') (c/n) Ld Lcn (scr[Ld:Lcn])
|
||||||
|
- 4 3 roll exch % (scr') Ld Lcn (c/n) (scr[Ld:Lcn])
|
||||||
|
- copy pop % (scr'') Ld Lcn
|
||||||
|
- add 0 exch getinterval % (scr''[0:Ld+Lcn])
|
||||||
|
- } if
|
||||||
|
- } bind
|
||||||
|
+
|
||||||
|
+/ResourceFileName { % /in (scr) --> (p/c/n)
|
||||||
|
+ exch //.rfnstring cvs % (scr) (n)
|
||||||
|
+ /GenericResourcePathSep getsystemparam exch % (scr) (/) (n)
|
||||||
|
+ Category .namestring % (scr) (/) (n) (c)
|
||||||
|
+ 3 1 roll % (scr) (c) (/) (n)
|
||||||
|
+ concatstrings concatstrings % (scr) (c/n)
|
||||||
|
+ /GenericResourceDir getsystemparam 1 index % (scr) (c/n) (p/) (c/n)
|
||||||
|
+ concatstrings % (scr) (c/n) (p/c/n)
|
||||||
|
+ dup status {
|
||||||
|
+ pop pop pop pop exch pop % (scr) (p/c/n)
|
||||||
|
+ } {
|
||||||
|
+ exch % (scr) (p/c/n) (c/n)
|
||||||
|
+ .libfile {
|
||||||
|
+ dup .filename pop % (scr) (p/c/n) file (p/c/n')
|
||||||
|
+ exch closefile % (scr) (p/c/n) (p/c/n')
|
||||||
|
+ exch pop % (scr) (p/c/n')
|
||||||
|
+ } {
|
||||||
|
+ pop % (scr) (p/c/n)
|
||||||
|
+ } ifelse
|
||||||
|
+ } ifelse
|
||||||
|
+ exch copy % (p/c/n)
|
||||||
|
+} bind
|
||||||
|
|
||||||
|
% Additional entries
|
||||||
|
|
||||||
|
diff -up ghostscript-8.71/toolbin/msvcxml.bat.SEARCH_HERE_FIRST ghostscript-8.71/toolbin/msvcxml.bat
|
||||||
|
--- ghostscript-8.71/toolbin/msvcxml.bat.SEARCH_HERE_FIRST 2009-01-26 17:16:47.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/toolbin/msvcxml.bat 2011-02-01 11:47:56.241763944 +0000
|
||||||
|
@@ -1428,7 +1428,7 @@ echo ^<UserMacro Name="GS_DOCDIR" Valu
|
||||||
|
echo ^<UserMacro Name="GS_INIT" Value="gs_init.ps" /^>
|
||||||
|
echo ^<UserMacro Name="GS_LIB_DEFAULT" Value="$(GSROOTDIR)/lib;$(GSROOTDIR)/Resource/Font;$(AROOTDIR)/fonts" /^>
|
||||||
|
echo ^<UserMacro Name="GS_REVISION" Value="$(GS_VERSION)" /^>
|
||||||
|
-echo ^<UserMacro Name="SEARCH_HERE_FIRST" Value="1" /^>
|
||||||
|
+echo ^<UserMacro Name="SEARCH_HERE_FIRST" Value="0" /^>
|
||||||
|
echo ^</VisualStudioPropertySheet^>
|
||||||
|
goto end
|
||||||
|
|
12
ghostscript-bbox-close.patch
Normal file
12
ghostscript-bbox-close.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up ghostscript-8.71/base/gdevbbox.c.bbox-close ghostscript-8.71/base/gdevbbox.c
|
||||||
|
--- ghostscript-8.71/base/gdevbbox.c.bbox-close 2010-01-19 15:48:57.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevbbox.c 2010-09-02 13:03:37.742943978 +0100
|
||||||
|
@@ -249,7 +249,7 @@ bbox_close_device(gx_device * dev)
|
||||||
|
* This device was created as a wrapper for a compositor.
|
||||||
|
* Just free the devices.
|
||||||
|
*/
|
||||||
|
- int code = (bdev->forward_open_close ? gs_closedevice(tdev) : 0);
|
||||||
|
+ int code = (tdev && bdev->forward_open_close ? gs_closedevice(tdev) : 0);
|
||||||
|
|
||||||
|
gs_free_object(dev->memory, dev, "bbox_close_device(composite)");
|
||||||
|
return code;
|
17
ghostscript-cups-filters.patch
Normal file
17
ghostscript-cups-filters.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff -up ghostscript-8.70/cups/cups.mak.cups-filters ghostscript-8.70/cups/cups.mak
|
||||||
|
--- ghostscript-8.70/cups/cups.mak.cups-filters 2009-10-15 12:42:27.531402610 +0100
|
||||||
|
+++ ghostscript-8.70/cups/cups.mak 2009-10-15 12:44:14.835402533 +0100
|
||||||
|
@@ -63,10 +63,10 @@ install-cups: cups
|
||||||
|
$(INSTALL_PROGRAM) $(PDFTORASTER_XE) $(DESTDIR)$(CUPSSERVERBIN)/filter; \
|
||||||
|
fi
|
||||||
|
$(INSTALL_PROGRAM) cups/pstopxl $(DESTDIR)$(CUPSSERVERBIN)/filter
|
||||||
|
- -mkdir -p $(DESTDIR)$(CUPSSERVERROOT)
|
||||||
|
- $(INSTALL_DATA) cups/pstoraster.convs $(DESTDIR)$(CUPSSERVERROOT)
|
||||||
|
+ -mkdir -p $(DESTDIR)$(CUPSDATA)/mime
|
||||||
|
+ $(INSTALL_DATA) cups/pstoraster.convs $(DESTDIR)$(CUPSDATA)/mime
|
||||||
|
if [ "$(CUPSPDFTORASTER)" = "1" ]; then \
|
||||||
|
- $(INSTALL_DATA) cups/pdftoraster.convs $(DESTDIR)$(CUPSSERVERROOT); \
|
||||||
|
+ $(INSTALL_DATA) cups/pdftoraster.convs $(DESTDIR)$(CUPSDATA)/mime; \
|
||||||
|
fi
|
||||||
|
-mkdir -p $(DESTDIR)$(CUPSDATA)/model
|
||||||
|
$(INSTALL_DATA) cups/pxlcolor.ppd $(DESTDIR)$(CUPSDATA)/model
|
78
ghostscript-cups-realloc-color-depth.patch
Normal file
78
ghostscript-cups-realloc-color-depth.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
diff -up ghostscript-8.71/cups/gdevcups.c.cups-realloc-color-depth ghostscript-8.71/cups/gdevcups.c
|
||||||
|
--- ghostscript-8.71/cups/gdevcups.c.cups-realloc-color-depth 2010-03-15 14:38:08.155372454 +0000
|
||||||
|
+++ ghostscript-8.71/cups/gdevcups.c 2010-03-15 14:38:12.208372310 +0000
|
||||||
|
@@ -975,7 +975,8 @@ cups_map_cmyk(gx_device *pdev, /* I - D
|
||||||
|
frac k, /* I - Black value */
|
||||||
|
frac *out) /* O - Device colors */
|
||||||
|
{
|
||||||
|
- int c0, c1, c2, c3; /* Temporary color values */
|
||||||
|
+ int c0 = 0, c1 = 0,
|
||||||
|
+ c2 = 0, c3 = 0; /* Temporary color values */
|
||||||
|
float rr, rg, rb, /* Real RGB colors */
|
||||||
|
ciex, ciey, ciez, /* CIE XYZ colors */
|
||||||
|
ciey_yn, /* Normalized luminance */
|
||||||
|
@@ -2703,9 +2704,13 @@ cups_put_params(gx_device *pdev, /*
|
||||||
|
int color_set; /* Were the color attrs set? */
|
||||||
|
gdev_prn_space_params sp; /* Space parameter data */
|
||||||
|
int width, /* New width of page */
|
||||||
|
- height; /* New height of page */
|
||||||
|
+ height, /* New height of page */
|
||||||
|
+ colorspace, /* New color space */
|
||||||
|
+ bitspercolor; /* New bits per color */
|
||||||
|
static int width_old = 0, /* Previous width */
|
||||||
|
- height_old = 0; /* Previous height */
|
||||||
|
+ height_old = 0, /* Previous height */
|
||||||
|
+ colorspace_old = 0,/* Previous color space */
|
||||||
|
+ bitspercolor_old = 0;/* Previous bits per color */
|
||||||
|
ppd_attr_t *backside = NULL,
|
||||||
|
*backsiderequiresflippedmargins = NULL;
|
||||||
|
float swap;
|
||||||
|
@@ -2800,9 +2805,10 @@ cups_put_params(gx_device *pdev, /*
|
||||||
|
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]; \
|
||||||
|
+ for (i = 0; i < count; i ++) { \
|
||||||
|
+ dprintf1(" %d", (unsigned)(arrayval.data[i])); \
|
||||||
|
+ cups->header.name[i] = (unsigned)(arrayval.data[i]); \
|
||||||
|
+ } \
|
||||||
|
dprintf("...\n"); \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -3243,23 +3249,31 @@ cups_put_params(gx_device *pdev, /*
|
||||||
|
}
|
||||||
|
#endif /* CUPS_RASTER_SYNCv1 */
|
||||||
|
|
||||||
|
+ colorspace = cups->header.cupsColorSpace;
|
||||||
|
+ bitspercolor = cups->header.cupsBitsPerColor;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Don't reallocate memory unless the device has been opened...
|
||||||
|
* Also reallocate only if the size has actually changed...
|
||||||
|
*/
|
||||||
|
|
||||||
|
- if (pdev->is_open && (width != width_old || height != height_old))
|
||||||
|
+ if (pdev->is_open &&
|
||||||
|
+ (width != width_old || height != height_old ||
|
||||||
|
+ colorspace != colorspace_old || bitspercolor != bitspercolor_old))
|
||||||
|
{
|
||||||
|
|
||||||
|
width_old = width;
|
||||||
|
height_old = height;
|
||||||
|
+ colorspace_old = colorspace;
|
||||||
|
+ bitspercolor_old = bitspercolor;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Device is open and size has changed, so reallocate...
|
||||||
|
*/
|
||||||
|
|
||||||
|
- dprintf4("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels...\n",
|
||||||
|
- pdev->MediaSize[0], pdev->MediaSize[1], width, height);
|
||||||
|
+ dprintf6("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels, color space: %d, bits per color: %d...\n",
|
||||||
|
+ pdev->MediaSize[0], pdev->MediaSize[1], width, height,
|
||||||
|
+ colorspace, bitspercolor);
|
||||||
|
|
||||||
|
sp = ((gx_device_printer *)pdev)->space_params;
|
||||||
|
|
50
ghostscript-epstopdf-failure.patch
Normal file
50
ghostscript-epstopdf-failure.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
diff -up ghostscript-8.71/base/seexec.c.epstopdf-failure ghostscript-8.71/base/seexec.c
|
||||||
|
--- ghostscript-8.71/base/seexec.c.epstopdf-failure 2009-08-14 05:12:58.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/base/seexec.c 2010-08-26 14:53:05.662840885 +0100
|
||||||
|
@@ -165,7 +165,11 @@ hp: r = *pr;
|
||||||
|
r.limit = r.ptr + ss->hex_left;
|
||||||
|
status = s_hex_process(&r, pw, &ss->odd,
|
||||||
|
(ss->is_leading_space ? hex_ignore_leading_whitespace : hex_break_on_whitespace));
|
||||||
|
- ss->is_leading_space = (status == 2);
|
||||||
|
+ if (status == 2) {
|
||||||
|
+ ss->is_leading_space = true;
|
||||||
|
+ status = 1;
|
||||||
|
+ } else
|
||||||
|
+ ss->is_leading_space = false;
|
||||||
|
pr->ptr = r.ptr;
|
||||||
|
ss->hex_left -= r.ptr - start;
|
||||||
|
/*
|
||||||
|
diff -up ghostscript-8.71/base/sstring.c.epstopdf-failure ghostscript-8.71/base/sstring.c
|
||||||
|
--- ghostscript-8.71/base/sstring.c.epstopdf-failure 2009-08-13 20:04:34.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/base/sstring.c 2010-08-26 14:53:05.663840592 +0100
|
||||||
|
@@ -355,8 +355,12 @@ const stream_template s_PSSD_template =
|
||||||
|
/* ------ Utilities ------ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Convert hex data to binary. Return 1 if we filled the string, 0 if
|
||||||
|
- * we ran out of input data before filling the string, or ERRC on error.
|
||||||
|
+ * Convert hex data to binary.
|
||||||
|
+ * Return 1 if we filled the string,
|
||||||
|
+ * 0 if we ran out of input data before filling the string,
|
||||||
|
+ * 2 if hex_break_on_whitespace is on and we encounrered
|
||||||
|
+ * a white space.
|
||||||
|
+ * ERRC on error.
|
||||||
|
* The caller must set *odd_digit to -1 before the first call;
|
||||||
|
* after each call, if an odd number of hex digits has been read (total),
|
||||||
|
* *odd_digit is the odd digit value, otherwise *odd_digit = -1.
|
||||||
|
diff -up ghostscript-8.71/psi/iscan.c.epstopdf-failure ghostscript-8.71/psi/iscan.c
|
||||||
|
--- ghostscript-8.71/psi/iscan.c.epstopdf-failure 2009-11-11 13:52:23.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/psi/iscan.c 2010-08-26 14:53:05.665840572 +0100
|
||||||
|
@@ -329,9 +329,9 @@ scan_handle_refill(i_ctx_t *i_ctx_p, sca
|
||||||
|
rstate, 1, cont);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- /* No more data available, but no exception. How can this be? */
|
||||||
|
- lprintf("Can't refill scanner input buffer!");
|
||||||
|
- return_error(e_Fatal);
|
||||||
|
+ /* No more data available, but no exception. */
|
||||||
|
+ /* A filter is consuming headers but returns nothing. */
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
15
ghostscript-gdevcups-debug-uninit.patch
Normal file
15
ghostscript-gdevcups-debug-uninit.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff -up ghostscript-8.71/cups/gdevcups.c.gdevcups-debug-uninit ghostscript-8.71/cups/gdevcups.c
|
||||||
|
--- ghostscript-8.71/cups/gdevcups.c.gdevcups-debug-uninit 2010-10-14 15:08:41.243869988 +0100
|
||||||
|
+++ ghostscript-8.71/cups/gdevcups.c 2010-10-14 15:09:45.151869961 +0100
|
||||||
|
@@ -3299,8 +3299,9 @@ cups_put_params(gx_device *pdev, /*
|
||||||
|
dprintf1("DEBUG2: ppd = %p\n", cupsPPD);
|
||||||
|
dprintf2("DEBUG2: PageSize = [ %.3f %.3f ]\n",
|
||||||
|
pdev->MediaSize[0], pdev->MediaSize[1]);
|
||||||
|
- dprintf4("DEBUG2: margins = [ %.3f %.3f %.3f %.3f ]\n",
|
||||||
|
- margins[0], margins[1], margins[2], margins[3]);
|
||||||
|
+ if (size_set)
|
||||||
|
+ dprintf4("DEBUG2: margins = [ %.3f %.3f %.3f %.3f ]\n",
|
||||||
|
+ margins[0], margins[1], margins[2], margins[3]);
|
||||||
|
dprintf2("DEBUG2: HWResolution = [ %.3f %.3f ]\n",
|
||||||
|
pdev->HWResolution[0], pdev->HWResolution[1]);
|
||||||
|
dprintf2("DEBUG2: width = %d, height = %d\n",
|
31
ghostscript-gdevcups-ripcache.patch
Normal file
31
ghostscript-gdevcups-ripcache.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
diff -up ghostscript-8.71/cups/gdevcups.c.gdevcups-ripcache ghostscript-8.71/cups/gdevcups.c
|
||||||
|
--- ghostscript-8.71/cups/gdevcups.c.gdevcups-ripcache 2010-09-02 14:38:53.886818591 +0100
|
||||||
|
+++ ghostscript-8.71/cups/gdevcups.c 2010-09-02 14:40:49.925943426 +0100
|
||||||
|
@@ -915,8 +915,7 @@ cups_get_space_params(const gx_device_pr
|
||||||
|
switch (sscanf(cache_env, "%f%254s", &cache_size, cache_units))
|
||||||
|
{
|
||||||
|
case 0 :
|
||||||
|
- cache_size = 8 * 1024 * 1024;
|
||||||
|
- break;
|
||||||
|
+ return;
|
||||||
|
case 1 :
|
||||||
|
cache_size *= 4 * CUPS_TILE_SIZE * CUPS_TILE_SIZE;
|
||||||
|
break;
|
||||||
|
@@ -933,12 +932,15 @@ cups_get_space_params(const gx_device_pr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
- cache_size = 8 * 1024 * 1024;
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (cache_size == 0)
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
dprintf1("DEBUG2: cache_size = %.0f\n", cache_size);
|
||||||
|
|
||||||
|
space_params->MaxBitmap = (int)cache_size;
|
||||||
|
- space_params->BufferSpace = (int)cache_size / 10;
|
||||||
|
+ space_params->BufferSpace = (int)cache_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,361 +0,0 @@
|
|||||||
diff -up ghostscript-8.70/lib/bdftops.gs-executable ghostscript-8.70/lib/bdftops
|
|
||||||
--- ghostscript-8.70/lib/bdftops.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/bdftops 2009-08-03 17:53:20.569875831 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dBATCH -dNODISPLAY -- bdftops.ps "$@"
|
|
||||||
+exec "$gs" -q -dBATCH -dNODISPLAY -- bdftops.ps "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/dumphint.gs-executable ghostscript-8.70/lib/dumphint
|
|
||||||
--- ghostscript-8.70/lib/dumphint.gs-executable 2009-01-04 20:11:57.000000000 +0000
|
|
||||||
+++ ghostscript-8.70/lib/dumphint 2009-08-03 17:53:20.570875283 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONS="-dSAFER -dDELAYSAFER"
|
|
||||||
@@ -27,4 +26,4 @@ if [ $# -ne 1 ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- "`dirname $0`/dumphint.ps" "$1"
|
|
||||||
+exec "$gs" -q -dNODISPLAY $OPTIONS -- "`dirname $0`/dumphint.ps" "$1"
|
|
||||||
diff -up ghostscript-8.70/lib/eps2eps.gs-executable ghostscript-8.70/lib/eps2eps
|
|
||||||
--- ghostscript-8.70/lib/eps2eps.gs-executable 2009-01-10 22:11:18.000000000 +0000
|
|
||||||
+++ ghostscript-8.70/lib/eps2eps 2009-08-03 17:53:20.573877995 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
OPTIONS="-dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000"
|
|
||||||
while true
|
|
||||||
@@ -26,4 +25,4 @@ if [ $# -ne 2 ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=epswrite -sstdout=%stderr "-sOutputFile=$2" -dNOPAUSE -dBATCH -dSAFER $OPTIONS "$1"
|
|
||||||
+exec "$gs" -q -sDEVICE=epswrite -sstdout=%stderr "-sOutputFile=$2" -dNOPAUSE -dBATCH -dSAFER $OPTIONS "$1"
|
|
||||||
diff -up ghostscript-8.70/lib/font2c.gs-executable ghostscript-8.70/lib/font2c
|
|
||||||
--- ghostscript-8.70/lib/font2c.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/font2c 2009-08-03 17:53:20.576874823 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -dWRITESYSTEMDICT -- font2c.ps "$@"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -dWRITESYSTEMDICT -- font2c.ps "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gsbj.gs-executable ghostscript-8.70/lib/gsbj
|
|
||||||
--- ghostscript-8.70/lib/gsbj.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gsbj 2009-08-03 17:53:20.579874829 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=bj10e -r180 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
+exec "$gs" -q -sDEVICE=bj10e -r180 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gsdj500.gs-executable ghostscript-8.70/lib/gsdj500
|
|
||||||
--- ghostscript-8.70/lib/gsdj500.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gsdj500 2009-08-03 17:53:20.582874574 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=djet500 -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
+exec "$gs" -q -sDEVICE=djet500 -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gsdj.gs-executable ghostscript-8.70/lib/gsdj
|
|
||||||
--- ghostscript-8.70/lib/gsdj.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gsdj 2009-08-03 17:53:20.585875161 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
+exec "$gs" -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gslj.gs-executable ghostscript-8.70/lib/gslj
|
|
||||||
--- ghostscript-8.70/lib/gslj.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gslj 2009-08-03 17:53:20.588874966 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=laserjet -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
+exec "$gs" -q -sDEVICE=laserjet -r300 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gslp.gs-executable ghostscript-8.70/lib/gslp
|
|
||||||
--- ghostscript-8.70/lib/gslp.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gslp 2009-08-03 17:53:20.591874666 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=epson -r180 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
+exec "$gs" -q -sDEVICE=epson -r180 -dNOPAUSE -sPROGNAME=$0 -- gslp.ps --heading-center "`date`" "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/gsnd.gs-executable ghostscript-8.70/lib/gsnd
|
|
||||||
--- ghostscript-8.70/lib/gsnd.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/gsnd 2009-08-03 17:53:20.594874682 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -dNODISPLAY "$@"
|
|
||||||
+exec "$gs" -dNODISPLAY "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/pdf2dsc.gs-executable ghostscript-8.70/lib/pdf2dsc
|
|
||||||
--- ghostscript-8.70/lib/pdf2dsc.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pdf2dsc 2009-08-03 17:53:20.597874954 +0100
|
|
||||||
@@ -11,9 +11,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
me=`basename $0`
|
|
||||||
|
|
||||||
@@ -31,5 +30,5 @@ pdffile=$1
|
|
||||||
dscfile=$2
|
|
||||||
: ${dscfile:=`echo $pdffile | sed 's,\.[^/.]*,,'`.dsc}
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -dSAFER -dDELAYSAFER\
|
|
||||||
+exec "$gs" -q -dNODISPLAY -dSAFER -dDELAYSAFER\
|
|
||||||
-sPDFname="$pdffile" -sDSCname="$dscfile" pdf2dsc.ps -c quit
|
|
||||||
diff -up ghostscript-8.70/lib/pdf2ps.gs-executable ghostscript-8.70/lib/pdf2ps
|
|
||||||
--- ghostscript-8.70/lib/pdf2ps.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pdf2ps 2009-08-03 17:53:20.601874677 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
OPTIONS=""
|
|
||||||
while true
|
|
||||||
@@ -35,4 +34,4 @@ fi
|
|
||||||
# Doing an initial 'save' helps keep fonts from being flushed between pages.
|
|
||||||
# We have to include the options twice because -I only takes effect if it
|
|
||||||
# appears before other options.
|
|
||||||
-exec "$GS_EXECUTABLE" $OPTIONS -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite "-sOutputFile=$outfile" $OPTIONS -c save pop -f "$1"
|
|
||||||
+exec "$gs" $OPTIONS -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite "-sOutputFile=$outfile" $OPTIONS -c save pop -f "$1"
|
|
||||||
diff -up ghostscript-8.70/lib/pdfopt.gs-executable ghostscript-8.70/lib/pdfopt
|
|
||||||
--- ghostscript-8.70/lib/pdfopt.gs-executable 2008-05-25 03:17:14.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pdfopt 2009-08-03 17:53:20.604874898 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
OPTIONS="-dSAFER -dDELAYSAFER"
|
|
||||||
while true
|
|
||||||
@@ -26,4 +25,4 @@ if [ $# -ne 2 ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY $OPTIONS -- pdfopt.ps "$1" "$2"
|
|
||||||
+exec "$gs" -q -dNODISPLAY $OPTIONS -- pdfopt.ps "$1" "$2"
|
|
||||||
diff -up ghostscript-8.70/lib/pf2afm.gs-executable ghostscript-8.70/lib/pf2afm
|
|
||||||
--- ghostscript-8.70/lib/pf2afm.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pf2afm 2009-08-03 17:53:20.608874740 +0100
|
|
||||||
@@ -10,8 +10,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -dSAFER -dDELAYSAFER -- pf2afm.ps "$@"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -dSAFER -dDELAYSAFER -- pf2afm.ps "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/pfbtopfa.gs-executable ghostscript-8.70/lib/pfbtopfa
|
|
||||||
--- ghostscript-8.70/lib/pfbtopfa.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pfbtopfa 2009-08-03 17:53:20.612874691 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
if [ $# -eq 2 ]
|
|
||||||
then
|
|
||||||
@@ -22,4 +21,4 @@ else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -- pfbtopfa.ps "$1" "$outfile"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -- pfbtopfa.ps "$1" "$outfile"
|
|
||||||
diff -up ghostscript-8.70/lib/pphs.gs-executable ghostscript-8.70/lib/pphs
|
|
||||||
--- ghostscript-8.70/lib/pphs.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/pphs 2009-08-03 17:53:20.616874647 +0100
|
|
||||||
@@ -9,8 +9,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -- pphs.ps "$@"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -- pphs.ps "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/printafm.gs-executable ghostscript-8.70/lib/printafm
|
|
||||||
--- ghostscript-8.70/lib/printafm.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/printafm 2009-08-03 17:53:20.619874766 +0100
|
|
||||||
@@ -9,8 +9,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -- printafm.ps "$@"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -- printafm.ps "$@"
|
|
||||||
diff -up ghostscript-8.70/lib/ps2epsi.gs-executable ghostscript-8.70/lib/ps2epsi
|
|
||||||
--- ghostscript-8.70/lib/ps2epsi.gs-executable 2009-04-07 11:20:02.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/ps2epsi 2009-08-03 17:54:48.355750266 +0100
|
|
||||||
@@ -6,9 +6,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
# try to create a temporary file securely
|
|
||||||
if test -z "$TMPDIR"; then
|
|
||||||
@@ -50,7 +49,7 @@ else
|
|
||||||
outfile=$2
|
|
||||||
fi
|
|
||||||
|
|
||||||
-"$GS_EXECUTABLE" -q -dBATCH -dNOPAUSE -dSAFER -dDELAYSAFER -sDEVICE=bbox -sOutputFile=/dev/null "${infile}" 2>${outfile}
|
|
||||||
+"$gs" -q -dBATCH -dNOPAUSE -dSAFER -dDELAYSAFER -sDEVICE=bbox -sOutputFile=/dev/null "${infile}" 2>${outfile}
|
|
||||||
|
|
||||||
ls -l "${infile}" |
|
|
||||||
awk 'F==1 {
|
|
||||||
@@ -92,7 +91,7 @@ awk 'F==1 {
|
|
||||||
}
|
|
||||||
' F=1 - F=2 "${outfile}" >>"$tmpfile"
|
|
||||||
|
|
||||||
-"$GS_EXECUTABLE" -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null "$tmpfile" ps2epsi.ps "$tmpfile" <"${infile}" 1>&2
|
|
||||||
+"$gs" -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null "$tmpfile" ps2epsi.ps "$tmpfile" <"${infile}" 1>&2
|
|
||||||
rm -f "$tmpfile"
|
|
||||||
rm -rf "$tmpdir"
|
|
||||||
|
|
||||||
diff -up ghostscript-8.70/lib/ps2pdfwr.gs-executable ghostscript-8.70/lib/ps2pdfwr
|
|
||||||
--- ghostscript-8.70/lib/ps2pdfwr.gs-executable 2009-01-10 22:11:18.000000000 +0000
|
|
||||||
+++ ghostscript-8.70/lib/ps2pdfwr 2009-08-03 17:53:20.626874926 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
OPTIONS="-dSAFER"
|
|
||||||
while true
|
|
||||||
@@ -42,4 +41,4 @@ fi
|
|
||||||
|
|
||||||
# We have to include the options twice because -I only takes effect if it
|
|
||||||
# appears before other options.
|
|
||||||
-exec "$GS_EXECUTABLE" $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr "-sOutputFile=$outfile" $OPTIONS -c .setpdfwrite -f "$infile"
|
|
||||||
+exec "$gs" $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr "-sOutputFile=$outfile" $OPTIONS -c .setpdfwrite -f "$infile"
|
|
||||||
diff -up ghostscript-8.70/lib/ps2ps.gs-executable ghostscript-8.70/lib/ps2ps
|
|
||||||
--- ghostscript-8.70/lib/ps2ps.gs-executable 2009-01-10 22:11:18.000000000 +0000
|
|
||||||
+++ ghostscript-8.70/lib/ps2ps 2009-08-03 17:53:20.630875037 +0100
|
|
||||||
@@ -7,9 +7,8 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
OPTIONS="-dSAFER"
|
|
||||||
while true
|
|
||||||
@@ -27,4 +26,4 @@ if [ $# -ne 2 ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -sDEVICE=pswrite -sstdout=%stderr "-sOutputFile=$2" -dNOPAUSE -dBATCH $OPTIONS "$1"
|
|
||||||
+exec "$gs" -q -sDEVICE=pswrite -sstdout=%stderr "-sOutputFile=$2" -dNOPAUSE -dBATCH $OPTIONS "$1"
|
|
||||||
diff -up ghostscript-8.70/lib/wftopfa.gs-executable ghostscript-8.70/lib/wftopfa
|
|
||||||
--- ghostscript-8.70/lib/wftopfa.gs-executable 2007-07-05 20:04:29.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/lib/wftopfa 2009-08-03 17:53:20.633874780 +0100
|
|
||||||
@@ -6,8 +6,7 @@
|
|
||||||
GS_EXECUTABLE=gs
|
|
||||||
gs="`dirname $0`/$GS_EXECUTABLE"
|
|
||||||
if test ! -x "$gs"; then
|
|
||||||
- gs="$GS_EXECUTABLE"
|
|
||||||
+ gs="$gs"
|
|
||||||
fi
|
|
||||||
-GS_EXECUTABLE="$gs"
|
|
||||||
|
|
||||||
-exec "$GS_EXECUTABLE" -q -dNODISPLAY -- wftopfa.ps "$@"
|
|
||||||
+exec "$gs" -q -dNODISPLAY -- wftopfa.ps "$@"
|
|
90
ghostscript-iname-segfault.patch
Normal file
90
ghostscript-iname-segfault.patch
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
diff -up ghostscript-8.71/psi/iname.c.iname-segfault ghostscript-8.71/psi/iname.c
|
||||||
|
--- ghostscript-8.71/psi/iname.c.iname-segfault 2008-10-21 17:26:09.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/psi/iname.c 2010-09-02 12:13:02.833819490 +0100
|
||||||
|
@@ -47,8 +47,8 @@ gs_private_st_composite(st_name_table, n
|
||||||
|
|
||||||
|
/* Forward references */
|
||||||
|
static int name_alloc_sub(name_table *);
|
||||||
|
-static void name_free_sub(name_table *, uint);
|
||||||
|
-static void name_scan_sub(name_table *, uint, bool);
|
||||||
|
+static void name_free_sub(name_table *, uint, bool);
|
||||||
|
+static void name_scan_sub(name_table *, uint, bool, bool);
|
||||||
|
|
||||||
|
/* Debugging printout */
|
||||||
|
#ifdef DEBUG
|
||||||
|
@@ -99,7 +99,7 @@ names_init(ulong count, gs_ref_memory_t
|
||||||
|
|
||||||
|
if (code < 0) {
|
||||||
|
while (nt->sub_next > 0)
|
||||||
|
- name_free_sub(nt, --(nt->sub_next));
|
||||||
|
+ name_free_sub(nt, --(nt->sub_next), false);
|
||||||
|
gs_free_object(mem, nt, "name_init(nt)");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -413,16 +413,7 @@ names_trace_finish(name_table * nt, gc_s
|
||||||
|
if (sub != 0) {
|
||||||
|
int save_count = nt->sub_count;
|
||||||
|
|
||||||
|
- name_scan_sub(nt, i, true);
|
||||||
|
- if (save_count != nt->sub_count) {
|
||||||
|
- /* name_scan_sub has released the i-th entry. */
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
- if (nt->sub[i].names == 0 && gcst != 0) {
|
||||||
|
- /* Mark the just-freed sub-table as unmarked. */
|
||||||
|
- o_set_unmarked((obj_header_t *)sub - 1);
|
||||||
|
- o_set_unmarked((obj_header_t *)ssub - 1);
|
||||||
|
- }
|
||||||
|
+ name_scan_sub(nt, i, true, true && (gcst != 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nt->sub_next = 0;
|
||||||
|
@@ -506,7 +497,7 @@ name_alloc_sub(name_table * nt)
|
||||||
|
/* Add the newly allocated entries to the free list. */
|
||||||
|
/* Note that the free list will only be properly sorted if */
|
||||||
|
/* it was empty initially. */
|
||||||
|
- name_scan_sub(nt, sub_index, false);
|
||||||
|
+ name_scan_sub(nt, sub_index, false, false);
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (gs_debug_c('n')) { /* Print the lengths of the hash chains. */
|
||||||
|
int i0;
|
||||||
|
@@ -535,8 +526,20 @@ name_alloc_sub(name_table * nt)
|
||||||
|
|
||||||
|
/* Free a sub-table. */
|
||||||
|
static void
|
||||||
|
-name_free_sub(name_table * nt, uint sub_index)
|
||||||
|
+name_free_sub(name_table * nt, uint sub_index, bool unmark)
|
||||||
|
{
|
||||||
|
+ /* If the subtable is in a previous save level, gs_free_object()
|
||||||
|
+ * may not actually free the memory, in case that happens, we need
|
||||||
|
+ * to explicitly remove the gc mark.
|
||||||
|
+ */
|
||||||
|
+ if (unmark) {
|
||||||
|
+ name_sub_table *sub = nt->sub[sub_index].names;
|
||||||
|
+ name_string_sub_table_t *ssub = nt->sub[sub_index].strings;
|
||||||
|
+
|
||||||
|
+ o_set_unmarked((obj_header_t *)sub - 1);
|
||||||
|
+ o_set_unmarked((obj_header_t *)ssub - 1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
gs_free_object(nt->memory, nt->sub[sub_index].strings,
|
||||||
|
"name_free_sub(string sub-table)");
|
||||||
|
gs_free_object(nt->memory, nt->sub[sub_index].names,
|
||||||
|
@@ -550,7 +553,7 @@ name_free_sub(name_table * nt, uint sub_
|
||||||
|
/* will stay sorted. If all entries are unmarked and free_empty is true, */
|
||||||
|
/* free the sub-table. */
|
||||||
|
static void
|
||||||
|
-name_scan_sub(name_table * nt, uint sub_index, bool free_empty)
|
||||||
|
+name_scan_sub(name_table * nt, uint sub_index, bool free_empty, bool unmark)
|
||||||
|
{
|
||||||
|
name_string_sub_table_t *ssub = nt->sub[sub_index].strings;
|
||||||
|
uint free = nt->free;
|
||||||
|
@@ -579,7 +582,7 @@ name_scan_sub(name_table * nt, uint sub_
|
||||||
|
nt->free = free;
|
||||||
|
else {
|
||||||
|
/* No marked entries, free the sub-table. */
|
||||||
|
- name_free_sub(nt, sub_index);
|
||||||
|
+ name_free_sub(nt, sub_index, unmark);
|
||||||
|
if (sub_index == nt->sub_count - 1) {
|
||||||
|
/* Back up over a final run of deleted sub-tables. */
|
||||||
|
do {
|
25
ghostscript-jbig2-image-refcount.patch
Normal file
25
ghostscript-jbig2-image-refcount.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff -up ghostscript-8.71/jbig2dec/jbig2_image.c.jbig2-image-refcount ghostscript-8.71/jbig2dec/jbig2_image.c
|
||||||
|
--- ghostscript-8.71/jbig2dec/jbig2_image.c.jbig2-image-refcount 2010-08-05 14:55:56.417043303 +0100
|
||||||
|
+++ ghostscript-8.71/jbig2dec/jbig2_image.c 2010-08-05 14:56:46.796169065 +0100
|
||||||
|
@@ -60,15 +60,18 @@ Jbig2Image* jbig2_image_new(Jbig2Ctx *ct
|
||||||
|
/* clone an image pointer by bumping its reference count */
|
||||||
|
Jbig2Image* jbig2_image_clone(Jbig2Ctx *ctx, Jbig2Image *image)
|
||||||
|
{
|
||||||
|
- image->refcount++;
|
||||||
|
+ if (image)
|
||||||
|
+ image->refcount++;
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* release an image pointer, freeing it it appropriate */
|
||||||
|
void jbig2_image_release(Jbig2Ctx *ctx, Jbig2Image *image)
|
||||||
|
{
|
||||||
|
- image->refcount--;
|
||||||
|
- if (!image->refcount) jbig2_image_free(ctx, image);
|
||||||
|
+ if (image) {
|
||||||
|
+ image->refcount--;
|
||||||
|
+ if (!image->refcount) jbig2_image_free(ctx, image);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free a Jbig2Image structure and its associated memory */
|
@ -1,20 +1,6 @@
|
|||||||
diff -up ghostscript-8.70/jbig2dec/jbig2_generic.c.jbig2dec-nullderef ghostscript-8.70/jbig2dec/jbig2_generic.c
|
diff -up ghostscript-8.71/jbig2dec/jbig2_symbol_dict.c.jbig2dec-nullderef ghostscript-8.71/jbig2dec/jbig2_symbol_dict.c
|
||||||
--- ghostscript-8.70/jbig2dec/jbig2_generic.c.jbig2dec-nullderef 2009-05-29 07:48:44.000000000 +0100
|
--- ghostscript-8.71/jbig2dec/jbig2_symbol_dict.c.jbig2dec-nullderef 2009-05-29 07:48:44.000000000 +0100
|
||||||
+++ ghostscript-8.70/jbig2dec/jbig2_generic.c 2009-08-03 17:51:13.864875636 +0100
|
+++ ghostscript-8.71/jbig2dec/jbig2_symbol_dict.c 2010-02-17 12:06:42.040614797 +0000
|
||||||
@@ -596,6 +596,10 @@ jbig2_immediate_generic_region(Jbig2Ctx
|
|
||||||
memcpy (params.gbat, gbat, gbat_bytes);
|
|
||||||
|
|
||||||
image = jbig2_image_new(ctx, rsi.width, rsi.height);
|
|
||||||
+ if (image == NULL)
|
|
||||||
+ return jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number,
|
|
||||||
+ "failed to allocate buffer for image");
|
|
||||||
+
|
|
||||||
jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, segment->number,
|
|
||||||
"allocated %d x %d image buffer for region decode results",
|
|
||||||
rsi.width, rsi.height);
|
|
||||||
diff -up ghostscript-8.70/jbig2dec/jbig2_symbol_dict.c.jbig2dec-nullderef ghostscript-8.70/jbig2dec/jbig2_symbol_dict.c
|
|
||||||
--- ghostscript-8.70/jbig2dec/jbig2_symbol_dict.c.jbig2dec-nullderef 2009-05-29 07:48:44.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/jbig2dec/jbig2_symbol_dict.c 2009-08-03 17:52:35.318750131 +0100
|
|
||||||
@@ -367,6 +367,11 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
@@ -367,6 +367,11 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
||||||
memcpy(region_params.gbat, params->sdat, sdat_bytes);
|
memcpy(region_params.gbat, params->sdat, sdat_bytes);
|
||||||
|
|
||||||
@ -56,26 +42,3 @@ diff -up ghostscript-8.70/jbig2dec/jbig2_symbol_dict.c.jbig2dec-nullderef ghosts
|
|||||||
jbig2_image_compose(ctx, glyph, image,
|
jbig2_image_compose(ctx, glyph, image,
|
||||||
-x, 0, JBIG2_COMPOSE_REPLACE);
|
-x, 0, JBIG2_COMPOSE_REPLACE);
|
||||||
x += SDNEWSYMWIDTHS[j];
|
x += SDNEWSYMWIDTHS[j];
|
||||||
diff -up ghostscript-8.70/jbig2dec/jbig2_text.c.jbig2dec-nullderef ghostscript-8.70/jbig2dec/jbig2_text.c
|
|
||||||
--- ghostscript-8.70/jbig2dec/jbig2_text.c.jbig2dec-nullderef 2009-05-29 07:48:44.000000000 +0100
|
|
||||||
+++ ghostscript-8.70/jbig2dec/jbig2_text.c 2009-08-03 17:53:05.166750610 +0100
|
|
||||||
@@ -312,6 +312,9 @@ jbig2_decode_text_region(Jbig2Ctx *ctx,
|
|
||||||
IBO = IB;
|
|
||||||
refimage = jbig2_image_new(ctx, IBO->width + RDW,
|
|
||||||
IBO->height + RDH);
|
|
||||||
+ if (image == NULL)
|
|
||||||
+ return jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number,
|
|
||||||
+ "could not allocate image storage");
|
|
||||||
|
|
||||||
/* Table 12 */
|
|
||||||
rparams.GRTEMPLATE = params->SBRTEMPLATE;
|
|
||||||
@@ -676,6 +679,9 @@ jbig2_parse_text_region(Jbig2Ctx *ctx, J
|
|
||||||
}
|
|
||||||
|
|
||||||
image = jbig2_image_new(ctx, region_info.width, region_info.height);
|
|
||||||
+ if (image == NULL)
|
|
||||||
+ return jbig2_error(ctx, JBIG2_SEVERITY_WARNING, segment->number,
|
|
||||||
+ "unable to allocate image storage");
|
|
||||||
|
|
||||||
ws = jbig2_word_stream_buf_new(ctx, segment_data + offset, segment->data_length - offset);
|
|
||||||
if (!params.SBHUFF) {
|
|
||||||
|
24
ghostscript-ldflags.patch
Normal file
24
ghostscript-ldflags.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
--- ghostscript-8.71/base/unix-dll.mak 2009-10-19 21:24:53.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/base/unix-dll.mak.ldflags 2010-02-19 10:07:06.645044318 +0000
|
||||||
|
@@ -88,8 +88,9 @@ $(GSSOX_XE): $(GS_SO) $(PSSRC)$(SOC_LOAD
|
||||||
|
|
||||||
|
# ------------------------- Recursive make targets ------------------------- #
|
||||||
|
|
||||||
|
-SODEFS=LDFLAGS='$(LDFLAGS) $(LDFLAGS_SO)'\
|
||||||
|
+SODEFS=\
|
||||||
|
GS_XE=$(BINDIR)/$(SOBINRELDIR)/$(GS_SONAME_MAJOR_MINOR)\
|
||||||
|
+ GS_XE_LDFLAGS='$(LDFLAGS_SO)'\
|
||||||
|
STDIO_IMPLEMENTATION=c\
|
||||||
|
DISPLAY_DEV=$(DD)$(SOOBJRELDIR)/display.dev\
|
||||||
|
BINDIR=$(BINDIR)/$(SOBINRELDIR)\
|
||||||
|
--- ghostscript-8.71/base/unixlink.mak 2008-02-29 08:13:08.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/unixlink.mak.ldflags 2010-02-19 10:07:06.646044276 +0000
|
||||||
|
@@ -50,7 +50,7 @@ $(GS_A): $(obj_tr) $(ECHOGS_XE) $(INT_AR
|
||||||
|
# which has limited environment space.
|
||||||
|
ldt_tr=$(PSOBJ)ldt.tr
|
||||||
|
$(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) -w $(ldt_tr) -n - $(CCLD) $(GS_XE_LDFLAGS) $(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)
|
||||||
|
$(ECHOGS_XE) -a $(ldt_tr) -s - $(EXTRALIBS) $(STDLIBS)
|
12
ghostscript-pdf2dsc.patch
Normal file
12
ghostscript-pdf2dsc.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up ghostscript-8.71/lib/pdf2dsc.ps.pdf2dsc ghostscript-8.71/lib/pdf2dsc.ps
|
||||||
|
--- ghostscript-8.71/lib/pdf2dsc.ps.pdf2dsc 2010-02-20 15:50:51.287734970 +0000
|
||||||
|
+++ ghostscript-8.71/lib/pdf2dsc.ps 2010-02-20 15:51:02.902609964 +0000
|
||||||
|
@@ -116,7 +116,7 @@ systemdict /.setsafe known { .setsafe }
|
||||||
|
DSCfile PDFname write==only
|
||||||
|
( \(r\) file { DELAYSAFER { .setsafe } if } stopped pop\n) puts
|
||||||
|
( pdfopen begin\n) puts
|
||||||
|
- ( copy_trailer_attrs\n) puts
|
||||||
|
+ ( process_trailer_attrs\n) puts
|
||||||
|
(%%EndSetup\n) puts
|
||||||
|
|
||||||
|
/.hasPageLabels false def % see "Page Labels" in the PDF Reference
|
39
ghostscript-pdftoraster-exit.patch
Normal file
39
ghostscript-pdftoraster-exit.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
diff -up ghostscript-8.70/cups/pdftoraster.c.pdftoraster-exit ghostscript-8.70/cups/pdftoraster.c
|
||||||
|
--- ghostscript-8.70/cups/pdftoraster.c.pdftoraster-exit 2008-10-17 23:58:21.000000000 +0100
|
||||||
|
+++ ghostscript-8.70/cups/pdftoraster.c 2010-01-25 10:15:42.269209639 +0000
|
||||||
|
@@ -35,6 +35,8 @@ MIT Open Source License - http://www.o
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <cups/raster.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/wait.h>
|
||||||
|
|
||||||
|
#define MAX_CHECK_COMMENT_LINES 20
|
||||||
|
#ifndef GS
|
||||||
|
@@ -123,6 +125,7 @@ int main(int argc, char *argv[], char *e
|
||||||
|
const char* apos;
|
||||||
|
int fds[2];
|
||||||
|
int pid;
|
||||||
|
+ int status;
|
||||||
|
|
||||||
|
parseOpts(argc, argv);
|
||||||
|
|
||||||
|
@@ -502,8 +505,17 @@ int main(int argc, char *argv[], char *e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
+ close (fds[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
- exit(0);
|
||||||
|
+ if (waitpid (pid, &status, 0) == -1) {
|
||||||
|
+ perror (GS);
|
||||||
|
+ exit (1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (WIFEXITED (status))
|
||||||
|
+ exit(WEXITSTATUS (status));
|
||||||
|
+ else
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,29 @@
|
|||||||
|
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
|
||||||
|
@@ -96,10 +96,19 @@ userdict /Fontmap .FontDirectory maxleng
|
||||||
|
% stack: dict file fontname filename|aliasname
|
||||||
|
1 index type /stringtype eq
|
||||||
|
1 index type /nametype eq and 1 index xcheck and
|
||||||
|
- 1 index /run eq 2 index /.runlibfile eq or and {
|
||||||
|
+ 1 index /run eq 2 index /.runlibfile eq 3 index /.runlibfileifexists eq or or and {
|
||||||
|
% This is an inclusion entry.
|
||||||
|
- pop findlibfile { exch pop } { file } ifelse
|
||||||
|
- 2 index exch .readFontmap pop
|
||||||
|
+ 0 index /.runlibfileifexists eq {
|
||||||
|
+ pop findlibfile {
|
||||||
|
+ exch pop
|
||||||
|
+ 2 index exch .readFontmap pop
|
||||||
|
+ } {
|
||||||
|
+ pop
|
||||||
|
+ } ifelse
|
||||||
|
+ } {
|
||||||
|
+ pop findlibfile { exch pop } { file } ifelse
|
||||||
|
+ 2 index exch .readFontmap pop
|
||||||
|
+ } ifelse
|
||||||
|
} {
|
||||||
|
% 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
|
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.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
|
+++ ghostscript-8.64/Resource/Init/gs_init.ps 2009-02-04 11:35:19.000000000 +0000
|
||||||
|
13
ghostscript-tif-fail-close.patch
Normal file
13
ghostscript-tif-fail-close.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -up ghostscript-8.71/base/gdevtfax.c.tif-fail-close ghostscript-8.71/base/gdevtfax.c
|
||||||
|
--- ghostscript-8.71/base/gdevtfax.c.tif-fail-close 2010-03-12 10:57:43.514750465 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevtfax.c 2010-03-12 10:58:38.253627230 +0000
|
||||||
|
@@ -97,7 +97,8 @@ tfax_close(gx_device * pdev)
|
||||||
|
{
|
||||||
|
gx_device_tfax *const tfdev = (gx_device_tfax *)pdev;
|
||||||
|
|
||||||
|
- TIFFCleanup(tfdev->tif);
|
||||||
|
+ if (tfdev->tif)
|
||||||
|
+ TIFFCleanup(tfdev->tif);
|
||||||
|
|
||||||
|
return gdev_prn_close(pdev);
|
||||||
|
}
|
12
ghostscript-tiff-default-strip-size.patch
Normal file
12
ghostscript-tiff-default-strip-size.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up ghostscript-8.71/base/gdevtifs.h.tiff-default-strip-size ghostscript-8.71/base/gdevtifs.h
|
||||||
|
--- ghostscript-8.71/base/gdevtifs.h.tiff-default-strip-size 2010-02-04 17:47:57.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevtifs.h 2010-03-16 09:58:29.269600052 +0000
|
||||||
|
@@ -50,7 +50,7 @@ int tiff_print_page(gx_device_printer *d
|
||||||
|
* Sets the compression tag for TIFF and updates the rows_per_strip tag to
|
||||||
|
* reflect max_strip_size under the new compression scheme.
|
||||||
|
*/
|
||||||
|
-#define TIFF_DEFAULT_STRIP_SIZE 8192
|
||||||
|
+#define TIFF_DEFAULT_STRIP_SIZE 1048576
|
||||||
|
|
||||||
|
int tiff_set_compression(gx_device_printer *pdev,
|
||||||
|
TIFF *tif,
|
59
ghostscript-tiff-fixes.patch
Normal file
59
ghostscript-tiff-fixes.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
diff -up ghostscript-8.71/base/gdevtfnx.c.tiff-fixes ghostscript-8.71/base/gdevtfnx.c
|
||||||
|
--- ghostscript-8.71/base/gdevtfnx.c.tiff-fixes 2010-02-04 17:47:57.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevtfnx.c 2010-03-16 10:04:00.686600827 +0000
|
||||||
|
@@ -105,6 +105,8 @@ tiff12_print_page(gx_device_printer * pd
|
||||||
|
TIFFSetField(tfdev->tif, TIFFTAG_BITSPERSAMPLE, 4);
|
||||||
|
tiff_set_rgb_fields(tfdev);
|
||||||
|
|
||||||
|
+ TIFFCheckpointDirectory(tfdev->tif);
|
||||||
|
+
|
||||||
|
/* Write the page data. */
|
||||||
|
{
|
||||||
|
int y;
|
||||||
|
diff -up ghostscript-8.71/base/gdevtifs.c.tiff-fixes ghostscript-8.71/base/gdevtifs.c
|
||||||
|
--- ghostscript-8.71/base/gdevtifs.c.tiff-fixes 2010-02-04 17:47:57.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevtifs.c 2010-03-16 10:04:00.689600292 +0000
|
||||||
|
@@ -243,8 +243,8 @@ int tiff_set_fields_for_printer(gx_devic
|
||||||
|
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
|
||||||
|
|
||||||
|
TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);
|
||||||
|
- TIFFSetField(tif, TIFFTAG_XRESOLUTION, pdev->x_pixels_per_inch);
|
||||||
|
- TIFFSetField(tif, TIFFTAG_YRESOLUTION, pdev->y_pixels_per_inch);
|
||||||
|
+ TIFFSetField(tif, TIFFTAG_XRESOLUTION, (float)pdev->x_pixels_per_inch);
|
||||||
|
+ TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float)pdev->y_pixels_per_inch);
|
||||||
|
|
||||||
|
{
|
||||||
|
char revs[10];
|
||||||
|
@@ -293,6 +293,8 @@ tiff_print_page(gx_device_printer *dev,
|
||||||
|
if (data == NULL)
|
||||||
|
return_error(gs_error_VMerror);
|
||||||
|
|
||||||
|
+ TIFFCheckpointDirectory(tif);
|
||||||
|
+
|
||||||
|
memset(data, 0, max_size);
|
||||||
|
for (row = 0; row < dev->height; row++) {
|
||||||
|
code = gdev_prn_copy_scan_lines(dev, row, data, size);
|
||||||
|
diff -up ghostscript-8.71/base/gdevtsep.c.tiff-fixes ghostscript-8.71/base/gdevtsep.c
|
||||||
|
--- ghostscript-8.71/base/gdevtsep.c.tiff-fixes 2010-02-04 17:47:57.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gdevtsep.c 2010-03-16 10:04:00.700601143 +0000
|
||||||
|
@@ -1438,6 +1438,10 @@ tiffsep_print_page(gx_device_printer * p
|
||||||
|
return_error(gs_error_VMerror);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ for (comp_num = 0; comp_num < num_comp; comp_num++ )
|
||||||
|
+ TIFFCheckpointDirectory(tfdev->tiff[comp_num]);
|
||||||
|
+ TIFFCheckpointDirectory(tfdev->tiff_comp);
|
||||||
|
+
|
||||||
|
/* Write the page data. */
|
||||||
|
for (y = 0; y < pdev->height; ++y) {
|
||||||
|
code = gdev_prn_get_bits(pdev, y, line, &row);
|
||||||
|
@@ -1603,6 +1607,9 @@ tiffsep1_print_page(gx_device_printer *
|
||||||
|
if (line == NULL || unpacked == NULL || dithered_line == NULL)
|
||||||
|
return_error(gs_error_VMerror);
|
||||||
|
|
||||||
|
+ for (comp_num = 0; comp_num < num_comp; comp_num++ )
|
||||||
|
+ TIFFCheckpointDirectory(tfdev->tiff[comp_num]);
|
||||||
|
+
|
||||||
|
/* Loop for the lines */
|
||||||
|
for (y = 0; y < pdev->height; ++y) {
|
||||||
|
code = gdev_prn_get_bits(pdev, y, line, &row);
|
36
ghostscript-vsnprintf.patch
Normal file
36
ghostscript-vsnprintf.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
diff -up ghostscript-8.71/base/gsmisc.c.vsnprintf ghostscript-8.71/base/gsmisc.c
|
||||||
|
--- ghostscript-8.71/base/gsmisc.c.vsnprintf 2010-01-05 00:52:07.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gsmisc.c 2010-02-17 11:30:13.777615156 +0000
|
||||||
|
@@ -235,7 +235,7 @@ int gs_throw_imp(const char *func, const
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
- vsprintf(msg, fmt, ap);
|
||||||
|
+ vsnprintf(msg, sizeof (msg), fmt, ap);
|
||||||
|
msg[sizeof(msg) - 1] = 0;
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
diff -up ghostscript-8.71/base/gxttfb.c.vsnprintf ghostscript-8.71/base/gxttfb.c
|
||||||
|
--- ghostscript-8.71/base/gxttfb.c.vsnprintf 2009-12-06 19:12:08.000000000 +0000
|
||||||
|
+++ ghostscript-8.71/base/gxttfb.c 2010-02-17 11:30:13.778616076 +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(buf, count);
|
||||||
|
diff -up ghostscript-8.71/base/rinkj/rinkj-byte-stream.c.vsnprintf ghostscript-8.71/base/rinkj/rinkj-byte-stream.c
|
||||||
|
--- ghostscript-8.71/base/rinkj/rinkj-byte-stream.c.vsnprintf 2008-04-04 02:02:16.000000000 +0100
|
||||||
|
+++ ghostscript-8.71/base/rinkj/rinkj-byte-stream.c 2010-02-17 11:30:13.791615392 +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);
|
||||||
|
}
|
361
ghostscript.spec
361
ghostscript.spec
@ -1,18 +1,18 @@
|
|||||||
%define gs_ver 8.70
|
%define gs_ver 8.71
|
||||||
%define gs_dot_ver 8.70
|
%define gs_dot_ver 8.71
|
||||||
%{expand: %%define build_with_freetype %{?_with_freetype:1}%{!?_with_freetype:0}}
|
%{expand: %%define build_with_freetype %{?_with_freetype:1}%{!?_with_freetype:0}}
|
||||||
Summary: A PostScript interpreter and renderer.
|
Summary: A PostScript interpreter and renderer
|
||||||
Name: ghostscript
|
Name: ghostscript
|
||||||
Version: %{gs_ver}
|
Version: %{gs_ver}
|
||||||
|
|
||||||
Release: 1%{?dist}
|
Release: 23%{?dist}
|
||||||
|
|
||||||
# Included CMap data is Redistributable, no modification permitted,
|
# Included CMap data is Redistributable, no modification permitted,
|
||||||
# see http://bugzilla.redhat.com/487510
|
# see http://bugzilla.redhat.com/487510
|
||||||
License: GPLv3+ and Redistributable, no modification permitted
|
License: GPLv3+ and Redistributable, no modification permitted
|
||||||
URL: http://www.ghostscript.com/
|
URL: http://www.ghostscript.com/
|
||||||
Group: Applications/Publishing
|
Group: Applications/Publishing
|
||||||
Source0: ghostscript-%{gs_ver}.tar.bz2
|
Source0: ghostscript-%{gs_ver}.tar.xz
|
||||||
Source2: CIDFnmap
|
Source2: CIDFnmap
|
||||||
Source4: cidfmap
|
Source4: cidfmap
|
||||||
|
|
||||||
@ -24,9 +24,29 @@ Patch5: ghostscript-runlibfileifexists.patch
|
|||||||
Patch6: ghostscript-system-jasper.patch
|
Patch6: ghostscript-system-jasper.patch
|
||||||
Patch7: ghostscript-pksmraw.patch
|
Patch7: ghostscript-pksmraw.patch
|
||||||
Patch8: ghostscript-jbig2dec-nullderef.patch
|
Patch8: ghostscript-jbig2dec-nullderef.patch
|
||||||
Patch9: ghostscript-gs-executable.patch
|
Patch9: ghostscript-iname-segfault.patch
|
||||||
|
Patch10: ghostscript-cups-filters.patch
|
||||||
|
Patch11: ghostscript-CVE-2009-4270.patch
|
||||||
|
Patch12: ghostscript-vsnprintf.patch
|
||||||
|
Patch13: ghostscript-pdftoraster-exit.patch
|
||||||
|
Patch14: ghostscript-ldflags.patch
|
||||||
|
Patch15: ghostscript-pdf2dsc.patch
|
||||||
|
Patch16: ghostscript-cups-realloc-color-depth.patch
|
||||||
|
Patch17: ghostscript-tif-fail-close.patch
|
||||||
|
Patch18: ghostscript-tiff-default-strip-size.patch
|
||||||
|
Patch19: ghostscript-tiff-fixes.patch
|
||||||
|
Patch20: ghostscript-CVE-2010-1628.patch
|
||||||
|
Patch21: ghostscript-jbig2-image-refcount.patch
|
||||||
|
Patch22: ghostscript-SEARCH_HERE_FIRST.patch
|
||||||
|
Patch23: ghostscript--P-.patch
|
||||||
|
Patch24: ghostscript-epstopdf-failure.patch
|
||||||
|
Patch25: ghostscript-bbox-close.patch
|
||||||
|
Patch26: ghostscript-gdevcups-ripcache.patch
|
||||||
|
Patch27: ghostscript-Fontmap.local.patch
|
||||||
|
Patch28: ghostscript-gdevcups-debug-uninit.patch
|
||||||
|
|
||||||
Requires: urw-fonts >= 1.1, ghostscript-fonts
|
Requires: urw-fonts >= 1.1, ghostscript-fonts
|
||||||
|
BuildRequires: xz
|
||||||
BuildRequires: libjpeg-devel, libXt-devel
|
BuildRequires: libjpeg-devel, libXt-devel
|
||||||
BuildRequires: zlib-devel, libpng-devel, unzip, gtk2-devel
|
BuildRequires: zlib-devel, libpng-devel, unzip, gtk2-devel
|
||||||
BuildRequires: glib2-devel, gnutls-devel
|
BuildRequires: glib2-devel, gnutls-devel
|
||||||
@ -61,7 +81,7 @@ install ghostscript, you also need to install the ghostscript-fonts
|
|||||||
package.
|
package.
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Files for developing applications that use ghostscript.
|
Summary: Files for developing applications that use ghostscript
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
|
|
||||||
@ -69,21 +89,31 @@ Group: Development/Libraries
|
|||||||
The header files for developing applications that use ghostscript.
|
The header files for developing applications that use ghostscript.
|
||||||
|
|
||||||
%package doc
|
%package doc
|
||||||
Summary: Documentation for ghostscript.
|
Summary: Documentation for ghostscript
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Group: Documentation
|
Group: Documentation
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
%description doc
|
%description doc
|
||||||
The documentation files that come with ghostscript.
|
The documentation files that come with ghostscript.
|
||||||
|
|
||||||
%package gtk
|
%package gtk
|
||||||
Summary: A GTK-enabled PostScript interpreter and renderer.
|
Summary: A GTK-enabled PostScript interpreter and renderer
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
Group: Applications/Publishing
|
Group: Applications/Publishing
|
||||||
|
|
||||||
%description gtk
|
%description gtk
|
||||||
A GTK-enabled version of Ghostscript, called 'gsx'.
|
A GTK-enabled version of Ghostscript, called 'gsx'.
|
||||||
|
|
||||||
|
%package cups
|
||||||
|
Summary: CUPS filter for interpreting PostScript and PDF
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
Requires: cups
|
||||||
|
Group: System Environment/Daemons
|
||||||
|
|
||||||
|
%description cups
|
||||||
|
CUPS filter and conversion rules for interpreting PostScript and PDF.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{gs_ver}
|
%setup -q -n %{name}-%{gs_ver}
|
||||||
rm -rf libpng zlib jpeg jasper
|
rm -rf libpng zlib jpeg jasper
|
||||||
@ -103,6 +133,7 @@ rm -rf libpng zlib jpeg jasper
|
|||||||
# Define .runlibfileifexists.
|
# Define .runlibfileifexists.
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
|
|
||||||
|
# Use the system jasper library.
|
||||||
%patch6 -p1 -b .system-jasper
|
%patch6 -p1 -b .system-jasper
|
||||||
|
|
||||||
# Fix pksmraw output (bug #308211). Still needed in 8.63.
|
# Fix pksmraw output (bug #308211). Still needed in 8.63.
|
||||||
@ -111,13 +142,76 @@ rm -rf libpng zlib jpeg jasper
|
|||||||
# Applied patch to fix NULL dereference in JBIG2 decoder (bug #501710).
|
# Applied patch to fix NULL dereference in JBIG2 decoder (bug #501710).
|
||||||
%patch8 -p1 -b .jbig2dec-nullderef
|
%patch8 -p1 -b .jbig2dec-nullderef
|
||||||
|
|
||||||
# Fix scripts so they don't get broken on install (bug #502550).
|
# Applied upstream patch to fix iname.c segfault (bug #465311).
|
||||||
%patch9 -p1 -b .gs-executable
|
%patch9 -p1 -b .iname-segfault
|
||||||
|
|
||||||
|
# Install CUPS filter convs files in the correct place.
|
||||||
|
%patch10 -p1 -b .cups-filters
|
||||||
|
|
||||||
|
# Fix debugging output from gdevcups (bug #540760).
|
||||||
|
%patch11 -p1 -b .CVE-2009-4270
|
||||||
|
|
||||||
|
# Harden ghostscript's debugging output functions (bug #540760).
|
||||||
|
%patch12 -p1 -b .vsnprintf
|
||||||
|
|
||||||
|
# Fixed pdftoraster so that it waits for its sub-process to exit.
|
||||||
|
%patch13 -p1 -b .pdftoraster-exit
|
||||||
|
|
||||||
|
# Fixed LDFLAGS when building dynamically linked executables (bug #565935).
|
||||||
|
%patch14 -p1 -b .ldflags
|
||||||
|
|
||||||
|
# Fixed pdf2dsc.ps (bug #565935).
|
||||||
|
%patch15 -p1 -b .pdf2dsc
|
||||||
|
|
||||||
|
# Reallocate memory in gdevcups when color depth changes (bug #563313).
|
||||||
|
%patch16 -p1 -b .cups-realloc-color-depth
|
||||||
|
|
||||||
|
# Don't segfault closing tiffg3 device if opening failed (bug #571520).
|
||||||
|
%patch17 -p1 -b .tif-fail-close
|
||||||
|
|
||||||
|
# Restore the TIFF default strip size of 0 (bug #571520).
|
||||||
|
%patch18 -p1 -b .tiff-default-strip-size
|
||||||
|
|
||||||
|
# Backported some more TIFF fixes (bug #573970).
|
||||||
|
%patch19 -p1 -b .tiff-fixes
|
||||||
|
|
||||||
|
# Applied patch to fix CVE-2010-1628 (memory corruption at PS stack
|
||||||
|
# overflow, bug #592492).
|
||||||
|
%patch20 -p1 -b .CVE-2010-1628
|
||||||
|
|
||||||
|
# Avoid another NULL pointer dereference in jbig2 code (bug #621569).
|
||||||
|
%patch21 -p1 -b .jbig2-image-refcount
|
||||||
|
|
||||||
|
# Change SEARCH_HERE_FIRST default to make -P- default instead of -P
|
||||||
|
# (bug #599564).
|
||||||
|
%patch22 -p1
|
||||||
|
|
||||||
|
# Use -P- and -dSAFER in scripts (bug #599564).
|
||||||
|
%patch23 -p1 -b .-P-
|
||||||
|
|
||||||
|
# Avoid epstopdf failure using upstream patch (bug #627390).
|
||||||
|
%patch24 -p1 -b .epstopdf-failure
|
||||||
|
|
||||||
|
# Applied patch to fix NULL dereference in bbox driver (bug #591624).
|
||||||
|
%patch25 -p1 -b .bbox-close
|
||||||
|
|
||||||
|
# Applied patch to let gdevcups use automatic memory allocation. Use
|
||||||
|
# RIPCache=auto in /etc/cups/cupsd.conf to enable.
|
||||||
|
%patch26 -p1 -b .gdevcups-ripcache
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# package manifest.
|
||||||
|
%patch27 -p1
|
||||||
|
|
||||||
|
# gdevcups: don't use uninitialized variables in debugging output.
|
||||||
|
%patch28 -p1 -b .gdevcups-debug-uninit
|
||||||
|
|
||||||
# Convert manual pages to UTF-8
|
# Convert manual pages to UTF-8
|
||||||
from8859_1() {
|
from8859_1() {
|
||||||
iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_"
|
iconv -f iso-8859-1 -t utf-8 < "$1" > "${1}_"
|
||||||
mv "${1}_" "$1"
|
mv "${1}_" "$1"
|
||||||
}
|
}
|
||||||
for i in man/de/*.1; do from8859_1 "$i"; done
|
for i in man/de/*.1; do from8859_1 "$i"; done
|
||||||
|
|
||||||
@ -135,34 +229,34 @@ EXTRACFLAGS="-fno-strict-aliasing"
|
|||||||
|
|
||||||
FONTPATH=
|
FONTPATH=
|
||||||
for path in \
|
for path in \
|
||||||
%{_datadir}/fonts/default/%{name} \
|
%{_datadir}/fonts/default/%{name} \
|
||||||
%{_datadir}/fonts/default/Type1 \
|
%{_datadir}/fonts/default/Type1 \
|
||||||
%{_datadir}/fonts/default/amspsfnt/pfb \
|
%{_datadir}/fonts/default/amspsfnt/pfb \
|
||||||
%{_datadir}/fonts/default/cmpsfont/pfb \
|
%{_datadir}/fonts/default/cmpsfont/pfb \
|
||||||
%{_datadir}/fonts \
|
%{_datadir}/fonts \
|
||||||
%{_datadir}/%{name}/conf.d \
|
%{_datadir}/%{name}/conf.d \
|
||||||
%{_sysconfdir}/%{name} \
|
%{_sysconfdir}/%{name} \
|
||||||
%{_sysconfdir}/%{name}/%{gs_dot_ver}
|
%{_sysconfdir}/%{name}/%{gs_dot_ver}
|
||||||
do
|
do
|
||||||
FONTPATH="$FONTPATH${FONTPATH:+:}$path"
|
FONTPATH="$FONTPATH${FONTPATH:+:}$path"
|
||||||
done
|
done
|
||||||
%configure --with-ijs --enable-dynamic --with-fontpath="$FONTPATH" \
|
%configure --with-ijs --enable-dynamic --with-fontpath="$FONTPATH" \
|
||||||
--with-drivers=ALL --disable-compile-inits \
|
--with-drivers=ALL --disable-compile-inits --with-system-libtiff \
|
||||||
CFLAGS="$CFLAGS $EXTRACFLAGS"
|
CFLAGS="$CFLAGS $EXTRACFLAGS"
|
||||||
|
|
||||||
# Build IJS
|
# Build IJS
|
||||||
cd ijs
|
cd ijs
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
%configure --enable-shared --enable-static
|
%configure --enable-shared --disable-static
|
||||||
make
|
make
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
%if %{build_with_freetype}
|
%if %{build_with_freetype}
|
||||||
FT_CFLAGS=$(pkg-config --cflags freetype2)
|
FT_CFLAGS=$(pkg-config --cflags freetype2)
|
||||||
make so RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix} \
|
make so RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix} \
|
||||||
FT_BRIDGE=1 FT_CFLAGS="$FT_CFLAGS" FT_LIB=freetype
|
FT_BRIDGE=1 FT_CFLAGS="$FT_CFLAGS" FT_LIB=freetype
|
||||||
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix} \
|
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix} \
|
||||||
FT_BRIDGE=1 FT_CFLAGS="$FT_CFLAGS" FT_LIB=freetype
|
FT_BRIDGE=1 FT_CFLAGS="$FT_CFLAGS" FT_LIB=freetype
|
||||||
%else
|
%else
|
||||||
make so RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix}
|
make so RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix}
|
||||||
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix}
|
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS $EXTRAFLAGS" prefix=%{_prefix}
|
||||||
@ -177,19 +271,19 @@ mkdir -p $RPM_BUILD_ROOT/{%{_libdir},%{_includedir}/ijs}
|
|||||||
|
|
||||||
make install soinstall \
|
make install soinstall \
|
||||||
%{?_with_freetype:FT_BRIDGE=1} \
|
%{?_with_freetype:FT_BRIDGE=1} \
|
||||||
prefix=$RPM_BUILD_ROOT%{_prefix} \
|
prefix=$RPM_BUILD_ROOT%{_prefix} \
|
||||||
mandir=$RPM_BUILD_ROOT%{_mandir} \
|
mandir=$RPM_BUILD_ROOT%{_mandir} \
|
||||||
datadir=$RPM_BUILD_ROOT%{_datadir} \
|
datadir=$RPM_BUILD_ROOT%{_datadir} \
|
||||||
gsincludedir=$RPM_BUILD_ROOT%{_includedir}/ghostscript/ \
|
gsincludedir=$RPM_BUILD_ROOT%{_includedir}/ghostscript/ \
|
||||||
bindir=$RPM_BUILD_ROOT%{_bindir} \
|
bindir=$RPM_BUILD_ROOT%{_bindir} \
|
||||||
libdir=$RPM_BUILD_ROOT%{_libdir} \
|
libdir=$RPM_BUILD_ROOT%{_libdir} \
|
||||||
docdir=$RPM_BUILD_ROOT%{_docdir}/%{name}-%{gs_dot_ver} \
|
docdir=$RPM_BUILD_ROOT%{_docdir}/%{name}-%{gs_dot_ver} \
|
||||||
gsdir=$RPM_BUILD_ROOT%{_datadir}/%{name} \
|
gsdir=$RPM_BUILD_ROOT%{_datadir}/%{name} \
|
||||||
gsdatadir=$RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver} \
|
gsdatadir=$RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver} \
|
||||||
gssharedir=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{gs_dot_ver} \
|
gssharedir=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{gs_dot_ver} \
|
||||||
CUPSSERVERROOT=$RPM_BUILD_ROOT`cups-config --serverroot` \
|
CUPSSERVERROOT=$RPM_BUILD_ROOT`cups-config --serverroot` \
|
||||||
CUPSSERVERBIN=$RPM_BUILD_ROOT`cups-config --serverbin` \
|
CUPSSERVERBIN=$RPM_BUILD_ROOT`cups-config --serverbin` \
|
||||||
CUPSDATA=$RPM_BUILD_ROOT`cups-config --datadir`
|
CUPSDATA=$RPM_BUILD_ROOT`cups-config --datadir`
|
||||||
|
|
||||||
mv -f $RPM_BUILD_ROOT%{_bindir}/gsc $RPM_BUILD_ROOT%{_bindir}/gs
|
mv -f $RPM_BUILD_ROOT%{_bindir}/gsc $RPM_BUILD_ROOT%{_bindir}/gs
|
||||||
|
|
||||||
@ -198,7 +292,7 @@ cd ijs
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
echo ".so man1/gs.1" > $RPM_BUILD_ROOT/%{_mandir}/man1/ghostscript.1
|
echo ".so man1/gs.1" > $RPM_BUILD_ROOT/%{_mandir}/man1/ghostscript.1
|
||||||
ln -sf gs $RPM_BUILD_ROOT/usr/bin/ghostscript
|
ln -sf gs $RPM_BUILD_ROOT%{_bindir}/ghostscript
|
||||||
|
|
||||||
# Rename an original cidfmap to cidfmap.GS
|
# Rename an original cidfmap to cidfmap.GS
|
||||||
mv $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resource/Init/cidfmap{,.GS}
|
mv $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resource/Init/cidfmap{,.GS}
|
||||||
@ -211,25 +305,23 @@ install -m0644 %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/%{name}/%{gs_dot_ver}/Resou
|
|||||||
mkdir -p $RPM_BUILD_ROOT%{_includedir}/ghostscript
|
mkdir -p $RPM_BUILD_ROOT%{_includedir}/ghostscript
|
||||||
install -m0644 base/errors.h $RPM_BUILD_ROOT%{_includedir}/ghostscript
|
install -m0644 base/errors.h $RPM_BUILD_ROOT%{_includedir}/ghostscript
|
||||||
|
|
||||||
# Don't ship pkgconfig files.
|
# Documentation
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/pkgconfig/ijs.pc
|
install -m0644 doc/COPYING $RPM_BUILD_ROOT%{_docdir}/%{name}-%{gs_dot_ver}
|
||||||
|
|
||||||
|
# Don't ship pkgconfig or libtool la files.
|
||||||
|
rm -f $RPM_BUILD_ROOT%{_libdir}/pkgconfig/ijs.pc \
|
||||||
|
$RPM_BUILD_ROOT%{_libdir}/libijs.la
|
||||||
|
|
||||||
# Don't ship ijs example client or server
|
# Don't ship ijs example client or server
|
||||||
rm -f $RPM_BUILD_ROOT%{_bindir}/ijs_{client,server}_example
|
rm -f $RPM_BUILD_ROOT%{_bindir}/ijs_{client,server}_example
|
||||||
|
|
||||||
# Don't ship files that get shipped in the cups package.
|
|
||||||
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/cups
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/cups/filter/pstoraster
|
|
||||||
rm -f $RPM_BUILD_ROOT/usr/lib/cups/filter/pstoraster
|
|
||||||
|
|
||||||
# Don't ship URW fonts; we already have them.
|
# Don't ship URW fonts; we already have them.
|
||||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Font
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Font
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/conf.d
|
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ghostscript/%{gs_dot_ver}
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/ghostscript/%{gs_dot_ver}
|
touch $RPM_BUILD_ROOT%{_sysconfdir}/ghostscript/%{gs_dot_ver}/Fontmap.local
|
||||||
touch $RPM_BUILD_ROOT/etc/ghostscript/%{gs_dot_ver}/Fontmap.local
|
touch $RPM_BUILD_ROOT%{_sysconfdir}/ghostscript/%{gs_dot_ver}/cidfmap.local
|
||||||
touch $RPM_BUILD_ROOT/etc/ghostscript/%{gs_dot_ver}/cidfmap.local
|
touch $RPM_BUILD_ROOT%{_sysconfdir}/ghostscript/%{gs_dot_ver}/CIDFnmap.local
|
||||||
touch $RPM_BUILD_ROOT/etc/ghostscript/%{gs_dot_ver}/CIDFnmap.local
|
|
||||||
|
|
||||||
# The man/de/man1 symlinks are broken (bug #66238).
|
# The man/de/man1 symlinks are broken (bug #66238).
|
||||||
find $RPM_BUILD_ROOT%{_mandir}/de/man1 -type l | xargs rm -f
|
find $RPM_BUILD_ROOT%{_mandir}/de/man1 -type l | xargs rm -f
|
||||||
@ -238,11 +330,11 @@ find $RPM_BUILD_ROOT%{_mandir}/de/man1 -type l | xargs rm -f
|
|||||||
rm -f $RPM_BUILD_ROOT%{_bindir}/fixmswrd.pl
|
rm -f $RPM_BUILD_ROOT%{_bindir}/fixmswrd.pl
|
||||||
|
|
||||||
MAIN_PWD=`pwd`
|
MAIN_PWD=`pwd`
|
||||||
(cd $RPM_BUILD_ROOT; find ./usr/share/ghostscript/%{gs_dot_ver}/Resource -type f | \
|
(cd $RPM_BUILD_ROOT; find .%{_datadir}/ghostscript/%{gs_dot_ver}/Resource -type f | \
|
||||||
sed -e 's/\.//;' | grep -v Fontmap | grep -v gs_init.ps > $MAIN_PWD/rpm.sharelist
|
sed -e 's/\.//;' | grep -v Fontmap | grep -v gs_init.ps > $MAIN_PWD/rpm.sharelist
|
||||||
find .%{_bindir}/ | sed -e 's/\.//;' | \
|
find .%{_bindir}/ | sed -e 's/\.//;' | \
|
||||||
grep -v '/$\|/hpijs$\|/gsx$\|/ijs-config$' \
|
grep -v '/$\|/hpijs$\|/gsx$\|/ijs-config$' \
|
||||||
>> $MAIN_PWD/rpm.sharelist)
|
>> $MAIN_PWD/rpm.sharelist)
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
@ -253,15 +345,18 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
%files -f rpm.sharelist
|
%files -f rpm.sharelist
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%dir /etc/ghostscript
|
%dir %{_sysconfdir}/ghostscript
|
||||||
%dir /etc/ghostscript/%{gs_dot_ver}
|
%dir %{_sysconfdir}/ghostscript/%{gs_dot_ver}
|
||||||
%dir %{_datadir}/ghostscript
|
|
||||||
%dir %{_datadir}/ghostscript/conf.d
|
|
||||||
%dir %{_datadir}/ghostscript/%{gs_dot_ver}
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}
|
||||||
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource
|
||||||
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init
|
||||||
%config %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init/gs_init.ps
|
%config %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init/gs_init.ps
|
||||||
%config %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init/Fontmap*
|
%config %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Init/Fontmap*
|
||||||
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/CMap
|
||||||
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/ColorSpace
|
||||||
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Decoding
|
||||||
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/Encoding
|
||||||
|
%dir %{_datadir}/ghostscript/%{gs_dot_ver}/Resource/SubstCID
|
||||||
%{_datadir}/ghostscript/%{gs_dot_ver}/lib
|
%{_datadir}/ghostscript/%{gs_dot_ver}/lib
|
||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
%lang(de) %{_mandir}/de/man*/*
|
%lang(de) %{_mandir}/de/man*/*
|
||||||
@ -269,10 +364,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_libdir}/libijs-*.so*
|
%{_libdir}/libijs-*.so*
|
||||||
%dir %{_libdir}/%{name}
|
%dir %{_libdir}/%{name}
|
||||||
%{_libdir}/%{name}/%{gs_dot_ver}
|
%{_libdir}/%{name}/%{gs_dot_ver}
|
||||||
/usr/lib/cups/filter/pstopxl
|
%config(noreplace) %{_sysconfdir}/ghostscript/%{gs_dot_ver}/*
|
||||||
%{_datadir}/cups/model/pxl*
|
|
||||||
%config(noreplace) /etc/ghostscript/%{gs_dot_ver}/*
|
|
||||||
/usr/lib/cups/filter/pdftoraster
|
|
||||||
|
|
||||||
%files doc
|
%files doc
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -283,6 +375,14 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%{_bindir}/gsx
|
%{_bindir}/gsx
|
||||||
|
|
||||||
|
%files cups
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_datadir}/cups/model/pxl*
|
||||||
|
%{_datadir}/cups/mime/*.convs
|
||||||
|
# This really is /usr/lib, not _libdir -- it's more of a libexec usage
|
||||||
|
# but upstream CUPS won't use libexec.
|
||||||
|
/usr/lib/cups/filter/*
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%dir %{_includedir}/ghostscript
|
%dir %{_includedir}/ghostscript
|
||||||
@ -291,10 +391,133 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_includedir}/ijs/*
|
%{_includedir}/ijs/*
|
||||||
%{_bindir}/ijs-config
|
%{_bindir}/ijs-config
|
||||||
%{_libdir}/libijs.so
|
%{_libdir}/libijs.so
|
||||||
%{_libdir}/libijs.*a
|
|
||||||
%{_libdir}/libgs.so
|
%{_libdir}/libgs.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Feb 1 2011 Tim Waugh <twaugh@redhat.com> 8.71-23
|
||||||
|
- Don't ship backup files for SEARCH_HERE_FIRST patch.
|
||||||
|
|
||||||
|
* Fri Nov 26 2010 Tim Waugh <twaugh@redhat.com> 8.71-22
|
||||||
|
- Fixed more summaries ending with ".".
|
||||||
|
|
||||||
|
* Thu Nov 25 2010 Tim Waugh <twaugh@redhat.com> 8.71-21
|
||||||
|
- Reverted gdevcups-segfaults patch from bug #639593 as it causes
|
||||||
|
artifacts in multi-page PDF documents (bug #655403). Even picking
|
||||||
|
just svn revision 11149 causes this problem.
|
||||||
|
|
||||||
|
* Thu Oct 21 2010 Tim Waugh <twaugh@redhat.com> 8.71-20
|
||||||
|
- Own more directories (bug #645075).
|
||||||
|
|
||||||
|
* Thu Oct 14 2010 Tim Waugh <twaugh@redhat.com> 8.71-19
|
||||||
|
- Apply some fixes from upstream to avoid gdevcups
|
||||||
|
segfaults (bug #639593).
|
||||||
|
- gdevcups: don't use uninitialized variables in debugging output
|
||||||
|
(Ghostscript bug #691683).
|
||||||
|
|
||||||
|
* Fri Oct 1 2010 Tim Waugh <twaugh@redhat.com> 8.71-18
|
||||||
|
- Reverted incorrect change introduced to fix bug #635786.
|
||||||
|
|
||||||
|
* Thu Sep 30 2010 Tim Waugh <twaugh@redhat.com> 8.71-17
|
||||||
|
- Don't use carriage return in ps2epsi output (bug #635786).
|
||||||
|
- Include more documentation (bug #634354).
|
||||||
|
|
||||||
|
* Mon Sep 13 2010 Tim Waugh <twaugh@redhat.com> 8.71-16
|
||||||
|
- Pulled in gs_fonts.ps modification for .runlibfileifexists from
|
||||||
|
OpenSUSE package (bug #610301).
|
||||||
|
|
||||||
|
* Fri Sep 3 2010 Tim Waugh <twaugh@redhat.com> 8.71-15
|
||||||
|
- Restored Fontmap.local patch, incorrectly dropped after
|
||||||
|
ghostscript-8.15.4-3 (bug #610301).
|
||||||
|
- Applied patch to let gdevcups use automatic memory allocation. Use
|
||||||
|
RIPCache=auto in /etc/cups/cupsd.conf to enable.
|
||||||
|
- Applied patch to fix NULL dereference in bbox driver (bug #591624).
|
||||||
|
- Applied upstream patch to fix iname.c segfault (bug #465311).
|
||||||
|
|
||||||
|
* Thu Aug 26 2010 Tim Waugh <twaugh@redhat.com> 8.71-14
|
||||||
|
- Avoid epstopdf failure using upstream patch (bug #627390).
|
||||||
|
- More upstream fixes for bug #599564.
|
||||||
|
|
||||||
|
* Wed Aug 25 2010 Tim Waugh <twaugh@redhat.com> 8.71-13
|
||||||
|
- Fix implementation of -P- (bug #599564).
|
||||||
|
- Use -P- and -dSAFER in scripts (bug #599564).
|
||||||
|
|
||||||
|
* Wed Aug 25 2010 Tim Waugh <twaugh@redhat.com> 8.71-12
|
||||||
|
- Change SEARCH_HERE_FIRST default to make -P- default instead of -P
|
||||||
|
(bug #599564).
|
||||||
|
- Removed redundant gs-executable patch (bug #502550).
|
||||||
|
|
||||||
|
* Thu Aug 5 2010 Tim Waugh <twaugh@redhat.com> 8.71-11
|
||||||
|
- Avoid another NULL pointer dereference in jbig2 code (bug #621569).
|
||||||
|
|
||||||
|
* Fri Jul 16 2010 Tim Waugh <twaugh@redhat.com> 8.71-10
|
||||||
|
- Applied patch to fix CVE-2010-1628 (memory corruption at PS stack
|
||||||
|
overflow, bug #592492).
|
||||||
|
|
||||||
|
* Tue Mar 16 2010 Tim Waugh <twaugh@redhat.com> 8.71-9
|
||||||
|
- Backported some more TIFF fixes (bug #573970).
|
||||||
|
- Use upstream fix for TIFF default strip size (bug #571520).
|
||||||
|
|
||||||
|
* Mon Mar 15 2010 Tim Waugh <twaugh@redhat.com> 8.71-8
|
||||||
|
- Restore the TIFF default strip size of 0 (bug #571520).
|
||||||
|
- Don't segfault closing tiffg3 device if opening failed (bug #571520).
|
||||||
|
- Don't revert gdevcups y-axis change (bug #541604).
|
||||||
|
- Reallocate memory in gdevcups when color depth changes (bug #563313).
|
||||||
|
|
||||||
|
* Fri Mar 5 2010 Tim Waugh <twaugh@redhat.com> 8.71-7
|
||||||
|
- Don't own the %%{_datadir}/ghostscript or
|
||||||
|
%%{_datadir}/ghostscript/conf.d directories as the filesystem
|
||||||
|
package already does (bug #569442).
|
||||||
|
|
||||||
|
* Wed Mar 3 2010 Tim Waugh <twaugh@redhat.com> 8.71-6
|
||||||
|
- Fixed summary.
|
||||||
|
- Fixed macros in changelog.
|
||||||
|
- Avoid mixed spaces and tabs.
|
||||||
|
- Ship COPYING file.
|
||||||
|
- Added comments for all patches.
|
||||||
|
- More consistent macro use.
|
||||||
|
|
||||||
|
* Mon Feb 22 2010 Tim Waugh <twaugh@redhat.com> 8.71-5
|
||||||
|
- The doc subpackage is now noarch (bug #567179).
|
||||||
|
|
||||||
|
* Sat Feb 20 2010 Tim Waugh <twaugh@redhat.com> 8.71-4
|
||||||
|
- Actually revert the upstream gdevcups changes (bug #563313).
|
||||||
|
- Fixed pdf2dsc.ps (bug #565935).
|
||||||
|
- Use fixed patch for LDFLAGS to make sure libgs.so gets a soname
|
||||||
|
(bug #565935).
|
||||||
|
|
||||||
|
* Fri Feb 19 2010 Tim Waugh <twaugh@redhat.com> 8.71-3
|
||||||
|
- Fixed LDFLAGS when building dynamically linked executables (bug #565935).
|
||||||
|
|
||||||
|
* Wed Feb 17 2010 Tim Waugh <twaugh@redhat.com> 8.71-2
|
||||||
|
- Use system libtiff.
|
||||||
|
|
||||||
|
* Wed Feb 17 2010 Tim Waugh <twaugh@redhat.com> 8.71-1
|
||||||
|
- 8.71 (bug #565935).
|
||||||
|
|
||||||
|
* Tue Feb 16 2010 Tim Waugh <twaugh@redhat.com> 8.70-7
|
||||||
|
- Reverted gdevcups duplex changes as they cause a regression
|
||||||
|
(see bug #563313).
|
||||||
|
|
||||||
|
* Mon Jan 25 2010 Tim Waugh <twaugh@redhat.com> 8.70-6
|
||||||
|
- Fixed pdftoraster so that it waits for its sub-process to exit.
|
||||||
|
- Another gdevcups duplex fix from upstream revision 10631
|
||||||
|
(bug #541604).
|
||||||
|
|
||||||
|
* Fri Jan 22 2010 Tim Waugh <twaugh@redhat.com> 8.70-5
|
||||||
|
- Don't build static library for ijs (bug #556051).
|
||||||
|
|
||||||
|
* Thu Jan 21 2010 Tim Waugh <twaugh@redhat.com> 8.70-4
|
||||||
|
- Fixed gdevcups duplex output (bug #541604) by backporting upstream
|
||||||
|
revision 10625.
|
||||||
|
|
||||||
|
* Thu Dec 24 2009 Tim Waugh <twaugh@redhat.com> 8.70-3
|
||||||
|
- Don't ship libtool la files (bug #542674).
|
||||||
|
- Fix debugging output from gdevcups (CVE-2009-4270, bug #540760).
|
||||||
|
- Harden ghostscript's debugging output functions (bug #540760).
|
||||||
|
|
||||||
|
* Thu Oct 15 2009 Tim Waugh <twaugh@redhat.com> 8.70-2
|
||||||
|
- New cups sub-package for pstoraster/pdftoraster/pstopxl.
|
||||||
|
|
||||||
* Mon Aug 3 2009 Tim Waugh <twaugh@redhat.com> 8.70-1
|
* Mon Aug 3 2009 Tim Waugh <twaugh@redhat.com> 8.70-1
|
||||||
- 8.70.
|
- 8.70.
|
||||||
- License has changed to GPLv3+. Packages containing programs that
|
- License has changed to GPLv3+. Packages containing programs that
|
||||||
@ -906,7 +1129,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- Fix gimp-print-4.2.0 so that it builds without cups-config.
|
- Fix gimp-print-4.2.0 so that it builds without cups-config.
|
||||||
|
|
||||||
* Sat Feb 2 2002 Bill Nottingham <notting@redhat.com> 6.52-4
|
* Sat Feb 2 2002 Bill Nottingham <notting@redhat.com> 6.52-4
|
||||||
- do condrestart in %postun, not %post
|
- do condrestart in %%postun, not %%post
|
||||||
|
|
||||||
* Fri Feb 1 2002 Bernhard Rosenkraenzer <bero@redhat.com> 6.52-3
|
* Fri Feb 1 2002 Bernhard Rosenkraenzer <bero@redhat.com> 6.52-3
|
||||||
- Restart service cups after installing gimp-print-cups
|
- Restart service cups after installing gimp-print-cups
|
||||||
@ -1008,9 +1231,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
* Thu Feb 8 2001 Crutcher Dunnavant <crutcher@redhat.com>
|
* Thu Feb 8 2001 Crutcher Dunnavant <crutcher@redhat.com>
|
||||||
- merged in some patches that got away:
|
- merged in some patches that got away:
|
||||||
- * Fri Sep 1 2000 Mitsuo Hamada <mhamada@redhat.com>
|
* Fri Sep 1 2000 Mitsuo Hamada <mhamada@redhat.com>
|
||||||
- add support JIS B size
|
- add support JIS B size
|
||||||
- fix the problem of reconverting GNUPLOT output
|
- fix the problem of reconverting GNUPLOT output
|
||||||
|
|
||||||
* Thu Feb 8 2001 Crutcher Dunnavant <crutcher@redhat.com>
|
* Thu Feb 8 2001 Crutcher Dunnavant <crutcher@redhat.com>
|
||||||
- switched to japanese for everybody
|
- switched to japanese for everybody
|
||||||
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
|||||||
2fbae60417d42779f6488ab897dcaaf6 acro5-cmaps-2001.tar.gz
|
2fbae60417d42779f6488ab897dcaaf6 acro5-cmaps-2001.tar.gz
|
||||||
dfc93dd2aaaf2b86d2fd55f654c13261 adobe-cmaps-200406.tar.gz
|
dfc93dd2aaaf2b86d2fd55f654c13261 adobe-cmaps-200406.tar.gz
|
||||||
526366f8cb4fda0d3d293597cc5b984b ghostscript-8.70.tar.bz2
|
5005d68f7395c2bfc4b05c1a60d9b6ba ghostscript-8.71.tar.xz
|
||||||
|
Loading…
Reference in New Issue
Block a user