From 7cf411250e613bd365f7037ed810d655c004a7a7 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Tue, 28 Mar 2017 15:21:58 +0200 Subject: [PATCH 001/197] rebuild for poppler 0.53.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 266f03d..600af4a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.13.4 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -280,6 +280,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Mar 28 2017 David Tardon - 1.13.4-2 +- rebuild for poppler 0.53.0 + * Fri Feb 24 2017 Zdenek Dohnal - 1.13.4-1 - rebase to 1.13.4 - 1426567 - Added queues are not marked as remote ones From 791cf659d49ab11e3aecb2f5afd4c0ca563e013e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 28 Apr 2017 17:41:19 +0200 Subject: [PATCH 002/197] rebase to 1.13.5 --- .gitignore | 1 + cups-filters-apremotequeueid.patch | 42 ------------------------------ cups-filters.spec | 20 +++++--------- sources | 2 +- 4 files changed, 9 insertions(+), 56 deletions(-) delete mode 100644 cups-filters-apremotequeueid.patch diff --git a/.gitignore b/.gitignore index 25ef1e2..a66f87b 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ /cups-filters-1.13.2.tar.xz /cups-filters-1.13.3.tar.xz /cups-filters-1.13.4.tar.xz +/cups-filters-1.13.5.tar.xz diff --git a/cups-filters-apremotequeueid.patch b/cups-filters-apremotequeueid.patch deleted file mode 100644 index 62deee5..0000000 --- a/cups-filters-apremotequeueid.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -up cups-filters-1.13.4/utils/cups-browsed.c.apremotequeueid cups-filters-1.13.4/utils/cups-browsed.c ---- cups-filters-1.13.4/utils/cups-browsed.c.apremotequeueid 2017-02-24 12:14:22.099865138 +0100 -+++ cups-filters-1.13.4/utils/cups-browsed.c 2017-02-24 12:18:44.039943820 +0100 -@@ -1,4 +1,4 @@ --/*** -+ /*** - This file is part of cups-filters. - - This file is free software; you can redistribute it and/or modify it -@@ -3491,7 +3491,8 @@ gboolean handle_cups_queues(gpointer unu - cups_job_t *jobs; - ipp_t *request; - time_t current_time = time(NULL); -- int i, new_cupsfilter_line_inserted, cont_line_read, want_raw; -+ int i, new_cupsfilter_line_inserted, ap_remote_queue_id_line_inserted, -+ cont_line_read, want_raw; - char *disabled_str, *ptr, *prefix; - const char *loadedppd = NULL; - int pass_through_ppd; -@@ -3813,6 +3814,7 @@ gboolean handle_cups_queues(gpointer unu - " and inhibiting client-side filtering of the job" : ""), - buf); - new_cupsfilter_line_inserted = 0; -+ ap_remote_queue_id_line_inserted = 0; - cont_line_read = 0; - while (cupsFileGets(in, line, sizeof(line))) { - if (pass_through_ppd == 1 && -@@ -3896,6 +3898,14 @@ gboolean handle_cups_queues(gpointer unu - cupsFilePrintf(out, "%s\n", line); - } else if (cont_line_read == 0 || strncmp(line, "*End", 4)) { - cont_line_read = 0; -+ /* Write an "APRemoteQueueID" line to make this queue marked -+ as remote printer by CUPS */ -+ if (strncmp(line, "*%", 2) && -+ strncmp(line, "*PPD-Adobe:", 11) && -+ ap_remote_queue_id_line_inserted == 0) { -+ ap_remote_queue_id_line_inserted = 1; -+ cupsFilePrintf(out, "*APRemoteQueueID: \"\"\n"); -+ } - /* Simply write out the line as we read it */ - cupsFilePrintf(out, "%s\n", line); - } diff --git a/cups-filters.spec b/cups-filters.spec index 600af4a..0e3f014 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.13.4 -Release: 2%{?dist} +Version: 1.13.5 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,8 +20,6 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -Patch01: cups-filters-apremotequeueid.patch - Requires: cups-filters-libs%{?_isa} = %{version}-%{release} # Obsolete cups-php (bug #971741) @@ -73,7 +71,7 @@ Requires: poppler-utils Requires: liberation-mono-fonts # pstopdf -Requires: bc grep sed +Requires: bc grep sed which # cups-browsed Requires(post): systemd @@ -116,7 +114,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q -%patch01 -p1 -b .apremotequeueid %build # work-around Rpath @@ -155,12 +152,6 @@ install -p -m 644 utils/cups-browsed.service %{buildroot}%{_unitdir} # create it temporarily as a relative symlink ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip -# imagetobrf is going to be mapped as /usr/lib/cups/filter/imagetoubrl -ln -sf imagetobrf %{buildroot}%{_cups_serverbin}/filter/imagetoubrl - -# textbrftoindex3 is going to be mapped as /usr/lib/cups/filter/textbrftoindexv4 -ln -sf textbrftoindexv3 %{buildroot}%{_cups_serverbin}/filter/textbrftoindexv4 - # Don't ship urftopdf for now (bug #1002947). rm -f %{buildroot}%{_cups_serverbin}/filter/urftopdf sed -i '/urftopdf/d' %{buildroot}%{_datadir}/cups/mime/cupsfilters.convs @@ -239,7 +230,7 @@ fi %{_datadir}/cups/ppdc/imagemagick.defs %{_datadir}/cups/ppdc/index.defs %{_datadir}/cups/ppdc/liblouis.defs -%{_datadir}/cups/ppdc/liblouis1.defs +%{_datadir}/cups/ppdc/liblouis1.defs.gen.in %{_datadir}/cups/ppdc/liblouis2.defs %{_datadir}/cups/ppdc/liblouis3.defs %{_datadir}/cups/ppdc/liblouis4.defs @@ -280,6 +271,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Apr 28 2017 Zdenek Dohnal - 1.13.5-1 +- rebase to 1.13.5 + * Tue Mar 28 2017 David Tardon - 1.13.4-2 - rebuild for poppler 0.53.0 diff --git a/sources b/sources index 328443d..5b33ade 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.13.4.tar.xz) = 848451193c9f0b0f397bc2c8efafab20112525eb2357892b5c46a4900d3d7e4ef52e537353c04779de2d17c8918cb1fe653e3c8db81f6ef246deca7e4241ce3b +SHA512 (cups-filters-1.13.5.tar.xz) = 1870b16ad64bc46068c8a74be7a112790a6ffc0be0e14cd858d83013b12e1c51efd905fbc4e189a42558814694348a9ef533b6fe504ef7bce3b4da149e0b3ea6 From 70197ea57bb4a14ee69604019ffbc83e812e9554 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 17 May 2017 09:38:49 +0200 Subject: [PATCH 003/197] rebase to 1.14.0 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a66f87b..92e0b0c 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ /cups-filters-1.13.3.tar.xz /cups-filters-1.13.4.tar.xz /cups-filters-1.13.5.tar.xz +/cups-filters-1.14.0.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 0e3f014..ece21f5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.13.5 +Version: 1.14.0 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -271,6 +271,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed May 17 2017 Zdenek Dohnal - 1.14.0-1 +- rebase to 1.14.0 + * Fri Apr 28 2017 Zdenek Dohnal - 1.13.5-1 - rebase to 1.13.5 diff --git a/sources b/sources index 5b33ade..0eaa70f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.13.5.tar.xz) = 1870b16ad64bc46068c8a74be7a112790a6ffc0be0e14cd858d83013b12e1c51efd905fbc4e189a42558814694348a9ef533b6fe504ef7bce3b4da149e0b3ea6 +SHA512 (cups-filters-1.14.0.tar.xz) = 409b02ea34d92306e1e09a990d148d565fb77e716c1fe23e12f667814cb380ee367165c98c3ba7434f34a222f9e36ee2c46c06f364de18e2dc46e4709265fd83 From 1564b99c730ee7d55c5519b37ff48b32cf548ab4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 29 Jun 2017 08:44:07 +0200 Subject: [PATCH 004/197] update python Requires/BuildRequires accordingly to Fedora Guidelines for Python (python-cups -> python3-cups) --- cups-filters.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index b3651b0..3bc5b6a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.14.0 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -53,7 +53,7 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: systemd # Make sure we get postscriptdriver tags. -BuildRequires: python-cups +BuildRequires: python3-cups # Testing font for test scripts. BuildRequires: dejavu-sans-fonts @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Jun 29 2017 Zdenek Dohnal - 1.14.0-3 +- update python Requires/BuildRequires accordingly to Fedora Guidelines for Python (python-cups -> python3-cups) + * Wed May 31 2017 Zdenek Dohnal - 1.14.0-2 - removing BuildRequires: mupdf From a28c5c1e8ff19040df83306c9a2441749886f1cc Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 30 Jun 2017 09:44:25 +0200 Subject: [PATCH 005/197] rebase to 1.14.1 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 92e0b0c..405aab2 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ /cups-filters-1.13.4.tar.xz /cups-filters-1.13.5.tar.xz /cups-filters-1.14.0.tar.xz +/cups-filters-1.14.1.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 3bc5b6a..cead308 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.14.0 -Release: 3%{?dist} +Version: 1.14.1 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Jun 30 2017 Zdenek Dohnal - 1.14.1-1 +- rebase to 1.14.1 + * Thu Jun 29 2017 Zdenek Dohnal - 1.14.0-3 - update python Requires/BuildRequires accordingly to Fedora Guidelines for Python (python-cups -> python3-cups) diff --git a/sources b/sources index 0eaa70f..3509859 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.14.0.tar.xz) = 409b02ea34d92306e1e09a990d148d565fb77e716c1fe23e12f667814cb380ee367165c98c3ba7434f34a222f9e36ee2c46c06f364de18e2dc46e4709265fd83 +SHA512 (cups-filters-1.14.1.tar.xz) = fcc5ad217fe4c0d2f9377b065fe007589d605f9358ad274881df25176cc9548aa233ee6b6efad544f2b0ea4687b09c4270c5c9ac5014c5bcacc4bd9807b6be4e From e0b443e4e200e5ebbaba22bd9db1bbc94a0a2505 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 3 Jul 2017 17:34:06 +0100 Subject: [PATCH 006/197] Rebuilt for Boost 1.64 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index cead308..f387f82 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.14.1 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Jul 03 2017 Jonathan Wakely - 1.14.1-2 +- Rebuilt for Boost 1.64 + * Fri Jun 30 2017 Zdenek Dohnal - 1.14.1-1 - rebase to 1.14.1 From 6a7134b5111f753f91d70d388a270e222b11465b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 26 Jul 2017 05:46:47 +0000 Subject: [PATCH 007/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index f387f82..ba73a95 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.14.1 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Jul 26 2017 Fedora Release Engineering - 1.14.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Mon Jul 03 2017 Jonathan Wakely - 1.14.1-2 - Rebuilt for Boost 1.64 From 74333f3c1d52fbd2d6ee26e6fa2c647aa928c1d0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 2 Aug 2017 19:21:51 +0000 Subject: [PATCH 008/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ba73a95..e194b02 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.14.1 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Aug 02 2017 Fedora Release Engineering - 1.14.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Wed Jul 26 2017 Fedora Release Engineering - 1.14.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From cb3b4680f15f26904d952c0a1c039daaec5c456c Mon Sep 17 00:00:00 2001 From: David Tardon Date: Thu, 3 Aug 2017 12:40:41 +0200 Subject: [PATCH 009/197] rebuild for poppler 0.57.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index e194b02..1ee690d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.14.1 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Aug 03 2017 David Tardon - 1.14.1-5 +- rebuild for poppler 0.57.0 + * Wed Aug 02 2017 Fedora Release Engineering - 1.14.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild From 0382fae99a167c0a28a19137d4b96fff2249207c Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 7 Aug 2017 09:24:48 +0200 Subject: [PATCH 010/197] rebase to 1.16.0 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 405aab2..f144ba9 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,4 @@ /cups-filters-1.13.5.tar.xz /cups-filters-1.14.0.tar.xz /cups-filters-1.14.1.tar.xz +/cups-filters-1.16.0.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 1ee690d..51cd4ee 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.14.1 -Release: 5%{?dist} +Version: 1.16.0 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Aug 07 2017 Zdenek Dohnal - 1.16.0-1 +- rebase to 1.16.0 + * Thu Aug 03 2017 David Tardon - 1.14.1-5 - rebuild for poppler 0.57.0 diff --git a/sources b/sources index 3509859..f96db01 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.14.1.tar.xz) = fcc5ad217fe4c0d2f9377b065fe007589d605f9358ad274881df25176cc9548aa233ee6b6efad544f2b0ea4687b09c4270c5c9ac5014c5bcacc4bd9807b6be4e +SHA512 (cups-filters-1.16.0.tar.xz) = f62f8c42f130f715df4a1f98a4366781791a88096213f5f54d34d7142ffc07d046b4b16b5f579b9f6ac96880b2cce24531aed3e3a47372747353da980e9f21ea From 69620785b0c1043f5eeef4055b61d51f23dd025b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 14 Aug 2017 14:38:51 +0200 Subject: [PATCH 011/197] rebase to 1.16.1 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index f144ba9..2f9bcd1 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ /cups-filters-1.14.0.tar.xz /cups-filters-1.14.1.tar.xz /cups-filters-1.16.0.tar.xz +/cups-filters-1.16.1.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index eeaac0a..9c59028 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.16.0 -Release: 2%{?dist} +Version: 1.16.1 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Aug 14 2017 Zdenek Dohnal - 1.16.1-1 +- rebase to 1.16.1 + * Thu Aug 10 2017 Zdenek Dohnal - 1.16.0-2 - rebuilt for qpdf-libs diff --git a/sources b/sources index f96db01..a6dc8ce 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.16.0.tar.xz) = f62f8c42f130f715df4a1f98a4366781791a88096213f5f54d34d7142ffc07d046b4b16b5f579b9f6ac96880b2cce24531aed3e3a47372747353da980e9f21ea +SHA512 (cups-filters-1.16.1.tar.xz) = 3d3f81047a8fee965998158f5b2be570104c74f11ea4e8a489ee30d1d97246d0829a1ebc4a9b060718c6cc0eaeb94dc518a08a2c14a8cdcdfa70228c09875a15 From f6e9ef3041dbbdd34442d77b91a514ef9f273b6e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 22 Aug 2017 15:49:21 +0200 Subject: [PATCH 012/197] rebase to 1.16.3 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2f9bcd1..ac8b05f 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,4 @@ /cups-filters-1.14.1.tar.xz /cups-filters-1.16.0.tar.xz /cups-filters-1.16.1.tar.xz +/cups-filters-1.16.3.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 9c59028..ade4428 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.16.1 +Version: 1.16.3 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -270,6 +270,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Aug 22 2017 Zdenek Dohnal - 1.16.3-1 +- rebase to 1.16.3 + * Mon Aug 14 2017 Zdenek Dohnal - 1.16.1-1 - rebase to 1.16.1 diff --git a/sources b/sources index a6dc8ce..325342a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.16.1.tar.xz) = 3d3f81047a8fee965998158f5b2be570104c74f11ea4e8a489ee30d1d97246d0829a1ebc4a9b060718c6cc0eaeb94dc518a08a2c14a8cdcdfa70228c09875a15 +SHA512 (cups-filters-1.16.3.tar.xz) = 068e0c908a2c6785b97be9507fd73771795cc5ae2bca43a7c62e2f3d3f7e0aca1b1ebe570d9772a1240c23015f6862592fe4f5639785a56d8dfc1576c8d3f8ac From 77f2a39db46cd0c4350e1e84d2d61be47d6204cf Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 6 Sep 2017 11:40:37 +0200 Subject: [PATCH 013/197] rebase to 1.17.2 --- .gitignore | 1 + cups-filters.spec | 20 ++++++++++++++++++-- sources | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index ac8b05f..0de0cfb 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,4 @@ /cups-filters-1.16.0.tar.xz /cups-filters-1.16.1.tar.xz /cups-filters-1.16.3.tar.xz +/cups-filters-1.17.2.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index ade4428..2e6d181 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.16.3 +Version: 1.17.2 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -122,12 +122,25 @@ This is the development package for OpenPrinting CUPS filters and backends. # Brother, Minolta, and Konica Minolta to work around # bugs in the printer's PS interpreters # --with-rcdir=no - don't install SysV init script +# --enable-auto-setup-driverless - enable automatic setup of IPP network printers +# with driverless support +# --enable-driverless - enable PPD generator for driverless printing in +# /usr/lib/cups/driver, it is for manual setup of +# driverless printers with printer setup tool +# --disable-static - do not build static libraries (becuase of Fedora Packaging +# Guidelines) +# --enable-dbus - enable DBus Connection Manager's code +# --disable-silent-rules - verbose build output +# --disable-mutool - mupdf is retired in Fedora, use qpdf + %configure --disable-static \ --disable-silent-rules \ --with-pdftops=hybrid \ --enable-dbus \ --with-rcdir=no \ - --disable-mutool + --disable-mutool \ + --enable-driverless \ + --enable-auto-setup-driverless make %{?_smp_mflags} @@ -270,6 +283,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Sep 06 2017 Zdenek Dohnal - 1.17.2-1 +- rebase to 1.17.2 + * Tue Aug 22 2017 Zdenek Dohnal - 1.16.3-1 - rebase to 1.16.3 diff --git a/sources b/sources index 325342a..ceede99 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.16.3.tar.xz) = 068e0c908a2c6785b97be9507fd73771795cc5ae2bca43a7c62e2f3d3f7e0aca1b1ebe570d9772a1240c23015f6862592fe4f5639785a56d8dfc1576c8d3f8ac +SHA512 (cups-filters-1.17.2.tar.xz) = 16287824f807d66da7d43fd59471ae91225c95b737dda0a3ce9b687749a34fd8703e22e61915cf56ef694d58fb9e480220a1426a8fc06211fc88f2ce70c11ff0 From dc01ed7062a5c74426ba3367c0a879a618313b1c Mon Sep 17 00:00:00 2001 From: David Tardon Date: Fri, 8 Sep 2017 10:12:03 +0200 Subject: [PATCH 014/197] rebuild for poppler 0.59.0 --- cups-filters.spec | 10 +- poppler-0.58.patch | 825 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 834 insertions(+), 1 deletion(-) create mode 100644 poppler-0.58.patch diff --git a/cups-filters.spec b/cups-filters.spec index 2e6d181..f0c768b 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.2 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -85,6 +85,9 @@ Obsoletes: ghostscript-cups < 9.08 Provides: foomatic-filters = 4.0.9-8 Obsoletes: foomatic-filters < 4.0.9-8 +# http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7701 +Patch0: poppler-0.58.patch + %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries Group: System Environment/Libraries @@ -114,6 +117,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q +%patch0 -p0 + %build # work-around Rpath ./autogen.sh @@ -283,6 +288,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Sep 08 2017 David Tardon - 1.17.2-2 +- rebuild for poppler 0.59.0 + * Wed Sep 06 2017 Zdenek Dohnal - 1.17.2-1 - rebase to 1.17.2 diff --git a/poppler-0.58.patch b/poppler-0.58.patch new file mode 100644 index 0000000..8acb77f --- /dev/null +++ b/poppler-0.58.patch @@ -0,0 +1,825 @@ +=== modified file 'filter/pdf.cxx' +--- filter/pdf.cxx 2017-08-15 18:32:47 +0000 ++++ filter/pdf.cxx 2017-09-07 16:02:01 +0000 +@@ -129,64 +129,125 @@ + Object array; + Ref r; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj = xref->fetch(pageref->num, pageref->gen); ++#else + xref->fetch(pageref->num, pageref->gen, &pageobj); +- if (!pageobj.isDict() || !pageobj.dictLookupNF("Contents", &contents)) { ++#endif ++ if (!pageobj.isDict() || ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ (contents = pageobj.dictLookupNF("Contents")).isNull() ++#else ++ !pageobj.dictLookupNF("Contents", &contents) ++#endif ++ ) { + fprintf(stderr, "Error: malformed pdf\n"); + return; + } + +- if (contents.isRef()) ++ if (contents.isRef()) { ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ contents = xref->fetch(contents.getRefNum(), contents.getRefGen()); ++#else + xref->fetch(contents.getRefNum(), contents.getRefGen(), &contents); ++#endif ++ } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ (void) lenobj; ++ dict = Object(new Dict(xref)); ++ dict.dictSet("Length", Object(static_cast(len))); ++ stream = Object(static_cast(new MemStream(buf, 0, len, std::move(dict)))); ++#else + lenobj.initInt(len); + dict.initDict(xref); + dict.dictSet("Length", &lenobj); + stream.initStream(new MemStream(buf, 0, len, &dict)); ++#endif + + r = xref->addIndirectObject(&stream); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ streamrefobj = Object(r.num, r.gen); ++#else + streamrefobj.initRef(r.num, r.gen); ++#endif + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ array = Object(new Array(xref)); ++ array.arrayAdd(std::move(streamrefobj)); ++#else + array.initArray(xref); + array.arrayAdd(&streamrefobj); ++#endif + + if (contents.isStream()) { ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ contents = pageobj.dictLookupNF("Contents"); // streams must be indirect, i.e. not fetch()-ed ++ array.arrayAdd(std::move(contents)); ++#else + pageobj.dictLookupNF("Contents", &contents); // streams must be indirect, i.e. not fetch()-ed + array.arrayAdd(&contents); ++#endif + } + else if (contents.isArray()) { + int i, len = contents.arrayGetLength(); + Object obj; + for (i = 0; i < len; i++) { ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ obj = contents.arrayGetNF(i); ++ array.arrayAdd(std::move(obj)); ++#else + contents.arrayGetNF(i, &obj); + array.arrayAdd(&obj); ++#endif + } + } + else + fprintf(stderr, "Error: malformed pdf\n"); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj.dictSet("Contents", std::move(array)); ++#else + pageobj.dictSet("Contents", &array); ++#endif + + xref->setModifiedObject(&pageobj, *pageref); ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); +-} +- +- ++#endif ++} ++ ++ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++static Object name_object(const char *s) ++{ ++ return Object(new GooString(s)); ++} ++#else + static Object * name_object(const char *s) + { + Object *o = new Object(); + o->initName((char *)s); + return o; + } ++#endif + + /* + * Create new PDF integer type object. + */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++static Object int_object(int i) ++{ ++ return Object(i); ++} ++#else + static Object * int_object(int i) + { + Object *o = new Object(); + o->initInt(i); + return o; + } ++#endif + + static Object * get_resource_dict(XRef *xref, + Dict *pagedict, +@@ -196,21 +257,36 @@ + Object res; + + /* TODO resource dict can also be inherited */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ res = pagedict->lookupNF("Resources"); ++ if (res.isNull()) ++#else + if (!pagedict->lookupNF("Resources", &res)) ++#endif + return NULL; + + if (res.isRef()) { + *resref = res.getRef(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ *resdict = xref->fetch(resref->num, resref->gen); ++#else + xref->fetch(resref->num, resref->gen, resdict); ++#endif + } + else if (res.isDict()) { ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ *resdict = res.copy(); ++#else + res.copy(resdict); ++#endif + resref->num = 0; + } + else + resdict = NULL; + ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + res.free(); ++#endif + return resdict; + } + +@@ -226,7 +302,11 @@ + Object resdict; + Ref resref; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj = xref->fetch(pageref->num, pageref->gen); ++#else + xref->fetch(pageref->num, pageref->gen, &pageobj); ++#endif + if (!pageobj.isDict()) { + fprintf(stderr, "Error: malformed pdf\n"); + return; +@@ -234,21 +314,35 @@ + + if (!get_resource_dict(xref, pageobj.getDict(), &resdict, &resref)) { + fprintf(stderr, "Error: malformed pdf\n"); ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); ++#endif + return; + } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ font = Object(new Dict(xref)); ++#else + font.initDict(xref); ++#endif + font.dictSet("Type", name_object("Font")); + font.dictSet("Subtype", name_object("Type1")); + font.dictSet("BaseFont", name_object(name)); + xref->addIndirectObject(&font); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ fonts = resdict.dictLookupNF("Font"); ++#else + resdict.dictLookupNF("Font", &fonts); ++#endif + if (fonts.isNull()) { + /* Create new font dic obj in page's resources */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ resdict.dictSet("Font", Object(new Dict(xref))); ++#else + fonts.initDict(xref); + resdict.dictSet("Font", &fonts); ++#endif + } + + Object *fonts_dic; +@@ -259,7 +353,11 @@ + fonts_dic = &fonts; + } else if ( fonts.isRef() ) { + /* "Font" resource is indirect reference object */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ dereferenced_obj = xref->fetch(fonts.getRefNum(), fonts.getRefGen()); ++#else + xref->fetch(fonts.getRefNum(), fonts.getRefGen(), &dereferenced_obj); ++#endif + fonts_dic = &dereferenced_obj; + } + +@@ -269,7 +367,11 @@ + } + + /* Add new entry to "Font" resource */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ fonts_dic->dictSet("bannertopdf-font", std::move(font)); ++#else + fonts_dic->dictSet("bannertopdf-font", &font); ++#endif + + /* Notify poppler about changes */ + if ( fonts.isRef() ) { +@@ -281,7 +383,9 @@ + else + xref->setModifiedObject(&resdict, resref); + ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); ++#endif + } + + +@@ -293,23 +397,38 @@ + Array *array; + int i; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ o = dict->dictLookup(key); ++ if (o.isNull()) ++#else + if (!dict->dictLookup(key, &o)) ++#endif + return false; + + if (!o.isArray()) { ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + o.free(); ++#endif + return false; + } + + array = o.getArray(); + for (i = 0; i < 4; i++) { + Object el; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ el = array->get(i); ++ if (el.isNum()) ++ rect[i] = el.getNum(); ++#else + if (array->get(i, &el) && el.isNum()) + rect[i] = el.getNum(); + el.free(); ++#endif + } + ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + o.free(); ++#endif + return i == 4; + } + +@@ -322,6 +441,15 @@ + Object array; + int i; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ array = Object(new Array(xref)); ++ ++ for (i = 0; i < 4; i++) { ++ array.arrayAdd(Object(static_cast(rect[i]))); ++ } ++ ++ dict->dictSet(key, std::move(array)); ++#else + array.initArray(xref); + + for (i = 0; i < 4; i++) { +@@ -331,6 +459,7 @@ + } + + dict->dictSet(key, &array); ++#endif + } + + +@@ -361,7 +490,11 @@ + float mediabox[4] = { 0.0, 0.0, width, length }; + float old_mediabox[4]; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj = xref->fetch(pageref->num, pageref->gen); ++#else + xref->fetch(pageref->num, pageref->gen, &pageobj); ++#endif + if (!pageobj.isDict()) { + fprintf(stderr, "Error: malformed pdf\n"); + return; +@@ -381,7 +514,9 @@ + dict_set_rect (xref, &pageobj, "BleedBox", mediabox); + + xref->setModifiedObject(&pageobj, *pageref); ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); ++#endif + } + + +@@ -394,21 +529,34 @@ + Object page, parentref, parent, kids, ref, countobj; + int i; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ page = xref->fetch(pageref->num, pageref->gen); ++#else + xref->fetch(pageref->num, pageref->gen, &page); ++#endif + if (!page.isDict("Page")) { + fprintf(stderr, "Error: malformed pdf (invalid Page object)\n"); + return; + } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ parentref = page.dictLookupNF("Parent"); ++ parent = parentref.fetch(xref); ++#else + page.dictLookupNF("Parent", &parentref); + parentref.fetch(xref, &parent); ++#endif + if (!parent.isDict("Pages")) { + fprintf(stderr, "Error: malformed pdf (Page.Parent must point to a " + "Pages object)\n"); + return; + } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ kids = parent.dictLookup("Kids"); ++#else + parent.dictLookup("Kids", &kids); ++#endif + if (!kids.isArray()) { + fprintf(stderr, "Error: malformed pdf (Pages.Kids must be an array)\n"); + return; +@@ -420,14 +568,22 @@ + // the pages tree (not supported by major pdf implementations). + for (i = 1; i < count; i++) { + Ref r = xref->addIndirectObject(&page); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ kids.arrayAdd(Object(r.num, r.gen)); ++#else + ref.initRef(r.num, r.gen); + kids.arrayAdd(&ref); + ref.free(); ++#endif + } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ parent.dictSet("Count", Object(count)); ++#else + countobj.initInt(count); + parent.dictSet("Count", &countobj); + countobj.free(); ++#endif + + xref->setModifiedObject(&parent, parentref.getRef()); + } +@@ -523,7 +679,11 @@ + } + Object pageobj; + Ref pageref = page->getRef(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj = xref->fetch(pageref.num, pageref.gen); ++#else + xref->fetch(pageref.num, pageref.gen, &pageobj); ++#endif + + const char *font_size = lookup_opt(opt, "banner-font-size"); + if ( ! font_size ) { +@@ -614,8 +774,12 @@ + + /* Modify field's appearance */ + Object appearance_obj; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ field_obj->getDict()->set("DA", Object(appearance)); ++#else + appearance_obj.initString(appearance); + field_obj->getDict()->set("DA", &appearance_obj); ++#endif + + /* + * Create /AP - entry stuff. +@@ -653,7 +817,11 @@ + appearance_stream->append("EMC\n"); + + Object appearance_stream_dic; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ appearance_stream_dic = Object(new Dict(xref)); ++#else + appearance_stream_dic.initDict(xref); ++#endif + + /* + * Appearance stream dic. +@@ -663,12 +831,46 @@ + appearance_stream_dic.dictSet("Type", name_object("XObject")); + appearance_stream_dic.dictSet("Subtype", name_object("Form")); + appearance_stream_dic.dictSet("FormType", int_object(1)); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ appearance_stream_dic.dictSet("Resources", Object(resref.num, resref.gen)); ++#else + Object obj_ref_x; + obj_ref_x.initRef(resref.num, resref.gen); + appearance_stream_dic.dictSet("Resources", &obj_ref_x); ++#endif + + /* BBox array: TODO. currently out of the head. */ + Object array; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ array = Object(new Array(xref)); ++ array.arrayAdd(Object(0.0)); ++ array.arrayAdd(Object(0.0)); ++ array.arrayAdd(Object(237.0)); ++ array.arrayAdd(Object(25.0)); ++ ++ appearance_stream_dic.dictSet("BBox", std::move(array)); ++ appearance_stream_dic.dictSet("Length", Object(appearance_stream->getLength())); ++ ++ MemStream *mem_stream = new MemStream(appearance_stream->getCString(), ++ 0, appearance_stream->getLength(), std::move(appearance_stream_dic)); ++ ++ /* Make obj stream */ ++ Object stream = Object(static_cast(mem_stream)); ++ ++ Ref r = xref->addIndirectObject(&stream); ++ ++ /* Update Xref table */ ++ Object obj_ref = Object(r.num, r.gen); ++ ++ /* ++ * Fill Annotation's appearance streams dic /AP ++ * See: 8.4.4 Appearance Streams ++ */ ++ Object appearance_streams_dic = Object(new Dict(xref)); ++ appearance_streams_dic.dictSet("N", std::move(obj_ref)); ++ ++ field_obj->getDict()->set("AP", std::move(appearance_streams_dic)); ++#else + array.initArray(xref); + Object el; + el.initReal(0); +@@ -705,6 +907,7 @@ + appearance_streams_dic.dictSet("N", &obj_ref); + + field_obj->getDict()->set("AP", &appearance_streams_dic); ++#endif + + /* Notify poppler about changes */ + xref->setModifiedObject(field_obj, field_ref); +@@ -721,24 +924,38 @@ + * OpenOffice - by default sets it to 'true'. + */ + Object *obj_form = catalog->getAcroForm(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ obj_form->dictSet("NeedAppearances", Object(gFalse)); ++#else + Object obj1; + obj1.initBool(gFalse); + obj_form->dictSet("NeedAppearances", &obj1); ++#endif ++ + /* Add AccroForm as indirect obj */ + Ref ref_form = xref->addIndirectObject(obj_form); + + /* + * So update Catalog object. + */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ Object catObj = xref->getCatalog(); ++#else + Object* catObj = new Object(); + catObj = xref->getCatalog(catObj); ++#endif + Ref catRef; + catRef.gen = xref->getRootGen(); + catRef.num = xref->getRootNum(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ catObj.dictSet("AcroForm", Object(ref_form.num, ref_form.gen)); ++ xref->setModifiedObject(&catObj, catRef); ++#else + Object obj2; + obj2.initRef(ref_form.num, ref_form.gen); + catObj->dictSet("AcroForm", &obj2); + xref->setModifiedObject(catObj, catRef); ++#endif + + /* Success */ + return 1; +@@ -780,7 +997,11 @@ + + /* Font dictionary object for embeded font */ + Object f_dic; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ f_dic = Object(new Dict(xref)); ++#else + f_dic.initDict(xref); ++#endif + f_dic.dictSet("Type", name_object("Font")); + + /* Stream lenght */ +@@ -798,12 +1019,18 @@ + } + + /* Create memory stream font. Add it to font dic. */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ MemStream *mem_stream = new MemStream(font_stream->getCString(), ++ 0, outlen, std::move(f_dic)); ++ Object stream = Object(static_cast(mem_stream)); ++#else + MemStream *mem_stream = new MemStream(font_stream->getCString(), + 0, outlen, &f_dic); + + /* Make obj stream */ + Object stream; + stream.initStream(mem_stream); ++#endif + + Ref r; + +@@ -813,7 +1040,11 @@ + /* Get page object */ + Object pageobj; + Ref pageref = page->getRef(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ pageobj = xref->fetch(pageref.num, pageref.gen); ++#else + xref->fetch(pageref.num, pageref.gen, &pageobj); ++#endif + if (!pageobj.isDict()) { + fprintf(stderr, "Error: malformed pdf.\n"); + return 0; +@@ -825,18 +1056,29 @@ + Object *ret = get_resource_dict(xref, pageobj.getDict(), &resdict, &resref); + if ( !ret ) { + fprintf(stderr, "Error: malformed pdf\n"); ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); ++#endif + return 0; + } + + /* Dictionary for all fonts in page's resources */ + Object fonts; + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ fonts = resdict.dictLookupNF("Font"); ++#else + resdict.dictLookupNF("Font", &fonts); ++#endif + if (fonts.isNull()) { + /* Create new one, if doesn't exists */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ resdict.dictSet("Font", Object(new Dict(xref))); ++ fonts = resdict.dictLookupNF("Font"); ++#else + fonts.initDict(xref); + resdict.dictSet("Font", &fonts); ++#endif + fprintf(stderr, "Create new font dict in page's resources.\n"); + } + +@@ -866,7 +1108,11 @@ + + /* r - cid resource dic */ + Object font_res_obj_ref; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ font_res_obj_ref = Object(r.num, r.gen); ++#else + font_res_obj_ref.initRef(r.num, r.gen); ++#endif + + Object *fonts_dic; + Object dereferenced_obj; +@@ -876,7 +1122,11 @@ + fonts_dic = &fonts; + } else if ( fonts.isRef() ) { + /* "Font" resource is indirect reference object */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ dereferenced_obj = xref->fetch(fonts.getRefNum(), fonts.getRefGen()); ++#else + xref->fetch(fonts.getRefNum(), fonts.getRefGen(), &dereferenced_obj); ++#endif + fonts_dic = &dereferenced_obj; + } + +@@ -886,7 +1136,11 @@ + } + + /* Add to fonts dic new font */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ fonts_dic->dictSet("stanv_font", std::move(font_res_obj_ref)); ++#else + fonts_dic->dictSet("stanv_font", &font_res_obj_ref); ++#endif + + /* Notify poppler about changes in fonts dic */ + if ( fonts.isRef() ) { +@@ -897,7 +1151,9 @@ + xref->setModifiedObject(&resdict, resref); + fprintf(stderr, "Resource dict was changed.\n"); + ++#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 + pageobj.free(); ++#endif + + /* Success */ + return 1; +@@ -1104,8 +1360,12 @@ + XRef *xref = doc->getXRef(); + + /* Font dictionary for embeded font */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ Object *dic = new Object(new Dict(xref)); ++#else + Object *dic = new Object(); + dic->initDict(xref); ++#endif + + dic->dictSet("Type", name_object("FontDescriptor")); + dic->dictSet( +@@ -1119,6 +1379,15 @@ + dic->dictSet("StemV", int_object(fdes->stemV)); + + /* FontBox array */ ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ Object array = Object(new Array(xref)); ++ array.arrayAdd(Object(static_cast(fdes->bbxmin))); ++ array.arrayAdd(Object(static_cast(fdes->bbymin))); ++ array.arrayAdd(Object(static_cast(fdes->bbxmax))); ++ array.arrayAdd(Object(static_cast(fdes->bbymax))); ++ ++ dic->dictSet("FontBBox", std::move(array)); ++#else + Object array; + array.initArray(xref); + +@@ -1137,6 +1406,7 @@ + array.arrayAdd(&el); + + dic->dictSet("FontBBox", &array); ++#endif + + if (fdes->xHeight) { + dic->dictSet("XHeight", int_object(fdes->xHeight)); +@@ -1149,20 +1419,34 @@ + if (fdes->panose) { + /* Font dictionary for embeded font */ + Object style_dic; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ style_dic = Object(new Dict(xref)); ++#else + style_dic.initDict(xref); +- ++#endif ++ ++ GooString *panose_str = new GooString(fdes->panose, 12); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ style_dic.dictSet("Panose", Object(panose_str)); ++ ++ dic->dictSet("Style", std::move(style_dic)); ++#else + Object panose; + +- GooString *panose_str = new GooString(fdes->panose, 12); + panose.initString(panose_str); + style_dic.dictSet("Panose", &panose); + + dic->dictSet("Style", &style_dic); ++#endif + } + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ dic->dictSet(emb_pdf_get_fontfile_key(emb), Object(fontfile_obj_ref.num, fontfile_obj_ref.gen)); ++#else + Object ref_obj; + ref_obj.initRef(fontfile_obj_ref.num, fontfile_obj_ref.gen); + dic->dictSet(emb_pdf_get_fontfile_key(emb), &ref_obj); ++#endif + + return dic; + } +@@ -1181,8 +1465,12 @@ + /* Get XREF table */ + XRef *xref = doc->getXRef(); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ Object *dic = new Object(new Dict(xref)); ++#else + Object *dic = new Object(); + dic->initDict(xref); ++#endif + + dic->dictSet("Type", name_object("Font")); + dic->dictSet( +@@ -1192,15 +1480,23 @@ + "BaseFont", + name_object(copyString(emb_pdf_escape_name(fdes->fontname,-1)))); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ dic->dictSet("FontDescriptor", Object(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen)); ++#else + Object ref_obj; + ref_obj.initRef(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); + dic->dictSet("FontDescriptor", &ref_obj); ++#endif + + if ( emb->plan & EMB_A_MULTIBYTE ) { + assert(fwid->warray); + + Object CIDSystemInfo_dic; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ CIDSystemInfo_dic = Object(new Dict(xref)); ++#else + CIDSystemInfo_dic.initDict(xref); ++#endif + + Object registry; + Object ordering; +@@ -1208,16 +1504,28 @@ + GooString *str; + + str = new GooString(copyString(fdes->registry)); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ CIDSystemInfo_dic.dictSet("Registry", Object(str)); ++#else + registry.initString(str); + CIDSystemInfo_dic.dictSet("Registry", ®istry); ++#endif + + str = new GooString(copyString(fdes->ordering)); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ CIDSystemInfo_dic.dictSet("Ordering", Object(str)); ++#else + ordering.initString(str); + CIDSystemInfo_dic.dictSet("Ordering", &ordering); ++#endif + + CIDSystemInfo_dic.dictSet("Supplement", int_object(fdes->supplement)); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ dic->dictSet("CIDSystemInfo", std::move(CIDSystemInfo_dic)); ++#else + dic->dictSet("CIDSystemInfo", &CIDSystemInfo_dic); ++#endif + + dic->dictSet("DW", int_object(fwid->default_width)); + } +@@ -1249,8 +1557,12 @@ + /* Get XREF table */ + XRef *xref = doc->getXRef(); + ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ Object *dic = new Object(new Dict(xref)); ++#else + Object *dic = new Object(); + dic->initDict(xref); ++#endif + + dic->dictSet("Type", name_object("Font")); + dic->dictSet("Subtype", name_object("Type0")); +@@ -1267,13 +1579,24 @@ + dic->dictSet("Encoding", name_object(copyString(encoding))); + + Object obj; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ obj = Object(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); ++#else + obj.initRef(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); ++#endif + + Object array; ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 ++ array = Object(new Array(xref)); ++ array.arrayAdd(std::move(obj)); ++ ++ dic->dictSet("DescendantFonts", std::move(array)); ++#else + array.initArray(xref); + array.arrayAdd(&obj); + + dic->dictSet("DescendantFonts", &array); ++#endif + + return dic; + } + From 89060fc2896a82fb5c3ec8cd0b46c4eea3a8e6f1 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 19 Sep 2017 13:00:06 +0200 Subject: [PATCH 015/197] rebase to 1.17.7 --- .gitignore | 1 + cups-filters.spec | 15 ++++++++------- sources | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 0de0cfb..caa4184 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,4 @@ /cups-filters-1.16.1.tar.xz /cups-filters-1.16.3.tar.xz /cups-filters-1.17.2.tar.xz +/cups-filters-1.17.7.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index f0c768b..3d8fc24 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.17.2 -Release: 2%{?dist} +Version: 1.17.7 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -85,9 +85,6 @@ Obsoletes: ghostscript-cups < 9.08 Provides: foomatic-filters = 4.0.9-8 Obsoletes: foomatic-filters < 4.0.9-8 -# http://bzr.linuxfoundation.org/loggerhead/openprinting/cups-filters/revision/7701 -Patch0: poppler-0.58.patch - %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries Group: System Environment/Libraries @@ -117,7 +114,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q -%patch0 -p0 %build # work-around Rpath @@ -233,6 +229,7 @@ fi %attr(0700,root,root) %{_cups_serverbin}/backend/serial %attr(0755,root,root) %{_cups_serverbin}/backend/implicitclass %attr(0755,root,root) %{_cups_serverbin}/backend/beh +%attr(0755,root,root) %{_cups_serverbin}/backend/cups-brf %{_bindir}/foomatic-rip %{_bindir}/driverless %{_cups_serverbin}/backend/driverless @@ -248,13 +245,14 @@ fi %{_datadir}/cups/ppdc/imagemagick.defs %{_datadir}/cups/ppdc/index.defs %{_datadir}/cups/ppdc/liblouis.defs -%{_datadir}/cups/ppdc/liblouis1.defs.gen.in +%{_datadir}/cups/ppdc/liblouis1.defs %{_datadir}/cups/ppdc/liblouis2.defs %{_datadir}/cups/ppdc/liblouis3.defs %{_datadir}/cups/ppdc/liblouis4.defs %{_datadir}/cups/ppdc/media-braille.defs %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/drv/generic-brf.drv +%{_datadir}/cups/drv/generic-ubrl.drv %{_datadir}/cups/drv/indexv3.drv %{_datadir}/cups/drv/indexv4.drv %{_datadir}/cups/mime/cupsfilters.types @@ -288,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Sep 19 2017 Zdenek Dohnal - 1.17.7-1 +- rebase to 1.17.7 + * Fri Sep 08 2017 David Tardon - 1.17.2-2 - rebuild for poppler 0.59.0 diff --git a/sources b/sources index ceede99..d14e1de 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.17.2.tar.xz) = 16287824f807d66da7d43fd59471ae91225c95b737dda0a3ce9b687749a34fd8703e22e61915cf56ef694d58fb9e480220a1426a8fc06211fc88f2ce70c11ff0 +SHA512 (cups-filters-1.17.7.tar.xz) = bac46c7ed0b7409c4b920f6c981f74e73da77ca2590222ea14e80f99aa04bb19c0521b5452b38700054ea704381f3bf4b099a71bf17cdcf7faf93d2f9c8c97c7 From ffd9d39b3630f36d97bb4814a6e96fef21cb7369 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 3 Oct 2017 09:32:43 +0200 Subject: [PATCH 016/197] rebase to 1.17.8 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index caa4184..916b06a 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,4 @@ /cups-filters-1.16.3.tar.xz /cups-filters-1.17.2.tar.xz /cups-filters-1.17.7.tar.xz +/cups-filters-1.17.8.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 3d8fc24..114ca1d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.17.7 +Version: 1.17.8 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Oct 03 2017 Zdenek Dohnal - 1.17.8-1 +- rebase to 1.17.8 + * Tue Sep 19 2017 Zdenek Dohnal - 1.17.7-1 - rebase to 1.17.7 diff --git a/sources b/sources index d14e1de..99dd152 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.17.7.tar.xz) = bac46c7ed0b7409c4b920f6c981f74e73da77ca2590222ea14e80f99aa04bb19c0521b5452b38700054ea704381f3bf4b099a71bf17cdcf7faf93d2f9c8c97c7 +SHA512 (cups-filters-1.17.8.tar.xz) = 01f4499fb1db456a1fb11b8e39b5de273229c7aa2f87d079e237501ccd70bf637ca5e15d19fb9f7930be700ab6958e1a597bda8d0970260b5e7577eb5447f797 From 9a46303505cb86431e41278feaae7240eb445154 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 6 Oct 2017 13:49:46 +0200 Subject: [PATCH 017/197] upstream 1413 - Propagation of location doesn't work --- cups-filters-location.patch | 12 ++++++++++++ cups-filters.spec | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 cups-filters-location.patch diff --git a/cups-filters-location.patch b/cups-filters-location.patch new file mode 100644 index 0000000..d4accb0 --- /dev/null +++ b/cups-filters-location.patch @@ -0,0 +1,12 @@ +diff -up cups-filters-1.16.1/utils/cups-browsed.c.location cups-filters-1.16.1/utils/cups-browsed.c +--- cups-filters-1.16.1/utils/cups-browsed.c.location 2017-10-06 13:35:52.733437212 +0200 ++++ cups-filters-1.16.1/utils/cups-browsed.c 2017-10-06 13:38:11.053339580 +0200 +@@ -6360,7 +6360,7 @@ static void + browse_poll_get_printers (browsepoll_t *context, http_t *conn) + { + static const char * const rattrs[] = { "printer-uri-supported", +- "printer-info"}; ++ "printer-location", "printer-info"}; + ipp_t *request, *response = NULL; + ipp_attribute_t *attr; + GList *printers = NULL; diff --git a/cups-filters.spec b/cups-filters.spec index 9c59028..23b0b21 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.16.1 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -19,6 +19,7 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz +Patch01: cups-filters-location.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -113,6 +114,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q +%patch01 -p1 -b .location %build # work-around Rpath @@ -270,6 +272,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Oct 06 2017 Zdenek Dohnal - 1.16.1-2 +- upstream 1413 - Propagation of location doesn't work + * Mon Aug 14 2017 Zdenek Dohnal - 1.16.1-1 - rebase to 1.16.1 From 6b4df6c2490441a6cef799ba3b99192fdd41c000 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Fri, 6 Oct 2017 15:50:23 +0200 Subject: [PATCH 018/197] rebuild for poppler 0.60.1 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ddfccce..c1361e4 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.8 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -288,6 +288,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Oct 06 2017 David Tardon - 1.17.8-3 +- rebuild for poppler 0.60.1 + * Fri Oct 06 2017 Zdenek Dohnal - 1.17.8-2 - upstream 1413 - Propagation of location doesn't work From f2aaf8837d2c729fe45a70569cbb442b5a4b80b7 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 9 Oct 2017 19:24:56 +0200 Subject: [PATCH 019/197] removing Provides ghostscript-cups and foomatic-filters --- cups-filters.spec | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index c1361e4..e1f1589 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.8 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -78,14 +78,6 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -# Ghostscript CUPS filters live here since Ghostscript 9.08. -Provides: ghostscript-cups = 9.08 -Obsoletes: ghostscript-cups < 9.08 - -# foomatic-rip's upstream moved from foomatic-filters to cups-filters-1.0.42 -Provides: foomatic-filters = 4.0.9-8 -Obsoletes: foomatic-filters < 4.0.9-8 - %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries Group: System Environment/Libraries @@ -288,6 +280,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Oct 09 2017 Zdenek Dohnal - 1.17.8-4 +- removing Provides ghostscript-cups and foomatic-filters + * Fri Oct 06 2017 David Tardon - 1.17.8-3 - rebuild for poppler 0.60.1 From 364623be37b009d2e9cc3961b075e3dd2c908853 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 18 Oct 2017 12:05:35 +0200 Subject: [PATCH 020/197] rebase to 1.17.9 --- .gitignore | 1 + cups-filters-location.patch | 12 ------------ cups-filters.spec | 16 ++++++---------- sources | 2 +- 4 files changed, 8 insertions(+), 23 deletions(-) delete mode 100644 cups-filters-location.patch diff --git a/.gitignore b/.gitignore index 916b06a..5bee492 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,4 @@ /cups-filters-1.17.2.tar.xz /cups-filters-1.17.7.tar.xz /cups-filters-1.17.8.tar.xz +/cups-filters-1.17.9.tar.xz diff --git a/cups-filters-location.patch b/cups-filters-location.patch deleted file mode 100644 index d4accb0..0000000 --- a/cups-filters-location.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up cups-filters-1.16.1/utils/cups-browsed.c.location cups-filters-1.16.1/utils/cups-browsed.c ---- cups-filters-1.16.1/utils/cups-browsed.c.location 2017-10-06 13:35:52.733437212 +0200 -+++ cups-filters-1.16.1/utils/cups-browsed.c 2017-10-06 13:38:11.053339580 +0200 -@@ -6360,7 +6360,7 @@ static void - browse_poll_get_printers (browsepoll_t *context, http_t *conn) - { - static const char * const rattrs[] = { "printer-uri-supported", -- "printer-info"}; -+ "printer-location", "printer-info"}; - ipp_t *request, *response = NULL; - ipp_attribute_t *attr; - GList *printers = NULL; diff --git a/cups-filters.spec b/cups-filters.spec index e1f1589..017cbfd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.17.8 -Release: 4%{?dist} +Version: 1.17.9 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -19,15 +19,9 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -Patch01: cups-filters-location.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} -# Obsolete cups-php (bug #971741) -Obsoletes: cups-php < 1:1.6.0-1 -# Don't Provide it because we don't build the php module -#Provides: cups-php = 1:1.6.0-1 - BuildRequires: cups-devel BuildRequires: pkgconfig # pdftopdf @@ -106,7 +100,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q -%patch01 -p1 -b .location %build @@ -265,7 +258,7 @@ fi %files libs %dir %{_pkgdocdir}/ -%{_pkgdocdir}/COPYING +%license COPYING %{_pkgdocdir}/fontembed/README %{_libdir}/libcupsfilters.so.* %{_libdir}/libfontembed.so.* @@ -280,6 +273,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Oct 18 2017 Zdenek Dohnal - 1.17.9-1 +- rebase to 1.17.9 + * Mon Oct 09 2017 Zdenek Dohnal - 1.17.8-4 - removing Provides ghostscript-cups and foomatic-filters diff --git a/sources b/sources index 99dd152..1392d50 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.17.8.tar.xz) = 01f4499fb1db456a1fb11b8e39b5de273229c7aa2f87d079e237501ccd70bf637ca5e15d19fb9f7930be700ab6958e1a597bda8d0970260b5e7577eb5447f797 +SHA512 (cups-filters-1.17.9.tar.xz) = 811d2671c660a2129c207d5d8daaa576b027ba14ac4cf4753d0e8c1190866a684e284f1e7439b864aaab332e429befbc13c567bf6c9fc1a502fe2cd7d11e5ed4 From 46403f753d86dc58fb166164322b40a776a7644d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 18 Oct 2017 12:28:21 +0200 Subject: [PATCH 021/197] rebase to 1.17.9 --- cups-filters.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 017cbfd..f52cb14 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -258,7 +258,7 @@ fi %files libs %dir %{_pkgdocdir}/ -%license COPYING +%{_pkgdocdir}/COPYING %{_pkgdocdir}/fontembed/README %{_libdir}/libcupsfilters.so.* %{_libdir}/libfontembed.so.* From 65126b9f4291082be5a9973aedc73d341d9aca33 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Wed, 8 Nov 2017 20:25:12 +0100 Subject: [PATCH 022/197] rebuild for poppler 0.61.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index f52cb14..3d1342c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.9 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -273,6 +273,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Nov 08 2017 David Tardon - 1.17.9-2 +- rebuild for poppler 0.61.0 + * Wed Oct 18 2017 Zdenek Dohnal - 1.17.9-1 - rebase to 1.17.9 From 6b99ba079f4d62c3467e2d5b02f633684e60ea73 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 20 Nov 2017 19:49:33 +0100 Subject: [PATCH 023/197] fixing patch for upstream issue 1413 --- cups-filters-location.patch | 27 ++++++++++++++++++++++++--- cups-filters.spec | 5 ++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cups-filters-location.patch b/cups-filters-location.patch index d4accb0..57fa021 100644 --- a/cups-filters-location.patch +++ b/cups-filters-location.patch @@ -1,7 +1,28 @@ diff -up cups-filters-1.16.1/utils/cups-browsed.c.location cups-filters-1.16.1/utils/cups-browsed.c ---- cups-filters-1.16.1/utils/cups-browsed.c.location 2017-10-06 13:35:52.733437212 +0200 -+++ cups-filters-1.16.1/utils/cups-browsed.c 2017-10-06 13:38:11.053339580 +0200 -@@ -6360,7 +6360,7 @@ static void +--- cups-filters-1.16.1/utils/cups-browsed.c.location 2017-08-09 20:02:48.000000000 +0200 ++++ cups-filters-1.16.1/utils/cups-browsed.c 2017-11-20 19:40:25.943791715 +0100 +@@ -4472,6 +4472,9 @@ gboolean update_cups_queues(gpointer unu + IPP_PRINTER_IDLE); + /* ... and accepting jobs */ + ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1); ++ /* Location */ ++ ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, ++ "printer-location", NULL, p->location); + num_options = 0; + options = NULL; + /* Device URI: ipp(s)://:631/printers/ +@@ -4484,9 +4487,7 @@ gboolean update_cups_queues(gpointer unu + /* Description */ + num_options = cupsAddOption("printer-info", p->info, + num_options, &options); +- /* Location */ +- num_options = cupsAddOption("printer-location", p->location, +- num_options, &options); ++ + /* Default option settings from printer entry */ + for (i = 0; i < p->num_options; i ++) + if (strcasecmp(p->options[i].name, "printer-is-shared")) +@@ -6360,7 +6361,7 @@ static void browse_poll_get_printers (browsepoll_t *context, http_t *conn) { static const char * const rattrs[] = { "printer-uri-supported", diff --git a/cups-filters.spec b/cups-filters.spec index 23b0b21..e02cd10 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.16.1 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -272,6 +272,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Nov 20 2017 Zdenek Dohnal - 1.16.1-3 +- fixing patch for upstream issue 1413 + * Fri Oct 06 2017 Zdenek Dohnal - 1.16.1-2 - upstream 1413 - Propagation of location doesn't work From 38fd0c0b75f13816f21f0c887c355ca5aa6b06a0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 4 Jan 2018 10:17:07 +0100 Subject: [PATCH 024/197] 1529680 - set CreateIPPPrintQueues to ALL and LocalRemoteCUPSQueueNaming to RemoteName --- cups-filters-createall.patch | 21 +++++++++++++++++++++ cups-filters.spec | 9 +++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 cups-filters-createall.patch diff --git a/cups-filters-createall.patch b/cups-filters-createall.patch new file mode 100644 index 0000000..8079537 --- /dev/null +++ b/cups-filters-createall.patch @@ -0,0 +1,21 @@ +diff -up cups-filters-1.16.1/utils/cups-browsed.conf.in.createall cups-filters-1.16.1/utils/cups-browsed.conf.in +--- cups-filters-1.16.1/utils/cups-browsed.conf.in.createall 2018-01-02 17:17:51.555941155 +0100 ++++ cups-filters-1.16.1/utils/cups-browsed.conf.in 2018-01-02 17:19:49.651048564 +0100 +@@ -359,7 +359,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTO + + # LocalQueueNamingRemoteCUPS DNS-SD + # LocalQueueNamingRemoteCUPS MakeModel +-# LocalQueueNamingRemoteCUPS RemoteName ++LocalQueueNamingRemoteCUPS RemoteName + # LocalQueueNamingIPPPrinter DNS-SD + # LocalQueueNamingIPPPrinter MakeModel + +@@ -453,7 +453,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTO + # CreateIPPPrinterQueues AppleRaster + # CreateIPPPrinterQueues Everywhere AppleRaster + # CreateIPPPrinterQueues Driverless +-# CreateIPPPrinterQueues All ++CreateIPPPrinterQueues All + + + # If cups-browsed is automatically creating print queues for native diff --git a/cups-filters.spec b/cups-filters.spec index 3cf3430..e3e3266 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.9 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,6 +21,7 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-location.patch +Patch02: cups-filters-createall.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -104,6 +105,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %setup -q %patch01 -p1 -b .location +%patch02 -p1 -b .createall %build @@ -277,7 +279,10 @@ fi %{_libdir}/libfontembed.so %changelog -* Mon Nov 20 2017 Zdenek Dohnal - 1.16.1-3 +* Tue Jan 02 2018 Zdenek Dohnal - 1.17.9-4 +- 1529680 - set CreateIPPPrintQueues to ALL and LocalRemoteCUPSQueueNaming to RemoteName + +* Mon Nov 20 2017 Zdenek Dohnal - 1.17.9-3 - fixing patch for upstream issue 1413 * Wed Nov 08 2017 David Tardon - 1.17.9-2 From e831834960c7da9ea0b9b7506fb89574e47acd10 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 11 Jan 2018 17:01:33 +0100 Subject: [PATCH 025/197] adding build dependency on ghostscript because of its package changes --- cups-filters.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index e3e3266..900a6b2 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.17.9 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -39,6 +39,7 @@ BuildRequires: libtiff-devel BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(dbus-1) +BuildRequires: ghostscript # libijs BuildRequires: pkgconfig(ijs) BuildRequires: pkgconfig(freetype2) @@ -279,6 +280,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Jan 11 2018 Zdenek Dohnal - 1.17.9-5 +- adding build dependency on ghostscript because of its package changes + * Tue Jan 02 2018 Zdenek Dohnal - 1.17.9-4 - 1529680 - set CreateIPPPrintQueues to ALL and LocalRemoteCUPSQueueNaming to RemoteName From 8aa69860deafd2e1d7e5d1350bc3fe67daa5edd6 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 16 Jan 2018 14:56:21 +0100 Subject: [PATCH 026/197] Rebase to 1.19.0 --- .gitignore | 1 + cups-filters-location.patch | 24 ------------------------ cups-filters.spec | 13 +++++++------ sources | 2 +- 4 files changed, 9 insertions(+), 31 deletions(-) delete mode 100644 cups-filters-location.patch diff --git a/.gitignore b/.gitignore index 5bee492..660beb6 100644 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,4 @@ /cups-filters-1.17.7.tar.xz /cups-filters-1.17.8.tar.xz /cups-filters-1.17.9.tar.xz +/cups-filters-1.19.0.tar.xz diff --git a/cups-filters-location.patch b/cups-filters-location.patch deleted file mode 100644 index a3035be..0000000 --- a/cups-filters-location.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up cups-filters-1.16.1/utils/cups-browsed.c.location cups-filters-1.16.1/utils/cups-browsed.c ---- cups-filters-1.16.1/utils/cups-browsed.c.location 2017-08-09 20:02:48.000000000 +0200 -+++ cups-filters-1.16.1/utils/cups-browsed.c 2017-11-20 19:40:25.943791715 +0100 -@@ -4472,6 +4472,9 @@ gboolean update_cups_queues(gpointer unu - IPP_PRINTER_IDLE); - /* ... and accepting jobs */ - ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1); -+ /* Location */ -+ ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, -+ "printer-location", NULL, p->location); - num_options = 0; - options = NULL; - /* Device URI: ipp(s)://:631/printers/ -@@ -4484,9 +4487,7 @@ gboolean update_cups_queues(gpointer unu - /* Description */ - num_options = cupsAddOption("printer-info", p->info, - num_options, &options); -- /* Location */ -- num_options = cupsAddOption("printer-location", p->location, -- num_options, &options); -+ - /* Default option settings from printer entry */ - for (i = 0; i < p->num_options; i ++) - if (strcasecmp(p->options[i].name, "printer-is-shared")) diff --git a/cups-filters.spec b/cups-filters.spec index 900a6b2..ce3832a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.17.9 -Release: 5%{?dist} +Version: 1.19.0 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,8 +20,7 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -Patch01: cups-filters-location.patch -Patch02: cups-filters-createall.patch +Patch01: cups-filters-createall.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -105,8 +104,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q -%patch01 -p1 -b .location -%patch02 -p1 -b .createall +%patch01 -p1 -b .createall %build @@ -280,6 +278,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jan 16 2018 Zdenek Dohnal - 1.19.0-1 +- Rebase to 1.19.0 + * Thu Jan 11 2018 Zdenek Dohnal - 1.17.9-5 - adding build dependency on ghostscript because of its package changes diff --git a/sources b/sources index 1392d50..00520aa 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.17.9.tar.xz) = 811d2671c660a2129c207d5d8daaa576b027ba14ac4cf4753d0e8c1190866a684e284f1e7439b864aaab332e429befbc13c567bf6c9fc1a502fe2cd7d11e5ed4 +SHA512 (cups-filters-1.19.0.tar.xz) = 4b580734f7bac78c9d48aad7d8bb9e47227134e594fba76b1c82632fd8dd3e885f3897f7efd1a4b56647b74741f452f4e36d0157591c7fd5d626001028903d30 From 454cc8b68ddc8f86f921f421edfc0f782e75a8c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 20 Jan 2018 23:06:37 +0100 Subject: [PATCH 027/197] Rebuilt for switch to libxcrypt --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ce3832a..f29ba22 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.19.0 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -278,6 +278,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Sat Jan 20 2018 Björn Esser - 1.19.0-2 +- Rebuilt for switch to libxcrypt + * Tue Jan 16 2018 Zdenek Dohnal - 1.19.0-1 - Rebase to 1.19.0 From 967382e7374ffc9e287d7d09c6775ea537d8b3d0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 30 Jan 2018 12:54:16 +0100 Subject: [PATCH 028/197] Rebase to 1.20.0 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 660beb6..df9c859 100644 --- a/.gitignore +++ b/.gitignore @@ -81,3 +81,4 @@ /cups-filters-1.17.8.tar.xz /cups-filters-1.17.9.tar.xz /cups-filters-1.19.0.tar.xz +/cups-filters-1.20.0.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index f29ba22..d743236 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.19.0 -Release: 2%{?dist} +Version: 1.20.0 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -278,6 +278,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jan 30 2018 Zdenek Dohnal - 1.20.0-1 +- Rebase to 1.20.0 + * Sat Jan 20 2018 Björn Esser - 1.19.0-2 - Rebuilt for switch to libxcrypt diff --git a/sources b/sources index 00520aa..838778a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.19.0.tar.xz) = 4b580734f7bac78c9d48aad7d8bb9e47227134e594fba76b1c82632fd8dd3e885f3897f7efd1a4b56647b74741f452f4e36d0157591c7fd5d626001028903d30 +SHA512 (cups-filters-1.20.0.tar.xz) = b71722cc14f81cf8cbed5b8e980c9689adc2daf6cfa72e4174b6842bd89574090831f0e986b5e32a0e9fc4e29836f04e74e72c48918d7f3a8f65faa3a6c077af From 58bbef731c7bc760fbf25fb736be01629f97f688 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 7 Feb 2018 06:06:30 +0000 Subject: [PATCH 029/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index d743236..7ce7b38 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -278,6 +278,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Feb 07 2018 Fedora Release Engineering - 1.20.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Tue Jan 30 2018 Zdenek Dohnal - 1.20.0-1 - Rebase to 1.20.0 From cf615f08f3f2d93e129f5b9fe8b339a85067f56c Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 8 Feb 2018 15:15:18 +0100 Subject: [PATCH 030/197] remove old stuff https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MRWOMRZ6KPCV25EFHJ2O67BCCP3L4Y6N/ --- cups-filters.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 7ce7b38..40e19ae 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -77,14 +77,12 @@ Requires(postun): systemd %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries -Group: System Environment/Libraries # LGPLv2: libcupsfilters # MIT: libfontembed License: LGPLv2 and MIT %package devel Summary: OpenPrinting CUPS filters and backends - development environment -Group: Development/Libraries License: LGPLv2 and MIT Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -278,6 +276,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Feb 08 2018 Zdenek Dohnal - 1.20.0-3 +- remove old stuff https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MRWOMRZ6KPCV25EFHJ2O67BCCP3L4Y6N/ + * Wed Feb 07 2018 Fedora Release Engineering - 1.20.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 5e19ac79ce3ec2007d1e7b9dc1adf75f8857bff2 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Fri, 9 Feb 2018 09:04:18 +0100 Subject: [PATCH 031/197] Escape macros in %changelog Reference: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/Y2ZUKK2B7T2IKXPMODNF6HB2O5T5TS6H/ Signed-off-by: Igor Gnatenko --- cups-filters.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 40e19ae..99dfe4b 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -276,6 +276,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Feb 09 2018 Igor Gnatenko - 1.20.0-4 +- Escape macros in %%changelog + * Thu Feb 08 2018 Zdenek Dohnal - 1.20.0-3 - remove old stuff https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MRWOMRZ6KPCV25EFHJ2O67BCCP3L4Y6N/ @@ -443,7 +446,7 @@ fi - Rebuild for poppler-0.43.0 * Thu Mar 24 2016 Zdenek Dohnal - 1.8.3-1 -- Update to 1.8.3, adding cupsfilters-ghostscript.convs to %files +- Update to 1.8.3, adding cupsfilters-ghostscript.convs to %%files * Fri Feb 12 2016 Jiri Popelka - 1.8.2-1 - 1.8.2 From 67783211e312adbc2be22a0557b5e9c361cabd4e Mon Sep 17 00:00:00 2001 From: David Tardon Date: Wed, 14 Feb 2018 18:31:34 +0100 Subject: [PATCH 032/197] rebuild for poppler 0.62.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 99dfe4b..d691683 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -276,6 +276,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Feb 14 2018 David Tardon - 1.20.0-5 +- rebuild for poppler 0.62.0 + * Fri Feb 09 2018 Igor Gnatenko - 1.20.0-4 - Escape macros in %%changelog From 24ef2a39123495f3951c7fdbf4b95c937fd74f13 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 19 Feb 2018 13:55:09 +0100 Subject: [PATCH 033/197] gcc and gcc-c++ is no longer in buildroot by default --- cups-filters.spec | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index d691683..7b49562 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -24,6 +24,16 @@ Patch01: cups-filters-createall.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} +# gcc and gcc-c++ is not in buildroot by default + +# gcc for backends (implicitclass, parallel, serial, backend error handling) +# cupsfilters (colord, color manager...), filter (banners, +# commandto*, braille, foomatic-rip, imagetoraster, imagetopdf, gstoraster e.g.), +# fontembed, cups-browsed +BuildRequires: gcc +# gcc-c++ for pdftoopvp, pdftopdf +BuildRequires: gcc-c++ + BuildRequires: cups-devel BuildRequires: pkgconfig # pdftopdf @@ -276,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Feb 19 2018 Zdenek Dohnal - 1.20.0-6 +- gcc and gcc-c++ is no longer in buildroot by default + * Wed Feb 14 2018 David Tardon - 1.20.0-5 - rebuild for poppler 0.62.0 From 8535a417f11d955706e284f629ebf1a38974207a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 26 Feb 2018 12:54:27 +0100 Subject: [PATCH 034/197] libjpeg is shipped in libjpeg-turbo and pkgconfig in pkgconf-pkg-config --- cups-filters.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 7b49562..6ba9693 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -35,7 +35,7 @@ BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cups-devel -BuildRequires: pkgconfig +BuildRequires: pkgconf-pkg-config # pdftopdf BuildRequires: pkgconfig(libqpdf) # pdftops @@ -43,7 +43,7 @@ BuildRequires: poppler-utils # pdftoijs, pdftoopvp, pdftoraster, gstoraster BuildRequires: pkgconfig(poppler) BuildRequires: poppler-cpp-devel -BuildRequires: libjpeg-devel +BuildRequires: libjpeg-turbo-devel BuildRequires: libtiff-devel BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(zlib) @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Feb 21 2018 Zdenek Dohnal - 1.20.0-7 +- libjpeg is shipped in libjpeg-turbo and pkgconfig in pkgconf-pkg-config + * Mon Feb 19 2018 Zdenek Dohnal - 1.20.0-6 - gcc and gcc-c++ is no longer in buildroot by default From 36a0663c9701c93320576b92fbaa05789df61cc8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 28 Feb 2018 12:23:40 +0100 Subject: [PATCH 035/197] add explicit soname -> warning about soname change --- cups-filters.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 6ba9693..89844c3 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.0 -Release: 7%{?dist} +Release: 8%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -273,8 +273,8 @@ fi %dir %{_pkgdocdir}/ %{_pkgdocdir}/COPYING %{_pkgdocdir}/fontembed/README -%{_libdir}/libcupsfilters.so.* -%{_libdir}/libfontembed.so.* +%{_libdir}/libcupsfilters.so.1* +%{_libdir}/libfontembed.so.1* %files devel %{_includedir}/cupsfilters @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Feb 28 2018 Zdenek Dohnal - 1.20.0-8 +- add explicit soname -> warning about soname change + * Wed Feb 21 2018 Zdenek Dohnal - 1.20.0-7 - libjpeg is shipped in libjpeg-turbo and pkgconfig in pkgconf-pkg-config From b28dd5f4422a576ddabdd6bcfb7f25bd2b3c54c1 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 5 Mar 2018 16:03:04 +0100 Subject: [PATCH 036/197] 1.20.1 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index df9c859..4b1de10 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,4 @@ /cups-filters-1.17.9.tar.xz /cups-filters-1.19.0.tar.xz /cups-filters-1.20.0.tar.xz +/cups-filters-1.20.1.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 89844c3..dc1be2d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.20.0 -Release: 8%{?dist} +Version: 1.20.1 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Mar 05 2018 Zdenek Dohnal - 1.21.1-1 +- 1.20.1 + * Wed Feb 28 2018 Zdenek Dohnal - 1.20.0-8 - add explicit soname -> warning about soname change diff --git a/sources b/sources index 838778a..0f49d2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.20.0.tar.xz) = b71722cc14f81cf8cbed5b8e980c9689adc2daf6cfa72e4174b6842bd89574090831f0e986b5e32a0e9fc4e29836f04e74e72c48918d7f3a8f65faa3a6c077af +SHA512 (cups-filters-1.20.1.tar.xz) = 9c0fc3c821a24db99a55b0d5e1750946b294e3b265edae4d4701b4bb3ff9d0f19cb282ff44ec8880a0f643a2703ea3419b03d3d32a5e045d86a2d37031cef108 From 805d0c618c79e0210b5672ba3e5571c78d728de0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 5 Mar 2018 16:03:04 +0100 Subject: [PATCH 037/197] 1.20.1 --- cups-filters.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index dc1be2d..d2f62ec 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.1 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -286,7 +286,7 @@ fi %{_libdir}/libfontembed.so %changelog -* Mon Mar 05 2018 Zdenek Dohnal - 1.21.1-1 +* Mon Mar 05 2018 Zdenek Dohnal - 1.20.1-2 - 1.20.1 * Wed Feb 28 2018 Zdenek Dohnal - 1.20.0-8 From 1c0cb681f952635be4a3fc80921365e962c412f5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 7 Mar 2018 14:11:48 +0100 Subject: [PATCH 038/197] Rebuilt for qpdf-8.0.2 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index d2f62ec..533b7b6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.1 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Mar 07 2018 Zdenek Dohnal - 1.20.1-3 +- Rebuilt for qpdf-8.0.2 + * Mon Mar 05 2018 Zdenek Dohnal - 1.20.1-2 - 1.20.1 From eac2d98b5b12e33ed811153239371471e17f2247 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Fri, 23 Mar 2018 15:28:01 +0100 Subject: [PATCH 039/197] Rebuild for poppler-0.63.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 533b7b6..315a569 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.1 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Mar 23 2018 Marek Kasik - 1.20.1-4 +- Rebuild for poppler-0.63.0 + * Wed Mar 07 2018 Zdenek Dohnal - 1.20.1-3 - Rebuilt for qpdf-8.0.2 From b5d9adf81e4fdce1fd52a04601579ae501373f1d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 5 Apr 2018 07:58:57 +0200 Subject: [PATCH 040/197] 1.20.2 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 4b1de10..6bbeb84 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,4 @@ /cups-filters-1.19.0.tar.xz /cups-filters-1.20.0.tar.xz /cups-filters-1.20.1.tar.xz +/cups-filters-1.20.2.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 315a569..d2a2f3b 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.20.1 -Release: 4%{?dist} +Version: 1.20.2 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -286,6 +286,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Apr 04 2018 Zdenek Dohnal - 1.20.2-1 +- 1.20.2 + * Fri Mar 23 2018 Marek Kasik - 1.20.1-4 - Rebuild for poppler-0.63.0 diff --git a/sources b/sources index 0f49d2e..9c8e5e9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.20.1.tar.xz) = 9c0fc3c821a24db99a55b0d5e1750946b294e3b265edae4d4701b4bb3ff9d0f19cb282ff44ec8880a0f643a2703ea3419b03d3d32a5e045d86a2d37031cef108 +SHA512 (cups-filters-1.20.2.tar.xz) = 94cc2a452b8dc1ed5f03b98e0530d7489dd5a369413b0ab0e7b054fcb198e8fee283507de2ef836df8ce9fb7f217794737fa4851baba72e5b79e38ad02ee61ea From 12094716ea115652d55bc353e9bb5cc50c0a5df5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 5 Apr 2018 08:16:08 +0200 Subject: [PATCH 041/197] fixing discovering of remote CUPS queues and LDAP queues --- cups-filters-no-txt.patch | 15 +++++++++++++++ cups-filters.spec | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 cups-filters-no-txt.patch diff --git a/cups-filters-no-txt.patch b/cups-filters-no-txt.patch new file mode 100644 index 0000000..e63ae5c --- /dev/null +++ b/cups-filters-no-txt.patch @@ -0,0 +1,15 @@ +diff -up cups-filters-1.20.2/utils/cups-browsed.c.no-txt cups-filters-1.20.2/utils/cups-browsed.c +--- cups-filters-1.20.2/utils/cups-browsed.c.no-txt 2018-04-05 07:51:45.698241089 +0200 ++++ cups-filters-1.20.2/utils/cups-browsed.c 2018-04-05 07:57:28.117234138 +0200 +@@ -5333,6 +5333,11 @@ examine_discovered_printer_record(const + /* This is a remote CUPS queue or class */ + is_cups_queue = 1; + #endif /* HAVE_AVAHI */ ++ /* If we do not have a TXT record the printer was not discovered via ++ DNS-SD but via CUPS legacy or LDAP, so it is a remote CUPS queue ++ and not an IPP network printer. */ ++ if (txt == NULL) ++ is_cups_queue = 1; + if (is_cups_queue) { + debug_printf("Found CUPS queue/class: %s on host %s.\n", + strchr(resource, '/') + 1, remote_host); diff --git a/cups-filters.spec b/cups-filters.spec index d2a2f3b..b9d6108 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -22,6 +22,9 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio Patch01: cups-filters-createall.patch +# upstream patches, remove with new release +Patch100: cups-filters-no-txt.patch + Requires: cups-filters-libs%{?_isa} = %{version}-%{release} # gcc and gcc-c++ is not in buildroot by default @@ -112,8 +115,11 @@ This is the development package for OpenPrinting CUPS filters and backends. %prep %setup -q +# set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall +# discover remote CUPS queues and LDAP queues (upstream https://github.com/OpenPrinting/cups-filters/issues/34) +%patch100 -p1 -b .no-txt %build # work-around Rpath @@ -288,6 +294,7 @@ fi %changelog * Wed Apr 04 2018 Zdenek Dohnal - 1.20.2-1 - 1.20.2 +- fixing discovering of remote CUPS queues and LDAP queues * Fri Mar 23 2018 Marek Kasik - 1.20.1-4 - Rebuild for poppler-0.63.0 From 7c37df15ddc23a41d393c4b1cc2efb649c4dbd99 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 5 Apr 2018 09:21:10 +0200 Subject: [PATCH 042/197] dependency on poppler-utils is now only recommended --- cups-filters.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index b9d6108..32a1b42 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -75,7 +75,8 @@ BuildRequires: automake BuildRequires: libtool Requires: cups-filesystem -Requires: poppler-utils +# poppler filters (only if enabled) and printing banners +Recommends: poppler-utils # texttopdf Requires: liberation-mono-fonts @@ -295,6 +296,7 @@ fi * Wed Apr 04 2018 Zdenek Dohnal - 1.20.2-1 - 1.20.2 - fixing discovering of remote CUPS queues and LDAP queues +- dependency on poppler-utils is now only recommended * Fri Mar 23 2018 Marek Kasik - 1.20.1-4 - Rebuild for poppler-0.63.0 From 5a8bdd41870b0541d32b71b64c1575d3de442032 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 13 Apr 2018 09:44:23 +0200 Subject: [PATCH 043/197] 1.20.3 --- .gitignore | 1 + cups-filters-no-txt.patch | 15 --------------- cups-filters.spec | 11 ++++------- sources | 2 +- 4 files changed, 6 insertions(+), 23 deletions(-) delete mode 100644 cups-filters-no-txt.patch diff --git a/.gitignore b/.gitignore index 6bbeb84..cfbec3f 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,4 @@ /cups-filters-1.20.0.tar.xz /cups-filters-1.20.1.tar.xz /cups-filters-1.20.2.tar.xz +/cups-filters-1.20.3.tar.xz diff --git a/cups-filters-no-txt.patch b/cups-filters-no-txt.patch deleted file mode 100644 index e63ae5c..0000000 --- a/cups-filters-no-txt.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up cups-filters-1.20.2/utils/cups-browsed.c.no-txt cups-filters-1.20.2/utils/cups-browsed.c ---- cups-filters-1.20.2/utils/cups-browsed.c.no-txt 2018-04-05 07:51:45.698241089 +0200 -+++ cups-filters-1.20.2/utils/cups-browsed.c 2018-04-05 07:57:28.117234138 +0200 -@@ -5333,6 +5333,11 @@ examine_discovered_printer_record(const - /* This is a remote CUPS queue or class */ - is_cups_queue = 1; - #endif /* HAVE_AVAHI */ -+ /* If we do not have a TXT record the printer was not discovered via -+ DNS-SD but via CUPS legacy or LDAP, so it is a remote CUPS queue -+ and not an IPP network printer. */ -+ if (txt == NULL) -+ is_cups_queue = 1; - if (is_cups_queue) { - debug_printf("Found CUPS queue/class: %s on host %s.\n", - strchr(resource, '/') + 1, remote_host); diff --git a/cups-filters.spec b/cups-filters.spec index 32a1b42..1100df2 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.20.2 +Version: 1.20.3 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -22,9 +22,6 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio Patch01: cups-filters-createall.patch -# upstream patches, remove with new release -Patch100: cups-filters-no-txt.patch - Requires: cups-filters-libs%{?_isa} = %{version}-%{release} # gcc and gcc-c++ is not in buildroot by default @@ -119,9 +116,6 @@ This is the development package for OpenPrinting CUPS filters and backends. # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall -# discover remote CUPS queues and LDAP queues (upstream https://github.com/OpenPrinting/cups-filters/issues/34) -%patch100 -p1 -b .no-txt - %build # work-around Rpath ./autogen.sh @@ -293,6 +287,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Apr 13 2018 Zdenek Dohnal - 1.20.3-1 +- 1.20.3 + * Wed Apr 04 2018 Zdenek Dohnal - 1.20.2-1 - 1.20.2 - fixing discovering of remote CUPS queues and LDAP queues diff --git a/sources b/sources index 9c8e5e9..9fe1bef 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.20.2.tar.xz) = 94cc2a452b8dc1ed5f03b98e0530d7489dd5a369413b0ab0e7b054fcb198e8fee283507de2ef836df8ce9fb7f217794737fa4851baba72e5b79e38ad02ee61ea +SHA512 (cups-filters-1.20.3.tar.xz) = 402a53bf1ea12b14e6f8aa46f8f5e91b2caf9da3a8f14759568b5a45b9309f379fec542c843da5560cbcec2c4860babfee7e9c2f0c62f5fa6254025e9d867b31 From adfe73a4b68452650eecf9badeebd40d6db7634f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 12 Jun 2018 07:36:18 +0200 Subject: [PATCH 044/197] cups-browsed needs to have cups.service to run --- cups-filters.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 1100df2..3a11132 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -82,6 +82,8 @@ Requires: liberation-mono-fonts Requires: bc grep sed which # cups-browsed +# cups-browsed needs to have cups.service to run +Requires: cups Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -287,6 +289,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jun 12 2018 Zdenek Dohnal - 1.20.3-2 +- cups-browsed needs to have cups.service to run + * Fri Apr 13 2018 Zdenek Dohnal - 1.20.3-1 - 1.20.3 From e8b2b7289ab1d56415a5805fbdd3153189242883 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 12 Jun 2018 15:22:34 +0200 Subject: [PATCH 045/197] hybrid pdftops filter requires poppler and ghostscript for run --- cups-filters.spec | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 3a11132..ac4a577 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -72,8 +72,10 @@ BuildRequires: automake BuildRequires: libtool Requires: cups-filesystem -# poppler filters (only if enabled) and printing banners -Recommends: poppler-utils +# if --with-pdftops is set to hybrid, we use poppler filters for several printers +# and for printing banners, for other printers we need gs - ghostscript +Requires: poppler-utils +Requires: ghostscript # texttopdf Requires: liberation-mono-fonts @@ -289,6 +291,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jun 12 2018 Zdenek Dohnal - 1.20.3-3 +- hybrid pdftops filter requires poppler and ghostscript for run + * Tue Jun 12 2018 Zdenek Dohnal - 1.20.3-2 - cups-browsed needs to have cups.service to run From e834146303826105019b2c09b784000c0d694fc8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 25 Jun 2018 10:51:36 +0200 Subject: [PATCH 046/197] rebuilt for new qpdf-8.1.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ac4a577..f3eab14 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -291,6 +291,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Jun 25 2018 Zdenek Dohnal - 1.20.3-4 +- rebuilt for new qpdf-8.1.0 + * Tue Jun 12 2018 Zdenek Dohnal - 1.20.3-3 - hybrid pdftops filter requires poppler and ghostscript for run From 8a7e13d197493b367d37a3dea9308808884793db Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 12 Jul 2018 22:27:26 +0000 Subject: [PATCH 047/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index f3eab14..23754dd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -291,6 +291,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Jul 12 2018 Fedora Release Engineering - 1.20.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Mon Jun 25 2018 Zdenek Dohnal - 1.20.3-4 - rebuilt for new qpdf-8.1.0 From 065cfc122f0dbb447e6eca3a69569100bc96737d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 24 Jul 2018 15:39:38 +0200 Subject: [PATCH 048/197] correcting license --- cups-filters.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 23754dd..bed5b67 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -15,7 +15,7 @@ Release: 5%{?dist} # GPLv3+: filters: urftopdf, rastertopdf # LGPLv2+: utils: cups-browsed # MIT: filters: gstoraster, pdftoijs, pdftoopvp, pdftopdf, pdftoraster -License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT +License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with advertising Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz @@ -291,6 +291,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jul 24 2018 Zdenek Dohnal - 1.20.3-6 +- correcting license + * Thu Jul 12 2018 Fedora Release Engineering - 1.20.3-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From 5d00506944c3974e75a3884dfea202f5896a6e32 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Tue, 14 Aug 2018 01:11:34 +0200 Subject: [PATCH 049/197] Rebuild for poppler-0.67.0 --- cups-filters.spec | 7 ++++++- poppler-0.64.patch | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 poppler-0.64.patch diff --git a/cups-filters.spec b/cups-filters.spec index bed5b67..f1ed072 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.20.3 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,6 +21,7 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-createall.patch +Patch02: poppler-0.64.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -119,6 +120,7 @@ This is the development package for OpenPrinting CUPS filters and backends. # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall +%patch02 -p1 -b .poppler-0.64 %build # work-around Rpath @@ -291,6 +293,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Aug 14 2018 Marek Kasik - 1.20.3-7 +- Rebuild for poppler-0.67.0 + * Tue Jul 24 2018 Zdenek Dohnal - 1.20.3-6 - correcting license diff --git a/poppler-0.64.patch b/poppler-0.64.patch new file mode 100644 index 0000000..4babcf1 --- /dev/null +++ b/poppler-0.64.patch @@ -0,0 +1,28 @@ +From 07a0a423a8469a2dd6d7f64bb3b62ba6ac42cc28 Mon Sep 17 00:00:00 2001 +From: Lars Wendler +Date: Fri, 20 Jul 2018 15:20:11 +0200 +Subject: [PATCH] GooString needs to be const since >=poppler-0.64.0 + +This only fails with >=poppler-0.67.0 but the change to const was done +in 0.64.0 +--- + filter/pdf.cxx | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/filter/pdf.cxx b/filter/pdf.cxx +index 206ccf88..665eab09 100644 +--- a/filter/pdf.cxx ++++ b/filter/pdf.cxx +@@ -734,6 +734,9 @@ extern "C" int pdf_fill_form(pdf_t *doc, opt_t *opt) + } + + FormField *ff = fm_text->getField(); ++#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 64 ++ const ++#endif + GooString *field_name; + field_name = ff->getFullyQualifiedName(); + if ( ! field_name ) +-- +2.17.1 + From 71c6baacf42199a323c8576dadebd487dad2c7af Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 10 Sep 2018 18:11:31 +0200 Subject: [PATCH 050/197] 1.21.2 --- .gitignore | 1 + cups-filters.spec | 9 +- poppler-0.58.patch | 825 --------------------------------------------- poppler-0.64.patch | 28 -- sources | 2 +- 5 files changed, 7 insertions(+), 858 deletions(-) delete mode 100644 poppler-0.58.patch delete mode 100644 poppler-0.64.patch diff --git a/.gitignore b/.gitignore index cfbec3f..1148964 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,4 @@ /cups-filters-1.20.1.tar.xz /cups-filters-1.20.2.tar.xz /cups-filters-1.20.3.tar.xz +/cups-filters-1.21.2.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index f1ed072..9161076 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.20.3 -Release: 7%{?dist} +Version: 1.21.2 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,7 +21,6 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-createall.patch -Patch02: poppler-0.64.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -120,7 +119,6 @@ This is the development package for OpenPrinting CUPS filters and backends. # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall -%patch02 -p1 -b .poppler-0.64 %build # work-around Rpath @@ -293,6 +291,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Sep 10 2018 Zdenek Dohnal - 1.21.2-1 +- 1.21.2 + * Tue Aug 14 2018 Marek Kasik - 1.20.3-7 - Rebuild for poppler-0.67.0 diff --git a/poppler-0.58.patch b/poppler-0.58.patch deleted file mode 100644 index 8acb77f..0000000 --- a/poppler-0.58.patch +++ /dev/null @@ -1,825 +0,0 @@ -=== modified file 'filter/pdf.cxx' ---- filter/pdf.cxx 2017-08-15 18:32:47 +0000 -+++ filter/pdf.cxx 2017-09-07 16:02:01 +0000 -@@ -129,64 +129,125 @@ - Object array; - Ref r; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj = xref->fetch(pageref->num, pageref->gen); -+#else - xref->fetch(pageref->num, pageref->gen, &pageobj); -- if (!pageobj.isDict() || !pageobj.dictLookupNF("Contents", &contents)) { -+#endif -+ if (!pageobj.isDict() || -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ (contents = pageobj.dictLookupNF("Contents")).isNull() -+#else -+ !pageobj.dictLookupNF("Contents", &contents) -+#endif -+ ) { - fprintf(stderr, "Error: malformed pdf\n"); - return; - } - -- if (contents.isRef()) -+ if (contents.isRef()) { -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ contents = xref->fetch(contents.getRefNum(), contents.getRefGen()); -+#else - xref->fetch(contents.getRefNum(), contents.getRefGen(), &contents); -+#endif -+ } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ (void) lenobj; -+ dict = Object(new Dict(xref)); -+ dict.dictSet("Length", Object(static_cast(len))); -+ stream = Object(static_cast(new MemStream(buf, 0, len, std::move(dict)))); -+#else - lenobj.initInt(len); - dict.initDict(xref); - dict.dictSet("Length", &lenobj); - stream.initStream(new MemStream(buf, 0, len, &dict)); -+#endif - - r = xref->addIndirectObject(&stream); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ streamrefobj = Object(r.num, r.gen); -+#else - streamrefobj.initRef(r.num, r.gen); -+#endif - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ array = Object(new Array(xref)); -+ array.arrayAdd(std::move(streamrefobj)); -+#else - array.initArray(xref); - array.arrayAdd(&streamrefobj); -+#endif - - if (contents.isStream()) { -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ contents = pageobj.dictLookupNF("Contents"); // streams must be indirect, i.e. not fetch()-ed -+ array.arrayAdd(std::move(contents)); -+#else - pageobj.dictLookupNF("Contents", &contents); // streams must be indirect, i.e. not fetch()-ed - array.arrayAdd(&contents); -+#endif - } - else if (contents.isArray()) { - int i, len = contents.arrayGetLength(); - Object obj; - for (i = 0; i < len; i++) { -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ obj = contents.arrayGetNF(i); -+ array.arrayAdd(std::move(obj)); -+#else - contents.arrayGetNF(i, &obj); - array.arrayAdd(&obj); -+#endif - } - } - else - fprintf(stderr, "Error: malformed pdf\n"); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj.dictSet("Contents", std::move(array)); -+#else - pageobj.dictSet("Contents", &array); -+#endif - - xref->setModifiedObject(&pageobj, *pageref); -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); --} -- -- -+#endif -+} -+ -+ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+static Object name_object(const char *s) -+{ -+ return Object(new GooString(s)); -+} -+#else - static Object * name_object(const char *s) - { - Object *o = new Object(); - o->initName((char *)s); - return o; - } -+#endif - - /* - * Create new PDF integer type object. - */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+static Object int_object(int i) -+{ -+ return Object(i); -+} -+#else - static Object * int_object(int i) - { - Object *o = new Object(); - o->initInt(i); - return o; - } -+#endif - - static Object * get_resource_dict(XRef *xref, - Dict *pagedict, -@@ -196,21 +257,36 @@ - Object res; - - /* TODO resource dict can also be inherited */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ res = pagedict->lookupNF("Resources"); -+ if (res.isNull()) -+#else - if (!pagedict->lookupNF("Resources", &res)) -+#endif - return NULL; - - if (res.isRef()) { - *resref = res.getRef(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ *resdict = xref->fetch(resref->num, resref->gen); -+#else - xref->fetch(resref->num, resref->gen, resdict); -+#endif - } - else if (res.isDict()) { -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ *resdict = res.copy(); -+#else - res.copy(resdict); -+#endif - resref->num = 0; - } - else - resdict = NULL; - -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - res.free(); -+#endif - return resdict; - } - -@@ -226,7 +302,11 @@ - Object resdict; - Ref resref; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj = xref->fetch(pageref->num, pageref->gen); -+#else - xref->fetch(pageref->num, pageref->gen, &pageobj); -+#endif - if (!pageobj.isDict()) { - fprintf(stderr, "Error: malformed pdf\n"); - return; -@@ -234,21 +314,35 @@ - - if (!get_resource_dict(xref, pageobj.getDict(), &resdict, &resref)) { - fprintf(stderr, "Error: malformed pdf\n"); -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); -+#endif - return; - } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ font = Object(new Dict(xref)); -+#else - font.initDict(xref); -+#endif - font.dictSet("Type", name_object("Font")); - font.dictSet("Subtype", name_object("Type1")); - font.dictSet("BaseFont", name_object(name)); - xref->addIndirectObject(&font); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ fonts = resdict.dictLookupNF("Font"); -+#else - resdict.dictLookupNF("Font", &fonts); -+#endif - if (fonts.isNull()) { - /* Create new font dic obj in page's resources */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ resdict.dictSet("Font", Object(new Dict(xref))); -+#else - fonts.initDict(xref); - resdict.dictSet("Font", &fonts); -+#endif - } - - Object *fonts_dic; -@@ -259,7 +353,11 @@ - fonts_dic = &fonts; - } else if ( fonts.isRef() ) { - /* "Font" resource is indirect reference object */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ dereferenced_obj = xref->fetch(fonts.getRefNum(), fonts.getRefGen()); -+#else - xref->fetch(fonts.getRefNum(), fonts.getRefGen(), &dereferenced_obj); -+#endif - fonts_dic = &dereferenced_obj; - } - -@@ -269,7 +367,11 @@ - } - - /* Add new entry to "Font" resource */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ fonts_dic->dictSet("bannertopdf-font", std::move(font)); -+#else - fonts_dic->dictSet("bannertopdf-font", &font); -+#endif - - /* Notify poppler about changes */ - if ( fonts.isRef() ) { -@@ -281,7 +383,9 @@ - else - xref->setModifiedObject(&resdict, resref); - -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); -+#endif - } - - -@@ -293,23 +397,38 @@ - Array *array; - int i; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ o = dict->dictLookup(key); -+ if (o.isNull()) -+#else - if (!dict->dictLookup(key, &o)) -+#endif - return false; - - if (!o.isArray()) { -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - o.free(); -+#endif - return false; - } - - array = o.getArray(); - for (i = 0; i < 4; i++) { - Object el; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ el = array->get(i); -+ if (el.isNum()) -+ rect[i] = el.getNum(); -+#else - if (array->get(i, &el) && el.isNum()) - rect[i] = el.getNum(); - el.free(); -+#endif - } - -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - o.free(); -+#endif - return i == 4; - } - -@@ -322,6 +441,15 @@ - Object array; - int i; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ array = Object(new Array(xref)); -+ -+ for (i = 0; i < 4; i++) { -+ array.arrayAdd(Object(static_cast(rect[i]))); -+ } -+ -+ dict->dictSet(key, std::move(array)); -+#else - array.initArray(xref); - - for (i = 0; i < 4; i++) { -@@ -331,6 +459,7 @@ - } - - dict->dictSet(key, &array); -+#endif - } - - -@@ -361,7 +490,11 @@ - float mediabox[4] = { 0.0, 0.0, width, length }; - float old_mediabox[4]; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj = xref->fetch(pageref->num, pageref->gen); -+#else - xref->fetch(pageref->num, pageref->gen, &pageobj); -+#endif - if (!pageobj.isDict()) { - fprintf(stderr, "Error: malformed pdf\n"); - return; -@@ -381,7 +514,9 @@ - dict_set_rect (xref, &pageobj, "BleedBox", mediabox); - - xref->setModifiedObject(&pageobj, *pageref); -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); -+#endif - } - - -@@ -394,21 +529,34 @@ - Object page, parentref, parent, kids, ref, countobj; - int i; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ page = xref->fetch(pageref->num, pageref->gen); -+#else - xref->fetch(pageref->num, pageref->gen, &page); -+#endif - if (!page.isDict("Page")) { - fprintf(stderr, "Error: malformed pdf (invalid Page object)\n"); - return; - } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ parentref = page.dictLookupNF("Parent"); -+ parent = parentref.fetch(xref); -+#else - page.dictLookupNF("Parent", &parentref); - parentref.fetch(xref, &parent); -+#endif - if (!parent.isDict("Pages")) { - fprintf(stderr, "Error: malformed pdf (Page.Parent must point to a " - "Pages object)\n"); - return; - } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ kids = parent.dictLookup("Kids"); -+#else - parent.dictLookup("Kids", &kids); -+#endif - if (!kids.isArray()) { - fprintf(stderr, "Error: malformed pdf (Pages.Kids must be an array)\n"); - return; -@@ -420,14 +568,22 @@ - // the pages tree (not supported by major pdf implementations). - for (i = 1; i < count; i++) { - Ref r = xref->addIndirectObject(&page); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ kids.arrayAdd(Object(r.num, r.gen)); -+#else - ref.initRef(r.num, r.gen); - kids.arrayAdd(&ref); - ref.free(); -+#endif - } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ parent.dictSet("Count", Object(count)); -+#else - countobj.initInt(count); - parent.dictSet("Count", &countobj); - countobj.free(); -+#endif - - xref->setModifiedObject(&parent, parentref.getRef()); - } -@@ -523,7 +679,11 @@ - } - Object pageobj; - Ref pageref = page->getRef(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj = xref->fetch(pageref.num, pageref.gen); -+#else - xref->fetch(pageref.num, pageref.gen, &pageobj); -+#endif - - const char *font_size = lookup_opt(opt, "banner-font-size"); - if ( ! font_size ) { -@@ -614,8 +774,12 @@ - - /* Modify field's appearance */ - Object appearance_obj; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ field_obj->getDict()->set("DA", Object(appearance)); -+#else - appearance_obj.initString(appearance); - field_obj->getDict()->set("DA", &appearance_obj); -+#endif - - /* - * Create /AP - entry stuff. -@@ -653,7 +817,11 @@ - appearance_stream->append("EMC\n"); - - Object appearance_stream_dic; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ appearance_stream_dic = Object(new Dict(xref)); -+#else - appearance_stream_dic.initDict(xref); -+#endif - - /* - * Appearance stream dic. -@@ -663,12 +831,46 @@ - appearance_stream_dic.dictSet("Type", name_object("XObject")); - appearance_stream_dic.dictSet("Subtype", name_object("Form")); - appearance_stream_dic.dictSet("FormType", int_object(1)); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ appearance_stream_dic.dictSet("Resources", Object(resref.num, resref.gen)); -+#else - Object obj_ref_x; - obj_ref_x.initRef(resref.num, resref.gen); - appearance_stream_dic.dictSet("Resources", &obj_ref_x); -+#endif - - /* BBox array: TODO. currently out of the head. */ - Object array; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ array = Object(new Array(xref)); -+ array.arrayAdd(Object(0.0)); -+ array.arrayAdd(Object(0.0)); -+ array.arrayAdd(Object(237.0)); -+ array.arrayAdd(Object(25.0)); -+ -+ appearance_stream_dic.dictSet("BBox", std::move(array)); -+ appearance_stream_dic.dictSet("Length", Object(appearance_stream->getLength())); -+ -+ MemStream *mem_stream = new MemStream(appearance_stream->getCString(), -+ 0, appearance_stream->getLength(), std::move(appearance_stream_dic)); -+ -+ /* Make obj stream */ -+ Object stream = Object(static_cast(mem_stream)); -+ -+ Ref r = xref->addIndirectObject(&stream); -+ -+ /* Update Xref table */ -+ Object obj_ref = Object(r.num, r.gen); -+ -+ /* -+ * Fill Annotation's appearance streams dic /AP -+ * See: 8.4.4 Appearance Streams -+ */ -+ Object appearance_streams_dic = Object(new Dict(xref)); -+ appearance_streams_dic.dictSet("N", std::move(obj_ref)); -+ -+ field_obj->getDict()->set("AP", std::move(appearance_streams_dic)); -+#else - array.initArray(xref); - Object el; - el.initReal(0); -@@ -705,6 +907,7 @@ - appearance_streams_dic.dictSet("N", &obj_ref); - - field_obj->getDict()->set("AP", &appearance_streams_dic); -+#endif - - /* Notify poppler about changes */ - xref->setModifiedObject(field_obj, field_ref); -@@ -721,24 +924,38 @@ - * OpenOffice - by default sets it to 'true'. - */ - Object *obj_form = catalog->getAcroForm(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ obj_form->dictSet("NeedAppearances", Object(gFalse)); -+#else - Object obj1; - obj1.initBool(gFalse); - obj_form->dictSet("NeedAppearances", &obj1); -+#endif -+ - /* Add AccroForm as indirect obj */ - Ref ref_form = xref->addIndirectObject(obj_form); - - /* - * So update Catalog object. - */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ Object catObj = xref->getCatalog(); -+#else - Object* catObj = new Object(); - catObj = xref->getCatalog(catObj); -+#endif - Ref catRef; - catRef.gen = xref->getRootGen(); - catRef.num = xref->getRootNum(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ catObj.dictSet("AcroForm", Object(ref_form.num, ref_form.gen)); -+ xref->setModifiedObject(&catObj, catRef); -+#else - Object obj2; - obj2.initRef(ref_form.num, ref_form.gen); - catObj->dictSet("AcroForm", &obj2); - xref->setModifiedObject(catObj, catRef); -+#endif - - /* Success */ - return 1; -@@ -780,7 +997,11 @@ - - /* Font dictionary object for embeded font */ - Object f_dic; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ f_dic = Object(new Dict(xref)); -+#else - f_dic.initDict(xref); -+#endif - f_dic.dictSet("Type", name_object("Font")); - - /* Stream lenght */ -@@ -798,12 +1019,18 @@ - } - - /* Create memory stream font. Add it to font dic. */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ MemStream *mem_stream = new MemStream(font_stream->getCString(), -+ 0, outlen, std::move(f_dic)); -+ Object stream = Object(static_cast(mem_stream)); -+#else - MemStream *mem_stream = new MemStream(font_stream->getCString(), - 0, outlen, &f_dic); - - /* Make obj stream */ - Object stream; - stream.initStream(mem_stream); -+#endif - - Ref r; - -@@ -813,7 +1040,11 @@ - /* Get page object */ - Object pageobj; - Ref pageref = page->getRef(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ pageobj = xref->fetch(pageref.num, pageref.gen); -+#else - xref->fetch(pageref.num, pageref.gen, &pageobj); -+#endif - if (!pageobj.isDict()) { - fprintf(stderr, "Error: malformed pdf.\n"); - return 0; -@@ -825,18 +1056,29 @@ - Object *ret = get_resource_dict(xref, pageobj.getDict(), &resdict, &resref); - if ( !ret ) { - fprintf(stderr, "Error: malformed pdf\n"); -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); -+#endif - return 0; - } - - /* Dictionary for all fonts in page's resources */ - Object fonts; - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ fonts = resdict.dictLookupNF("Font"); -+#else - resdict.dictLookupNF("Font", &fonts); -+#endif - if (fonts.isNull()) { - /* Create new one, if doesn't exists */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ resdict.dictSet("Font", Object(new Dict(xref))); -+ fonts = resdict.dictLookupNF("Font"); -+#else - fonts.initDict(xref); - resdict.dictSet("Font", &fonts); -+#endif - fprintf(stderr, "Create new font dict in page's resources.\n"); - } - -@@ -866,7 +1108,11 @@ - - /* r - cid resource dic */ - Object font_res_obj_ref; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ font_res_obj_ref = Object(r.num, r.gen); -+#else - font_res_obj_ref.initRef(r.num, r.gen); -+#endif - - Object *fonts_dic; - Object dereferenced_obj; -@@ -876,7 +1122,11 @@ - fonts_dic = &fonts; - } else if ( fonts.isRef() ) { - /* "Font" resource is indirect reference object */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ dereferenced_obj = xref->fetch(fonts.getRefNum(), fonts.getRefGen()); -+#else - xref->fetch(fonts.getRefNum(), fonts.getRefGen(), &dereferenced_obj); -+#endif - fonts_dic = &dereferenced_obj; - } - -@@ -886,7 +1136,11 @@ - } - - /* Add to fonts dic new font */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ fonts_dic->dictSet("stanv_font", std::move(font_res_obj_ref)); -+#else - fonts_dic->dictSet("stanv_font", &font_res_obj_ref); -+#endif - - /* Notify poppler about changes in fonts dic */ - if ( fonts.isRef() ) { -@@ -897,7 +1151,9 @@ - xref->setModifiedObject(&resdict, resref); - fprintf(stderr, "Resource dict was changed.\n"); - -+#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR < 58 - pageobj.free(); -+#endif - - /* Success */ - return 1; -@@ -1104,8 +1360,12 @@ - XRef *xref = doc->getXRef(); - - /* Font dictionary for embeded font */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ Object *dic = new Object(new Dict(xref)); -+#else - Object *dic = new Object(); - dic->initDict(xref); -+#endif - - dic->dictSet("Type", name_object("FontDescriptor")); - dic->dictSet( -@@ -1119,6 +1379,15 @@ - dic->dictSet("StemV", int_object(fdes->stemV)); - - /* FontBox array */ -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ Object array = Object(new Array(xref)); -+ array.arrayAdd(Object(static_cast(fdes->bbxmin))); -+ array.arrayAdd(Object(static_cast(fdes->bbymin))); -+ array.arrayAdd(Object(static_cast(fdes->bbxmax))); -+ array.arrayAdd(Object(static_cast(fdes->bbymax))); -+ -+ dic->dictSet("FontBBox", std::move(array)); -+#else - Object array; - array.initArray(xref); - -@@ -1137,6 +1406,7 @@ - array.arrayAdd(&el); - - dic->dictSet("FontBBox", &array); -+#endif - - if (fdes->xHeight) { - dic->dictSet("XHeight", int_object(fdes->xHeight)); -@@ -1149,20 +1419,34 @@ - if (fdes->panose) { - /* Font dictionary for embeded font */ - Object style_dic; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ style_dic = Object(new Dict(xref)); -+#else - style_dic.initDict(xref); -- -+#endif -+ -+ GooString *panose_str = new GooString(fdes->panose, 12); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ style_dic.dictSet("Panose", Object(panose_str)); -+ -+ dic->dictSet("Style", std::move(style_dic)); -+#else - Object panose; - -- GooString *panose_str = new GooString(fdes->panose, 12); - panose.initString(panose_str); - style_dic.dictSet("Panose", &panose); - - dic->dictSet("Style", &style_dic); -+#endif - } - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ dic->dictSet(emb_pdf_get_fontfile_key(emb), Object(fontfile_obj_ref.num, fontfile_obj_ref.gen)); -+#else - Object ref_obj; - ref_obj.initRef(fontfile_obj_ref.num, fontfile_obj_ref.gen); - dic->dictSet(emb_pdf_get_fontfile_key(emb), &ref_obj); -+#endif - - return dic; - } -@@ -1181,8 +1465,12 @@ - /* Get XREF table */ - XRef *xref = doc->getXRef(); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ Object *dic = new Object(new Dict(xref)); -+#else - Object *dic = new Object(); - dic->initDict(xref); -+#endif - - dic->dictSet("Type", name_object("Font")); - dic->dictSet( -@@ -1192,15 +1480,23 @@ - "BaseFont", - name_object(copyString(emb_pdf_escape_name(fdes->fontname,-1)))); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ dic->dictSet("FontDescriptor", Object(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen)); -+#else - Object ref_obj; - ref_obj.initRef(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); - dic->dictSet("FontDescriptor", &ref_obj); -+#endif - - if ( emb->plan & EMB_A_MULTIBYTE ) { - assert(fwid->warray); - - Object CIDSystemInfo_dic; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ CIDSystemInfo_dic = Object(new Dict(xref)); -+#else - CIDSystemInfo_dic.initDict(xref); -+#endif - - Object registry; - Object ordering; -@@ -1208,16 +1504,28 @@ - GooString *str; - - str = new GooString(copyString(fdes->registry)); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ CIDSystemInfo_dic.dictSet("Registry", Object(str)); -+#else - registry.initString(str); - CIDSystemInfo_dic.dictSet("Registry", ®istry); -+#endif - - str = new GooString(copyString(fdes->ordering)); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ CIDSystemInfo_dic.dictSet("Ordering", Object(str)); -+#else - ordering.initString(str); - CIDSystemInfo_dic.dictSet("Ordering", &ordering); -+#endif - - CIDSystemInfo_dic.dictSet("Supplement", int_object(fdes->supplement)); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ dic->dictSet("CIDSystemInfo", std::move(CIDSystemInfo_dic)); -+#else - dic->dictSet("CIDSystemInfo", &CIDSystemInfo_dic); -+#endif - - dic->dictSet("DW", int_object(fwid->default_width)); - } -@@ -1249,8 +1557,12 @@ - /* Get XREF table */ - XRef *xref = doc->getXRef(); - -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ Object *dic = new Object(new Dict(xref)); -+#else - Object *dic = new Object(); - dic->initDict(xref); -+#endif - - dic->dictSet("Type", name_object("Font")); - dic->dictSet("Subtype", name_object("Type0")); -@@ -1267,13 +1579,24 @@ - dic->dictSet("Encoding", name_object(copyString(encoding))); - - Object obj; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ obj = Object(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); -+#else - obj.initRef(fontdescriptor_obj_ref.num, fontdescriptor_obj_ref.gen); -+#endif - - Object array; -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 58 -+ array = Object(new Array(xref)); -+ array.arrayAdd(std::move(obj)); -+ -+ dic->dictSet("DescendantFonts", std::move(array)); -+#else - array.initArray(xref); - array.arrayAdd(&obj); - - dic->dictSet("DescendantFonts", &array); -+#endif - - return dic; - } - diff --git a/poppler-0.64.patch b/poppler-0.64.patch deleted file mode 100644 index 4babcf1..0000000 --- a/poppler-0.64.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 07a0a423a8469a2dd6d7f64bb3b62ba6ac42cc28 Mon Sep 17 00:00:00 2001 -From: Lars Wendler -Date: Fri, 20 Jul 2018 15:20:11 +0200 -Subject: [PATCH] GooString needs to be const since >=poppler-0.64.0 - -This only fails with >=poppler-0.67.0 but the change to const was done -in 0.64.0 ---- - filter/pdf.cxx | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/filter/pdf.cxx b/filter/pdf.cxx -index 206ccf88..665eab09 100644 ---- a/filter/pdf.cxx -+++ b/filter/pdf.cxx -@@ -734,6 +734,9 @@ extern "C" int pdf_fill_form(pdf_t *doc, opt_t *opt) - } - - FormField *ff = fm_text->getField(); -+#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 64 -+ const -+#endif - GooString *field_name; - field_name = ff->getFullyQualifiedName(); - if ( ! field_name ) --- -2.17.1 - diff --git a/sources b/sources index 9fe1bef..04b0b7a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.20.3.tar.xz) = 402a53bf1ea12b14e6f8aa46f8f5e91b2caf9da3a8f14759568b5a45b9309f379fec542c843da5560cbcec2c4860babfee7e9c2f0c62f5fa6254025e9d867b31 +SHA512 (cups-filters-1.21.2.tar.xz) = 07672737108e1593374fa95582e2c8ad7a3fec6202846ba85224c1c89f65b7b89de96ebf67841ec5d948fe556dddd06ae6a58ad6c5c0a25a82ce643c9384aaf0 From 896c4186e838d04196ab6ffa4295e6183b71966f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 21 Sep 2018 15:05:22 +0200 Subject: [PATCH 051/197] 1628255 - cups-filters: Sticky EOF behavior in glibc breaks descriptor concatenation using dup2 (breaks printing) --- cups-filters-cleareof.patch | 11 +++++++++++ cups-filters.spec | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cups-filters-cleareof.patch diff --git a/cups-filters-cleareof.patch b/cups-filters-cleareof.patch new file mode 100644 index 0000000..8b9731f --- /dev/null +++ b/cups-filters-cleareof.patch @@ -0,0 +1,11 @@ +diff -up cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c.cleareof cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c +--- cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c.cleareof 2018-09-21 13:38:05.882666106 +0200 ++++ cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c 2018-09-21 13:38:55.330277816 +0200 +@@ -663,6 +663,7 @@ int print_file(const char *filename, int + rip_die(EXIT_PRNERR_NORETRY_BAD_SETTINGS, + "Couldn't dup stdout of pdf-to-ps\n"); + ++ clearerr(stdin); + ret = print_file("", 0); + + wait_for_process(renderer_pid); diff --git a/cups-filters.spec b/cups-filters.spec index 9161076..13f14ca 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.21.2 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,6 +21,9 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-createall.patch +# backported patch from upstream - since glibc 2.28 there is a need to clear EOF on +# file descriptor when I use dup2 on file descriptor where is EOF +Patch02: cups-filters-cleareof.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -119,6 +122,8 @@ This is the development package for OpenPrinting CUPS filters and backends. # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall +# backported from upstream - EOF from pipe needs to cleared +%patch02 -p1 -b .cleareof %build # work-around Rpath @@ -291,6 +296,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Sep 21 2018 Zdenek Dohnal - 1.21.2-2 +- 1628255 - cups-filters: Sticky EOF behavior in glibc breaks descriptor concatenation using dup2 (breaks printing) + * Mon Sep 10 2018 Zdenek Dohnal - 1.21.2-1 - 1.21.2 From 1b4fbffc07dbe09e10a751106e0e71f37a3fa4d1 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 24 Sep 2018 17:43:53 +0200 Subject: [PATCH 052/197] 1632267 - cups-filters needs to obsolete ghostscript-cups and foomatic-filters --- cups-filters.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 13f14ca..14b4d3d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.21.2 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -93,6 +93,12 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd +# some installations can have ghostscript-cups or foomatic-filters installed, +# but they are provided by cups-filters, so we need to obsolete them to have +# them uninstalled - remove these obsoletes when F31+ +Obsoletes: ghostscript-cups +Obsoletes: foomatic-filters + %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries # LGPLv2: libcupsfilters @@ -296,6 +302,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Sep 24 2018 Zdenek Dohnal - 1.21.2-3 +- 1632267 - cups-filters needs to obsolete ghostscript-cups and foomatic-filters + * Fri Sep 21 2018 Zdenek Dohnal - 1.21.2-2 - 1628255 - cups-filters: Sticky EOF behavior in glibc breaks descriptor concatenation using dup2 (breaks printing) From ef3e4c55ceacbcaba0009180b4984bda26d50ca0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 24 Sep 2018 17:44:48 +0200 Subject: [PATCH 053/197] rebuilt for qpdf-8.2.1 --- cups-filters.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/cups-filters.spec b/cups-filters.spec index 14b4d3d..4015bef 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -304,6 +304,7 @@ fi %changelog * Mon Sep 24 2018 Zdenek Dohnal - 1.21.2-3 - 1632267 - cups-filters needs to obsolete ghostscript-cups and foomatic-filters +- rebuilt for qpdf-8.2.1 * Fri Sep 21 2018 Zdenek Dohnal - 1.21.2-2 - 1628255 - cups-filters: Sticky EOF behavior in glibc breaks descriptor concatenation using dup2 (breaks printing) From 8ab2c03a624f175c74e6092578c6df32bd41ff5a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 12 Nov 2018 14:35:36 +0100 Subject: [PATCH 054/197] links in manpages are wrong --- cups-browsed.8.patch | 14 ++++++++++++++ cups-filters.spec | 12 +++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 cups-browsed.8.patch diff --git a/cups-browsed.8.patch b/cups-browsed.8.patch new file mode 100644 index 0000000..583c758 --- /dev/null +++ b/cups-browsed.8.patch @@ -0,0 +1,14 @@ +diff -up cups-filters-1.20.0/utils/cups-browsed.8.manpage cups-filters-1.20.0/utils/cups-browsed.8 +--- cups-filters-1.20.0/utils/cups-browsed.8.manpage 2018-11-12 14:14:48.436062013 +0100 ++++ cups-filters-1.20.0/utils/cups-browsed.8 2018-11-12 14:19:10.188091043 +0100 +@@ -100,8 +100,8 @@ and command line tools. + + \fBcups-browsed.conf\fP(5) + .PP +-/usr/share/doc/\fBcups-browsed\fP/README.gz ++/usr/share/doc/cups-filters/README.gz + .SH AUTHOR +-The authors of \fBcups-browsed\fP are listed in /usr/share/doc/\fBcups-browsed\fP/AUTHORS. ++The authors of \fBcups-browsed\fP are listed in /usr/share/doc/cups-filters/AUTHORS. + .PP + This manual page was written for the Debian Project, but it may be used by others. diff --git a/cups-filters.spec b/cups-filters.spec index 4015bef..a8da22a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.21.2 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -24,6 +24,11 @@ Patch01: cups-filters-createall.patch # backported patch from upstream - since glibc 2.28 there is a need to clear EOF on # file descriptor when I use dup2 on file descriptor where is EOF Patch02: cups-filters-cleareof.patch +# Links in man page is wrong - it shows 'cups-browsed' in path, but we +# have 'cups-filters' in path, because it is shipped in 'cups-filters' package +# instead of 'cups-browsed' as Ubuntu does. I can repack the project later, +# so cups-browsed would have separate sub package, so the link would be correct +Patch03: cups-browsed.8.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -130,6 +135,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # backported from upstream - EOF from pipe needs to cleared %patch02 -p1 -b .cleareof +# links in manpage +%patch03 -p1 -b .manpage %build # work-around Rpath @@ -302,6 +309,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Nov 12 2018 Zdenek Dohnal - 1.21.2-4 +- links in manpages are wrong + * Mon Sep 24 2018 Zdenek Dohnal - 1.21.2-3 - 1632267 - cups-filters needs to obsolete ghostscript-cups and foomatic-filters - rebuilt for qpdf-8.2.1 From 6239c46f669913cbcae4c430e6fc8761fb64c548 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 13 Dec 2018 16:06:47 +0100 Subject: [PATCH 055/197] 1.21.5 --- .gitignore | 1 + ...ed-crashes-caused-by-checking-HTTP-t.patch | 88 +++++++++++++++++++ cups-filters-cleareof.patch | 11 --- cups-filters.spec | 21 +++-- sources | 2 +- 5 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch delete mode 100644 cups-filters-cleareof.patch diff --git a/.gitignore b/.gitignore index 1148964..c1868e8 100644 --- a/.gitignore +++ b/.gitignore @@ -86,3 +86,4 @@ /cups-filters-1.20.2.tar.xz /cups-filters-1.20.3.tar.xz /cups-filters-1.21.2.tar.xz +/cups-filters-1.21.5.tar.xz diff --git a/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch b/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch new file mode 100644 index 0000000..3e55d28 --- /dev/null +++ b/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch @@ -0,0 +1,88 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index ee361d9a..02de23d1 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -4476,15 +4476,6 @@ gboolean update_cups_queues(gpointer unused) { + current_time = time(NULL); + timeout_reached = 0; + +- /* cups-browsed tried to add this print queue unsuccessfully for too +- many times due to timeouts - Skip print queue creation for this one */ +- if (p->timeouted >= HttpMaxRetries) +- { +- fprintf(stderr, "Max number of retries (%d) for creating print queue %s reached, skipping it.\n", +- HttpMaxRetries, p->queue_name); +- continue; +- } +- + /* terminating means we have received a signal and should shut down. + in_shutdown means we have exited the main loop. + update_cups_queues() is called after having exited the main loop +@@ -4686,6 +4677,14 @@ gboolean update_cups_queues(gpointer unused) { + if (p->timeout > current_time) + break; + ++ /* cups-browsed tried to add this print queue unsuccessfully for too ++ many times due to timeouts - Skip print queue creation for this one */ ++ if (p->timeouted >= HttpMaxRetries) { ++ fprintf(stderr, "Max number of retries (%d) for creating print queue %s reached, skipping it.\n", ++ HttpMaxRetries, p->queue_name); ++ continue; ++ } ++ + debug_printf("Creating/Updating CUPS queue %s\n", + p->queue_name); + +@@ -5477,6 +5476,24 @@ gboolean update_cups_queues(gpointer unused) { + } else + p->timeout = (time_t) -1; + ++ /* Check if an HTTP timeout happened during the print queue creation ++ If it does - increment p->timeouted and set status to TO_BE_CREATED ++ because the creation can fall through the process, have state changed to ++ STATUS_CONFIRMED and experience the timeout */ ++ /* If no timeout has happened, clear p->timeouted */ ++ if (timeout_reached == 1) { ++ fprintf(stderr, "Timeout happened during creation of the queue %s, turn on DebugLogging for more info.\n", p->queue_name); ++ p->timeouted ++; ++ debug_printf("The queue %s already timeouted %d times in a row.\n", ++ p->queue_name, p->timeouted); ++ p->status = STATUS_TO_BE_CREATED; ++ p->timeout = current_time + TIMEOUT_RETRY; ++ } else if (p->timeouted != 0) { ++ debug_printf("Creating the queue %s went smoothly after %d timeouts.\n", ++ p->queue_name, p->timeouted); ++ p->timeouted = 0; ++ } ++ + p->no_autosave = 0; + break; + +@@ -5496,27 +5513,6 @@ gboolean update_cups_queues(gpointer unused) { + break; + + } +- +- /* Check if an HTTP timeout happened during the print queue creation +- If it does - increment p->timeouted and set status to TO_BE_CREATED +- because the creation can fall through the process, have state changed to +- STATUS_CONFIRMED and experience the timeout */ +- /* If no timeout has happened, clear p->timeouted */ +- if (timeout_reached == 1) +- { +- fprintf(stderr, "Timeout happened during creating the queue %s, turn on DebugLogging for more info.\n", p->queue_name); +- p->timeouted ++; +- +- debug_printf("The queue %s already timeouted %d times in a row.\n", +- p->queue_name, p->timeouted); +- p->status = STATUS_TO_BE_CREATED; +- } +- else if (p->timeouted != 0) +- { +- debug_printf("Creating the queue %s went smoothly after %d timeouts.\n", +- p->queue_name, p->timeouted); +- p->timeouted = 0; +- } + } + log_all_printers(); + diff --git a/cups-filters-cleareof.patch b/cups-filters-cleareof.patch deleted file mode 100644 index 8b9731f..0000000 --- a/cups-filters-cleareof.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c.cleareof cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c ---- cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c.cleareof 2018-09-21 13:38:05.882666106 +0200 -+++ cups-filters-1.20.3/filter/foomatic-rip/foomaticrip.c 2018-09-21 13:38:55.330277816 +0200 -@@ -663,6 +663,7 @@ int print_file(const char *filename, int - rip_die(EXIT_PRNERR_NORETRY_BAD_SETTINGS, - "Couldn't dup stdout of pdf-to-ps\n"); - -+ clearerr(stdin); - ret = print_file("", 0); - - wait_for_process(renderer_pid); diff --git a/cups-filters.spec b/cups-filters.spec index a8da22a..822324e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.21.2 -Release: 4%{?dist} +Version: 1.21.5 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,14 +21,14 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-createall.patch -# backported patch from upstream - since glibc 2.28 there is a need to clear EOF on -# file descriptor when I use dup2 on file descriptor where is EOF -Patch02: cups-filters-cleareof.patch # Links in man page is wrong - it shows 'cups-browsed' in path, but we # have 'cups-filters' in path, because it is shipped in 'cups-filters' package # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct -Patch03: cups-browsed.8.patch +Patch02: cups-browsed.8.patch +# backport from upstream - checking for timeouts were done for disappearing queues, +# which caused crashes +Patch03: 0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -133,10 +133,10 @@ This is the development package for OpenPrinting CUPS filters and backends. # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default %patch01 -p1 -b .createall -# backported from upstream - EOF from pipe needs to cleared -%patch02 -p1 -b .cleareof # links in manpage -%patch03 -p1 -b .manpage +%patch02 -p1 -b .manpage +# timeouts - backport from upstream +%patch03 -p1 -b .timeouts %build # work-around Rpath @@ -309,6 +309,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Dec 13 2018 Zdenek Dohnal - 1.21.5-1 +- 1.21.5 + * Mon Nov 12 2018 Zdenek Dohnal - 1.21.2-4 - links in manpages are wrong diff --git a/sources b/sources index 04b0b7a..9357396 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.21.2.tar.xz) = 07672737108e1593374fa95582e2c8ad7a3fec6202846ba85224c1c89f65b7b89de96ebf67841ec5d948fe556dddd06ae6a58ad6c5c0a25a82ce643c9384aaf0 +SHA512 (cups-filters-1.21.5.tar.xz) = 41ed3364cb0a87e8b2b2482f3c8de90eba63538682ad3fa1079908beadec5e975d9eda151d822e93f62dcc32fe2a6189cc02b6b7691640fb00434efec35c0f7a From 20102631800756040fe89807d1099b3b63d97041 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 8 Jan 2019 12:00:44 +0100 Subject: [PATCH 056/197] 1.21.6 --- .gitignore | 1 + ...ed-crashes-caused-by-checking-HTTP-t.patch | 88 ------------------- cups-filters.spec | 8 +- sources | 2 +- 4 files changed, 6 insertions(+), 93 deletions(-) delete mode 100644 0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch diff --git a/.gitignore b/.gitignore index c1868e8..7cb58ec 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,4 @@ /cups-filters-1.20.3.tar.xz /cups-filters-1.21.2.tar.xz /cups-filters-1.21.5.tar.xz +/cups-filters-1.21.6.tar.xz diff --git a/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch b/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch deleted file mode 100644 index 3e55d28..0000000 --- a/0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch +++ /dev/null @@ -1,88 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index ee361d9a..02de23d1 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -4476,15 +4476,6 @@ gboolean update_cups_queues(gpointer unused) { - current_time = time(NULL); - timeout_reached = 0; - -- /* cups-browsed tried to add this print queue unsuccessfully for too -- many times due to timeouts - Skip print queue creation for this one */ -- if (p->timeouted >= HttpMaxRetries) -- { -- fprintf(stderr, "Max number of retries (%d) for creating print queue %s reached, skipping it.\n", -- HttpMaxRetries, p->queue_name); -- continue; -- } -- - /* terminating means we have received a signal and should shut down. - in_shutdown means we have exited the main loop. - update_cups_queues() is called after having exited the main loop -@@ -4686,6 +4677,14 @@ gboolean update_cups_queues(gpointer unused) { - if (p->timeout > current_time) - break; - -+ /* cups-browsed tried to add this print queue unsuccessfully for too -+ many times due to timeouts - Skip print queue creation for this one */ -+ if (p->timeouted >= HttpMaxRetries) { -+ fprintf(stderr, "Max number of retries (%d) for creating print queue %s reached, skipping it.\n", -+ HttpMaxRetries, p->queue_name); -+ continue; -+ } -+ - debug_printf("Creating/Updating CUPS queue %s\n", - p->queue_name); - -@@ -5477,6 +5476,24 @@ gboolean update_cups_queues(gpointer unused) { - } else - p->timeout = (time_t) -1; - -+ /* Check if an HTTP timeout happened during the print queue creation -+ If it does - increment p->timeouted and set status to TO_BE_CREATED -+ because the creation can fall through the process, have state changed to -+ STATUS_CONFIRMED and experience the timeout */ -+ /* If no timeout has happened, clear p->timeouted */ -+ if (timeout_reached == 1) { -+ fprintf(stderr, "Timeout happened during creation of the queue %s, turn on DebugLogging for more info.\n", p->queue_name); -+ p->timeouted ++; -+ debug_printf("The queue %s already timeouted %d times in a row.\n", -+ p->queue_name, p->timeouted); -+ p->status = STATUS_TO_BE_CREATED; -+ p->timeout = current_time + TIMEOUT_RETRY; -+ } else if (p->timeouted != 0) { -+ debug_printf("Creating the queue %s went smoothly after %d timeouts.\n", -+ p->queue_name, p->timeouted); -+ p->timeouted = 0; -+ } -+ - p->no_autosave = 0; - break; - -@@ -5496,27 +5513,6 @@ gboolean update_cups_queues(gpointer unused) { - break; - - } -- -- /* Check if an HTTP timeout happened during the print queue creation -- If it does - increment p->timeouted and set status to TO_BE_CREATED -- because the creation can fall through the process, have state changed to -- STATUS_CONFIRMED and experience the timeout */ -- /* If no timeout has happened, clear p->timeouted */ -- if (timeout_reached == 1) -- { -- fprintf(stderr, "Timeout happened during creating the queue %s, turn on DebugLogging for more info.\n", p->queue_name); -- p->timeouted ++; -- -- debug_printf("The queue %s already timeouted %d times in a row.\n", -- p->queue_name, p->timeouted); -- p->status = STATUS_TO_BE_CREATED; -- } -- else if (p->timeouted != 0) -- { -- debug_printf("Creating the queue %s went smoothly after %d timeouts.\n", -- p->queue_name, p->timeouted); -- p->timeouted = 0; -- } - } - log_all_printers(); - diff --git a/cups-filters.spec b/cups-filters.spec index 822324e..776ccd6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.21.5 +Version: 1.21.6 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -28,7 +28,6 @@ Patch01: cups-filters-createall.patch Patch02: cups-browsed.8.patch # backport from upstream - checking for timeouts were done for disappearing queues, # which caused crashes -Patch03: 0001-cups-browsed-Fixed-crashes-caused-by-checking-HTTP-t.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -135,8 +134,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage -# timeouts - backport from upstream -%patch03 -p1 -b .timeouts %build # work-around Rpath @@ -309,6 +306,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Jan 08 2019 Zdenek Dohnal - 1.21.6-1 +- 1.21.6 + * Thu Dec 13 2018 Zdenek Dohnal - 1.21.5-1 - 1.21.5 diff --git a/sources b/sources index 9357396..b64c039 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.21.5.tar.xz) = 41ed3364cb0a87e8b2b2482f3c8de90eba63538682ad3fa1079908beadec5e975d9eda151d822e93f62dcc32fe2a6189cc02b6b7691640fb00434efec35c0f7a +SHA512 (cups-filters-1.21.6.tar.xz) = 804250745ac710706ff1bfa6e161c0b1a8a65a74850a76a311b7614694a7e5d07f01dfd15f277ad79ed7fe1e84ea680bab1643e0b82cefa3e26603fa2eea935a From 0e6742b393e0453023437a6f4e2d97494e247a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Mon, 14 Jan 2019 18:59:33 +0100 Subject: [PATCH 057/197] Rebuilt for libcrypt.so.2 (#1666033) --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 776ccd6..f61c040 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.21.6 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -306,6 +306,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Jan 14 2019 Björn Esser - 1.21.6-2 +- Rebuilt for libcrypt.so.2 (#1666033) + * Tue Jan 08 2019 Zdenek Dohnal - 1.21.6-1 - 1.21.6 From cc60395a8cbae99880f5d4088427a9ab566e5830 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Tue, 22 Jan 2019 18:38:45 +0100 Subject: [PATCH 058/197] Remove obsolete ldconfig scriptlets References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets Signed-off-by: Igor Gnatenko --- cups-filters.spec | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index f61c040..b315c02 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -233,9 +233,7 @@ fi %postun %systemd_postun_with_restart cups-browsed.service -%post libs -p /sbin/ldconfig - -%postun libs -p /sbin/ldconfig +%ldconfig_scriptlets libs %files From a8f75f292702a36620e343b29e8fbaa8022aafd8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 25 Jan 2019 09:12:42 +0100 Subject: [PATCH 059/197] 1.22.0 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 7cb58ec..9f912b4 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,4 @@ /cups-filters-1.21.2.tar.xz /cups-filters-1.21.5.tar.xz /cups-filters-1.21.6.tar.xz +/cups-filters-1.22.0.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index b315c02..ba8efd0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.21.6 -Release: 2%{?dist} +Version: 1.22.0 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -304,6 +304,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Jan 25 2019 Zdenek Dohnal - 1.22.0-1 +- 1.22.0 + * Mon Jan 14 2019 Björn Esser - 1.21.6-2 - Rebuilt for libcrypt.so.2 (#1666033) diff --git a/sources b/sources index b64c039..12b661f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.21.6.tar.xz) = 804250745ac710706ff1bfa6e161c0b1a8a65a74850a76a311b7614694a7e5d07f01dfd15f277ad79ed7fe1e84ea680bab1643e0b82cefa3e26603fa2eea935a +SHA512 (cups-filters-1.22.0.tar.xz) = 6129c948db2499a300c44ce88a287d5296af4771fb42e991121aaf4eb1258e17f1092afcbb90e5dd63572db410169fed65c6217d1ecd0ba834018acb4ef39bfa From 63e6f8adf5f69ef34748eccb02115fa276374b55 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Fri, 25 Jan 2019 19:47:25 +0100 Subject: [PATCH 060/197] Rebuild for poppler-0.73.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ba8efd0..6bc2a35 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.0 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -304,6 +304,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Jan 25 2019 Marek Kasik - 1.22.0-2 +- Rebuild for poppler-0.73.0 + * Fri Jan 25 2019 Zdenek Dohnal - 1.22.0-1 - 1.22.0 From 6746325d61e9e8acc787832a7753038541292c0d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 31 Jan 2019 16:34:35 +0000 Subject: [PATCH 061/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 6bc2a35..5e19200 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.0 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -304,6 +304,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Thu Jan 31 2019 Fedora Release Engineering - 1.22.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Fri Jan 25 2019 Marek Kasik - 1.22.0-2 - Rebuild for poppler-0.73.0 From 14b31aac5531f966e674e2504623beb27b3cfbb3 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Fri, 1 Feb 2019 14:14:35 +0100 Subject: [PATCH 062/197] cups-brf needs to be run as root --- cups-filters.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 5e19200..4dbeee3 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.0 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -247,7 +247,9 @@ fi %attr(0700,root,root) %{_cups_serverbin}/backend/serial %attr(0755,root,root) %{_cups_serverbin}/backend/implicitclass %attr(0755,root,root) %{_cups_serverbin}/backend/beh -%attr(0755,root,root) %{_cups_serverbin}/backend/cups-brf +# cups-brf needs to be run as root, otherwise it leaves error messages +# in journal +%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf %{_bindir}/foomatic-rip %{_bindir}/driverless %{_cups_serverbin}/backend/driverless @@ -304,6 +306,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Fri Feb 01 2019 Zdenek Dohnal - 1.22.0-4 +- cups-brf needs to be run as root + * Thu Jan 31 2019 Fedora Release Engineering - 1.22.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 6c9c9cf9f526ebe4c5af0e22bd6ace9e08d7b057 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 26 Mar 2019 16:17:46 +0100 Subject: [PATCH 063/197] 1.22.3 --- .gitignore | 1 + cups-filters.spec | 14 +++++++++----- sources | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 9f912b4..e4cb9a3 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,4 @@ /cups-filters-1.21.5.tar.xz /cups-filters-1.21.6.tar.xz /cups-filters-1.22.0.tar.xz +/cups-filters-1.22.3.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 4dbeee3..dccabc5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.22.0 -Release: 4%{?dist} +Version: 1.22.3 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,14 +20,13 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz +# set defaults in cups-browsed.conf Patch01: cups-filters-createall.patch # Links in man page is wrong - it shows 'cups-browsed' in path, but we # have 'cups-filters' in path, because it is shipped in 'cups-filters' package # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch -# backport from upstream - checking for timeouts were done for disappearing queues, -# which caused crashes Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -153,6 +152,7 @@ This is the development package for OpenPrinting CUPS filters and backends. # --enable-dbus - enable DBus Connection Manager's code # --disable-silent-rules - verbose build output # --disable-mutool - mupdf is retired in Fedora, use qpdf +# --enable-pclm - support for pclm language %configure --disable-static \ --disable-silent-rules \ @@ -161,7 +161,8 @@ This is the development package for OpenPrinting CUPS filters and backends. --with-rcdir=no \ --disable-mutool \ --enable-driverless \ - --enable-auto-setup-driverless + --enable-auto-setup-driverless \ + --enable-pclm make %{?_smp_mflags} @@ -306,6 +307,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Tue Mar 26 2019 Zdenek Dohnal - 1.22.3-1 +- 1.22.3 + * Fri Feb 01 2019 Zdenek Dohnal - 1.22.0-4 - cups-brf needs to be run as root diff --git a/sources b/sources index 12b661f..6414e87 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.22.0.tar.xz) = 6129c948db2499a300c44ce88a287d5296af4771fb42e991121aaf4eb1258e17f1092afcbb90e5dd63572db410169fed65c6217d1ecd0ba834018acb4ef39bfa +SHA512 (cups-filters-1.22.3.tar.xz) = 8f91f7261babf2e4633590e1f69f3c85162596bba9a709d301f774eb65f83e7c025493cabbbc5d91beca32f5122e2d4e1efa9947e2d95b9a622913a79940a534 From 9b15b8eea6f29bdd3e17f203cfeb54d2285f4224 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 8 Apr 2019 11:48:09 +0200 Subject: [PATCH 064/197] 1.22.5 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e4cb9a3..b7db13a 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,4 @@ /cups-filters-1.21.6.tar.xz /cups-filters-1.22.0.tar.xz /cups-filters-1.22.3.tar.xz +/cups-filters-1.22.5.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index dccabc5..08214ad 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.22.3 +Version: 1.22.5 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -307,6 +307,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Mon Apr 08 2019 Zdenek Dohnal - 1.22.5-1 +- 1.22.5 + * Tue Mar 26 2019 Zdenek Dohnal - 1.22.3-1 - 1.22.3 diff --git a/sources b/sources index 6414e87..e4daa62 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.22.3.tar.xz) = 8f91f7261babf2e4633590e1f69f3c85162596bba9a709d301f774eb65f83e7c025493cabbbc5d91beca32f5122e2d4e1efa9947e2d95b9a622913a79940a534 +SHA512 (cups-filters-1.22.5.tar.xz) = ed33e6d6f090c00f0f0d1d012d3b394bfaa1f81feeb5b0b7ead1dffa2399f0165ce916a99c3bf28aca7f279bffba5b6575feff700130cabfcd46eb4c904d5c59 From a568cb9b300bfa053d2f465ce067439b18c6e1e0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jul 2019 21:20:28 +0000 Subject: [PATCH 065/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 08214ad..b1178e1 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -307,6 +307,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Jul 24 2019 Fedora Release Engineering - 1.22.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Mon Apr 08 2019 Zdenek Dohnal - 1.22.5-1 - 1.22.5 From 87d6b5e0ba57a65fd35c079003b5b419a15d00e2 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 7 Aug 2019 15:43:02 +0200 Subject: [PATCH 066/197] remove unneeded scriptlet --- cups-filters.spec | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index b1178e1..755817f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -202,32 +202,6 @@ make check %post %systemd_post cups-browsed.service -# Initial installation -if [ $1 -eq 1 ] ; then - IN=%{_sysconfdir}/cups/cupsd.conf - OUT=%{_sysconfdir}/cups/cups-browsed.conf - keyword=BrowsePoll - - # We can remove this after few releases, it's just for the introduction of cups-browsed. - if [ -f "$OUT" ]; then - echo -e "\n# NOTE: This file is not part of CUPS.\n# You need to enable cups-browsed service\n# and allow ipp-client service in firewall." >> "$OUT" - fi - - # move BrowsePoll from cupsd.conf to cups-browsed.conf - if [ -f "$IN" ] && grep -iq ^$keyword "$IN"; then - if ! grep -iq ^$keyword "$OUT"; then - (cat >> "$OUT" <> "$OUT") || : - #systemctl enable cups-browsed.service >/dev/null 2>&1 || : - fi - sed -i -e "s,^$keyword,#$keyword directive moved to cups-browsed.conf\n#$keyword,i" "$IN" || : - fi -fi - %preun %systemd_preun cups-browsed.service @@ -307,6 +281,9 @@ fi %{_libdir}/libfontembed.so %changelog +* Wed Aug 07 2019 Zdenek Dohnal - 1.22.5-3 +- remove unneeded scriptlet + * Wed Jul 24 2019 Fedora Release Engineering - 1.22.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 61e9e90047c6e360e7a632f4db4dbff5f8486db3 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 13 Aug 2019 09:15:25 +0200 Subject: [PATCH 067/197] 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined --- cups-filters-foomaticrip-segfault.patch | 14 ++++++++++++++ cups-filters.spec | 10 +++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 cups-filters-foomaticrip-segfault.patch diff --git a/cups-filters-foomaticrip-segfault.patch b/cups-filters-foomaticrip-segfault.patch new file mode 100644 index 0000000..885bdcd --- /dev/null +++ b/cups-filters-foomaticrip-segfault.patch @@ -0,0 +1,14 @@ +diff --git a/filter/foomatic-rip/spooler.c b/filter/foomatic-rip/spooler.c +index 4f27563..fee55a8 100644 +--- a/filter/foomatic-rip/spooler.c ++++ b/filter/foomatic-rip/spooler.c +@@ -94,8 +94,7 @@ void init_cups(list_t *arglist, dstr_t *filelist, jobparams_t *job) + CUPS puts the print queue name into the PRINTER environment variable + when calling filters. */ + strncpy(job->printer, getenv("PRINTER"), 256); +- if (strlen(getenv("PRINTER")) > 255) +- job->printer[255] = '\0'; ++ job->printer[255] = '\0'; + + free(cups_options); + } diff --git a/cups-filters.spec b/cups-filters.spec index 755817f..798d88c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,6 +27,9 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch +# issue caused by bad covscan fix, strlen() was called on NULL pointer, +# fixed upstream +Patch03: cups-filters-foomaticrip-segfault.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -133,6 +136,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage +# 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined +%patch03 -p1 -b .foomaticrip-segfault %build # work-around Rpath @@ -281,6 +286,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Tue Aug 13 2019 Zdenek Dohnal - 1.22.5-4 +- 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined + * Wed Aug 07 2019 Zdenek Dohnal - 1.22.5-3 - remove unneeded scriptlet From f6fb8238297a1993b52523d6f1d8430a2ba070bb Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 11 Sep 2019 14:36:00 +0200 Subject: [PATCH 068/197] require colord, because it is needed for ICC profiles for filters --- cups-filters.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 798d88c..6f04bb0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -84,8 +84,12 @@ Requires: cups-filesystem # if --with-pdftops is set to hybrid, we use poppler filters for several printers # and for printing banners, for other printers we need gs - ghostscript Requires: poppler-utils +# several filters calls 'gs' binary during filtering Requires: ghostscript +# for getting ICC profiles for filters (dbus must run) +Requires: colord + # texttopdf Requires: liberation-mono-fonts @@ -286,6 +290,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Wed Sep 11 2019 Zdenek Dohnal - 1.22.5-5 +- require colord, because it is needed for ICC profiles for filters + * Tue Aug 13 2019 Zdenek Dohnal - 1.22.5-4 - 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined From 8a4dc0999472e14764763be4cd6ec8be48d1e577 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 17 Sep 2019 12:49:44 +0200 Subject: [PATCH 069/197] pdftopdf output should not be encrypted --- cups-filters.spec | 8 +++++++- pdftopdf-nocrypt.patch | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 pdftopdf-nocrypt.patch diff --git a/cups-filters.spec b/cups-filters.spec index 6f04bb0..b90f9f2 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -30,6 +30,8 @@ Patch02: cups-browsed.8.patch # issue caused by bad covscan fix, strlen() was called on NULL pointer, # fixed upstream Patch03: cups-filters-foomaticrip-segfault.patch +# backported from upstream, do not create encrypted file during filtering +Patch04: pdftopdf-nocrypt.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -142,6 +144,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch02 -p1 -b .manpage # 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined %patch03 -p1 -b .foomaticrip-segfault +%patch04 -p1 -b .pdftopdf-nocrypt %build # work-around Rpath @@ -290,6 +293,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Tue Sep 17 2019 Zdenek Dohnal - 1.22.5-6 +- pdftopdf output should not be encrypted + * Wed Sep 11 2019 Zdenek Dohnal - 1.22.5-5 - require colord, because it is needed for ICC profiles for filters diff --git a/pdftopdf-nocrypt.patch b/pdftopdf-nocrypt.patch new file mode 100644 index 0000000..24caf5c --- /dev/null +++ b/pdftopdf-nocrypt.patch @@ -0,0 +1,20 @@ +diff --git a/filter/pdftopdf/qpdf_pdftopdf_processor.cc b/filter/pdftopdf/qpdf_pdftopdf_processor.cc +index 73e4f06..0752a99 100644 +--- a/filter/pdftopdf/qpdf_pdftopdf_processor.cc ++++ b/filter/pdftopdf/qpdf_pdftopdf_processor.cc +@@ -623,6 +623,7 @@ void QPDF_PDFTOPDF_Processor::emitFile(FILE *f,ArgOwnership take) // {{{ + if (!extraheader.empty()) { + out.setExtraHeaderText(extraheader); + } ++ out.setPreserveEncryption(false); + out.write(); + } + // }}} +@@ -642,6 +643,7 @@ void QPDF_PDFTOPDF_Processor::emitFilename(const char *name) // {{{ + if (!extraheader.empty()) { + out.setExtraHeaderText(extraheader); + } ++ out.setPreserveEncryption(false); + out.write(); + } + // }}} From a667ded3e900a147afd62e7b3c95c02f06b43daf Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 17 Sep 2019 12:54:19 +0200 Subject: [PATCH 070/197] ftbfs with qpdf-9.0.0 --- cups-filters-qpdf-9.patch | 12 ++++++++++++ cups-filters.spec | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 cups-filters-qpdf-9.patch diff --git a/cups-filters-qpdf-9.patch b/cups-filters-qpdf-9.patch new file mode 100644 index 0000000..50183c0 --- /dev/null +++ b/cups-filters-qpdf-9.patch @@ -0,0 +1,12 @@ +diff --git a/filter/pdf.cxx b/filter/pdf.cxx +index 5b212ca..f12607f 100644 +--- a/filter/pdf.cxx ++++ b/filter/pdf.cxx +@@ -20,6 +20,7 @@ + #include "pdf.h" + #include + #include ++#include + #include + #include + #include diff --git a/cups-filters.spec b/cups-filters.spec index b90f9f2..06838f0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -32,6 +32,8 @@ Patch02: cups-browsed.8.patch Patch03: cups-filters-foomaticrip-segfault.patch # backported from upstream, do not create encrypted file during filtering Patch04: pdftopdf-nocrypt.patch +# backported from upstream, ftbfs with qpdf-9.0.0 +Patch05: cups-filters-qpdf-9.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -145,6 +147,7 @@ This is the development package for OpenPrinting CUPS filters and backends. # 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined %patch03 -p1 -b .foomaticrip-segfault %patch04 -p1 -b .pdftopdf-nocrypt +%patch05 -p1 -b .qpdf-9 %build # work-around Rpath @@ -294,6 +297,7 @@ make check %changelog * Tue Sep 17 2019 Zdenek Dohnal - 1.22.5-6 +- ftbfs with qpdf-9.0.0 - pdftopdf output should not be encrypted * Wed Sep 11 2019 Zdenek Dohnal - 1.22.5-5 From 2bc24c38e4012538e6da0247cb26baa098069ab9 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 9 Oct 2019 11:57:44 +0200 Subject: [PATCH 071/197] gs 9.27 now uses setfilladjust2 --- cups-filters-setfilladjust.patch | 13 +++++++++++++ cups-filters.spec | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cups-filters-setfilladjust.patch diff --git a/cups-filters-setfilladjust.patch b/cups-filters-setfilladjust.patch new file mode 100644 index 0000000..c9d3be2 --- /dev/null +++ b/cups-filters-setfilladjust.patch @@ -0,0 +1,13 @@ +diff --git a/filter/gstoraster.c b/filter/gstoraster.c +index 4aec079..f3424f3 100644 +--- a/filter/gstoraster.c ++++ b/filter/gstoraster.c +@@ -895,7 +895,7 @@ main (int argc, char **argv, char *envp[]) + (t && (!strcasecmp(t, "true") || !strcasecmp(t, "on") || + !strcasecmp(t, "yes")))) { + fprintf(stderr, "DEBUG: Ghostscript using Center-of-Pixel method to fill paths.\n"); +- cupsArrayAdd(gs_args, strdup("0 .setfilladjust")); ++ cupsArrayAdd(gs_args, strdup("0 0 .setfilladjust2")); + } else + fprintf(stderr, "DEBUG: Ghostscript using Any-Part-of-Pixel method to fill paths.\n"); + diff --git a/cups-filters.spec b/cups-filters.spec index 06838f0..5b6c52f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -34,6 +34,8 @@ Patch03: cups-filters-foomaticrip-segfault.patch Patch04: pdftopdf-nocrypt.patch # backported from upstream, ftbfs with qpdf-9.0.0 Patch05: cups-filters-qpdf-9.patch +# backported from upstream, gs 9.27 uses now setfilladjust2 +Patch06: cups-filters-setfilladjust.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -148,6 +150,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch03 -p1 -b .foomaticrip-segfault %patch04 -p1 -b .pdftopdf-nocrypt %patch05 -p1 -b .qpdf-9 +%patch06 -p1 -b .setfilladjust %build # work-around Rpath @@ -296,6 +299,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Wed Oct 09 2019 Zdenek Dohnal - 1.22.5-7 +- gs 9.27 now uses setfilladjust2 + * Tue Sep 17 2019 Zdenek Dohnal - 1.22.5-6 - ftbfs with qpdf-9.0.0 - pdftopdf output should not be encrypted From c80a629db432c6f769b1d172b419229b56e64842 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 12 Nov 2019 12:53:30 +0100 Subject: [PATCH 072/197] 1756726 - Epson ET 7700 reports pwg support, but pwg does not work --- ...n-generated-PPDs-prefer-Apple-Raster.patch | 44 +++++++++++++++++++ cups-filters.spec | 10 ++++- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch diff --git a/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch b/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch new file mode 100644 index 0000000..b31299a --- /dev/null +++ b/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch @@ -0,0 +1,44 @@ +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 934b1ce..8d12193 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -1448,19 +1448,6 @@ ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ + formatfound = 1; + is_pdf = 1; + } +- if (cupsArrayFind(pdl_list, "image/pwg-raster")) { +- if ((attr = ippFindAttribute(response, "pwg-raster-document-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { +- current_def = NULL; +- if ((current_res = ippResolutionListToArray(attr)) != NULL && +- joinResolutionArrays(&common_res, ¤t_res, &common_def, +- ¤t_def)) { +- cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 0 -\"\n"); +- if (formatfound == 0) manual_copies = 1; +- formatfound = 1; +- is_pwg = 1; +- } +- } +- } + #ifdef CUPS_RASTER_HAVE_APPLERASTER + if (cupsArrayFind(pdl_list, "image/urf")) { + if ((attr = ippFindAttribute(response, "urf-supported", IPP_TAG_KEYWORD)) != NULL) { +@@ -1500,6 +1487,19 @@ ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ + } + } + #endif ++ if (cupsArrayFind(pdl_list, "image/pwg-raster")) { ++ if ((attr = ippFindAttribute(response, "pwg-raster-document-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { ++ current_def = NULL; ++ if ((current_res = ippResolutionListToArray(attr)) != NULL && ++ joinResolutionArrays(&common_res, ¤t_res, &common_def, ++ ¤t_def)) { ++ cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 0 -\"\n"); ++ if (formatfound == 0) manual_copies = 1; ++ formatfound = 1; ++ is_pwg = 1; ++ } ++ } ++ } + #ifdef QPDF_HAVE_PCLM + if (cupsArrayFind(pdl_list, "application/PCLm")) { + if ((attr = ippFindAttribute(response, "pclm-source-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { diff --git a/cups-filters.spec b/cups-filters.spec index 5b6c52f..89b8747 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 7%{?dist} +Release: 8%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -36,6 +36,10 @@ Patch04: pdftopdf-nocrypt.patch Patch05: cups-filters-qpdf-9.patch # backported from upstream, gs 9.27 uses now setfilladjust2 Patch06: cups-filters-setfilladjust.patch +# several printers report badly that they have pwg-raster support, but printing +# pwg-raster does not work. So now apple-raster is preffered when printer reports +# support of pwg-raster and apple-raster +Patch07: 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -151,6 +155,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch04 -p1 -b .pdftopdf-nocrypt %patch05 -p1 -b .qpdf-9 %patch06 -p1 -b .setfilladjust +%patch07 -p1 -b .prefer-apple-raster %build # work-around Rpath @@ -299,6 +304,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Tue Oct 22 2019 Zdenek Dohnal - 1.22.5-8 +- 1756726 - Epson ET 7700 reports pwg support, but pwg does not work + * Wed Oct 09 2019 Zdenek Dohnal - 1.22.5-7 - gs 9.27 now uses setfilladjust2 From 1d9a177ccf78e8d4e5f79c17ada123a751c3a30d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 19 Nov 2019 13:32:58 +0100 Subject: [PATCH 073/197] rebuilt for qpdf-9.1.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 89b8747..a06e5dd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 8%{?dist} +Release: 9%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -304,6 +304,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Tue Nov 19 2019 Zdenek Dohnal - 1.22.5-9 +- rebuilt for qpdf-9.1.0 + * Tue Oct 22 2019 Zdenek Dohnal - 1.22.5-8 - 1756726 - Epson ET 7700 reports pwg support, but pwg does not work From 5f198ebd13f4f5f78f3073d2595801ba85ed5b00 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 26 Nov 2019 12:20:26 +0100 Subject: [PATCH 074/197] 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets --- cups-browsed-socket-leak.patch | 17 +++++++++++++++++ cups-filters.spec | 10 +++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 cups-browsed-socket-leak.patch diff --git a/cups-browsed-socket-leak.patch b/cups-browsed-socket-leak.patch new file mode 100644 index 0000000..31c3879 --- /dev/null +++ b/cups-browsed-socket-leak.patch @@ -0,0 +1,17 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 1e3ba18..331d587 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3475,6 +3475,12 @@ on_job_state (CupsNotifier *object, + break; + } + ++ if (http) ++ { ++ httpClose(http); ++ http = NULL; ++ } ++ + /* Write the selected destination host into an option of our implicit + class queue (cups-browsed-dest-printer="") so that the + implicitclass backend will pick it up */ diff --git a/cups-filters.spec b/cups-filters.spec index a06e5dd..09d1ba7 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 9%{?dist} +Release: 10%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -40,6 +40,8 @@ Patch06: cups-filters-setfilladjust.patch # pwg-raster does not work. So now apple-raster is preffered when printer reports # support of pwg-raster and apple-raster Patch07: 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch +# 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets +Patch08: cups-browsed-socket-leak.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -78,6 +80,8 @@ BuildRequires: avahi-devel BuildRequires: pkgconfig(avahi-glib) BuildRequires: pkgconfig(glib-2.0) BuildRequires: systemd +# for test suite +BuildRequires: cups-ipptool # Make sure we get postscriptdriver tags. BuildRequires: python3-cups @@ -156,6 +160,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch05 -p1 -b .qpdf-9 %patch06 -p1 -b .setfilladjust %patch07 -p1 -b .prefer-apple-raster +%patch08 -p1 -b .socket-leak %build # work-around Rpath @@ -304,6 +309,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Tue Nov 26 2019 Zdenek Dohnal - 1.22.5-10 +- 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets + * Tue Nov 19 2019 Zdenek Dohnal - 1.22.5-9 - rebuilt for qpdf-9.1.0 From 3e0de52e398aa4f14dcbff280b7baa890acc318b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 17 Dec 2019 11:14:35 +0100 Subject: [PATCH 075/197] 1.26.0 --- .gitignore | 1 + ...n-generated-PPDs-prefer-Apple-Raster.patch | 44 ------------------- cups-browsed-socket-leak.patch | 17 ------- cups-filters-foomaticrip-segfault.patch | 14 ------ cups-filters-qpdf-9.patch | 12 ----- cups-filters-setfilladjust.patch | 13 ------ cups-filters.spec | 37 +++------------- pdftopdf-nocrypt.patch | 20 --------- sources | 2 +- 9 files changed, 9 insertions(+), 151 deletions(-) delete mode 100644 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch delete mode 100644 cups-browsed-socket-leak.patch delete mode 100644 cups-filters-foomaticrip-segfault.patch delete mode 100644 cups-filters-qpdf-9.patch delete mode 100644 cups-filters-setfilladjust.patch delete mode 100644 pdftopdf-nocrypt.patch diff --git a/.gitignore b/.gitignore index b7db13a..dfc4c7e 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,4 @@ /cups-filters-1.22.0.tar.xz /cups-filters-1.22.3.tar.xz /cups-filters-1.22.5.tar.xz +/cups-filters-1.26.0.tar.xz diff --git a/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch b/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch deleted file mode 100644 index b31299a..0000000 --- a/0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 934b1ce..8d12193 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -1448,19 +1448,6 @@ ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ - formatfound = 1; - is_pdf = 1; - } -- if (cupsArrayFind(pdl_list, "image/pwg-raster")) { -- if ((attr = ippFindAttribute(response, "pwg-raster-document-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { -- current_def = NULL; -- if ((current_res = ippResolutionListToArray(attr)) != NULL && -- joinResolutionArrays(&common_res, ¤t_res, &common_def, -- ¤t_def)) { -- cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 0 -\"\n"); -- if (formatfound == 0) manual_copies = 1; -- formatfound = 1; -- is_pwg = 1; -- } -- } -- } - #ifdef CUPS_RASTER_HAVE_APPLERASTER - if (cupsArrayFind(pdl_list, "image/urf")) { - if ((attr = ippFindAttribute(response, "urf-supported", IPP_TAG_KEYWORD)) != NULL) { -@@ -1500,6 +1487,19 @@ ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ - } - } - #endif -+ if (cupsArrayFind(pdl_list, "image/pwg-raster")) { -+ if ((attr = ippFindAttribute(response, "pwg-raster-document-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { -+ current_def = NULL; -+ if ((current_res = ippResolutionListToArray(attr)) != NULL && -+ joinResolutionArrays(&common_res, ¤t_res, &common_def, -+ ¤t_def)) { -+ cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 0 -\"\n"); -+ if (formatfound == 0) manual_copies = 1; -+ formatfound = 1; -+ is_pwg = 1; -+ } -+ } -+ } - #ifdef QPDF_HAVE_PCLM - if (cupsArrayFind(pdl_list, "application/PCLm")) { - if ((attr = ippFindAttribute(response, "pclm-source-resolution-supported", IPP_TAG_RESOLUTION)) != NULL) { diff --git a/cups-browsed-socket-leak.patch b/cups-browsed-socket-leak.patch deleted file mode 100644 index 31c3879..0000000 --- a/cups-browsed-socket-leak.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 1e3ba18..331d587 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3475,6 +3475,12 @@ on_job_state (CupsNotifier *object, - break; - } - -+ if (http) -+ { -+ httpClose(http); -+ http = NULL; -+ } -+ - /* Write the selected destination host into an option of our implicit - class queue (cups-browsed-dest-printer="") so that the - implicitclass backend will pick it up */ diff --git a/cups-filters-foomaticrip-segfault.patch b/cups-filters-foomaticrip-segfault.patch deleted file mode 100644 index 885bdcd..0000000 --- a/cups-filters-foomaticrip-segfault.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/filter/foomatic-rip/spooler.c b/filter/foomatic-rip/spooler.c -index 4f27563..fee55a8 100644 ---- a/filter/foomatic-rip/spooler.c -+++ b/filter/foomatic-rip/spooler.c -@@ -94,8 +94,7 @@ void init_cups(list_t *arglist, dstr_t *filelist, jobparams_t *job) - CUPS puts the print queue name into the PRINTER environment variable - when calling filters. */ - strncpy(job->printer, getenv("PRINTER"), 256); -- if (strlen(getenv("PRINTER")) > 255) -- job->printer[255] = '\0'; -+ job->printer[255] = '\0'; - - free(cups_options); - } diff --git a/cups-filters-qpdf-9.patch b/cups-filters-qpdf-9.patch deleted file mode 100644 index 50183c0..0000000 --- a/cups-filters-qpdf-9.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/filter/pdf.cxx b/filter/pdf.cxx -index 5b212ca..f12607f 100644 ---- a/filter/pdf.cxx -+++ b/filter/pdf.cxx -@@ -20,6 +20,7 @@ - #include "pdf.h" - #include - #include -+#include - #include - #include - #include diff --git a/cups-filters-setfilladjust.patch b/cups-filters-setfilladjust.patch deleted file mode 100644 index c9d3be2..0000000 --- a/cups-filters-setfilladjust.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/filter/gstoraster.c b/filter/gstoraster.c -index 4aec079..f3424f3 100644 ---- a/filter/gstoraster.c -+++ b/filter/gstoraster.c -@@ -895,7 +895,7 @@ main (int argc, char **argv, char *envp[]) - (t && (!strcasecmp(t, "true") || !strcasecmp(t, "on") || - !strcasecmp(t, "yes")))) { - fprintf(stderr, "DEBUG: Ghostscript using Center-of-Pixel method to fill paths.\n"); -- cupsArrayAdd(gs_args, strdup("0 .setfilladjust")); -+ cupsArrayAdd(gs_args, strdup("0 0 .setfilladjust2")); - } else - fprintf(stderr, "DEBUG: Ghostscript using Any-Part-of-Pixel method to fill paths.\n"); - diff --git a/cups-filters.spec b/cups-filters.spec index 09d1ba7..3902d7f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.22.5 -Release: 10%{?dist} +Version: 1.26.0 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,21 +27,6 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch -# issue caused by bad covscan fix, strlen() was called on NULL pointer, -# fixed upstream -Patch03: cups-filters-foomaticrip-segfault.patch -# backported from upstream, do not create encrypted file during filtering -Patch04: pdftopdf-nocrypt.patch -# backported from upstream, ftbfs with qpdf-9.0.0 -Patch05: cups-filters-qpdf-9.patch -# backported from upstream, gs 9.27 uses now setfilladjust2 -Patch06: cups-filters-setfilladjust.patch -# several printers report badly that they have pwg-raster support, but printing -# pwg-raster does not work. So now apple-raster is preffered when printer reports -# support of pwg-raster and apple-raster -Patch07: 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch -# 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets -Patch08: cups-browsed-socket-leak.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -92,6 +77,7 @@ BuildRequires: dejavu-sans-fonts # autogen.sh BuildRequires: autoconf BuildRequires: automake +BuildRequires: gettext-devel BuildRequires: libtool Requires: cups-filesystem @@ -117,12 +103,6 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -# some installations can have ghostscript-cups or foomatic-filters installed, -# but they are provided by cups-filters, so we need to obsolete them to have -# them uninstalled - remove these obsoletes when F31+ -Obsoletes: ghostscript-cups -Obsoletes: foomatic-filters - %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries # LGPLv2: libcupsfilters @@ -154,13 +134,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage -# 1740122 - foomatic-rip segfaults when env variable PRINTER is not defined -%patch03 -p1 -b .foomaticrip-segfault -%patch04 -p1 -b .pdftopdf-nocrypt -%patch05 -p1 -b .qpdf-9 -%patch06 -p1 -b .setfilladjust -%patch07 -p1 -b .prefer-apple-raster -%patch08 -p1 -b .socket-leak %build # work-around Rpath @@ -241,6 +214,7 @@ make check %files %{_pkgdocdir}/README +%{_pkgdocdir}/ABOUT-NLS %{_pkgdocdir}/AUTHORS %{_pkgdocdir}/NEWS %config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf @@ -309,6 +283,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Mon Dec 16 2019 Zdenek Dohnal - 1.26.0-1 +- 1.26.0 + * Tue Nov 26 2019 Zdenek Dohnal - 1.22.5-10 - 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets diff --git a/pdftopdf-nocrypt.patch b/pdftopdf-nocrypt.patch deleted file mode 100644 index 24caf5c..0000000 --- a/pdftopdf-nocrypt.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/filter/pdftopdf/qpdf_pdftopdf_processor.cc b/filter/pdftopdf/qpdf_pdftopdf_processor.cc -index 73e4f06..0752a99 100644 ---- a/filter/pdftopdf/qpdf_pdftopdf_processor.cc -+++ b/filter/pdftopdf/qpdf_pdftopdf_processor.cc -@@ -623,6 +623,7 @@ void QPDF_PDFTOPDF_Processor::emitFile(FILE *f,ArgOwnership take) // {{{ - if (!extraheader.empty()) { - out.setExtraHeaderText(extraheader); - } -+ out.setPreserveEncryption(false); - out.write(); - } - // }}} -@@ -642,6 +643,7 @@ void QPDF_PDFTOPDF_Processor::emitFilename(const char *name) // {{{ - if (!extraheader.empty()) { - out.setExtraHeaderText(extraheader); - } -+ out.setPreserveEncryption(false); - out.write(); - } - // }}} diff --git a/sources b/sources index e4daa62..a499d72 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.22.5.tar.xz) = ed33e6d6f090c00f0f0d1d012d3b394bfaa1f81feeb5b0b7ead1dffa2399f0165ce916a99c3bf28aca7f279bffba5b6575feff700130cabfcd46eb4c904d5c59 +SHA512 (cups-filters-1.26.0.tar.xz) = a6e0a1b8dfec2e46cb2475639b33f60da3a74090718334883564711530e13c7524952b9f145303c1063e1ae21eb585dce1fd9c87e4ce7884ec687fdef58f2124 From 0cd045c7fe213af3666466091545cd3d20affdf7 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 17 Dec 2019 17:48:23 +0100 Subject: [PATCH 076/197] add post scriptlet for update --- cups-filters.spec | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cups-filters.spec b/cups-filters.spec index 3902d7f..84bb788 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -203,6 +203,23 @@ make check %post %systemd_post cups-browsed.service +# put UpdateCUPSQueuesMaxPerCall and PauseBetweenCUPSQueueUpdates into cups-browsed.conf +# for making cups-browsed work more stable for environments with many print queues +# remove this after 1-2 releases +for directive in "UpdateCUPSQueuesMaxPerCall" "PauseBetweenCUPSQueueUpdates" +do + found=`%{_bindir}/grep "^[[:blank:]]*$directive" %{_sysconfdir}/cups/cups-browsed.conf` + if [ -z "$found" ] + then + if [ "x$directive" == "xUpdateCUPSQueuesMaxPerCall" ] + then + %{_bindir}/echo "UpdateCUPSQueuesMaxPerCall 20" >> %{_sysconfdir}/cups/cups-browsed.conf + else + %{_bindir}/echo "PauseBetweenCUPSQueueUpdates 5" >> %{_sysconfdir}/cups/cups-browsed.conf + fi + fi +done + %preun %systemd_preun cups-browsed.service @@ -285,6 +302,7 @@ make check %changelog * Mon Dec 16 2019 Zdenek Dohnal - 1.26.0-1 - 1.26.0 +- add post scriptlet for update * Tue Nov 26 2019 Zdenek Dohnal - 1.22.5-10 - 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets From 3a0eca877e0461d492bff7023e41c201bd80fe38 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Wed, 15 Jan 2020 17:58:55 +0100 Subject: [PATCH 077/197] add buildrequires fro systemd-rpm-macros --- cups-filters.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 09d1ba7..10cd5c6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 10%{?dist} +Release: 11%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -94,6 +94,9 @@ BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool +# needed for systemd rpm macros in scriptlets +BuildRequires: systemd-rpm-macros + Requires: cups-filesystem # if --with-pdftops is set to hybrid, we use poppler filters for several printers # and for printing banners, for other printers we need gs - ghostscript @@ -309,6 +312,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Wed Jan 15 2020 Zdenek Dohnal - 1.22.5-11 +- add buildrequires fro systemd-rpm-macros + * Tue Nov 26 2019 Zdenek Dohnal - 1.22.5-10 - 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets From bc3414ce3e4a315642c2a2b31f2646c153032e14 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Fri, 17 Jan 2020 12:33:24 +0100 Subject: [PATCH 078/197] Rebuild for poppler-0.84.0 --- cups-filters-poppler-0.84.0.patch | 42 +++++++++++++++++++++++++++++++ cups-filters.spec | 8 +++++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 cups-filters-poppler-0.84.0.patch diff --git a/cups-filters-poppler-0.84.0.patch b/cups-filters-poppler-0.84.0.patch new file mode 100644 index 0000000..02423fa --- /dev/null +++ b/cups-filters-poppler-0.84.0.patch @@ -0,0 +1,42 @@ +--- cups-filters-1.22.5/filter/pdftoijs.cxx ++++ cups-filters-1.22.5/filter/pdftoijs.cxx +@@ -286,7 +286,7 @@ int main(int argc, char *argv[]) { + bool reverseVideo; + + setErrorCallback(::myErrorFun,NULL); +- globalParams = new GlobalParams(); ++ globalParams = std::make_unique(); + parseOpts(argc, argv); + + if (argc == 6) { +--- cups-filters-1.22.5/filter/pdftoopvp/pdftoopvp.cxx.orig 2019-04-07 17:00:58.000000000 +0200 ++++ cups-filters-1.22.5/filter/pdftoopvp/pdftoopvp.cxx 2020-01-03 17:56:44.571862630 +0100 +@@ -605,7 +605,7 @@ exit(0); + } + + // read config file +- globalParams = new GlobalParams(); ++ globalParams = std::make_unique(); + if (enableFreeTypeStr[0]) { + if (!globalParams->setEnableFreeType(enableFreeTypeStr)) { + opvpError(-1,"Bad '-freetype' value on command line"); +@@ -766,7 +766,7 @@ err2: + err05: + delete doc; + err0: +- delete globalParams; ++ globalParams.reset(); + + #if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 + // check for memory leaks +--- cups-filters-1.22.5/filter/pdftoraster.cxx.orig 2019-04-07 17:00:58.000000000 +0200 ++++ cups-filters-1.22.5/filter/pdftoraster.cxx 2020-01-03 17:56:05.477767380 +0100 +@@ -1958,7 +1958,7 @@ int main(int argc, char *argv[]) { + + setErrorCallback(::myErrorFun,NULL); + cmsSetLogErrorHandler(lcmsErrorHandler); +- globalParams = new GlobalParams(); ++ globalParams = std::make_unique(); + parseOpts(argc, argv); + + if (argc == 6) { diff --git a/cups-filters.spec b/cups-filters.spec index 10cd5c6..9c8bc8d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 11%{?dist} +Release: 12%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -43,6 +43,8 @@ Patch07: 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch # 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets Patch08: cups-browsed-socket-leak.patch +Patch09: cups-filters-poppler-0.84.0.patch + Requires: cups-filters-libs%{?_isa} = %{version}-%{release} # gcc and gcc-c++ is not in buildroot by default @@ -164,6 +166,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch06 -p1 -b .setfilladjust %patch07 -p1 -b .prefer-apple-raster %patch08 -p1 -b .socket-leak +%patch09 -p1 -b .poppler-0.84.0 %build # work-around Rpath @@ -312,6 +315,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Fri Jan 17 2020 Marek Kasik - 1.22.5-11 +- Rebuild for poppler-0.84.0 + * Wed Jan 15 2020 Zdenek Dohnal - 1.22.5-11 - add buildrequires fro systemd-rpm-macros From 165fc502acb5f5668d29a1fb93000e9340f1e567 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 23 Jan 2020 17:52:25 +0100 Subject: [PATCH 079/197] fix build with GCC 10 and remove old obsoletes --- ...-rip-fix-compilation-with-fno-common.patch | 53 + cups-filters-poppler-0.84.0.patch | 42 - cups-filters-upstream-pdftoraster.patch | 12608 ++++++++++++++++ cups-filters.spec | 21 +- 4 files changed, 12672 insertions(+), 52 deletions(-) create mode 100644 0001-foomatic-rip-fix-compilation-with-fno-common.patch delete mode 100644 cups-filters-poppler-0.84.0.patch create mode 100644 cups-filters-upstream-pdftoraster.patch diff --git a/0001-foomatic-rip-fix-compilation-with-fno-common.patch b/0001-foomatic-rip-fix-compilation-with-fno-common.patch new file mode 100644 index 0000000..477f4d3 --- /dev/null +++ b/0001-foomatic-rip-fix-compilation-with-fno-common.patch @@ -0,0 +1,53 @@ +From e6c5025df307d3e8c79c3cd801780e4570f8607e Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 9 Jan 2020 10:20:46 +0100 +Subject: [PATCH] foomatic-rip: fix compilation with -fno-common + +Starting from the upcoming GCC release 10, the default of -fcommon option will +change to -fno-common. This causes compilation errors in foomatic-rip. These +seem to be due to missing "external" declarations. + +https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Code-Gen-Options.html#index-fno-common +--- + filter/foomatic-rip/foomaticrip.c | 2 +- + filter/foomatic-rip/options.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c +index 3b27ce93..2c6cdb66 100644 +--- a/filter/foomatic-rip/foomaticrip.c ++++ b/filter/foomatic-rip/foomaticrip.c +@@ -105,7 +105,7 @@ jobparams_t * get_current_job() + } + + +-dstr_t *postpipe; /* command into which the output of this filter should be piped */ ++dstr_t *postpipe = NULL; /* command into which the output of this filter should be piped */ + FILE *postpipe_fh = NULL; + + FILE * open_postpipe() +diff --git a/filter/foomatic-rip/options.c b/filter/foomatic-rip/options.c +index 481e5c54..3c6b63d4 100644 +--- a/filter/foomatic-rip/options.c ++++ b/filter/foomatic-rip/options.c +@@ -38,14 +38,14 @@ typedef struct icc_mapping_entry_s { + } icc_mapping_entry_t; + + /* Values from foomatic keywords in the ppd file */ +-char printer_model [256]; ++extern char printer_model [256]; + char printer_id [256]; + char driver [128]; + char cmd [4096]; + char cmd_pdf [4096]; +-dstr_t *postpipe = NULL; /* command into which the output of this ++extern dstr_t *postpipe; /* command into which the output of this + filter should be piped */ +-char cupsfilter [256]; ++extern char cupsfilter [256]; + int jobentitymaxlen = 0; + int userentitymaxlen = 0; + int hostentitymaxlen = 0; +-- +2.21.1 + diff --git a/cups-filters-poppler-0.84.0.patch b/cups-filters-poppler-0.84.0.patch deleted file mode 100644 index 02423fa..0000000 --- a/cups-filters-poppler-0.84.0.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- cups-filters-1.22.5/filter/pdftoijs.cxx -+++ cups-filters-1.22.5/filter/pdftoijs.cxx -@@ -286,7 +286,7 @@ int main(int argc, char *argv[]) { - bool reverseVideo; - - setErrorCallback(::myErrorFun,NULL); -- globalParams = new GlobalParams(); -+ globalParams = std::make_unique(); - parseOpts(argc, argv); - - if (argc == 6) { ---- cups-filters-1.22.5/filter/pdftoopvp/pdftoopvp.cxx.orig 2019-04-07 17:00:58.000000000 +0200 -+++ cups-filters-1.22.5/filter/pdftoopvp/pdftoopvp.cxx 2020-01-03 17:56:44.571862630 +0100 -@@ -605,7 +605,7 @@ exit(0); - } - - // read config file -- globalParams = new GlobalParams(); -+ globalParams = std::make_unique(); - if (enableFreeTypeStr[0]) { - if (!globalParams->setEnableFreeType(enableFreeTypeStr)) { - opvpError(-1,"Bad '-freetype' value on command line"); -@@ -766,7 +766,7 @@ err2: - err05: - delete doc; - err0: -- delete globalParams; -+ globalParams.reset(); - - #if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 - // check for memory leaks ---- cups-filters-1.22.5/filter/pdftoraster.cxx.orig 2019-04-07 17:00:58.000000000 +0200 -+++ cups-filters-1.22.5/filter/pdftoraster.cxx 2020-01-03 17:56:05.477767380 +0100 -@@ -1958,7 +1958,7 @@ int main(int argc, char *argv[]) { - - setErrorCallback(::myErrorFun,NULL); - cmsSetLogErrorHandler(lcmsErrorHandler); -- globalParams = new GlobalParams(); -+ globalParams = std::make_unique(); - parseOpts(argc, argv); - - if (argc == 6) { diff --git a/cups-filters-upstream-pdftoraster.patch b/cups-filters-upstream-pdftoraster.patch new file mode 100644 index 0000000..01802cc --- /dev/null +++ b/cups-filters-upstream-pdftoraster.patch @@ -0,0 +1,12608 @@ +diff --git a/COPYING b/COPYING +index 140aae1..4103e6e 100644 +--- a/COPYING ++++ b/COPYING +@@ -145,21 +145,6 @@ Files: filter/imagetopdf* + Copyright: 1993-2007, Easy Software Products + License: GPL-2 + +-Files: filter/pdftoijs.cxx +- ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd +-Copyright: 2008, Tobias Hoffmann +- 2008, BBR Inc. +-License: Expat +- +-Files: filter/pdftoopvp/* +-Copyright: 2003, 2004, 2005, 2006, AXE,Inc +- 2007, 2008, ModifiedBBR Inc. +- 2003, Glyph & Cog, LLC +- 2006, Fuji Xerox Printing Systems Co., Ltd +- 2006, Free Standards Group +- 2006, Canon Inc +-License: Expat +- + Files: filter/pdftopdf/* + Copyright: 2012 Tobias Hoffmann + 2006-2011, BBR Inc +diff --git a/INSTALL b/INSTALL +index e4c60ae..5d21a47 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -24,7 +24,7 @@ BEFORE YOU BEGIN + Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD + make does not support "include". + +- Poppler, libijs, freetype, fontconfig, and liblcms (liblcms2 recommended) ++ Poppler, freetype, fontconfig, and liblcms (liblcms2 recommended) + must be installed to be able to compile this package. + + Note that Poppler has to be compiled with the +diff --git a/Makefile.am b/Makefile.am +index cfefa5a..80260aa 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -482,61 +482,6 @@ EXTRA_DIST += \ + pkgfilter_PROGRAMS = + pkgfilterdir = $(CUPS_SERVERBIN)/filter + +-# =========== +-# PDF to OPVP +-# =========== +-if ENABLE_OPVP +-if ENABLE_POPPLER +-pkgfilter_PROGRAMS += \ +- pdftoopvp +- +-pkgfontconfigdir = $(sysconfdir)/$(FONTDIR) +-pkgfontconfig_DATA = filter/pdftoopvp/99pdftoopvp.conf +-endif +-endif +-EXTRA_DIST += filter/pdftoopvp/99pdftoopvp.conf +- +-pdftoopvp_SOURCES = \ +- filter/pdftoopvp/oprs/OPRS.cxx \ +- filter/pdftoopvp/oprs/OPRS.h \ +- filter/pdftoopvp/oprs/OPVPSplashClip.cxx \ +- filter/pdftoopvp/oprs/OPVPSplashClip.h \ +- filter/pdftoopvp/oprs/OPVPSplash.cxx \ +- filter/pdftoopvp/oprs/OPVPSplash.h \ +- filter/pdftoopvp/oprs/OPVPSplashPath.cxx \ +- filter/pdftoopvp/oprs/OPVPSplashPath.h \ +- filter/pdftoopvp/oprs/OPVPSplashState.cxx \ +- filter/pdftoopvp/oprs/OPVPSplashState.h \ +- filter/pdftoopvp/oprs/OPVPSplashXPath.cxx \ +- filter/pdftoopvp/oprs/OPVPSplashXPath.h \ +- filter/pdftoopvp/oprs/OPVPWrapper.cxx \ +- filter/pdftoopvp/oprs/OPVPWrapper.h \ +- filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx \ +- filter/pdftoopvp/oprs/OPVPWrapper_0_2.h \ +- filter/pdftoopvp/OPVPError.h \ +- filter/pdftoopvp/opvp/opvp_common.h \ +- filter/pdftoopvp/opvp/opvp.h \ +- filter/pdftoopvp/opvp/opvp_0_2_0.h \ +- filter/pdftoopvp/OPVPOutputDev.cxx \ +- filter/pdftoopvp/OPVPOutputDev.h \ +- filter/pdftoopvp/pdftoopvp.cxx +-pdftoopvp_CFLAGS = \ +- $(CUPS_CFLAGS) \ +- $(FREETYPE_CFLAGS) \ +- $(FONTCONFIG_CFLAGS) \ +- $(LIBPNG_CFLAGS) \ +- $(POPPLER_CFLAGS) \ +- -I$(srcdir)/filter/pdftoopvp/oprs \ +- -I$(srcdir)/filter/pdftoopvp/opvp +-pdftoopvp_CXXFLAGS = $(pdftoopvp_CFLAGS) +-pdftoopvp_LDADD = \ +- $(CUPS_LIBS) \ +- $(FREETYPE_LIBS) \ +- $(FONTCONFIG_LIBS) \ +- $(LIBPNG_LIBS) \ +- $(POPPLER_LIBS) \ +- $(DLOPEN_LIBS) +- + # ========== + # PDF to PDF + # ========== +@@ -619,10 +564,6 @@ endif + if ENABLE_POPPLER + pkgfilter_PROGRAMS += \ + pdftoraster +-if ENABLE_IJS +-pkgfilter_PROGRAMS += \ +- pdftoijs +-endif + endif + if ENABLE_GHOSTSCRIPT + pkgfilter_PROGRAMS += \ +@@ -819,19 +760,6 @@ rastertops_LDADD = \ + -lz \ + libcupsfilters.la + +-pdftoijs_SOURCES = \ +- filter/pdftoijs.cxx \ +- filter/PDFError.h +-pdftoijs_CFLAGS = \ +- $(CUPS_CFLAGS) \ +- $(IJS_CFLAGS) \ +- $(POPPLER_CFLAGS) +-pdftoijs_CXXFLAGS = $(pdftoijs_CFLAGS) +-pdftoijs_LDADD = \ +- $(CUPS_LIBS) \ +- $(IJS_LIBS) \ +- $(POPPLER_LIBS) +- + sys5ippprinter_SOURCES = \ + filter/common.c \ + filter/common.h \ +@@ -858,8 +786,7 @@ pdftops_LDADD = $(STRCASESTR) $(CUPS_LIBS) + pdftops_DEPENDENCIES = $(STRCASESTR) + + pdftoraster_SOURCES = \ +- filter/pdftoraster.cxx \ +- filter/PDFError.h ++ filter/pdftoraster.cxx + pdftoraster_CFLAGS = \ + $(CUPS_CFLAGS) \ + $(LCMS_CFLAGS) \ +@@ -1017,13 +944,6 @@ genppdfiles = \ + ppd/HP-Color_LaserJet_CM3530_MFP-PDF.ppd \ + ppd/Ricoh-PDF_Printer-PDF.ppd + ppd_DATA = $(genppdfiles) +-ijsppdfiles = \ +- ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd +-if ENABLE_POPPLER +-if ENABLE_IJS +-ppd_DATA += $(ijsppdfiles) +-endif +-endif + gsppdfiles = \ + ppd/pxlcolor.ppd \ + ppd/pxlmono.ppd +@@ -1033,7 +953,6 @@ endif + + EXTRA_DIST += \ + $(genppdfiles) \ +- $(ijsppdfiles) \ + $(gsppdfiles) + + # ========= +diff --git a/README b/README +index 2d80e32..ba02771 100644 +--- a/README ++++ b/README +@@ -455,7 +455,7 @@ CUPS FILTERS FOR PDF AS STANDARD PRINT JOB FORMAT + + Here is documentation from the former CUPS add-on tarball with the filters + for the PDF-based printing workflow: imagetopdf, texttopdf, +- pdftopdf, pdftoraster, pdftoopvp, and pdftoijs ++ pdftopdf, and pdftoraster + + The original filters are from http://sourceforge.jp/projects/opfc/ + +@@ -718,7 +718,10 @@ output NEWLINE + Thus, if you want to use both PDF filters and GS by single PPD file, + what you should do is to add the following line in the PPD file; + +-*pdftopdfJCLBegin: "pdftoopvp jobInfo:" ++*pdftopdfJCLBegin: "pdfto... jobInfo:" ++ ++Replace "pdfto..." by the name of the actual filter to be called after ++pdftopdf. + + Note: + If you specify JCLBegin, you have to specify JCLToPSInterpreter as well. +@@ -1100,247 +1103,6 @@ in the location specified by TMPDIR environment variable. Default location + is "/tmp". + + +-PDFTOIJS +-======== +- +-(Optional, only included when building with "./configure ... --enable-ijs ...") +- +-1. INTRODUCTION +- +-"pdftoijs" is a filter for CUPS. It reads PDF files, converts it +-and sends it to an IJS server. +- +-2. LICENSE +- +-Almost source files are under MIT like license. However, "pdftoijs" links +-some "poppler" libraries, and these files are under GNU public license. +-See copyright notice of each file for details. +- +-3. COMMAND LINE +- +-"pdftoijs" is a CUPS filter, and the command line arguments, environment +-variables and configuration files are in accordance with the CUPS filter +-interface. +- +-pdftoijs <num-copies> <options> [<filename>] +- +-"pdftoijs" ignores <job> and <user>. +-<title> is appended into the PDF dictionary as /Title. +-<num-copies> specifies the number of document copies. +-<options> is a CUPS option list. +-<filename> is an input PDF file name. +- +-When omit the <filename>, "pdftoijs" reads a PDF file from the stdin, +-and save it as a temporary file. +- +-4. ENVIRONMENT VARIABLES +- +-This program refers the following environment variable; +- PPD: PPD file name of the printer. +- +-5. NEW PPD KEYWORDS +- +-*ijsServer : the ijsserver executable +-*ijsManufacturer, *ijsModel : as used by the ijs server +-*ijsColorspace : the desired output colorspace, one of +- 'rgb' +- 'cmyk' (availability depending on poppler compile-options) +- 'white1', 'black1': 1-bit normal/inverted +- 'white8', 'black8': 8-bit greyscale normal/inverted +-*ijsResolution [option]=[choice]: the desired output resolution e.g. "600 600" +-*ijsParams [option]=[choice]: custom ijs parameters, separated by ',' +- (to escape: use \,) +- +-6. COMMAND OPTIONS +- +-(See CUPS documents for details.) +- +-ijsOutputFile : the destination file, stdout otherwise +- +-7. INFORMATION FOR DEVELOPERS +- +-Following information is for developers, not for driver users. +- +-7.1 Temporally files location +- +-"pdftoijs" creates temporary files if needed. Temporary files are created +-in the location specified by TMPDIR environment variable. Default location +-is "/tmp". +- +- +-PDFTOOPVP +-========= +- +-(Optional, only included when building with "./configure ... --enable-opvp ...") +- +-1. INTRODUCTION +- +-"pdftoopvp" is a CUPS filter which reads PDF file, renders pages and +-outputs PDL to a printer driver which is compliant with the OpenPrinting +-Vector Printer Driver Interface "opvp". +- +-2. CONFIGURATION +- +-"pdftoopvp" refers the poppler configuration file. Be aware that poppler +-uses "fontconfig" for its font configuration. +- +-3. JCL +- +-When "pdftoopvp" reads a PDF file from stdin, "pdftoopvp" handles the data +-prior to PDF header (%PDF ...) as JCL options. JCL options for "pdftoopvp" +-must begin with "pdftoopvp jobInfo:". "pdftoopvp" passes the option string +-just after ":" to the driver as the jobInfo option. +- +-4. COMMAND LINE +- +-"pdftoopvp" is a CUPS filter, and the command line arguments, +-environment variables and configuration files are in accordance with +-the CUPS filter interface. +- +-pdftoopvp <job> <user> <title> <num-copies> <options> [<filename>] +- +-"pdftoopvp" ignores <job>, <user>, <title> and <num-copies>. +-<options> is a CUPS option list. +- +-When omit the <filename>, "pdftoopvp" reads a PDF file from stdin, +-and save it as a temporary file. +- +-CUPS options defined in <options> are delimited by space. Boolean +-type CUPS option is defined only by the option key, and other type +-CUPS option are defined by pairs of key and value, <key>=<value>. +- +-5. COMMAND OPTIONS +- +-"pdftoopvp" accepts the following CUPS standard options; +- +-Resolution=<int> +- Specifies a printer resolution in dpi. +- When this option is omitted, the resolution is treated as 300dpi. +- Horizontal and vertical resolution are treated as the same resolution. +- +-PageSize=<string> +- Specifies a paper size by name defined in the PPD file. +- This option is ignored when no PPD file is assigned for the printer +- queue. +- +-"pdftoopvp" accepts the following original options; +- +-opvpDriver=<string> +- Specifies a driver library name. +- +-opvpModel=<string> +- Specifies a printer model name. +- +-opvpJobInfo=<string> +- Specifies "jobInfo" printing options that are passed to the driver. +- Printing options are overridden by JCL options. +- +-opvpDocInfo=<string> +- Specifies "docInfo" document options that are passed to the driver. +- +-opvpPageInfo=<string> +- Specifies "pageInfo" page options that are passed to the driver. +- +-pdftoopvpClipPathNotSaved (Boolean option) +- Specifies that the driver cannot save clipping path operators in PDF. +- +-nopdftoopvpShearImage (Boolean option) +- Specifies that the driver cannot rotate/shear images by CTM. +- +-nopdftoopvpMiterLimit (Boolean option) +- Specifies that the driver does not support miter limit. +- If the driver does not prepare the opvpSetMiterLimit function entry, +- this option setting is ignored, and also miter limit is ignored. +- +-pdftoopvpIgnoreMiterLimit (Boolean option) +- When nopdftoopvpMiterLimit option is set, pdftoopvp automatically +- replace paths to multiple lines or drawing images. This option +- specifies to avoid the path replacement even when nopdftoopvpMiterLimit +- option is set. +- +-pdftoopvpMaxClipPathLength=<int> +- Specifies the maximum number of clipping path points that the driver +- supports. Default value is 2000 points. +- +-pdftoopvpMaxFillPathLength=<int> +- Specifies the maximum number of fill path points that the driver supports. +- Default value is 4000 points. +- +-nopdftoopvpLineStyle (Boolean option) +- Specifies that the driver ignores the line style settings in PDF. +- If the driver does not prepare the SetLineStyle , SetLineDash or +- SetLineDashOffset function entry, this option setting is ignored, and +- also line style, line dash and line dash offset are ignored. +- +-nopdftoopvpClipPath (Boolean option) +- Specifies that the driver does not support clipping path. +- If the driver does not prepare the opvpSetClipPath function entry, this +- option is ignored, and also clip path setting is ignored. +- +-nopdftoopvpBitmapChar (Boolean option) +- Specifies that the driver does not output characters as images. +- Default setting is that "pdftoopvp" outputs small characters as images. +- +-pdftoopvpBitmapCharThreshold=<int> +- Specifies the threshold value that "pdftoopvp" outputs characters as +- images. Threshold value is defined as W x H where character's width +- is given by W pixels and height is given by H pixels. +- Default threshold value is 2000 points. +- +-nopdftoopvpImageMask (Boolean option) +- Specifies that the driver does not support image mask. +- If this option is set, "pdftoopvp" treats as the nopdftoopvpBitmapChar +- option is given. +- +-6. PPD OPTIONS +- +-Following options can be defined in a PPD. +- +-Resolution=<int> +-PageSize=<string> +-opvpDriver=<string> +-opvpModel=<string> +-opvpJobInfo=<string> +-opvpDocInfo=<string> +-opvpPageInfo=<string> +-pdftoopvpClipPathNotSaved=True +-pdftoopvpShearImage=False +-pdftoopvpMiterLimit=False +-pdftoopvpIgnoreMiterLimit=True +-pdftoopvpMaxClipPathLength=<int> +-pdftoopvpMaxFillPathLength=<int> +-pdftoopvpLineStyle=False +-pdftoopvpClipPath=False +-pdftoopvpBitmapChar=False +-pdftoopvpBitmapCharThreshold=<int> +-pdftoopvpImageMask=False +- +-7. OPTIONS OVERRIDING RULE +- +-"jobInfo" printing options in a PPD is used as a initial "jobInfo" printing +-options. If opvpJobInfo option is given in the command line, precedent +-"jobInfo" printing options are overridden by the opvpJobInfo options. +- +-After the "jobInfo" printing options are overridden by the opvpJobInfo +-options, if JCL options are given, precedent "jobInfo" printing options are +-overridden by the options given by JCL options. +- +-8. INFORMATION FOR CUPS 1.1 +- +-To use this program under CUPS 1.1, following lines must be defined +-in the CUPS's "mime.types" file. +- +-application/vnd.cups-pdf +- +-9. KNOWN PROBLEMS +- +-Problem: +- When a page is rotated and a character is small, character might not be +- rotated correctly. This problem is caused by free type library. +-Solution: +- Define the nopdftoopvpBitmapChar to inhibit characters output as images. +- +- + URFTOPDF + ======== + +diff --git a/configure.ac b/configure.ac +index 317792b..89c530d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -459,7 +459,6 @@ AS_IF([test x"$lcms2" = "xno"], [ + ]) + PKG_CHECK_MODULES([FREETYPE], [freetype2], [AC_DEFINE([HAVE_FREETYPE_H], [1], [Have FreeType2 include files])]) + PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.0.0]) +-PKG_CHECK_MODULES([IJS], [ijs], [have_ijs=yes], [have_ijs=no]) + PKG_CHECK_MODULES([ZLIB], [zlib]) + AC_DEFINE([HAVE_LIBZ], [], [Define that we use zlib]) + PKG_CHECK_MODULES([LIBQPDF], [libqpdf >= 8.3.0]) +@@ -488,7 +487,7 @@ AC_ARG_ENABLE(poppler, AS_HELP_STRING([--enable-poppler],[enable Poppler-based f + enable_poppler=$enableval,enable_poppler=yes) + AM_CONDITIONAL(ENABLE_POPPLER, test x$enable_poppler = xyes) + if test x$enable_poppler = xyes; then +- PKG_CHECK_MODULES([POPPLER], [poppler >= 0.19]) ++ PKG_CHECK_MODULES([POPPLER], [poppler-cpp >= 0.19]) + AC_CHECK_HEADER([poppler/cpp/poppler-version.h], [AC_DEFINE([HAVE_CPP_POPPLER_VERSION_H],,[Define if you have Poppler's "cpp/poppler-version.h" header file.])], []) + fi + +@@ -542,21 +541,6 @@ AC_ARG_ENABLE([ghostscript], + [enable_ghostscript="$enableval"], + [enable_ghostscript=yes] + ) +-AC_ARG_ENABLE([ijs], +- [AS_HELP_STRING([--enable-ijs], [Enable filters using IJS.])], +- [enable_ijs="$enableval"], +- [enable_ijs=no] +-) +-AS_IF([test "x$enable_ijs" = "xyes" -a "x$have_ijs" != "xyes"], [ +- AC_MSG_ERROR([IJS not found, but requested.]) +-]) +-AM_CONDITIONAL(ENABLE_IJS, test "x$enable_ijs" = "xyes") +-AC_ARG_ENABLE([opvp], +- [AS_HELP_STRING([--enable-opvp], [Enable filters using OpenPrinting Vector (OPVP).])], +- [enable_opvp="$enableval"], +- [enable_opvp=no] +-) +-AM_CONDITIONAL(ENABLE_OPVP, test "x$enable_opvp" = "xyes") + AC_ARG_WITH([pdftops], + [AS_HELP_STRING([--with-pdftops=value], [Set which pdftops to use (gs,pdftops,pdftocairo,acroread,mupdf,hybrid).])], + [with_pdftops="$withval"], +@@ -903,7 +887,5 @@ Build configuration: + apple-raster: ${APPLE_RASTER_FILTER} + pclm: ${enable_pclm} + driverless auto-setup: ${enable_auto_setup_driverless} +- ijs: ${enable_ijs} +- opvp: ${enable_opvp} + ============================================================================== + ]) +diff --git a/filter/PDFError.h b/filter/PDFError.h +deleted file mode 100644 +index 6167b5a..0000000 +--- a/filter/PDFError.h ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* +- +-Copyright (c) 2012, BBR Inc. All rights reserved. +- +-Permission is hereby granted, free of charge, to any person obtaining +-a copy of this software and associated documentation files (the +-"Software"), to deal in the Software without restriction, including +-without limitation the rights to use, copy, modify, merge, publish, +-distribute, sublicense, and/or sell copies of the Software, and to +-permit persons to whom the Software is furnished to do so, subject to +-the following conditions: +- +-The above copyright notice and this permission notice shall be included +-in all copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- +-*/ +-/* +- P2PError.h +-*/ +-#ifndef _P2PERROR_H_ +-#define _P2PERROR_H_ +- +-#include <config.h> +-#include <stdarg.h> +-#include <Error.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#define pdfError(pos,...) error(errInternal,pos,__VA_ARGS__) +- +-#endif +diff --git a/filter/imagetopdf.c b/filter/imagetopdf.c +index 0bf2618..4b8c6ad 100644 +--- a/filter/imagetopdf.c ++++ b/filter/imagetopdf.c +@@ -149,13 +149,13 @@ void emitJCLOptions(FILE *fp, int copies) + int i; + char buf[1024]; + ppd_attr_t *attr; +- int pdftoopvp = 0; ++ int pdftopdfjcl = 0; + int datawritten = 0; + + if (ppd == 0) return; + if ((attr = ppdFindAttr(ppd,"pdftopdfJCLBegin",NULL)) != NULL) { + int n = strlen(attr->value); +- pdftoopvp = 1; ++ pdftopdfjcl = 1; + for (i = 0;i < n;i++) { + if (attr->value[i] == '\r' || attr->value[i] == '\n') { + /* skip new line */ +@@ -173,7 +173,7 @@ void emitJCLOptions(FILE *fp, int copies) + if ((attr = ppdFindAttr(ppd,"pdftopdfJCLCopies",buf)) != NULL) { + fputs(attr->value,fp); + datawritten = 1; +- } else if (pdftoopvp) { ++ } else if (pdftopdfjcl) { + fprintf(fp,"Copies=%d;",copies); + datawritten = 1; + } +@@ -189,7 +189,7 @@ void emitJCLOptions(FILE *fp, int copies) + if ((attr = ppdFindAttr(ppd,buf,choices[i]->choice)) != NULL) { + fputs(attr->value,fp); + datawritten = 1; +- } else if (pdftoopvp) { ++ } else if (pdftopdfjcl) { + fprintf(fp,"%s=%s;", + ((ppd_option_t *)(choices[i]->option))->keyword, + choices[i]->choice); +diff --git a/filter/pdftoijs.cxx b/filter/pdftoijs.cxx +deleted file mode 100644 +index 4a93ef7..0000000 +--- a/filter/pdftoijs.cxx ++++ /dev/null +@@ -1,522 +0,0 @@ +-/* +-Copyright (c) 2008, BBR Inc. All rights reserved. +- (c) 2008 Tobias Hoffmann +- +-Permission is hereby granted, free of charge, to any person obtaining +-a copy of this software and associated documentation files (the +-"Software"), to deal in the Software without restriction, including +-without limitation the rights to use, copy, modify, merge, publish, +-distribute, sublicense, and/or sell copies of the Software, and to +-permit persons to whom the Software is furnished to do so, subject to +-the following conditions: +- +-The above copyright notice and this permission notice shall be included +-in all copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- +-*/ +-/* +- pdftoijs.cc +- pdf to ijs filter +-*/ +- +-#include <config.h> +-#include <stdio.h> +-#include <stdlib.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include <goo/GooString.h> +-#include <goo/gmem.h> +-#include <Object.h> +-#include <Stream.h> +-#include <PDFDoc.h> +-#include <SplashOutputDev.h> +-#include <cups/cups.h> +-#include <cups/ppd.h> +-#include <stdarg.h> +-#include "PDFError.h" +-#include <GlobalParams.h> +-#include <splash/SplashTypes.h> +-#include <splash/SplashBitmap.h> +-extern "C" { +-#include <ijs/ijs.h> +-#include <ijs/ijs_client.h> +-} +-#include <vector> +-#include <string> +- +-#define MAX_CHECK_COMMENT_LINES 20 +- +-namespace { +- int exitCode = 0; +- char *outputfile = NULL; +-// int deviceCopies = 1; +-// bool deviceCollate = false; +- const char *ijsserver = NULL; +- int resolution[2] = {0,0}; +- enum ColEnum { NONE=-1, COL_RGB, COL_CMYK, COL_BLACK1, COL_WHITE1, COL_BLACK8, COL_WHITE8 } colspace=NONE; +- const char *devManu=NULL, *devModel=NULL; +- std::vector<std::pair<std::string,std::string> > params; +- +- ppd_file_t *ppd = 0; // holds the memory for the strings +-} +- +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +-void CDECL myErrorFun(void *data, ErrorCategory category, +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- Goffset pos, const char *msg) +-#else +- Goffset pos, char *msg) +-#endif /* MAJOR > 0 || MINOR >= 70 */ +-#else +-void CDECL myErrorFun(void *data, ErrorCategory category, +- int pos, char *msg) +-#endif +-{ +- if (pos >= 0) { +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +- fprintf(stderr, "ERROR (%lld): ", pos); +-#else +- fprintf(stderr, "ERROR (%d): ", pos); +-#endif +- } else { +- fprintf(stderr, "ERROR: "); +- } +- fprintf(stderr, "%s\n",msg); +- fflush(stderr); +-} +- +-/* parse "300 400" */ +-void parse_resolution(const char *str) +-{ +- const char *tmp=strchr(str,' '); +- if (tmp) { +- resolution[0]=atoi(str); +- resolution[1]=atoi(tmp+1); +- } else { +- resolution[0]=resolution[1]=atoi(str); +- } +-} +- +-/* parse "cmyk" "grey" "rgb" */ +-void parse_colorspace(const char *str) +-{ +- if (strcasecmp(str,"rgb")==0) { +- colspace=COL_RGB; +- } else if (strcasecmp(str,"black1")==0) { +- colspace=COL_BLACK1; +- } else if (strcasecmp(str,"white1")==0) { +- colspace=COL_WHITE1; +- } else if (strcasecmp(str,"black8")==0) { +- colspace=COL_BLACK8; +- } else if (strcasecmp(str,"white8")==0) { +- colspace=COL_WHITE8; +-#ifdef SPLASH_CMYK +- } else if (strcasecmp(str,"cmyk")==0) { +- colspace=COL_CMYK; +- } else { +- pdfError(-1,"Unknown colorspace; supported are 'rgb', 'cmyk', 'white1', 'black1', 'white8', 'black8'"); +-#else +- } else { +- pdfError(-1,"Unknown colorspace; supported are 'rgb', 'white1', 'black1', 'white8', 'black8'"); +-#endif +- exit(1); +- } +-} +- +-std::string str_trim(const char *str,int len) +-{ +- int start=strspn(str," \r\n\t"); +- for (len--;len>=0;len--) { +- if (!strchr(" \r\n\t",str[len])) { +- break; +- } +- } +- len++; +- if (start>=len) { +- return std::string(); +- } +- return std::string(str+start,len-start); +-} +- +-/* parse key=value */ +-void parse_param(const char *str) +-{ +- const char *eq=strchr(str,'='); +- if (!eq) { +- fprintf(stderr, "WARNING: ignored ijsParam without '='"); +- return; +- } +- params.push_back(make_pair(str_trim(str,eq-str),str_trim(eq+1,strlen(eq+1)))); +-} +- +-/* parse key1=value1,key2=value2,... */ +-void parse_paramlist(const char *str) +-{ +- std::string tmp; +- const char *cur=str; +- while (*cur) { +- tmp.clear(); +- for (;*cur;++cur) { +- if ( (*cur=='\\')&&(cur[1]) ) { +- ++cur; +- tmp.push_back(*cur); +- } else if(*cur==',') { +- ++cur; +- break; +- } else { +- tmp.push_back(*cur); +- } +- } +- parse_param(tmp.c_str()); +- } +-} +- +-void parseOpts(int argc, char **argv) +-{ +- int num_options = 0; +- cups_option_t *options = 0; +- +- if (argc < 6 || argc > 7) { +- pdfError(-1,"%s job-id user title copies options [file]", +- argv[0]); +- exit(1); +- } +- +- assert(!ppd); +- ppd = ppdOpenFile(getenv("PPD")); +- ppdMarkDefaults(ppd); +- +- // handle *ijsServer, *ijsManufacturer, *ijsModel, *ijsColorspace +- ppd_attr_t *attr; +- if ((attr = ppdFindAttr(ppd,"ijsServer",0)) != 0) { +- ijsserver=attr->value; +- } +- if ((attr = ppdFindAttr(ppd,"ijsManufacturer",0)) != 0) { +- devManu=attr->value; +- } +- if ((attr = ppdFindAttr(ppd,"ijsModel",0)) != 0) { +- devModel=attr->value; +- } +- if ((attr = ppdFindAttr(ppd,"ijsColorspace",0)) != 0) { +- parse_colorspace(attr->value); +- } +- if ( (!ijsserver)||(!devManu)||(!devModel)||(colspace==NONE) ) { +- pdfError(-1,"ijsServer, ijsManufacturer, ijsModel and ijsColorspace must be specified in the PPD"); +- exit(1); +- } +- +- options = NULL; +- +- num_options = cupsParseOptions(argv[5],0,&options); +-// cupsMarkOptions(ppd,num_options,options); // TODO? returns 1 on conflict +- // handle *ijsResolution, *ijsParam here +- char spec[PPD_MAX_NAME]; +- for (int iA=0;iA<num_options;iA++) { +- snprintf(spec,PPD_MAX_NAME,"%s=%s",options[iA].name,options[iA].value); +- if ((attr = ppdFindAttr(ppd,"ijsResolution",spec)) != 0) { +- parse_resolution(attr->value); +- } +- if ((attr = ppdFindAttr(ppd,"ijsParams",spec)) != 0) { +- parse_paramlist(attr->value); +- } +- if (strcmp(options[iA].name,"ijsOutputFile")==0) { +- outputfile=strdup(options[iA].value); +- } +- } +- if (!resolution[0]) { +- pdfError(-1,"ijsResolution must be specified"); +- exit(1); +- } +- cupsFreeOptions(num_options,options); +-} +- +-#if 0 +-void parsePDFTOPDFComment(FILE *fp) +-{ +- char buf[4096]; +- int i; +- +- /* skip until PDF start header */ +- while (fgets(buf,sizeof(buf),fp) != 0) { +- if (strncmp(buf,"%PDF",4) == 0) { +- break; +- } +- } +- for (i = 0;i < MAX_CHECK_COMMENT_LINES;i++) { +- if (fgets(buf,sizeof(buf),fp) == 0) break; +- if (strncmp(buf,"%%PDFTOPDFNumCopies",19) == 0) { +- char *p; +- +- p = strchr(buf+19,':'); +- deviceCopies = atoi(p+1); +- } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) { +- char *p; +- +- p = strchr(buf+17,':'); +- while (*p == ' ' || *p == '\t') p++; +- if (strncasecmp(p,"true",4) == 0) { +- deviceCollate = true; +- } else { +- deviceCollate = false; +- } +- } +- } +-} +-#endif +- +-int main(int argc, char *argv[]) { +- PDFDoc *doc; +- SplashOutputDev *out; +- SplashColor paperColor; +- int i; +- int npages; +- IjsClientCtx *ctx=NULL; +- int job_id; +- enum SplashColorMode cmode; +- int rowpad; +- bool reverseVideo; +- +- setErrorCallback(::myErrorFun,NULL); +- globalParams = new GlobalParams(); +- parseOpts(argc, argv); +- +- if (argc == 6) { +- /* stdin */ +- int fd; +- char name[BUFSIZ]; +- char buf[BUFSIZ]; +- int n; +- +- fd = cupsTempFd(name,sizeof(name)); +- if (fd < 0) { +- pdfError(-1,"Can't create temporary file"); +- exit(1); +- } +- +- /* copy stdin to the tmp file */ +- while ((n = read(0,buf,BUFSIZ)) > 0) { +- if (write(fd,buf,n) != n) { +- pdfError(-1,"Can't copy stdin to temporary file"); +- close(fd); +- exit(1); +- } +- } +- close(fd); +- doc = new PDFDoc(new GooString(name)); +- /* remove name */ +- unlink(name); +- } else { +- GooString *fileName = new GooString(argv[6]); +- /* argc == 7 filenmae is specified */ +- FILE *fp; +- +- if ((fp = fopen(argv[6],"rb")) == 0) { +- pdfError(-1,"Can't open input file %s",argv[6]); +- exit(1); +- } +-// parsePDFTOPDFComment(fp); // TODO? +- fclose(fp); +- doc = new PDFDoc(fileName,NULL,NULL); +- } +- +- if (!doc->isOk()) { +- exitCode = 1; +- goto err1; +- } +- +- char tmp[100]; +- tmp[99]=0; +- // ... OutputFD=stdout .. needs to be done before forking +- int outfd; +- outfd=dup(fileno(stdout)); +- +-#if 0 +- /* fix NumCopies, Collate ccording to PDFTOPDFComments */ +- header.NumCopies = deviceCopies; +- header.Collate = deviceCollate ? CUPS_TRUE : CUPS_FALSE; +- /* fixed other values that pdftopdf handles */ +- header.MirrorPrint = CUPS_FALSE; +- header.Orientation = CUPS_ORIENT_0; +-#endif +- +- job_id=atoi(argv[1]); +- ctx = ijs_invoke_server (ijsserver); +- ijs_client_open (ctx); +- ijs_client_begin_job (ctx,job_id); +- if (outputfile) { +- ijs_client_set_param(ctx,job_id,"OutputFile",outputfile,strlen(outputfile)); +- } else { +- snprintf(tmp,99,"%d",outfd); +- ijs_client_set_param(ctx,job_id,"OutputFD",tmp,strlen(tmp)); +- close(outfd); +- } +- ijs_client_set_param(ctx,job_id,"DeviceManufacturer",devManu,strlen(devManu)); +- ijs_client_set_param(ctx,job_id,"DeviceModel",devModel,strlen(devModel)); +- // TODO: get supported output-formats from ijs-server, overriding PPD +- +- /* set image's values */ +- int numChan,bitsPerSample; +- const char *devName; +- reverseVideo = false; +- switch (colspace) { +- case COL_RGB: +- numChan=3; +- bitsPerSample=8; +- cmode = splashModeRGB8; +- devName = "DeviceRGB"; +- rowpad = 3; +- /* set paper color white */ +- paperColor[0] = 255; +- paperColor[1] = 255; +- paperColor[2] = 255; +- break; +- case COL_BLACK1: +- reverseVideo = true; +- case COL_WHITE1: +- numChan=1; +- bitsPerSample=1; +- cmode = splashModeMono1; +- devName = "DeviceGray"; +- /* set paper color white */ +- paperColor[0] = 255; +- rowpad = 1; +- break; +- case COL_BLACK8: +- reverseVideo = true; +- case COL_WHITE8: +- numChan=1; +- bitsPerSample=8; +- cmode = splashModeMono8; +- devName = "DeviceGray"; +- /* set paper color white */ +- paperColor[0] = 255; +- rowpad = 1; +- break; +-#ifdef SPLASH_CMYK +- case COL_CMYK: +- numChan=4; +- bitsPerSample=8; +- cmode = splashModeCMYK8; +- devName = "DeviceCMYK"; +- /* set paper color white */ +- paperColor[0] = 0; +- paperColor[1] = 0; +- paperColor[2] = 0; +- paperColor[3] = 0; +- rowpad = 4; +- break; +-#endif +- default: +- pdfError(-1,"Specified ColorSpace is not supported"); +- exit(1); +- break; +- } +- +- out = new SplashOutputDev(cmode,rowpad/* row padding */, +- reverseVideo,paperColor,true +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 +- ,false +-#endif +- ); +- out->startDoc(doc); +- +- snprintf(tmp,99,"%d",numChan); +- ijs_client_set_param(ctx,job_id,"NumChan",tmp,strlen(tmp)); +- snprintf(tmp,99,"%d",bitsPerSample); +- ijs_client_set_param(ctx,job_id,"BitsPerSample",tmp,strlen(tmp)); +- ijs_client_set_param(ctx,job_id,"ColorSpace",devName,strlen(devName)); +- snprintf(tmp,99,"%dx%d",resolution[0],resolution[1]); +- ijs_client_set_param(ctx,job_id,"Dpi",tmp,strlen(tmp)); +- +- { // set the custom ijs parameters +- const int plen=params.size(); +- for (i=0;i<plen;i++) { +- ijs_client_set_param(ctx,job_id,params[i].first.c_str(),params[i].second.c_str(),params[i].second.size()); +- } +- } +- +- npages = doc->getNumPages(); +- for (i = 1;i <= npages;i++) { +- SplashBitmap *bitmap; +- unsigned int size; +- +- doc->displayPage(out,i,resolution[0],resolution[1],0,false,false,false); +- bitmap = out->getBitmap(); +- +- /* set page parameters */ +- snprintf(tmp,99,"%d",bitmap->getWidth()); +- ijs_client_set_param(ctx,job_id,"Width",tmp,strlen(tmp)); +- snprintf(tmp,99,"%d",bitmap->getHeight()); +- ijs_client_set_param(ctx,job_id,"Height",tmp,strlen(tmp)); +- ijs_client_begin_page(ctx,job_id); +- +- /* write page image */ +- size = bitmap->getRowSize()*bitmap->getHeight(); +- int status=ijs_client_send_data_wait(ctx,job_id,(const char *)bitmap->getDataPtr(),size); +- if (status) { +- pdfError(-1,"Can't write page %d image: %d",i,status); +- exit(1); +- } +- +- status=ijs_client_end_page(ctx,job_id); +- if (status) { +- pdfError(-1,"Can't finish page %d: %d",i,status); +- exit(1); +- } +- } +- ijs_client_end_job (ctx, job_id); +- ijs_client_close (ctx); +- +- ijs_client_begin_cmd (ctx, IJS_CMD_EXIT); +- ijs_client_send_cmd_wait (ctx); +- +- delete out; +-err1: +- delete doc; +- ppdClose(ppd); +- free(outputfile); +- +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 +- // Check for memory leaks +- Object::memCheck(stderr); +- gMemReport(stderr); +-#endif +- +- return exitCode; +-} +- +-/* replace memory allocation methods for memory check */ +-/* For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW +- * should be used as a guard, otherwise use traditional definition */ +-#ifndef _GLIBCXX_THROW +-#define _GLIBCXX_THROW throw +-#endif +- +-void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) +-{ +- return gmalloc(size); +-} +- +-void operator delete(void *p) throw () +-{ +- gfree(p); +-} +- +-void * operator new[](size_t size) _GLIBCXX_THROW (std::bad_alloc) +-{ +- return gmalloc(size); +-} +- +-void operator delete[](void *p) throw () +-{ +- gfree(p); +-} +diff --git a/filter/pdftoopvp/99pdftoopvp.conf b/filter/pdftoopvp/99pdftoopvp.conf +deleted file mode 100644 +index 2737e17..0000000 +--- a/filter/pdftoopvp/99pdftoopvp.conf ++++ /dev/null +@@ -1,18 +0,0 @@ +-<?xml version="1.0"?> +-<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +-<!-- conf.d/pdftoopvp.fconf --> +-<fontconfig> +-<!-- Symbol and ZapfDingbats --> +- <alias> +- <family>ZapfDingbats</family> +- <prefer> +- <family>Dingbats</family> +- </prefer> +- </alias> +- <alias> +- <family>Symbol</family> +- <prefer> +- <family>Standard Symbols L</family> +- </prefer> +- </alias> +-</fontconfig> +diff --git a/filter/pdftoopvp/OPVPError.h b/filter/pdftoopvp/OPVPError.h +deleted file mode 100644 +index 4550949..0000000 +--- a/filter/pdftoopvp/OPVPError.h ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* +- +-Copyright (c) 2012, BBR Inc. All rights reserved. +- +-Permission is hereby granted, free of charge, to any person obtaining +-a copy of this software and associated documentation files (the +-"Software"), to deal in the Software without restriction, including +-without limitation the rights to use, copy, modify, merge, publish, +-distribute, sublicense, and/or sell copies of the Software, and to +-permit persons to whom the Software is furnished to do so, subject to +-the following conditions: +- +-The above copyright notice and this permission notice shall be included +-in all copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- +-*/ +-/* +- OPVPError.h +-*/ +-#ifndef _OPVPERROR_H_ +-#define _OPVPERROR_H_ +- +-#include <config.h> +-#include <stdarg.h> +-#include <Error.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#define opvpError(pos,...) error(errInternal,pos,__VA_ARGS__) +- +-#endif +diff --git a/filter/pdftoopvp/OPVPOutputDev.cxx b/filter/pdftoopvp/OPVPOutputDev.cxx +deleted file mode 100644 +index 2526714..0000000 +--- a/filter/pdftoopvp/OPVPOutputDev.cxx ++++ /dev/null +@@ -1,1948 +0,0 @@ +-// +-// OPVPOutputDev.cc +-// Based SplashOutputDev.cc : Copyright 2003 Glyph & Cog, LLC +-// +-// Copyright 2005 AXE,Inc. +-// +-// 2007,2008 Modified by BBR Inc. +-//======================================================================== +- +-#include <config.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#ifdef USE_GCC_PRAGMAS +-#pragma implementation +-#endif +- +-#include <string.h> +-#include <math.h> +-#include "goo/gfile.h" +-#include "GlobalParams.h" +-#include "OPVPError.h" +-#include "Object.h" +-#include "GfxState.h" +-#include "GfxFont.h" +-#include "Link.h" +-#include "CharCodeToUnicode.h" +-#include "FontEncodingTables.h" +-#include "fofi/FoFiTrueType.h" +-#include "splash/SplashMath.h" +-#include "CMap.h" +-#include "splash/SplashBitmap.h" +-#include "splash/SplashGlyphBitmap.h" +-#include "splash/SplashPattern.h" +-#include "splash/SplashScreen.h" +-#include "splash/SplashErrorCodes.h" +-#include "splash/SplashFontEngine.h" +-#include "splash/SplashFont.h" +-#include "splash/SplashFontFile.h" +-#include "splash/SplashFontFileID.h" +-#include "OPVPSplashPath.h" +-#include "OPVPSplashState.h" +-#include "OPRS.h" +-#include "OPVPOutputDev.h" +- +-#define SLICE_FOR_PATTERN 1000 +- +-//------------------------------------------------------------------------ +-// Font substitutions +-//------------------------------------------------------------------------ +- +-struct SplashOutFontSubst { +- char *name; +- double mWidth; +-}; +- +-//------------------------------------------------------------------------ +- +-#define soutRound(x) ((int)(x + 0.5)) +- +-//------------------------------------------------------------------------ +-// SplashOutFontFileID +-//------------------------------------------------------------------------ +- +-class SplashOutFontFileID: public SplashFontFileID { +-public: +- +- SplashOutFontFileID(const Ref *rA) { r = *rA; substIdx = -1; } +- +- ~SplashOutFontFileID() {} +- +- bool matches(SplashFontFileID *id) { +- return ((SplashOutFontFileID *)id)->r.num == r.num && +- ((SplashOutFontFileID *)id)->r.gen == r.gen; +- } +- +- void setSubstIdx(int substIdxA) { substIdx = substIdxA; } +- int getSubstIdx() { return substIdx; } +- +-private: +- +- Ref r; +- int substIdx; +-}; +- +-//------------------------------------------------------------------------ +-// T3FontCache +-//------------------------------------------------------------------------ +- +-struct T3FontCacheTag { +- Gushort code; +- Gushort mru; // valid bit (0x8000) and MRU index +-}; +- +-class T3FontCache { +-public: +- +- T3FontCache(Ref *fontID, double m11A, double m12A, +- double m21A, double m22A, +- int glyphXA, int glyphYA, int glyphWA, int glyphHA, +- bool aa); +- ~T3FontCache(); +- bool matches(Ref *idA, double m11A, double m12A, +- double m21A, double m22A) +- { return fontID.num == idA->num && fontID.gen == idA->gen && +- m11 == m11A && m12 == m12A && m21 == m21A && m22 == m22A; } +- +- Ref fontID; // PDF font ID +- double m11, m12, m21, m22; // transform matrix +- int glyphX, glyphY; // pixel offset of glyph bitmaps +- int glyphW, glyphH; // size of glyph bitmaps, in pixels +- int glyphSize; // size of glyph bitmaps, in bytes +- int cacheSets; // number of sets in cache +- int cacheAssoc; // cache associativity (glyphs per set) +- Guchar *cacheData; // glyph pixmap cache +- T3FontCacheTag *cacheTags; // cache tags, i.e., char codes +-}; +- +-T3FontCache::T3FontCache(Ref *fontIDA, double m11A, double m12A, +- double m21A, double m22A, +- int glyphXA, int glyphYA, int glyphWA, int glyphHA, +- bool aa) { +- int i; +- +- fontID = *fontIDA; +- m11 = m11A; +- m12 = m12A; +- m21 = m21A; +- m22 = m22A; +- glyphX = glyphXA; +- glyphY = glyphYA; +- glyphW = glyphWA; +- glyphH = glyphHA; +- if (aa) { +- glyphSize = glyphW * glyphH; +- } else { +- glyphSize = ((glyphW + 7) >> 3) * glyphH; +- } +- cacheAssoc = 8; +- if (glyphSize <= 256) { +- cacheSets = 8; +- } else if (glyphSize <= 512) { +- cacheSets = 4; +- } else if (glyphSize <= 1024) { +- cacheSets = 2; +- } else { +- cacheSets = 1; +- } +- cacheData = (Guchar *)gmallocn3(cacheSets , cacheAssoc , glyphSize); +- cacheTags = (T3FontCacheTag *)gmallocn3(cacheSets , cacheAssoc , +- sizeof(T3FontCacheTag)); +- for (i = 0; i < cacheSets * cacheAssoc; ++i) { +- cacheTags[i].mru = i & (cacheAssoc - 1); +- } +-} +- +-T3FontCache::~T3FontCache() { +- gfree(cacheData); +- gfree(cacheTags); +-} +- +-struct T3GlyphStack { +- Gushort code; // character code +- double x, y; // position to draw the glyph +- +- //----- cache info +- T3FontCache *cache; // font cache for the current font +- T3FontCacheTag *cacheTag; // pointer to cache tag for the glyph +- Guchar *cacheData; // pointer to cache data for the glyph +- +- //----- saved state +- SplashBitmap *origBitmap; +- OPRS *origOPRS; +- double origCTM4, origCTM5; +- +- T3GlyphStack *next; // next object on stack +-}; +- +-//------------------------------------------------------------------------ +-// OPVPOutputDev +-//------------------------------------------------------------------------ +- +-OPVPOutputDev::OPVPOutputDev() +-{ +- xref = 0; +- bitmap = 0; +- fontEngine = 0; +- nT3Fonts = 0; +- t3GlyphStack = 0; +- font = NULL; +- needFontUpdate = false; +- textClipPath = 0; +- underlayCbk = 0; +- underlayCbkData = 0; +- scaleWidth = scaleHeight = -1; +- leftMargin = 0; +- bottomMargin = 0; +- rotate = 0; +- sliceHeight = 0; +- yoffset = 0; +- oprs = 0; +-} +- +-void OPVPOutputDev::setScale(double w, double h, +- double leftMarginA, double bottomMarginA, int rotateA, +- int yoffsetA, int sliceHeightA) +-{ +- scaleWidth = w; +- scaleHeight = h; +- leftMargin = leftMarginA; +- bottomMargin = bottomMarginA; +- rotate = rotateA; +- yoffset = yoffsetA; +- sliceHeight = sliceHeightA; +-} +- +-int OPVPOutputDev::init(SplashColorMode colorModeA, +- bool colorProfile, +- bool reverseVideoA, +- SplashColor paperColorA, +- const char *driverName, +- int outputFD, +- const char *printerModel, +- int nOptions, +- const char *optionKeys[], +- const char *optionVals[]) { +- int result; +- +- oprs = new OPRS(); +- +- if ((result = oprs->init(driverName, outputFD, printerModel, +- nOptions,optionKeys,optionVals)) < 0) { +- opvpError(-1,"OPRS initialization fail"); +- return result; +- } +- colorMode = colorModeA; +- if ((result = oprs->setColorMode(colorMode,colorProfile)) < 0) { +- opvpError(-1,"Can't setColorMode"); +- return result; +- } +- reverseVideo = reverseVideoA; +- splashColorCopy(paperColor,paperColorA); +- +- return 0; +-} +- +-OPVPOutputDev::~OPVPOutputDev() { +- int i; +- +- for (i = 0; i < nT3Fonts; ++i) { +- delete t3FontCache[i]; +- } +- if (fontEngine) { +- delete fontEngine; +- } +- if (oprs) { +- delete oprs; +- } +- if (bitmap) { +- delete bitmap; +- } +-} +- +-void OPVPOutputDev::startDoc(XRef *xrefA) { +- int i; +- +- xref = xrefA; +- if (fontEngine) { +- delete fontEngine; +- } +- fontEngine = new SplashFontEngine( +-#if HAVE_T1LIB_H +- globalParams->getEnableT1lib(), +-#endif +-#if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H +- globalParams->getEnableFreeType(), +- false, +- false, +-#endif +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 +- globalParams->getAntialias()); +-#else +- false); +-#endif +- for (i = 0; i < nT3Fonts; ++i) { +- delete t3FontCache[i]; +- } +- nT3Fonts = 0; +-} +- +-void OPVPOutputDev::startPage(int pageNum, GfxState *state) { +- int w, h; +- +- if (state) { +- if (scaleWidth > 0 && scaleHeight > 0) { +- const double *ctm = state->getCTM(); +- +- switch (rotate) { +- case 90: +- state->setCTM(0,ctm[1],ctm[2],0,leftMargin,bottomMargin-yoffset); +- break; +- case 180: +- state->setCTM(ctm[0],0,0,ctm[3],paperWidth-leftMargin, +- bottomMargin-yoffset); +- break; +- case 270: +- state->setCTM(0,ctm[1],ctm[2],0,paperWidth-leftMargin, +- -bottomMargin+paperHeight-yoffset); +- break; +- default: +- state->setCTM(ctm[0],0,0,ctm[3],leftMargin, +- -bottomMargin+paperHeight-yoffset); +- break; +- } +- state->concatCTM(scaleWidth,0.0,0.0,scaleHeight,0,0); +- } +- w = (int)(state->getPageWidth()+0.5); +- h = (int)(state->getPageHeight()+0.5); +- } else { +- w = h = 1; +- } +- oprs->initGS(colorMode,w,h,paperColor); +- +- if (underlayCbk) { +- (*underlayCbk)(underlayCbkData); +- } +-} +- +-void OPVPOutputDev::endPage() { +- oprs->endPage(); +-} +- +-void OPVPOutputDev::saveState(GfxState *state) { +- oprs->saveState(); +-} +- +-void OPVPOutputDev::restoreState(GfxState *state) { +- oprs->restoreState(); +- needFontUpdate = true; +-} +- +-void OPVPOutputDev::updateAll(GfxState *state) { +- updateLineDash(state); +- updateLineJoin(state); +- updateLineCap(state); +- updateLineWidth(state); +- updateFlatness(state); +- updateMiterLimit(state); +- updateFillColor(state); +- updateStrokeColor(state); +- needFontUpdate = true; +-} +- +-void OPVPOutputDev::updateCTM(GfxState *state, double m11, double m12, +- double m21, double m22, +- double m31, double m32) { +- updateLineDash(state); +- updateLineJoin(state); +- updateLineCap(state); +- updateLineWidth(state); +-} +- +-void OPVPOutputDev::transLineDash(GfxState *state, SplashCoord **adash, +- int *adashLength, SplashCoord *aphase) { +- double *dashPattern; +- double dashStart; +- static SplashCoord dash[20]; +- int i; +- +- state->getLineDash(&dashPattern, adashLength, &dashStart); +- if (*adashLength > 20) { +- *adashLength = 20; +- } +- for (i = 0; i < *adashLength; ++i) { +- dash[i] = (SplashCoord)state->transformWidth(dashPattern[i]); +- if (dash[i] < 1) { +- dash[i] = 1; +- } +- } +- *adash = dash; +- *aphase = (SplashCoord)state->transformWidth(dashStart); +-} +- +-void OPVPOutputDev::updateSplashLineDash(GfxState *state, Splash *splash) { +- int dashLength; +- SplashCoord *dash; +- SplashCoord phase; +- +- transLineDash(state, &dash, &dashLength, &phase); +- splash->setLineDash(dash, dashLength, phase); +-} +- +-void OPVPOutputDev::updateLineDash(GfxState *state) { +- int dashLength; +- SplashCoord *dash; +- SplashCoord phase; +- +- transLineDash(state, &dash, &dashLength, &phase); +- oprs->setLineDash(dash, dashLength, phase); +-} +- +-void OPVPOutputDev::updateFlatness(GfxState *state) { +- oprs->setFlatness(state->getFlatness()); +-} +- +-void OPVPOutputDev::updateLineJoin(GfxState *state) { +- oprs->setLineJoin(state->getLineJoin()); +-} +- +-void OPVPOutputDev::updateLineCap(GfxState *state) { +- oprs->setLineCap(state->getLineCap()); +-} +- +-void OPVPOutputDev::updateMiterLimit(GfxState *state) { +- oprs->setMiterLimit(state->getMiterLimit()); +-} +- +-void OPVPOutputDev::updateLineWidth(GfxState *state) { +- oprs->setLineWidth(state->getTransformedLineWidth()); +-} +- +-void OPVPOutputDev::updateFillColor(GfxState *state) { +- GfxGray gray; +- GfxRGB rgb; +- +- state->getFillGray(&gray); +- state->getFillRGB(&rgb); +- oprs->setFillPattern(getColor(gray, &rgb)); +-} +- +-void OPVPOutputDev::updateStrokeColor(GfxState *state) { +- GfxGray gray; +- GfxRGB rgb; +- +- state->getStrokeGray(&gray); +- state->getStrokeRGB(&rgb); +- oprs->setStrokePattern(getColor(gray, &rgb)); +-} +- +-#ifdef SPLASH_CMYK +-SplashPattern *OPVPOutputDev::getColor(double gray, GfxRGB *rgb, +- GfxCMYK *cmyk) { +-#else +-SplashPattern *OPVPOutputDev::getColor(GfxGray gray, GfxRGB *rgb) { +-#endif +- SplashPattern *pattern; +- SplashColor color1; +- GfxColorComp r, g, b; +- +- if (reverseVideo) { +- gray = gfxColorComp1 - gray; +- r = gfxColorComp1 - rgb->r; +- g = gfxColorComp1 - rgb->g; +- b = gfxColorComp1 - rgb->b; +- } else { +- r = rgb->r; +- g = rgb->g; +- b = rgb->b; +- } +- +- pattern = NULL; // make gcc happy +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- color1[0] = colToByte(gray); +- pattern = new SplashSolidColor(color1); +- break; +- case splashModeRGB8: +- color1[0] = colToByte(r); +- color1[1] = colToByte(g); +- color1[2] = colToByte(b); +- pattern = new SplashSolidColor(color1); +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- color[0] = colToByte(cmyk->c); +- color[1] = colToByte(cmyk->m); +- color[2] = colToByte(cmyk->y); +- color[3] = colToByte(cmyk->k); +- pattern = new SplashSolidColor(color); +- break; +-#endif +- default: +- opvpError(-1, "no supported color mode"); +- break; +- } +- +- return pattern; +-} +- +-void OPVPOutputDev::updateFont(GfxState *state) { +- needFontUpdate = true; +-} +- +-void OPVPOutputDev::doUpdateFont(GfxState *state) { +- GfxFont *gfxFont; +- GfxFontType fontType; +- SplashOutFontFileID *id; +- SplashFontFile *fontFile; +- SplashFontSrc *fontsrc = NULL; +- const char *fontName = "(unnamed)"; +- FoFiTrueType *ff; +- Ref embRef; +- Object refObj, strObj; +- GooString *fileName; +- char *tmpBuf; +- int tmpBufLen; +- int *codeToGID; +- double m11, m12, m21, m22; +- int n; +- int faceIndex = 0; +- bool recreateFont = false; +- +- needFontUpdate = false; +- font = NULL; +- fileName = NULL; +- tmpBuf = NULL; +- +- if (!(gfxFont = state->getFont())) { +- goto err1; +- } +- fontType = gfxFont->getType(); +- if (fontType == fontType3) { +- goto err1; +- } +- +- // check the font file cache +- id = new SplashOutFontFileID(gfxFont->getID()); +- if ((fontFile = fontEngine->getFontFile(id))) { +- delete id; +- +- } else { +- if (gfxFont->getName()) { +-#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 +- fontName = gfxFont->getName()->getCString(); +-#else +- fontName = gfxFont->getName()->c_str(); +-#endif +- } +- +- // if there is an embedded font, write it to disk +- if (gfxFont->getEmbeddedFontID(&embRef)) { +- tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); +- if (! tmpBuf) +- goto err2; +- +- } else { +- SysFontType sftype; +- fileName = globalParams->findSystemFontFile(gfxFont,&sftype, +- &faceIndex, NULL); +- if (fileName == 0) { +- opvpError(-1, "Couldn't find a font for '%s'", fontName); +- goto err2; +- } +- switch (sftype) { +- case sysFontPFA: +- case sysFontPFB: +- fontType = gfxFont->isCIDFont() ? fontCIDType0 : fontType1; +- break; +- case sysFontTTF: +- case sysFontTTC: +- fontType = gfxFont->isCIDFont() ? fontCIDType2 : fontTrueType; +- break; +- } +- } +- +- fontsrc = new SplashFontSrc; +- if (fileName) +- fontsrc->setFile(fileName, false); +- else +- fontsrc->setBuf(tmpBuf, tmpBufLen, true); +- +- // load the font file +- switch (fontType) { +- case fontType1: +- if (!(fontFile = fontEngine->loadType1Font( +- id, +- fontsrc, +- (const char **) +- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontType1C: +- if (!(fontFile = fontEngine->loadType1CFont( +- id, +- fontsrc, +- (const char **) +- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontType1COT: +- if (!(fontFile = fontEngine->loadOpenTypeT1CFont( +- id, +- fontsrc, +- (const char **) +- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontTrueTypeOT: +- case fontTrueType: +- if (fileName) +-#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 +- ff = FoFiTrueType::load(fileName->getCString()); +-#else +- ff = FoFiTrueType::load(fileName->c_str()); +-#endif +- else +- ff = FoFiTrueType::make(tmpBuf, tmpBufLen); +- if (ff) { +- codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff); +- n = 256; +- delete ff; +- } else { +- codeToGID = NULL; +- n = 0; +- } +- if (!(fontFile = fontEngine->loadTrueTypeFont( +- id, +- fontsrc, +- codeToGID, n))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontCIDType0: +- case fontCIDType0C: +- if (!(fontFile = fontEngine->loadCIDFont( +- id, +- fontsrc))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontCIDType0COT: +- n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); +- if (n) { +- codeToGID = (int *)gmallocn(n, sizeof(int)); +- memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), +- n * sizeof(int)); +- } else { +- codeToGID = NULL; +- } +- if (!(fontFile = fontEngine->loadOpenTypeCFFFont( +- id, +- fontsrc,codeToGID,n))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- case fontCIDType2OT: +- case fontCIDType2: +- codeToGID = NULL; +- n = 0; +- if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { +- n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); +- if (n) { +- codeToGID = (int *)gmallocn(n, sizeof(int)); +- memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), +- n * sizeof(int)); +- } +- } else { +- if (fileName) +-#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 +- ff = FoFiTrueType::load(fileName->getCString()); +-#else +- ff = FoFiTrueType::load(fileName->c_str()); +-#endif +- else +- ff = FoFiTrueType::make(tmpBuf, tmpBufLen); +- if (! ff) +- goto err2; +- codeToGID = ((GfxCIDFont *)gfxFont)->getCodeToGIDMap(ff, &n); +- delete ff; +- } +- if (!(fontFile = fontEngine->loadTrueTypeFont( +- id, +- fontsrc, +- codeToGID, n, faceIndex))) { +- opvpError(-1, "Couldn't create a font for '%s'", fontName); +- goto err2; +- } +- break; +- default: +- // this shouldn't happen +- goto err2; +- } +- fontFile->doAdjustMatrix = true; +- } +- +- // get the font matrix +- state->getFontTransMat(&m11, &m12, &m21, &m22); +- m11 *= state->getHorizScaling(); +- m12 *= state->getHorizScaling(); +- +- // create the scaled font +- fontMat[0] = m11; fontMat[1] = m12; +- fontMat[2] = m21; fontMat[3] = m22; +- font = fontEngine->getFont(fontFile, fontMat, oprs->getMatrix()); +- +- // for substituted fonts: adjust the font matrix -- compare the +- // width of 'm' in the original font and the substituted font +- if (fontFile->doAdjustMatrix && !gfxFont->isCIDFont()) { +- double w1, w2; +- CharCode code; +- const char *name; +- for (code = 0; code < 256; ++code) { +- if ((name = ((Gfx8BitFont *)gfxFont)->getCharName(code)) && +- name[0] == 'm' && name[1] == '\0') { +- break; +- } +- } +- if (code < 256) { +- w1 = ((Gfx8BitFont *)gfxFont)->getWidth(code); +- w2 = font->getGlyphAdvance(code); +- if (!gfxFont->isSymbolic() && w2 > 0) { +- // if real font is substantially narrower than substituted +- // font, reduce the font size accordingly +- if (w1 > 0.01 && w1 < 0.9 * w2) { +- w1 /= w2; +- m11 *= w1; +- m21 *= w1; +- recreateFont = true; +- } +- } +- } +- } +- +- if (recreateFont) +- { +- fontMat[0] = m11; fontMat[1] = m12; +- fontMat[2] = m21; fontMat[3] = m22; +- font = fontEngine->getFont(fontFile, fontMat, oprs->getMatrix()); +- } +- +- if (fontsrc && !fontsrc->isFile) +- fontsrc->unref(); +- return; +- +- err2: +- delete id; +- err1: +- if (fontsrc && !fontsrc->isFile) +- fontsrc->unref(); +- return; +-} +- +-void OPVPOutputDev::stroke(GfxState *state) { +- OPVPSplashPath *path; +- GfxColorSpace *cs; +- +- /* check None separate color */ +- if ((cs = state->getStrokeColorSpace()) == NULL) return; +- if (cs->getMode() == csSeparation) { +- GooString *name; +- +- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); +- if (name == NULL) return; +- if (name->cmp("None") == 0) return; +- } +- +- path = convertPath(state, state->getPath()); +- oprs->stroke(path); +- delete path; +-} +- +-void OPVPOutputDev::fill(GfxState *state) { +- OPVPSplashPath *path; +- GfxColorSpace *cs; +- +- /* check None separate color */ +- if ((cs = state->getFillColorSpace()) == NULL) return; +- if (cs->getMode() == csSeparation) { +- GooString *name; +- +- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); +- if (name == NULL) return; +- if (name->cmp("None") == 0) return; +- } +- +- path = convertPath(state, state->getPath()); +- oprs->fill(path, false); +- delete path; +-} +- +-void OPVPOutputDev::eoFill(GfxState *state) { +- OPVPSplashPath *path; +- GfxColorSpace *cs; +- +- /* check None separate color */ +- if ((cs = state->getFillColorSpace()) == NULL) return; +- if (cs->getMode() == csSeparation) { +- GooString *name; +- +- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); +- if (name == NULL) return; +- if (name->cmp("None") == 0) return; +- } +- +- path = convertPath(state, state->getPath()); +- oprs->fill(path, true); +- delete path; +-} +- +-void OPVPOutputDev::clip(GfxState *state) { +- OPVPSplashPath *path; +- +- path = convertPath(state, state->getPath()); +- oprs->clipToPath(path, false); +- delete path; +-} +- +-void OPVPOutputDev::eoClip(GfxState *state) { +- OPVPSplashPath *path; +- +- path = convertPath(state, state->getPath()); +- oprs->clipToPath(path, true); +- delete path; +-} +- +-OPVPSplashPath *OPVPOutputDev::bitmapToPath(SplashBitmap *bitmapA, +- int width, int height) +-{ +- int x,y; +- OPVPSplashPath *path; +- int x1, x2; +- SplashColor pix; +- +- path = new OPVPSplashPath(); +- +- for (y = 0;y < height;y++) { +- for (x = 0;x < width;x++) { +- bitmapA->getPixel(x,y,pix); +- if (pix[0] == 0) { +- /* start */ +- x1 = x; +- for (x++;x < width;x++) { +- bitmapA->getPixel(x,y,pix); +- if (pix[0] != 0) { +- /* end */ +- break; +- } +- } +- x2 = x-1; +- path->moveTo(x1,y); +- path->lineTo(x2,y); +- path->lineTo(x2,(y+1)); +- path->lineTo(x1,(y+1)); +- path->close(); +- } +- } +- } +- return path; +-} +- +-void OPVPOutputDev::clipToStrokePath(GfxState *state) { +- SplashBitmap *tbitmap; +- Splash *tsplash; +- SplashPath *spath; +- OPVPSplashPath *path, *path2; +- +- // use splash for makeStrokePath +- // create dummy bitmap for creating splash +- tbitmap = new SplashBitmap(1, 1, 1, splashModeMono1, false); +- tsplash = new Splash(tbitmap, false); +- // set line parameters +- // except colors +- updateSplashLineDash(state, tsplash); +- tsplash->setLineJoin(state->getLineJoin()); +- tsplash->setLineCap(state->getLineCap()); +- tsplash->setMiterLimit(state->getMiterLimit()); +- tsplash->setLineWidth(state->getTransformedLineWidth()); +- +- path = convertPath(state, state->getPath()); +- spath = tsplash->makeStrokePath(path,0); +- path2 = new OPVPSplashPath(spath); +- delete spath; +- delete path; +- delete tsplash; +- delete tbitmap; +- oprs->clipToPath(path2, false); +- delete path2; +-} +- +-OPVPSplashPath *OPVPOutputDev::convertPath(GfxState *state, GfxPath *path) { +- OPVPSplashPath *sPath; +- GfxSubpath *subpath; +- double x1, y1, x2, y2, x3, y3; +- int i, j; +- +- sPath = new OPVPSplashPath(); +- for (i = 0; i < path->getNumSubpaths(); ++i) { +- subpath = path->getSubpath(i); +- if (subpath->getNumPoints() > 0) { +- state->transform(subpath->getX(0), subpath->getY(0), &x1, &y1); +- sPath->moveTo((SplashCoord)x1, (SplashCoord)y1); +- j = 1; +- while (j < subpath->getNumPoints()) { +- if (subpath->getCurve(j)) { +- state->transform(subpath->getX(j), subpath->getY(j), &x1, &y1); +- state->transform(subpath->getX(j+1), subpath->getY(j+1), &x2, &y2); +- state->transform(subpath->getX(j+2), subpath->getY(j+2), &x3, &y3); +- sPath->curveTo((SplashCoord)x1, (SplashCoord)y1, +- (SplashCoord)x2, (SplashCoord)y2, +- (SplashCoord)x3, (SplashCoord)y3); +- j += 3; +- } else { +- state->transform(subpath->getX(j), subpath->getY(j), &x1, &y1); +- sPath->lineTo((SplashCoord)x1, (SplashCoord)y1); +- ++j; +- } +- } +- if (subpath->isClosed()) { +- sPath->close(); +- } +- } +- } +- return sPath; +-} +- +-void OPVPOutputDev::drawChar(GfxState *state, double x, double y, +- double dx, double dy, +- double originX, double originY, +- CharCode code, int nBytes, +- Unicode *u, int uLen) { +- double x1, y1; +- SplashPath *spath; +- OPVPSplashPath *path; +- int render; +- +- // check for invisible text -- this is used by Acrobat Capture +- render = state->getRender(); +- if (render == 3) { +- return; +- } +- +- if (needFontUpdate) { +- doUpdateFont(state); +- } +- if (!font) { +- return; +- } +- +- x -= originX; +- y -= originY; +- state->transform(x,y,&x1,&y1); +- +- // fill +- if (!(render & 1)) { +- oprs->fillChar((SplashCoord)x1, (SplashCoord)y1, code, font, u, fontMat); +- } +- +- // stroke +- if ((render & 3) == 1 || (render & 3) == 2) { +- if ((spath = font->getGlyphPath(code))) { +- path = new OPVPSplashPath(spath); +- delete spath; +- path->closeAllSubPath(); +- path->offset((SplashCoord)x1, (SplashCoord)y1); +- oprs->stroke(path); +- delete path; +- } else { +- opvpError(-1,"No glyph outline infomation"); +- } +- } +- +- // clip +- if (render & 4) { +- if ((spath = font->getGlyphPath(code)) != NULL) { +- path = new OPVPSplashPath(spath); +- delete spath; +- path->offset((SplashCoord)x1, (SplashCoord)y1); +- if (textClipPath) { +- textClipPath->append(path); +- delete path; +- } else { +- textClipPath = path; +- } +- } else { +- opvpError(-1,"No glyph outline infomation"); +- } +- } +-} +- +-bool OPVPOutputDev::beginType3Char(GfxState *state, double x, double y, +- double dx, double dy, +- CharCode code, Unicode *u, int uLen) { +- /* In a vector mode, cache is not needed */ +- return false; +-} +- +-void OPVPOutputDev::endType3Char(GfxState *state) { +- /* In a vector mode, cache is not needed */ +- /* do nothing */ +-} +- +-void OPVPOutputDev::type3D0(GfxState *state, double wx, double wy) { +- /* In a vector mode, cache is not needed */ +- /* do nothing */ +-} +- +-void OPVPOutputDev::type3D1(GfxState *state, double wx, double wy, +- double llx, double lly, double urx, double ury) { +-} +- +-void OPVPOutputDev::drawType3Glyph(T3FontCache *t3Font, +- T3FontCacheTag *tag, Guchar *data, +- double x, double y) { +- SplashGlyphBitmap glyph; +- +- glyph.x = -t3Font->glyphX; +- glyph.y = -t3Font->glyphY; +- glyph.w = t3Font->glyphW; +- glyph.h = t3Font->glyphH; +- glyph.aa = colorMode != splashModeMono1; +- glyph.data = data; +- glyph.freeData = false; +- oprs->fillGlyph((SplashCoord)x, (SplashCoord)y, &glyph); +-} +- +-void OPVPOutputDev::endTextObject(GfxState *state) { +- if (textClipPath) { +- oprs->clipToPath(textClipPath, false); +- delete textClipPath; +- textClipPath = NULL; +- } +-} +- +-struct SplashOutImageMaskData { +- ImageStream *imgStr; +- bool invert; +- int width, height, y; +-}; +- +-bool OPVPOutputDev::imageMaskSrc(void *data, SplashColorPtr line) { +- SplashOutImageMaskData *imgMaskData = (SplashOutImageMaskData *)data; +- Guchar *p; +- SplashColorPtr q; +- int x; +- +- if (imgMaskData->y == imgMaskData->height) { +- return false; +- } +- for (x = 0, p = imgMaskData->imgStr->getLine(), q = line; +- x < imgMaskData->width; +- ++x) { +- *q++ = *p++ ^ imgMaskData->invert; +- } +- ++imgMaskData->y; +- return true; +-} +- +-void OPVPOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, +- int width, int height, bool invert, +- bool interpolate, +- bool inlineImg) { +- const double *ctm; +- SplashCoord mat[6]; +- SplashOutImageMaskData imgMaskData; +- +- ctm = state->getCTM(); +- mat[0] = ctm[0]; +- mat[1] = ctm[1]; +- mat[2] = -ctm[2]; +- mat[3] = -ctm[3]; +- mat[4] = ctm[2] + ctm[4]; +- mat[5] = ctm[3] + ctm[5]; +- +- imgMaskData.imgStr = new ImageStream(str, width, 1, 1); +- imgMaskData.imgStr->reset(); +- imgMaskData.invert = invert ? 0 : 1; +- imgMaskData.width = width; +- imgMaskData.height = height; +- imgMaskData.y = 0; +- +- oprs->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, +- t3GlyphStack != NULL); +- if (inlineImg) { +- while (imgMaskData.y < height) { +- imgMaskData.imgStr->getLine(); +- ++imgMaskData.y; +- } +- } +- +- delete imgMaskData.imgStr; +-} +- +-struct SplashOutImageData { +- ImageStream *imgStr; +- GfxImageColorMap *colorMap; +- SplashColorPtr lookup; +- int *maskColors; +- SplashColorMode colorMode; +- int width, height, y; +-}; +- +-bool OPVPOutputDev::imageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine) +-{ +- SplashOutImageData *imgData = (SplashOutImageData *)data; +- Guchar *p; +- SplashColorPtr q, col; +- GfxRGB rgb; +- GfxGray gray; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- int nComps, x; +- +- if (imgData->y == imgData->height) { +- return false; +- } +- +- nComps = imgData->colorMap->getNumPixelComps(); +- +- if (imgData->lookup) { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, ++p) { +- *q++ = imgData->lookup[*p]; +- } +- break; +- case splashModeRGB8: +- case splashModeBGR8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, ++p) { +- col = &imgData->lookup[3 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- } +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, ++p) { +- col = &imgData->lookup[4 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- *q++ = col[3]; +- } +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } else { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- imgData->colorMap->getGray(p, &gray); +- *q++ = colToByte(gray); +- } +- break; +- case splashModeRGB8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = colToByte(rgb.r); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.b); +- } +- break; +- case splashModeBGR8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = colToByte(rgb.b); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.r); +- } +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- imgData->colorMap->getCMYK(p, &cmyk); +- *q++ = colToByte(cmyk.c); +- *q++ = colToByte(cmyk.m); +- *q++ = colToByte(cmyk.y); +- *q++ = colToByte(cmyk.k); +- } +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- +- ++imgData->y; +- return true; +-} +- +-bool OPVPOutputDev::alphaImageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine) { +- SplashOutImageData *imgData = (SplashOutImageData *)data; +- Guchar *p; +- SplashColorPtr q, col; +- GfxRGB rgb; +- GfxGray gray; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- Guchar alpha; +- int nComps, x, i; +- +- if (imgData->y == imgData->height) { +- return false; +- } +- +- nComps = imgData->colorMap->getNumPixelComps(); +- +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- alpha = 0; +- for (i = 0; i < nComps; ++i) { +- if (p[i] < imgData->maskColors[2*i] || +- p[i] > imgData->maskColors[2*i+1]) { +- alpha = 0xff; +- break; +- } +- } +- if (imgData->lookup) { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- *q++ = alpha; +- *q++ = imgData->lookup[*p]; +- break; +- case splashModeRGB8: +- *q++ = alpha; +- col = &imgData->lookup[3 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- break; +- case splashModeBGR8: +- col = &imgData->lookup[3 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- *q++ = alpha; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- *q++ = alpha; +- col = &imgData->lookup[4 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- *q++ = col[3]; +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } else { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- imgData->colorMap->getGray(p, &gray); +- *q++ = alpha; +- *q++ = colToByte(gray); +- break; +- case splashModeRGB8: +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = alpha; +- *q++ = colToByte(rgb.r); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.b); +- break; +- case splashModeBGR8: +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = colToByte(rgb.b); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.r); +- *q++ = alpha; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- imgData->colorMap->getCMYK(p, &cmyk); +- *q++ = alpha; +- *q++ = colToByte(cmyk.c); +- *q++ = colToByte(cmyk.m); +- *q++ = colToByte(cmyk.y); +- *q++ = colToByte(cmyk.k); +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- } +- +- ++imgData->y; +- return true; +-} +- +-void OPVPOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, +- int width, int height, +- GfxImageColorMap *colorMap, +- bool interpolate, +- int *maskColors, bool inlineImg) { +- const double *ctm; +- SplashCoord mat[6]; +- SplashOutImageData imgData; +- SplashColorMode srcMode; +- SplashImageSource src; +- GfxGray gray; +- GfxRGB rgb; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- Guchar pix; +- int n, i; +- +- ctm = state->getCTM(); +- mat[0] = ctm[0]; +- mat[1] = ctm[1]; +- mat[2] = -ctm[2]; +- mat[3] = -ctm[3]; +- mat[4] = ctm[2] + ctm[4]; +- mat[5] = ctm[3] + ctm[5]; +- +- imgData.imgStr = new ImageStream(str, width, +- colorMap->getNumPixelComps(), +- colorMap->getBits()); +- imgData.imgStr->reset(); +- imgData.colorMap = colorMap; +- imgData.maskColors = maskColors; +- imgData.colorMode = colorMode; +- imgData.width = width; +- imgData.height = height; +- imgData.y = 0; +- +- // special case for one-channel (monochrome/gray/separation) images: +- // build a lookup table here +- imgData.lookup = NULL; +- if (colorMap->getNumPixelComps() == 1) { +- n = 1 << colorMap->getBits(); +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,1); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getGray(&pix, &gray); +- imgData.lookup[i] = colToByte(gray); +- } +- break; +- case splashModeRGB8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.r); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.b); +- } +- break; +- case splashModeBGR8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.b); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.r); +- } +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,4); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getCMYK(&pix, &cmyk); +- imgData.lookup[4*i] = colToByte(cmyk.c); +- imgData.lookup[4*i+1] = colToByte(cmyk.m); +- imgData.lookup[4*i+2] = colToByte(cmyk.y); +- imgData.lookup[4*i+3] = colToByte(cmyk.k); +- } +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- +- if (colorMode == splashModeMono1) { +- srcMode = splashModeMono8; +- } else { +- srcMode = colorMode; +- } +- src = maskColors ? &alphaImageSrc : &imageSrc; +- oprs->drawImage(src, &imgData, srcMode, maskColors ? true : false, +- width, height, mat); +- if (inlineImg) { +- while (imgData.y < height) { +- imgData.imgStr->getLine(); +- ++imgData.y; +- } +- } +- +- gfree(imgData.lookup); +- delete imgData.imgStr; +- str->close(); +-} +- +-struct SplashOutMaskedImageData { +- ImageStream *imgStr; +- GfxImageColorMap *colorMap; +- SplashBitmap *mask; +- SplashColorPtr lookup; +- SplashColorMode colorMode; +- int width, height, y; +-}; +- +-bool OPVPOutputDev::maskedImageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine) { +- SplashOutMaskedImageData *imgData = (SplashOutMaskedImageData *)data; +- Guchar *p; +- SplashColor maskColor; +- SplashColorPtr q, col; +- GfxRGB rgb; +- GfxGray gray; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- Guchar alpha; +- int nComps, x; +- +- if (imgData->y == imgData->height) { +- return false; +- } +- +- nComps = imgData->colorMap->getNumPixelComps(); +- +- for (x = 0, p = imgData->imgStr->getLine(), q = line; +- x < imgData->width; +- ++x, p += nComps) { +- imgData->mask->getPixel(x, imgData->y, maskColor); +- alpha = maskColor[0] ? 0xff : 0x00; +- if (imgData->lookup) { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- *q++ = alpha; +- *q++ = imgData->lookup[*p]; +- break; +- case splashModeRGB8: +- *q++ = alpha; +- col = &imgData->lookup[3 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- break; +- case splashModeBGR8: +- col = &imgData->lookup[3 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- *q++ = alpha; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- *q++ = alpha; +- col = &imgData->lookup[4 * *p]; +- *q++ = col[0]; +- *q++ = col[1]; +- *q++ = col[2]; +- *q++ = col[3]; +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } else { +- switch (imgData->colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- imgData->colorMap->getGray(p, &gray); +- *q++ = alpha; +- *q++ = colToByte(gray); +- break; +- case splashModeRGB8: +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = alpha; +- *q++ = colToByte(rgb.r); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.b); +- break; +- case splashModeBGR8: +- imgData->colorMap->getRGB(p, &rgb); +- *q++ = colToByte(rgb.b); +- *q++ = colToByte(rgb.g); +- *q++ = colToByte(rgb.r); +- *q++ = alpha; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- imgData->colorMap->getCMYK(p, &cmyk); +- *q++ = alpha; +- *q++ = colToByte(cmyk.c); +- *q++ = colToByte(cmyk.m); +- *q++ = colToByte(cmyk.y); +- *q++ = colToByte(cmyk.k); +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- } +- +- ++imgData->y; +- return true; +-} +- +-void OPVPOutputDev::drawMaskedImage(GfxState *state, Object *ref, +- Stream *str, int width, int height, +- GfxImageColorMap *colorMap, +- bool interpolate, +- Stream *maskStr, int maskWidth, +- int maskHeight, bool maskInvert, +- bool maskInterpolate) { +- const double *ctm; +- SplashCoord mat[6]; +- SplashOutMaskedImageData imgData; +- SplashOutImageMaskData imgMaskData; +- SplashColorMode srcMode; +- SplashBitmap *maskBitmap; +- Splash *maskSplash; +- SplashColor maskColor; +- GfxGray gray; +- GfxRGB rgb; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- Guchar pix; +- int n, i; +- +- //----- scale the mask image to the same size as the source image +- +- mat[0] = (SplashCoord)width; +- mat[1] = 0; +- mat[2] = 0; +- mat[3] = (SplashCoord)height; +- mat[4] = 0; +- mat[5] = 0; +- imgMaskData.imgStr = new ImageStream(maskStr, maskWidth, 1, 1); +- imgMaskData.imgStr->reset(); +- imgMaskData.invert = maskInvert ? 0 : 1; +- imgMaskData.width = maskWidth; +- imgMaskData.height = maskHeight; +- imgMaskData.y = 0; +- maskBitmap = new SplashBitmap(width, height, 1, splashModeMono1, false); +- maskSplash = new Splash(maskBitmap, false); +- maskColor[0] = 0; +- maskSplash->clear(maskColor); +- maskColor[0] = 1; +- maskSplash->setFillPattern(new SplashSolidColor(maskColor)); +- maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData, +- maskWidth, maskHeight, mat, false); +- delete imgMaskData.imgStr; +- maskStr->close(); +- delete maskSplash; +- +- //----- draw the source image +- +- ctm = state->getCTM(); +- mat[0] = ctm[0]; +- mat[1] = ctm[1]; +- mat[2] = -ctm[2]; +- mat[3] = -ctm[3]; +- mat[4] = ctm[2] + ctm[4]; +- mat[5] = ctm[3] + ctm[5]; +- +- imgData.imgStr = new ImageStream(str, width, +- colorMap->getNumPixelComps(), +- colorMap->getBits()); +- imgData.imgStr->reset(); +- imgData.colorMap = colorMap; +- imgData.mask = maskBitmap; +- imgData.colorMode = colorMode; +- imgData.width = width; +- imgData.height = height; +- imgData.y = 0; +- +- // special case for one-channel (monochrome/gray/separation) images: +- // build a lookup table here +- imgData.lookup = NULL; +- if (colorMap->getNumPixelComps() == 1) { +- n = 1 << colorMap->getBits(); +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,1); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getGray(&pix, &gray); +- imgData.lookup[i] = colToByte(gray); +- } +- break; +- case splashModeRGB8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.r); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.b); +- } +- break; +- case splashModeBGR8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.b); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.r); +- } +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,4); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getCMYK(&pix, &cmyk); +- imgData.lookup[4*i] = colToByte(cmyk.c); +- imgData.lookup[4*i+1] = colToByte(cmyk.m); +- imgData.lookup[4*i+2] = colToByte(cmyk.y); +- imgData.lookup[4*i+3] = colToByte(cmyk.k); +- } +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- srcMode = splashModeMono8; +- break; +- case splashModeRGB8: +- srcMode = splashModeRGB8; +- break; +- case splashModeBGR8: +- srcMode = splashModeBGR8; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- srcMode = splashModeCMYK8; +- break; +-#endif +- default: +- //~ unimplemented +- srcMode = splashModeRGB8; +- break; +- } +- oprs->drawImage(&maskedImageSrc, &imgData, srcMode, true, +- width, height, mat); +- +- delete maskBitmap; +- gfree(imgData.lookup); +- delete imgData.imgStr; +- str->close(); +-} +- +-void OPVPOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, +- Stream *str, int width, int height, +- GfxImageColorMap *colorMap, +- bool interpolate, +- Stream *maskStr, +- int maskWidth, int maskHeight, +- GfxImageColorMap *maskColorMap, +- bool maskInterpolate) { +- const double *ctm; +- SplashCoord mat[6]; +- SplashOutImageData imgData; +- SplashOutImageData imgMaskData; +- SplashColorMode srcMode; +- SplashBitmap *maskBitmap; +- Splash *maskSplash; +- SplashColor maskColor; +- GfxGray gray; +- GfxRGB rgb; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- Guchar pix; +- int n, i; +- +- ctm = state->getCTM(); +- mat[0] = ctm[0]; +- mat[1] = ctm[1]; +- mat[2] = -ctm[2]; +- mat[3] = -ctm[3]; +- mat[4] = ctm[2] + ctm[4]; +- mat[5] = ctm[3] + ctm[5]; +- +- //----- set up the soft mask +- +- imgMaskData.imgStr = new ImageStream(maskStr, maskWidth, +- maskColorMap->getNumPixelComps(), +- maskColorMap->getBits()); +- imgMaskData.imgStr->reset(); +- imgMaskData.colorMap = maskColorMap; +- imgMaskData.maskColors = NULL; +- imgMaskData.colorMode = splashModeMono8; +- imgMaskData.width = maskWidth; +- imgMaskData.height = maskHeight; +- imgMaskData.y = 0; +- n = 1 << maskColorMap->getBits(); +- imgMaskData.lookup = (SplashColorPtr)gmallocn(n,1); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- maskColorMap->getGray(&pix, &gray); +- imgMaskData.lookup[i] = colToByte(gray); +- } +- maskBitmap = new SplashBitmap(maskWidth,maskHeight, +- 1, splashModeMono8, false); +- maskSplash = new Splash(maskBitmap, false); +- maskColor[0] = 0; +- maskSplash->clear(maskColor); +-#if POPPLER_VERSION_MAJOR <= 0 && (POPPLER_VERSION_MINOR <= 20 || (POPPLER_VERSION_MINOR == 21 && POPPLER_VERSION_MICRO <= 2)) +- maskSplash->drawImage(&imageSrc, &imgMaskData, +- splashModeMono8, false, maskWidth, maskHeight, mat); +-#elif POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33 +- maskSplash->drawImage(&imageSrc, &imgMaskData, +- splashModeMono8, false, maskWidth, maskHeight, +- mat,false); +-#else +- maskSplash->drawImage(&imageSrc, 0, &imgMaskData, +- splashModeMono8, false, maskWidth, maskHeight, +- mat,false); +-#endif +- delete imgMaskData.imgStr; +- maskStr->close(); +- gfree(imgMaskData.lookup); +- delete maskSplash; +- oprs->setSoftMask(maskBitmap); +- +- //----- draw the source image +- +- imgData.imgStr = new ImageStream(str, width, +- colorMap->getNumPixelComps(), +- colorMap->getBits()); +- imgData.imgStr->reset(); +- imgData.colorMap = colorMap; +- imgData.maskColors = NULL; +- imgData.colorMode = colorMode; +- imgData.width = width; +- imgData.height = height; +- imgData.y = 0; +- +- // special case for one-channel (monochrome/gray/separation) images: +- // build a lookup table here +- imgData.lookup = NULL; +- if (colorMap->getNumPixelComps() == 1) { +- n = 1 << colorMap->getBits(); +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,1); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getGray(&pix, &gray); +- imgData.lookup[i] = colToByte(gray); +- } +- break; +- case splashModeRGB8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.r); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.b); +- } +- break; +- case splashModeBGR8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,3); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getRGB(&pix, &rgb); +- imgData.lookup[3*i] = colToByte(rgb.b); +- imgData.lookup[3*i+1] = colToByte(rgb.g); +- imgData.lookup[3*i+2] = colToByte(rgb.r); +- } +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- imgData.lookup = (SplashColorPtr)gmallocn(n,4); +- for (i = 0; i < n; ++i) { +- pix = (Guchar)i; +- colorMap->getCMYK(&pix, &cmyk); +- imgData.lookup[4*i] = colToByte(cmyk.c); +- imgData.lookup[4*i+1] = colToByte(cmyk.m); +- imgData.lookup[4*i+2] = colToByte(cmyk.y); +- imgData.lookup[4*i+3] = colToByte(cmyk.k); +- } +- break; +-#endif +- default: +- //~ unimplemented +- break; +- } +- } +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- srcMode = splashModeMono8; +- break; +- case splashModeRGB8: +- srcMode = splashModeRGB8; +- break; +- case splashModeBGR8: +- srcMode = splashModeBGR8; +- break; +-#if SPLASH_CMYK +- case splashModeCMYK8: +- srcMode = splashModeCMYK8; +- break; +-#endif +- default: +- //~ unimplemented +- srcMode = splashModeRGB8; +- break; +- } +- oprs->drawImage(&imageSrc, &imgData, srcMode, false, width, height, mat); +- +- oprs->setSoftMask(NULL); +- gfree(imgData.lookup); +- delete imgData.imgStr; +- str->close(); +-} +- +-int OPVPOutputDev::getBitmapWidth() { +- return bitmap->getWidth(); +-} +- +-int OPVPOutputDev::getBitmapHeight() { +- return bitmap->getHeight(); +-} +- +-void OPVPOutputDev::xorRectangle(int x0, int y0, int x1, int y1, +- SplashPattern *pattern) { +- /* no need in printing */ +-} +- +-void OPVPOutputDev::setFillColor(int r, int g, int b) { +- GfxRGB rgb; +- GfxGray gray; +-#if SPLASH_CMYK +- GfxCMYK cmyk; +-#endif +- +- rgb.r = byteToCol(r); +- rgb.g = byteToCol(g); +- rgb.b = byteToCol(b); +- gray = (GfxColorComp)(0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.g + 0.5); +- if (gray > gfxColorComp1) { +- gray = gfxColorComp1; +- } +-#if SPLASH_CMYK +- cmyk.c = gfxColorComp1 - rgb.r; +- cmyk.m = gfxColorComp1 - rgb.g; +- cmyk.y = gfxColorComp1 - rgb.b; +- cmyk.k = 0; +- oprs->setFillPattern(getColor(gray, &rgb, &cmyk)); +-#else +- oprs->setFillPattern(getColor(gray, &rgb)); +-#endif +-} +- +-int OPVPOutputDev::OPVPStartJob(char *jobInfo) +-{ +- return oprs->OPVPStartJob(jobInfo); +-} +- +-int OPVPOutputDev::OPVPEndJob() +-{ +- return oprs->OPVPEndJob(); +-} +- +-int OPVPOutputDev::OPVPStartDoc(char *docInfo) +-{ +- return oprs->OPVPStartDoc(docInfo); +-} +- +-int OPVPOutputDev::OPVPEndDoc() +-{ +- return oprs->OPVPEndDoc(); +-} +- +-int OPVPOutputDev::OPVPStartPage(char *pageInfo, +- int rasterWidth, int rasterHeight) +-{ +- paperWidth = rasterWidth; +- paperHeight = rasterHeight; +- return oprs->OPVPStartPage(pageInfo,rasterWidth); +-} +- +-int OPVPOutputDev::OPVPEndPage() +-{ +- return oprs->OPVPEndPage(); +-} +- +-int OPVPOutputDev::outSlice() +-{ +- return oprs->outSlice(); +-} +- +-void OPVPOutputDev::psXObject(Stream *psStream, Stream *level1Stream) +-{ +- opvpError(-1,"psXObject is found, but it is not supported"); +-} +diff --git a/filter/pdftoopvp/OPVPOutputDev.h b/filter/pdftoopvp/OPVPOutputDev.h +deleted file mode 100644 +index f3d0825..0000000 +--- a/filter/pdftoopvp/OPVPOutputDev.h ++++ /dev/null +@@ -1,250 +0,0 @@ +-//======================================================================== +-// +-// OPVPOutputDev.h +-// +-// Copyright 2005 AXE,Inc. +-// +-//======================================================================== +- +-#ifndef OPVPOUTPUTDEV_H +-#define OPVPOUTPUTDEV_H +- +-#include <config.h> +- +-#ifdef USE_GCC_PRAGMAS +-#pragma interface +-#endif +- +-#include "goo/gtypes.h" +-#include "splash/SplashTypes.h" +-#include "config.h" +-#include "OutputDev.h" +-#include "GfxState.h" +-#include "GfxFont.h" +- +-class GfxState; +-class GfxPath; +-class Gfx8BitFont; +-class SplashBitmap; +-class OPRS; +-class OPVPSplashPath; +-class SplashPattern; +-class SplashFontEngine; +-class SplashFont; +-class T3FontCache; +-struct T3FontCacheTag; +-struct T3GlyphStack; +-struct GfxRGB; +- +-//------------------------------------------------------------------------ +- +-// number of Type 3 fonts to cache +-#define splashOutT3FontCacheSize 8 +- +-//------------------------------------------------------------------------ +-// OPVPOutputDev +-//------------------------------------------------------------------------ +- +-class OPVPOutputDev: public OutputDev { +-public: +- +- // Constructor. +- OPVPOutputDev(); +- +- // Second Constructor +- int init(SplashColorMode colorModeA, bool colorProfile, bool reverseVideoA, +- SplashColor paperColorA, +- const char *driverName, int outputFD, +- const char *printerModel, +- int nOptions, +- const char *optionKeys[], const char *optionVals[]); +- +- // Destructor. +- virtual ~OPVPOutputDev(); +- +- //----- get info about output device +- +- // Does this device use upside-down coordinates? +- // (Upside-down means (0,0) is the top left corner of the page.) +- virtual bool upsideDown() { return true; } +- +- // Does this device use drawChar() or drawString()? +- virtual bool useDrawChar() { return true; } +- +- // Does this device use beginType3Char/endType3Char? Otherwise, +- // text in Type 3 fonts will be drawn with drawChar/drawString. +- virtual bool interpretType3Chars() { return true; } +- +- //----- initialization and control +- +- // Start a page. +- virtual void startPage(int pageNum, GfxState *state); +- +- // End a page. +- virtual void endPage(); +- +- //----- save/restore graphics state +- virtual void saveState(GfxState *state); +- virtual void restoreState(GfxState *state); +- +- //----- update graphics state +- virtual void updateAll(GfxState *state); +- virtual void updateCTM(GfxState *state, double m11, double m12, +- double m21, double m22, double m31, double m32); +- virtual void updateLineDash(GfxState *state); +- virtual void updateFlatness(GfxState *state); +- virtual void updateLineJoin(GfxState *state); +- virtual void updateLineCap(GfxState *state); +- virtual void updateMiterLimit(GfxState *state); +- virtual void updateLineWidth(GfxState *state); +- virtual void updateFillColor(GfxState *state); +- virtual void updateStrokeColor(GfxState *state); +- +- //----- update text state +- virtual void updateFont(GfxState *state); +- +- //----- path painting +- virtual void stroke(GfxState *state); +- virtual void fill(GfxState *state); +- virtual void eoFill(GfxState *state); +- +- //----- path clipping +- virtual void clip(GfxState *state); +- virtual void eoClip(GfxState *state); +- virtual void clipToStrokePath(GfxState *state); +- +- //----- text drawing +- virtual void drawChar(GfxState *state, double x, double y, +- double dx, double dy, +- double originX, double originY, +- CharCode code, int nBytes, Unicode *u, int uLen); +- virtual bool beginType3Char(GfxState *state, double x, double y, +- double dx, double dy, +- CharCode code, Unicode *u, int uLen); +- virtual void endType3Char(GfxState *state); +- virtual void endTextObject(GfxState *state); +- +- //----- image drawing +- virtual void drawImageMask(GfxState *state, Object *ref, Stream *str, +- int width, int height, bool invert, +- bool interpolate, +- bool inlineImg); +- virtual void drawImage(GfxState *state, Object *ref, Stream *str, +- int width, int height, GfxImageColorMap *colorMap, +- bool interpolate, +- int *maskColors, bool inlineImg); +- virtual void drawMaskedImage(GfxState *state, Object *ref, Stream *str, +- int width, int height, +- GfxImageColorMap *colorMap, +- bool interpolate, +- Stream *maskStr, int maskWidth, int maskHeight, +- bool maskInvert, bool maskeInterpolate); +- virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, +- int width, int height, +- GfxImageColorMap *colorMap, +- bool interpolate, +- Stream *maskStr, +- int maskWidth, int maskHeight, +- GfxImageColorMap *maskColorMap, +- bool maskInterpolate); +- +- //----- Type 3 font operators +- virtual void type3D0(GfxState *state, double wx, double wy); +- virtual void type3D1(GfxState *state, double wx, double wy, +- double llx, double lly, double urx, double ury); +- +- //----- special access +- +- // Called to indicate that a new PDF document has been loaded. +- void startDoc(XRef *xrefA); +- +- bool isReverseVideo() { return reverseVideo; } +- +- // Get the bitmap and its size. +- SplashBitmap *getBitmap() { return bitmap; } +- int getBitmapWidth(); +- int getBitmapHeight(); +- +- // Get the Splash object. +- OPRS *getOPRS() { return oprs; } +- +- // XOR a rectangular region in the bitmap with <pattern>. <pattern> +- // is passed to Splash::setFillPattern, so it should not be used +- // after calling this function. +- void xorRectangle(int x0, int y0, int x1, int y1, SplashPattern *pattern); +- +- // Set the Splash fill color. +- void setFillColor(int r, int g, int b); +- +- void setUnderlayCbk(void (*cbk)(void *data), void *data) +- { underlayCbk = cbk; underlayCbkData = data; } +- +- int OPVPStartJob(char *jobInfo); +- int OPVPEndJob(); +- int OPVPStartDoc(char *docInfo); +- int OPVPEndDoc(); +- int OPVPStartPage(char *pageInfo, int rasterWidth, int rasterHeight); +- int OPVPEndPage(); +- int outSlice(); +- virtual void psXObject(Stream *psStream, Stream *level1Stream); +- void setScale(double w, double h, double leftMarginA, double bottomMarginA, +- int rotateA, int yoffsetA, int sliceHeightA); +- +-private: +- +- SplashPattern *getColor(GfxGray gray, GfxRGB *rgb); +- OPVPSplashPath *convertPath(GfxState *state, GfxPath *path); +- void drawType3Glyph(T3FontCache *t3Font, +- T3FontCacheTag *tag, Guchar *data, +- double x, double y); +- void patternFillChar(GfxState *state, +- double x, double y, CharCode code); +- +- static bool imageMaskSrc(void *data, SplashColorPtr line); +- static bool imageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine); +- static bool alphaImageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine); +- static bool maskedImageSrc(void *data, SplashColorPtr line, +- Guchar *alphaLine); +- +- OPVPSplashPath *bitmapToPath(SplashBitmap *bitmapA, int width, int height); +- void closeAllSubPath(OPVPSplashPath *path); +- void patternFillImageMask(GfxState *state, +- SplashImageMaskSource src, void *srcData, int w, int h, SplashCoord *mat); +- void doUpdateFont(GfxState *state); +- void transLineDash(GfxState *state, SplashCoord **adash, +- int *adashLength, SplashCoord *aphase); +- void updateSplashLineDash(GfxState *state, Splash *splash); +- +- SplashColorMode colorMode; +- bool reverseVideo; // reverse video mode +- SplashColor paperColor; // paper color +- +- XRef *xref; // xref table for current document +- +- SplashBitmap *bitmap; +- OPRS *oprs; +- SplashFontEngine *fontEngine; +- +- T3FontCache * // Type 3 font cache +- t3FontCache[splashOutT3FontCacheSize]; +- int nT3Fonts; // number of valid entries in t3FontCache +- T3GlyphStack *t3GlyphStack; // Type 3 glyph context stack +- +- SplashFont *font; // current font +- bool needFontUpdate; // set when the font needs to be updated +- OPVPSplashPath *textClipPath; // clipping path built with text object +- +- void (*underlayCbk)(void *data); +- void *underlayCbkData; +- double fontMat[4]; +- double scaleWidth, scaleHeight; +- int paperWidth, paperHeight; +- double leftMargin, bottomMargin; +- int rotate; +- int yoffset; +- int sliceHeight; +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPRS.cxx b/filter/pdftoopvp/oprs/OPRS.cxx +deleted file mode 100644 +index 21cabc0..0000000 +--- a/filter/pdftoopvp/oprs/OPRS.cxx ++++ /dev/null +@@ -1,604 +0,0 @@ +-//======================================================================== +-// +-// OPRS.cc +-// +-//======================================================================== +- +-#include <config.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#ifdef USE_GCC_PRAGMAS +-#pragma implementation +-#endif +- +-#include <stdlib.h> +-#include <string.h> +-#include <string.h> +-#include <dlfcn.h> +-#include <stdarg.h> +-#include <math.h> +-#if defined __OpenBSD__ +-#include <sys/endian.h> +-#if BYTE_ORDER == BIG_ENDIAN +-#define __BYTE_ORDER __BIG_ENDIAN +-#else +-#define __BYTE_ORDER __LITTLE_ENDIAN +-#endif +-#endif +- +-#include "goo/gmem.h" +-#include "splash/SplashErrorCodes.h" +-#include "splash/SplashMath.h" +-#include "splash/SplashBitmap.h" +-#include "splash/SplashState.h" +-#include "splash/SplashXPathScanner.h" +-#include "splash/SplashPattern.h" +-#include "splash/SplashScreen.h" +-#include "splash/SplashFont.h" +-#include "splash/SplashGlyphBitmap.h" +-#include "splash/Splash.h" +-#include "OPVPSplash.h" +-#include "OPVPSplashClip.h" +-#include "OPVPSplashPath.h" +-#include "OPVPSplashXPath.h" +-#include "OPRS.h" +- +-//------------------------------------------------------------------------ +-// Splash +-//------------------------------------------------------------------------ +- +-#define SPLASH(x) (rasterMode ? (splash->x) : (opvpSplash->x)) +- +-OPRS::OPRS() +-{ +- opvp = 0; +- splash = 0; +- opvpSplash = 0; +- rasterMode = false; +-} +- +-int OPRS::setBitmap(SplashBitmap *bitmapA) { +- if (splash != 0) { +- delete splash; +- } +- splash = new Splash(bitmapA, false); +- rasterMode = true; +- return 0; +-} +- +-OPRS::~OPRS() { +- if (splash != 0) { +- delete splash; +- splash = 0; +- } +- if (opvpSplash != 0) { +- opvpSplash->restoreAllDriverState(); +- delete opvpSplash; +- opvpSplash = 0; +- } +-} +- +-//------------------------------------------------------------------------ +-// state read +-//------------------------------------------------------------------------ +- +- +-SplashPattern *OPRS::getStrokePattern() { +- return SPLASH(getStrokePattern()); +-} +- +-SplashPattern *OPRS::getFillPattern() { +- return SPLASH(getFillPattern()); +-} +- +-SplashScreen *OPRS::getScreen() { +- return SPLASH(getScreen()); +-} +- +-SplashCoord OPRS::getLineWidth() { +- return SPLASH(getLineWidth()); +-} +- +-int OPRS::getLineCap() { +- return SPLASH(getLineCap()); +-} +- +-int OPRS::getLineJoin() { +- return SPLASH(getLineJoin()); +-} +- +-SplashCoord OPRS::getMiterLimit() { +- return SPLASH(getMiterLimit()); +-} +- +-SplashCoord OPRS::getFlatness() { +- return 1; +-} +- +-SplashCoord *OPRS::getLineDash() { +- return SPLASH(getLineDash()); +-} +- +-int OPRS::getLineDashLength() { +- return SPLASH(getLineDashLength()); +-} +- +-SplashCoord OPRS::getLineDashPhase() { +- return SPLASH(getLineDashPhase()); +-} +- +-OPVPSplashClip *OPRS::getClip() { +- if (rasterMode) { +- SplashClip *sclip = splash->getClip(); +- OPVPSplashClip *r = new OPVPSplashClip(sclip); +- delete sclip; +- return r; +- } else { +- return opvpSplash->getClip(); +- } +-} +- +-//------------------------------------------------------------------------ +-// state write +-//------------------------------------------------------------------------ +- +-void OPRS::setStrokePattern(SplashPattern *strokePattern) { +- SPLASH(setStrokePattern(strokePattern)); +-} +- +-void OPRS::setFillPattern(SplashPattern *fillPattern) { +- SPLASH(setFillPattern(fillPattern)); +-} +- +-void OPRS::setScreen(SplashScreen *screen) { +- SPLASH(setScreen(screen)); +-} +- +-void OPRS::setLineWidth(SplashCoord lineWidth) { +- SPLASH(setLineWidth(lineWidth)); +-} +- +-void OPRS::setMiterLimit(SplashCoord miterLimit) { +- SPLASH(setMiterLimit(miterLimit)); +-} +- +-void OPRS::setLineCap(int lineCap) { +- SPLASH(setLineCap(lineCap)); +-} +- +-void OPRS::setLineJoin(int lineJoin) { +- SPLASH(setLineJoin(lineJoin)); +-} +- +-void OPRS::setFlatness(SplashCoord flatness) { +-/* ignore flatness */ +-} +- +-void OPRS::setLineDash(SplashCoord *lineDash, int lineDashLength, +- SplashCoord lineDashPhase) { +- SPLASH(setLineDash(lineDash,lineDashLength,lineDashPhase)); +-} +- +-SplashError OPRS::clipToPath(OPVPSplashPath *path, bool eo) { +- return SPLASH(clipToPath(path,eo)); +-} +- +-//------------------------------------------------------------------------ +-// state save/restore +-//------------------------------------------------------------------------ +- +-void OPRS::saveState() { +- SPLASH(saveState()); +-} +- +-SplashError OPRS::restoreState() { +- SPLASH(restoreState()); +- return splashOk; +-} +- +-//------------------------------------------------------------------------ +-// drawing operations +-//------------------------------------------------------------------------ +- +-void OPRS::clear(SplashColor color) { +- SPLASH(clear(color)); +-} +- +-SplashError OPRS::stroke(OPVPSplashPath *path) { +- return SPLASH(stroke(path)); +-} +- +-SplashError OPRS::fill(OPVPSplashPath *path, bool eo) { +- return SPLASH(fill(path,eo)); +-} +- +-SplashError OPRS::fillChar(SplashCoord x, SplashCoord y, +- int c, SplashFont *font, Unicode *u, +- double *fontMat) { +- if (rasterMode) { +- return splash->fillChar(x,y,c,font); +- } else { +- return opvpSplash->fillChar(x,y,c,font,u,fontMat); +- } +-} +- +-SplashError OPRS::fillGlyph(SplashCoord x, SplashCoord y, +- SplashGlyphBitmap *glyph) { +- SPLASH(fillGlyph(x,y,glyph)); +- return splashOk; +-} +- +-SplashError OPRS::fillImageMask(SplashImageMaskSource src, void *srcData, +- int w, int h, SplashCoord *mat, bool glyphMode) { +- return SPLASH(fillImageMask(src,srcData,w,h,mat,glyphMode)); +-} +- +-SplashError OPRS::drawImage(SplashImageSource src, void *srcData, +- SplashColorMode srcMode, bool srcAlpha, +- int w, int h, SplashCoord *mat) { +- if (rasterMode) { +-#if POPPLER_VERSION_MAJOR <= 0 && (POPPLER_VERSION_MINOR <= 20 || (POPPLER_VERSION_MINOR == 21 && POPPLER_VERSION_MICRO <= 2)) +- return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat); +-#elif POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33 +- return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat,false); +-#else +- return splash->drawImage(src,0,srcData,srcMode,srcAlpha,w,h,mat,false); +-#endif +- } else { +- return opvpSplash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat); +- } +-} +- +-/* +- * initialize and load vector-driver +- */ +-int OPRS::init(const char *driverName, int outputFD, +- const char *printerModel, int nOptions, +- const char *optionKeys[], const char *optionVals[]) +-{ +- opvp = OPVPWrapper::loadDriver(driverName,outputFD,printerModel); +- if (opvp == 0) return -1; +- rasterMode = false; +- if (!rasterMode) { +- opvpSplash = new OPVPSplash(opvp,nOptions, +- optionKeys, optionVals); +- } +- return 0; +-} +- +-int OPRS::OPVPStartJob(char *jobInfo) +-{ +- if (!opvp->supportStartJob) { +- return 0; +- } +- return opvp->StartJob((const opvp_char_t *)jobInfo); +-} +- +-int OPRS::OPVPEndJob() +-{ +- if (!opvp->supportEndJob) { +- return 0; +- } +- return opvp->EndJob(); +-} +- +-int OPRS::OPVPStartDoc(char *docInfo) +-{ +- if (!opvp->supportStartDoc) { +- return 0; +- } +- return opvp->StartDoc((const opvp_char_t *)docInfo); +-} +- +-int OPRS::OPVPEndDoc() +-{ +- if (!opvp->supportEndDoc) { +- return 0; +- } +- return opvp->EndDoc(); +-} +- +-int OPRS::OPVPStartPage(char *pageInfo, int rasterWidth) +-{ +- int r; +- +- if (opvp->supportStartPage) { +- if ((r = opvp->StartPage((const opvp_char_t *)pageInfo)) < 0) { +- return r; +- } +- } +- if (rasterMode) { +- if (!opvp->supportStartRaster) { +- error("No StartRaster error in raster mode\n"); +- return -1; +- } +- if (opvp->supportSetCurrentPoint) { +- opvp_fix_t x,y; +- +- OPVP_F2FIX(0.0,x); +- OPVP_F2FIX(0.0,y); +- opvp->SetCurrentPoint(x,y); +- } +- opvp->StartRaster(rasterWidth); +- } +- return 0; +-} +- +-int OPRS::OPVPEndPage() +-{ +- int r; +- +- if (rasterMode) { +- if (!opvp->supportEndRaster) { +- error("No EndRaster error in raster mode\n"); +- return -1; +- } +- opvp->EndRaster(); +- } +- if (opvp->supportEndPage) { +- if ((r = opvp->EndPage()) < 0) { +- return r; +- } +- } +- return splashOk; +-} +- +-unsigned char *OPRS::getScanLineDataMono1(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth) +-{ +- int n = (rasterWidth+7)/8; +- +- memcpy(dst,bitmap,n); +- return bitmap+n; +-} +- +-unsigned char *OPRS::getScanLineDataMono8(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth) +-{ +- memcpy(dst,bitmap,rasterWidth); +- return bitmap+rasterWidth; +-} +- +-unsigned char *OPRS::getScanLineDataRGB8(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth) +-{ +- int i; +- +- for (i = 0;i < rasterWidth;i++) { +-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN +- bitmap++; +- *dst++ = *bitmap++; +- *dst++ = *bitmap++; +- *dst++ = *bitmap++; +-#else +- dst[2] = *bitmap++; +- dst[1] = *bitmap++; +- dst[0] = *bitmap++; +- bitmap++; +- dst += 3; +-#endif +- } +- return bitmap; +-} +- +-unsigned char *OPRS::getScanLineDataBGR8Packed(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth) +-{ +- memcpy(dst,bitmap,rasterWidth*3); +- return bitmap+rasterWidth*3; +-} +- +-OPRS::GetScanLineDataFunT OPRS::getGetScanLineDataFun(SplashBitmap *bitmap) +-{ +- switch (bitmap->getMode()) { +- case splashModeMono1: +- return getScanLineDataMono1; +- case splashModeMono8: +- return getScanLineDataMono8; +- case splashModeRGB8: +- return getScanLineDataRGB8; +- default: +- OPRS::error("Unknown bitmap mode\n"); +- break; +- } +- return getScanLineDataMono8; +-} +- +-int OPRS::getRasterSize(SplashBitmap *bitmap) +-{ +- int rw = bitmap->getWidth(); +- +- switch (bitmap->getMode()) { +- case splashModeMono1: +- return (rw+7)/8; +- case splashModeMono8: +- return rw; +- case splashModeRGB8: +- return rw*3; +- default: +- OPRS::error("Unknown bitmap mode\n"); +- break; +- } +- return 0; +-} +- +-bool OPRS::checkAll1(unsigned char *bp, int n, int width, int mode) +-{ +- int lastbytemask = 0xff; +- int i; +- +- if (mode == splashModeMono1) { +- lastbytemask <<= (width & 0x7); +- lastbytemask &= 0xff; +- } +- for (i = 0;i < n-1;i++) { +- if (*bp++ != 0xff) return false; +- } +- return (*bp & lastbytemask) == lastbytemask; +-} +- +-int OPRS::outSlice() +-{ +- if (rasterMode) { +- /* out bitmap */ +- int rasterWidth; +- int nScanLines; +- int rasterSize; +- unsigned char *p; +- int i; +- SplashBitmap *bitmap; +- SplashColorPtr cp; +- unsigned char *bp; +- GetScanLineDataFunT fun; +- int mode; +- +- if (!opvp->supportStartRaster || !opvp->supportTransferRasterData +- || !opvp->supportEndRaster) { +- OPRS::error("No raster supporting printer driver\n"); +- return -1; +- } +- +- bitmap = splash->getBitmap(); +- rasterWidth = bitmap->getWidth(); +- nScanLines = bitmap->getHeight(); +- rasterSize = getRasterSize(bitmap); +- if ((bp = new unsigned char[rasterSize]) == 0) { +- OPRS::error("Not enough memory\n"); +- return -1; +- } +- cp = (bitmap->getDataPtr()); +- p = reinterpret_cast<unsigned char *>(cp); +- fun = getGetScanLineDataFun(bitmap); +- mode = bitmap->getMode(); +- for (i = 0;i < nScanLines;i++) { +- p = (*fun)(bp,p,rasterWidth); +- if (opvp->supportSkipRaster +- && checkAll1(bp,rasterSize,rasterWidth,mode)) { +- /* all white, skip raster */ +- opvp->SkipRaster(1); +- } else { +- opvp->TransferRasterData(rasterSize,bp); +- } +- } +- delete[] bp; +- } +- return 0; +-} +- +-int OPRS::setColorMode(int colorModeA, bool colorProfile) +-{ +- opvp_cspace_t cspace = OPVP_CSPACE_STANDARDRGB; +- +- if (opvp->supportGetColorSpace) opvp->GetColorSpace(&cspace); +- switch (cspace){ +- case OPVP_CSPACE_BW: +- if (colorModeA != splashModeMono1) { +- OPRS::error("not mono mode is specified on a monochrome printer\n"); +- return -1; +- } +- break; +- case OPVP_CSPACE_DEVICEGRAY: +- if (colorModeA != splashModeMono1 && colorModeA != splashModeMono8) { +- OPRS::error("colorMode is specified on not a color printer\n"); +- return -1; +- } +- break; +- case OPVP_CSPACE_DEVICERGB: +- if (colorProfile) break; +- default: +- /* rgb color */ +- if (colorProfile) { +- /* try set colorspace to DEVICERGB */ +- if (opvp->supportSetColorSpace) opvp->SetColorSpace( +- OPVP_CSPACE_DEVICERGB); +- if (opvp->supportGetColorSpace) opvp->GetColorSpace(&cspace); +- if (cspace == OPVP_CSPACE_DEVICERGB) break; +- /* fail to set, fall through */ +- } +- if (opvp->supportSetColorSpace) opvp->SetColorSpace( +- OPVP_CSPACE_STANDARDRGB); +- break; +- } +- if (!rasterMode) { +- opvpSplash->setColorMode(colorModeA); +- } +- return 0; +-} +- +-SplashBitmap *OPRS::getBitmap() +-{ +- return SPLASH(getBitmap()); +-} +- +-void OPRS::setDebugMode(bool debugModeA) +-{ +- SPLASH(setDebugMode(debugModeA)); +-} +- +-void OPRS::initGS(int colorMode, int w, int h, SplashColor paperColor) +-{ +- SplashColor color; +- +- if (!rasterMode && opvp->supportInitGS) { +- opvp->InitGS(); +- } +- if (opvp->supportSetPaintMode) { +- opvp->SetPaintMode(OPVP_PAINTMODE_TRANSPARENT); +- } +- switch (colorMode) { +- case splashModeMono1: color[0] = 0; break; +- case splashModeMono8: color[0] = 0; break; +- case splashModeRGB8: color[0] = color[1] = color[2] = 0; break; +- } +- if (!rasterMode) { +- opvpSplash->setStateBypass(true); +- } +- SPLASH(setStrokePattern(new SplashSolidColor(color))); +- SPLASH(setFillPattern(new SplashSolidColor(color))); +- SPLASH(setLineCap(splashLineCapButt)); +- SPLASH(setLineJoin(splashLineJoinMiter)); +- SPLASH(setLineDash(0, 0, 0)); +- SPLASH(setLineWidth(0)); +- SPLASH(setMiterLimit(10)); +- SPLASH(setFlatness(1)); +- SPLASH(clipResetToRect(0,0,w-1,h-1)); +- SPLASH(clear(paperColor)); +- if (!rasterMode) { +- opvpSplash->setStateBypass(false); +- } +-} +- +-void OPRS::error(const char *msg, ...) +-{ +- va_list args; +- +- fprintf(stderr,"ERROR:OPRS:"); +- va_start(args, msg); +- vfprintf(stderr, msg, args); +- va_end(args); +- fflush(stderr); +-} +- +-void OPRS::endPage() +-{ +- /* restore state */ +- while (SPLASH(restoreState()) == splashOk); +- if (!rasterMode) { +- opvpSplash->endPage(); +- } +-} +- +-void OPRS::setSoftMask(SplashBitmap *softMaskA) +-{ +- /* Soft Mask is not supported in vector mode. */ +- if (rasterMode) { +- splash->setSoftMask(softMaskA); +- } +-} +- +-SplashCoord *OPRS::getMatrix() +-{ +- return SPLASH(getMatrix()); +-} +diff --git a/filter/pdftoopvp/oprs/OPRS.h b/filter/pdftoopvp/oprs/OPRS.h +deleted file mode 100644 +index e47804c..0000000 +--- a/filter/pdftoopvp/oprs/OPRS.h ++++ /dev/null +@@ -1,188 +0,0 @@ +-//======================================================================== +-// +-// OPRS.h +-// +-//======================================================================== +- +-#ifndef OPRS_H +-#define OPRS_H +- +-#include <config.h> +- +-#ifdef USE_GCC_PRAGMAS +-#pragma interface +-#endif +- +-#include "splash/SplashTypes.h" +-#include "opvp_common.h" +-#include "splash/Splash.h" +-#include "OPVPSplash.h" +-#include "OPVPWrapper.h" +- +-#define OPVP_BUFF_SIZE 256 +- +-class SplashBitmap; +-class SplashGlyphBitmap; +-class SplashState; +-class SplashPattern; +-class SplashScreen; +-class OPVPSplashPath; +-class SplashXPath; +-class OPVPSplashClip; +-class SplashFont; +- +-//------------------------------------------------------------------------ +-// OPRS +-//------------------------------------------------------------------------ +- +-class OPRS { +-public: +- +- static void error(const char *msg, ...); +- OPRS(); +- ~OPRS(); +- +- int setBitmap(SplashBitmap *bitmapA); +- +- //----- state read +- +- SplashPattern *getStrokePattern(); +- SplashPattern *getFillPattern(); +- SplashScreen *getScreen(); +- SplashCoord getLineWidth(); +- int getLineCap(); +- int getLineJoin(); +- SplashCoord getMiterLimit(); +- SplashCoord getFlatness(); +- SplashCoord *getLineDash(); +- int getLineDashLength(); +- SplashCoord getLineDashPhase(); +- OPVPSplashClip *getClip(); +- +- //----- state write +- +- void setStrokePattern(SplashPattern *strokeColor); +- void setFillPattern(SplashPattern *fillColor); +- void setScreen(SplashScreen *screen); +- void setLineWidth(SplashCoord lineWidth); +- void setMiterLimit(SplashCoord miterLimit); +- void setLineCap(int lineCap); +- void setLineJoin(int lineJoin); +- void setFlatness(SplashCoord flatness); +- // the <lineDash> array will be copied +- void setLineDash(SplashCoord *lineDash, int lineDashLength, +- SplashCoord lineDashPhase); +- SplashError clipToPath(OPVPSplashPath *path, bool eo); +- +- //----- state save/restore +- +- void saveState(); +- SplashError restoreState(); +- +- void setSoftMask(SplashBitmap *softMaskA); +- +- //----- drawing operations +- +- // Fill the bitmap with <color>. This is not subject to clipping. +- void clear(SplashColor color); +- +- // Stroke a path using the current stroke pattern. +- SplashError stroke(OPVPSplashPath *path); +- +- // Fill a path using the current fill pattern. +- SplashError fill(OPVPSplashPath *path, bool eo); +- +- // Draw a character, using the current fill pattern. +- SplashError fillChar(SplashCoord x, SplashCoord y, int c, SplashFont *font, +- Unicode *u, double *fontMat); +- +- // Draw a glyph, using the current fill pattern. This function does +- // not free any data, i.e., it ignores glyph->freeData. +- SplashError fillGlyph(SplashCoord x, SplashCoord y, +- SplashGlyphBitmap *glyph); +- +- // Draws an image mask using the fill color. This will read <w>*<h> +- // pixels from <src>, in raster order, starting with the top line. +- // "1" pixels will be drawn with the current fill color; "0" pixels +- // are transparent. The matrix: +- // [ mat[0] mat[1] 0 ] +- // [ mat[2] mat[3] 0 ] +- // [ mat[4] mat[5] 1 ] +- // maps a unit square to the desired destination for the image, in +- // PostScript style: +- // [x' y' 1] = [x y 1] * mat +- // Note that the Splash y axis points downward, and the image source +- // is assumed to produce pixels in raster order, starting from the +- // top line. +- SplashError fillImageMask(SplashImageMaskSource src, void *srcData, +- int w, int h, SplashCoord *mat, bool glyphMode); +- +- // Draw an image. This will read <w>*<h> pixels from <src>, in +- // raster order, starting with the top line. These pixels are +- // assumed to be in the source mode, <srcMode>. The following +- // combinations of source and target modes are supported: +- // source target +- // ------ ------ +- // Mono1 Mono1 +- // Mono8 Mono1 -- with dithering +- // Mono8 Mono8 +- // RGB8 RGB8 +- // BGR8packed BGR8Packed +- // The matrix behaves as for fillImageMask. +- SplashError drawImage(SplashImageSource src, void *srcData, +- SplashColorMode srcMode, bool srcAlpha, +- int w, int h, SplashCoord *mat); +- +- //~ drawMaskedImage +- +- //----- misc +- +- // Return the associated bitmap. +- SplashBitmap *getBitmap(); +- +- // Toggle debug mode on or off. +- void setDebugMode(bool debugModeA); +- +- int init(const char *driverName, int outputFD, +- const char *printerModel, int nOptions, +- const char *optionKeys[], const char *optionVals[]); +- void initGS(int colorMode, int w, int h, SplashColor paperColor); +- int setColorMode(int colorModeA, bool colorProfile); +- int unloadVectorDriver(); +- +- int OPVPStartJob(char *jobInfo); +- int OPVPEndJob(); +- int OPVPStartDoc(char *docInfo); +- int OPVPEndDoc(); +- int OPVPStartPage(char *pageInfo, int rasterWidth); +- int OPVPEndPage(); +- int outSlice(); +- Splash *getSplash() { return splash; } +- int getRasterMode() { return rasterMode; } +- void endPage(); +- SplashCoord *getMatrix(); +- +-private: +- int rasterMode; +- OPVPSplash *opvpSplash; +- Splash *splash; +- OPVPWrapper *opvp; +- int getRasterSize(SplashBitmap *bitmap); +- +- typedef unsigned char *(*GetScanLineDataFunT)(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth); +- +- static unsigned char *getScanLineDataMono1(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth); +- static unsigned char *getScanLineDataMono8(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth); +- static unsigned char *getScanLineDataRGB8(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth); +- static unsigned char *getScanLineDataBGR8Packed(unsigned char *dst, +- unsigned char *bitmap, int rasterWidth); +- +- GetScanLineDataFunT getGetScanLineDataFun(SplashBitmap *bitmap); +- bool checkAll1(unsigned char *bp, int n, int width, int mode); +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPSplash.cxx b/filter/pdftoopvp/oprs/OPVPSplash.cxx +deleted file mode 100644 +index 89b7d33..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplash.cxx ++++ /dev/null +@@ -1,2293 +0,0 @@ +-//======================================================================== +-// +-// OPVPSplash.cc +-// +-//======================================================================== +- +-#include <config.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#ifdef USE_GCC_PRAGMAS +-#pragma implementation +-#endif +- +-#include <stdlib.h> +-#include <string.h> +-#include <math.h> +-#include <limits.h> +-#include "goo/gmem.h" +-#include "splash/SplashErrorCodes.h" +-#include "splash/SplashMath.h" +-#include "splash/SplashBitmap.h" +-#include "splash/SplashXPathScanner.h" +-#include "splash/SplashPattern.h" +-#include "splash/SplashScreen.h" +-#include "splash/SplashFont.h" +-#include "splash/SplashGlyphBitmap.h" +-#include "splash/Splash.h" +-#include "OPRS.h" +-#include "OPVPSplashState.h" +-#include "OPVPSplash.h" +-#include "OPVPSplashPath.h" +-#include "OPVPSplashXPath.h" +-#include "OPVPSplashClip.h" +- +-//------------------------------------------------------------------------ +-// OPVPSplash +-//------------------------------------------------------------------------ +- +-inline void OPVPSplash::transform(SplashCoord *matrix, +- SplashCoord xi, SplashCoord yi, +- SplashCoord *xo, SplashCoord *yo) { +- // [ m[0] m[1] 0 ] +- // [xo yo 1] = [xi yi 1] * [ m[2] m[3] 0 ] +- // [ m[4] m[5] 1 ] +- *xo = xi * matrix[0] + yi * matrix[2] + matrix[4]; +- *yo = xi * matrix[1] + yi * matrix[3] + matrix[5]; +-} +- +-OPVPSplash::OPVPSplash(OPVPWrapper *opvpA, +- int nOptions, const char *optionKeys[], const char *optionVals[]) +-{ +- const char *opv; +- +- opvp = opvpA; +- // with default screen params +- state = new OPVPSplashState(0,0,false,(SplashScreenParams *)NULL); +- debugMode = false; +- stateBypass = false; +- clipPath = 0; +- if (getOption("OPVP_OLDLIPSDRIVER",nOptions, +- optionKeys,optionVals) != NULL) { +- oldLipsDriver = true; +- } else { +- oldLipsDriver = false; +- } +- if (getOption("OPVP_CLIPPATHNOTSAVED",nOptions, +- optionKeys,optionVals) != NULL) { +- clipPathNotSaved = true; +- } else { +- clipPathNotSaved = false; +- } +- if (getOption("OPVP_NOSHEARIMAGE",nOptions, +- optionKeys,optionVals) != NULL) { +- noShearImage = true; +- } else { +- noShearImage = false; +- } +- if (getOption("OPVP_NOLINESTYLE",nOptions, +- optionKeys,optionVals) != NULL) { +- noLineStyle = true; +- } else { +- noLineStyle = false; +- } +- if (!opvpA->supportSetLineStyle || !opvpA->supportSetLineDash +- || !opvpA->supportSetLineDashOffset) { +- noLineStyle = true; +- } +- if (getOption("OPVP_NOCLIPPATH",nOptions, +- optionKeys,optionVals) != NULL) { +- noClipPath = true; +- } else { +- noClipPath = false; +- } +- if (getOption("OPVP_IGNOREMITERLIMIT",nOptions, +- optionKeys,optionVals) != NULL) { +- ignoreMiterLimit = true; +- } else { +- ignoreMiterLimit = false; +- } +- if (getOption("OPVP_NOMITERLIMIT",nOptions, +- optionKeys,optionVals) != NULL) { +- noMiterLimit = true; +- } else { +- noMiterLimit = false; +- } +- if (!opvpA->supportSetMiterLimit) { +- noMiterLimit = true; +- } +- if ((opv = getOption("OPVP_BITMAPCHARTHRESHOLD",nOptions, +- optionKeys,optionVals)) != NULL) { +- bitmapCharThreshold = atoi(opv); +- } else { +- bitmapCharThreshold = OPVP_BITMAPCHAR_THRESHOLD; +- } +- if ((opv = getOption("OPVP_MAXCLIPPATHLENGTH",nOptions, +- optionKeys,optionVals)) != NULL) { +- maxClipPathLength = atoi(opv); +- } else { +- maxClipPathLength = OPVP_MAX_CLIPPATH_LENGTH; +- } +- if ((opv = getOption("OPVP_MAXFILLPATHLENGTH",nOptions, +- optionKeys,optionVals)) != NULL) { +- maxFillPathLength = atoi(opv); +- } else { +- maxFillPathLength = OPVP_MAX_FILLPATH_LENGTH; +- } +- if (getOption("OPVP_NOIMAGEMASK",nOptions, +- optionKeys,optionVals) != NULL) { +- noImageMask = true; +- } else { +- noImageMask = false; +- } +- if (getOption("OPVP_NOBITMAPCHAR",nOptions, +- optionKeys,optionVals) != NULL) { +- bitmapCharThreshold = 0; +- } +- if (!opvpA->supportSetClipPath) { +- noClipPath = true; +- } +- savedNoClipPath = noClipPath; +- saveDriverStateCount = 0; +- if (noImageMask) { +- /* We draw bitmapChar with imageMask feature. +- So, when noImageMask, noBitmapChar */ +- bitmapCharThreshold = 0; +- } +-#ifdef OPTION_DEBUG +-fprintf(stderr,"noClipPath=%d\n",noClipPath); +-fprintf(stderr,"oldLipsDriver=%d\n",oldLipsDriver); +-fprintf(stderr,"noLineStyle=%d\n",noLineStyle); +-fprintf(stderr,"noMiterLimit=%d\n",noMiterLimit); +-fprintf(stderr,"ignoreMiterLimit=%d\n",ignoreMiterLimit); +-fprintf(stderr,"noShearImage=%d\n",noShearImage); +-fprintf(stderr,"clipPathNotSaved=%d\n",clipPathNotSaved); +-fprintf(stderr,"bitmapCharThreshold=%d\n",bitmapCharThreshold); +-fprintf(stderr,"maxClipPathLength=%d\n",maxClipPathLength); +-#endif +-} +- +-OPVPSplash::~OPVPSplash() +-{ +- while (state->next) { +- restoreState(); +- } +- delete state; +- if (opvp->supportClosePrinter) { +- opvp->ClosePrinter(); +- } +- delete opvp; +-} +- +-//------------------------------------------------------------------------ +-// state read +-//------------------------------------------------------------------------ +- +- +-SplashPattern *OPVPSplash::getStrokePattern() { +- return state->strokePattern; +-} +- +-SplashPattern *OPVPSplash::getFillPattern() { +- return state->fillPattern; +-} +- +-SplashScreen *OPVPSplash::getScreen() { +- return state->screen; +-} +- +-SplashCoord OPVPSplash::getLineWidth() { +- return state->lineWidth; +-} +- +-int OPVPSplash::getLineCap() { +- return state->lineCap; +-} +- +-int OPVPSplash::getLineJoin() { +- return state->lineJoin; +-} +- +-SplashCoord OPVPSplash::getMiterLimit() { +- return state->miterLimit; +-} +- +-SplashCoord OPVPSplash::getFlatness() { +- return state->flatness; +-} +- +-SplashCoord *OPVPSplash::getLineDash() { +- return state->lineDash; +-} +- +-int OPVPSplash::getLineDashLength() { +- return state->lineDashLength; +-} +- +-SplashCoord OPVPSplash::getLineDashPhase() { +- return state->lineDashPhase; +-} +- +-OPVPSplashClip *OPVPSplash::getClip() { +- return state->clip; +-} +- +-//------------------------------------------------------------------------ +-// state write +-//------------------------------------------------------------------------ +- +-opvp_cspace_t OPVPSplash::getOPVPColorSpace() +-{ +- switch (colorMode) { +- case splashModeMono1: +- return OPVP_CSPACE_BW; +- break; +- case splashModeMono8: +- return OPVP_CSPACE_DEVICEGRAY; +- break; +- case splashModeRGB8: +- default: +- break; +- } +- return OPVP_CSPACE_STANDARDRGB; +-} +- +-void OPVPSplash::makeBrush(SplashPattern *pattern, opvp_brush_t *brush) +-{ +- brush->colorSpace = getOPVPColorSpace(); +- brush->pbrush = NULL; +- brush->color[3] = -1; +- brush->xorg = brush->yorg = 0; +- if (pattern == NULL) { +- /* set default black color */ +- brush->color[2] = 0; +- brush->color[1] = 0; +- brush->color[0] = 0; +- } else if (typeid(*pattern) == typeid(SplashSolidColor)) { +- /* solid color */ +- SplashColor color; +- +- pattern->getColor(0,0,color); +- switch (colorMode) { +- case splashModeMono1: +- brush->color[2] = color[0]; +- brush->color[1] = 0; +- brush->color[0] = 0; +- break; +- case splashModeMono8: +- brush->color[2] = color[0]; +- brush->color[1] = 0; +- brush->color[0] = 0; +- break; +- case splashModeRGB8: +- brush->color[2] = splashRGB8R(color); +- brush->color[1] = splashRGB8G(color); +- brush->color[0] = splashRGB8B(color); +- break; +- default: +- OPRS::error("Unknown color mode\n"); +- brush->color[2] = splashRGB8R(color); +- brush->color[1] = splashRGB8G(color); +- brush->color[0] = splashRGB8B(color); +- break; +- } +- } else { +- /* error */ +- return; +- } +-} +- +-bool OPVPSplash::equalPattern(SplashPattern *pat1, SplashPattern *pat2) +-{ +- SplashColor c1, c2; +- if (pat1 == NULL || pat2 == NULL) { +- return pat1 == pat2; +- } +- if (typeid(*pat1) != typeid(*pat2)) return false; +- +- pat1->getColor(0,0,c1); +- pat2->getColor(0,0,c2); +- switch (colorMode) { +- case splashModeMono1: +- return c1[0] == c2[0]; +- break; +- case splashModeMono8: +- return c1[0] == c2[0]; +- break; +- case splashModeRGB8: +- return c1[0] == c2[0] && c1[1] == c2[1] && c1[2] == c2[2]; +- break; +- default: +- break; +- } +- return true; +-} +- +-void OPVPSplash::setStrokePattern(SplashPattern *strokePattern) { +- opvp_brush_t brush; +- +- if (!stateBypass && equalPattern(strokePattern,state->strokePattern)) { +- delete strokePattern; +- return; +- } +- state->setStrokePattern(strokePattern); +- makeBrush(strokePattern,&brush); +- if (opvp->SetStrokeColor(&brush) != 0) { +- OPRS::error("SetStrokeColor error\n"); +- return; +- } +-} +- +-void OPVPSplash::setFillPattern(SplashPattern *fillPattern) { +- opvp_brush_t brush; +- +- if (!stateBypass && equalPattern(fillPattern,state->fillPattern)) { +- delete fillPattern; +- return; +- } +- state->setFillPattern(fillPattern); +- makeBrush(fillPattern,&brush); +- if (opvp->SetFillColor(&brush) != 0) { +- OPRS::error("SetFillColor error\n"); +- return; +- } +-} +- +-void OPVPSplash::setScreen(SplashScreen *screen) { +- state->setScreen(screen); +-} +- +-void OPVPSplash::setLineWidth(SplashCoord lineWidth) { +- if (stateBypass || state->lineWidth != lineWidth) { +- opvp_fix_t width; +- +- state->lineWidth = lineWidth; +- OPVP_F2FIX(lineWidth,width); +- if (opvp->SetLineWidth(width) < 0) { +- OPRS::error("SetLineWidth error\n"); +- return; +- } +- } +-} +- +-void OPVPSplash::setLineCap(int lineCap) { +- if (stateBypass || state->lineCap != lineCap) { +- opvp_linecap_t cap; +- +- state->lineCap = lineCap; +- switch (lineCap) { +- case splashLineCapButt: +- cap = OPVP_LINECAP_BUTT; +- break; +- case splashLineCapRound: +- cap = OPVP_LINECAP_ROUND; +- break; +- case splashLineCapProjecting: +- cap = OPVP_LINECAP_SQUARE; +- break; +- default: +- /* error */ +- cap = OPVP_LINECAP_BUTT; +- break; +- } +- if (opvp->SetLineCap(cap) < 0) { +- OPRS::error("SetLineCap error\n"); +- return; +- } +- } +-} +- +-void OPVPSplash::setLineJoin(int lineJoin) { +- if (stateBypass || state->lineJoin != lineJoin) { +- opvp_linejoin_t join; +- +- state->lineJoin = lineJoin; +- switch (lineJoin) { +- case splashLineJoinMiter: +- join = OPVP_LINEJOIN_MITER; +- break; +- case splashLineJoinRound: +- join = OPVP_LINEJOIN_ROUND; +- break; +- case splashLineJoinBevel: +- join = OPVP_LINEJOIN_BEVEL; +- break; +- default: +- /* error */ +- join = OPVP_LINEJOIN_MITER; +- break; +- } +- if (opvp->SetLineJoin(join) < 0) { +- OPRS::error("SetLineJoin error\n"); +- return; +- } +- } +-} +- +-void OPVPSplash::setMiterLimit(SplashCoord miterLimit) { +- if (stateBypass || state->miterLimit != miterLimit) { +- opvp_fix_t limit; +- +- state->miterLimit = miterLimit; +- if (noMiterLimit) return; +- if (oldLipsDriver) { +- /* for old driver for lips */ +- /* miterLimit is length/2 */ +- miterLimit = miterLimit*state->lineWidth*0.5; +- } +- OPVP_F2FIX(miterLimit,limit); +- if (opvp->SetMiterLimit(limit) < 0) { +- OPRS::error("SetMiterLimit error\n"); +- return; +- } +- } +-} +- +-void OPVPSplash::setFlatness(SplashCoord flatness) { +- if (flatness < 1) { +- state->flatness = 1; +- } else { +- state->flatness = flatness; +- } +-} +- +-void OPVPSplash::setLineDash(SplashCoord *lineDash, int lineDashLength, +- SplashCoord lineDashPhase) { +- int i; +- opvp_fix_t *pdash; +- bool equal; +- +- if (stateBypass || lineDash != state->lineDash) { +- if (lineDash == NULL || lineDashLength == 0) { +- if (!noLineStyle +- && opvp->SetLineStyle(OPVP_LINESTYLE_SOLID) < 0) { +- OPRS::error("SetLineStyle error\n"); +- return; +- } +- state->setLineDash(lineDash, lineDashLength, lineDashPhase); +- return; +- } else if (stateBypass || state->lineDash == NULL) { +- if (!noLineStyle +- && opvp->SetLineStyle(OPVP_LINESTYLE_DASH) < 0) { +- OPRS::error("SetLineStyle error\n"); +- return; +- } +- } +- } +- if (lineDash == NULL || lineDashLength == 0) return; +- if (!noLineStyle) { +- equal = (state->lineDash != NULL); +- pdash = new opvp_fix_t[lineDashLength]; +- for (i = 0;i < lineDashLength;i++) { +- if (equal && lineDash[i] != state->lineDash[i]) equal = false; +- OPVP_F2FIX(lineDash[i],pdash[i]); +- } +- if (!equal && opvp->SetLineDash(lineDashLength,pdash) < 0) { +- OPRS::error("SetLineDash error\n"); +- goto err; +- } +- if (stateBypass || lineDashPhase != state->lineDashPhase) { +- opvp_fix_t offset; +- +- OPVP_F2FIX(lineDashPhase,offset); +- if (opvp->SetLineDashOffset(offset) < 0) { +- OPRS::error("SetLineDashOffset error\n"); +- goto err; +- } +- } +-err: +- delete[] pdash; +- } +- state->setLineDash(lineDash, lineDashLength, lineDashPhase); +-} +- +-SplashError OPVPSplash::doClipPath(OPVPSplashPath *path, bool eo, +- OPVPClipPath *prevClip) +-{ +- SplashError result; +- +- if (path->getLength() > maxClipPathLength) { +- if (!noClipPath) { +- if (prevClip != 0 && +- prevClip->getPath()->getLength() <= maxClipPathLength) { +- /* previous clipping is printer clipping */ +- if (opvp->ResetClipPath() != 0) { +- OPRS::error("ResetClipPath error\n"); +- return splashErrOPVP; +- } +- } +- noClipPath = true; +- } +- } else { +- noClipPath = savedNoClipPath; +- } +- if (!noClipPath && path->getLength() > 0) { +- /* when path->length == 0, no drawable arae, and no output +- so, it isn't need to set ClipPath */ +- if ((result = path->makePath(opvp)) != splashOk) { +- return result; +- } +- if (opvp->SetClipPath( +- eo ? OPVP_CLIPRULE_EVENODD : OPVP_CLIPRULE_WINDING) < 0) { +- OPRS::error("SetClipPath error\n"); +- return splashErrOPVP; +- } +- } +- return splashOk; +-} +- +-SplashError OPVPSplash::makeRectanglePath(SplashCoord x0, +- SplashCoord y0, SplashCoord x1, SplashCoord y1, OPVPSplashPath **p) +-{ +- SplashError result; +- +- *p = new OPVPSplashPath(); +- if ((result = (*p)->moveTo(x0,y0)) != splashOk) return result; +- if ((result = (*p)->lineTo(x1,y0)) != splashOk) return result; +- if ((result = (*p)->lineTo(x1,y1)) != splashOk) return result; +- if ((result = (*p)->lineTo(x0,y1)) != splashOk) return result; +- if ((result = (*p)->close()) != splashOk) return result; +- return splashOk; +-} +- +-void OPVPSplash::clipResetToRect(SplashCoord x0, SplashCoord y0, +- SplashCoord x1, SplashCoord y1) { +- OPVPSplashPath *p; +- OPVPClipPath *cp; +- +- while ((cp = OPVPClipPath::pop()) != NULL) delete cp; +- if (clipPath != 0) { +- delete clipPath; +- clipPath = 0; +- } +- +- if (makeRectanglePath(x0,y0,x1,y1,&p) != splashOk) return; +- +- if (doClipPath(p,true,clipPath) != splashOk) return; +- clipPath = new OPVPClipPath(p,true); +- state->clip->resetToRect(x0, y0, x1, y1); +-} +- +-SplashError OPVPSplash::clipToPath(OPVPSplashPath *path, bool eo) { +- SplashError result; +- SplashCoord x0, y0, x1, y1; +- SplashCoord x2, y2, x3, y3; +- SplashClipResult clipResult; +- int xMin, yMin, xMax, yMax; +- +- if (path == 0) return splashErrBogusPath; +- if (path->getLength() == 0) return splashOk; +- if (clipPath == 0) { +- /* no clip region exist */ +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = path->copy(); +- } else { +- OPVPSplashPath *oldPath = clipPath->getPath(); +- if (path->isRectanglePath(&x0,&y0,&x1,&y1)) { +- if ((clipResult = state->clip->testRect( +- splashRound(x0), splashRound(y0), splashRound(x1), splashRound(y1))) +- == splashClipAllOutside) { +- /* no drawable area */ +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = new OPVPSplashPath(); +- } else if (clipResult == splashClipPartial) { +- if (oldPath->isRectanglePath(&x2,&y2,&x3,&y3)) { +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- /* both rectangle */ +- if (x0 < x2) x0 = x2; +- if (y0 < y2) y0 = y2; +- if (x1 > x3) x1 = x3; +- if (y1 > y3) y1 = y3; +- if ((result = makeRectanglePath(x0,y0,x1,y1,&path)) != splashOk) { +- return result; +- } +- } else { +- state->clip->getBBox(&xMin,&yMin,&xMax,&yMax); +- if (splashRound(x0) <= xMin && splashRound(y0) <= yMin +- && splashRound(x1) >= xMax && splashRound(y1)) { +- /* The old path is all inside the new path */ +- /* We may ignore the new path */ +- return splashOk; +- } +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- if (state->clip->getNumPaths() > 0) { +- path = state->clip->makePath(); +- } else { +- path = new OPVPSplashPath(); +- } +- } +- } else { +- /* splashClipAllInside */ +- /* We may ignore the previous region. */ +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = path->copy(); +- } +- } else { +- /* non rectangle path */ +- +- OPVPSplashXPath *xpath = new OPVPSplashXPath(path, state->matrix, +- state->flatness, false); +- +- xpath->sort(); +- SplashXPathScanner *scanner = new SplashXPathScanner(xpath,eo, +- INT_MIN,INT_MAX); +- scanner->getBBox(&xMin,&yMin,&xMax,&yMax); +- delete scanner; +- delete xpath; +- if ((clipResult = state->clip->testRect(xMin,yMin,xMax,yMax)) +- == splashClipAllOutside) { +- /* no efect */ +- /* no drawable area */ +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = new OPVPSplashPath(); +- } else if (clipResult == splashClipPartial) { +- OPVPSplashClip *nclip = new OPVPSplashClip(xMin,yMin,xMax,yMax,false); +- nclip->clipToPath(path,state->matrix,state->flatness,eo); +- state->clip->getBBox(&xMin,&yMin,&xMax,&yMax); +- if ((clipResult = nclip->testRect(xMin,yMin,xMax,yMax)) +- == splashClipAllOutside) { +- /* no drawable area */ +- delete nclip; +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = new OPVPSplashPath(); +- } else { +- delete nclip; +- if (clipResult == splashClipAllInside) { +- /* The old path is all inside the new path */ +- /* We may ignore the new path */ +- return splashOk; +- } +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- if (state->clip->getNumPaths() > 0) { +- path = state->clip->makePath(); +- } else { +- path = new OPVPSplashPath(); +- } +- } +- } else { +- /* splashClipAllInside */ +- /* We may ignore the previous region. */ +- if ((result = state->clip->clipToPath(path, state->matrix, +- state->flatness, eo)) != splashOk) { +- return result; +- } +- path = path->copy(); +- } +- } +- } +- if ((result = doClipPath(path,eo,clipPath)) != splashOk) { +- delete path; +- return result; +- } +- if (clipPath != 0) delete clipPath; +- clipPath = new OPVPClipPath(path,eo); +- +- return splashOk; +-} +- +-//------------------------------------------------------------------------ +-// state save/restore +-//------------------------------------------------------------------------ +- +-void OPVPSplash::saveState() { +- OPVPSplashState *newState; +- +- newState = state->copy(); +- newState->next = state; +- state = newState; +- if (clipPath != 0) clipPath->push(); +- if (opvp->SaveGS() != 0) { +- OPRS::error("SaveGS error\n"); +- return; +- } +- saveDriverStateCount++; +-} +- +-SplashError OPVPSplash::restoreState() { +- OPVPSplashState *oldState; +- OPVPClipPath *oldClip; +- OPVPSplashPath *path; +- bool saved = false; +- +- if (!state->next) { +- return splashErrNoSave; +- } +- oldState = state; +- state = state->next; +- delete oldState; +- if (saveDriverStateCount > 0 && opvp->RestoreGS() != 0) { +- OPRS::error("RestoreGS error\n"); +- return splashErrOPVP; +- } +- saveDriverStateCount--; +- oldClip = clipPath; +- if (clipPath != 0) { +- saved = clipPath->getSaved(); +- delete clipPath; +- clipPath = 0; +- } +- clipPath = OPVPClipPath::pop(); +- if (clipPath != 0) { +- path = clipPath->getPath(); +- if (path->getLength() > maxClipPathLength) { +- if (clipPathNotSaved && !noClipPath) { +- if (opvp->ResetClipPath() != 0) { +- OPRS::error("ResetClipPath error\n"); +- return splashErrOPVP; +- } +- noClipPath = true; +- } +- } else { +- noClipPath = savedNoClipPath; +- } +- } else { +- noClipPath = savedNoClipPath; +- } +- if (clipPathNotSaved && !noClipPath) { +- if (clipPath != 0) { +- if (!saved) { +- SplashError result; +- +- if ((result = doClipPath(clipPath->getPath(),clipPath->getEo(), +- oldClip)) +- != splashOk) return result; +- } +- } else if (oldClip != 0) { +- if (opvp->ResetClipPath() != 0) { +- OPRS::error("ResetClipPath error\n"); +- return splashErrOPVP; +- } +- } +- } +- return splashOk; +-} +- +-//------------------------------------------------------------------------ +-// drawing operations +-//------------------------------------------------------------------------ +- +-void OPVPSplash::clear(SplashColor color) +-{ +- opvp_brush_t brush; +- +- brush.colorSpace = getOPVPColorSpace(); +- brush.pbrush = NULL; +- brush.color[3] = -1; +- brush.xorg = brush.yorg = 0; +- switch (colorMode) { +- case splashModeMono1: +- brush.color[2] = color[0]; +- brush.color[1] = 0; +- brush.color[0] = 0; +- break; +- case splashModeMono8: +- brush.color[2] = color[0]; +- brush.color[1] = 0; +- brush.color[0] = 0; +- break; +- case splashModeRGB8: +- brush.color[2] = splashRGB8R(color); +- brush.color[1] = splashRGB8G(color); +- brush.color[0] = splashRGB8B(color); +- break; +- default: +- OPRS::error("Unknown color mode\n"); +- brush.color[2] = splashRGB8R(color); +- brush.color[1] = splashRGB8G(color); +- brush.color[0] = splashRGB8B(color); +- break; +- } +- opvp->SetBgColor(&brush); +-} +- +-/* +- Translate arc to Bezier Curve +- +- input start point (x0,y0) , center (cx, cy) and end point (x3, y3) +- return Bezier curve control points (rx1,ry1 and rx2, ry2) +- +- an angle should be less than eqaul 90 degree +- +-*/ +-void OPVPSplash::arcToCurve(SplashCoord x0, SplashCoord y0, +- SplashCoord x3, SplashCoord y3, +- SplashCoord cx, SplashCoord cy, SplashCoord *rx1, SplashCoord *ry1, +- SplashCoord *rx2, SplashCoord *ry2) +-{ +-#define ROTX(x,y) (x*rotcos-y*rotsin)*r+cx +-#define ROTY(x,y) (x*rotsin+y*rotcos)*r+cy +- +- SplashCoord x1,y1,x2,y2; +- SplashCoord r; +- SplashCoord rotcos, rotsin; +- SplashCoord ox,oy,hx,hy,d; +- +- hx = (x0+x3)/2; +- hy = (y0+y3)/2; +- r = splashDist(x0,y0,cx,cy); +- d = splashDist(x0,y0,hx,hy); +- rotcos = (hx-cx)/d; +- rotsin = (hy-cy)/d; +- oy = (splashDist(x0,y0,x3,y3)/2)/r; +- ox = splashDist(hx,hy,cx,cy)/r; +- x1 = ((4-ox)/3); +- y1 = ((1-ox)*(3-ox)/(3*oy)); +- x2 = x1; +- y2 = -y1; +- *rx1 = ROTX(x1,y1); +- *ry1 = ROTY(x1,y1); +- *rx2 = ROTX(x2,y2); +- *ry2 = ROTY(x2,y2); +-#undef ROTX +-#undef ROTY +-} +- +-SplashError OPVPSplash::strokeByMyself(OPVPSplashPath *path) +-{ +- SplashPath *dPath; +- OPVPSplashPath *oPath; +- Splash *osplash; +- SplashPattern *savedPattern; +- +- /* draw dashed line by myself */ +- if (path->getLength() == 0) { +- return splashOk; +- } +- +- osplash = new Splash(new SplashBitmap(1,1,4,splashModeMono1,false),false); +- state->setState(osplash); +- dPath = osplash->makeStrokePath(path,state->lineWidth); +- oPath = new OPVPSplashPath(dPath); +- delete dPath; +- +- if (state->lineWidth <= 1) { +- OPVPSplashXPath *xPath; +- xPath = new OPVPSplashXPath(oPath, state->matrix, state->flatness, false); +- xPath->strokeNarrow(this,state); +- delete xPath; +- } else { +- /* change fill pattern temprarily */ +- savedPattern = state->fillPattern->copy(); +- setFillPattern(state->strokePattern->copy()); +- +- fillByMyself(oPath,false); +- +- /* restore fill pattern */ +- setFillPattern(savedPattern); +- } +- delete osplash; +- return splashOk; +-} +- +-SplashError OPVPSplash::stroke(OPVPSplashPath *path) { +- SplashError result; +- +- if (clipPath != 0 && clipPath->getPath()->getLength() == 0) { +- return splashOk; +- } +- if ((state->lineDash != NULL +- && state->lineDashLength > 0 && noLineStyle)) { +- return strokeByMyself(path); +- } +- if (noMiterLimit && (!ignoreMiterLimit) && state->lineWidth != 0 +- && state->lineJoin == splashLineJoinMiter) { +- return strokeByMyself(path); +- } +- if (noClipPath) { +- int xMin, yMin, xMax, yMax; +- SplashClipResult clipResult; +- int fatOffset = splashCeil(state->lineWidth/2); +- int miterLimit = splashCeil(state->miterLimit/2); +- +- if (fatOffset < miterLimit) fatOffset = miterLimit; +- path->getBBox(&xMin,&yMin,&xMax,&yMax); +- xMin -= fatOffset; +- yMin -= fatOffset; +- xMax += fatOffset; +- yMax += fatOffset; +- clipResult = state->clip->testRect(xMin,yMin,xMax,yMax); +- if (clipResult == splashClipAllOutside) { +- /* not need to draw */ +- return splashOk; +- } else if (clipResult == splashClipPartial) { +- return strokeByMyself(path); +- } +- /* splashClipAllInside */ +- /* fall through */ +- } +- if ((result = path->makePath(opvp)) != 0) return result; +- if (opvp->StrokePath() < 0) { +- OPRS::error("StrokePath error\n"); +- return splashErrOPVP; +- } +- return splashOk; +-} +- +-SplashError OPVPSplash::fillByMyself(OPVPSplashPath *path, bool eo) +-{ +- OPVPSplashXPath *xPath; +- SplashXPathScanner *scanner; +- int xMinI, yMinI, xMaxI, yMaxI, x0, x1, y; +- SplashClipResult clipRes, clipRes2; +- +- if (path->getLength() == 0) { +- return splashOk; +- } +- xPath = new OPVPSplashXPath(path, state->matrix, state->flatness, true); +- xPath->sort(); +- scanner = new SplashXPathScanner(xPath, eo, INT_MIN, INT_MAX); +- +- // get the min and max x and y values +- scanner->getBBox(&xMinI, &yMinI, &xMaxI, &yMaxI); +- +- // check clipping +- if ((clipRes = state->clip->testRect(xMinI, yMinI, xMaxI, yMaxI)) +- != splashClipAllOutside) { +- SplashPattern *savedPattern; +- +- /* change stroke pattern temporarily */ +- savedPattern = state->strokePattern->copy(); +- setStrokePattern(state->fillPattern->copy()); +- +- for (y = yMinI; y < yMaxI; ++y) { +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- SplashXPathScanIterator iterator(*scanner, y); +- while (iterator.getNextSpan(&x0, &x1)) +-#else +- while (scanner->getNextSpan(y, &x0, &x1)) +-#endif +- { +- if (x0 == x1) continue; +- if (clipRes == splashClipAllInside) { +- drawSpan(x0, x1-1, y, true); +- } else { +- clipRes2 = state->clip->testSpan(x0, x1, y); +- drawSpan(x0, x1-1, y, clipRes2 == splashClipAllInside); +- } +- } +- } +- /* restore stroke pattern */ +- setStrokePattern(savedPattern); +- } +- +- delete scanner; +- delete xPath; +- return splashOk; +-} +- +-SplashError OPVPSplash::fill(OPVPSplashPath *path, bool eo) { +- SplashError result; +- opvp_fillmode_t mode; +- +- if (path->getLength() <= 1) return splashOk; +- if (clipPath != 0 && clipPath->getPath()->getLength() == 0) { +- return splashOk; +- } +- if (path->getLength() > maxFillPathLength) { +- return fillByMyself(path,eo); +- } +- if (noClipPath) { +- int xMin, yMin, xMax, yMax; +- SplashClipResult clipResult; +- +- path->getBBox(&xMin,&yMin,&xMax,&yMax); +- clipResult = state->clip->testRect(xMin,yMin,xMax,yMax); +- if (clipResult == splashClipAllOutside) { +- /* not need to draw */ +- return splashOk; +- } else if (clipResult == splashClipPartial) { +- return fillByMyself(path,eo); +- } +- /* splashClipAllInside */ +- /* fall through */ +- } +- if ((result = path->makePath(opvp)) != 0) return result; +- mode = eo ? OPVP_FILLMODE_EVENODD : OPVP_FILLMODE_WINDING; +- if (opvp->SetFillMode(mode) < 0) { +- OPRS::error("SetFillMode error\n"); +- return splashErrOPVP; +- } +- if (opvp->FillPath() < 0) { +- OPRS::error("FillPath error\n"); +- return splashErrOPVP; +- } +- return splashOk; +-} +- +-void OPVPSplash::fillGlyph(SplashCoord x, SplashCoord y, +- SplashGlyphBitmap *glyph) +-{ +- opvp_fix_t opvpx,opvpy; +- int opvpbytes; +- int x0, y0; +- Guchar *bp; +- SplashClipResult clipRes; +- SplashCoord xt, yt; +- +- transform(state->matrix,x,y,&xt,&yt); +- x0 = splashFloor(xt)-glyph->x; +- y0 = splashFloor(yt)-glyph->y; +- clipRes = state->clip->testRect(x0,y0, +- x0 + glyph->w - 1, +- y0 + glyph->h - 1); +- if (clipRes == splashClipAllOutside) return; +- OPVP_i2Fix((x0),(opvpx)); +- OPVP_i2Fix((y0),(opvpy)); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- } +- +- if (oldLipsDriver && (((glyph->w+7)/8) & 3) != 0) { +- /* not 4bytes aligned, so make aligned */ +- int i; +- int m = (glyph->w+7)/8; +- +- opvpbytes = (m+3)/4; +- opvpbytes *= 4; +- bp = (Guchar *)gmallocn(glyph->h,opvpbytes); +- for (i = 0;i < glyph->h;i++) { +- memcpy(bp+i*opvpbytes,glyph->data+i*m,m); +- } +- } else { +- bp = glyph->data; +- opvpbytes = (glyph->w+7)/8; +- } +- if ((!noClipPath || clipRes != splashClipPartial) && !noImageMask) { +- if (opvp->DrawImage(glyph->w,glyph->h,opvpbytes,OPVP_IFORMAT_MASK, +- glyph->w,glyph->h,(void *)bp) < 0) { +- OPRS::error("DrawImage error\n"); +- } +- } else { +- int tx,ty; +- int sx = 0; +- SplashPattern *savedPattern; +- SplashCoord *savedLineDash = 0; +- int savedLineDashLength; +- SplashCoord savedLineDashPhase; +- SplashCoord savedLineWidth; +- +- /* change stroke pattern temprarily */ +- savedPattern = state->strokePattern->copy(); +- setStrokePattern(state->fillPattern->copy()); +- /* change lins style temporarily */ +- savedLineDashLength = state->lineDashLength; +- savedLineDashPhase = state->lineDashPhase; +- if (savedLineDashLength > 0 && state->lineDash != 0) { +- savedLineDash = new SplashCoord[savedLineDashLength]; +- memcpy(savedLineDash, state->lineDash, +- savedLineDashLength*sizeof(SplashCoord)); +- } +- setLineDash(0,0,0); +- savedLineWidth = state->lineWidth; +- setLineWidth(0.0); +- +- +- for (ty = 0;ty < glyph->h;ty++) { +- bool dmode = false; +- for (tx = 0;tx < glyph->w;tx++) { +- bool on = (bp[opvpbytes*ty+(tx/8)] & (0x80 >> (tx & 7))) != 0; +- +- if (on && !dmode) { +- sx = tx; +- dmode = true; +- } else if (!on && dmode) { +- drawSpan(x0+sx,x0+tx-1,y0+ty,true); +- dmode = false; +- } +- } +- if (dmode) { +- drawSpan(x0+sx,x0+tx-1,y0+ty,true); +- } +- } +- /* restore stroke pattern */ +- setStrokePattern(savedPattern); +- /* restore line style */ +- setLineDash(savedLineDash,savedLineDashLength, +- savedLineDashPhase); +- if (savedLineDash != 0) { +- delete[] savedLineDash; +- } +- setLineWidth(savedLineWidth); +- } +- if (bp != glyph->data) gfree(bp); +-} +- +-SplashError OPVPSplash::fillChar(SplashCoord x, SplashCoord y, +- int c, SplashFont *font, +- Unicode *u, double *fontMat) { +- SplashError err = splashOk; +- SplashPath *spath; +- OPVPSplashPath *path; +- SplashCoord xt, yt; +- double mx,my; +- +- transform(state->matrix, x, y, &xt, &yt); +- if ((spath = font->getGlyphPath(c)) == 0) return splashOk; +- path = new OPVPSplashPath(spath); +- delete spath; +- if (bitmapCharThreshold > 0) { +- mx = splashAbs(fontMat[0]); +- if (mx < splashAbs(fontMat[1])) { +- mx = splashAbs(fontMat[1]); +- } +- my = splashAbs(fontMat[3]); +- if (my < splashAbs(fontMat[2])) { +- my = splashAbs(fontMat[2]); +- } +- if (path == 0 || (mx*my < bitmapCharThreshold)) { +- /* if a char is enough small, then out a char as a bitmask */ +- SplashGlyphBitmap glyph; +- int x0, y0, xFrac, yFrac; +- SplashClipResult clipRes; +- +- x0 = splashFloor(xt); +- xFrac = splashFloor((xt - x0) * splashFontFraction); +- y0 = splashFloor(yt); +- yFrac = splashFloor((yt - y0) * splashFontFraction); +- if (font->getGlyph(c, xFrac, yFrac, &glyph, x0, y0, state->clip, +- &clipRes)) { +- if (path != 0) delete path; +- if (glyph.w == 0 || glyph.h == 0) { +- /* empty glyph */ +- return splashOk; +- } +- if (clipRes != splashClipAllOutside) { +- fillGlyph(xt, yt, &glyph); +- } +- if (glyph.freeData) { +- gfree(glyph.data); +- } +- return err; +- } +- } +- /* fall through and out a char as a path */ +- } +- if (path == 0) { +- //OPRS::error("FillPath error\n"); +- err = splashErrOPVP; +- goto err0; +- } +- path->offset(xt,yt); +- err = fill(path,false); +-err0: +- if (path != 0) delete path; +- return err; +-} +- +-SplashError OPVPSplash::fillImageMaskFastWithCTM(SplashImageMaskSource src, +- void *srcData, int w, int h, int tx, int ty,SplashCoord *mat) { +- int i, j; +- opvp_fix_t opvpx,opvpy; +- int opvpbytes; +- opvp_ctm_t opvpctm; +- Guchar *buf = 0, *bp; +- SplashError result = splashOk; +- SplashColorPtr lineBuf; +- +- opvpbytes = (w+7)/8; +- /* align 4 */ +- opvpbytes = (opvpbytes+3)/4; +- opvpbytes *= 4; +- buf = (Guchar *)gmallocn(h,opvpbytes); +- lineBuf = (SplashColorPtr)gmallocn(8,opvpbytes); +- +- for (i = 0;i < h;i++) { +- int k; +- +- bp = buf+opvpbytes*i; +- (*src)(srcData, lineBuf); +- for (j = 0;j < w;j += k) { +- Guchar d; +- +- d = 0; +- for (k = 0;k < 8 && j+k < w;k++) { +- d <<= 1; +- if (lineBuf[j+k] != 0) d |= 1; +- } +- d <<= 8-k; +- *bp++ = d; +- } +- } +- free(lineBuf); +- opvpctm.a = mat[0]; +- opvpctm.b = mat[1]; +- opvpctm.c = mat[2]; +- opvpctm.d = mat[3]; +- opvpctm.e = mat[4]; +- opvpctm.f = mat[5]; +- OPVP_i2Fix((tx),(opvpx)); +- OPVP_i2Fix((ty),(opvpy)); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- } +- +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_MASK,1,1,(void *)(buf)) < 0) { +- OPRS::error("DrawImage error\n"); +- result = splashErrOPVP; +- } +- /* reset CTM */ +- opvpctm.a = 1.0; +- opvpctm.b = 0.0; +- opvpctm.c = 0.0; +- opvpctm.d = 1.0; +- opvpctm.e = 0.0; +- opvpctm.f = 0.0; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- if (buf != 0) gfree(buf); +- return result; +-} +- +-SplashError OPVPSplash::fillImageMask(SplashImageMaskSource src, void *srcData, +- int w, int h, SplashCoord *mat, bool glyphMode) { +- bool rot; +- SplashCoord xScale, yScale, xShear, yShear; +- int tx, ty, scaledWidth, scaledHeight, xSign, ySign; +- int ulx, uly, llx, lly, urx, ury, lrx, lry; +- int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1; +- int xMin, xMax, yMin, yMax; +- SplashClipResult clipRes; +- SplashColorPtr pixBuf; +- SplashColorPtr p; +- int x, y; +- int i; +- SplashPattern *savedPattern; +- SplashCoord *savedLineDash = 0; +- int savedLineDashLength; +- SplashCoord savedLineDashPhase; +- SplashCoord savedLineWidth; +- +- if (debugMode) { +- printf("fillImageMask: w=%d h=%d mat=[%.2f %.2f %.2f %.2f %.2f %.2f]\n", +- w, h, mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); +- } +- +- // check for singular matrix +- if (splashAbs(mat[0] * mat[3] - mat[1] * mat[2]) < 0.000001) { +- return splashErrSingularMatrix; +- } +- +- // compute scale, shear, rotation, translation parameters +- rot = splashAbs(mat[1]) > splashAbs(mat[0]); +- if (rot) { +- xScale = -mat[1]; +- yScale = mat[2] - (mat[0] * mat[3]) / mat[1]; +- xShear = -mat[3] / yScale; +- yShear = -mat[0] / mat[1]; +- } else { +- xScale = mat[0]; +- yScale = mat[3] - (mat[1] * mat[2]) / mat[0]; +- xShear = mat[2] / yScale; +- yShear = mat[1] / mat[0]; +- } +- tx = splashRound(mat[4]); +- ty = splashRound(mat[5]); +- scaledWidth = abs(splashRound(mat[4] + xScale) - tx) + 1; +- scaledHeight = abs(splashRound(mat[5] + yScale) - ty) + 1; +- xSign = (xScale < 0) ? -1 : 1; +- ySign = (yScale < 0) ? -1 : 1; +- +- // clipping +- ulx1 = 0; +- uly1 = 0; +- urx1 = xSign * (scaledWidth - 1); +- ury1 = splashRound(yShear * urx1); +- llx1 = splashRound(xShear * ySign * (scaledHeight - 1)); +- lly1 = ySign * (scaledHeight - 1) + splashRound(yShear * llx1); +- lrx1 = xSign * (scaledWidth - 1) + +- splashRound(xShear * ySign * (scaledHeight - 1)); +- lry1 = ySign * (scaledHeight - 1) + splashRound(yShear * lrx1); +- if (rot) { +- ulx = tx + uly1; uly = ty - ulx1; +- urx = tx + ury1; ury = ty - urx1; +- llx = tx + lly1; lly = ty - llx1; +- lrx = tx + lry1; lry = ty - lrx1; +- } else { +- ulx = tx + ulx1; uly = ty + uly1; +- urx = tx + urx1; ury = ty + ury1; +- llx = tx + llx1; lly = ty + lly1; +- lrx = tx + lrx1; lry = ty + lry1; +- } +- xMin = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx +- : (llx < lrx) ? llx : lrx +- : (urx < llx) ? (urx < lrx) ? urx : lrx +- : (llx < lrx) ? llx : lrx; +- xMax = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx +- : (llx > lrx) ? llx : lrx +- : (urx > llx) ? (urx > lrx) ? urx : lrx +- : (llx > lrx) ? llx : lrx; +- yMin = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry +- : (lly < lry) ? lly : lry +- : (ury < lly) ? (ury < lry) ? ury : lry +- : (lly < lry) ? lly : lry; +- yMax = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry +- : (lly > lry) ? lly : lry +- : (ury > lly) ? (ury > lry) ? ury : lry +- : (lly > lry) ? lly : lry; +- clipRes = state->clip->testRect(xMin, yMin, xMax, yMax); +- if (clipRes == splashClipAllOutside) return splashOk; +- +- if (!noClipPath || clipRes == splashClipAllInside) { +- if (!noShearImage && !noImageMask) { +- if (fillImageMaskFastWithCTM(src,srcData,w,h,tx,ty,mat) +- == splashOk) { +- return splashOk; +- } +- } +- } +- +- SplashError result = splashOk; +- /* change stroke pattern temprarily */ +- savedPattern = state->strokePattern->copy(); +- setStrokePattern(state->fillPattern->copy()); +- +- /* change lins style temporarily */ +- savedLineDashLength = state->lineDashLength; +- savedLineDashPhase = state->lineDashPhase; +- if (savedLineDashLength > 0 && state->lineDash != 0) { +- savedLineDash = new SplashCoord[savedLineDashLength]; +- memcpy(savedLineDash, state->lineDash, +- savedLineDashLength*sizeof(SplashCoord)); +- } +- setLineDash(0,0,0); +- savedLineWidth = state->lineWidth; +- setLineWidth(0.0); +- +- /* calculate inverse matrix */ +- SplashCoord imat[4]; +- double det = mat[0] * mat[3] - mat[1] * mat[2]; +- imat[0] = mat[3]/det; +- imat[1] = -mat[1]/det; +- imat[2] = -mat[2]/det; +- imat[3] = mat[0]/det; +- +- /* read source image */ +- pixBuf = (SplashColorPtr)gmallocn(h , w); +- +- p = pixBuf; +- for (i = 0; i < h; ++i) { +- (*src)(srcData, p); +- p += w; +- } +- int width = xMax-xMin+1; +- int height = yMax-yMin+1; +- OPVPSplashClip *clip = state->clip->copy(); +- +- if (w < scaledWidth || h < scaledHeight) { +- OPVPSplashPath cpath; +- +- cpath.moveTo(tx,ty); +- cpath.lineTo(mat[0]+tx,mat[1]+ty); +- cpath.lineTo(mat[0]+mat[2]+tx,mat[1]+mat[3]+ty); +- cpath.lineTo(mat[2]+tx,mat[3]+ty); +- clip->clipToPath(&cpath,state->matrix,1.0,false); +- } +- for (y = 0;y < height;y++) { +- int dy = y+yMin-ty; +- int sx = 0; +- bool dmode = false; +- +- for (x = 0;x < width;x++) { +- if (!clip->test(x+xMin,y+yMin)) { +- if (dmode) { +- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); +- dmode = false; +- } +- continue; +- } +- int ox,oy; +- /* calculate original coordinate */ +- int dx = x+xMin-tx; +- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); +- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); +- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { +- bool on = pixBuf[oy*w+ox] != 0; +- +- if (on && !dmode) { +- dmode = true; +- sx = x; +- } else if (!on && dmode) { +- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); +- dmode = false; +- } +- } else if (dmode) { +- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); +- dmode = false; +- } +- } +- if (dmode) { +- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); +- } +- } +- delete clip; +- gfree(pixBuf); +- +- /* restore stroke pattern */ +- setStrokePattern(savedPattern); +- /* restore line style */ +- setLineDash(savedLineDash,savedLineDashLength, +- savedLineDashPhase); +- if (savedLineDash != 0) { +- delete[] savedLineDash; +- } +- setLineWidth(savedLineWidth); +- +- return result; +-} +- +-SplashError OPVPSplash::drawImageNotShear(SplashImageSource src, +- void *srcData, +- int w, int h, +- int tx, int ty, +- int scaledWidth, int scaledHeight, +- int xSign, int ySign, bool rot) { +- int i, j; +- opvp_fix_t opvpx,opvpy; +- int opvpbytes, linesize; +- opvp_ctm_t opvpctm; +- SplashError result = splashOk; +- Guchar *buf = 0, *bp; +- SplashColorPtr lineBuf = 0, color; +- float e,f; +- int hs,he, hstep; +- int ow = w; +- int lineBufSize; +- +- if (rot) { +- int t = h; +- +- h = w; +- w = t; +- t = scaledHeight; +- scaledHeight = scaledWidth; +- scaledWidth = t; +- if (xSign != ySign) { +- xSign = xSign >= 0 ? -1 : 1; +- } else { +- ySign = ySign >= 0 ? -1 : 1; +- } +- } +- +- if (xSign > 0) { +- OPVP_i2Fix((tx),(opvpx)); +- e = tx; +- } else { +- OPVP_i2Fix((tx-scaledWidth),(opvpx)); +- e = tx-scaledWidth; +- } +- if (ySign > 0) { +- OPVP_i2Fix((ty),(opvpy)); +- f = ty; +- } else { +- OPVP_i2Fix((ty-scaledHeight),(opvpy)); +- f = ty-scaledHeight; +- } +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- return splashErrOPVP; +- } +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- linesize = w; +- opvpbytes = (w+3)/4; +- opvpbytes *= 4; +- lineBufSize = (ow+3)/4; +- lineBufSize *= 4; +- break; +- case splashModeRGB8: +- linesize = w*3;; +- opvpbytes = (w*3+3)/4; +- opvpbytes *= 4; +- lineBufSize = (ow*3+3)/4; +- lineBufSize *= 4; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- return splashErrOPVP; +- break; +- } +- if (ySign >= 0) { +- hstep = 1; +- hs = 0; +- he = h; +- } else { +- hstep = -1; +- hs = h-1; +- he = -1; +- } +- buf = (Guchar *)gmallocn(h,opvpbytes); +- lineBuf = (SplashColorPtr)gmallocn(lineBufSize,1); +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- if (rot) { +- if (xSign >= 0) { +- for (i = 0;i < w;i++) { +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = hs;j != he;j += hstep) { +- bp = buf+i+j*opvpbytes; +- *bp = *color++; +- } +- } +- } else { +- for (i = 0;i < w;i++) { +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = hs;j != he;j += hstep) { +- bp = buf+linesize-1-i+j*opvpbytes; +- *bp = *color++; +- } +- } +- } +- } else { +- if (xSign >= 0) { +- for (i = hs;i != he;i += hstep) { +- bp = buf+opvpbytes*i; +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = 0;j < w;j++) { +- *bp++ = *color++; +- } +- } +- } else { +- for (i = hs;i != he;i += hstep) { +- bp = buf+opvpbytes*i+linesize-1; +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = 0;j < w;j++) { +- *bp-- = *color++; +- } +- } +- } +- } +- break; +- case splashModeRGB8: +- if (rot) { +- if (xSign >= 0) { +- for (i = 0;i < w;i++) { +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = hs;j != he;j += hstep) { +- bp = buf+i*3+j*opvpbytes; +- bp[0] = *color++; +- bp[1] = *color++; +- bp[2] = *color++; +- } +- } +- } else { +- for (i = 0;i < w;i++) { +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = hs;j != he;j += hstep) { +- bp = buf+linesize-3-i*3+j*opvpbytes; +- bp[0] = *color++; +- bp[1] = *color++; +- bp[2] = *color++; +- } +- } +- } +- } else { +- if (xSign >= 0) { +- for (i = hs;i != he;i += hstep) { +- bp = buf+opvpbytes*i; +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = 0;j < w;j++) { +- *bp++ = *color++; +- *bp++ = *color++; +- *bp++ = *color++; +- } +- } +- } else { +- for (i = hs;i != he;i += hstep) { +- bp = buf+opvpbytes*i+linesize-1; +- (*src)(srcData, lineBuf, NULL); +- color = lineBuf; +- for (j = 0;j < w;j++) { +- *bp-- = color[2]; +- *bp-- = color[1]; +- *bp-- = color[0]; +- color += 3; +- } +- } +- } +- } +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- result = splashErrOPVP; +- goto err1; +- break; +- } +- if (lineBuf != 0) gfree(lineBuf); +- +- /* canonlisp driver use CTM only, ignores currentPoint */ +- /* So, set start point to CTM */ +- opvpctm.a = 1.0; +- opvpctm.b = 0.0; +- opvpctm.c = 0.0; +- opvpctm.d = 1.0; +- opvpctm.e = e; +- opvpctm.f = f; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_RAW, +- scaledWidth,scaledHeight,(void *)(buf)) < 0) { +- OPRS::error("DrawImage error\n"); +- result = splashErrOPVP; +- goto err1; +- } +-err1: +- /* reset CTM */ +- opvpctm.e = 0.0; +- opvpctm.f = 0.0; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- if (buf != 0) gfree(buf); +- return result; +-} +- +-SplashError OPVPSplash::drawImageFastWithCTM(SplashImageSource src, +- void *srcData, +- int w, int h, int tx, int ty, +- SplashCoord *mat) { +- int i; +- opvp_fix_t opvpx,opvpy; +- int opvpbytes; +- opvp_ctm_t opvpctm; +- Guchar *buf = 0, *bp; +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- opvpbytes = (w+3)/4; +- opvpbytes *= 4; +- break; +- case splashModeRGB8: +- opvpbytes = (w*3+3)/4; +- opvpbytes *= 4; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- return splashErrOPVP; +- break; +- } +- buf = (Guchar *)gmallocn(h,opvpbytes); +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- for (i = 0;i < h;i++) { +- bp = buf+opvpbytes*i; +- (*src)(srcData, (SplashColorPtr)bp, NULL); +- } +- break; +- case splashModeRGB8: +- for (i = 0;i < h;i++) { +- bp = buf+opvpbytes*i; +- (*src)(srcData, (SplashColorPtr)bp, NULL); +- } +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- goto err0; +- break; +- } +- +- opvpctm.a = mat[0]; +- opvpctm.b = mat[1]; +- opvpctm.c = mat[2]; +- opvpctm.d = mat[3]; +- opvpctm.e = mat[4]; +- opvpctm.f = mat[5]; +- OPVP_i2Fix((tx),(opvpx)); +- OPVP_i2Fix((ty),(opvpy)); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- } +- +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_RAW,1,1,(void *)(buf)) < 0) { +- OPRS::error("DrawImage error\n"); +- } +-err0: +- /* reset CTM */ +- opvpctm.a = 1.0; +- opvpctm.b = 0.0; +- opvpctm.c = 0.0; +- opvpctm.d = 1.0; +- opvpctm.e = 0.0; +- opvpctm.f = 0.0; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- if (buf != 0) gfree(buf); +- return splashOk; +-} +- +-SplashError OPVPSplash::drawImage(SplashImageSource src, void *srcData, +- SplashColorMode srcMode, bool srcAlpha, +- int w, int h, SplashCoord *mat) { +- bool ok, rot; +- SplashCoord xScale, yScale, xShear, yShear; +- int tx, ty, scaledWidth, scaledHeight, xSign, ySign; +- int ulx, uly, llx, lly, urx, ury, lrx, lry; +- int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1; +- int xMin, xMax, yMin, yMax; +- SplashClipResult clipRes; +- SplashColorPtr pixBuf, p; +- int x, y; +- int i; +- +- if (debugMode) { +- printf("drawImage: srcMode=%d w=%d h=%d mat=[%.2f %.2f %.2f %.2f %.2f %.2f]\n", +- srcMode, w, h, mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); +- } +- +- // check color modes +- ok = false; // make gcc happy +- switch (colorMode) { +- case splashModeMono1: +- ok = srcMode == splashModeMono1 || srcMode == splashModeMono8; +- break; +- case splashModeMono8: +- ok = srcMode == splashModeMono8; +- break; +- case splashModeRGB8: +- ok = srcMode == splashModeRGB8; +- break; +- } +- if (!ok) { +- OPRS::error("Image Mode mismatch\n"); +- return splashErrModeMismatch; +- } +- +- // check for singular matrix +- if (splashAbs(mat[0] * mat[3] - mat[1] * mat[2]) < 0.000001) { +- OPRS::error("Image Not Singular Matrix\n"); +- return splashErrSingularMatrix; +- } +- +- // compute scale, shear, rotation, translation parameters +- rot = splashAbs(mat[1]) > splashAbs(mat[0]); +- if (rot) { +- xScale = -mat[1]; +- yScale = mat[2] - (mat[0] * mat[3]) / mat[1]; +- xShear = -mat[3] / yScale; +- yShear = -mat[0] / mat[1]; +- } else { +- xScale = mat[0]; +- yScale = mat[3] - (mat[1] * mat[2]) / mat[0]; +- xShear = mat[2] / yScale; +- yShear = mat[1] / mat[0]; +- } +- tx = splashRound(mat[4]); +- ty = splashRound(mat[5]); +- scaledWidth = abs(splashRound(mat[4] + xScale) - tx) + 1; +- scaledHeight = abs(splashRound(mat[5] + yScale) - ty) + 1; +- xSign = (xScale < 0) ? -1 : 1; +- ySign = (yScale < 0) ? -1 : 1; +- +- // clipping +- ulx1 = 0; +- uly1 = 0; +- urx1 = xSign * (scaledWidth - 1); +- ury1 = splashRound(yShear * urx1); +- llx1 = splashRound(xShear * ySign * (scaledHeight - 1)); +- lly1 = ySign * (scaledHeight - 1) + splashRound(yShear * llx1); +- lrx1 = xSign * (scaledWidth - 1) + +- splashRound(xShear * ySign * (scaledHeight - 1)); +- lry1 = ySign * (scaledHeight - 1) + splashRound(yShear * lrx1); +- if (rot) { +- ulx = tx + uly1; uly = ty - ulx1; +- urx = tx + ury1; ury = ty - urx1; +- llx = tx + lly1; lly = ty - llx1; +- lrx = tx + lry1; lry = ty - lrx1; +- } else { +- ulx = tx + ulx1; uly = ty + uly1; +- urx = tx + urx1; ury = ty + ury1; +- llx = tx + llx1; lly = ty + lly1; +- lrx = tx + lrx1; lry = ty + lry1; +- } +- xMin = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx +- : (llx < lrx) ? llx : lrx +- : (urx < llx) ? (urx < lrx) ? urx : lrx +- : (llx < lrx) ? llx : lrx; +- xMax = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx +- : (llx > lrx) ? llx : lrx +- : (urx > llx) ? (urx > lrx) ? urx : lrx +- : (llx > lrx) ? llx : lrx; +- yMin = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry +- : (lly < lry) ? lly : lry +- : (ury < lly) ? (ury < lry) ? ury : lry +- : (lly < lry) ? lly : lry; +- yMax = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry +- : (lly > lry) ? lly : lry +- : (ury > lly) ? (ury > lry) ? ury : lry +- : (lly > lry) ? lly : lry; +- if ((clipRes = state->clip->testRect(xMin, yMin, xMax, yMax)) +- == splashClipAllOutside) { +- return splashOk; +- } +- +- if (!noClipPath || clipRes == splashClipAllInside) { +- if (!srcAlpha && !noShearImage) { +- if (drawImageFastWithCTM(src,srcData,w,h,tx,ty,mat) == splashOk) { +- return splashOk; +- } +- } +- if (!srcAlpha && splashRound(xShear) == 0 && splashRound(yShear) == 0) { +- /* no sheared case */ +- if (drawImageNotShear(src,srcData,w,h,tx,ty, +- scaledWidth, scaledHeight,xSign,ySign,rot) == splashOk) { +- return splashOk; +- } +- } +- } +- +- /* shear case */ +- SplashError result = splashOk; +- +- /* calculate inverse matrix */ +- SplashCoord imat[4]; +- double det = mat[0] * mat[3] - mat[1] * mat[2]; +- imat[0] = mat[3]/det; +- imat[1] = -mat[1]/det; +- imat[2] = -mat[2]/det; +- imat[3] = mat[0]/det; +- +- opvp_fix_t opvpx,opvpy; +- int opvpbytes, linesize; +- int width = xMax-xMin+1; +- int height = yMax-yMin+1; +- opvp_ctm_t opvpctm; +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- if (srcAlpha) { +- /* alpha data exists */ +- linesize = w*2; +- } else { +- linesize = w; +- } +- opvpbytes = (width+3)/4; +- opvpbytes *= 4; +- break; +- case splashModeRGB8: +- if (srcAlpha) { +- /* alpha data exists */ +- linesize = w*4; +- } else { +- linesize = w*3; +- } +- opvpbytes = (width*3+3)/4; +- opvpbytes *= 4; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- return splashErrOPVP; +- break; +- } +- +- /* read source image */ +- pixBuf = (SplashColorPtr)gmallocn(h , linesize); +- +- p = pixBuf; +- for (i = 0; i < h; ++i) { +- (*src)(srcData, p, NULL); +- p += linesize; +- } +- /* allocate line buffer */ +- Guchar *lineBuf = (Guchar *)gmallocn(opvpbytes,1); +- Guchar *onBuf = (Guchar *)gmallocn(width,1); +- OPVPSplashClip *clip; +- opvpctm.a = 1.0; +- opvpctm.b = 0.0; +- opvpctm.c = 0.0; +- opvpctm.d = 1.0; +- +- clip = state->clip->copy(); +- if (w < scaledWidth || h < scaledHeight) { +- OPVPSplashPath cpath; +- +- cpath.moveTo(tx,ty); +- cpath.lineTo(mat[0]+tx,mat[1]+ty); +- cpath.lineTo(mat[0]+mat[2]+tx,mat[1]+mat[3]+ty); +- cpath.lineTo(mat[2]+tx,mat[3]+ty); +- clip->clipToPath(&cpath,state->matrix,1.0,false); +- } +- for (y = 0;y < height;y++) { +- int dy = y+yMin-ty; +- memset(onBuf,0,width); +- if (srcAlpha) { +- /* with alpha data */ +- for (x = 0;x < width;x++) { +- if (!clip->test(x+xMin,y+yMin)) continue; +- int ox,oy; +- /* calculate original coordinate */ +- int dx = x+xMin-tx; +- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); +- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); +- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { +- /* in the image */ +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- onBuf[x] = pixBuf[oy*linesize+ox] != 0; +- lineBuf[x] = pixBuf[oy*linesize+ox+1]; +- break; +- case splashModeRGB8: +- p = pixBuf+oy*linesize+ox*4; +- onBuf[x] = (*p++) != 0; +- lineBuf[x*3] = *p++; +- lineBuf[x*3+1] = *p++; +- lineBuf[x*3+2] = *p; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- result = splashErrOPVP; +- goto err1; +- break; +- } +- } +- } +- } else { +- for (x = 0;x < width;x++) { +- if (!clip->test(x+xMin,y+yMin)) continue; +- int ox,oy; +- /* calculate original coordinate */ +- int dx = x+xMin-tx; +- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); +- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); +- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { +- /* in the image */ +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- lineBuf[x] = pixBuf[oy*linesize+ox]; +- break; +- case splashModeRGB8: +- p = pixBuf+oy*linesize+ox*3; +- lineBuf[x*3] = *p++; +- lineBuf[x*3+1] = *p++; +- lineBuf[x*3+2] = *p; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- result = splashErrOPVP; +- goto err1; +- break; +- } +- onBuf[x] = 1; +- } +- } +- } +- /* out pixel */ +- int sx = 0; +- int ex; +- while (sx < width) { +- /* find start pixel */ +- for (;onBuf[sx] == 0 && sx < width;sx++); +- if (sx >= width) break; +- /* find end pixel */ +- for (ex = sx+1;onBuf[ex] != 0 && ex < width;ex++); +- int n = ex-sx; +- Guchar *bp; +- int ns; +- +- switch (colorMode) { +- case splashModeMono1: +- case splashModeMono8: +- bp = lineBuf+sx; +- ns = n; +- break; +- case splashModeRGB8: +- bp = lineBuf+sx*3; +- ns = n*3; +- break; +- default: +- OPRS::error("Image: no supported color mode\n"); +- result = splashErrOPVP; +- goto err1; +- break; +- } +- ns = (ns+3)/4; +- ns *= 4; +- +- OPVP_i2Fix(xMin+sx,(opvpx)); +- OPVP_i2Fix(yMin+y,(opvpy)); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- result = splashErrOPVP; +- goto err1; +- } +- /* canonlisp driver use CTM only, ignores currentPoint */ +- /* So, set start point to CTM */ +- opvpctm.e = xMin+sx; +- opvpctm.f = yMin+y; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- if (opvp->DrawImage(n,1,ns,OPVP_IFORMAT_RAW, +- n,1,(void *)(bp)) < 0) { +- OPRS::error("DrawImage error\n"); +- result = splashErrOPVP; +- goto err1; +- } +- +- /* reset CTM */ +- opvpctm.e = 0.0; +- opvpctm.f = 0.0; +- if (opvp->SetCTM(&opvpctm) < 0) { +- OPRS::error("SetCTM error\n"); +- } +- +- sx = ex+1; +- } +- } +- +- +-err1: +- delete clip; +- gfree(pixBuf); +- gfree(lineBuf); +- gfree(onBuf); +- return result; +-} +- +-void OPVPSplash::setColorMode(int colorModeA) +-{ +- colorMode = colorModeA; +-} +- +-void OPVPSplash::drawSpan(int x0, int x1, int y, bool noClip) +-{ +- int s,e; +- opvp_point_t points[1]; +- opvp_fix_t opvpx, opvpy; +- SplashCoord *savedLineDash = 0; +- int savedLineDashLength; +- SplashCoord savedLineDashPhase; +- SplashCoord savedLineWidth; +- bool noSpan; +- +- +- if (opvp->NewPath() < 0) { +- OPRS::error("NewPath error\n"); +- return; +- } +- if (noClip) { +- noSpan = false; +- OPVP_i2Fix(x0,opvpx); +- OPVP_i2Fix(y,opvpy); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- return; +- } +- OPVP_i2Fix(x1+1,points[0].x); +- OPVP_i2Fix(y,points[0].y); +- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { +- OPRS::error("LinePath error\n"); +- return; +- } +- } else { +- noSpan = true; +- s = x0; +- while (s < x1) { +- /* find start point */ +- for (;s < x1;s++) { +- if (state->clip->test(s, y)) break; +- } +- if (s < x1) { +- /* start point was found */ +- /* then find end point */ +- for (e = s+1;e < x1;e++) { +- if (!state->clip->test(e, y)) break; +- } +- /* do make span */ +- noSpan = false; +- OPVP_i2Fix(s,opvpx); +- OPVP_i2Fix(y,opvpy); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- return; +- } +- OPVP_i2Fix(e,points[0].x); +- OPVP_i2Fix(y,points[0].y); +- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { +- OPRS::error("LinePath error\n"); +- return; +- } +- s = e; +- } +- } +- } +- if (opvp->EndPath() < 0) { +- OPRS::error("EndPath error\n"); +- return; +- } +- if (noSpan) return; +- /* change lins style temporarily */ +- savedLineDashLength = state->lineDashLength; +- savedLineDashPhase = state->lineDashPhase; +- if (savedLineDashLength > 0 && state->lineDash != 0) { +- savedLineDash = new SplashCoord[savedLineDashLength]; +- memcpy(savedLineDash, state->lineDash, +- savedLineDashLength*sizeof(SplashCoord)); +- } +- setLineDash(0,0,0); +- savedLineWidth = state->lineWidth; +- setLineWidth(0.0); +- +- if (opvp->StrokePath() < 0) { +- OPRS::error("StrokePath error\n"); +- return; +- } +- +- /* restore line style */ +- setLineDash(savedLineDash,savedLineDashLength, +- savedLineDashPhase); +- if (savedLineDash != 0) { +- delete[] savedLineDash; +- } +- setLineWidth(savedLineWidth); +-} +- +-/* +- draw pixel with StrokePath +- color is stroke color +-*/ +-void OPVPSplash::drawPixel(int x, int y, bool noClip) +-{ +- opvp_point_t points[1]; +- opvp_fix_t opvpx, opvpy; +- +- if (noClip || state->clip->test(x, y)) { +- if (opvp->NewPath() < 0) { +- OPRS::error("NewPath error\n"); +- return; +- } +- OPVP_i2Fix(x,opvpx); +- OPVP_i2Fix(y,opvpy); +- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { +- OPRS::error("NewPath error\n"); +- return; +- } +- OPVP_i2Fix(x+1,points[0].x); +- OPVP_i2Fix(y,points[0].y); +- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { +- OPRS::error("LinePath error\n"); +- return; +- } +- if (opvp->EndPath() < 0) { +- OPRS::error("EndPath error\n"); +- return; +- } +- if (opvp->StrokePath() < 0) { +- OPRS::error("StrokePath error\n"); +- return; +- } +- } +-} +- +-const char *OPVPSplash::getOption(const char *key, int nOptions, +- const char *optionKeys[], const char *optionVals[]) +-{ +- int i; +- +- for (i = 0;i < nOptions;i++) { +- if (strcmp(key,optionKeys[i]) == 0) { +- return optionVals[i]; +- } +- } +- return 0; +-} +- +-void OPVPSplash::endPage() +-{ +- if (clipPath != 0) { +- delete clipPath; +- clipPath = 0; +- } +-} +- +-void OPVPSplash::restoreAllDriverState() +-{ +- for (;saveDriverStateCount > 0;saveDriverStateCount--) { +- opvp->RestoreGS(); +- } +-} +- +-SplashCoord *OPVPSplash::getMatrix() +-{ +- return state->matrix; +-} +- +-OPVPClipPath *OPVPClipPath::stackTop = 0; +- +-OPVPClipPath::OPVPClipPath(OPVPSplashPath *pathA, bool eoA) +-{ +- path = pathA; +- eo = eoA; +- next = 0; +- saved = false; +-} +- +-void OPVPClipPath::push() +-{ +- OPVPClipPath *p; +- +- p = stackTop; +- stackTop = copy(); +- stackTop->next = p; +- saved = true; +-} +- +-OPVPClipPath *OPVPClipPath::pop() { +- OPVPClipPath *p = stackTop; +- if (stackTop != 0) stackTop = stackTop->next; +- return p; +-} +- +-OPVPClipPath *OPVPClipPath::copy() +-{ +- OPVPClipPath *p; +- +- p = new OPVPClipPath(path->copy(),eo); +- p->saved = saved; +- return p; +-} +diff --git a/filter/pdftoopvp/oprs/OPVPSplash.h b/filter/pdftoopvp/oprs/OPVPSplash.h +deleted file mode 100644 +index 200fda3..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplash.h ++++ /dev/null +@@ -1,244 +0,0 @@ +-//======================================================================== +-// +-// OPVPSplash.h +-// +-//======================================================================== +- +-#ifndef OPVPSPLASH_H +-#define OPVPSPLASH_H +- +-#include <config.h> +- +-#ifdef USE_GCC_PRAGMAS +-#pragma interface +-#endif +- +-#include <typeinfo> +-#include "splash/SplashTypes.h" +-#include "splash/SplashPattern.h" +-#include "splash/SplashErrorCodes.h" +-#include "OPVPSplashPath.h" +-#include "OPVPWrapper.h" +-#include "CharTypes.h" +- +-/* extra error code */ +-#define splashErrOPVP 100 +- +-#define OPVP_MAX_CLIPPATH_LENGTH 2000 +-#define OPVP_MAX_FILLPATH_LENGTH 4000 +-#define OPVP_BITMAPCHAR_THRESHOLD 2000 +-#define OPVP_ROP_SRCCOPY 0xCC +-#define OPVP_ROP_S 0xCC +-#define OPVP_ROP_P 0xF0 +-#define OPVP_ROP_PSDPxax 0xB8 +-#define OPVP_ROP_DSPDxax 0xE2 +- +-class SplashBitmap; +-class SplashGlyphBitmap; +-class OPVPSplashState; +-class SplashPattern; +-class SplashScreen; +-class OPVPSplashPath; +-class OPVPSplashXPath; +-class OPVPSplashClip; +-class SplashFont; +- +-class OPVPClipPath { +-public: +- OPVPClipPath(OPVPSplashPath *pathA, bool eoA); +- void push(); +- static OPVPClipPath *pop(); +- ~OPVPClipPath() { delete path; } +- OPVPSplashPath *getPath() { return path; } +- bool getEo() { return eo; } +- bool getSaved() { return saved; } +-private: +- OPVPClipPath *copy(); +- OPVPClipPath *next; +- OPVPSplashPath *path; +- bool eo; +- bool saved; +- static OPVPClipPath *stackTop; +-}; +- +-//------------------------------------------------------------------------ +-// Splash +-//------------------------------------------------------------------------ +- +-class OPVPSplash { +-public: +- +- // Create a new rasterizer object. +- OPVPSplash(OPVPWrapper *opvpA, +- int nOptions, const char *optionKeys[], const char *optionVals[]); +- +- virtual ~OPVPSplash(); +- +- //----- state read +- +- SplashPattern *getStrokePattern(); +- SplashPattern *getFillPattern(); +- SplashScreen *getScreen(); +- SplashCoord getLineWidth(); +- int getLineCap(); +- int getLineJoin(); +- SplashCoord getMiterLimit(); +- SplashCoord getFlatness(); +- SplashCoord *getLineDash(); +- int getLineDashLength(); +- SplashCoord getLineDashPhase(); +- OPVPSplashClip *getClip(); +- +- //----- state write +- +- void setStrokePattern(SplashPattern *strokeColor); +- void setFillPattern(SplashPattern *fillColor); +- void setScreen(SplashScreen *screen); +- void setLineWidth(SplashCoord lineWidth); +- void setLineCap(int lineCap); +- void setLineJoin(int lineJoin); +- void setMiterLimit(SplashCoord miterLimit); +- void setFlatness(SplashCoord flatness); +- // the <lineDash> array will be copied +- void setLineDash(SplashCoord *lineDash, int lineDashLength, +- SplashCoord lineDashPhase); +- void clipResetToRect(SplashCoord x0, SplashCoord y0, +- SplashCoord x1, SplashCoord y1); +- SplashError clipToPath(OPVPSplashPath *path, bool eo); +- +- //----- state save/restore +- +- void saveState(); +- SplashError restoreState(); +- void restoreAllDriverState(); +- +- //----- drawing operations +- +- // Fill the bitmap with <color>. This is not subject to clipping. +- void clear(SplashColor color); +- +- // Stroke a path using the current stroke pattern. +- SplashError stroke(OPVPSplashPath *path); +- +- // Fill a path using the current fill pattern. +- SplashError fill(OPVPSplashPath *path, bool eo); +- +- // Draw a character, using the current fill pattern. +- SplashError fillChar(SplashCoord x, SplashCoord y, int c, +- SplashFont *font, Unicode *u, double *fontMat); +- +- // Draw a glyph, using the current fill pattern. This function does +- // not free any data, i.e., it ignores glyph->freeData. +- // not used in vector mode +- void fillGlyph(SplashCoord x, SplashCoord y, +- SplashGlyphBitmap *glyph); +- +- // Draws an image mask using the fill color. This will read <w>*<h> +- // pixels from <src>, in raster order, starting with the top line. +- // "1" pixels will be drawn with the current fill color; "0" pixels +- // are transparent. The matrix: +- // [ mat[0] mat[1] 0 ] +- // [ mat[2] mat[3] 0 ] +- // [ mat[4] mat[5] 1 ] +- // maps a unit square to the desired destination for the image, in +- // PostScript style: +- // [x' y' 1] = [x y 1] * mat +- // Note that the Splash y axis points downward, and the image source +- // is assumed to produce pixels in raster order, starting from the +- // top line. +- SplashError fillImageMask(SplashImageMaskSource src, void *srcData, +- int w, int h, SplashCoord *mat, bool glyphMode); +- +- // Draw an image. This will read <w>*<h> pixels from <src>, in +- // raster order, starting with the top line. These pixels are +- // assumed to be in the source mode, <srcMode>. The following +- // combinations of source and target modes are supported: +- // source target +- // ------ ------ +- // Mono1 Mono1 +- // Mono8 Mono1 -- with dithering +- // Mono8 Mono8 +- // RGB8 RGB8 +- // BGR8packed BGR8Packed +- // The matrix behaves as for fillImageMask. +- SplashError drawImage(SplashImageSource src, void *srcData, +- SplashColorMode srcMode, bool srcAlpha, +- int w, int h, SplashCoord *mat); +- +- //~ drawMaskedImage +- +- //----- misc +- +- // Return the associated bitmap. +- SplashBitmap *getBitmap() { return 0; } +- +- // Toggle debug mode on or off. +- void setDebugMode(bool debugModeA) { debugMode = debugModeA; } +- +- void setColorMode(int colorModeA); +- void setStateBypass(bool bypass) {stateBypass = bypass;} +- void endPage(); +- SplashCoord *getMatrix(); +- void drawSpan(int x0, int x1, int y, bool noClip); +-#ifdef OLD_DRAW_IMAGE +- void drawPixel(int x, int y, SplashColor *color, bool noClip); +-#endif +- void drawPixel(int x, int y, bool noClip); +- void arcToCurve(SplashCoord x0, SplashCoord y0, +- SplashCoord x3, SplashCoord y3, +- SplashCoord cx, SplashCoord cy, SplashCoord *rx1, SplashCoord *ry1, +- SplashCoord *rx2, SplashCoord *ry2); +- +-private: +- void makeBrush(SplashPattern *pattern, opvp_brush_t *brush); +- SplashError doClipPath(OPVPSplashPath *path, bool eo, +- OPVPClipPath *prevClip); +- opvp_cspace_t getOPVPColorSpace(); +- bool equalPattern(SplashPattern *pt1, SplashPattern *pt2); +- SplashError makeRectanglePath(SplashCoord x0, SplashCoord y0, +- SplashCoord x1, SplashCoord y1, OPVPSplashPath **p); +- SplashError drawImageFastWithCTM(SplashImageSource src, void *srcData, +- int w, int h, int tx, int ty, +- SplashCoord *mat); +- SplashError drawImageNotShear(SplashImageSource src, +- void *srcData, +- int w, int h, +- int tx, int ty, +- int scaledWidth, int scaledHeight, +- int xSign, int ySign, bool rot); +- SplashError fillImageMaskFastWithCTM(SplashImageMaskSource src, +- void *srcData, int w, int h, int tx, int ty,SplashCoord *mat); +- SplashError strokeByMyself(OPVPSplashPath *path); +- SplashError fillByMyself(OPVPSplashPath *path, bool eo); +- OPVPSplashXPath *makeDashedPath(OPVPSplashXPath *xPath); +- void transform(SplashCoord *matrix, SplashCoord xi, SplashCoord yi, +- SplashCoord *xo, SplashCoord *yo); +- +- const char *getOption(const char *key, int nOptions, const char *optionKeys[], +- const char *optionVals[]); +- +- OPVPWrapper *opvp; +- int printerContext; +- +- OPVPSplashState *state; +- bool debugMode; +- int colorMode; +- bool stateBypass; +- OPVPClipPath *clipPath; +- +- bool oldLipsDriver; +- bool clipPathNotSaved; +- bool noShearImage; +- bool noLineStyle; +- bool noClipPath; +- bool noMiterLimit; +- bool ignoreMiterLimit; +- bool savedNoClipPath; +- bool noImageMask; +- int bitmapCharThreshold; +- int maxClipPathLength; +- int maxFillPathLength; +- int saveDriverStateCount; +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPSplashClip.cxx b/filter/pdftoopvp/oprs/OPVPSplashClip.cxx +deleted file mode 100644 +index d81fd3f..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashClip.cxx ++++ /dev/null +@@ -1,103 +0,0 @@ +-#include <config.h> +- +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +- +-#include "splash/SplashXPathScanner.h" +-#include "OPVPSplashClip.h" +- +-void OPVPSplashClip::getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA) +-{ +- int i; +- int cxMin = splashRound(xMin), cyMin = splashRound(yMin); +- int cxMax = splashRound(xMax), cyMax = splashRound(yMax); +- int txMin, tyMin, txMax, tyMax; +- +- for (i = 0; i < length; ++i) { +- scanners[i]->getBBox(&txMin,&tyMin,&txMax,&tyMax); +- if (txMin > cxMin) cxMin = txMin; +- if (tyMin > cyMin) cyMin = tyMin; +- if (txMax < cxMax) cxMax = txMax; +- if (tyMax < cyMax) cyMax = tyMax; +- } +- *xMinA = cxMin; +- *yMinA = cyMin; +- *xMaxA = cxMax; +- *yMaxA = cyMax; +-} +- +-OPVPSplashPath *OPVPSplashClip::makePath() +-{ +- int i,j; +- int y, x0, x1; +- int txMin, tyMin, txMax, tyMax; +- Guchar *cbuf,*tbuf; +- int blen; +- OPVPSplashPath *p = new OPVPSplashPath(); +- +- getBBox(&txMin,&tyMin,&txMax,&tyMax); +- if (txMin > txMax || tyMin > tyMax) return p; +- blen = txMax-txMin+1; +- cbuf = new Guchar[blen]; +- tbuf = new Guchar[blen]; +- +- for (y = tyMin;y <= tyMax;y++) { +- /* clear buffer */ +- for (i = 0;i < blen;i++) { +- cbuf[i] = 0; +- } +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- SplashXPathScanIterator iterator(*scanners[0], y); +- while (iterator.getNextSpan(&x0, &x1)) +-#else +- while (scanners[0]->getNextSpan(y,&x0,&x1)) +-#endif +- { +- if (x0 < txMin) x0 = txMin; +- if (x1 > txMax) x1 = txMax; +- for (i = x0;i < x1;i++) { +- cbuf[i-txMin] = 1; +- } +- } +- for (j = 1; j < length; ++j) { +- /* clear buffer */ +- for (i = 0;i < blen;i++) { +- tbuf[i] = 0; +- } +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- SplashXPathScanIterator iterator2(*scanners[j], y); +- while (iterator2.getNextSpan(&x0, &x1)) +-#else +- while (scanners[j]->getNextSpan(y,&x0,&x1)) +-#endif +- { +- if (x0 < txMin) x0 = txMin; +- if (x1 > txMax) x1 = txMax; +- for (i = x0;i < x1;i++) { +- tbuf[i-txMin] = 1; +- } +- } +- /* and buffer */ +- for (i = 0;i < blen;i++) { +- cbuf[i] &= tbuf[i]; +- } +- } +- /* scan buffer and add path */ +- for (i = 0;i < blen;i = j) { +- if (cbuf[i] != 0) { +- p->moveTo(i+txMin,y); +- for (j = i+1;j < blen && cbuf[j] != 0;j++); +- p->lineTo(j-1+txMin,y); +- p->lineTo(j-1+txMin,y+1); +- p->lineTo(i+txMin,y+1); +- p->close(); +- } else { +- j = i+1; +- } +- } +- } +- delete[] cbuf; +- delete[] tbuf; +- return p; +-} +diff --git a/filter/pdftoopvp/oprs/OPVPSplashClip.h b/filter/pdftoopvp/oprs/OPVPSplashClip.h +deleted file mode 100644 +index 05bd57b..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashClip.h ++++ /dev/null +@@ -1,30 +0,0 @@ +-#ifndef OPVPSPLASHCLIP_H +-#define OPVPSPLASHCLIP_H +- +-#include "splash/SplashClip.h" +-#include "OPVPSplashPath.h" +- +-class OPVPSplashClip : public SplashClip { +-public: +- +- OPVPSplashClip(SplashCoord x0, SplashCoord y0, +- SplashCoord x1, SplashCoord y1, +- bool antialiasA) : +- SplashClip(x0,y0,x1,y1,antialiasA) { +- } +- +- OPVPSplashClip(SplashClip *sclip) : SplashClip(sclip) { +- } +- +- OPVPSplashClip *copy() { return new OPVPSplashClip(this); } +- +- ~OPVPSplashClip() {} +- +- void getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA); +- OPVPSplashPath *makePath(); +-private: +- OPVPSplashClip(OPVPSplashClip *clip) : SplashClip(clip) { +- } +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPSplashPath.cxx b/filter/pdftoopvp/oprs/OPVPSplashPath.cxx +deleted file mode 100644 +index f03c128..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashPath.cxx ++++ /dev/null +@@ -1,185 +0,0 @@ +-#include <config.h> +-#include <stdio.h> +-#include "splash/SplashMath.h" +-#include "OPVPSplashPath.h" +-#include "OPVPWrapper.h" +-#include "OPRS.h" +- +-void OPVPSplashPath::getBBox(int *xMinA, int *yMinA, int *xMaxA, +- int *yMaxA) +-{ +- int i; +- SplashCoord xMin, yMin, xMax, yMax; +- +- if (length <= 0) { +- /* return far away point */ +- *xMinA = *yMinA = *xMaxA = *yMaxA = 0xC0000000; +- return; +- } +- xMin = xMax = pts[0].x; +- yMin = yMax = pts[0].y; +- for (i = 1;i < length;i++) { +- if (pts[i].x > xMax) { +- xMax = pts[i].x; +- } else if (pts[i].x < xMin) { +- xMin = pts[i].x; +- } +- if (pts[i].y > yMax) { +- yMax = pts[i].y; +- } else if (pts[i].y < yMin) { +- yMin = pts[i].y; +- } +- } +- *xMinA = splashRound(xMin); +- *xMaxA = splashRound(xMax); +- *yMinA = splashRound(yMin); +- *yMaxA = splashRound(yMax); +-} +- +-bool OPVPSplashPath::isRectanglePath( +- SplashCoord *xMin, SplashCoord *yMin, SplashCoord *xMax, SplashCoord *yMax) +-{ +- if (length != 5 +- || pts[0].x != pts[4].x +- || pts[0].y != pts[4].y +- || flags[0] != (splashPathFirst | splashPathClosed) +- || flags[1] != 0 +- || flags[2] != 0 +- || flags[3] != 0 +- || flags[4] != (splashPathLast | splashPathClosed)) { +- return false; +- } +- if (splashRound(pts[0].x) == splashRound(pts[1].x)) { +- if (splashRound(pts[1].y) != splashRound(pts[2].y) +- || splashRound(pts[2].x) != splashRound(pts[3].x) +- || splashRound(pts[3].y) != splashRound(pts[4].y)) { +- return false; +- } +- } else if (splashRound(pts[0].y) == splashRound(pts[1].y)) { +- if (splashRound(pts[1].x) != splashRound(pts[2].x) +- || splashRound(pts[2].y) != splashRound(pts[3].y) +- || splashRound(pts[3].x) != splashRound(pts[4].x)) { +- return false; +- } +- } else { +- return false; +- } +- *xMin = pts[0].x; +- *yMin = pts[0].y; +- *xMax = pts[2].x; +- *yMax = pts[2].y; +- if (*xMin > *xMax) { +- SplashCoord t = *xMin; +- +- *xMin = *xMax; +- *xMax = t; +- } +- if (*yMin > *yMax) { +- SplashCoord t = *yMin; +- +- *yMin = *yMax; +- *yMax = t; +- } +- return true; +-} +- +-SplashError OPVPSplashPath::makePath(OPVPWrapper *opvp) +-{ +- int i,j; +- opvp_fix_t x,y; +- +- if (opvp->NewPath() < 0) { +- OPRS::error("NewPath error\n"); +- return splashErrOPVP; +- } +- for (i = 0;i < length;i = j) { +- int curve = 0; +- int n; +- opvp_point_t *points; +- int k; +- +- if ((flags[i] & splashPathFirst) != 0) { +- /* first point of a subpath */ +- if ((flags[i] & splashPathLast) == 0 +- || (flags[i] & splashPathClosed) != 0) { +- OPVP_F2FIX((pts[i].x),(x)); +- OPVP_F2FIX((pts[i].y),(y)); +- if (opvp->SetCurrentPoint(x,y) < 0) { +- OPRS::error("SetCurrentPoint error\n"); +- return splashErrOPVP; +- } +- } +- j = i+1; +- continue; +- } +- if (i+2 < length && flags[i] == splashPathCurve) { +- /* curve */ +- curve = 1; +- for (j = i;j+2 < length +- && flags[j] == splashPathCurve;j += 3); +- } else { +- curve = 0; +- for (j = i;j < length +- && (flags[j] & splashPathCurve) == 0 +- && (flags[j] & splashPathFirst) == 0;j++); +- } +- +- n = j-i; +- points = new opvp_point_t[n]; +- /* copy points */ +- for (k = i; k < j;k++) { +- OPVP_F2FIX((pts[k].x),(points[k-i].x)); +- OPVP_F2FIX((pts[k].y),(points[k-i].y)); +- } +- +- if (curve) { +- /* curve */ +- if (opvp->BezierPath(n,points) < 0) { +- OPRS::error("BezierPath error\n"); +- return splashErrOPVP; +- } +- } else { +- /* line */ +- bool closed = (flags[j-1] & splashPathClosed) != 0; +- +- if (closed) { +- if (opvp->LinePath(OPVP_PATHCLOSE, +- n,points) < 0) { +- OPRS::error("LinePath error\n"); +- return splashErrOPVP; +- } +- } else { +- if (opvp->LinePath(OPVP_PATHOPEN, +- n,points) < 0) { +- OPRS::error("LinePath error\n"); +- return splashErrOPVP; +- } +- } +- } +- delete[] points; +- } +- if (opvp->EndPath() < 0) { +- OPRS::error("EndPath error\n"); +- return splashErrOPVP; +- } +- return splashOk; +-} +- +-void OPVPSplashPath::closeAllSubPath() +-{ +- int i; +- int f = 0; +- +- for (i = 0;i < length;i++) { +- if ((flags[i] & splashPathFirst) != 0) { +- f = i; +- } +- if ((flags[i] & splashPathLast) != 0) { +- if (pts[f].x == pts[i].x +- && pts[f].y == pts[i].y) { +- flags[f] |= splashPathClosed; +- flags[i] |= splashPathClosed; +- } +- } +- } +-} +diff --git a/filter/pdftoopvp/oprs/OPVPSplashPath.h b/filter/pdftoopvp/oprs/OPVPSplashPath.h +deleted file mode 100644 +index 38bfeff..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashPath.h ++++ /dev/null +@@ -1,28 +0,0 @@ +-#ifndef OPVPSPLASHPATH_H +-#define OPVPSPLASHPATH_H +- +-#include "splash/SplashPath.h" +-#include "OPVPWrapper.h" +- +-class OPVPSplashPath : public SplashPath { +-public: +- +- OPVPSplashPath() {}; +- +- OPVPSplashPath(SplashPath *spath) : SplashPath(spath) { +- } +- +- // Copy a path. +- OPVPSplashPath *copy() { return new OPVPSplashPath(this); } +- +- void getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA); +- bool isRectanglePath(SplashCoord *xMin, SplashCoord *yMin, +- SplashCoord *xMax, SplashCoord *yMax); +- SplashError makePath(OPVPWrapper *opvp); +- void closeAllSubPath(); +-private: +- OPVPSplashPath(OPVPSplashPath *path) : SplashPath(path) { +- } +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPSplashState.cxx b/filter/pdftoopvp/oprs/OPVPSplashState.cxx +deleted file mode 100644 +index f5ba705..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashState.cxx ++++ /dev/null +@@ -1,176 +0,0 @@ +-//======================================================================== +-// +-// SplashState.cc +-// +-//======================================================================== +- +-#include <config.h> +- +-#ifdef USE_GCC_PRAGMAS +-#pragma implementation +-#endif +- +-#include <string.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include "goo/gmem.h" +-#include "splash/SplashPattern.h" +-#include "splash/SplashScreen.h" +-#include "splash/SplashBitmap.h" +-#include "splash/SplashState.h" +-#include "OPVPSplashState.h" +-#include "OPVPSplashClip.h" +- +-//------------------------------------------------------------------------ +-// SplashState +-//------------------------------------------------------------------------ +- +-OPVPSplashState::OPVPSplashState(int width, int height, bool vectorAntialias, +- SplashScreenParams *screenParams) { +- SplashColor color; +- +- matrix[0] = 1; matrix[1] = 0; +- matrix[2] = 0; matrix[3] = 1; +- matrix[4] = 0; matrix[5] = 0; +- memset(&color, 0, sizeof(SplashColor)); +- strokePattern = new SplashSolidColor(color); +- fillPattern = new SplashSolidColor(color); +- screen = new SplashScreen(screenParams); +- blendFunc = NULL; +- strokeAlpha = 1; +- fillAlpha = 1; +- lineWidth = 0; +- lineCap = splashLineCapButt; +- lineJoin = splashLineJoinMiter; +- miterLimit = 10; +- flatness = 1; +- lineDash = NULL; +- lineDashLength = 0; +- lineDashPhase = 0; +- strokeAdjust = false; +- clip = new OPVPSplashClip(0, 0, width - 0.001, +- height - 0.001, vectorAntialias); +- softMask = NULL; +- deleteSoftMask = false; +- inNonIsolatedGroup = false; +- next = NULL; +-} +- +-OPVPSplashState::OPVPSplashState(int width, int height, bool vectorAntialias, +- SplashScreen *screenA) { +- SplashColor color; +- +- matrix[0] = 1; matrix[1] = 0; +- matrix[2] = 0; matrix[3] = 1; +- matrix[4] = 0; matrix[5] = 0; +- memset(&color, 0, sizeof(SplashColor)); +- strokePattern = new SplashSolidColor(color); +- fillPattern = new SplashSolidColor(color); +- screen = screenA->copy(); +- blendFunc = NULL; +- strokeAlpha = 1; +- fillAlpha = 1; +- lineWidth = 0; +- lineCap = splashLineCapButt; +- lineJoin = splashLineJoinMiter; +- miterLimit = 10; +- flatness = 1; +- lineDash = NULL; +- lineDashLength = 0; +- lineDashPhase = 0; +- strokeAdjust = false; +- clip = new OPVPSplashClip(0, 0, width - 0.001, +- height - 0.001, vectorAntialias); +- softMask = NULL; +- deleteSoftMask = false; +- inNonIsolatedGroup = false; +- next = NULL; +-} +- +-OPVPSplashState::OPVPSplashState(OPVPSplashState *state) { +- memcpy(matrix, state->matrix, 6 * sizeof(SplashCoord)); +- strokePattern = state->strokePattern->copy(); +- fillPattern = state->fillPattern->copy(); +- screen = state->screen->copy(); +- blendFunc = state->blendFunc; +- strokeAlpha = state->strokeAlpha; +- fillAlpha = state->fillAlpha; +- lineWidth = state->lineWidth; +- lineCap = state->lineCap; +- lineJoin = state->lineJoin; +- miterLimit = state->miterLimit; +- flatness = state->flatness; +- if (state->lineDash) { +- lineDashLength = state->lineDashLength; +- lineDash = (SplashCoord *)gmallocn(lineDashLength, sizeof(SplashCoord)); +- memcpy(lineDash, state->lineDash, lineDashLength * sizeof(SplashCoord)); +- } else { +- lineDash = NULL; +- lineDashLength = 0; +- } +- lineDashPhase = state->lineDashPhase; +- strokeAdjust = state->strokeAdjust; +- clip = state->clip->copy(); +- softMask = state->softMask; +- deleteSoftMask = false; +- inNonIsolatedGroup = state->inNonIsolatedGroup; +- next = NULL; +-} +- +-OPVPSplashState::~OPVPSplashState() { +- delete strokePattern; +- delete fillPattern; +- delete screen; +- gfree(lineDash); +- delete clip; +- if (deleteSoftMask && softMask) { +- delete softMask; +- } +-} +- +-void OPVPSplashState::setState(Splash *osplash) { +- osplash->setMatrix(matrix); +- osplash->setFlatness(flatness); +- osplash->setLineDash(lineDash,lineDashLength,lineDashPhase); +- osplash->setLineCap(lineCap); +- osplash->setStrokeAdjust(strokeAdjust); +- osplash->setMiterLimit(miterLimit); +- osplash->setLineJoin(lineJoin); +-} +- +-void OPVPSplashState::setStrokePattern(SplashPattern *strokePatternA) { +- delete strokePattern; +- strokePattern = strokePatternA; +-} +- +-void OPVPSplashState::setFillPattern(SplashPattern *fillPatternA) { +- delete fillPattern; +- fillPattern = fillPatternA; +-} +- +-void OPVPSplashState::setScreen(SplashScreen *screenA) { +- delete screen; +- screen = screenA; +-} +- +-void OPVPSplashState::setLineDash(SplashCoord *lineDashA, int lineDashLengthA, +- SplashCoord lineDashPhaseA) { +- gfree(lineDash); +- lineDashLength = lineDashLengthA; +- if (lineDashLength > 0) { +- lineDash = (SplashCoord *)gmallocn(lineDashLength, sizeof(SplashCoord)); +- memcpy(lineDash, lineDashA, lineDashLength * sizeof(SplashCoord)); +- } else { +- lineDash = NULL; +- } +- lineDashPhase = lineDashPhaseA; +-} +- +-void OPVPSplashState::setSoftMask(SplashBitmap *softMaskA) { +- if (deleteSoftMask) { +- delete softMask; +- } +- softMask = softMaskA; +- deleteSoftMask = true; +-} +diff --git a/filter/pdftoopvp/oprs/OPVPSplashState.h b/filter/pdftoopvp/oprs/OPVPSplashState.h +deleted file mode 100644 +index dc91e51..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashState.h ++++ /dev/null +@@ -1,93 +0,0 @@ +-//======================================================================== +-// +-// OPVPSplashState.h +-// +-//======================================================================== +- +-#ifndef OPVPSPLASHSTATE_H +-#define OPVPSPLASHSTATE_H +- +-#ifdef USE_GCC_PRAGMAS +-#pragma interface +-#endif +- +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include "splash/SplashTypes.h" +-#include "splash/SplashState.h" +-#include "splash/Splash.h" +- +-class SplashPattern; +-class SplashScreen; +-class OPVPSplashClip; +-class SplashBitmap; +- +-//------------------------------------------------------------------------ +-// SplashState +-//------------------------------------------------------------------------ +- +-class OPVPSplashState { +-public: +- +- // Create a new state object, initialized with default settings. +- OPVPSplashState(int width, int height, bool vectorAntialias, +- SplashScreenParams *screenParams); +- OPVPSplashState(int width, int height, bool vectorAntialias, +- SplashScreen *screenA); +- +- // Copy a state object. +- OPVPSplashState *copy() { return new OPVPSplashState(this); } +- +- ~OPVPSplashState(); +- +- void setState(Splash *osplash); +- +- // Set the stroke pattern. This does not copy <strokePatternA>. +- void setStrokePattern(SplashPattern *strokePatternA); +- +- // Set the fill pattern. This does not copy <fillPatternA>. +- void setFillPattern(SplashPattern *fillPatternA); +- +- // Set the screen. This does not copy <screenA>. +- void setScreen(SplashScreen *screenA); +- +- // Set the line dash pattern. This copies the <lineDashA> array. +- void setLineDash(SplashCoord *lineDashA, int lineDashLengthA, +- SplashCoord lineDashPhaseA); +- +- // Set the soft mask bitmap. +- void setSoftMask(SplashBitmap *softMaskA); +- +-private: +- +- OPVPSplashState(OPVPSplashState *state); +- +- SplashCoord matrix[6]; +- SplashPattern *strokePattern; +- SplashPattern *fillPattern; +- SplashScreen *screen; +- SplashBlendFunc blendFunc; +- SplashCoord strokeAlpha; +- SplashCoord fillAlpha; +- SplashCoord lineWidth; +- int lineCap; +- int lineJoin; +- SplashCoord miterLimit; +- SplashCoord flatness; +- SplashCoord *lineDash; +- int lineDashLength; +- SplashCoord lineDashPhase; +- bool strokeAdjust; +- OPVPSplashClip *clip; +- SplashBitmap *softMask; +- bool deleteSoftMask; +- bool inNonIsolatedGroup; +- +- OPVPSplashState *next; // used by OPVPSplash class +- +- friend class OPVPSplash; +- friend class OPVPSplashXPath; +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx b/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx +deleted file mode 100644 +index 53ca21d..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx ++++ /dev/null +@@ -1,88 +0,0 @@ +-#include <config.h> +-#include <stdio.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include "splash/Splash.h" +-#include "splash/SplashMath.h" +-#include "OPVPSplashClip.h" +-#include "OPVPSplashXPath.h" +-#include "OPVPWrapper.h" +-#include "OPVPSplash.h" +- +-void OPVPSplashXPath::strokeNarrow(OPVPSplash *splash, OPVPSplashState *state) +-{ +- SplashXPathSeg *seg; +- int x0, x1, x2, x3, y0, y1, x, y, t; +- SplashCoord dx, dy, dxdy; +- SplashClipResult clipRes; +- int i; +- +- for (i = 0, seg = segs; i < length; ++i, ++seg) { +- +- x0 = splashFloor(seg->x0); +- x1 = splashFloor(seg->x1); +- y0 = splashFloor(seg->y0); +- y1 = splashFloor(seg->y1); +- +- // horizontal segment +- if (y0 == y1) { +- if (x0 > x1) { +- t = x0; x0 = x1; x1 = t; +- } +- if ((clipRes = state->clip->testSpan(x0, x1, y0)) +- != splashClipAllOutside) { +- splash->drawSpan(x0, x1, y0, clipRes == splashClipAllInside); +- } +- +- // segment with |dx| > |dy| +- } else if (splashAbs(seg->dxdy) > 1) { +- dx = seg->x1 - seg->x0; +- dy = seg->y1 - seg->y0; +- dxdy = seg->dxdy; +- if (y0 > y1) { +- t = y0; y0 = y1; y1 = t; +- t = x0; x0 = x1; x1 = t; +- dx = -dx; +- dy = -dy; +- } +- if ((clipRes = state->clip->testRect(x0 <= x1 ? x0 : x1, y0, +- x0 <= x1 ? x1 : x0, y1)) +- != splashClipAllOutside) { +- if (dx > 0) { +- x2 = x0; +- for (y = y0; y < y1; ++y) { +- x3 = splashFloor(seg->x0 + (y + 1 - seg->y0) * dxdy); +- splash->drawSpan(x2, x3 - 1, y, clipRes == splashClipAllInside); +- x2 = x3; +- } +- splash->drawSpan(x2, x1, y, clipRes == splashClipAllInside); +- } else { +- x2 = x0; +- for (y = y0; y < y1; ++y) { +- x3 = splashFloor(seg->x0 + (y + 1 - seg->y0) * dxdy); +- splash->drawSpan(x3 + 1, x2, y, clipRes == splashClipAllInside); +- x2 = x3; +- } +- splash->drawSpan(x1, x2, y, clipRes == splashClipAllInside); +- } +- } +- +- // segment with |dy| > |dx| +- } else { +- dxdy = seg->dxdy; +- if (y0 > y1) { +- t = y0; y0 = y1; y1 = t; +- } +- if ((clipRes = state->clip->testRect(x0 <= x1 ? x0 : x1, y0, +- x0 <= x1 ? x1 : x0, y1)) +- != splashClipAllOutside) { +- for (y = y0; y <= y1; ++y) { +- x = splashFloor(seg->x0 + (y - seg->y0) * dxdy); +- splash->drawPixel(x, y, clipRes == splashClipAllInside); +- } +- } +- } +- } +-} +- +diff --git a/filter/pdftoopvp/oprs/OPVPSplashXPath.h b/filter/pdftoopvp/oprs/OPVPSplashXPath.h +deleted file mode 100644 +index 2a07782..0000000 +--- a/filter/pdftoopvp/oprs/OPVPSplashXPath.h ++++ /dev/null +@@ -1,32 +0,0 @@ +-#ifndef OPVPSPLASHXPATH_H +-#define OPVPSPLASHXPATH_H +- +-#include <config.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include "splash/SplashXPath.h" +-#include "OPVPSplashPath.h" +-#include "OPVPSplashState.h" +- +-class OPVPSplash; +- +-class OPVPSplashXPath : public SplashXPath { +-public: +- OPVPSplashXPath(OPVPSplashPath *path, SplashCoord *matrix, +- SplashCoord flatness, bool closeSubpaths) : +- SplashXPath(path,matrix,flatness,closeSubpaths) { +- } +- +- // Copy an expanded path. +- OPVPSplashXPath *copy() { return new OPVPSplashXPath(this); } +- +- OPVPSplashXPath *makeDashedPath(OPVPSplashState *state); +- void strokeNarrow(OPVPSplash *splash, OPVPSplashState *state); +-private: +- OPVPSplashXPath() : SplashXPath(new SplashPath(), 0, 0, false) {}; +- OPVPSplashXPath(OPVPSplashXPath *xPath) : SplashXPath(xPath) { +- } +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPWrapper.cxx b/filter/pdftoopvp/oprs/OPVPWrapper.cxx +deleted file mode 100644 +index 3453e0d..0000000 +--- a/filter/pdftoopvp/oprs/OPVPWrapper.cxx ++++ /dev/null +@@ -1,910 +0,0 @@ +-/* +- OPVPWrapper.cc +-*/ +- +- +-#include <config.h> +-#include <stdio.h> +-#include "OPRS.h" +-#include "OPVPWrapper.h" +-#include "OPVPWrapper_0_2.h" +-#include <string.h> +-#include <dlfcn.h> +- +-OPVPWrapper::OPVPWrapper(void *opvpHandleA, opvp_int_t *opvpErrorNoA, +- opvp_api_procs_t *procsA, opvp_dc_t printerContextA) +-{ +- procs = procsA; +- opvpHandle = opvpHandleA; +- opvpErrorNo = opvpErrorNoA; +- printerContext = printerContextA; +- version[0] = 1; +- version[1] = 0; +- supportClosePrinter = (procs->opvpClosePrinter != 0); +- supportStartJob = (procs->opvpStartJob != 0); +- supportEndJob = (procs->opvpEndJob != 0); +- supportAbortJob = (procs->opvpAbortJob != 0); +- supportStartDoc = (procs->opvpStartDoc != 0); +- supportEndDoc = (procs->opvpEndDoc != 0); +- supportStartPage = (procs->opvpStartPage != 0); +- supportEndPage = (procs->opvpEndPage != 0); +- supportResetCTM = (procs->opvpResetCTM != 0); +- supportSetCTM = (procs->opvpSetCTM != 0); +- supportGetCTM = (procs->opvpGetCTM != 0); +- supportInitGS = (procs->opvpInitGS != 0); +- supportSaveGS = (procs->opvpSaveGS != 0); +- supportRestoreGS = (procs->opvpRestoreGS != 0); +- supportQueryColorSpace = (procs->opvpQueryColorSpace != 0); +- supportSetColorSpace = (procs->opvpSetColorSpace != 0); +- supportGetColorSpace = (procs->opvpGetColorSpace != 0); +- supportSetFillMode = (procs->opvpSetFillMode != 0); +- supportGetFillMode = (procs->opvpGetFillMode != 0); +- supportSetAlphaConstant = (procs->opvpSetAlphaConstant != 0); +- supportGetAlphaConstant = (procs->opvpGetAlphaConstant != 0); +- supportSetLineWidth = (procs->opvpSetLineWidth != 0); +- supportGetLineWidth = (procs->opvpGetLineWidth != 0); +- supportSetLineDash = (procs->opvpSetLineDash != 0); +- supportGetLineDash = (procs->opvpGetLineDash != 0); +- supportSetLineDashOffset = (procs->opvpSetLineDashOffset != 0); +- supportGetLineDashOffset = (procs->opvpGetLineDashOffset != 0); +- supportSetLineStyle = (procs->opvpSetLineStyle != 0); +- supportGetLineStyle = (procs->opvpGetLineStyle != 0); +- supportSetLineCap = (procs->opvpSetLineCap != 0); +- supportGetLineCap = (procs->opvpGetLineCap != 0); +- supportSetLineJoin = (procs->opvpSetLineJoin != 0); +- supportGetLineJoin = (procs->opvpGetLineJoin != 0); +- supportSetMiterLimit = (procs->opvpSetMiterLimit != 0); +- supportGetMiterLimit = (procs->opvpGetMiterLimit != 0); +- supportSetPaintMode = (procs->opvpSetPaintMode != 0); +- supportGetPaintMode = (procs->opvpGetPaintMode != 0); +- supportSetStrokeColor = (procs->opvpSetStrokeColor != 0); +- supportSetFillColor = (procs->opvpSetFillColor != 0); +- supportSetBgColor = (procs->opvpSetBgColor != 0); +- supportNewPath = (procs->opvpNewPath != 0); +- supportEndPath = (procs->opvpEndPath != 0); +- supportStrokePath = (procs->opvpStrokePath != 0); +- supportFillPath = (procs->opvpFillPath != 0); +- supportStrokeFillPath = (procs->opvpStrokeFillPath != 0); +- supportSetClipPath = (procs->opvpSetClipPath != 0); +- supportSetCurrentPoint = (procs->opvpSetCurrentPoint != 0); +- supportLinePath = (procs->opvpLinePath != 0); +- supportPolygonPath = (procs->opvpPolygonPath != 0); +- supportRectanglePath = (procs->opvpRectanglePath != 0); +- supportRoundRectanglePath = (procs->opvpRoundRectanglePath != 0); +- supportBezierPath = (procs->opvpBezierPath != 0); +- supportArcPath = (procs->opvpArcPath != 0); +- supportDrawImage = (procs->opvpDrawImage != 0); +- supportStartDrawImage = (procs->opvpStartDrawImage != 0); +- supportTransferDrawImage = (procs->opvpTransferDrawImage != 0); +- supportEndDrawImage = (procs->opvpEndDrawImage != 0); +- supportStartScanline = (procs->opvpStartScanline != 0); +- supportScanline = (procs->opvpScanline != 0); +- supportEndScanline = (procs->opvpEndScanline != 0); +- supportStartRaster = (procs->opvpStartRaster != 0); +- supportTransferRasterData = (procs->opvpTransferRasterData != 0); +- supportSkipRaster = (procs->opvpSkipRaster != 0); +- supportEndRaster = (procs->opvpEndRaster != 0); +- supportStartStream = (procs->opvpStartStream != 0); +- supportTransferStreamData = (procs->opvpTransferStreamData != 0); +- supportEndStream = (procs->opvpEndStream != 0); +- supportQueryDeviceCapability = (procs->opvpQueryDeviceCapability != 0); +- supportQueryDeviceInfo = (procs->opvpQueryDeviceInfo != 0); +- supportResetClipPath = (procs->opvpResetClipPath != 0); +-} +- +-OPVPWrapper::~OPVPWrapper() +-{ +- unloadDriver(opvpHandle); +- opvpHandle = 0; +-} +- +-opvp_result_t OPVPWrapper::ClosePrinter() +-{ +- if (!supportClosePrinter) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpClosePrinter(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartJob(const opvp_char_t *jobInfo) +-{ +- if (!supportStartJob) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartJob(printerContext,jobInfo); +-} +- +-opvp_result_t OPVPWrapper::EndJob() +-{ +- if (!supportEndJob) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndJob(printerContext); +-} +- +-opvp_result_t OPVPWrapper::AbortJob() +-{ +- if (!supportAbortJob) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpAbortJob(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartDoc(const opvp_char_t *docInfo) +-{ +- if (!supportStartDoc) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartDoc(printerContext,docInfo); +-} +- +-opvp_result_t OPVPWrapper::EndDoc() +-{ +- if (!supportEndDoc) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndDoc(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartPage(const opvp_char_t *pageInfo) +-{ +- if (!supportStartPage) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartPage(printerContext,pageInfo); +-} +- +-opvp_result_t OPVPWrapper::EndPage() +-{ +- if (!supportEndPage) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndPage(printerContext); +-} +- +-opvp_result_t OPVPWrapper::QueryDeviceCapability(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf) +-{ +- if (!supportQueryDeviceCapability) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpQueryDeviceCapability(printerContext,queryflag, +- buflen,infoBuf); +-} +- +-opvp_result_t OPVPWrapper::QueryDeviceInfo(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf) +-{ +- if (!supportQueryDeviceInfo) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpQueryDeviceInfo(printerContext,queryflag, +- buflen,infoBuf); +-} +- +-opvp_result_t OPVPWrapper::ResetCTM() +-{ +- if (!supportResetCTM) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpResetCTM(printerContext); +-} +- +-opvp_result_t OPVPWrapper::SetCTM(const opvp_ctm_t *pCTM) +-{ +- if (!supportSetCTM) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetCTM(printerContext,pCTM); +-} +- +-opvp_result_t OPVPWrapper::GetCTM(opvp_ctm_t *pCTM) +-{ +- if (!supportGetCTM) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetCTM(printerContext,pCTM); +-} +- +-opvp_result_t OPVPWrapper::InitGS() +-{ +- if (!supportInitGS) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpInitGS(printerContext); +-} +- +-opvp_result_t OPVPWrapper::SaveGS() +-{ +- if (!supportSaveGS) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSaveGS(printerContext); +-} +- +-opvp_result_t OPVPWrapper::RestoreGS() +-{ +- if (!supportRestoreGS) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpRestoreGS(printerContext); +-} +- +-opvp_result_t OPVPWrapper::QueryColorSpace(opvp_int_t *pnum, +- opvp_cspace_t *pcspace) +-{ +- if (!supportQueryColorSpace) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpQueryColorSpace(printerContext,pnum,pcspace); +-} +- +-opvp_result_t OPVPWrapper::SetColorSpace(opvp_cspace_t cspace) +-{ +- if (!supportSetColorSpace) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetColorSpace(printerContext,cspace); +-} +- +-opvp_result_t OPVPWrapper::GetColorSpace(opvp_cspace_t *pcspace) +-{ +- if (!supportGetColorSpace) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetColorSpace(printerContext,pcspace); +-} +- +-opvp_result_t OPVPWrapper::SetFillMode(opvp_fillmode_t fillmode) +-{ +- if (!supportSetFillMode) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetFillMode(printerContext,fillmode); +-} +- +-opvp_result_t OPVPWrapper::GetFillMode(opvp_fillmode_t *pfillmode) +-{ +- if (!supportGetFillMode) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetFillMode(printerContext,pfillmode); +-} +- +-opvp_result_t OPVPWrapper::SetAlphaConstant(opvp_float_t alpha) +-{ +- if (!supportSetAlphaConstant) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetAlphaConstant(printerContext,alpha); +-} +- +-opvp_result_t OPVPWrapper::GetAlphaConstant(opvp_float_t *palpha) +-{ +- if (!supportGetAlphaConstant) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetAlphaConstant(printerContext,palpha); +-} +- +-opvp_result_t OPVPWrapper::SetLineWidth(opvp_fix_t width) +-{ +- if (!supportSetLineWidth) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineWidth(printerContext,width); +-} +- +-opvp_result_t OPVPWrapper::GetLineWidth(opvp_fix_t *pwidth) +-{ +- if (!supportGetLineWidth) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineWidth(printerContext,pwidth); +-} +- +-opvp_result_t OPVPWrapper::SetLineDash(opvp_int_t num, +- const opvp_fix_t *pdash) +-{ +- if (!supportSetLineDash) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineDash(printerContext,num,pdash); +-} +- +-opvp_result_t OPVPWrapper::GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash) +-{ +- if (!supportGetLineDash) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineDash(printerContext,pnum,pdash); +-} +- +-opvp_result_t OPVPWrapper::SetLineDashOffset(opvp_fix_t offset) +-{ +- if (!supportSetLineDashOffset) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineDashOffset(printerContext,offset); +-} +- +-opvp_result_t OPVPWrapper::GetLineDashOffset(opvp_fix_t *poffset) +-{ +- if (!supportGetLineDashOffset) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineDashOffset(printerContext,poffset); +-} +- +-opvp_result_t OPVPWrapper::SetLineStyle(opvp_linestyle_t linestyle) +-{ +- if (!supportSetLineStyle) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineStyle(printerContext,linestyle); +-} +- +-opvp_result_t OPVPWrapper::GetLineStyle(opvp_linestyle_t *plinestyle) +-{ +- if (!supportGetLineStyle) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineStyle(printerContext,plinestyle); +-} +- +-opvp_result_t OPVPWrapper::SetLineCap(opvp_linecap_t linecap) +-{ +- if (!supportSetLineCap) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineCap(printerContext,linecap); +-} +- +-opvp_result_t OPVPWrapper::GetLineCap(opvp_linecap_t *plinecap) +-{ +- if (!supportGetLineCap) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineCap(printerContext,plinecap); +-} +- +-opvp_result_t OPVPWrapper::SetLineJoin(opvp_linejoin_t linejoin) +-{ +- if (!supportSetLineJoin) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetLineJoin(printerContext,linejoin); +-} +- +-opvp_result_t OPVPWrapper::GetLineJoin(opvp_linejoin_t *plinejoin) +-{ +- if (!supportGetLineJoin) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetLineJoin(printerContext,plinejoin); +-} +- +-opvp_result_t OPVPWrapper::SetMiterLimit(opvp_fix_t miterlimit) +-{ +- if (!supportSetMiterLimit) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetMiterLimit(printerContext,miterlimit); +-} +- +-opvp_result_t OPVPWrapper::GetMiterLimit(opvp_fix_t *pmiterlimit) +-{ +- if (!supportGetMiterLimit) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetMiterLimit(printerContext,pmiterlimit); +-} +- +-opvp_result_t OPVPWrapper::SetPaintMode(opvp_paintmode_t paintmode) +-{ +- if (!supportSetPaintMode) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetPaintMode(printerContext,paintmode); +-} +- +-opvp_result_t OPVPWrapper::GetPaintMode(opvp_paintmode_t *ppaintmode) +-{ +- if (!supportGetPaintMode) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpGetPaintMode(printerContext,ppaintmode); +-} +- +-opvp_result_t OPVPWrapper::SetStrokeColor(const opvp_brush_t *brush) +-{ +- if (!supportSetStrokeColor) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetStrokeColor(printerContext,brush); +-} +- +-opvp_result_t OPVPWrapper::SetFillColor(const opvp_brush_t *brush) +-{ +- if (!supportSetFillColor) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetFillColor(printerContext,brush); +-} +- +-opvp_result_t OPVPWrapper::SetBgColor(const opvp_brush_t *brush) +-{ +- if (!supportSetBgColor) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetBgColor(printerContext,brush); +-} +- +-opvp_result_t OPVPWrapper::NewPath() +-{ +- if (!supportNewPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpNewPath(printerContext); +-} +- +-opvp_result_t OPVPWrapper::EndPath() +-{ +- if (!supportEndPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndPath(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StrokePath() +-{ +- if (!supportStrokePath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStrokePath(printerContext); +-} +- +-opvp_result_t OPVPWrapper::FillPath() +-{ +- if (!supportFillPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpFillPath(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StrokeFillPath() +-{ +- if (!supportStrokeFillPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStrokeFillPath(printerContext); +-} +- +-opvp_result_t OPVPWrapper::SetClipPath(opvp_cliprule_t clipRule) +-{ +- if (!supportSetClipPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetClipPath(printerContext,clipRule); +-} +- +-opvp_result_t OPVPWrapper::SetCurrentPoint(opvp_fix_t x, opvp_fix_t y) +-{ +- if (!supportSetCurrentPoint) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSetCurrentPoint(printerContext,x,y); +-} +- +-opvp_result_t OPVPWrapper::LinePath(opvp_pathmode_t flag, +- opvp_int_t npoints, const opvp_point_t *points) +-{ +- if (!supportLinePath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpLinePath(printerContext,flag,npoints,points); +-} +- +-opvp_result_t OPVPWrapper::PolygonPath(opvp_int_t npolygons, +- const opvp_int_t *nvertexes, const opvp_point_t *points) +-{ +- if (!supportPolygonPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpPolygonPath(printerContext,npolygons,nvertexes,points); +-} +- +-opvp_result_t OPVPWrapper::RectanglePath(opvp_int_t nrectangles, +- const opvp_rectangle_t *rectangles) +-{ +- if (!supportRectanglePath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpRectanglePath(printerContext,nrectangles,rectangles); +-} +- +-opvp_result_t OPVPWrapper::RoundRectanglePath(opvp_int_t nrectangles, +- const opvp_roundrectangle_t *rectangles) +-{ +- if (!supportRoundRectanglePath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpRoundRectanglePath(printerContext,nrectangles,rectangles); +-} +- +-opvp_result_t OPVPWrapper::BezierPath(opvp_int_t npoints, +- const opvp_point_t *points) +-{ +- if (!supportBezierPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpBezierPath(printerContext,npoints,points); +-} +- +-opvp_result_t OPVPWrapper::ArcPath(opvp_arcmode_t kind, +- opvp_arcdir_t dir, opvp_fix_t bbx0, +- opvp_fix_t bby0, opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, +- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1) +-{ +- if (!supportArcPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpArcPath(printerContext,kind,dir,bbx0,bby0, +- bbx1,bby1,x0,y0,x1,y1); +-} +- +-opvp_result_t OPVPWrapper::DrawImage( +- opvp_int_t sourceWidth, opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, +- opvp_int_t destinationHeight, const void *imagedata) +-{ +- if (!supportDrawImage) { +- int result; +- +- if ((result = StartDrawImage(sourceWidth,sourceHeight,sourcePitch, +- imageFormat,destinationWidth,destinationHeight)) < 0) { +- return result; +- } +- if ((result = TransferDrawImage(sourcePitch*sourceHeight, +- imagedata)) < 0) { +- return result; +- } +- return EndDrawImage(); +- } +- return procs->opvpDrawImage(printerContext,sourceWidth, sourceHeight, +- sourcePitch, imageFormat, destinationWidth, destinationHeight, +- imagedata); +-} +- +-opvp_result_t OPVPWrapper::StartDrawImage( +- opvp_int_t sourceWidth, opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, +- opvp_int_t destinationHeight) +-{ +- if (!supportStartDrawImage) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartDrawImage(printerContext,sourceWidth, +- sourceHeight,sourcePitch,imageFormat, +- destinationWidth,destinationHeight); +-} +- +-opvp_result_t OPVPWrapper::TransferDrawImage(opvp_int_t count, +- const void *imagedata) +-{ +- if (!supportTransferDrawImage) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpTransferDrawImage(printerContext,count,imagedata); +-} +- +-opvp_result_t OPVPWrapper::EndDrawImage() +-{ +- if (!supportEndDrawImage) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndDrawImage(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartScanline(opvp_int_t yposition) +-{ +- if (!supportStartScanline) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartScanline(printerContext,yposition); +-} +- +-opvp_result_t OPVPWrapper::Scanline(opvp_int_t nscanpairs, +- const opvp_int_t *scanpairs) +-{ +- if (!supportScanline) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpScanline(printerContext,nscanpairs,scanpairs); +-} +- +-opvp_result_t OPVPWrapper::EndScanline() +-{ +- if (!supportEndScanline) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndScanline(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartRaster( +- opvp_int_t rasterWidth) +-{ +- if (!supportStartRaster) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartRaster(printerContext,rasterWidth); +-} +- +-opvp_result_t OPVPWrapper::TransferRasterData(opvp_int_t count, +- const opvp_byte_t *data) +-{ +- if (!supportTransferRasterData) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpTransferRasterData(printerContext,count, +- data); +-} +- +-opvp_result_t OPVPWrapper::SkipRaster(opvp_int_t count) +-{ +- if (!supportSkipRaster) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpSkipRaster(printerContext,count); +-} +- +-opvp_result_t OPVPWrapper::EndRaster() +-{ +- if (!supportEndRaster) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndRaster(printerContext); +-} +- +-opvp_result_t OPVPWrapper::StartStream() +-{ +- if (!supportStartStream) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpStartStream(printerContext); +-} +- +-opvp_result_t OPVPWrapper::TransferStreamData(opvp_int_t count, +- const void *data) +-{ +- if (!supportTransferStreamData) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpTransferStreamData(printerContext,count,data); +-} +- +-opvp_result_t OPVPWrapper::EndStream() +-{ +- if (!supportEndStream) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpEndStream(printerContext); +-} +- +-opvp_result_t OPVPWrapper::ResetClipPath() +-{ +- if (!supportResetClipPath) { +- *opvpErrorNo = OPVP_NOTSUPPORTED; +- return -1; +- } +- return procs->opvpResetClipPath(printerContext); +-} +- +-char *OPVPWrapper::allocString(char **destin, unsigned int size) +-{ +- if (!destin) return 0; +- +- if (*destin != 0) delete[] *destin; +- if (size > 0) { +- *destin = new char[size]; +- } +- +- return *destin; +-} +- +-char **OPVPWrapper::genDynamicLibName(const char *name) +-{ +- static char *buff[5] = {0,0,0,0,0}; +- +- allocString(&(buff[0]), strlen(name)+1); +- strcpy(buff[0], name); +- allocString(&(buff[1]), strlen(name)+3+1); +- strcpy(buff[1], name); +- strcat(buff[1], ".so"); +- allocString(&(buff[2]), strlen(name)+4+1); +- strcpy(buff[2], name); +- strcat(buff[2], ".dll"); +- allocString(&(buff[3]), strlen(name)+6+1); +- strcpy(buff[3], "lib"); +- strcat(buff[3], name); +- strcat(buff[3], ".so"); +- buff[4] = 0; +- +- return buff; +-} +- +-OPVPWrapper *OPVPWrapper::loadDriver(const char *driverName, +- int outputFD, const char *printerModel) +-{ +- char **list = 0; +- int i; +- void *h; +- int nApiEntry; +- int (*opvpOpenPrinter)(opvp_int_t outputFD, +- const opvp_char_t * printerModel, const opvp_int_t version[2], +- opvp_api_procs_t **apiEntry) = 0; +- int (*opvpOpenPrinter_0_2)(int outputFD, char* printerModel, +- int *nApiEntry, OPVP_api_procs **apiEntry) = 0; +- opvp_api_procs_t *opvpProcs; +- OPVP_api_procs *opvpProcs_0_2; +- opvp_dc_t opvpContext; +- int opvpContext_0_2 = 0; +- opvp_int_t *opvpErrorNo = 0; +- int *opvpErrorNo_0_2 = 0; +- void *handle = 0; +- OPVPWrapper *opvp = 0; +- +- // remove directory part +- const char *s = strrchr(driverName,'/'); +- if (s != NULL) { +- driverName = s+1; +- } +- +- list = genDynamicLibName(driverName); +- +- if (list) { +- i = 0; +- while (list[i]) { +- if ((h = dlopen(list[i],RTLD_NOW))) { +- opvpOpenPrinter = (int (*)(opvp_int_t, +- const opvp_char_t *, const opvp_int_t[2], +- opvp_api_procs_t **))dlsym(h,"opvpOpenPrinter"); +- opvpErrorNo = (opvp_int_t *)dlsym(h,"opvpErrorNo"); +- if (opvpOpenPrinter && opvpErrorNo) { +- handle = h; +- break; +- } +- opvpOpenPrinter = 0; +- opvpErrorNo = 0; +- /* try version 0.2 driver */ +- opvpOpenPrinter_0_2 = (int (*)(int, char*, int *, +- OPVP_api_procs **))dlsym(h,"OpenPrinter"); +- opvpErrorNo_0_2 = (int *)dlsym(h,"errorno"); +- if (opvpOpenPrinter_0_2 && opvpErrorNo_0_2) { +- handle = h; +- break; +- } +- opvpOpenPrinter_0_2 = 0; +- opvpErrorNo_0_2 = 0; +- } +- i++; +- } +- for (i = 0;list[i] != 0;i++) { +- delete[] (list[i]); +- list[i] = 0; +- } +- } +- if (handle == 0) { +- OPRS::error("Loading vector printer driver (%s) fail\n",driverName); +- return 0; +- } +- if (opvpOpenPrinter != 0) { +- opvp_int_t apiVersion[2]; +- +- /* require version 1.0 */ +- apiVersion[0] = 1; +- apiVersion[1] = 0; +- if ((opvpContext = (*opvpOpenPrinter)(outputFD, +- (const opvp_char_t *)printerModel,apiVersion,&opvpProcs)) < 0) { +- OPRS::error("OpenPrinter fail\n",driverName); +- unloadDriver(handle); +- return 0; +- } +- opvp = new OPVPWrapper(handle, opvpErrorNo, opvpProcs, opvpContext); +- } else if (opvpOpenPrinter_0_2) { +- if ((opvpContext_0_2 = (*opvpOpenPrinter_0_2)(outputFD, +- (char *)printerModel,&nApiEntry,&opvpProcs_0_2)) < 0) { +- OPRS::error("OpenPrinter fail\n",driverName); +- unloadDriver(handle); +- return 0; +- } +- opvp = (OPVPWrapper *)new OPVPWrapper_0_2(handle, opvpErrorNo_0_2, +- opvpProcs_0_2, opvpContext_0_2); +- } +- return opvp; +-} +- +-/* +- * unload vector-driver +- */ +-int OPVPWrapper::unloadDriver(void *opvpHandleA) +-{ +- if (opvpHandleA != 0) { +- dlclose(opvpHandleA); +- } +- return 0; +-} +- +-opvp_int_t OPVPWrapper::getErrorNo() +-{ +- return *opvpErrorNo; +-} +- +diff --git a/filter/pdftoopvp/oprs/OPVPWrapper.h b/filter/pdftoopvp/oprs/OPVPWrapper.h +deleted file mode 100644 +index 1dfcba3..0000000 +--- a/filter/pdftoopvp/oprs/OPVPWrapper.h ++++ /dev/null +@@ -1,205 +0,0 @@ +-/* +- OPVPWrapper.h +-*/ +- +-#ifndef OPVPWRAPPER_H +-#define OPVPWRAPPER_H +- +-#include "opvp_common.h" +- +-class OPVPWrapper { +-public: +- static OPVPWrapper *loadDriver(const char *driverName, int outputFD, +- const char *printerModel); +- static int unloadDriver(void *opvpHandleA); +-private: +- static char *allocString(char **destin, unsigned int size); +- static char **genDynamicLibName(const char *name); +-public: +- OPVPWrapper() {}; +- OPVPWrapper(void *opvpHandleA, opvp_int_t *opvpErrorNoA, +- opvp_api_procs_t *procsA, opvp_dc_t printerContextA); +- virtual ~OPVPWrapper(); +- +- virtual opvp_int_t getErrorNo(); +- +- void getVersion(opvp_int_t versionA[2]) +- { +- versionA[0] = version[0]; +- versionA[1] = version[1]; +- } +- +- virtual opvp_result_t ClosePrinter(); +- virtual opvp_result_t StartJob(const opvp_char_t *jobInfo); +- virtual opvp_result_t EndJob(); +- virtual opvp_result_t AbortJob(); +- virtual opvp_result_t StartDoc(const opvp_char_t *docInfo); +- virtual opvp_result_t EndDoc(); +- virtual opvp_result_t StartPage(const opvp_char_t *pageInfo); +- virtual opvp_result_t EndPage(); +- virtual opvp_result_t QueryDeviceCapability(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf); +- virtual opvp_result_t QueryDeviceInfo(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf); +- virtual opvp_result_t ResetCTM(); +- virtual opvp_result_t SetCTM(const opvp_ctm_t *pCTM); +- virtual opvp_result_t GetCTM(opvp_ctm_t *pCTM); +- virtual opvp_result_t InitGS(); +- virtual opvp_result_t SaveGS(); +- virtual opvp_result_t RestoreGS(); +- virtual opvp_result_t QueryColorSpace(opvp_int_t *pnum, +- opvp_cspace_t *pcspace); +- virtual opvp_result_t SetColorSpace(opvp_cspace_t cspace); +- virtual opvp_result_t GetColorSpace(opvp_cspace_t *pcspace); +- virtual opvp_result_t SetFillMode(opvp_fillmode_t fillmode); +- virtual opvp_result_t GetFillMode(opvp_fillmode_t *pfillmode); +- virtual opvp_result_t SetAlphaConstant(opvp_float_t alpha); +- virtual opvp_result_t GetAlphaConstant(opvp_float_t *palpha); +- virtual opvp_result_t SetLineWidth(opvp_fix_t width); +- virtual opvp_result_t GetLineWidth(opvp_fix_t *pwidth); +- virtual opvp_result_t SetLineDash(opvp_int_t num, const opvp_fix_t *pdash); +- virtual opvp_result_t GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash); +- virtual opvp_result_t SetLineDashOffset(opvp_fix_t offset); +- virtual opvp_result_t GetLineDashOffset(opvp_fix_t *poffset); +- virtual opvp_result_t SetLineStyle(opvp_linestyle_t linestyle); +- virtual opvp_result_t GetLineStyle(opvp_linestyle_t *plinestyle); +- virtual opvp_result_t SetLineCap(opvp_linecap_t linecap); +- virtual opvp_result_t GetLineCap(opvp_linecap_t *plinecap); +- virtual opvp_result_t SetLineJoin(opvp_linejoin_t linejoin); +- virtual opvp_result_t GetLineJoin(opvp_linejoin_t *plinejoin); +- virtual opvp_result_t SetMiterLimit(opvp_fix_t miterlimit); +- virtual opvp_result_t GetMiterLimit(opvp_fix_t *pmiterlimit); +- virtual opvp_result_t SetPaintMode(opvp_paintmode_t paintmode); +- virtual opvp_result_t GetPaintMode(opvp_paintmode_t *ppaintmode); +- virtual opvp_result_t SetStrokeColor(const opvp_brush_t *brush); +- virtual opvp_result_t SetFillColor(const opvp_brush_t *brush); +- virtual opvp_result_t SetBgColor(const opvp_brush_t *brush); +- virtual opvp_result_t NewPath(); +- virtual opvp_result_t EndPath(); +- virtual opvp_result_t StrokePath(); +- virtual opvp_result_t FillPath(); +- virtual opvp_result_t StrokeFillPath(); +- virtual opvp_result_t SetClipPath(opvp_cliprule_t clipRule); +- virtual opvp_result_t SetCurrentPoint(opvp_fix_t x, opvp_fix_t y); +- virtual opvp_result_t LinePath(opvp_pathmode_t flag, +- opvp_int_t npoints, const opvp_point_t *points); +- virtual opvp_result_t PolygonPath(opvp_int_t npolygons, +- const opvp_int_t *nvertexes, const opvp_point_t *points); +- virtual opvp_result_t RectanglePath(opvp_int_t nrectangles, +- const opvp_rectangle_t *reclangles); +- virtual opvp_result_t RoundRectanglePath(opvp_int_t nrectangles, +- const opvp_roundrectangle_t *reclangles); +- virtual opvp_result_t BezierPath(opvp_int_t npoints, +- const opvp_point_t *points); +- virtual opvp_result_t ArcPath(opvp_arcmode_t kind, +- opvp_arcdir_t dir, opvp_fix_t bbx0, opvp_fix_t bby0, +- opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, +- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1); +- virtual opvp_result_t DrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, +- opvp_int_t destinationWidth, opvp_int_t destinationHeight, +- const void *imageData); +- virtual opvp_result_t StartDrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, +- opvp_int_t destinationWidth, opvp_int_t destinationHeight); +- virtual opvp_result_t TransferDrawImage(opvp_int_t count, +- const void *imageData); +- virtual opvp_result_t EndDrawImage(); +- virtual opvp_result_t StartScanline(opvp_int_t yposition); +- virtual opvp_result_t Scanline(opvp_int_t nscanpairs, +- const opvp_int_t *scanpairs); +- virtual opvp_result_t EndScanline(); +- virtual opvp_result_t StartRaster(opvp_int_t rasterWidth); +- virtual opvp_result_t TransferRasterData(opvp_int_t count, +- const opvp_byte_t *data); +- virtual opvp_result_t SkipRaster(opvp_int_t count); +- virtual opvp_result_t EndRaster(); +- virtual opvp_result_t StartStream(); +- virtual opvp_result_t TransferStreamData(opvp_int_t count, +- const void *data); +- virtual opvp_result_t EndStream(); +- virtual opvp_result_t ResetClipPath(); +- +- bool supportClosePrinter; +- bool supportStartJob; +- bool supportEndJob; +- bool supportAbortJob; +- bool supportStartDoc; +- bool supportEndDoc; +- bool supportStartPage; +- bool supportEndPage; +- bool supportResetCTM; +- bool supportSetCTM; +- bool supportGetCTM; +- bool supportInitGS; +- bool supportSaveGS; +- bool supportRestoreGS; +- bool supportQueryColorSpace; +- bool supportSetColorSpace; +- bool supportGetColorSpace; +- bool supportSetFillMode; +- bool supportGetFillMode; +- bool supportSetAlphaConstant; +- bool supportGetAlphaConstant; +- bool supportSetLineWidth; +- bool supportGetLineWidth; +- bool supportSetLineDash; +- bool supportGetLineDash; +- bool supportSetLineDashOffset; +- bool supportGetLineDashOffset; +- bool supportSetLineStyle; +- bool supportGetLineStyle; +- bool supportSetLineCap; +- bool supportGetLineCap; +- bool supportSetLineJoin; +- bool supportGetLineJoin; +- bool supportSetMiterLimit; +- bool supportGetMiterLimit; +- bool supportSetPaintMode; +- bool supportGetPaintMode; +- bool supportSetStrokeColor; +- bool supportSetFillColor; +- bool supportSetBgColor; +- bool supportNewPath; +- bool supportEndPath; +- bool supportStrokePath; +- bool supportFillPath; +- bool supportStrokeFillPath; +- bool supportSetClipPath; +- bool supportSetCurrentPoint; +- bool supportLinePath; +- bool supportPolygonPath; +- bool supportRectanglePath; +- bool supportRoundRectanglePath; +- bool supportBezierPath; +- bool supportArcPath; +- bool supportDrawImage; +- bool supportStartDrawImage; +- bool supportTransferDrawImage; +- bool supportEndDrawImage; +- bool supportStartScanline; +- bool supportScanline; +- bool supportEndScanline; +- bool supportStartRaster; +- bool supportTransferRasterData; +- bool supportSkipRaster; +- bool supportEndRaster; +- bool supportStartStream; +- bool supportTransferStreamData; +- bool supportEndStream; +- bool supportQueryDeviceCapability; +- bool supportQueryDeviceInfo; +- bool supportResetClipPath; +- +-protected: +- void *opvpHandle; +- opvp_int_t version[2]; +-private: +- opvp_api_procs_t *procs; +- opvp_int_t *opvpErrorNo; +- opvp_dc_t printerContext; +-}; +- +-#endif +diff --git a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx b/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx +deleted file mode 100644 +index 112580e..0000000 +--- a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx ++++ /dev/null +@@ -1,1172 +0,0 @@ +-/* +- OPVPWrapper_0_2.cc +-*/ +- +- +-#include <config.h> +-#include "OPVPWrapper_0_2.h" +-#include <string.h> +- +-/* color space mapping 0.2 to 1.0 */ +-opvp_cspace_t OPVPWrapper_0_2::cspace_0_2_to_1_0[] = { +- OPVP_CSPACE_BW, +- OPVP_CSPACE_DEVICEGRAY, +- OPVP_CSPACE_DEVICECMY, +- OPVP_CSPACE_DEVICECMYK, +- OPVP_CSPACE_DEVICERGB, +- OPVP_CSPACE_STANDARDRGB, +- OPVP_CSPACE_STANDARDRGB64 +-}; +- +-/* color space mapping 1.0 to 0.2 */ +-OPVP_ColorSpace OPVPWrapper_0_2::cspace_1_0_to_0_2[] = { +- OPVP_cspaceBW, +- OPVP_cspaceDeviceGray, +- OPVP_cspaceDeviceCMY, +- OPVP_cspaceDeviceCMYK, +- OPVP_cspaceDeviceRGB, +- (OPVP_ColorSpace)0, /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ +- OPVP_cspaceStandardRGB, +- OPVP_cspaceStandardRGB64, +-}; +- +-/* image format mapping 1.0 to 0.2 */ +-OPVP_ImageFormat OPVPWrapper_0_2::iformat_1_0_to_0_2[] = { +- OPVP_iformatRaw, +- /* OPVP_IFORMAT_MASK use iformat raw in 0.2 */ +- OPVP_iformatRaw, +- OPVP_iformatRLE, +- OPVP_iformatJPEG, +- OPVP_iformatPNG, +-}; +- +-/* image colorDepth needed in 0.2 */ +-int OPVPWrapper_0_2::colorDepth_0_2[] = { +- 1, /* OPVP_CSPACE_BW */ +- 8, /* OPVP_CSPACE_DEVICEGRAY */ +- 24, /* OPVP_CSPACE_DEVICECMY */ +- 32, /* OPVP_CSPACE_DEVICECMYK */ +- 24, /* OPVP_CSPACE_DEVICERGB */ +- 32, /* OPVP_CSPACE_DEVICEKRGB */ +- 24, /* OPVP_CSPACE_STANDARDRGB */ +- 64, /* OPVP_CSPACE_STANDARDRGB64 */ +-}; +- +-OPVPWrapper_0_2::OPVPWrapper_0_2(void *opvpHandleA, int *opvpErrorNoA, +- OPVP_api_procs *procsA, int printerContextA) +-{ +- procs_0_2 = procsA; +- opvpHandle = opvpHandleA; +- opvpErrorNo_0_2 = opvpErrorNoA; +- printerContext_0_2 = printerContextA; +- version[0] = 0; +- version[1] = 2; +- supportClosePrinter = (procs_0_2->ClosePrinter != 0); +- supportStartJob = (procs_0_2->StartJob != 0); +- supportEndJob = (procs_0_2->EndJob != 0); +- supportAbortJob = false; +- supportStartDoc = (procs_0_2->StartDoc != 0); +- supportEndDoc = (procs_0_2->EndDoc != 0); +- supportStartPage = (procs_0_2->StartPage != 0); +- supportEndPage = (procs_0_2->EndPage != 0); +- supportResetCTM = (procs_0_2->ResetCTM != 0); +- supportSetCTM = (procs_0_2->SetCTM != 0); +- supportGetCTM = (procs_0_2->GetCTM != 0); +- supportInitGS = (procs_0_2->InitGS != 0); +- supportSaveGS = (procs_0_2->SaveGS != 0); +- supportRestoreGS = (procs_0_2->RestoreGS != 0); +- supportQueryColorSpace = (procs_0_2->QueryColorSpace != 0); +- supportSetColorSpace = (procs_0_2->SetColorSpace != 0); +- supportGetColorSpace = (procs_0_2->GetColorSpace != 0); +- supportSetFillMode = (procs_0_2->SetFillMode != 0); +- supportGetFillMode = (procs_0_2->GetFillMode != 0); +- supportSetAlphaConstant = (procs_0_2->SetAlphaConstant != 0); +- supportGetAlphaConstant = (procs_0_2->GetAlphaConstant != 0); +- supportSetLineWidth = (procs_0_2->SetLineWidth != 0); +- supportGetLineWidth = (procs_0_2->GetLineWidth != 0); +- supportSetLineDash = (procs_0_2->SetLineDash != 0); +- supportGetLineDash = (procs_0_2->GetLineDash != 0); +- supportSetLineDashOffset = (procs_0_2->SetLineDashOffset != 0); +- supportGetLineDashOffset = (procs_0_2->GetLineDashOffset != 0); +- supportSetLineStyle = (procs_0_2->SetLineStyle != 0); +- supportGetLineStyle = (procs_0_2->GetLineStyle != 0); +- supportSetLineCap = (procs_0_2->SetLineCap != 0); +- supportGetLineCap = (procs_0_2->GetLineCap != 0); +- supportSetLineJoin = (procs_0_2->SetLineJoin != 0); +- supportGetLineJoin = (procs_0_2->GetLineJoin != 0); +- supportSetMiterLimit = (procs_0_2->SetMiterLimit != 0); +- supportGetMiterLimit = (procs_0_2->GetMiterLimit != 0); +- supportSetPaintMode = (procs_0_2->SetPaintMode != 0); +- supportGetPaintMode = (procs_0_2->GetPaintMode != 0); +- supportSetStrokeColor = (procs_0_2->SetStrokeColor != 0); +- supportSetFillColor = (procs_0_2->SetFillColor != 0); +- supportSetBgColor = (procs_0_2->SetBgColor != 0); +- supportNewPath = (procs_0_2->NewPath != 0); +- supportEndPath = (procs_0_2->EndPath != 0); +- supportStrokePath = (procs_0_2->StrokePath != 0); +- supportFillPath = (procs_0_2->FillPath != 0); +- supportStrokeFillPath = (procs_0_2->StrokeFillPath != 0); +- supportSetClipPath = (procs_0_2->SetClipPath != 0); +- supportSetCurrentPoint = (procs_0_2->SetCurrentPoint != 0); +- supportLinePath = (procs_0_2->LinePath != 0); +- supportPolygonPath = (procs_0_2->PolygonPath != 0); +- supportRectanglePath = (procs_0_2->RectanglePath != 0); +- supportRoundRectanglePath = (procs_0_2->RoundRectanglePath != 0); +- supportBezierPath = (procs_0_2->BezierPath != 0); +- supportArcPath = (procs_0_2->ArcPath != 0); +- supportDrawImage = (procs_0_2->DrawImage != 0); +- supportStartDrawImage = (procs_0_2->StartDrawImage != 0); +- supportTransferDrawImage = (procs_0_2->TransferDrawImage != 0); +- supportEndDrawImage = (procs_0_2->EndDrawImage != 0); +- supportStartScanline = (procs_0_2->StartScanline != 0); +- supportScanline = (procs_0_2->Scanline != 0); +- supportEndScanline = (procs_0_2->EndScanline != 0); +- supportStartRaster = (procs_0_2->StartRaster != 0); +- supportTransferRasterData = (procs_0_2->TransferRasterData != 0); +- supportSkipRaster = (procs_0_2->SkipRaster != 0); +- supportEndRaster = (procs_0_2->EndRaster != 0); +- supportStartStream = (procs_0_2->StartStream != 0); +- supportTransferStreamData = (procs_0_2->TransferStreamData != 0); +- supportEndStream = (procs_0_2->EndStream != 0); +- supportQueryDeviceCapability = (procs_0_2->QueryDeviceCapability != 0); +- supportQueryDeviceInfo = (procs_0_2->QueryDeviceInfo != 0); +- supportResetClipPath = (procs_0_2->ResetClipPath != 0); +- colorSpace = OPVP_CSPACE_STANDARDRGB; +- if (supportGetColorSpace) { +- if (GetColorSpace(&colorSpace) != OPVP_OK) { +- colorSpace = OPVP_CSPACE_STANDARDRGB; +- } +- } +-} +- +-OPVPWrapper_0_2::~OPVPWrapper_0_2() +-{ +-} +- +-opvp_result_t OPVPWrapper_0_2::ClosePrinter() +-{ +- if (!supportClosePrinter) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->ClosePrinter(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StartJob( +- const opvp_char_t *jobInfo) +-{ +- if (!supportStartJob) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StartJob(printerContext_0_2, +- (char *)jobInfo); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndJob() +-{ +- if (!supportEndJob) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndJob(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::AbortJob() +-{ +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +-} +- +-opvp_result_t OPVPWrapper_0_2::StartDoc( +- const opvp_char_t *docInfo) +-{ +- if (!supportStartDoc) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StartDoc(printerContext_0_2, +- (char *)docInfo); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndDoc() +-{ +- if (!supportEndDoc) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndDoc(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StartPage( +- const opvp_char_t *pageInfo) +-{ +- int r; +- +- if (!supportStartPage) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((r = procs_0_2->StartPage(printerContext_0_2, +- /* discard const */(char *)pageInfo)) != OPVP_OK) { +- /* error */ +- return (opvp_result_t)r; +- } +- /* initialize ROP */ +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2, +- OPVP_0_2_ROP_P); +- } +- return OPVP_OK; +-} +- +-opvp_result_t OPVPWrapper_0_2::EndPage() +-{ +- if (!supportEndPage) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndPage(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::QueryDeviceCapability( +- opvp_flag_t queryflag, opvp_int_t *buflen, opvp_byte_t *infoBuf) +-{ +- if (!supportQueryDeviceCapability) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2-> +- QueryDeviceCapability(printerContext_0_2,queryflag,*buflen, +- (char *)infoBuf); +-} +- +-opvp_result_t OPVPWrapper_0_2::QueryDeviceInfo( +- opvp_flag_t queryflag, opvp_int_t *buflen, opvp_byte_t *infoBuf) +-{ +- if (!supportQueryDeviceInfo) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (queryflag & OPVP_QF_MEDIACOPY) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (queryflag & OPVP_QF_PRINTREGION) { +- queryflag &= ~OPVP_QF_PRINTREGION; +- queryflag |= 0x0020000; +- } +- return (opvp_result_t)procs_0_2->QueryDeviceInfo(printerContext_0_2, +- queryflag,*buflen,(char *)infoBuf); +-} +- +-opvp_result_t OPVPWrapper_0_2::ResetCTM() +-{ +- if (!supportResetCTM) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->ResetCTM(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetCTM(const opvp_ctm_t *pCTM) +-{ +- if (!supportSetCTM) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetCTM(printerContext_0_2, +- (OPVP_CTM *)pCTM); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetCTM(opvp_ctm_t *pCTM) +-{ +- if (!supportGetCTM) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->GetCTM(printerContext_0_2, +- (OPVP_CTM *)pCTM); +-} +- +-opvp_result_t OPVPWrapper_0_2::InitGS() +-{ +- int r; +- +- if (!supportInitGS) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((r = procs_0_2->InitGS(printerContext_0_2)) != OPVP_OK) { +- /* error */ +- return (opvp_result_t)r; +- } +- /* initialize ROP */ +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2, +- OPVP_0_2_ROP_P); +- } +- return OPVP_OK; +-} +- +-opvp_result_t OPVPWrapper_0_2::SaveGS() +-{ +- if (!supportSaveGS) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SaveGS(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::RestoreGS() +-{ +- if (!supportRestoreGS) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->RestoreGS(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::QueryColorSpace( +- opvp_int_t *pnum, opvp_cspace_t *pcspace) +-{ +- int r; +- int i; +- +- if (!supportQueryColorSpace) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((r = procs_0_2->QueryColorSpace(printerContext_0_2, +- (OPVP_ColorSpace *)pcspace,pnum)) != OPVP_OK) { +- /* error */ +- return (opvp_result_t)r; +- } +- /* translate cspaces */ +- for (i = 0;i < *pnum;i++) { +- if ((unsigned int)pcspace[i] +- > sizeof(cspace_0_2_to_1_0)/sizeof(opvp_cspace_t)) { +- /* unknown color space */ +- /* set DEVICERGB instead */ +- pcspace[i] = OPVP_CSPACE_DEVICERGB; +- } else { +- pcspace[i] = cspace_0_2_to_1_0[pcspace[i]]; +- } +- } +- return OPVP_OK; +-} +- +-opvp_result_t OPVPWrapper_0_2::SetColorSpace( +- opvp_cspace_t cspace) +-{ +- int r; +- +- if (!supportSetColorSpace) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (cspace == OPVP_CSPACE_DEVICEKRGB) { +- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((unsigned int)cspace +- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { +- /* unknown color space */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- r = procs_0_2->SetColorSpace(printerContext_0_2, +- cspace_1_0_to_0_2[cspace]); +- if (r == OPVP_OK) { +- colorSpace = cspace; +- } +- return (opvp_result_t)r; +-} +- +-opvp_result_t OPVPWrapper_0_2::GetColorSpace( +- opvp_cspace_t *pcspace) +-{ +- int r; +- +- if (!supportGetColorSpace) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((r = procs_0_2->GetColorSpace(printerContext_0_2, +- (OPVP_ColorSpace *)pcspace)) != OPVP_OK) { +- /* error */ +- return (opvp_result_t)r; +- } +- if ((unsigned int)*pcspace +- > sizeof(cspace_0_2_to_1_0)/sizeof(opvp_cspace_t)) { +- /* unknown color space */ +- /* set DEVICERGB instead */ +- *pcspace = OPVP_CSPACE_DEVICERGB; +- } else { +- *pcspace = cspace_0_2_to_1_0[*pcspace]; +- } +- return (opvp_result_t)r; +-} +- +-opvp_result_t OPVPWrapper_0_2::SetFillMode( +- opvp_fillmode_t fillmode) +-{ +- if (!supportSetFillMode) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_FillMode is comaptible with opvp_fillmode_t */ +- return (opvp_result_t)procs_0_2->SetFillMode(printerContext_0_2, +- (OPVP_FillMode)fillmode); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetFillMode( +- opvp_fillmode_t *pfillmode) +-{ +- if (!supportGetFillMode) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_FillMode is comaptible with opvp_fillmode_t */ +- return (opvp_result_t)procs_0_2->GetFillMode(printerContext_0_2, +- (OPVP_FillMode *)pfillmode); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetAlphaConstant( +- opvp_float_t alpha) +-{ +- if (!supportSetAlphaConstant) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetAlphaConstant(printerContext_0_2,alpha); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetAlphaConstant( +- opvp_float_t *palpha) +-{ +- if (!supportGetAlphaConstant) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->GetAlphaConstant(printerContext_0_2,palpha); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineWidth( +- opvp_fix_t width) +-{ +- if (!supportSetLineWidth) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetLineWidth(printerContext_0_2,width); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineWidth( +- opvp_fix_t *pwidth) +-{ +- if (!supportGetLineWidth) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->GetLineWidth(printerContext_0_2,pwidth); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineDash(opvp_int_t num, +- const opvp_fix_t *pdash) +-{ +- if (!supportSetLineDash) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetLineDash(printerContext_0_2, +- /* remove const */ (OPVP_Fix *)pdash,num); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineDash( +- opvp_int_t *pnum, opvp_fix_t *pdash) +-{ +- if (!supportGetLineDash) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->GetLineDash(printerContext_0_2, +- pdash,pnum); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineDashOffset( +- opvp_fix_t offset) +-{ +- if (!supportSetLineDashOffset) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetLineDashOffset(printerContext_0_2,offset); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineDashOffset( +- opvp_fix_t *poffset) +-{ +- if (!supportGetLineDashOffset) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->GetLineDashOffset(printerContext_0_2,poffset); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineStyle( +- opvp_linestyle_t linestyle) +-{ +- if (!supportSetLineStyle) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineStyle is compatible with opvp_linestyle_t */ +- return (opvp_result_t)procs_0_2->SetLineStyle(printerContext_0_2, +- (OPVP_LineStyle)linestyle); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineStyle( +- opvp_linestyle_t *plinestyle) +-{ +- if (!supportGetLineStyle) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineStyle is compatible with opvp_linestyle_t */ +- return (opvp_result_t)procs_0_2->GetLineStyle(printerContext_0_2, +- (OPVP_LineStyle *)plinestyle); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineCap( +- opvp_linecap_t linecap) +-{ +- if (!supportSetLineCap) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineCap is compatible with opvp_cap_t */ +- return (opvp_result_t)procs_0_2->SetLineCap(printerContext_0_2, +- (OPVP_LineCap)linecap); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineCap( +- opvp_linecap_t *plinecap) +-{ +- if (!supportGetLineCap) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineCap is compatible with opvp_cap_t */ +- return (opvp_result_t)procs_0_2->GetLineCap(printerContext_0_2, +- (OPVP_LineCap *)plinecap); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetLineJoin( +- opvp_linejoin_t linejoin) +-{ +- if (!supportSetLineJoin) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineJoin is compatible with opvp_linejoin_t */ +- return (opvp_result_t)procs_0_2->SetLineJoin(printerContext_0_2, +- (OPVP_LineJoin)linejoin); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetLineJoin( +- opvp_linejoin_t *plinejoin) +-{ +- if (!supportGetLineJoin) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_LineJoin is compatible with opvp_linejoin_t */ +- return (opvp_result_t)procs_0_2->GetLineJoin(printerContext_0_2, +- (OPVP_LineJoin *)plinejoin); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetMiterLimit( +- opvp_fix_t miterlimit) +-{ +- if (!supportSetMiterLimit) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Fix is compatible with opvp_fix_t */ +- return (opvp_result_t)procs_0_2->SetMiterLimit(printerContext_0_2, +- (OPVP_Fix)miterlimit); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetMiterLimit( +- opvp_fix_t *pmiterlimit) +-{ +- if (!supportGetMiterLimit) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Fix is compatible with opvp_fix_t */ +- return (opvp_result_t)procs_0_2->GetMiterLimit(printerContext_0_2, +- (OPVP_Fix *)pmiterlimit); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetPaintMode( +- opvp_paintmode_t paintmode) +-{ +- if (!supportSetPaintMode) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_PaintMode is compatible with opvp_paintmode_t */ +- return (opvp_result_t)procs_0_2->SetPaintMode(printerContext_0_2, +- (OPVP_PaintMode)paintmode); +-} +- +-opvp_result_t OPVPWrapper_0_2::GetPaintMode( +- opvp_paintmode_t *ppaintmode) +-{ +- if (!supportGetPaintMode) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_PaintMode is compatible with opvp_paintmode_t */ +- return (opvp_result_t)procs_0_2->GetPaintMode(printerContext_0_2, +- (OPVP_PaintMode *)ppaintmode); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetStrokeColor( +- const opvp_brush_t *brush) +-{ +- OPVP_Brush brush_0_2; +- +- if (!supportSetStrokeColor) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (brush == 0) { +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { +- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((unsigned int)brush->colorSpace +- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { +- /* unknown color space */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; +- brush_0_2.xorg = brush->xorg; +- brush_0_2.yorg = brush->yorg; +- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; +- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); +- return (opvp_result_t)procs_0_2->SetStrokeColor(printerContext_0_2, +- &brush_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetFillColor( +- const opvp_brush_t *brush) +-{ +- OPVP_Brush brush_0_2; +- +- if (!supportSetFillColor) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (brush == 0) { +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { +- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((unsigned int)brush->colorSpace +- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { +- /* unknown color space */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; +- brush_0_2.xorg = brush->xorg; +- brush_0_2.yorg = brush->yorg; +- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; +- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); +- return (opvp_result_t)procs_0_2->SetFillColor(printerContext_0_2, +- &brush_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetBgColor( +- const opvp_brush_t *brush) +-{ +- OPVP_Brush brush_0_2; +- +- if (!supportSetBgColor) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (brush == 0) { +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { +- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if ((unsigned int)brush->colorSpace +- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { +- /* unknown color space */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; +- brush_0_2.xorg = brush->xorg; +- brush_0_2.yorg = brush->yorg; +- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; +- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); +- return (opvp_result_t)procs_0_2->SetBgColor(printerContext_0_2, +- &brush_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::NewPath() +-{ +- if (!supportNewPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->NewPath(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndPath() +-{ +- if (!supportEndPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndPath(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StrokePath() +-{ +- if (!supportStrokePath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StrokePath(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::FillPath() +-{ +- if (!supportFillPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->FillPath(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StrokeFillPath() +-{ +- if (!supportStrokeFillPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StrokeFillPath(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetClipPath( +- opvp_cliprule_t clipRule) +-{ +- if (!supportSetClipPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_ClipRule is compatible with opvp_cliprule_t */ +- return (opvp_result_t)procs_0_2->SetClipPath(printerContext_0_2, +- (OPVP_ClipRule)clipRule); +-} +- +-opvp_result_t OPVPWrapper_0_2::SetCurrentPoint( +- opvp_fix_t x, opvp_fix_t y) +-{ +- if (!supportSetCurrentPoint) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SetCurrentPoint(printerContext_0_2,x,y); +-} +- +-opvp_result_t OPVPWrapper_0_2::LinePath( +- opvp_pathmode_t flag, opvp_int_t npoints, const opvp_point_t *points) +-{ +- if (!supportLinePath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Point is compatible with opvp_point_t */ +- return (opvp_result_t)procs_0_2->LinePath(printerContext_0_2,flag,npoints, +- (OPVP_Point *)points); +-} +- +-opvp_result_t OPVPWrapper_0_2::PolygonPath( +- opvp_int_t npolygons, const opvp_int_t *nvertexes, +- const opvp_point_t *points) +-{ +- if (!supportPolygonPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Point is compatible with opvp_point_t */ +- return (opvp_result_t)procs_0_2->PolygonPath(printerContext_0_2, +- (int)npolygons,(int *)nvertexes,(OPVP_Point *)points); +-} +- +-opvp_result_t OPVPWrapper_0_2::RectanglePath( +- opvp_int_t nrectangles, const opvp_rectangle_t *rectangles) +-{ +- if (!supportRectanglePath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Rectangle is compatible with opvp_rectangle_t */ +- return (opvp_result_t)procs_0_2->RectanglePath(printerContext_0_2, +- (int)nrectangles,(OPVP_Rectangle *)rectangles); +-} +- +-opvp_result_t OPVPWrapper_0_2::RoundRectanglePath( +- opvp_int_t nrectangles, const opvp_roundrectangle_t *rectangles) +-{ +- if (!supportRoundRectanglePath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_RoundRectangle is compatible with opvp_roundrectangle_t */ +- return (opvp_result_t)procs_0_2->RoundRectanglePath(printerContext_0_2, +- (int)nrectangles,(OPVP_RoundRectangle *)rectangles); +-} +- +-opvp_result_t OPVPWrapper_0_2::BezierPath(opvp_int_t npoints, +- const opvp_point_t *points) +-{ +- if (!supportBezierPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* OPVP_Point is compatible with opvp_point_t */ +- return (opvp_result_t)procs_0_2->BezierPath(printerContext_0_2,(int)npoints, +- (OPVP_Point *)points); +-} +- +-opvp_result_t OPVPWrapper_0_2::ArcPath(opvp_arcmode_t kind, opvp_arcdir_t dir, +- opvp_fix_t bbx0, opvp_fix_t bby0, opvp_fix_t bbx1, +- opvp_fix_t bby1, opvp_fix_t x0, opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1) +-{ +- if (!supportArcPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- /* opvp_arcmode_t is compatible with int */ +- /* opvp_arcdir_t is compatible with int */ +- return (opvp_result_t)procs_0_2->ArcPath(printerContext_0_2, +- (int)kind,(int)dir,bbx0,bby0, +- bbx1,bby1,x0,y0,x1,y1); +-} +- +-opvp_result_t OPVPWrapper_0_2::DrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, +- opvp_int_t destinationHeight, const void *imagedata) +-{ +- int r; +- OPVP_Rectangle rect; +- OPVP_ImageFormat iformat_0_2; +- OPVP_PaintMode paintmode_0_2 = OPVP_paintModeTransparent; +- int depth; +- +- if (!supportDrawImage) { +- int result; +- +- if ((result = StartDrawImage(sourceWidth, +- sourceHeight,sourcePitch,imageFormat,destinationWidth, +- destinationHeight)) < 0) { +- return result; +- } +- if ((result = TransferDrawImage(sourcePitch*sourceHeight, +- imagedata)) < 0) { +- return result; +- } +- return EndDrawImage(); +- } +- +- if (imageFormat == OPVP_IFORMAT_MASK) { +- if (procs_0_2->GetPaintMode != 0) { +- procs_0_2->GetPaintMode(printerContext_0_2, +- &paintmode_0_2); +- } +- if (paintmode_0_2 != OPVP_paintModeTransparent) { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2, +- OPVP_0_2_ROP_S); +- } +- } +- else { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2, +- OPVP_0_2_ROP_OR); +- } +- } +- depth = 1; +- } else { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); +- } +- depth = colorDepth_0_2[colorSpace]; +- } +- +- OPVP_I2FIX(0,rect.p0.x); +- OPVP_I2FIX(0,rect.p0.y); +- OPVP_I2FIX(destinationWidth,rect.p1.x); +- OPVP_I2FIX(destinationHeight,rect.p1.y); +- if ((unsigned int)imageFormat +- > sizeof(iformat_1_0_to_0_2)/sizeof(OPVP_ImageFormat)) { +- /* illegal image format */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- iformat_0_2 = iformat_1_0_to_0_2[imageFormat]; +- r = procs_0_2->DrawImage(printerContext_0_2,sourceWidth,sourceHeight, +- depth,iformat_0_2,rect, +- sourcePitch*sourceHeight, +- /* remove const */ (void *)imagedata); +- +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_P); +- } +- +- return (opvp_result_t)r; +-} +- +-opvp_result_t OPVPWrapper_0_2::StartDrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, +- opvp_int_t destinationHeight) +-{ +- int r; +- OPVP_Rectangle rect; +- OPVP_ImageFormat iformat_0_2; +- OPVP_PaintMode paintmode_0_2 = OPVP_paintModeTransparent; +- int depth; +- +- if (!supportStartDrawImage) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- if (imageFormat == OPVP_IFORMAT_MASK) { +- if (procs_0_2->GetPaintMode != 0) { +- procs_0_2->GetPaintMode(printerContext_0_2, +- &paintmode_0_2); +- } +- if (paintmode_0_2 != OPVP_paintModeTransparent) { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); +- } +- } +- else { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_OR); +- } +- } +- depth = 1; +- } else { +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); +- } +- depth = colorDepth_0_2[colorSpace]; +- } +- +- OPVP_I2FIX(0,rect.p0.x); +- OPVP_I2FIX(0,rect.p0.y); +- OPVP_I2FIX(destinationWidth,rect.p1.x); +- OPVP_I2FIX(destinationHeight,rect.p1.y); +- if ((unsigned int)imageFormat +- > sizeof(iformat_1_0_to_0_2)/sizeof(OPVP_ImageFormat)) { +- /* illegal image format */ +- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; +- return -1; +- } +- iformat_0_2 = iformat_1_0_to_0_2[imageFormat]; +- r = procs_0_2->StartDrawImage(printerContext_0_2, +- sourceWidth,sourceHeight, +- depth,iformat_0_2,rect); +- +- return (opvp_result_t)r; +-} +- +-opvp_result_t OPVPWrapper_0_2::TransferDrawImage(opvp_int_t count, +- const void *imagedata) +-{ +- if (!supportTransferDrawImage) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->TransferDrawImage(printerContext_0_2, +- count,(void *)imagedata); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndDrawImage() +-{ +- int r; +- +- if (!supportEndDrawImage) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- r = procs_0_2->EndDrawImage(printerContext_0_2); +- +- /* make sure rop is pattern copy */ +- if (procs_0_2->SetROP != 0) { +- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_P); +- } +- +- return (opvp_result_t)r; +-} +- +-opvp_result_t OPVPWrapper_0_2::StartScanline(opvp_int_t yposition) +-{ +- if (!supportStartScanline) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StartScanline(printerContext_0_2,yposition); +-} +- +-opvp_result_t OPVPWrapper_0_2::Scanline(opvp_int_t nscanpairs, +- const opvp_int_t *scanpairs) +-{ +- if (!supportScanline) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->Scanline(printerContext_0_2, +- (int)nscanpairs,(int *)scanpairs); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndScanline() +-{ +- if (!supportEndScanline) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndScanline(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StartRaster(opvp_int_t rasterWidth) +-{ +- if (!supportStartRaster) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StartRaster(printerContext_0_2,rasterWidth); +-} +- +-opvp_result_t OPVPWrapper_0_2::TransferRasterData(opvp_int_t count, +- const opvp_byte_t *data) +-{ +- if (!supportTransferRasterData) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->TransferRasterData(printerContext_0_2, +- (int)count, (unsigned char *)data); +-} +- +-opvp_result_t OPVPWrapper_0_2::SkipRaster(opvp_int_t count) +-{ +- if (!supportSkipRaster) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->SkipRaster(printerContext_0_2,count); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndRaster() +-{ +- if (!supportEndRaster) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndRaster(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::StartStream() +-{ +- if (!supportStartStream) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->StartStream(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::TransferStreamData(opvp_int_t count, +- const void *data) +-{ +- if (!supportTransferStreamData) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->TransferStreamData(printerContext_0_2, +- count,(void *)data); +-} +- +-opvp_result_t OPVPWrapper_0_2::EndStream() +-{ +- if (!supportEndStream) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->EndStream(printerContext_0_2); +-} +- +-opvp_result_t OPVPWrapper_0_2::ResetClipPath() +-{ +- if (!supportResetClipPath) { +- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; +- return -1; +- } +- return (opvp_result_t)procs_0_2->ResetClipPath(printerContext_0_2); +-} +- +-/* translate error code */ +-opvp_int_t OPVPWrapper_0_2::getErrorNo() +-{ +- switch(*opvpErrorNo_0_2) { +- case OPVP_FATALERROR_0_2: +- return OPVP_FATALERROR; +- break; +- case OPVP_BADREQUEST_0_2: +- return OPVP_BADREQUEST; +- break; +- case OPVP_BADCONTEXT_0_2: +- return OPVP_BADCONTEXT; +- break; +- case OPVP_NOTSUPPORTED_0_2: +- return OPVP_NOTSUPPORTED; +- break; +- case OPVP_JOBCANCELED_0_2: +- return OPVP_JOBCANCELED; +- break; +- case OPVP_PARAMERROR_0_2: +- return OPVP_PARAMERROR; +- break; +- default: +- break; +- } +- /* unknown error no */ +- /* return FATALERROR instead */ +- return OPVP_FATALERROR; +-} +diff --git a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h b/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h +deleted file mode 100644 +index f670a45..0000000 +--- a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h ++++ /dev/null +@@ -1,127 +0,0 @@ +-/* +- OPVPWrapper_0_2.h +-*/ +- +-#ifndef OPVPWRAPPER_0_2_H +-#define OPVPWRAPPER_0_2_H +- +-#include "OPVPWrapper.h" +- +-/* ROP */ +-#define OPVP_0_2_ROP_S 0xCC +-#define OPVP_0_2_ROP_P 0xF0 +-#define OPVP_0_2_ROP_OR 0xB8 +- +-class OPVPWrapper_0_2: public OPVPWrapper { +-private: +- static opvp_cspace_t cspace_0_2_to_1_0[]; +- static OPVP_ColorSpace cspace_1_0_to_0_2[]; +- static OPVP_ImageFormat iformat_1_0_to_0_2[]; +- static int colorDepth_0_2[]; +-public: +- OPVPWrapper_0_2(void *opvpHandleA, int *opvpErrorNoA, +- OPVP_api_procs *procsA, int printerContextA); +- virtual ~OPVPWrapper_0_2(); +- virtual opvp_int_t getErrorNo(); +- +- virtual opvp_result_t ClosePrinter(); +- virtual opvp_result_t StartJob(const opvp_char_t *jobInfo); +- virtual opvp_result_t EndJob(); +- virtual opvp_result_t AbortJob(); +- virtual opvp_result_t StartDoc(const opvp_char_t *docInfo); +- virtual opvp_result_t EndDoc(); +- virtual opvp_result_t StartPage(const opvp_char_t *pageInfo); +- virtual opvp_result_t EndPage(); +- virtual opvp_result_t QueryDeviceCapability(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf); +- virtual opvp_result_t QueryDeviceInfo(opvp_flag_t queryflag, +- opvp_int_t *buflen, opvp_byte_t *infoBuf); +- virtual opvp_result_t ResetCTM(); +- virtual opvp_result_t SetCTM(const opvp_ctm_t *pCTM); +- virtual opvp_result_t GetCTM(opvp_ctm_t *pCTM); +- virtual opvp_result_t InitGS(); +- virtual opvp_result_t SaveGS(); +- virtual opvp_result_t RestoreGS(); +- virtual opvp_result_t QueryColorSpace(opvp_int_t *pnum, +- opvp_cspace_t *pcspace); +- virtual opvp_result_t SetColorSpace(opvp_cspace_t cspace); +- virtual opvp_result_t GetColorSpace(opvp_cspace_t *pcspace); +- virtual opvp_result_t SetFillMode(opvp_fillmode_t fillmode); +- virtual opvp_result_t GetFillMode(opvp_fillmode_t *pfillmode); +- virtual opvp_result_t SetAlphaConstant(opvp_float_t alpha); +- virtual opvp_result_t GetAlphaConstant(opvp_float_t *palpha); +- virtual opvp_result_t SetLineWidth(opvp_fix_t width); +- virtual opvp_result_t GetLineWidth(opvp_fix_t *pwidth); +- virtual opvp_result_t SetLineDash(opvp_int_t num, const opvp_fix_t *pdash); +- virtual opvp_result_t GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash); +- virtual opvp_result_t SetLineDashOffset(opvp_fix_t offset); +- virtual opvp_result_t GetLineDashOffset(opvp_fix_t *poffset); +- virtual opvp_result_t SetLineStyle(opvp_linestyle_t linestyle); +- virtual opvp_result_t GetLineStyle(opvp_linestyle_t *plinestyle); +- virtual opvp_result_t SetLineCap(opvp_linecap_t linecap); +- virtual opvp_result_t GetLineCap(opvp_linecap_t *plinecap); +- virtual opvp_result_t SetLineJoin(opvp_linejoin_t linejoin); +- virtual opvp_result_t GetLineJoin(opvp_linejoin_t *plinejoin); +- virtual opvp_result_t SetMiterLimit(opvp_fix_t miterlimit); +- virtual opvp_result_t GetMiterLimit(opvp_fix_t *pmiterlimit); +- virtual opvp_result_t SetPaintMode(opvp_paintmode_t paintmode); +- virtual opvp_result_t GetPaintMode(opvp_paintmode_t *ppaintmode); +- virtual opvp_result_t SetStrokeColor(const opvp_brush_t *brush); +- virtual opvp_result_t SetFillColor(const opvp_brush_t *brush); +- virtual opvp_result_t SetBgColor(const opvp_brush_t *brush); +- virtual opvp_result_t NewPath(); +- virtual opvp_result_t EndPath(); +- virtual opvp_result_t StrokePath(); +- virtual opvp_result_t FillPath(); +- virtual opvp_result_t StrokeFillPath(); +- virtual opvp_result_t SetClipPath(opvp_cliprule_t clipRule); +- virtual opvp_result_t SetCurrentPoint(opvp_fix_t x, opvp_fix_t y); +- virtual opvp_result_t LinePath(opvp_pathmode_t flag, +- opvp_int_t npoints, const opvp_point_t *points); +- virtual opvp_result_t PolygonPath(opvp_int_t npolygons, +- const opvp_int_t *nvertexes, const opvp_point_t *points); +- virtual opvp_result_t RectanglePath(opvp_int_t nrectangles, +- const opvp_rectangle_t *reclangles); +- virtual opvp_result_t RoundRectanglePath(opvp_int_t nrectangles, +- const opvp_roundrectangle_t *reclangles); +- virtual opvp_result_t BezierPath(opvp_int_t npoints, +- const opvp_point_t *points); +- virtual opvp_result_t ArcPath(opvp_arcmode_t kind, +- opvp_arcdir_t dir, opvp_fix_t bbx0, opvp_fix_t bby0, +- opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, +- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1); +- virtual opvp_result_t DrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, +- opvp_int_t destinationWidth, opvp_int_t destinationHeight, +- const void *imageData); +- virtual opvp_result_t StartDrawImage(opvp_int_t sourceWidth, +- opvp_int_t sourceHeight, opvp_int_t sourcePitch, +- opvp_imageformat_t imageFormat, +- opvp_int_t destinationWidth, opvp_int_t destinationHeight); +- virtual opvp_result_t TransferDrawImage(opvp_int_t count, +- const void *imageData); +- virtual opvp_result_t EndDrawImage(); +- virtual opvp_result_t StartScanline(opvp_int_t yposition); +- virtual opvp_result_t Scanline(opvp_int_t nscanpairs, +- const opvp_int_t *scanpairs); +- virtual opvp_result_t EndScanline(); +- virtual opvp_result_t StartRaster(opvp_int_t rasterWidth); +- virtual opvp_result_t TransferRasterData(opvp_int_t count, +- const opvp_byte_t *data); +- virtual opvp_result_t SkipRaster(opvp_int_t count); +- virtual opvp_result_t EndRaster(); +- virtual opvp_result_t StartStream(); +- virtual opvp_result_t TransferStreamData(opvp_int_t count, +- const void *data); +- virtual opvp_result_t EndStream(); +- virtual opvp_result_t ResetClipPath(); +- +-private: +- OPVP_api_procs *procs_0_2; +- int *opvpErrorNo_0_2; +- int printerContext_0_2; +- opvp_cspace_t colorSpace; +-}; +- +-#endif +diff --git a/filter/pdftoopvp/opvp/opvp.h b/filter/pdftoopvp/opvp/opvp.h +deleted file mode 100644 +index 41ade3a..0000000 +--- a/filter/pdftoopvp/opvp/opvp.h ++++ /dev/null +@@ -1,292 +0,0 @@ +-/* +- * OpenPrinting Vector Printer Driver API Definitions [opvp.h] +- * +- * Copyright (c) 2006 Free Standards Group +- * Copyright (c) 2006 Fuji Xerox Printing Systems Co., Ltd. +- * Copyright (c) 2006 Canon Inc. +- * Copyright (c) 2003-2006 AXE Inc. +- * +- * All Rights Reserverd. +- * +- * Permission to use, copy, modify, distribute, and sell this software +- * and its documentation for any purpose is hereby granted without +- * fee, provided that the above copyright notice appear in all copies +- * and that both that copyright notice and this permission notice +- * appear in supporting documentation. +- * +- * The above copyright notice and this permission notice shall be +- * included in all copies or substantial portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR +- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- */ +- /* +- 2007 Modified for OPVP 1.0 by BBR Inc. +- */ +- +-#ifndef _OPVP_H_ +-#define _OPVP_H_ +- +-/* Return Values and Error Codes */ +-#define OPVP_OK 0 /* -1 for errors */ +-#define OPVP_FATALERROR -1 /* error: cannot be recovered */ +-#define OPVP_BADREQUEST -2 /* error: called where it should +- not be called */ +-#define OPVP_BADCONTEXT -3 /* error: invalid printer context */ +-#define OPVP_NOTSUPPORTED -4 /* error: combination of +- parameters are set +- which cannot be handled +- by driver or printer */ +-#define OPVP_JOBCANCELED -5 /* error: job has been canceled +- by some cause */ +-#define OPVP_PARAMERROR -6 /* error: invalid parameter */ +-#define OPVP_VERSIONERROR -7 /* error: invalid API version */ +- +-/* Basic Types */ +-typedef int opvp_dc_t; /* driver/device context */ +-typedef int opvp_result_t; /* return value */ +-typedef unsigned char opvp_byte_t; /* BYTE */ +-typedef unsigned char opvp_char_t; /* character (string) */ +-typedef int opvp_int_t; /* integer */ +-typedef int opvp_fix_t; /* fixed integer */ +-typedef float opvp_float_t; /* float */ +-typedef unsigned int opvp_flag_t; /* flags */ +-typedef unsigned int opvp_rop_t; /* raster operation */ +- +-/* for opvp_fix_t */ +-#define OPVP_FIX_FRACT_WIDTH 8 +-#define OPVP_FIX_FRACT_DENOM (1<<OPVP_FIX_FRACT_WIDTH) +-#define OPVP_FIX_FLOOR_WIDTH (sizeof(int)*8-OPVP_FIX_FRACT_WIDTH) +- +-/* convert macro */ +-#define OPVP_I2FIX(i,fix) (fix=(i)<<OPVP_FIX_FRACT_WIDTH) +-#define OPVP_F2FIX(f,fix) (fix=((int)floor(f)<<OPVP_FIX_FRACT_WIDTH)\ +- |((int)((f-floor(f))*OPVP_FIX_FRACT_DENOM)\ +- &(OPVP_FIX_FRACT_DENOM-1))) +- +-/* graphic elements */ +-typedef struct _opvp_point { +- opvp_fix_t x, y; +-} opvp_point_t; +- +-typedef struct _opvp_rectangle { +- opvp_point_t p0; /* start point */ +- opvp_point_t p1; /* diagonal point */ +-} opvp_rectangle_t; +- +-typedef struct _opvp_roundrectangle { +- opvp_point_t p0; /* start point */ +- opvp_point_t p1; /* diagonal point */ +- opvp_fix_t xellipse, yellipse; +-} opvp_roundrectangle_t; +- +-/* Image Formats */ +-typedef enum _opvp_imageformat { +- OPVP_IFORMAT_RAW = 0, +- OPVP_IFORMAT_MASK = 1, +- OPVP_IFORMAT_RLE = 2, +- OPVP_IFORMAT_JPEG = 3, +- OPVP_IFORMAT_PNG = 4 +-} opvp_imageformat_t; +- +-/* Color Presentation */ +-typedef enum _opvp_colormapping { +- OPVP_CMAP_DIRECT = 0, +- OPVP_CMAP_INDEXED = 1 +-} opvp_colormapping_t; +- +-typedef enum _opvp_cspace { +- OPVP_CSPACE_BW = 0, +- OPVP_CSPACE_DEVICEGRAY = 1, +- OPVP_CSPACE_DEVICECMY = 2, +- OPVP_CSPACE_DEVICECMYK = 3, +- OPVP_CSPACE_DEVICERGB = 4, +- OPVP_CSPACE_DEVICEKRGB = 5, +- OPVP_CSPACE_STANDARDRGB = 6, +- OPVP_CSPACE_STANDARDRGB64 = 7 +-} opvp_cspace_t; +- +-/* Fill, Paint, Clip */ +-typedef enum _opvp_fillmode { +- OPVP_FILLMODE_EVENODD = 0, +- OPVP_FILLMODE_WINDING = 1 +-} opvp_fillmode_t; +- +-typedef enum _opvp_paintmode { +- OPVP_PAINTMODE_OPAQUE = 0, +- OPVP_PAINTMODE_TRANSPARENT = 1 +-} opvp_paintmode_t; +- +-typedef enum _opvp_cliprule { +- OPVP_CLIPRULE_EVENODD = 0, +- OPVP_CLIPRULE_WINDING = 1 +-} opvp_cliprule_t; +- +-/* Line */ +-typedef enum _opvp_linestyle { +- OPVP_LINESTYLE_SOLID = 0, +- OPVP_LINESTYLE_DASH = 1 +-} opvp_linestyle_t; +- +-typedef enum _opvp_linecap { +- OPVP_LINECAP_BUTT = 0, +- OPVP_LINECAP_ROUND = 1, +- OPVP_LINECAP_SQUARE = 2 +-} opvp_linecap_t; +- +-typedef enum _opvp_linejoin { +- OPVP_LINEJOIN_MITER = 0, +- OPVP_LINEJOIN_ROUND = 1, +- OPVP_LINEJOIN_BEVEL = 2 +-} opvp_linejoin_t; +- +-/* Brush */ +-typedef enum _opvp_bdtype { +- OPVP_BDTYPE_NORMAL = 0 +-} opvp_bdtype_t; +- +-typedef struct _opvp_brushdata { +- opvp_bdtype_t type; +- opvp_int_t width, height, pitch; +- opvp_byte_t data[1]; +- +-} opvp_brushdata_t; +- +-typedef struct _opvp_brush { +- opvp_cspace_t colorSpace; +- opvp_int_t color[4]; /* aRGB quadruplet */ +- opvp_int_t xorg, yorg; /* brush origin */ +- /* ignored for opvpSetBgColor */ +- opvp_brushdata_t *pbrush; /* pointer to brush data */ +- /* solid brush used, if NULL */ +-} opvp_brush_t; +- +-/* Misc. Flags */ +-typedef enum _opvp_arcmode { +- OPVP_ARC = 0, +- OPVP_CHORD = 1, +- OPVP_PIE = 2 +-} opvp_arcmode_t; +- +-typedef enum _opvp_arcdir { +- OPVP_CLOCKWISE = 0, +- OPVP_COUNTERCLOCKWISE = 1 +-} opvp_arcdir_t; +- +-typedef enum _opvp_pathmode { +- OPVP_PATHCLOSE = 0, +- OPVP_PATHOPEN = 1 +-} opvp_pathmode_t; +- +-/* CTM */ +-typedef struct _opvp_ctm { +- opvp_float_t a, b, c, d, e, f; +-} opvp_ctm_t; +- +-/* Device Information and Capabilites */ +-typedef enum _opvp_queryinfoflags { +- OPVP_QF_DEVICERESOLUTION = 0x00000001, +- OPVP_QF_MEDIASIZE = 0x00000002, +- OPVP_QF_PAGEROTATION = 0x00000004, +- OPVP_QF_MEDIANUP = 0x00000008, +- OPVP_QF_MEDIADUPLEX = 0x00000010, +- OPVP_QF_MEDIASOURCE = 0x00000020, +- OPVP_QF_MEDIADESTINATION = 0x00000040, +- OPVP_QF_MEDIATYPE = 0x00000080, +- OPVP_QF_MEDIACOPY = 0x00000100, /* Maximum copy number +- supported */ +- OPVP_QF_PRINTREGION = 0x00010000 /* only for opvpQueryDeviceInfo */ +-} opvp_queryinfoflags_t; +- +- +-/* API Procedure Entries */ +-typedef struct _opvp_api_procs { +- opvp_dc_t (*opvpOpenPrinter)(opvp_int_t,const opvp_char_t*,const opvp_int_t[2],struct _opvp_api_procs**); +- opvp_result_t (*opvpClosePrinter)(opvp_dc_t); +- opvp_result_t (*opvpStartJob)(opvp_dc_t,const opvp_char_t*); +- opvp_result_t (*opvpEndJob)(opvp_dc_t); +- opvp_result_t (*opvpAbortJob)(opvp_dc_t); +- opvp_result_t (*opvpStartDoc)(opvp_dc_t,const opvp_char_t*); +- opvp_result_t (*opvpEndDoc)(opvp_dc_t); +- opvp_result_t (*opvpStartPage)(opvp_dc_t,const opvp_char_t*); +- opvp_result_t (*opvpEndPage)(opvp_dc_t); +- opvp_result_t (*opvpQueryDeviceCapability)(opvp_dc_t,opvp_flag_t,opvp_int_t*,opvp_byte_t*); +- opvp_result_t (*opvpQueryDeviceInfo)(opvp_dc_t,opvp_flag_t,opvp_int_t*,opvp_char_t*); +- opvp_result_t (*opvpResetCTM)(opvp_dc_t); +- opvp_result_t (*opvpSetCTM)(opvp_dc_t,const opvp_ctm_t*); +- opvp_result_t (*opvpGetCTM)(opvp_dc_t,opvp_ctm_t*); +- opvp_result_t (*opvpInitGS)(opvp_dc_t); +- opvp_result_t (*opvpSaveGS)(opvp_dc_t); +- opvp_result_t (*opvpRestoreGS)(opvp_dc_t); +- opvp_result_t (*opvpQueryColorSpace)(opvp_dc_t,opvp_int_t*,opvp_cspace_t*); +- opvp_result_t (*opvpSetColorSpace)(opvp_dc_t,opvp_cspace_t); +- opvp_result_t (*opvpGetColorSpace)(opvp_dc_t,opvp_cspace_t*); +- opvp_result_t (*opvpSetFillMode)(opvp_dc_t,opvp_fillmode_t); +- opvp_result_t (*opvpGetFillMode)(opvp_dc_t,opvp_fillmode_t*); +- opvp_result_t (*opvpSetAlphaConstant)(opvp_dc_t,opvp_float_t); +- opvp_result_t (*opvpGetAlphaConstant)(opvp_dc_t,opvp_float_t*); +- opvp_result_t (*opvpSetLineWidth)(opvp_dc_t,opvp_fix_t); +- opvp_result_t (*opvpGetLineWidth)(opvp_dc_t,opvp_fix_t*); +- opvp_result_t (*opvpSetLineDash)(opvp_dc_t,opvp_int_t,const opvp_fix_t*); +- opvp_result_t (*opvpGetLineDash)(opvp_dc_t,opvp_int_t*,opvp_fix_t*); +- opvp_result_t (*opvpSetLineDashOffset)(opvp_dc_t,opvp_fix_t); +- opvp_result_t (*opvpGetLineDashOffset)(opvp_dc_t,opvp_fix_t*); +- opvp_result_t (*opvpSetLineStyle)(opvp_dc_t,opvp_linestyle_t); +- opvp_result_t (*opvpGetLineStyle)(opvp_dc_t,opvp_linestyle_t*); +- opvp_result_t (*opvpSetLineCap)(opvp_dc_t,opvp_linecap_t); +- opvp_result_t (*opvpGetLineCap)(opvp_dc_t,opvp_linecap_t*); +- opvp_result_t (*opvpSetLineJoin)(opvp_dc_t,opvp_linejoin_t); +- opvp_result_t (*opvpGetLineJoin)(opvp_dc_t,opvp_linejoin_t*); +- opvp_result_t (*opvpSetMiterLimit)(opvp_dc_t,opvp_fix_t); +- opvp_result_t (*opvpGetMiterLimit)(opvp_dc_t,opvp_fix_t*); +- opvp_result_t (*opvpSetPaintMode)(opvp_dc_t,opvp_paintmode_t); +- opvp_result_t (*opvpGetPaintMode)(opvp_dc_t,opvp_paintmode_t*); +- opvp_result_t (*opvpSetStrokeColor)(opvp_dc_t,const opvp_brush_t*); +- opvp_result_t (*opvpSetFillColor)(opvp_dc_t,const opvp_brush_t*); +- opvp_result_t (*opvpSetBgColor)(opvp_dc_t,const opvp_brush_t*); +- opvp_result_t (*opvpNewPath)(opvp_dc_t); +- opvp_result_t (*opvpEndPath)(opvp_dc_t); +- opvp_result_t (*opvpStrokePath)(opvp_dc_t); +- opvp_result_t (*opvpFillPath)(opvp_dc_t); +- opvp_result_t (*opvpStrokeFillPath)(opvp_dc_t); +- opvp_result_t (*opvpSetClipPath)(opvp_dc_t,opvp_cliprule_t); +- opvp_result_t (*opvpResetClipPath)(opvp_dc_t); +- opvp_result_t (*opvpSetCurrentPoint)(opvp_dc_t,opvp_fix_t,opvp_fix_t); +- opvp_result_t (*opvpLinePath)(opvp_dc_t,opvp_pathmode_t,opvp_int_t,const opvp_point_t*); +- opvp_result_t (*opvpPolygonPath)(opvp_dc_t,opvp_int_t,const opvp_int_t*,const opvp_point_t*); +- opvp_result_t (*opvpRectanglePath)(opvp_dc_t,opvp_int_t,const opvp_rectangle_t*); +- opvp_result_t (*opvpRoundRectanglePath)(opvp_dc_t,opvp_int_t,const opvp_roundrectangle_t*); +- opvp_result_t (*opvpBezierPath)(opvp_dc_t,opvp_int_t,const opvp_point_t*); +- opvp_result_t (*opvpArcPath)(opvp_dc_t,opvp_arcmode_t,opvp_arcdir_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t); +- opvp_result_t (*opvpDrawImage)(opvp_dc_t,opvp_int_t,opvp_int_t,opvp_int_t,opvp_imageformat_t,opvp_int_t, opvp_int_t ,const void*); +- opvp_result_t (*opvpStartDrawImage)(opvp_dc_t,opvp_int_t,opvp_int_t,opvp_int_t,opvp_imageformat_t,opvp_int_t, opvp_int_t); +- opvp_result_t (*opvpTransferDrawImage)(opvp_dc_t,opvp_int_t,const void*); +- opvp_result_t (*opvpEndDrawImage)(opvp_dc_t); +- opvp_result_t (*opvpStartScanline)(opvp_dc_t,opvp_int_t); +- opvp_result_t (*opvpScanline)(opvp_dc_t,opvp_int_t,const opvp_int_t*); +- opvp_result_t (*opvpEndScanline)(opvp_dc_t); +- opvp_result_t (*opvpStartRaster)(opvp_dc_t,opvp_int_t); +- opvp_result_t (*opvpTransferRasterData)(opvp_dc_t,opvp_int_t,const opvp_byte_t*); +- opvp_result_t (*opvpSkipRaster)(opvp_dc_t,opvp_int_t); +- opvp_result_t (*opvpEndRaster)(opvp_dc_t); +- opvp_result_t (*opvpStartStream)(opvp_dc_t); +- opvp_result_t (*opvpTransferStreamData)(opvp_dc_t,opvp_int_t,const void*); +- opvp_result_t (*opvpEndStream)(opvp_dc_t); +-} opvp_api_procs_t; +- +-/* Function prototype */ +-opvp_dc_t opvpOpenPrinter( +- opvp_int_t outputFD, +- const opvp_char_t *printerModel, +- const opvp_int_t apiVersion[2], +- opvp_api_procs_t **apiProcs); +- +-/* error no */ +-extern opvp_int_t opvpErrorNo; +- +-#endif /* _OPVP_H_ */ +diff --git a/filter/pdftoopvp/opvp/opvp_0_2_0.h b/filter/pdftoopvp/opvp/opvp_0_2_0.h +deleted file mode 100644 +index 2b2c4aa..0000000 +--- a/filter/pdftoopvp/opvp/opvp_0_2_0.h ++++ /dev/null +@@ -1,298 +0,0 @@ +-/* +- +-Copyright (c) 2003-2004, AXE, Inc. All rights reserved. +- +-Permission is hereby granted, free of charge, to any person obtaining +-a copy of this software and associated documentation files (the +-"Software"), to deal in the Software without restriction, including +-without limitation the rights to use, copy, modify, merge, publish, +-distribute, sublicense, and/or sell copies of the Software, and to +-permit persons to whom the Software is furnished to do so, subject to +-the following conditions: +- +-The above copyright notice and this permission notice shall be included +-in all copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- +-*/ +-/* opvp_common.h ver.1.00 rel.1.0 26 Nov 2004 */ +-/* OpenPrinting Vector Printer Driver Glue Code */ +- +-#ifndef _FSGPD_0_2_0_H +-#define _FSGPD_0_2_0_H +- +-#define _PDAPI_VERSION_MAJOR_ 0 +-#define _PDAPI_VERSION_MINOR_ 2 +- +-/* Return Values */ +-#define OPVP_OK 0 /* error is -1 */ +- +-/* Error Codes */ +-#define OPVP_FATALERROR -101 /* unrecoverable error occurred within the */ +- /* library */ +-#define OPVP_BADREQUEST -102 /* invalid function parameters */ +-#define OPVP_BADCONTEXT -103 /* bad parameter precontext */ +-#define OPVP_NOTSUPPORTED -104 /* printer or driver request not supported */ +-#define OPVP_JOBCANCELED -105 /* job cancelled */ +-#define OPVP_PARAMERROR -106 /* illegal parameter combination */ +- +-/* Info params */ +-#define OPVP_INFO_PREFIX "updf:" +- +-/* Fix */ +-#define OPVP_FIX_FRACT_WIDTH 8 +-#define OPVP_FIX_FRACT_DENOM (1<<OPVP_FIX_FRACT_WIDTH) +-#define OPVP_FIX_FLOOR_WIDTH (sizeof(int)*8-OPVP_FIX_FRACT_WIDTH) +-#if 0 +-typedef struct { +- unsigned int fract : OPVP_FIX_FRACT_WIDTH; +- signed int floor : OPVP_FIX_FLOOR_WIDTH; +-} OPVP_Fix; +-#define OPVP_i2Fix(i,fix) (fix.fract=0,fix.floor=i) +-#define OPVP_Fix2f(fix,f) (f=(double)fix.floor\ +- +(double)(fix.fract)/OPVP_FIX_FRACT_DENOM) +-#define OPVP_f2Fix(f,fix) (fix.fract=(f-floor(f))*OPVP_FIX_FRACT_DENOM,\ +- fix.floor=floor(f)) +-#else +-typedef int OPVP_Fix; +-#define OPVP_i2Fix(i,fix) (fix=(i)<<8) +-#define OPVP_f2Fix(f,fix) (fix=((int)floor(f)<<8)\ +- |((int)(((f)-floor(f))*OPVP_FIX_FRACT_DENOM)\ +- &0x000000ff)) +-#endif +- +-/* Basic Types */ +-typedef struct _OPVP_Point { +- OPVP_Fix x; +- OPVP_Fix y; +-} OPVP_Point; +- +-typedef struct _OPVP_Rectangle { +- OPVP_Point p0; /* start point */ +- OPVP_Point p1; /* end point */ +-} OPVP_Rectangle; +- +-typedef struct _OPVP_RoundRectangle { +- OPVP_Point p0; /* start point */ +- OPVP_Point p1; /* end point */ +- OPVP_Fix xellipse; +- OPVP_Fix yellipse; +-} OPVP_RoundRectangle; +- +-/* Image Formats */ +-typedef enum _OPVP_ImageFormat { +- OPVP_iformatRaw = 0, +- OPVP_iformatRLE = 1, +- OPVP_iformatJPEG = 2, +- OPVP_iformatPNG = 3 +-} OPVP_ImageFormat; +- +-/* Color Presentation */ +-typedef enum _OPVP_ColorMapping { +- OPVP_cmapDirect = 0, +- OPVP_cmapIndexed = 1 +-} OPVP_ColorMapping; +- +-typedef enum _OPVP_ColorSpace { +- OPVP_cspaceBW = 0, +- OPVP_cspaceDeviceGray = 1, +- OPVP_cspaceDeviceCMY = 2, +- OPVP_cspaceDeviceCMYK = 3, +- OPVP_cspaceDeviceRGB = 4, +- OPVP_cspaceStandardRGB = 5, +- OPVP_cspaceStandardRGB64 = 6 +-} OPVP_ColorSpace; +- +-/* Raster Operation modes */ +-typedef enum _OPVP_ROP { +- OPVP_ropPset = 0, +- OPVP_ropPreset = 1, +- OPVP_ropOr = 2, +- OPVP_ropAnd = 3, +- OPVP_ropXor = 4 +-} OPVP_ROP; +- +-/* Fill, Paint, Clip */ +-typedef enum _OPVP_FillMode { +- OPVP_fillModeEvenOdd = 0, +- OPVP_fillModeWinding = 1 +-} OPVP_FillMode; +- +-typedef enum _OPVP_PaintMode { +- OPVP_paintModeOpaque = 0, +- OPVP_paintModeTransparent = 1 +-} OPVP_PaintMode; +- +-typedef enum _OPVP_ClipRule { +- OPVP_clipRuleEvenOdd = 0, +- OPVP_clipRuleWinding = 1 +-} OPVP_ClipRule; +- +-/* Line */ +-typedef enum _OPVP_LineStyle { +- OPVP_lineStyleSolid = 0, +- OPVP_lineStyleDash = 1 +-} OPVP_LineStyle; +- +-typedef enum _OPVP_LineCap { +- OPVP_lineCapButt = 0, +- OPVP_lineCapRound = 1, +- OPVP_lineCapSquare = 2 +-} OPVP_LineCap; +- +-typedef enum _OPVP_LineJoin { +- OPVP_lineJoinMiter = 0, +- OPVP_lineJoinRound = 1, +- OPVP_lineJoinBevel = 2 +-} OPVP_LineJoin; +- +-/* Brush */ +-typedef enum _OPVP_BrushDataType { +- OPVP_bdtypeNormal = 0 +-} OPVP_BrushDataType; +- +-typedef struct _OPVP_BrushData { +- OPVP_BrushDataType type; +- int width; +- int height; +- int pitch; +-#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) +- void *data; /* pointer to actual data */ +-#else +- char data[1]; +-#endif +-} OPVP_BrushData; +- +-typedef struct _OPVP_Brush { +- OPVP_ColorSpace colorSpace; +- int color[4]; /* aRGB quadruplet */ +-#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) +- OPVP_BrushData *pbrush; /* pointer to brush data */ +- /* solid brush used, if null */ +- int xorg; /* brush origin */ +- int yorg; /* ignored for SetBgColor */ +-#else +- int xorg; /* brush origin */ +- int yorg; /* ignored for SetBgColor */ +- OPVP_BrushData *pbrush; /* pointer to brush data */ +- /* solid brush used, if null */ +-#endif +-} OPVP_Brush; +- +-/* Misc. Flags */ +-#define OPVP_Arc 0 /* circular arc */ +-#define OPVP_Chord 1 /* arch */ +-#define OPVP_Pie 2 /* pie section */ +-#define OPVP_Clockwise 0 /* clockwise */ +-#define OPVP_Counterclockwise 1 /* counter-clockwise */ +-#define OPVP_PathClose 0 /* Close path when using LinePath */ +-#define OPVP_PathOpen 1 /* Do not close path when using LinePath */ +- +-/* CTM */ +-typedef struct _OPVP_CTM { +- float a; +- float b; +- float c; +- float d; +- float e; +- float f; +-} OPVP_CTM; +- +-/* Vector Driver API Proc. Entries */ +-typedef struct _OPVP_api_procs { +- int (*OpenPrinter)(int,char *,int *,struct _OPVP_api_procs **); +- int (*ClosePrinter)(int); +- int (*StartJob)(int,char *); +- int (*EndJob)(int); +- int (*StartDoc)(int,char *); +- int (*EndDoc)(int); +- int (*StartPage)(int,char *); +- int (*EndPage)(int); +-#if (_PDAPI_VERSION_MAJOR_ > 0 || _PDAPI_VERSION_MINOR_ >= 2) +- int (*QueryDeviceCapability)(int,int,int,char *); +- int (*QueryDeviceInfo)(int,int,int,char *); +-#endif +- int (*ResetCTM)(int); +- int (*SetCTM)(int,OPVP_CTM *); +- int (*GetCTM)(int,OPVP_CTM *); +- int (*InitGS)(int); +- int (*SaveGS)(int); +- int (*RestoreGS)(int); +- int (*QueryColorSpace)(int,OPVP_ColorSpace *,int *); +- int (*SetColorSpace)(int,OPVP_ColorSpace); +- int (*GetColorSpace)(int,OPVP_ColorSpace *); +- int (*QueryROP)(int,int *,int *); +- int (*SetROP)(int,int); +- int (*GetROP)(int,int *); +- int (*SetFillMode)(int,OPVP_FillMode); +- int (*GetFillMode)(int,OPVP_FillMode *); +- int (*SetAlphaConstant)(int,float); +- int (*GetAlphaConstant)(int,float *); +- int (*SetLineWidth)(int,OPVP_Fix); +- int (*GetLineWidth)(int,OPVP_Fix *); +- int (*SetLineDash)(int,OPVP_Fix *,int); +- int (*GetLineDash)(int,OPVP_Fix *,int *); +- int (*SetLineDashOffset)(int,OPVP_Fix); +- int (*GetLineDashOffset)(int,OPVP_Fix *); +- int (*SetLineStyle)(int,OPVP_LineStyle); +- int (*GetLineStyle)(int,OPVP_LineStyle *); +- int (*SetLineCap)(int,OPVP_LineCap); +- int (*GetLineCap)(int,OPVP_LineCap *); +- int (*SetLineJoin)(int,OPVP_LineJoin); +- int (*GetLineJoin)(int,OPVP_LineJoin *); +- int (*SetMiterLimit)(int,OPVP_Fix); +- int (*GetMiterLimit)(int,OPVP_Fix *); +- int (*SetPaintMode)(int,OPVP_PaintMode); +- int (*GetPaintMode)(int,OPVP_PaintMode *); +- int (*SetStrokeColor)(int,OPVP_Brush *); +- int (*SetFillColor)(int,OPVP_Brush *); +- int (*SetBgColor)(int,OPVP_Brush *); +- int (*NewPath)(int); +- int (*EndPath)(int); +- int (*StrokePath)(int); +- int (*FillPath)(int); +- int (*StrokeFillPath)(int); +- int (*SetClipPath)(int,OPVP_ClipRule); +-#if (_PDAPI_VERSION_MAJOR_ > 0 || _PDAPI_VERSION_MINOR_ >= 2) +- int (*ResetClipPath)(int); +-#endif +- int (*SetCurrentPoint)(int,OPVP_Fix,OPVP_Fix); +- int (*LinePath)(int,int,int,OPVP_Point *); +- int (*PolygonPath)(int,int,int *,OPVP_Point *); +- int (*RectanglePath)(int,int,OPVP_Rectangle *); +- int (*RoundRectanglePath)(int,int,OPVP_RoundRectangle *); +-#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) +- int (*BezierPath)(int,int *,OPVP_Point *); +-#else +- int (*BezierPath)(int,int,OPVP_Point *); +-#endif +- int (*ArcPath)(int,int,int,OPVP_Fix,OPVP_Fix,OPVP_Fix,OPVP_Fix, +- OPVP_Fix,OPVP_Fix,OPVP_Fix,OPVP_Fix); +- int (*DrawBitmapText)(int,int,int,int,void *); +- int (*DrawImage)(int,int,int,int, +- OPVP_ImageFormat,OPVP_Rectangle,int,void *); +- int (*StartDrawImage)(int,int,int,int, +- OPVP_ImageFormat,OPVP_Rectangle); +- int (*TransferDrawImage)(int,int,void *); +- int (*EndDrawImage)(int); +- int (*StartScanline)(int,int); +- int (*Scanline)(int,int,int *); +- int (*EndScanline)(int); +- int (*StartRaster)(int,int); +- int (*TransferRasterData)(int,int,unsigned char *); +- int (*SkipRaster)(int,int); +- int (*EndRaster)(int); +- int (*StartStream)(int); +- int (*TransferStreamData)(int,int,void *); +- int (*EndStream)(int); +-} OPVP_api_procs; +- +-#endif /* _OPVP_COMMON_H_ */ +- +diff --git a/filter/pdftoopvp/opvp/opvp_common.h b/filter/pdftoopvp/opvp/opvp_common.h +deleted file mode 100644 +index 5d65b32..0000000 +--- a/filter/pdftoopvp/opvp/opvp_common.h ++++ /dev/null +@@ -1,54 +0,0 @@ +-/* +- +-Copyright (c) 2003-2004, AXE, Inc. All rights reserved. +- +-Permission is hereby granted, free of charge, to any person obtaining +-a copy of this software and associated documentation files (the +-"Software"), to deal in the Software without restriction, including +-without limitation the rights to use, copy, modify, merge, publish, +-distribute, sublicense, and/or sell copies of the Software, and to +-permit persons to whom the Software is furnished to do so, subject to +-the following conditions: +- +-The above copyright notice and this permission notice shall be included +-in all copies or substantial portions of the Software. +- +-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +- +-*/ +-/* OpenPrinting Vector Printer Driver Glue Code */ +- +-#ifndef _OPVP_COMMON_H_ +-#define _OPVP_COMMON_H_ +- +-#include "opvp_0_2_0.h" +-#undef _PDAPI_VERSION_MAJOR_ +-#undef _PDAPI_VERSION_MINOR_ +-/* undefine conflicted macros */ +-#undef OPVP_INFO_PREFIX +-#undef OPVP_OK +-#undef OPVP_FATALERROR +-#undef OPVP_BADREQUEST +-#undef OPVP_BADCONTEXT +-#undef OPVP_NOTSUPPORTED +-#undef OPVP_JOBCANCELED +-#undef OPVP_PARAMERROR +-/* define 0_2 error no as different macros */ +-#define OPVP_FATALERROR_0_2 -101 +-#define OPVP_BADREQUEST_0_2 -102 +-#define OPVP_BADCONTEXT_0_2 -103 +-#define OPVP_NOTSUPPORTED_0_2 -104 +-#define OPVP_JOBCANCELED_0_2 -105 +-#define OPVP_PARAMERROR_0_2 -106 +- +-#include "opvp.h" +-#define OPVP_INFO_PREFIX "" +- +-#endif /* _OPVP_COMMON_H_ */ +- +diff --git a/filter/pdftoopvp/pdftoopvp.cxx b/filter/pdftoopvp/pdftoopvp.cxx +deleted file mode 100644 +index dfff692..0000000 +--- a/filter/pdftoopvp/pdftoopvp.cxx ++++ /dev/null +@@ -1,798 +0,0 @@ +-//======================================================================== +-// +-// pdftoopvp.cc +-// +-// Copyright 2005 AXE,Inc. +-// +-// 2007,2008,2009 Modified by BBR Inc. +-//======================================================================== +- +-#include <config.h> +-#include <stdio.h> +-#include <stdlib.h> +-#include <unistd.h> +-#include <ctype.h> +-#include <math.h> +-#ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" +-#endif +-#include "goo/GooString.h" +-#define GSTRING_H // for old GooString.h +-#include "goo/gmem.h" +-#include "GlobalParams.h" +-#include "Object.h" +-#include "PDFDoc.h" +-#include "splash/SplashBitmap.h" +-#include "OPRS.h" +-#include "OPVPOutputDev.h" +-#include "Gfx.h" +-#include <cups/cups.h> +-#include <cups/ppd.h> +-#include "OPVPError.h" +- +-#define MMPERINCH (25.4) +- +-static int resolution = 300; +-static int hResolution = 0; +-static int vResolution = 0; +-static bool mono = false; +-static bool reverse = false; +-static bool gray = false; +-static char enableFreeTypeStr[16] = ""; +-static bool quiet = false; +-static char outputOrderStr[256] = ""; +-static bool oldLipsDriver = false; +-static bool HPDriver = false; +-static bool NECDriver = false; +-static bool clipPathNotSaved = false; +-static bool noShearImage = false; +-static bool noLineStyle = false; +-static bool noImageMask = false; +-static bool noClipPath = false; +-static bool ignoreMiterLimit = false; +-static bool noMiterLimit = false; +-static char printerDriver[1024] = ""; +-static char printerModel[1024] = ""; +-static char jobInfo[4096] = ""; +-static char docInfo[1024] = ""; +-static char pageInfo[1024] = ""; +-static bool noBitmapChar = false; +-static char bitmapCharThreshold[20] = "2000"; +-static char maxClipPathLength[20] = "2000"; +-static char maxFillPathLength[20] = "4000"; +-static int pageWidth = -1; +-static int pageHeight = -1; +- +-static int outOnePage(PDFDoc *doc, OPVPOutputDev *opvpOut, int pg) +-{ +- char buf[1024]; +- char *p; +- double pw = doc->getPageMediaWidth(pg); +- double ph = doc->getPageMediaHeight(pg); +- int paperWidth; +- int paperHeight; +- +- if (pw != pageWidth || ph != pageHeight) { +- if (pageInfo[0] != '\0') { +- snprintf(buf,sizeof(buf),"%s;MediaSize=%dx%dmm",pageInfo, +- (int)(pw*MMPERINCH/72), +- (int)(ph*MMPERINCH/72)); +- } else { +- snprintf(buf,sizeof(buf),"MediaSize=%dx%dmm", +- (int)(pw*MMPERINCH/72), +- (int)(ph*MMPERINCH/72)); +- } +- p = buf; +- } else { +- pw = pageWidth; +- ph = pageHeight; +- p = pageInfo; +- } +- +- paperWidth = (int)(pw*hResolution/72+0.5); +- paperHeight = (int)(ph*vResolution/72+0.5); +- if (opvpOut->OPVPStartPage(p,paperWidth,paperHeight) < 0) { +- opvpError(-1,"Start Page failed"); +- return 2; +- } +- opvpOut->setScale(1.0,1.0,0,0,0,0,paperHeight); +- doc->displayPage(opvpOut, pg, resolution, resolution, +- 0, true, true, false); +- if (opvpOut->outSlice() < 0) { +- opvpError(-1,"OutSlice failed"); +- return 2; +- } +- if (opvpOut->OPVPEndPage() < 0) { +- opvpError(-1,"End Page failed"); +- return 2; +- } +- return 0; +-} +- +-#define MAX_OPVP_OPTIONS 20 +- +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +-void CDECL myErrorFun(void *data, ErrorCategory category, +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- Goffset pos, const char *msg) +-#else +- Goffset pos, char *msg) +-#endif /* MAJOR > 0 || MINOR >= 70 */ +-#else +-void CDECL myErrorFun(void *data, ErrorCategory category, +- int pos, char *msg) +-#endif +-{ +- if (pos >= 0) { +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +- fprintf(stderr, "ERROR (%lld): ", pos); +-#else +- fprintf(stderr, "ERROR (%d): ", pos); +-#endif +- } else { +- fprintf(stderr, "ERROR: "); +- } +- fprintf(stderr, "%s\n",msg); +- fflush(stderr); +-} +- +-static bool getColorProfilePath(ppd_file_t *ppd, GooString *path) +-{ +- // get color profile path +- const char *colorModel; +- const char *cupsICCQualifier2; +- const char *cupsICCQualifier2Choice; +- const char *cupsICCQualifier3; +- const char *cupsICCQualifier3Choice; +- ppd_attr_t *attr; +- ppd_choice_t *choice; +- const char *datadir; +- +- if ((attr = ppdFindAttr(ppd,"ColorModel",NULL)) != NULL) { +- colorModel = attr->value; +- } else { +- colorModel = NULL; +- } +- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier2",NULL)) != NULL) { +- cupsICCQualifier2 = attr->value; +- } else { +- cupsICCQualifier2 = "MediaType"; +- } +- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier2)) != NULL) { +- cupsICCQualifier2Choice = choice->choice; +- } else { +- cupsICCQualifier2Choice = NULL; +- } +- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier3",NULL)) != NULL) { +- cupsICCQualifier3 = attr->value; +- } else { +- cupsICCQualifier3 = "Resolution"; +- } +- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier3)) != NULL) { +- cupsICCQualifier3Choice = choice->choice; +- } else { +- cupsICCQualifier3Choice = NULL; +- } +- +- for (attr = ppdFindAttr(ppd,"cupsICCProfile",NULL);attr != NULL; +- attr = ppdFindNextAttr(ppd,"cupsICCProfile",NULL)) { +- // check color model +- char buf[PPD_MAX_NAME]; +- char *p, *r; +- +- strncpy(buf,attr->spec,sizeof(buf)); +- if ((p = strchr(buf,'.')) != NULL) { +- *p = '\0'; +- } +- if (colorModel != NULL && buf[0] != '\0' +- && strcasecmp(buf,colorModel) != 0) continue; +- if (p == NULL) { +- break; +- } else { +- p++; +- if ((r = strchr(p,'.')) != 0) { +- *r = '\0'; +- } +- } +- if (cupsICCQualifier2Choice != NULL && p[0] != '\0' +- && strcasecmp(p,cupsICCQualifier2Choice) != 0) continue; +- if (r == NULL) { +- break; +- } else { +- r++; +- if ((p = strchr(r,'.')) != 0) { +- *p = '\0'; +- } +- } +- if (cupsICCQualifier3Choice == NULL || r[0] == '\0' +- || strcasecmp(r,cupsICCQualifier3Choice) == 0) break; +- } +- if (attr != NULL) { +- // matched +- path->clear(); +- if (attr->value[0] != '/') { +- if ((datadir = getenv("CUPS_DATADIR")) == NULL) +- datadir = CUPS_DATADIR; +- path->append(datadir); +- path->append("/profiles/"); +- } +- path->append(attr->value); +- return true; +- } +- return false; +-} +- +-int main(int argc, char *argv[]) { +-/* mtrace(); */ +- int exitCode; +-{ +- PDFDoc *doc; +- SplashColor paperColor; +- OPVPOutputDev *opvpOut; +- bool ok = true; +- int pg; +- const char *optionKeys[MAX_OPVP_OPTIONS]; +- const char *optionVals[MAX_OPVP_OPTIONS]; +- int nOptions = 0; +- int numPages; +- int i; +- GooString fileName; +- GooString colorProfilePath("opvp.icc"); +- +- exitCode = 99; +- setErrorCallback(::myErrorFun,NULL); +- +- // parse args +- int num_options; +- cups_option_t *options; +- const char *val; +- char *ppdFileName; +- ppd_file_t *ppd = 0; +- ppd_attr_t *attr; +- GooString jobInfoStr; +- GooString docInfoStr; +- GooString pageInfoStr; +- bool colorProfile = false; +- +- +- if (argc < 6 || argc > 7) { +- opvpError(-1,"ERROR: %s job-id user title copies options [file]", +- argv[0]); +- return (1); +- } +- +- if ((ppdFileName = getenv("PPD")) != 0) { +- if ((ppd = ppdOpenFile(ppdFileName)) != 0) { +- /* get attributes from PPD File */ +- if ((attr = ppdFindAttr(ppd,"opvpJobInfo",0)) != 0) { +- jobInfoStr.append(attr->value); +- } +- if ((attr = ppdFindAttr(ppd,"opvpDocInfo",0)) != 0) { +- docInfoStr.append(attr->value); +- } +- if ((attr = ppdFindAttr(ppd,"opvpPageInfo",0)) != 0) { +- pageInfoStr.append(attr->value); +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpOldLipsDriver",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- oldLipsDriver = true; +- } else { +- oldLipsDriver = false; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpHPDriver",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- HPDriver = true; +- } else { +- HPDriver = false; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpNECDriver",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- NECDriver = true; +- } else { +- NECDriver = false; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpClipPathNotSaved",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- clipPathNotSaved = true; +- } else { +- clipPathNotSaved = false; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpShearImage",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noShearImage = false; +- } else { +- noShearImage = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpLineStyle",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noLineStyle = false; +- } else { +- noLineStyle = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpImageMask",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noImageMask = false; +- } else { +- noImageMask = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpClipPath",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noClipPath = false; +- } else { +- noClipPath = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpMiterLimit",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noMiterLimit = false; +- } else { +- noMiterLimit = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpIgnoreMiterLimit",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- ignoreMiterLimit = true; +- } else { +- ignoreMiterLimit = false; +- } +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpBitmapCharThreshold",0)) != 0) { +- strncpy(bitmapCharThreshold,attr->value, +- sizeof(bitmapCharThreshold)-1); +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpMaxClipPathLength",0)) != 0) { +- strncpy(maxClipPathLength,attr->value, +- sizeof(maxClipPathLength)-1); +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpMaxFillPathLength",0)) != 0) { +- strncpy(maxFillPathLength,attr->value, +- sizeof(maxFillPathLength)-1); +- } +- if ((attr = ppdFindAttr(ppd,"pdftoopvpBitmapChar",0)) != 0) { +- if (strcasecmp(attr->value,"true") == 0) { +- noBitmapChar = false; +- } else { +- noBitmapChar = true; +- } +- } +- if ((attr = ppdFindAttr(ppd,"opvpDriver",0)) != 0) { +- strncpy(printerDriver,attr->value,sizeof(printerDriver)-1); +- printerDriver[sizeof(printerDriver)-1] = '\0'; +- } +- if ((attr = ppdFindAttr(ppd,"opvpModel",0)) != 0) { +- strncpy(printerModel,attr->value,sizeof(printerModel)-1); +- printerModel[sizeof(printerModel)-1] = '\0'; +- } +- ppdMarkDefaults(ppd); +- } +- } +- /* get attributes and options from command line option */ +- num_options = cupsParseOptions(argv[5],0,&options); +- cupsMarkOptions(ppd,num_options,options); +- +- for (i = 0;i < num_options;i++) { +- if (strcasecmp(options[i].name,"Resolution") == 0) { +- resolution = atoi(options[i].value); +- } else if (strcasecmp(options[i].name,"pdftoopvpOldLipsDriver") == 0) { +- oldLipsDriver = true; +- } else if (strcasecmp(options[i].name,"pdftoopvpHPDriver") == 0) { +- HPDriver = true; +- } else if (strcasecmp(options[i].name,"pdftoopvpNECDriver") == 0) { +- NECDriver = true; +- } else if (strcasecmp(options[i].name,"pdftoopvpClipPathNotSaved") == 0) { +- clipPathNotSaved = true; +- } else if (strcasecmp(options[i].name,"pdftoopvpShearImage") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noShearImage = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpLineStyle") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noLineStyle = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpImageMask") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noImageMask = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpClipPath") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noClipPath = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpMiterLimit") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noMiterLimit = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpIgnoreMiterLimit") == 0) { +- if (strcasecmp(options[i].value,"true") == 0) { +- ignoreMiterLimit = true; +- } +- } +- else if (strcasecmp(options[i].name,"pdftoopvpBitmapChar") == 0) { +- if (strcasecmp(options[i].value,"false") == 0) { +- noBitmapChar = true; +- } +- } else if (strcasecmp(options[i].name,"pdftoopvpBitmapCharThreshold") == 0) { +- strncpy(bitmapCharThreshold,options[i].value, +- sizeof(bitmapCharThreshold)-1); +- } else if (strcasecmp(options[i].name,"pdftoopvpMaxClipPathLength") == 0) { +- strncpy(maxClipPathLength,options[i].value, +- sizeof(maxClipPathLength)-1); +- } else if (strcasecmp(options[i].name,"pdftoopvpMaxFillPathLength") == 0) { +- strncpy(maxFillPathLength,options[i].value, +- sizeof(maxFillPathLength)-1); +- } else if (strcasecmp(options[i].name,"opvpDriver") == 0) { +- strncpy(printerDriver,options[i].value,sizeof(printerDriver)-1); +- printerDriver[sizeof(printerDriver)-1] = '\0'; +- } else if (strcasecmp(options[i].name,"opvpModel") == 0) { +- strncpy(printerModel,options[i].value,sizeof(printerModel)-1); +- printerModel[sizeof(printerModel)-1] = '\0'; +- } else if (strcasecmp(options[i].name,"opvpJobInfo") == 0) { +- /* do nothing here */; +- } else if (strcasecmp(options[i].name,"opvpDocInfo") == 0) { +- /* do nothing here */; +- } else if (strcasecmp(options[i].name,"opvpPageInfo") == 0) { +- /* do nothing here */; +- } +- } +- if (ppd != 0) { +- int section; +- ppd_choice_t **choices; +- ppd_size_t *pagesize; +- +- if ((pagesize = ppdPageSize(ppd,0)) != 0) { +- pageWidth = (int)pagesize->width; +- pageHeight = (int)pagesize->length; +- } +- for (section = (int)PPD_ORDER_ANY; +- section <= (int)PPD_ORDER_PROLOG;section++) { +- int n; +- +- n = ppdCollect(ppd,(ppd_section_t)section,&choices); +- for (i = 0;i < n;i++) { +- +- if (strcasecmp(((ppd_option_t *)(choices[i]->option))->keyword, +- "Resolution") == 0) { +- resolution = atoi(choices[i]->choice); +- } +- } +- if (choices != 0) free(choices); +- } +- +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 +- strncpy(jobInfo,jobInfoStr.getCString(),sizeof(jobInfo)-1); +- jobInfo[sizeof(jobInfo)-1] = '\0'; +- strncpy(docInfo,docInfoStr.getCString(),sizeof(docInfo)-1); +- docInfo[sizeof(docInfo)-1] = '\0'; +- strncpy(pageInfo,pageInfoStr.getCString(),sizeof(pageInfo)-1); +- pageInfo[sizeof(pageInfo)-1] = '\0'; +-#else +- strncpy(jobInfo,jobInfoStr.c_str(),sizeof(jobInfo)-1); +- jobInfo[sizeof(jobInfo)-1] = '\0'; +- strncpy(docInfo,docInfoStr.c_str(),sizeof(docInfo)-1); +- docInfo[sizeof(docInfo)-1] = '\0'; +- strncpy(pageInfo,pageInfoStr.c_str(),sizeof(pageInfo)-1); +- pageInfo[sizeof(pageInfo)-1] = '\0'; +-#endif +- +- colorProfile = getColorProfilePath(ppd,&colorProfilePath); +- +- ppdClose(ppd); +- } +- if ((val = cupsGetOption("opvpJobInfo",num_options, options)) != 0) { +- /* override ppd value */ +- strncpy(jobInfo,val,sizeof(jobInfo)-1); +- jobInfo[sizeof(jobInfo)-1] = '\0'; +- } +- if ((val = cupsGetOption("opvpDocInfo",num_options, options)) != 0) { +- /* override ppd value */ +- strncpy(docInfo,val,sizeof(docInfo)-1); +- docInfo[sizeof(docInfo)-1] = '\0'; +- } +- if ((val = cupsGetOption("opvpPageInfo",num_options, options)) != 0) { +- /* override ppd value */ +- strncpy(pageInfo,val,sizeof(pageInfo)-1); +- pageInfo[sizeof(pageInfo)-1] = '\0'; +- } +- +- cupsFreeOptions(num_options,options); +-#if 0 +- /* for debug parameters */ +- fprintf(stderr,"WARNING:resolution=%d\n",resolution); +- fprintf(stderr,"WARNING:sliceHeight=%d\n",sliceHeight); +- fprintf(stderr,"WARNING:oldLipsDriver=%d\n",oldLipsDriver); +- fprintf(stderr,"WARNING:HPDriver=%d\n",HPDriver); +- fprintf(stderr,"WARNING:NECDriver=%d\n",NECDriver); +- fprintf(stderr,"WARNING:clipPathNotSaved=%d\n",clipPathNotSaved); +- fprintf(stderr,"WARNING:noShearImage=%d\n",noShearImage); +- fprintf(stderr,"WARNING:noLineStyle=%d\n",noLineStyle); +- fprintf(stderr,"WARNING:noClipPath=%d\n",noClipPath); +- fprintf(stderr,"WARNING:noMiterLimit=%d\n",noMiterLimit); +- fprintf(stderr,"WARNING:printerDriver=%s\n",printerDriver); +- fprintf(stderr,"WARNING:printerModel=%s\n",printerModel); +- fprintf(stderr,"WARNING:jobInfo=%s\n",jobInfo); +- fprintf(stderr,"WARNING:docInfo=%s\n",docInfo); +- fprintf(stderr,"WARNING:pageInfo=%s\n",pageInfo); +- fprintf(stderr,"WARNING:noBitmapChar=%d\n",noBitmapChar); +- fprintf(stderr,"WARNING:bitmapCharThreshold=%s\n",bitmapCharThreshold); +- fprintf(stderr,"WARNING:maxClipPathLength=%s\n",maxClipPathLength); +- fprintf(stderr,"WARNING:maxFillPathLength=%s\n",maxFillPathLength); +-exit(0); +-#endif +- +- if (oldLipsDriver) { +- optionKeys[nOptions] = "OPVP_OLDLIPSDRIVER"; +- optionVals[nOptions] = "1"; +- nOptions++; +- clipPathNotSaved = true; +- noShearImage = true; +- } +- if (HPDriver) { +- noClipPath = true; +- noLineStyle = true; +- noShearImage = true; +- } +- if (NECDriver) { +- noMiterLimit = true; +- strcpy(maxClipPathLength,"6"); +- noShearImage = true; +- } +- if (clipPathNotSaved) { +- optionKeys[nOptions] = "OPVP_CLIPPATHNOTSAVED"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noShearImage) { +- optionKeys[nOptions] = "OPVP_NOSHEARIMAGE"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noLineStyle) { +- optionKeys[nOptions] = "OPVP_NOLINESTYLE"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noImageMask) { +- optionKeys[nOptions] = "OPVP_NOIMAGEMASK"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noClipPath) { +- optionKeys[nOptions] = "OPVP_NOCLIPPATH"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noMiterLimit) { +- optionKeys[nOptions] = "OPVP_NOMITERLIMIT"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (noBitmapChar) { +- optionKeys[nOptions] = "OPVP_NOBITMAPCHAR"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- if (ignoreMiterLimit) { +- optionKeys[nOptions] = "OPVP_IGNOREMITERLIMIT"; +- optionVals[nOptions] = "1"; +- nOptions++; +- } +- optionKeys[nOptions] = "OPVP_BITMAPCHARTHRESHOLD"; +- optionVals[nOptions] = bitmapCharThreshold; +- nOptions++; +- optionKeys[nOptions] = "OPVP_MAXCLIPPATHLENGTH"; +- optionVals[nOptions] = maxClipPathLength; +- nOptions++; +- optionKeys[nOptions] = "OPVP_MAXFILLPATHLENGTH"; +- optionVals[nOptions] = maxFillPathLength; +- nOptions++; +- if (hResolution == 0) hResolution = resolution; +- if (hResolution == 0) hResolution = resolution; +- if (vResolution == 0) vResolution = resolution; +- if (strcasecmp(outputOrderStr,"reverse") == 0) { +- reverse = true; +- } +- +- if (argc > 6) { +- fileName.append(argv[6]); +- } else { +- fileName.append("-"); +- } +- +- // read config file +- globalParams = new GlobalParams(); +- if (enableFreeTypeStr[0]) { +- if (!globalParams->setEnableFreeType(enableFreeTypeStr)) { +- opvpError(-1,"Bad '-freetype' value on command line"); +- ok = false; +- } +- } +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 +- globalParams->setAntialias("no"); +-#endif +- if (quiet) { +- globalParams->setErrQuiet(quiet); +- } +- if (!ok) { +- exitCode = 2; +- goto err0; +- } +- +- if (fileName.cmp("-") == 0) { +- /* stdin */ +- char *s; +- GooString name; +- int fd; +- char buf[4096]; +- int n; +- +- /* create a tmp file */ +- if ((s = getenv("TMPDIR")) != 0) { +- name.append(s); +- } else { +- name.append("/tmp"); +- } +- name.append("/XXXXXX"); +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 +- fd = mkstemp(name.getCString()); +-#else +- std::string t = name.toStr(); +- fd = mkstemp(&t[0]); +- name = GooString(std::move(t)); +-#endif +- if (fd < 0) { +- opvpError(-1,"Can't create temporary file"); +- exitCode = 2; +- goto err0; +- } +- +- /* check JCL */ +- while (fgets(buf,sizeof(buf)-1,stdin) != NULL +- && strncmp(buf,"%PDF",4) != 0) { +- if (strncmp(buf,"pdftoopvp jobInfo:",18) == 0) { +- /* JCL jobInfo exists, override jobInfo */ +- strncpy(jobInfo,buf+18,sizeof(jobInfo)-1); +- for (i = sizeof(jobInfo)-2;i >= 0 +- && (jobInfo[i] == 0 || jobInfo[i] == '\n' || jobInfo[i] == ';') +- ;i--); +- jobInfo[i+1] = 0; +- } +- } +- if (strncmp(buf,"%PDF",4) != 0) { +- opvpError(-1,"Can't find PDF header"); +- exitCode = 2; +- goto err0; +- } +- /* copy PDF header */ +- n = strlen(buf); +- if (write(fd,buf,n) != n) { +- opvpError(-1,"Can't copy stdin to temporary file"); +- close(fd); +- exitCode = 2; +- goto err0; +- } +- /* copy rest stdin to the tmp file */ +- while ((n = fread(buf,1,sizeof(buf),stdin)) > 0) { +- if (write(fd,buf,n) != n) { +- opvpError(-1,"Can't copy stdin to temporary file"); +- close(fd); +- exitCode = 2; +- goto err0; +- } +- } +- close(fd); +- doc = new PDFDoc(&name); +- /* remove name */ +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 +- unlink(name.getCString()); +-#else +- unlink(name.c_str()); +-#endif +- } else { +- /* no jcl check */ +- doc = new PDFDoc(fileName.copy()); +- } +- if (!doc->isOk()) { +- opvpError(-1," Parsing PDF failed: error code %d", +- doc->getErrorCode()); +- exitCode = 2; +- goto err05; +- } +- +- if (doc->isEncrypted() && !doc->okToPrint()) { +- opvpError(-1,"Print Permission Denied"); +- exitCode = 2; +- goto err05; +- } +- +- /* paperColor is white */ +- paperColor[0] = 255; +- paperColor[1] = 255; +- paperColor[2] = 255; +-#ifdef USE_CMS +- /* set color profile file name */ +- GfxColorSpace::setDisplayProfileName(&colorProfilePath); +-#endif +- opvpOut = new OPVPOutputDev(); +- if (opvpOut->init(mono ? splashModeMono1 : +- gray ? splashModeMono8 : +- splashModeRGB8, +- colorProfile, +- false, paperColor, +- printerDriver,1,printerModel, +- nOptions,optionKeys,optionVals) < 0) { +- opvpError(-1,"OPVPOutputDev Initialize fail"); +- exitCode = 2; +- goto err1; +- } +- +- opvpOut->startDoc(doc->getXRef()); +- +-#if 0 +-fprintf(stderr,"JobInfo=%s\n",jobInfo); +-#endif +- if (opvpOut->OPVPStartJob(jobInfo) < 0) { +- opvpError(-1,"Start job failed"); +- exitCode = 2; +- goto err1; +- } +- if (opvpOut->OPVPStartDoc(docInfo) < 0) { +- opvpError(-1,"Start Document failed"); +- exitCode = 2; +- goto err2; +- } +- numPages = doc->getNumPages(); +- for (pg = 1; pg <= numPages; ++pg) { +- if ((exitCode = outOnePage(doc,opvpOut,pg)) != 0) break; +- } +- if (opvpOut->OPVPEndDoc() < 0) { +- opvpError(-1,"End Document failed"); +- exitCode = 2; +- } +-err2: +- if (opvpOut->OPVPEndJob() < 0) { +- opvpError(-1,"End job failed"); +- exitCode = 2; +- } +- +- // clean up +- err1: +- delete opvpOut; +- err05: +- delete doc; +- err0: +- delete globalParams; +- +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 +- // check for memory leaks +- Object::memCheck(stderr); +- gMemReport(stderr); +-#endif +- +-} +-/* muntrace(); */ +- return exitCode; +-} +- +-/* for memory debug */ +-/* For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW +- * should be used as a guard, otherwise use traditional definition */ +-#ifndef _GLIBCXX_THROW +-#define _GLIBCXX_THROW throw +-#endif +- +-void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) +-{ +- void *p = malloc(size); +- return p; +-} +- +-void operator delete(void *p) throw () +-{ +- free(p); +-} +diff --git a/filter/pdftopdf/pdftopdf.cc b/filter/pdftopdf/pdftopdf.cc +index 3b9bb30..8b76240 100644 +--- a/filter/pdftopdf/pdftopdf.cc ++++ b/filter/pdftopdf/pdftopdf.cc +@@ -857,7 +857,6 @@ void calculate(ppd_file_t *ppd,ProcessingParameters ¶m) // {{{ + // }}} + + // reads from stdin into temporary file. returns FILE * or NULL on error +-// TODO? to extra file (also used in pdftoijs, e.g.) + FILE *copy_stdin_to_temp() // {{{ + { + char buf[BUFSIZ]; +diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx +index ee8b6ce..c8725c4 100644 +--- a/filter/pdftoraster.cxx ++++ b/filter/pdftoraster.cxx +@@ -37,27 +37,22 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + #include <stdio.h> + #include <stdlib.h> + #ifdef HAVE_CPP_POPPLER_VERSION_H +-#include "cpp/poppler-version.h" ++#include <poppler/cpp/poppler-version.h> + #endif +-#include "goo/GooString.h" +-#include "goo/gmem.h" +-#include "Object.h" +-#include "Stream.h" +-#include "PDFDoc.h" +-#include "SplashOutputDev.h" +-#include "GfxState.h" + #include <cups/ppd.h> + #include <stdarg.h> +-#include "PDFError.h" +-#include "GlobalParams.h" + #include <cups/raster.h> + #include <cupsfilters/image.h> + #include <cupsfilters/raster.h> + #include <cupsfilters/colormanager.h> +-#include <splash/SplashTypes.h> +-#include <splash/SplashBitmap.h> + #include <strings.h> + #include <math.h> ++#include <poppler/cpp/poppler-document.h> ++#include <poppler/cpp/poppler-page.h> ++#include <poppler/cpp/poppler-global.h> ++#include <poppler/cpp/poppler-image.h> ++#include <poppler/cpp/poppler-page-renderer.h> ++#include <poppler/cpp/poppler-rectangle.h> + #ifdef USE_LCMS1 + #include <lcms.h> + #define cmsColorSpaceSignature icColorSpaceSignature +@@ -166,7 +161,7 @@ namespace { + {15,143,47,175,7,135,39,167,13,141,45,173,5,133,37,165}, + {207,79,239,111,199,71,231,103,205,77,237,109,197,69,229,101}, + {63,191,31,159,55,183,23,151,61,189,29,157,53,181,21,149}, +- {255,127,223,95,247,119,215,87,253,125,221,93,245,117,213,85} ++ {255,127,223,95,247,119,215,87,253,125,221,93,245,117,213,85} + }; + unsigned int dither2[8][8] = { + {0,32,8,40,2,34,10,42}, +@@ -176,13 +171,13 @@ namespace { + {3,35,11,43,1,33,9,41}, + {51,19,59,27,49,17,57,25}, + {15,47,7,39,13,45,5,37}, +- {63,31,55,23,61,29,53,21} ++ {63,31,55,23,61,29,53,21} + }; + unsigned int dither4[4][4] = { + {0,8,2,10}, + {12,4,14,6}, + {3,11,1,9}, +- {15,7,13,5} ++ {15,7,13,5} + }; + + /* for color profiles */ +@@ -224,7 +219,7 @@ cmsCIExyYTRIPLE adobergb_matrix() + cmsCIExyYTRIPLE m; + + double * matrix = cmMatrixAdobeRgb(); +- ++ + m.Red.x = matrix[0]; + m.Red.y = matrix[1]; + m.Red.Y = matrix[2]; +@@ -251,7 +246,7 @@ cmsHPROFILE adobergb_profile() + #else + cmsToneCurve * Gamma = cmsBuildGamma(NULL, 2.2); + cmsToneCurve * Gamma3[3]; +-#endif ++#endif + Gamma3[0] = Gamma3[1] = Gamma3[2] = Gamma; + + // Build AdobeRGB profile +@@ -272,7 +267,7 @@ cmsHPROFILE sgray_profile() + cmsToneCurve Gamma = cmsBuildGamma(256, 2.2); + #else + cmsToneCurve * Gamma = cmsBuildGamma(NULL, 2.2); +-#endif ++#endif + // Build sGray profile + wp = sgray_wp(); + sgray = cmsCreateGrayProfile(&wp, Gamma); +@@ -280,30 +275,6 @@ cmsHPROFILE sgray_profile() + return sgray; + } + +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +-void CDECL myErrorFun(void *data, ErrorCategory category, +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 +- Goffset pos, const char *msg) +-#else +- Goffset pos, char *msg) +-#endif /* MAJOR > 0 || MINOR >= 70 */ +-#else +-void CDECL myErrorFun(void *data, ErrorCategory category, +- int pos, char *msg) +-#endif +-{ +- if (pos >= 0) { +-#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 +- fprintf(stderr, "ERROR (%lld): ", pos); +-#else +- fprintf(stderr, "ERROR (%d): ", pos); +-#endif +- } else { +- fprintf(stderr, "ERROR: "); +- } +- fprintf(stderr, "%s\n",msg); +- fflush(stderr); +-} + + #ifdef USE_LCMS1 + static int lcmsErrorHandler(int ErrorCode, const char *ErrorText) +@@ -320,93 +291,6 @@ static void lcmsErrorHandler(cmsContext contextId, cmsUInt32Number ErrorCode, + #endif + + +-#if 0 +-static bool getColorProfilePath(ppd_file_t *ppd, GooString *path) +-{ +- // get color profile path +- const char *colorModel; +- const char *cupsICCQualifier2; +- const char *cupsICCQualifier2Choice; +- const char *cupsICCQualifier3; +- const char *cupsICCQualifier3Choice; +- ppd_attr_t *attr; +- ppd_choice_t *choice; +- +- if ((choice = ppdFindMarkedChoice(ppd,"ColorModel")) != NULL) { +- colorModel = choice->choice; +- } else { +- colorModel = NULL; +- } +- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier2",NULL)) != NULL) { +- cupsICCQualifier2 = attr->value; +- } else { +- cupsICCQualifier2 = "MediaType"; +- } +- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier2)) != NULL) { +- cupsICCQualifier2Choice = choice->choice; +- } else { +- cupsICCQualifier2Choice = NULL; +- } +- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier3",NULL)) != NULL) { +- cupsICCQualifier3 = attr->value; +- } else { +- cupsICCQualifier3 = "Resolution"; +- } +- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier3)) != NULL) { +- cupsICCQualifier3Choice = choice->choice; +- } else { +- cupsICCQualifier3Choice = NULL; +- } +- +- for (attr = ppdFindAttr(ppd,"cupsICCProfile",NULL);attr != NULL; +- attr = ppdFindNextAttr(ppd,"cupsICCProfile",NULL)) { +- // check color model +- char buf[PPD_MAX_NAME]; +- char *p, *r; +- char *datadir; +- +- strncpy(buf,attr->spec,sizeof(buf)); +- if ((p = strchr(buf,'.')) != NULL) { +- *p = '\0'; +- } +- if (colorModel != NULL && buf[0] != '\0' +- && strcasecmp(buf,colorModel) != 0) continue; +- if (p == NULL) { +- break; +- } else { +- p++; +- if ((r = strchr(p,'.')) != 0) { +- *r = '\0'; +- } +- } +- if (cupsICCQualifier2Choice != NULL && p[0] != '\0' +- && strcasecmp(p,cupsICCQualifier2Choice) != 0) continue; +- if (r == NULL) { +- break; +- } else { +- r++; +- if ((p = strchr(r,'.')) != 0) { +- *p = '\0'; +- } +- } +- if (cupsICCQualifier3Choice == NULL || r[0] == '\0' +- || strcasecmp(r,cupsICCQualifier3Choice) == 0) break; +- } +- if (attr != NULL) { +- // matched +- path->clear(); +- if (attr->value[0] != '/') { +- if ((datadir = getenv("CUPS_DATADIR")) == NULL) +- datadir = CUPS_DATADIR; +- path->append(datadir); +- path->append("/profiles/"); +- } +- path->append(attr->value); +- return true; +- } +- return false; +-} +-#endif + + static void handleRqeuiresPageRegion() { + ppd_choice_t *mf; +@@ -448,14 +332,13 @@ static void parseOpts(int argc, char **argv) + { + int num_options = 0; + cups_option_t *options = 0; +- GooString profilePath; + char *profile = 0; + const char *t = NULL; + ppd_attr_t *attr; + + if (argc < 6 || argc > 7) { +- pdfError(-1,const_cast<char *>("%s job-id user title copies options [file]"), +- argv[0]); ++ fprintf(stderr, "ERROR: Usage: %s job-id user title copies options [file]\n", ++ argv[0]); + exit(1); + } + +@@ -464,7 +347,7 @@ static void parseOpts(int argc, char **argv) + if (t && strcasestr(t, "pwg")) + pwgraster = 1; + #endif /* HAVE_CUPS_1_7 */ +- ++ + ppd = ppdOpenFile(getenv("PPD")); + if (ppd == NULL) + fprintf(stderr, "DEBUG: PPD file is not specified.\n"); +@@ -542,10 +425,10 @@ static void parseOpts(int argc, char **argv) + + if (cm_calibrate == CM_CALIBRATION_ENABLED) + cm_disabled = 1; +- else ++ else + cm_disabled = cmIsPrinterCmDisabled(getenv("PRINTER")); +- +- if (!cm_disabled) ++ ++ if (!cm_disabled) + cmGetPrinterIccProfile(getenv("PRINTER"), &profile, ppd); + + if (profile != NULL) { +@@ -573,7 +456,7 @@ static void parseOpts(int argc, char **argv) + if (strcasestr(t, "pwg")) + pwgraster = 1; + else +- pwgraster = 0; ++ pwgraster = 0; + } + cupsRasterParseIPPOptions(&header,num_options,options,pwgraster,1); + #else +@@ -1399,7 +1282,7 @@ static unsigned int getCMSColorSpaceType(cmsColorSpaceSignature cs) + /* select convertLine function */ + static void selectConvertFunc(cups_raster_t *raster) + { +- if ((colorProfile == NULL || popplerColorProfile == colorProfile) ++ if ((colorProfile == NULL || popplerColorProfile == colorProfile) + && (header.cupsColorOrder == CUPS_ORDER_CHUNKED + || header.cupsNumColors == 1)) { + if (selectSpecialCase()) return; +@@ -1477,7 +1360,7 @@ static void selectConvertFunc(cups_raster_t *raster) + COLORSPACE_SH(dcst) | + CHANNELS_SH(header.cupsNumColors) | BYTES_SH(bytes), + renderingIntent,0)) == 0) { +- pdfError(-1,const_cast<char *>("Can't create color transform")); ++ fprintf(stderr, "ERROR: Can't create color transform"); + exit(1); + } + } else { +@@ -1548,7 +1431,7 @@ static void selectConvertFunc(cups_raster_t *raster) + convertCSpace = W8toK8; + break; + default: +- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); ++ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n" ); + exit(1); + break; + } +@@ -1623,13 +1506,105 @@ static void selectConvertFunc(cups_raster_t *raster) + } + } + +-static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, ++static unsigned char *onebitpixel(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height){ ++ unsigned char *temp; ++ temp=dst; ++ int cnt=0; ++ for(unsigned int i=0;i<height;i++){ ++ for(unsigned int j=0;j<width;j+=8){ ++ unsigned char tem=0; ++ for(int k=0;k<8;k++){ ++ cnt++; ++ tem <<=1; ++ unsigned int var=*src; ++ if(var > dither1[i & 0xf][(j+k) & 0xf]){ ++ tem |= 0x1; ++ } ++ src +=1; ++ } ++ *dst=tem; ++ dst+=1; ++ } ++ } ++ return temp; ++} ++ ++ ++static unsigned char *removeAlpha(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height){ ++ unsigned char *temp; ++ temp=dst; ++ for(unsigned int i=0;i<height;i++){ ++ for(unsigned int j=0;j<width;j++){ ++ dst[0]=src[2]; ++ dst[1]=src[1]; ++ dst[2]=src[0]; ++ src+=4; ++ dst+=3; ++ } ++ } ++ return temp; ++} ++ ++static void writePageImage(cups_raster_t *raster, poppler::document *doc, + int pageNo) + { + ConvertLineFunc convertLine; + unsigned char *lineBuf = NULL; + unsigned char *dp; +- unsigned int rowsize = bitmap->getRowSize(); ++ unsigned int rowsize; ++ ++ poppler::page *current_page =doc->create_page(pageNo-1); ++ poppler::page_renderer pr; ++ pr.set_render_hint(poppler::page_renderer::antialiasing, true); ++ pr.set_render_hint(poppler::page_renderer::text_antialiasing, true); ++ ++ unsigned char *colordata,*newdata,*graydata,*onebitdata; ++ unsigned int pixel_count; ++ poppler::image im; ++ //render the page according to the colourspace and generate the requried data ++ switch (header.cupsColorSpace) { ++ case CUPS_CSPACE_W://gray ++ case CUPS_CSPACE_K://black ++ case CUPS_CSPACE_SW://sgray ++ if(header.cupsBitsPerColor==1){ //special case for 1-bit colorspaces ++ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],bytesPerLine*8,header.cupsHeight); ++ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); ++ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); ++ graydata=(unsigned char *)malloc(sizeof(char)*im.width()*im.height()); ++ cupsImageRGBToWhite(newdata,graydata,im.width()*im.height()); ++ onebitdata=(unsigned char *)malloc(sizeof(char)*bytesPerLine*im.height()); ++ onebitpixel(graydata,onebitdata,im.width(),im.height()); ++ colordata=onebitdata; ++ rowsize=bytesPerLine; ++ } ++ else{ ++ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],header.cupsWidth,header.cupsHeight); ++ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); ++ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); ++ pixel_count=im.width()*im.height(); ++ graydata=(unsigned char *)malloc(sizeof(char)*im.width()*im.height()); ++ cupsImageRGBToWhite(newdata,graydata,pixel_count); ++ colordata=graydata; ++ rowsize=header.cupsWidth; ++ } ++ ++ break; ++ case CUPS_CSPACE_RGB: ++ case CUPS_CSPACE_ADOBERGB: ++ case CUPS_CSPACE_CMYK: ++ case CUPS_CSPACE_SRGB: ++ case CUPS_CSPACE_CMY: ++ case CUPS_CSPACE_RGBW: ++ default: ++ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],header.cupsWidth,header.cupsHeight); ++ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); ++ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); ++ pixel_count=im.width()*im.height(); ++ rowsize=header.cupsWidth*3; ++ colordata=newdata; ++ break; ++ } ++ + + if (allocLineBuf) lineBuf = new unsigned char [bytesPerLine]; + if ((pageNo & 1) == 0) { +@@ -1639,13 +1614,11 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, + } + if (header.Duplex && (pageNo & 1) == 0 && swap_image_y) { + for (unsigned int plane = 0;plane < nplanes;plane++) { +- unsigned char *bp = (unsigned char *)(bitmap->getDataPtr()); ++ unsigned char *bp = colordata + (header.cupsHeight - 1) * rowsize; + +- bp += rowsize * (bitmapoffset[1] + header.cupsHeight - 1) + +- popplerBitsPerPixel * bitmapoffset[0] / 8; + for (unsigned int h = header.cupsHeight;h > 0;h--) { + for (unsigned int band = 0;band < nbands;band++) { +- dp = convertLine(bp,lineBuf,h,plane+band,header.cupsWidth, ++ dp = convertLine(bp,lineBuf,h - 1,plane+band,header.cupsWidth, + bytesPerLine); + cupsRasterWritePixels(raster,dp,bytesPerLine); + } +@@ -1654,10 +1627,8 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, + } + } else { + for (unsigned int plane = 0;plane < nplanes;plane++) { +- unsigned char *bp = (unsigned char *)(bitmap->getDataPtr()); ++ unsigned char *bp = colordata; + +- bp += rowsize * bitmapoffset[1] + +- popplerBitsPerPixel * bitmapoffset[0] / 8; + for (unsigned int h = 0;h < header.cupsHeight;h++) { + for (unsigned int band = 0;band < nbands;band++) { + dp = convertLine(bp,lineBuf,h,plane+band,header.cupsWidth, +@@ -1671,29 +1642,39 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, + if (allocLineBuf) delete[] lineBuf; + } + +-static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, +- SplashOutputDev *out, cups_raster_t *raster) ++static void outPage(poppler::document *doc, int pageNo, ++ cups_raster_t *raster) + { +- SplashBitmap *bitmap; +- Page *page = catalog->getPage(pageNo); +- PDFRectangle mediaBox = *page->getMediaBox(); +- int rotate = page->getRotate(); ++ int rotate = 0; + double paperdimensions[2], /* Physical size of the paper */ + margins[4]; /* Physical margins of print */ + ppd_size_t *size; /* Page size */ + double l, swap; ++ int imageable_area_fit = 0; + int i; +- bool landscape = 0; + ++ poppler::page *current_page =doc->create_page(pageNo-1); ++ poppler::page_box_enum box = poppler::page_box_enum::media_box; ++ poppler::rectf mediaBox = current_page->page_rect(box); ++ poppler::page::orientation_enum orient = current_page->orientation(); ++ switch (orient) { ++ case poppler::page::landscape: rotate=90; ++ break; ++ case poppler::page::upside_down: rotate=180; ++ break; ++ case poppler::page::seascape: rotate=270; ++ break; ++ default:rotate=0; ++ } + fprintf(stderr, "DEBUG: mediaBox = [ %f %f %f %f ]; rotate = %d\n", +- mediaBox.x1, mediaBox.y1, mediaBox.x2, mediaBox.y2, rotate); +- l = mediaBox.x2 - mediaBox.x1; ++ mediaBox.left(), mediaBox.top(), mediaBox.right(), mediaBox.bottom(), rotate); ++ l = mediaBox.width(); + if (l < 0) l = -l; + if (rotate == 90 || rotate == 270) + header.PageSize[1] = (unsigned)l; + else + header.PageSize[0] = (unsigned)l; +- l = mediaBox.y2 - mediaBox.y1; ++ l = mediaBox.height(); + if (l < 0) l = -l; + if (rotate == 90 || rotate == 270) + header.PageSize[0] = (unsigned)l; +@@ -1703,22 +1684,37 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, + memset(paperdimensions, 0, sizeof(paperdimensions)); + memset(margins, 0, sizeof(margins)); + if (ppd) { ++ imageable_area_fit = 0; + for (i = ppd->num_sizes, size = ppd->sizes; + i > 0; + i --, size ++) { + /* Skip page sizes which conflict with settings of the other options */ + /* TODO XXX */ + /* Find size of document's page under the PPD page sizes */ +- if (fabs(header.PageSize[1] - size->length) < 5.0 && +- fabs(header.PageSize[0] - size->width) < 5.0) ++ if (fabs(header.PageSize[1] - size->length) / size->length < 0.01 && ++ fabs(header.PageSize[0] - size->width) / size->width < 0.01) + break; + } ++ if (i == 0) { ++ /* Input page size does not fit any of the PPD's sizes, try to fit ++ the input page size into the imageable areas of the PPD's sizes */ ++ for (i = ppd->num_sizes, size = ppd->sizes; ++ i > 0; ++ i --, size ++) ++ if (fabs(header.PageSize[1] - size->top + size->bottom) / ++ size->length < 0.01 && ++ fabs(header.PageSize[0] - size->right + size->left) / ++ size->width < 0.01) { ++ fprintf(stderr, "DEBUG: Imageable area fit\n"); ++ imageable_area_fit = 1; ++ break; ++ } ++ } + if (i > 0) { + /* + * Standard size... + */ + fprintf(stderr, "DEBUG: size = %s\n", size->name); +- landscape = 0; + paperdimensions[0] = size->width; + paperdimensions[1] = size->length; + if (pwgraster == 0) { +@@ -1734,19 +1730,33 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, + * landscape orientation... + */ + ++ imageable_area_fit = 0; + for (i = ppd->num_sizes, size = ppd->sizes; + i > 0; + i --, size ++) +- if (fabs(header.PageSize[0] - size->length) < 5.0 && +- fabs(header.PageSize[1] - size->width) < 5.0) ++ if (fabs(header.PageSize[0] - size->length) / size->length < 0.01 && ++ fabs(header.PageSize[1] - size->width) / size->width < 0.01) + break; +- ++ if (i == 0) { ++ /* Input page size does not fit any of the PPD's sizes, try to fit ++ the input page size into the imageable areas of the PPD's sizes */ ++ for (i = ppd->num_sizes, size = ppd->sizes; ++ i > 0; ++ i --, size ++) ++ if (fabs(header.PageSize[0] - size->top + size->bottom) / ++ size->length < 0.01 && ++ fabs(header.PageSize[1] - size->right + size->left) / ++ size->width < 0.01) { ++ fprintf(stderr, "DEBUG: Imageable area fit\n"); ++ imageable_area_fit = 1; ++ break; ++ } ++ } + if (i > 0) { + /* + * Standard size in landscape orientation... + */ + fprintf(stderr, "DEBUG: landscape size = %s\n", size->name); +- landscape = 1; + paperdimensions[0] = size->width; + paperdimensions[1] = size->length; + if (pwgraster == 0) { +@@ -1761,14 +1771,15 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, + * Custom size... + */ + fprintf(stderr, "DEBUG: size = Custom\n"); +- landscape = 0; + paperdimensions[1] = size->length; + for (i = 0; i < 2; i ++) + paperdimensions[i] = header.PageSize[i]; + if (pwgraster == 0) + for (i = 0; i < 4; i ++) + margins[i] = ppd->custom_margins[i]; +- header.cupsPageSizeName[0] = '\0'; ++ snprintf(header.cupsPageSizeName, 64, ++ "Custom.%dx%d", ++ header.PageSize[0], header.PageSize[1]); + } + } + } else { +@@ -1802,12 +1813,14 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, + } + } + +- doc->displayPage(out,pageNo,header.HWResolution[0], +- header.HWResolution[1],(landscape == 0 ? 0 : 90), +- true,true,true); +- bitmap = out->getBitmap(); +- bitmapoffset[0] = margins[0] / 72.0 * header.HWResolution[0]; +- bitmapoffset[1] = margins[3] / 72.0 * header.HWResolution[1]; ++ ++ if (imageable_area_fit == 0) { ++ bitmapoffset[0] = margins[0] / 72.0 * header.HWResolution[0]; ++ bitmapoffset[1] = margins[3] / 72.0 * header.HWResolution[1]; ++ } else { ++ bitmapoffset[0] = 0; ++ bitmapoffset[1] = 0; ++ } + + /* write page header */ + if (pwgraster == 0) { +@@ -1849,12 +1862,12 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, + header.cupsBytesPerLine *= header.cupsNumColors; + } + if (!cupsRasterWriteHeader2(raster,&header)) { +- pdfError(-1,const_cast<char *>("Can't write page %d header"),pageNo); ++ fprintf(stderr, "ERROR: Can't write page %d header\n",pageNo ); + exit(1); + } + + /* write page image */ +- writePageImage(raster,bitmap,pageNo); ++ writePageImage(raster,doc,pageNo); + } + + static void setPopplerColorProfile() +@@ -1936,29 +1949,19 @@ static void setPopplerColorProfile() + popplerColorProfile = NULL; + break; + default: +- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); ++ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n" ); + exit(1); + break; + } +- if (popplerColorProfile != NULL) { +- GfxColorSpace::setDisplayProfile(popplerColorProfile); +- } + } + + int main(int argc, char *argv[]) { +- PDFDoc *doc; +- SplashOutputDev *out; +- SplashColor paperColor; ++ poppler::document *doc; + int i; +- int npages; ++ int npages=0; + cups_raster_t *raster; +- enum SplashColorMode cmode; +- int rowpad; +- Catalog *catalog; + +- setErrorCallback(::myErrorFun,NULL); + cmsSetLogErrorHandler(lcmsErrorHandler); +- globalParams = new GlobalParams(); + parseOpts(argc, argv); + + if (argc == 6) { +@@ -1970,43 +1973,37 @@ int main(int argc, char *argv[]) { + + fd = cupsTempFd(name,sizeof(name)); + if (fd < 0) { +- pdfError(-1,const_cast<char *>("Can't create temporary file")); ++ fprintf(stderr, "ERROR: Can't create temporary file\n"); + exit(1); + } + + /* copy stdin to the tmp file */ + while ((n = read(0,buf,BUFSIZ)) > 0) { + if (write(fd,buf,n) != n) { +- pdfError(-1,const_cast<char *>("Can't copy stdin to temporary file")); ++ fprintf(stderr, "ERROR: Can't copy stdin to temporary file\n" ); + close(fd); + exit(1); + } + } + close(fd); +- doc = new PDFDoc(new GooString(name)); ++ doc=poppler::document::load_from_file(name,"",""); + /* remove name */ + unlink(name); + } else { +- GooString *fileName = new GooString(argv[6]); + /* argc == 7 filenmae is specified */ + FILE *fp; + + if ((fp = fopen(argv[6],"rb")) == 0) { +- pdfError(-1,const_cast<char *>("Can't open input file %s"),argv[6]); ++ fprintf(stderr, "ERROR: Can't open input file %s\n",argv[6]); + exit(1); + } + parsePDFTOPDFComment(fp); + fclose(fp); +- doc = new PDFDoc(fileName,NULL,NULL); ++ doc=poppler::document::load_from_file(argv[6],"",""); + } + +- if (!doc->isOk()) { +- exitCode = 1; +- goto err1; +- } +- +- catalog = doc->getCatalog(); +- npages = doc->getNumPages(); ++ if(doc != NULL) ++ npages = doc->pages(); + + /* fix NumCopies, Collate ccording to PDFTOPDFComments */ + header.NumCopies = deviceCopies; +@@ -2020,7 +2017,7 @@ int main(int argc, char *argv[]) { + && header.cupsBitsPerColor != 4 + && header.cupsBitsPerColor != 8 + && header.cupsBitsPerColor != 16) { +- pdfError(-1,const_cast<char *>("Specified color format is not supported")); ++ fprintf(stderr, "ERROR: Specified color format is not supported\n"); + exit(1); + } + if (header.cupsColorOrder == CUPS_ORDER_PLANAR) { +@@ -2055,7 +2052,7 @@ int main(int argc, char *argv[]) { + if (header.cupsColorOrder != CUPS_ORDER_CHUNKED + || (header.cupsBitsPerColor != 8 + && header.cupsBitsPerColor != 16)) { +- pdfError(-1,const_cast<char *>("Specified color format is not supported")); ++ fprintf(stderr, "ERROR: Specified color format is not supported\n"); + exit(1); + } + case CUPS_CSPACE_RGB: +@@ -2071,12 +2068,6 @@ int main(int argc, char *argv[]) { + case CUPS_CSPACE_RGBW: + case CUPS_CSPACE_GMCK: + case CUPS_CSPACE_GMCS: +- cmode = splashModeRGB8; +- rowpad = 4; +- /* set paper color white */ +- paperColor[0] = 255; +- paperColor[1] = 255; +- paperColor[2] = 255; + popplerBitsPerPixel = 24; + popplerNumColors = 3; + break; +@@ -2086,21 +2077,17 @@ int main(int argc, char *argv[]) { + case CUPS_CSPACE_WHITE: + case CUPS_CSPACE_GOLD: + case CUPS_CSPACE_SILVER: +- if (header.cupsBitsPerColor == 1 ++ if (header.cupsBitsPerColor == 1 + && header.cupsBitsPerPixel == 1) { +- cmode = splashModeMono1; + popplerBitsPerPixel = 1; + } else { +- cmode = splashModeMono8; + popplerBitsPerPixel = 8; + } + /* set paper color white */ +- paperColor[0] = 255; +- rowpad = 1; + popplerNumColors = 1; + break; + default: +- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); ++ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n"); + exit(1); + break; + } +@@ -2109,27 +2096,21 @@ int main(int argc, char *argv[]) { + setPopplerColorProfile(); + } + +- out = new SplashOutputDev(cmode,rowpad/* row padding */, +- false,paperColor,true +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 +- ,false +-#endif +- ); +- out->startDoc(doc); +- + if ((raster = cupsRasterOpen(1, pwgraster ? CUPS_RASTER_WRITE_PWG : + CUPS_RASTER_WRITE)) == 0) { +- pdfError(-1,const_cast<char *>("Can't open raster stream")); ++ fprintf(stderr, "ERROR: Can't open raster stream\n"); + exit(1); + } + selectConvertFunc(raster); +- for (i = 1;i <= npages;i++) { +- outPage(doc,catalog,i,out,raster); +- } ++ if(doc != NULL){ ++ for (i = 1;i <= npages;i++) { ++ outPage(doc,i,raster); ++ } ++ } else ++ fprintf(stderr, "DEBUG: Input is empty, outputting empty file.\n"); ++ + cupsRasterClose(raster); + +- delete out; +-err1: + delete doc; + if (ppd != NULL) { + ppdClose(ppd); +@@ -2144,12 +2125,6 @@ err1: + cmsDeleteTransform(colorTransform); + } + +-#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 +- // Check for memory leaks +- Object::memCheck(stderr); +- gMemReport(stderr); +-#endif +- + return exitCode; + } + +@@ -2162,20 +2137,20 @@ err1: + + void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) + { +- return gmalloc(size); ++ return malloc(size); + } + + void operator delete(void *p) throw () + { +- gfree(p); ++ free(p); + } + + void * operator new[](size_t size) _GLIBCXX_THROW (std::bad_alloc) + { +- return gmalloc(size); ++ return malloc(size); + } + + void operator delete[](void *p) throw () + { +- gfree(p); ++ free(p); + } +diff --git a/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd b/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd +deleted file mode 100644 +index 798181b..0000000 +--- a/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd ++++ /dev/null +@@ -1,342 +0,0 @@ +-*PPD-Adobe: "4.3" +-*% +-*FormatVersion: "4.3" +-*FileVersion: "1.1" +-*LanguageVersion: English +-*LanguageEncoding: ISOLatin1 +-*PCFileName: "HPIJS.PPD" +-*Manufacturer: "HP" +-*Product: "(PhotoSmart Pro B8300)" +-*cupsVersion: 1.0 +-*cupsManualCopies: True +-*cupsModelNumber: 2 +-*cupsFilter: "application/vnd.cups-pdf 0 pdftoijs" +-*ModelName: "HP PhotoSmart Pro B8300" +-*ShortNickName: "HP PhotoSmart Pro B8300 hpijs" +-*NickName: "HP PhotoSmart Pro B8300 CUPS/pdftoijs/hpijs" +-*PSVersion: "(3010.000) 800" +-*LanguageLevel: "3" +-*ColorDevice: True +-*DefaultColorSpace: RGB +-*FileSystem: False +-*Throughput: "1" +-*LandscapeOrientation: Plus90 +-*TTRasterizer: Type42 +-*1284DeviceID: "DRV:Dhpijs,R1,M1,F1,Sv,TI,X1200,Y1200,C1,t90,l90,g100,p100,s70;" +- +-*driverName hpijs/hpijs - HP's IJS driver for most of their non-PostScript printers: "" +-*driverType I/IJS: "" +-*driverUrl: "http://hplipopensource.com/" +-*driverObsolete: False +-*driverSupplier: "Hewlett-Packard" +-*driverManufacturerSupplied: True +-*driverLicense: "BSD" +-*driverFreeSoftware: True +-*driverSupportContactVoluntary: "https://launchpad.net/hplip HPLIP support and bug tracking system" +-*driverMaxResolution: 1200 1200 +-*driverColor: True +-*driverTextSupport: 90 +-*driverLineartSupport: 90 +-*driverGraphicsSupport: 100 +-*driverPhotoSupport: 100 +-*driverRenderingSpeed: 70 +- +-*DefaultResolution: 1200dpi +- +- +- +-*HWMargins: 18 36 18 9 +-*VariablePaperSize: True +-*MaxMediaWidth: 100000 +-*MaxMediaHeight: 100000 +-*NonUIOrderDependency: 105 AnySetup *CustomPageSize +-*CustomPageSize True: "" +-*ParamCustomPageSize Width: 1 points 36 100000 +-*ParamCustomPageSize Height: 2 points 36 100000 +-*ParamCustomPageSize Orientation: 3 int 0 0 +-*ParamCustomPageSize WidthOffset: 4 points 0 0 +-*ParamCustomPageSize HeightOffset: 5 points 0 0 +- +-*ijsServer: "hpijs" +-*ijsManufacturer: "HP" +-*ijsModel: "deskjet 5600" +-*ijsColorSpace: "rgb" +- +-*OpenGroup: General/General +- +-*OpenUI *Quality/Resolution, Quality, Ink Type, Media Type: PickOne +-*OrderDependency: 100 AnySetup *Quality +-*DefaultQuality: 600ColorCMYK +- +-*Quality 300ColorCMYK/300 dpi, Color, Black + Color Cartr.: "" +-*ijsParams Quality=300ColorCMYK: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=300ColorCMYK: "300 300" +- +-*Quality 300ColorCMYKFullBleed/300 dpi, Color, Full Bleed, Black + Color Cartr.: "" +-*ijsParams Quality=300ColorCMYKFullbleed: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2,Quality:FullBleed=1" +-*ijsResolution Quality=300ColorCMYKFullbleed: "300 300" +- +-*Quality 300DraftColorCMYK/300 dpi, Draft, Color, Black + Color Cartr.: "" +-*ijsParams Quality=300DraftColorCMYK: "Quality:Quality=1,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=300DraftColorCMYK: "300 300" +- +-*Quality 300DraftGrayscaleCMYK/300 dpi, Draft, Grayscale, Black + Color Cartr.: "" +-*ijsParams Quality=300DraftGrayscaleCMYK: "Quality:Quality=1,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=300DraftGrayscaleCMYK: "300 300" +- +-*Quality 300FastDraftColorCMYK/300 dpi, FastDraft, Color, Black + Color Cartr.: "" +-*ijsParams Quality=300FastDraftColorCMYK: "Quality:Quality=4,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution 300FastDraftColorCMYK: "300 300" +- +-*Quality 300FastDraftGrayscaleCMYK/300 dpi, FastDraft, Grayscale, Black + Color Cartr.: "" +-*ijsParams Quality=300FastDraftGrayscaleCMYK: "Quality:Quality=4,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=300FastDraftGrayscaleCMYK: "300 300" +- +-*Quality 300GrayscaleCMYK/300 dpi, Grayscale, Black + Color Cartr.: "" +-*ijsParams Quality=300GrayscaleCMYK: "Quality:Quality=0,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=300GrayscaleCMYK: "300 300" +- +-*Quality 600ColorCMYK/600 dpi, Color, Black + Color Cartr.: "" +-*ijsParams Quality=600ColorCMYK: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=600ColorCMYK: "600 600" +- +-*Quality 600ColorCMYKFullBleed/600 dpi, Color, Full Bleed, Black + Color Cartr.: "" +-*ijsParams Quality=600ColorCMYKFullbleed: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2,Quality:FullBleed=1" +-*ijsResolution Quality=600ColorCMYKFullbleed: "600 600" +- +-*Quality 600GrayscaleCMYK/600 dpi, Grayscale, Black + Color Cartr.: "" +-*ijsParams Quality=600GrayscaleCMYK: "Quality:Quality=0,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" +-*ijsResolution Quality=600GrayscaleCMYK: "600 600" +- +-*Quality 1200PhotoCMYK/1200 dpi, Photo, Black + Color Cartr., Photo Paper: "" +-*ijsParams Quality=1200PhotoCMYK: "Quality:Quality=3,Quality:ColorMode=2,Quality:MediaType=2,Quality:PenSet=2" +-*ijsResolution Quality=1200PhotoCMYK: "1200 1200" +- +-*Quality 1200PhotoCMYKFullBleed/1200 dpi, Photo, Full Bleed, Black + Color Cartr., Photo Paper: "" +-*ijsParams Quality=1200PhotoCMYKFullBleed: "Quality:Quality=3,Quality:ColorMode=2,Quality:MediaType=3,Quality:PenSet=2,Quality:FullBleed=1" +-*ijsResolution Quality=1200PhotoCMYKFullBleed: "1200 1200" +- +-*CloseUI: *Quality +- +-*OpenUI *InputSlot/Media Source: PickOne +-*OrderDependency: 100 AnySetup *InputSlot +-*DefaultInputSlot: Default +- +-*InputSlot Default/Printer default: "" +-*ijsParams InputSlot=Default: "PS:MediaPosition=7" +- +-*InputSlot PhotoTray/Photo Tray: "" +-*ijsParams InputSlot=PhotoTray: "PS:MediaPosition=6" +- +-*InputSlot Upper/Upper Tray: "" +-*ijsParams InputSlot=Upper: "PS:MediaPosition=1" +- +-*InputSlot Lower/Lower Tray: "" +-*ijsParams InputSlot=Lower: "PS:MediaPosition=4" +- +-*InputSlot CDDVDTray/CD or DVD Tray: "" +-*ijsParams InputSlot=CDDVDTray: "PS:MediaPosition=14" +- +-*InputSlot Envelope/Envelope Feeder: "" +-*ijsParams InputSlot=Envelope: "PS:MediaPosition=3" +- +-*InputSlot LargeCapacity/Large Capacity Tray: "" +-*ijsParams InputSlot=LargeCapacity: "PS:MediaPosition=5" +- +-*InputSlot Manual/Manual Feeder: "" +-*ijsParams InputSlot=Manual: "PS:MediaPosition=2" +- +-*InputSlot MPTray/Multi Purpose Tray: "" +-*ijsParams InputSlot=MPTray: "PS:MediaPosition=8" +- +-*CloseUI: *InputSlot +- +-*OpenUI *PageSize/Page Size: PickOne +-*OrderDependency: 105 AnySetup *PageSize +-*DefaultPageSize: Letter +-*PageSize Letter/Letter: "" +-*PageSize A4/A4: "" +-*PageSize Photo/Photo or 4x6 inch index card: "" +-*PageSize Photo5x7/Photo or 5x7 inch index card: "" +-*PageSize PhotoTearOff/Photo with tear-off tab: "" +-*PageSize 3x5/3x5 inch index card: "" +-*PageSize 5x8/5x8 inch index card: "" +-*PageSize A3/A3: "" +-*PageSize A5/A5: "" +-*PageSize A6/A6: "" +-*PageSize A6TearOff/A6 with tear-off tab: "" +-*PageSize B4JIS/B4 (JIS): "" +-*PageSize B5JIS/B5 (JIS): "" +-*PageSize CDDVD80/CD or DVD 80 mm: "" +-*PageSize CDDVD120/CD or DVD 120 mm: "" +-*PageSize Env10/Envelope #10: "" +-*PageSize EnvC5/Envelope C5: "" +-*PageSize EnvC6/Envelope C6: "" +-*PageSize EnvDL/Envelope DL: "" +-*PageSize EnvISOB5/Envelope B5: "" +-*PageSize EnvMonarch/Envelope Monarch: "" +-*PageSize Executive/Executive: "" +-*PageSize FLSA/American Foolscap: "" +-*PageSize Hagaki/Hagaki: "" +-*PageSize Ledger/Ledger: "" +-*PageSize Legal/Legal: "" +-*PageSize Oufuku/Oufuku-Hagaki: "" +-*PageSize SuperB/Super B: "" +-*PageSize w558h774/16K: "" +-*PageSize w612h935/Executive (JIS): "" +-*PageSize w774h1116/8K: "" +-*CloseUI: *PageSize +- +-*OpenUI *PageRegion: PickOne +-*OrderDependency: 105 AnySetup *PageRegion +-*DefaultPageRegion: Letter +-*PageRegion Letter/Letter: "" +-*PageRegion A4/A4: "" +-*PageRegion Photo/Photo or 4x6 inch index card: "" +-*PageRegion Photo5x7/Photo or 5x7 inch index card: "" +-*PageRegion PhotoTearOff/Photo with tear-off tab: "" +-*PageRegion 3x5/3x5 inch index card: "" +-*PageRegion 5x8/5x8 inch index card: "" +-*PageRegion A3/A3: "" +-*PageRegion A5/A5: "" +-*PageRegion A6/A6: "" +-*PageRegion A6TearOff/A6 with tear-off tab: "" +-*PageRegion B4JIS/B4 (JIS): "" +-*PageRegion B5JIS/B5 (JIS): "" +-*PageRegion CDDVD80/CD or DVD 80 mm: "" +-*PageRegion CDDVD120/CD or DVD 120 mm: "" +-*PageRegion Env10/Envelope #10: "" +-*PageRegion EnvC5/Envelope C5: "" +-*PageRegion EnvC6/Envelope C6: "" +-*PageRegion EnvDL/Envelope DL: "" +-*PageRegion EnvISOB5/Envelope B5: "" +-*PageRegion EnvMonarch/Envelope Monarch: "" +-*PageRegion Executive/Executive: "" +-*PageRegion FLSA/American Foolscap: "" +-*PageRegion Hagaki/Hagaki: "" +-*PageRegion Ledger/Ledger: "" +-*PageRegion Legal/Legal: "" +-*PageRegion Oufuku/Oufuku-Hagaki: "" +-*PageRegion SuperB/Super B: "" +-*PageRegion w558h774/16K: "" +-*PageRegion w612h935/Executive (JIS): "" +-*PageRegion w774h1116/8K: "" +-*CloseUI: *PageRegion +- +-*DefaultImageableArea: Letter +-*ImageableArea Letter/Letter: "18 36 594 783" +-*ImageableArea A4/A4: "9.72 36 585.28 833" +-*ImageableArea Photo/Photo or 4x6 inch index card: "0 36 288 432" +-*ImageableArea Photo5x7/Photo or 5x7 inch index card: "0 36 360 504" +-*ImageableArea PhotoTearOff/Photo with tear-off tab: "0 0 288 432" +-*ImageableArea 3x5/3x5 inch index card: "0 36 216 360" +-*ImageableArea 5x8/5x8 inch index card: "0 36 360 576" +-*ImageableArea A3/A3: "14.40 36.00 827.60 1181" +-*ImageableArea A5/A5: "9 36 411 586" +-*ImageableArea A6/A6: "0 36 297 420" +-*ImageableArea A6TearOff/A6 with tear-off tab: "0 0 297 420" +-*ImageableArea B4JIS/B4 (JIS): "18 36 711 1024" +-*ImageableArea B5JIS/B5 (JIS): "18 36 498 720" +-*ImageableArea CDDVD80/CD or DVD 80 mm: "0 36 237 237" +-*ImageableArea CDDVD120/CD or DVD 120 mm: "0 36 360 360" +-*ImageableArea Env10/Envelope #10: "0 36 297 684" +-*ImageableArea EnvC5/Envelope C5: "18 36 441 640" +-*ImageableArea EnvC6/Envelope C6: "0 36 323 459" +-*ImageableArea EnvDL/Envelope DL: "0 36 312 624" +-*ImageableArea EnvISOB5/Envelope B5: "18 36 481 700" +-*ImageableArea EnvMonarch/Envelope Monarch: "0 36 279 540" +-*ImageableArea Executive/Executive: "18 36 504 747" +-*ImageableArea FLSA/American Foolscap: "18 36 594 927" +-*ImageableArea Hagaki/Hagaki: "0 36 283 420" +-*ImageableArea Ledger/Ledger: "14.40 36 777.60 1215" +-*ImageableArea Legal/Legal: "18 36 594 999" +-*ImageableArea Oufuku/Oufuku-Hagaki: "0 36 420 567" +-*ImageableArea SuperB/Super B: "14.40 36 921.60 1359" +-*ImageableArea w558h774/16K: "18 36 540 765" +-*ImageableArea w612h935/Executive (JIS): "18 36 594 926" +-*ImageableArea w774h1116/8K: "18 36 756 1107" +- +-*DefaultPaperDimension: Letter +-*PaperDimension Letter/Letter: "612 792" +-*PaperDimension A4/A4: "595 842" +-*PaperDimension Photo/Photo or 4x6 inch index card: "288 432" +-*PaperDimension Photo5x7/Photo or 5x7 inch index card: "360 504" +-*PaperDimension PhotoTearOff/Photo with tear-off tab: "288 432" +-*PaperDimension 3x5/3x5 inch index card: "216 360" +-*PaperDimension 5x8/5x8 inch index card: "360 576" +-*PaperDimension A3/A3: "842 1190" +-*PaperDimension A5/A5: "420 595" +-*PaperDimension A6/A6: "297 420" +-*PaperDimension A6TearOff/A6 with tear-off tab: "297 420" +-*PaperDimension B4JIS/B4 (JIS): "729 1033" +-*PaperDimension B5JIS/B5 (JIS): "516 729" +-*PaperDimension CDDVD80/CD or DVD 80 mm: "237 237" +-*PaperDimension CDDVD120/CD or DVD 120 mm: "360 360" +-*PaperDimension Env10/Envelope #10: "297 684" +-*PaperDimension EnvC5/Envelope C5: "459 649" +-*PaperDimension EnvC6/Envelope C6: "323 459" +-*PaperDimension EnvDL/Envelope DL: "312 624" +-*PaperDimension EnvISOB5/Envelope B5: "499 709" +-*PaperDimension EnvMonarch/Envelope Monarch: "279 540" +-*PaperDimension Executive/Executive: "522 756" +-*PaperDimension FLSA/American Foolscap: "612 936" +-*PaperDimension Hagaki/Hagaki: "283 420" +-*PaperDimension Ledger/Ledger: "792 1224" +-*PaperDimension Legal/Legal: "612 1008" +-*PaperDimension Oufuku/Oufuku-Hagaki: "420 567" +-*PaperDimension SuperB/Super B: "936 1368" +-*PaperDimension w558h774/16K: "558 774" +-*PaperDimension w612h935/Executive (JIS): "612 935" +-*PaperDimension w774h1116/8K: "774 1116" +- +-*OpenUI *Duplex/Double-Sided Printing: PickOne +-*FoomaticRIPOption Duplex: enum CmdLine A +-*OrderDependency: 120 AnySetup *Duplex +-*DefaultDuplex: None +-*Duplex DuplexNoTumble/Long Edge (Standard): "" +-*Duplex DuplexTumble/Short Edge (Flip): "" +-*Duplex None/Off: "" +-*CloseUI: *Duplex +- +-*CloseGroup: General +- +- +-*% Generic boilerplate PPD stuff as standard PostScript fonts and so on +- +-*DefaultFont: Courier +-*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +-*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +-*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +-*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +-*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +-*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +-*Font Bookman-Light: Standard "(001.004S)" Standard ROM +-*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +-*Font Courier: Standard "(002.004S)" Standard ROM +-*Font Courier-Bold: Standard "(002.004S)" Standard ROM +-*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +-*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +-*Font Helvetica: Standard "(001.006S)" Standard ROM +-*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +-*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +-*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +-*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +-*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +-*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +-*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +-*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +-*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +-*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +-*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +-*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +-*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +-*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +-*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +-*Font Symbol: Special "(001.007S)" Special ROM +-*Font Times-Bold: Standard "(001.007S)" Standard ROM +-*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +-*Font Times-Italic: Standard "(001.007S)" Standard ROM +-*Font Times-Roman: Standard "(001.007S)" Standard ROM +-*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +-*Font ZapfDingbats: Special "(001.004S)" Standard ROM +- diff --git a/cups-filters.spec b/cups-filters.spec index 9c8bc8d..d3e6e89 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.22.5 -Release: 12%{?dist} +Release: 13%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -42,8 +42,11 @@ Patch06: cups-filters-setfilladjust.patch Patch07: 0001-libcupsfilters-In-generated-PPDs-prefer-Apple-Raster.patch # 1776271 - Updated cups-browsed in RHEL 7.7 leaks sockets Patch08: cups-browsed-socket-leak.patch - -Patch09: cups-filters-poppler-0.84.0.patch +# built with gcc 10 +Patch09: 0001-foomatic-rip-fix-compilation-with-fno-common.patch +# backported from upstream, current code of pdftoraster, backported +# because of FTBFS with new gcc otherwise +Patch10: cups-filters-upstream-pdftoraster.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -122,12 +125,6 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -# some installations can have ghostscript-cups or foomatic-filters installed, -# but they are provided by cups-filters, so we need to obsolete them to have -# them uninstalled - remove these obsoletes when F31+ -Obsoletes: ghostscript-cups -Obsoletes: foomatic-filters - %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries # LGPLv2: libcupsfilters @@ -166,7 +163,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch06 -p1 -b .setfilladjust %patch07 -p1 -b .prefer-apple-raster %patch08 -p1 -b .socket-leak -%patch09 -p1 -b .poppler-0.84.0 +%patch09 -p1 -b .gcc10 +%patch10 -p1 -b .pdftoraster %build # work-around Rpath @@ -315,6 +313,9 @@ make check %{_libdir}/libfontembed.so %changelog +* Wed Jan 22 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.22.5-13 +- fix build with GCC 10 and remove old obsoletes + * Fri Jan 17 2020 Marek Kasik <mkasik@redhat.com> - 1.22.5-11 - Rebuild for poppler-0.84.0 From 719f16e709e3508502601f052d09713ce5962bda Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 28 Jan 2020 14:21:07 +0100 Subject: [PATCH 080/197] Rebase to 1.27.0 --- .gitignore | 1 + cups-filters.spec | 14 ++++++++------ sources | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index dfc4c7e..6ba73a9 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,4 @@ /cups-filters-1.22.3.tar.xz /cups-filters-1.22.5.tar.xz /cups-filters-1.26.0.tar.xz +/cups-filters-1.27.0.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 84bb788..9213fc7 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.26.0 +Version: 1.27.0 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -236,11 +236,13 @@ done %{_pkgdocdir}/NEWS %config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf %attr(0755,root,root) %{_cups_serverbin}/filter/* -%attr(0755,root,root) %{_cups_serverbin}/backend/parallel +# all backends needs to be run only as root because of kerberos +%attr(0700,root,root) %{_cups_serverbin}/backend/parallel # Serial backend needs to run as root (bug #212577#c4). %attr(0700,root,root) %{_cups_serverbin}/backend/serial -%attr(0755,root,root) %{_cups_serverbin}/backend/implicitclass -%attr(0755,root,root) %{_cups_serverbin}/backend/beh +# implicitclass backend must be run as root +%attr(0700,root,root) %{_cups_serverbin}/backend/implicitclass +%attr(0700,root,root) %{_cups_serverbin}/backend/beh # cups-brf needs to be run as root, otherwise it leaves error messages # in journal %attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf @@ -300,8 +302,8 @@ done %{_libdir}/libfontembed.so %changelog -* Mon Dec 16 2019 Zdenek Dohnal <zdohnal@redhat.com> - 1.26.0-1 -- 1.26.0 +* Tue Jan 28 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-1 +- 1.27.0 - add post scriptlet for update * Tue Nov 26 2019 Zdenek Dohnal <zdohnal@redhat.com> - 1.22.5-10 diff --git a/sources b/sources index a499d72..d36b49a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.26.0.tar.xz) = a6e0a1b8dfec2e46cb2475639b33f60da3a74090718334883564711530e13c7524952b9f145303c1063e1ae21eb585dce1fd9c87e4ce7884ec687fdef58f2124 +SHA512 (cups-filters-1.27.0.tar.xz) = f49d9c3e558cd3ac7d5eb0bf323940e7bb3c088a24ef9232cde2cb84ddc0e262c77acd29eb97851ca4e3bd473d764e730480808f9c1d95b1dd6d406073614702 From 3154c5b1e8f8c70ba383a77da52ba57c16178e5d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 18 Feb 2020 15:39:00 +0100 Subject: [PATCH 081/197] 1802969 - Service "cups-browsed" is crashing all the time --- cups-filters-abrt.patch | 66 +++++++++++++++++++++++++++++++++++++++++ cups-filters.spec | 10 ++++++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 cups-filters-abrt.patch diff --git a/cups-filters-abrt.patch b/cups-filters-abrt.patch new file mode 100644 index 0000000..75cd5e1 --- /dev/null +++ b/cups-filters-abrt.patch @@ -0,0 +1,66 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index d83420a..0ae3400 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -2491,18 +2491,35 @@ int check_printer_with_options(char* cluster_name, int idx_option1, + remote_printer_t *p; + cups_array_t *first_attributes_value; + cups_array_t *second_attributes_value; +- char *borderless_pagesize; ++ char *borderless_pagesize = NULL; + int option1_is_size = 0, option2_is_size = 0; ++ unsigned long int max_length = 0, option1_len = 0, option2_len = 0, t_len = 0; + char t[] = ".Borderless"; + +- borderless_pagesize = malloc(sizeof(char) * 32); ++ t_len = strlen(t); ++ if (option1) ++ option1_len = strlen(option1); ++ if (option2) ++ option2_len = strlen(option2); ++ ++ /* Seems to be possible to have both options...*/ ++ max_length = option1_len + option2_len + (2 * t_len) + 1; ++ ++ borderless_pagesize = (char *)malloc(sizeof(char) * max_length); ++ if (borderless_pagesize == NULL) ++ { ++ debug_printf("check_printer_with_options: Run out of memory.\n"); ++ return 0; ++ } ++ memset(borderless_pagesize, 0, max_length); ++ + if (!strcmp(ppd_keywords[idx_option1], "PageSize") || + !strcmp(ppd_keywords[idx_option1], "PageRegion")) { + /* Check that we are generating .Borderless for the correct size, i.e We + are generating 4x5.Borderless for 4x5 and not generating + 4x5.Borderless.Borderless for 4x5.Borderless */ +- if (strlen(option1) >= 11 && +- !strcmp(&option1[strlen(option1) - strlen(t)], t)) ++ if (option1_len >= 11 && ++ !strcmp(&option1[option1_len - t_len], t)) + ; + else { + strcat(borderless_pagesize, option1); +@@ -2512,8 +2529,8 @@ int check_printer_with_options(char* cluster_name, int idx_option1, + } + if (!strcmp(ppd_keywords[idx_option2], "PageSize") || + !strcmp(ppd_keywords[idx_option2], "PageRegion")) { +- if(strlen(option2) >=11 && +- !strcmp(&option2[strlen(option2) - strlen(t)], t)) ++ if(option2_len >=11 && ++ !strcmp(&option2[option2_len - t_len], t)) + ; + else { + strcat(borderless_pagesize, option2); +@@ -2536,7 +2553,10 @@ int check_printer_with_options(char* cluster_name, int idx_option1, + if (cupsArrayFind(second_attributes_value,(void*)option2) || + (option2_is_size && cupsArrayFind(second_attributes_value, + (void*)borderless_pagesize))) ++ { ++ free(borderless_pagesize); + return 1; ++ } + } + } + free(borderless_pagesize); diff --git a/cups-filters.spec b/cups-filters.spec index 0c387d9..4d198d6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.0 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,6 +27,9 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch +# crash on uninitialized string +# reported upstream https://github.com/OpenPrinting/cups-filters/pull/204 +Patch03: cups-filters-abrt.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -137,6 +140,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage +# crash in cups-browsed +%patch03 -p1 -b .abrt %build # work-around Rpath @@ -305,6 +310,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Feb 17 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-2 +- 1802969 - Service "cups-browsed" is crashing all the time + * Tue Jan 28 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-1 - 1.27.0 - add post scriptlet for update From 3606bde6486a09d8c0ac32338a06e6db05f01315 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 18 Feb 2020 16:17:50 +0100 Subject: [PATCH 082/197] 1.27.1 --- .gitignore | 1 + ...-rip-fix-compilation-with-fno-common.patch | 53 - cups-filters-createall.patch | 9 - cups-filters-upstream-pdftoraster.patch | 12608 ---------------- cups-filters.spec | 9 +- sources | 2 +- 6 files changed, 8 insertions(+), 12674 deletions(-) delete mode 100644 0001-foomatic-rip-fix-compilation-with-fno-common.patch delete mode 100644 cups-filters-upstream-pdftoraster.patch diff --git a/.gitignore b/.gitignore index 6ba73a9..d365a60 100644 --- a/.gitignore +++ b/.gitignore @@ -93,3 +93,4 @@ /cups-filters-1.22.5.tar.xz /cups-filters-1.26.0.tar.xz /cups-filters-1.27.0.tar.xz +/cups-filters-1.27.1.tar.xz diff --git a/0001-foomatic-rip-fix-compilation-with-fno-common.patch b/0001-foomatic-rip-fix-compilation-with-fno-common.patch deleted file mode 100644 index 477f4d3..0000000 --- a/0001-foomatic-rip-fix-compilation-with-fno-common.patch +++ /dev/null @@ -1,53 +0,0 @@ -From e6c5025df307d3e8c79c3cd801780e4570f8607e Mon Sep 17 00:00:00 2001 -From: Martin Wilck <mwilck@suse.com> -Date: Thu, 9 Jan 2020 10:20:46 +0100 -Subject: [PATCH] foomatic-rip: fix compilation with -fno-common - -Starting from the upcoming GCC release 10, the default of -fcommon option will -change to -fno-common. This causes compilation errors in foomatic-rip. These -seem to be due to missing "external" declarations. - -https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Code-Gen-Options.html#index-fno-common ---- - filter/foomatic-rip/foomaticrip.c | 2 +- - filter/foomatic-rip/options.c | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c -index 3b27ce93..2c6cdb66 100644 ---- a/filter/foomatic-rip/foomaticrip.c -+++ b/filter/foomatic-rip/foomaticrip.c -@@ -105,7 +105,7 @@ jobparams_t * get_current_job() - } - - --dstr_t *postpipe; /* command into which the output of this filter should be piped */ -+dstr_t *postpipe = NULL; /* command into which the output of this filter should be piped */ - FILE *postpipe_fh = NULL; - - FILE * open_postpipe() -diff --git a/filter/foomatic-rip/options.c b/filter/foomatic-rip/options.c -index 481e5c54..3c6b63d4 100644 ---- a/filter/foomatic-rip/options.c -+++ b/filter/foomatic-rip/options.c -@@ -38,14 +38,14 @@ typedef struct icc_mapping_entry_s { - } icc_mapping_entry_t; - - /* Values from foomatic keywords in the ppd file */ --char printer_model [256]; -+extern char printer_model [256]; - char printer_id [256]; - char driver [128]; - char cmd [4096]; - char cmd_pdf [4096]; --dstr_t *postpipe = NULL; /* command into which the output of this -+extern dstr_t *postpipe; /* command into which the output of this - filter should be piped */ --char cupsfilter [256]; -+extern char cupsfilter [256]; - int jobentitymaxlen = 0; - int userentitymaxlen = 0; - int hostentitymaxlen = 0; --- -2.21.1 - diff --git a/cups-filters-createall.patch b/cups-filters-createall.patch index 8079537..b200eb4 100644 --- a/cups-filters-createall.patch +++ b/cups-filters-createall.patch @@ -10,12 +10,3 @@ diff -up cups-filters-1.16.1/utils/cups-browsed.conf.in.createall cups-filters-1 # LocalQueueNamingIPPPrinter DNS-SD # LocalQueueNamingIPPPrinter MakeModel -@@ -453,7 +453,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTO - # CreateIPPPrinterQueues AppleRaster - # CreateIPPPrinterQueues Everywhere AppleRaster - # CreateIPPPrinterQueues Driverless --# CreateIPPPrinterQueues All -+CreateIPPPrinterQueues All - - - # If cups-browsed is automatically creating print queues for native diff --git a/cups-filters-upstream-pdftoraster.patch b/cups-filters-upstream-pdftoraster.patch deleted file mode 100644 index 01802cc..0000000 --- a/cups-filters-upstream-pdftoraster.patch +++ /dev/null @@ -1,12608 +0,0 @@ -diff --git a/COPYING b/COPYING -index 140aae1..4103e6e 100644 ---- a/COPYING -+++ b/COPYING -@@ -145,21 +145,6 @@ Files: filter/imagetopdf* - Copyright: 1993-2007, Easy Software Products - License: GPL-2 - --Files: filter/pdftoijs.cxx -- ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd --Copyright: 2008, Tobias Hoffmann -- 2008, BBR Inc. --License: Expat -- --Files: filter/pdftoopvp/* --Copyright: 2003, 2004, 2005, 2006, AXE,Inc -- 2007, 2008, ModifiedBBR Inc. -- 2003, Glyph & Cog, LLC -- 2006, Fuji Xerox Printing Systems Co., Ltd -- 2006, Free Standards Group -- 2006, Canon Inc --License: Expat -- - Files: filter/pdftopdf/* - Copyright: 2012 Tobias Hoffmann - 2006-2011, BBR Inc -diff --git a/INSTALL b/INSTALL -index e4c60ae..5d21a47 100644 ---- a/INSTALL -+++ b/INSTALL -@@ -24,7 +24,7 @@ BEFORE YOU BEGIN - Compaq, HP, SGI, and Sun. BSD users should use GNU make (gmake) since BSD - make does not support "include". - -- Poppler, libijs, freetype, fontconfig, and liblcms (liblcms2 recommended) -+ Poppler, freetype, fontconfig, and liblcms (liblcms2 recommended) - must be installed to be able to compile this package. - - Note that Poppler has to be compiled with the -diff --git a/Makefile.am b/Makefile.am -index cfefa5a..80260aa 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -482,61 +482,6 @@ EXTRA_DIST += \ - pkgfilter_PROGRAMS = - pkgfilterdir = $(CUPS_SERVERBIN)/filter - --# =========== --# PDF to OPVP --# =========== --if ENABLE_OPVP --if ENABLE_POPPLER --pkgfilter_PROGRAMS += \ -- pdftoopvp -- --pkgfontconfigdir = $(sysconfdir)/$(FONTDIR) --pkgfontconfig_DATA = filter/pdftoopvp/99pdftoopvp.conf --endif --endif --EXTRA_DIST += filter/pdftoopvp/99pdftoopvp.conf -- --pdftoopvp_SOURCES = \ -- filter/pdftoopvp/oprs/OPRS.cxx \ -- filter/pdftoopvp/oprs/OPRS.h \ -- filter/pdftoopvp/oprs/OPVPSplashClip.cxx \ -- filter/pdftoopvp/oprs/OPVPSplashClip.h \ -- filter/pdftoopvp/oprs/OPVPSplash.cxx \ -- filter/pdftoopvp/oprs/OPVPSplash.h \ -- filter/pdftoopvp/oprs/OPVPSplashPath.cxx \ -- filter/pdftoopvp/oprs/OPVPSplashPath.h \ -- filter/pdftoopvp/oprs/OPVPSplashState.cxx \ -- filter/pdftoopvp/oprs/OPVPSplashState.h \ -- filter/pdftoopvp/oprs/OPVPSplashXPath.cxx \ -- filter/pdftoopvp/oprs/OPVPSplashXPath.h \ -- filter/pdftoopvp/oprs/OPVPWrapper.cxx \ -- filter/pdftoopvp/oprs/OPVPWrapper.h \ -- filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx \ -- filter/pdftoopvp/oprs/OPVPWrapper_0_2.h \ -- filter/pdftoopvp/OPVPError.h \ -- filter/pdftoopvp/opvp/opvp_common.h \ -- filter/pdftoopvp/opvp/opvp.h \ -- filter/pdftoopvp/opvp/opvp_0_2_0.h \ -- filter/pdftoopvp/OPVPOutputDev.cxx \ -- filter/pdftoopvp/OPVPOutputDev.h \ -- filter/pdftoopvp/pdftoopvp.cxx --pdftoopvp_CFLAGS = \ -- $(CUPS_CFLAGS) \ -- $(FREETYPE_CFLAGS) \ -- $(FONTCONFIG_CFLAGS) \ -- $(LIBPNG_CFLAGS) \ -- $(POPPLER_CFLAGS) \ -- -I$(srcdir)/filter/pdftoopvp/oprs \ -- -I$(srcdir)/filter/pdftoopvp/opvp --pdftoopvp_CXXFLAGS = $(pdftoopvp_CFLAGS) --pdftoopvp_LDADD = \ -- $(CUPS_LIBS) \ -- $(FREETYPE_LIBS) \ -- $(FONTCONFIG_LIBS) \ -- $(LIBPNG_LIBS) \ -- $(POPPLER_LIBS) \ -- $(DLOPEN_LIBS) -- - # ========== - # PDF to PDF - # ========== -@@ -619,10 +564,6 @@ endif - if ENABLE_POPPLER - pkgfilter_PROGRAMS += \ - pdftoraster --if ENABLE_IJS --pkgfilter_PROGRAMS += \ -- pdftoijs --endif - endif - if ENABLE_GHOSTSCRIPT - pkgfilter_PROGRAMS += \ -@@ -819,19 +760,6 @@ rastertops_LDADD = \ - -lz \ - libcupsfilters.la - --pdftoijs_SOURCES = \ -- filter/pdftoijs.cxx \ -- filter/PDFError.h --pdftoijs_CFLAGS = \ -- $(CUPS_CFLAGS) \ -- $(IJS_CFLAGS) \ -- $(POPPLER_CFLAGS) --pdftoijs_CXXFLAGS = $(pdftoijs_CFLAGS) --pdftoijs_LDADD = \ -- $(CUPS_LIBS) \ -- $(IJS_LIBS) \ -- $(POPPLER_LIBS) -- - sys5ippprinter_SOURCES = \ - filter/common.c \ - filter/common.h \ -@@ -858,8 +786,7 @@ pdftops_LDADD = $(STRCASESTR) $(CUPS_LIBS) - pdftops_DEPENDENCIES = $(STRCASESTR) - - pdftoraster_SOURCES = \ -- filter/pdftoraster.cxx \ -- filter/PDFError.h -+ filter/pdftoraster.cxx - pdftoraster_CFLAGS = \ - $(CUPS_CFLAGS) \ - $(LCMS_CFLAGS) \ -@@ -1017,13 +944,6 @@ genppdfiles = \ - ppd/HP-Color_LaserJet_CM3530_MFP-PDF.ppd \ - ppd/Ricoh-PDF_Printer-PDF.ppd - ppd_DATA = $(genppdfiles) --ijsppdfiles = \ -- ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd --if ENABLE_POPPLER --if ENABLE_IJS --ppd_DATA += $(ijsppdfiles) --endif --endif - gsppdfiles = \ - ppd/pxlcolor.ppd \ - ppd/pxlmono.ppd -@@ -1033,7 +953,6 @@ endif - - EXTRA_DIST += \ - $(genppdfiles) \ -- $(ijsppdfiles) \ - $(gsppdfiles) - - # ========= -diff --git a/README b/README -index 2d80e32..ba02771 100644 ---- a/README -+++ b/README -@@ -455,7 +455,7 @@ CUPS FILTERS FOR PDF AS STANDARD PRINT JOB FORMAT - - Here is documentation from the former CUPS add-on tarball with the filters - for the PDF-based printing workflow: imagetopdf, texttopdf, -- pdftopdf, pdftoraster, pdftoopvp, and pdftoijs -+ pdftopdf, and pdftoraster - - The original filters are from http://sourceforge.jp/projects/opfc/ - -@@ -718,7 +718,10 @@ output NEWLINE - Thus, if you want to use both PDF filters and GS by single PPD file, - what you should do is to add the following line in the PPD file; - --*pdftopdfJCLBegin: "pdftoopvp jobInfo:" -+*pdftopdfJCLBegin: "pdfto... jobInfo:" -+ -+Replace "pdfto..." by the name of the actual filter to be called after -+pdftopdf. - - Note: - If you specify JCLBegin, you have to specify JCLToPSInterpreter as well. -@@ -1100,247 +1103,6 @@ in the location specified by TMPDIR environment variable. Default location - is "/tmp". - - --PDFTOIJS --======== -- --(Optional, only included when building with "./configure ... --enable-ijs ...") -- --1. INTRODUCTION -- --"pdftoijs" is a filter for CUPS. It reads PDF files, converts it --and sends it to an IJS server. -- --2. LICENSE -- --Almost source files are under MIT like license. However, "pdftoijs" links --some "poppler" libraries, and these files are under GNU public license. --See copyright notice of each file for details. -- --3. COMMAND LINE -- --"pdftoijs" is a CUPS filter, and the command line arguments, environment --variables and configuration files are in accordance with the CUPS filter --interface. -- --pdftoijs <job> <user> <title> <num-copies> <options> [<filename>] -- --"pdftoijs" ignores <job> and <user>. --<title> is appended into the PDF dictionary as /Title. --<num-copies> specifies the number of document copies. --<options> is a CUPS option list. --<filename> is an input PDF file name. -- --When omit the <filename>, "pdftoijs" reads a PDF file from the stdin, --and save it as a temporary file. -- --4. ENVIRONMENT VARIABLES -- --This program refers the following environment variable; -- PPD: PPD file name of the printer. -- --5. NEW PPD KEYWORDS -- --*ijsServer : the ijsserver executable --*ijsManufacturer, *ijsModel : as used by the ijs server --*ijsColorspace : the desired output colorspace, one of -- 'rgb' -- 'cmyk' (availability depending on poppler compile-options) -- 'white1', 'black1': 1-bit normal/inverted -- 'white8', 'black8': 8-bit greyscale normal/inverted --*ijsResolution [option]=[choice]: the desired output resolution e.g. "600 600" --*ijsParams [option]=[choice]: custom ijs parameters, separated by ',' -- (to escape: use \,) -- --6. COMMAND OPTIONS -- --(See CUPS documents for details.) -- --ijsOutputFile : the destination file, stdout otherwise -- --7. INFORMATION FOR DEVELOPERS -- --Following information is for developers, not for driver users. -- --7.1 Temporally files location -- --"pdftoijs" creates temporary files if needed. Temporary files are created --in the location specified by TMPDIR environment variable. Default location --is "/tmp". -- -- --PDFTOOPVP --========= -- --(Optional, only included when building with "./configure ... --enable-opvp ...") -- --1. INTRODUCTION -- --"pdftoopvp" is a CUPS filter which reads PDF file, renders pages and --outputs PDL to a printer driver which is compliant with the OpenPrinting --Vector Printer Driver Interface "opvp". -- --2. CONFIGURATION -- --"pdftoopvp" refers the poppler configuration file. Be aware that poppler --uses "fontconfig" for its font configuration. -- --3. JCL -- --When "pdftoopvp" reads a PDF file from stdin, "pdftoopvp" handles the data --prior to PDF header (%PDF ...) as JCL options. JCL options for "pdftoopvp" --must begin with "pdftoopvp jobInfo:". "pdftoopvp" passes the option string --just after ":" to the driver as the jobInfo option. -- --4. COMMAND LINE -- --"pdftoopvp" is a CUPS filter, and the command line arguments, --environment variables and configuration files are in accordance with --the CUPS filter interface. -- --pdftoopvp <job> <user> <title> <num-copies> <options> [<filename>] -- --"pdftoopvp" ignores <job>, <user>, <title> and <num-copies>. --<options> is a CUPS option list. -- --When omit the <filename>, "pdftoopvp" reads a PDF file from stdin, --and save it as a temporary file. -- --CUPS options defined in <options> are delimited by space. Boolean --type CUPS option is defined only by the option key, and other type --CUPS option are defined by pairs of key and value, <key>=<value>. -- --5. COMMAND OPTIONS -- --"pdftoopvp" accepts the following CUPS standard options; -- --Resolution=<int> -- Specifies a printer resolution in dpi. -- When this option is omitted, the resolution is treated as 300dpi. -- Horizontal and vertical resolution are treated as the same resolution. -- --PageSize=<string> -- Specifies a paper size by name defined in the PPD file. -- This option is ignored when no PPD file is assigned for the printer -- queue. -- --"pdftoopvp" accepts the following original options; -- --opvpDriver=<string> -- Specifies a driver library name. -- --opvpModel=<string> -- Specifies a printer model name. -- --opvpJobInfo=<string> -- Specifies "jobInfo" printing options that are passed to the driver. -- Printing options are overridden by JCL options. -- --opvpDocInfo=<string> -- Specifies "docInfo" document options that are passed to the driver. -- --opvpPageInfo=<string> -- Specifies "pageInfo" page options that are passed to the driver. -- --pdftoopvpClipPathNotSaved (Boolean option) -- Specifies that the driver cannot save clipping path operators in PDF. -- --nopdftoopvpShearImage (Boolean option) -- Specifies that the driver cannot rotate/shear images by CTM. -- --nopdftoopvpMiterLimit (Boolean option) -- Specifies that the driver does not support miter limit. -- If the driver does not prepare the opvpSetMiterLimit function entry, -- this option setting is ignored, and also miter limit is ignored. -- --pdftoopvpIgnoreMiterLimit (Boolean option) -- When nopdftoopvpMiterLimit option is set, pdftoopvp automatically -- replace paths to multiple lines or drawing images. This option -- specifies to avoid the path replacement even when nopdftoopvpMiterLimit -- option is set. -- --pdftoopvpMaxClipPathLength=<int> -- Specifies the maximum number of clipping path points that the driver -- supports. Default value is 2000 points. -- --pdftoopvpMaxFillPathLength=<int> -- Specifies the maximum number of fill path points that the driver supports. -- Default value is 4000 points. -- --nopdftoopvpLineStyle (Boolean option) -- Specifies that the driver ignores the line style settings in PDF. -- If the driver does not prepare the SetLineStyle , SetLineDash or -- SetLineDashOffset function entry, this option setting is ignored, and -- also line style, line dash and line dash offset are ignored. -- --nopdftoopvpClipPath (Boolean option) -- Specifies that the driver does not support clipping path. -- If the driver does not prepare the opvpSetClipPath function entry, this -- option is ignored, and also clip path setting is ignored. -- --nopdftoopvpBitmapChar (Boolean option) -- Specifies that the driver does not output characters as images. -- Default setting is that "pdftoopvp" outputs small characters as images. -- --pdftoopvpBitmapCharThreshold=<int> -- Specifies the threshold value that "pdftoopvp" outputs characters as -- images. Threshold value is defined as W x H where character's width -- is given by W pixels and height is given by H pixels. -- Default threshold value is 2000 points. -- --nopdftoopvpImageMask (Boolean option) -- Specifies that the driver does not support image mask. -- If this option is set, "pdftoopvp" treats as the nopdftoopvpBitmapChar -- option is given. -- --6. PPD OPTIONS -- --Following options can be defined in a PPD. -- --Resolution=<int> --PageSize=<string> --opvpDriver=<string> --opvpModel=<string> --opvpJobInfo=<string> --opvpDocInfo=<string> --opvpPageInfo=<string> --pdftoopvpClipPathNotSaved=True --pdftoopvpShearImage=False --pdftoopvpMiterLimit=False --pdftoopvpIgnoreMiterLimit=True --pdftoopvpMaxClipPathLength=<int> --pdftoopvpMaxFillPathLength=<int> --pdftoopvpLineStyle=False --pdftoopvpClipPath=False --pdftoopvpBitmapChar=False --pdftoopvpBitmapCharThreshold=<int> --pdftoopvpImageMask=False -- --7. OPTIONS OVERRIDING RULE -- --"jobInfo" printing options in a PPD is used as a initial "jobInfo" printing --options. If opvpJobInfo option is given in the command line, precedent --"jobInfo" printing options are overridden by the opvpJobInfo options. -- --After the "jobInfo" printing options are overridden by the opvpJobInfo --options, if JCL options are given, precedent "jobInfo" printing options are --overridden by the options given by JCL options. -- --8. INFORMATION FOR CUPS 1.1 -- --To use this program under CUPS 1.1, following lines must be defined --in the CUPS's "mime.types" file. -- --application/vnd.cups-pdf -- --9. KNOWN PROBLEMS -- --Problem: -- When a page is rotated and a character is small, character might not be -- rotated correctly. This problem is caused by free type library. --Solution: -- Define the nopdftoopvpBitmapChar to inhibit characters output as images. -- -- - URFTOPDF - ======== - -diff --git a/configure.ac b/configure.ac -index 317792b..89c530d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -459,7 +459,6 @@ AS_IF([test x"$lcms2" = "xno"], [ - ]) - PKG_CHECK_MODULES([FREETYPE], [freetype2], [AC_DEFINE([HAVE_FREETYPE_H], [1], [Have FreeType2 include files])]) - PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.0.0]) --PKG_CHECK_MODULES([IJS], [ijs], [have_ijs=yes], [have_ijs=no]) - PKG_CHECK_MODULES([ZLIB], [zlib]) - AC_DEFINE([HAVE_LIBZ], [], [Define that we use zlib]) - PKG_CHECK_MODULES([LIBQPDF], [libqpdf >= 8.3.0]) -@@ -488,7 +487,7 @@ AC_ARG_ENABLE(poppler, AS_HELP_STRING([--enable-poppler],[enable Poppler-based f - enable_poppler=$enableval,enable_poppler=yes) - AM_CONDITIONAL(ENABLE_POPPLER, test x$enable_poppler = xyes) - if test x$enable_poppler = xyes; then -- PKG_CHECK_MODULES([POPPLER], [poppler >= 0.19]) -+ PKG_CHECK_MODULES([POPPLER], [poppler-cpp >= 0.19]) - AC_CHECK_HEADER([poppler/cpp/poppler-version.h], [AC_DEFINE([HAVE_CPP_POPPLER_VERSION_H],,[Define if you have Poppler's "cpp/poppler-version.h" header file.])], []) - fi - -@@ -542,21 +541,6 @@ AC_ARG_ENABLE([ghostscript], - [enable_ghostscript="$enableval"], - [enable_ghostscript=yes] - ) --AC_ARG_ENABLE([ijs], -- [AS_HELP_STRING([--enable-ijs], [Enable filters using IJS.])], -- [enable_ijs="$enableval"], -- [enable_ijs=no] --) --AS_IF([test "x$enable_ijs" = "xyes" -a "x$have_ijs" != "xyes"], [ -- AC_MSG_ERROR([IJS not found, but requested.]) --]) --AM_CONDITIONAL(ENABLE_IJS, test "x$enable_ijs" = "xyes") --AC_ARG_ENABLE([opvp], -- [AS_HELP_STRING([--enable-opvp], [Enable filters using OpenPrinting Vector (OPVP).])], -- [enable_opvp="$enableval"], -- [enable_opvp=no] --) --AM_CONDITIONAL(ENABLE_OPVP, test "x$enable_opvp" = "xyes") - AC_ARG_WITH([pdftops], - [AS_HELP_STRING([--with-pdftops=value], [Set which pdftops to use (gs,pdftops,pdftocairo,acroread,mupdf,hybrid).])], - [with_pdftops="$withval"], -@@ -903,7 +887,5 @@ Build configuration: - apple-raster: ${APPLE_RASTER_FILTER} - pclm: ${enable_pclm} - driverless auto-setup: ${enable_auto_setup_driverless} -- ijs: ${enable_ijs} -- opvp: ${enable_opvp} - ============================================================================== - ]) -diff --git a/filter/PDFError.h b/filter/PDFError.h -deleted file mode 100644 -index 6167b5a..0000000 ---- a/filter/PDFError.h -+++ /dev/null -@@ -1,40 +0,0 @@ --/* -- --Copyright (c) 2012, BBR Inc. All rights reserved. -- --Permission is hereby granted, free of charge, to any person obtaining --a copy of this software and associated documentation files (the --"Software"), to deal in the Software without restriction, including --without limitation the rights to use, copy, modify, merge, publish, --distribute, sublicense, and/or sell copies of the Software, and to --permit persons to whom the Software is furnished to do so, subject to --the following conditions: -- --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -- --THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY --CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE --SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- --*/ --/* -- P2PError.h --*/ --#ifndef _P2PERROR_H_ --#define _P2PERROR_H_ -- --#include <config.h> --#include <stdarg.h> --#include <Error.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#define pdfError(pos,...) error(errInternal,pos,__VA_ARGS__) -- --#endif -diff --git a/filter/imagetopdf.c b/filter/imagetopdf.c -index 0bf2618..4b8c6ad 100644 ---- a/filter/imagetopdf.c -+++ b/filter/imagetopdf.c -@@ -149,13 +149,13 @@ void emitJCLOptions(FILE *fp, int copies) - int i; - char buf[1024]; - ppd_attr_t *attr; -- int pdftoopvp = 0; -+ int pdftopdfjcl = 0; - int datawritten = 0; - - if (ppd == 0) return; - if ((attr = ppdFindAttr(ppd,"pdftopdfJCLBegin",NULL)) != NULL) { - int n = strlen(attr->value); -- pdftoopvp = 1; -+ pdftopdfjcl = 1; - for (i = 0;i < n;i++) { - if (attr->value[i] == '\r' || attr->value[i] == '\n') { - /* skip new line */ -@@ -173,7 +173,7 @@ void emitJCLOptions(FILE *fp, int copies) - if ((attr = ppdFindAttr(ppd,"pdftopdfJCLCopies",buf)) != NULL) { - fputs(attr->value,fp); - datawritten = 1; -- } else if (pdftoopvp) { -+ } else if (pdftopdfjcl) { - fprintf(fp,"Copies=%d;",copies); - datawritten = 1; - } -@@ -189,7 +189,7 @@ void emitJCLOptions(FILE *fp, int copies) - if ((attr = ppdFindAttr(ppd,buf,choices[i]->choice)) != NULL) { - fputs(attr->value,fp); - datawritten = 1; -- } else if (pdftoopvp) { -+ } else if (pdftopdfjcl) { - fprintf(fp,"%s=%s;", - ((ppd_option_t *)(choices[i]->option))->keyword, - choices[i]->choice); -diff --git a/filter/pdftoijs.cxx b/filter/pdftoijs.cxx -deleted file mode 100644 -index 4a93ef7..0000000 ---- a/filter/pdftoijs.cxx -+++ /dev/null -@@ -1,522 +0,0 @@ --/* --Copyright (c) 2008, BBR Inc. All rights reserved. -- (c) 2008 Tobias Hoffmann -- --Permission is hereby granted, free of charge, to any person obtaining --a copy of this software and associated documentation files (the --"Software"), to deal in the Software without restriction, including --without limitation the rights to use, copy, modify, merge, publish, --distribute, sublicense, and/or sell copies of the Software, and to --permit persons to whom the Software is furnished to do so, subject to --the following conditions: -- --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -- --THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY --CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE --SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- --*/ --/* -- pdftoijs.cc -- pdf to ijs filter --*/ -- --#include <config.h> --#include <stdio.h> --#include <stdlib.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include <goo/GooString.h> --#include <goo/gmem.h> --#include <Object.h> --#include <Stream.h> --#include <PDFDoc.h> --#include <SplashOutputDev.h> --#include <cups/cups.h> --#include <cups/ppd.h> --#include <stdarg.h> --#include "PDFError.h" --#include <GlobalParams.h> --#include <splash/SplashTypes.h> --#include <splash/SplashBitmap.h> --extern "C" { --#include <ijs/ijs.h> --#include <ijs/ijs_client.h> --} --#include <vector> --#include <string> -- --#define MAX_CHECK_COMMENT_LINES 20 -- --namespace { -- int exitCode = 0; -- char *outputfile = NULL; --// int deviceCopies = 1; --// bool deviceCollate = false; -- const char *ijsserver = NULL; -- int resolution[2] = {0,0}; -- enum ColEnum { NONE=-1, COL_RGB, COL_CMYK, COL_BLACK1, COL_WHITE1, COL_BLACK8, COL_WHITE8 } colspace=NONE; -- const char *devManu=NULL, *devModel=NULL; -- std::vector<std::pair<std::string,std::string> > params; -- -- ppd_file_t *ppd = 0; // holds the memory for the strings --} -- --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 --void CDECL myErrorFun(void *data, ErrorCategory category, --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- Goffset pos, const char *msg) --#else -- Goffset pos, char *msg) --#endif /* MAJOR > 0 || MINOR >= 70 */ --#else --void CDECL myErrorFun(void *data, ErrorCategory category, -- int pos, char *msg) --#endif --{ -- if (pos >= 0) { --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 -- fprintf(stderr, "ERROR (%lld): ", pos); --#else -- fprintf(stderr, "ERROR (%d): ", pos); --#endif -- } else { -- fprintf(stderr, "ERROR: "); -- } -- fprintf(stderr, "%s\n",msg); -- fflush(stderr); --} -- --/* parse "300 400" */ --void parse_resolution(const char *str) --{ -- const char *tmp=strchr(str,' '); -- if (tmp) { -- resolution[0]=atoi(str); -- resolution[1]=atoi(tmp+1); -- } else { -- resolution[0]=resolution[1]=atoi(str); -- } --} -- --/* parse "cmyk" "grey" "rgb" */ --void parse_colorspace(const char *str) --{ -- if (strcasecmp(str,"rgb")==0) { -- colspace=COL_RGB; -- } else if (strcasecmp(str,"black1")==0) { -- colspace=COL_BLACK1; -- } else if (strcasecmp(str,"white1")==0) { -- colspace=COL_WHITE1; -- } else if (strcasecmp(str,"black8")==0) { -- colspace=COL_BLACK8; -- } else if (strcasecmp(str,"white8")==0) { -- colspace=COL_WHITE8; --#ifdef SPLASH_CMYK -- } else if (strcasecmp(str,"cmyk")==0) { -- colspace=COL_CMYK; -- } else { -- pdfError(-1,"Unknown colorspace; supported are 'rgb', 'cmyk', 'white1', 'black1', 'white8', 'black8'"); --#else -- } else { -- pdfError(-1,"Unknown colorspace; supported are 'rgb', 'white1', 'black1', 'white8', 'black8'"); --#endif -- exit(1); -- } --} -- --std::string str_trim(const char *str,int len) --{ -- int start=strspn(str," \r\n\t"); -- for (len--;len>=0;len--) { -- if (!strchr(" \r\n\t",str[len])) { -- break; -- } -- } -- len++; -- if (start>=len) { -- return std::string(); -- } -- return std::string(str+start,len-start); --} -- --/* parse key=value */ --void parse_param(const char *str) --{ -- const char *eq=strchr(str,'='); -- if (!eq) { -- fprintf(stderr, "WARNING: ignored ijsParam without '='"); -- return; -- } -- params.push_back(make_pair(str_trim(str,eq-str),str_trim(eq+1,strlen(eq+1)))); --} -- --/* parse key1=value1,key2=value2,... */ --void parse_paramlist(const char *str) --{ -- std::string tmp; -- const char *cur=str; -- while (*cur) { -- tmp.clear(); -- for (;*cur;++cur) { -- if ( (*cur=='\\')&&(cur[1]) ) { -- ++cur; -- tmp.push_back(*cur); -- } else if(*cur==',') { -- ++cur; -- break; -- } else { -- tmp.push_back(*cur); -- } -- } -- parse_param(tmp.c_str()); -- } --} -- --void parseOpts(int argc, char **argv) --{ -- int num_options = 0; -- cups_option_t *options = 0; -- -- if (argc < 6 || argc > 7) { -- pdfError(-1,"%s job-id user title copies options [file]", -- argv[0]); -- exit(1); -- } -- -- assert(!ppd); -- ppd = ppdOpenFile(getenv("PPD")); -- ppdMarkDefaults(ppd); -- -- // handle *ijsServer, *ijsManufacturer, *ijsModel, *ijsColorspace -- ppd_attr_t *attr; -- if ((attr = ppdFindAttr(ppd,"ijsServer",0)) != 0) { -- ijsserver=attr->value; -- } -- if ((attr = ppdFindAttr(ppd,"ijsManufacturer",0)) != 0) { -- devManu=attr->value; -- } -- if ((attr = ppdFindAttr(ppd,"ijsModel",0)) != 0) { -- devModel=attr->value; -- } -- if ((attr = ppdFindAttr(ppd,"ijsColorspace",0)) != 0) { -- parse_colorspace(attr->value); -- } -- if ( (!ijsserver)||(!devManu)||(!devModel)||(colspace==NONE) ) { -- pdfError(-1,"ijsServer, ijsManufacturer, ijsModel and ijsColorspace must be specified in the PPD"); -- exit(1); -- } -- -- options = NULL; -- -- num_options = cupsParseOptions(argv[5],0,&options); --// cupsMarkOptions(ppd,num_options,options); // TODO? returns 1 on conflict -- // handle *ijsResolution, *ijsParam here -- char spec[PPD_MAX_NAME]; -- for (int iA=0;iA<num_options;iA++) { -- snprintf(spec,PPD_MAX_NAME,"%s=%s",options[iA].name,options[iA].value); -- if ((attr = ppdFindAttr(ppd,"ijsResolution",spec)) != 0) { -- parse_resolution(attr->value); -- } -- if ((attr = ppdFindAttr(ppd,"ijsParams",spec)) != 0) { -- parse_paramlist(attr->value); -- } -- if (strcmp(options[iA].name,"ijsOutputFile")==0) { -- outputfile=strdup(options[iA].value); -- } -- } -- if (!resolution[0]) { -- pdfError(-1,"ijsResolution must be specified"); -- exit(1); -- } -- cupsFreeOptions(num_options,options); --} -- --#if 0 --void parsePDFTOPDFComment(FILE *fp) --{ -- char buf[4096]; -- int i; -- -- /* skip until PDF start header */ -- while (fgets(buf,sizeof(buf),fp) != 0) { -- if (strncmp(buf,"%PDF",4) == 0) { -- break; -- } -- } -- for (i = 0;i < MAX_CHECK_COMMENT_LINES;i++) { -- if (fgets(buf,sizeof(buf),fp) == 0) break; -- if (strncmp(buf,"%%PDFTOPDFNumCopies",19) == 0) { -- char *p; -- -- p = strchr(buf+19,':'); -- deviceCopies = atoi(p+1); -- } else if (strncmp(buf,"%%PDFTOPDFCollate",17) == 0) { -- char *p; -- -- p = strchr(buf+17,':'); -- while (*p == ' ' || *p == '\t') p++; -- if (strncasecmp(p,"true",4) == 0) { -- deviceCollate = true; -- } else { -- deviceCollate = false; -- } -- } -- } --} --#endif -- --int main(int argc, char *argv[]) { -- PDFDoc *doc; -- SplashOutputDev *out; -- SplashColor paperColor; -- int i; -- int npages; -- IjsClientCtx *ctx=NULL; -- int job_id; -- enum SplashColorMode cmode; -- int rowpad; -- bool reverseVideo; -- -- setErrorCallback(::myErrorFun,NULL); -- globalParams = new GlobalParams(); -- parseOpts(argc, argv); -- -- if (argc == 6) { -- /* stdin */ -- int fd; -- char name[BUFSIZ]; -- char buf[BUFSIZ]; -- int n; -- -- fd = cupsTempFd(name,sizeof(name)); -- if (fd < 0) { -- pdfError(-1,"Can't create temporary file"); -- exit(1); -- } -- -- /* copy stdin to the tmp file */ -- while ((n = read(0,buf,BUFSIZ)) > 0) { -- if (write(fd,buf,n) != n) { -- pdfError(-1,"Can't copy stdin to temporary file"); -- close(fd); -- exit(1); -- } -- } -- close(fd); -- doc = new PDFDoc(new GooString(name)); -- /* remove name */ -- unlink(name); -- } else { -- GooString *fileName = new GooString(argv[6]); -- /* argc == 7 filenmae is specified */ -- FILE *fp; -- -- if ((fp = fopen(argv[6],"rb")) == 0) { -- pdfError(-1,"Can't open input file %s",argv[6]); -- exit(1); -- } --// parsePDFTOPDFComment(fp); // TODO? -- fclose(fp); -- doc = new PDFDoc(fileName,NULL,NULL); -- } -- -- if (!doc->isOk()) { -- exitCode = 1; -- goto err1; -- } -- -- char tmp[100]; -- tmp[99]=0; -- // ... OutputFD=stdout .. needs to be done before forking -- int outfd; -- outfd=dup(fileno(stdout)); -- --#if 0 -- /* fix NumCopies, Collate ccording to PDFTOPDFComments */ -- header.NumCopies = deviceCopies; -- header.Collate = deviceCollate ? CUPS_TRUE : CUPS_FALSE; -- /* fixed other values that pdftopdf handles */ -- header.MirrorPrint = CUPS_FALSE; -- header.Orientation = CUPS_ORIENT_0; --#endif -- -- job_id=atoi(argv[1]); -- ctx = ijs_invoke_server (ijsserver); -- ijs_client_open (ctx); -- ijs_client_begin_job (ctx,job_id); -- if (outputfile) { -- ijs_client_set_param(ctx,job_id,"OutputFile",outputfile,strlen(outputfile)); -- } else { -- snprintf(tmp,99,"%d",outfd); -- ijs_client_set_param(ctx,job_id,"OutputFD",tmp,strlen(tmp)); -- close(outfd); -- } -- ijs_client_set_param(ctx,job_id,"DeviceManufacturer",devManu,strlen(devManu)); -- ijs_client_set_param(ctx,job_id,"DeviceModel",devModel,strlen(devModel)); -- // TODO: get supported output-formats from ijs-server, overriding PPD -- -- /* set image's values */ -- int numChan,bitsPerSample; -- const char *devName; -- reverseVideo = false; -- switch (colspace) { -- case COL_RGB: -- numChan=3; -- bitsPerSample=8; -- cmode = splashModeRGB8; -- devName = "DeviceRGB"; -- rowpad = 3; -- /* set paper color white */ -- paperColor[0] = 255; -- paperColor[1] = 255; -- paperColor[2] = 255; -- break; -- case COL_BLACK1: -- reverseVideo = true; -- case COL_WHITE1: -- numChan=1; -- bitsPerSample=1; -- cmode = splashModeMono1; -- devName = "DeviceGray"; -- /* set paper color white */ -- paperColor[0] = 255; -- rowpad = 1; -- break; -- case COL_BLACK8: -- reverseVideo = true; -- case COL_WHITE8: -- numChan=1; -- bitsPerSample=8; -- cmode = splashModeMono8; -- devName = "DeviceGray"; -- /* set paper color white */ -- paperColor[0] = 255; -- rowpad = 1; -- break; --#ifdef SPLASH_CMYK -- case COL_CMYK: -- numChan=4; -- bitsPerSample=8; -- cmode = splashModeCMYK8; -- devName = "DeviceCMYK"; -- /* set paper color white */ -- paperColor[0] = 0; -- paperColor[1] = 0; -- paperColor[2] = 0; -- paperColor[3] = 0; -- rowpad = 4; -- break; --#endif -- default: -- pdfError(-1,"Specified ColorSpace is not supported"); -- exit(1); -- break; -- } -- -- out = new SplashOutputDev(cmode,rowpad/* row padding */, -- reverseVideo,paperColor,true --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 -- ,false --#endif -- ); -- out->startDoc(doc); -- -- snprintf(tmp,99,"%d",numChan); -- ijs_client_set_param(ctx,job_id,"NumChan",tmp,strlen(tmp)); -- snprintf(tmp,99,"%d",bitsPerSample); -- ijs_client_set_param(ctx,job_id,"BitsPerSample",tmp,strlen(tmp)); -- ijs_client_set_param(ctx,job_id,"ColorSpace",devName,strlen(devName)); -- snprintf(tmp,99,"%dx%d",resolution[0],resolution[1]); -- ijs_client_set_param(ctx,job_id,"Dpi",tmp,strlen(tmp)); -- -- { // set the custom ijs parameters -- const int plen=params.size(); -- for (i=0;i<plen;i++) { -- ijs_client_set_param(ctx,job_id,params[i].first.c_str(),params[i].second.c_str(),params[i].second.size()); -- } -- } -- -- npages = doc->getNumPages(); -- for (i = 1;i <= npages;i++) { -- SplashBitmap *bitmap; -- unsigned int size; -- -- doc->displayPage(out,i,resolution[0],resolution[1],0,false,false,false); -- bitmap = out->getBitmap(); -- -- /* set page parameters */ -- snprintf(tmp,99,"%d",bitmap->getWidth()); -- ijs_client_set_param(ctx,job_id,"Width",tmp,strlen(tmp)); -- snprintf(tmp,99,"%d",bitmap->getHeight()); -- ijs_client_set_param(ctx,job_id,"Height",tmp,strlen(tmp)); -- ijs_client_begin_page(ctx,job_id); -- -- /* write page image */ -- size = bitmap->getRowSize()*bitmap->getHeight(); -- int status=ijs_client_send_data_wait(ctx,job_id,(const char *)bitmap->getDataPtr(),size); -- if (status) { -- pdfError(-1,"Can't write page %d image: %d",i,status); -- exit(1); -- } -- -- status=ijs_client_end_page(ctx,job_id); -- if (status) { -- pdfError(-1,"Can't finish page %d: %d",i,status); -- exit(1); -- } -- } -- ijs_client_end_job (ctx, job_id); -- ijs_client_close (ctx); -- -- ijs_client_begin_cmd (ctx, IJS_CMD_EXIT); -- ijs_client_send_cmd_wait (ctx); -- -- delete out; --err1: -- delete doc; -- ppdClose(ppd); -- free(outputfile); -- --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 -- // Check for memory leaks -- Object::memCheck(stderr); -- gMemReport(stderr); --#endif -- -- return exitCode; --} -- --/* replace memory allocation methods for memory check */ --/* For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW -- * should be used as a guard, otherwise use traditional definition */ --#ifndef _GLIBCXX_THROW --#define _GLIBCXX_THROW throw --#endif -- --void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) --{ -- return gmalloc(size); --} -- --void operator delete(void *p) throw () --{ -- gfree(p); --} -- --void * operator new[](size_t size) _GLIBCXX_THROW (std::bad_alloc) --{ -- return gmalloc(size); --} -- --void operator delete[](void *p) throw () --{ -- gfree(p); --} -diff --git a/filter/pdftoopvp/99pdftoopvp.conf b/filter/pdftoopvp/99pdftoopvp.conf -deleted file mode 100644 -index 2737e17..0000000 ---- a/filter/pdftoopvp/99pdftoopvp.conf -+++ /dev/null -@@ -1,18 +0,0 @@ --<?xml version="1.0"?> --<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> --<!-- conf.d/pdftoopvp.fconf --> --<fontconfig> --<!-- Symbol and ZapfDingbats --> -- <alias> -- <family>ZapfDingbats</family> -- <prefer> -- <family>Dingbats</family> -- </prefer> -- </alias> -- <alias> -- <family>Symbol</family> -- <prefer> -- <family>Standard Symbols L</family> -- </prefer> -- </alias> --</fontconfig> -diff --git a/filter/pdftoopvp/OPVPError.h b/filter/pdftoopvp/OPVPError.h -deleted file mode 100644 -index 4550949..0000000 ---- a/filter/pdftoopvp/OPVPError.h -+++ /dev/null -@@ -1,40 +0,0 @@ --/* -- --Copyright (c) 2012, BBR Inc. All rights reserved. -- --Permission is hereby granted, free of charge, to any person obtaining --a copy of this software and associated documentation files (the --"Software"), to deal in the Software without restriction, including --without limitation the rights to use, copy, modify, merge, publish, --distribute, sublicense, and/or sell copies of the Software, and to --permit persons to whom the Software is furnished to do so, subject to --the following conditions: -- --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -- --THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY --CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE --SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- --*/ --/* -- OPVPError.h --*/ --#ifndef _OPVPERROR_H_ --#define _OPVPERROR_H_ -- --#include <config.h> --#include <stdarg.h> --#include <Error.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#define opvpError(pos,...) error(errInternal,pos,__VA_ARGS__) -- --#endif -diff --git a/filter/pdftoopvp/OPVPOutputDev.cxx b/filter/pdftoopvp/OPVPOutputDev.cxx -deleted file mode 100644 -index 2526714..0000000 ---- a/filter/pdftoopvp/OPVPOutputDev.cxx -+++ /dev/null -@@ -1,1948 +0,0 @@ --// --// OPVPOutputDev.cc --// Based SplashOutputDev.cc : Copyright 2003 Glyph & Cog, LLC --// --// Copyright 2005 AXE,Inc. --// --// 2007,2008 Modified by BBR Inc. --//======================================================================== -- --#include <config.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#ifdef USE_GCC_PRAGMAS --#pragma implementation --#endif -- --#include <string.h> --#include <math.h> --#include "goo/gfile.h" --#include "GlobalParams.h" --#include "OPVPError.h" --#include "Object.h" --#include "GfxState.h" --#include "GfxFont.h" --#include "Link.h" --#include "CharCodeToUnicode.h" --#include "FontEncodingTables.h" --#include "fofi/FoFiTrueType.h" --#include "splash/SplashMath.h" --#include "CMap.h" --#include "splash/SplashBitmap.h" --#include "splash/SplashGlyphBitmap.h" --#include "splash/SplashPattern.h" --#include "splash/SplashScreen.h" --#include "splash/SplashErrorCodes.h" --#include "splash/SplashFontEngine.h" --#include "splash/SplashFont.h" --#include "splash/SplashFontFile.h" --#include "splash/SplashFontFileID.h" --#include "OPVPSplashPath.h" --#include "OPVPSplashState.h" --#include "OPRS.h" --#include "OPVPOutputDev.h" -- --#define SLICE_FOR_PATTERN 1000 -- --//------------------------------------------------------------------------ --// Font substitutions --//------------------------------------------------------------------------ -- --struct SplashOutFontSubst { -- char *name; -- double mWidth; --}; -- --//------------------------------------------------------------------------ -- --#define soutRound(x) ((int)(x + 0.5)) -- --//------------------------------------------------------------------------ --// SplashOutFontFileID --//------------------------------------------------------------------------ -- --class SplashOutFontFileID: public SplashFontFileID { --public: -- -- SplashOutFontFileID(const Ref *rA) { r = *rA; substIdx = -1; } -- -- ~SplashOutFontFileID() {} -- -- bool matches(SplashFontFileID *id) { -- return ((SplashOutFontFileID *)id)->r.num == r.num && -- ((SplashOutFontFileID *)id)->r.gen == r.gen; -- } -- -- void setSubstIdx(int substIdxA) { substIdx = substIdxA; } -- int getSubstIdx() { return substIdx; } -- --private: -- -- Ref r; -- int substIdx; --}; -- --//------------------------------------------------------------------------ --// T3FontCache --//------------------------------------------------------------------------ -- --struct T3FontCacheTag { -- Gushort code; -- Gushort mru; // valid bit (0x8000) and MRU index --}; -- --class T3FontCache { --public: -- -- T3FontCache(Ref *fontID, double m11A, double m12A, -- double m21A, double m22A, -- int glyphXA, int glyphYA, int glyphWA, int glyphHA, -- bool aa); -- ~T3FontCache(); -- bool matches(Ref *idA, double m11A, double m12A, -- double m21A, double m22A) -- { return fontID.num == idA->num && fontID.gen == idA->gen && -- m11 == m11A && m12 == m12A && m21 == m21A && m22 == m22A; } -- -- Ref fontID; // PDF font ID -- double m11, m12, m21, m22; // transform matrix -- int glyphX, glyphY; // pixel offset of glyph bitmaps -- int glyphW, glyphH; // size of glyph bitmaps, in pixels -- int glyphSize; // size of glyph bitmaps, in bytes -- int cacheSets; // number of sets in cache -- int cacheAssoc; // cache associativity (glyphs per set) -- Guchar *cacheData; // glyph pixmap cache -- T3FontCacheTag *cacheTags; // cache tags, i.e., char codes --}; -- --T3FontCache::T3FontCache(Ref *fontIDA, double m11A, double m12A, -- double m21A, double m22A, -- int glyphXA, int glyphYA, int glyphWA, int glyphHA, -- bool aa) { -- int i; -- -- fontID = *fontIDA; -- m11 = m11A; -- m12 = m12A; -- m21 = m21A; -- m22 = m22A; -- glyphX = glyphXA; -- glyphY = glyphYA; -- glyphW = glyphWA; -- glyphH = glyphHA; -- if (aa) { -- glyphSize = glyphW * glyphH; -- } else { -- glyphSize = ((glyphW + 7) >> 3) * glyphH; -- } -- cacheAssoc = 8; -- if (glyphSize <= 256) { -- cacheSets = 8; -- } else if (glyphSize <= 512) { -- cacheSets = 4; -- } else if (glyphSize <= 1024) { -- cacheSets = 2; -- } else { -- cacheSets = 1; -- } -- cacheData = (Guchar *)gmallocn3(cacheSets , cacheAssoc , glyphSize); -- cacheTags = (T3FontCacheTag *)gmallocn3(cacheSets , cacheAssoc , -- sizeof(T3FontCacheTag)); -- for (i = 0; i < cacheSets * cacheAssoc; ++i) { -- cacheTags[i].mru = i & (cacheAssoc - 1); -- } --} -- --T3FontCache::~T3FontCache() { -- gfree(cacheData); -- gfree(cacheTags); --} -- --struct T3GlyphStack { -- Gushort code; // character code -- double x, y; // position to draw the glyph -- -- //----- cache info -- T3FontCache *cache; // font cache for the current font -- T3FontCacheTag *cacheTag; // pointer to cache tag for the glyph -- Guchar *cacheData; // pointer to cache data for the glyph -- -- //----- saved state -- SplashBitmap *origBitmap; -- OPRS *origOPRS; -- double origCTM4, origCTM5; -- -- T3GlyphStack *next; // next object on stack --}; -- --//------------------------------------------------------------------------ --// OPVPOutputDev --//------------------------------------------------------------------------ -- --OPVPOutputDev::OPVPOutputDev() --{ -- xref = 0; -- bitmap = 0; -- fontEngine = 0; -- nT3Fonts = 0; -- t3GlyphStack = 0; -- font = NULL; -- needFontUpdate = false; -- textClipPath = 0; -- underlayCbk = 0; -- underlayCbkData = 0; -- scaleWidth = scaleHeight = -1; -- leftMargin = 0; -- bottomMargin = 0; -- rotate = 0; -- sliceHeight = 0; -- yoffset = 0; -- oprs = 0; --} -- --void OPVPOutputDev::setScale(double w, double h, -- double leftMarginA, double bottomMarginA, int rotateA, -- int yoffsetA, int sliceHeightA) --{ -- scaleWidth = w; -- scaleHeight = h; -- leftMargin = leftMarginA; -- bottomMargin = bottomMarginA; -- rotate = rotateA; -- yoffset = yoffsetA; -- sliceHeight = sliceHeightA; --} -- --int OPVPOutputDev::init(SplashColorMode colorModeA, -- bool colorProfile, -- bool reverseVideoA, -- SplashColor paperColorA, -- const char *driverName, -- int outputFD, -- const char *printerModel, -- int nOptions, -- const char *optionKeys[], -- const char *optionVals[]) { -- int result; -- -- oprs = new OPRS(); -- -- if ((result = oprs->init(driverName, outputFD, printerModel, -- nOptions,optionKeys,optionVals)) < 0) { -- opvpError(-1,"OPRS initialization fail"); -- return result; -- } -- colorMode = colorModeA; -- if ((result = oprs->setColorMode(colorMode,colorProfile)) < 0) { -- opvpError(-1,"Can't setColorMode"); -- return result; -- } -- reverseVideo = reverseVideoA; -- splashColorCopy(paperColor,paperColorA); -- -- return 0; --} -- --OPVPOutputDev::~OPVPOutputDev() { -- int i; -- -- for (i = 0; i < nT3Fonts; ++i) { -- delete t3FontCache[i]; -- } -- if (fontEngine) { -- delete fontEngine; -- } -- if (oprs) { -- delete oprs; -- } -- if (bitmap) { -- delete bitmap; -- } --} -- --void OPVPOutputDev::startDoc(XRef *xrefA) { -- int i; -- -- xref = xrefA; -- if (fontEngine) { -- delete fontEngine; -- } -- fontEngine = new SplashFontEngine( --#if HAVE_T1LIB_H -- globalParams->getEnableT1lib(), --#endif --#if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H -- globalParams->getEnableFreeType(), -- false, -- false, --#endif --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 -- globalParams->getAntialias()); --#else -- false); --#endif -- for (i = 0; i < nT3Fonts; ++i) { -- delete t3FontCache[i]; -- } -- nT3Fonts = 0; --} -- --void OPVPOutputDev::startPage(int pageNum, GfxState *state) { -- int w, h; -- -- if (state) { -- if (scaleWidth > 0 && scaleHeight > 0) { -- const double *ctm = state->getCTM(); -- -- switch (rotate) { -- case 90: -- state->setCTM(0,ctm[1],ctm[2],0,leftMargin,bottomMargin-yoffset); -- break; -- case 180: -- state->setCTM(ctm[0],0,0,ctm[3],paperWidth-leftMargin, -- bottomMargin-yoffset); -- break; -- case 270: -- state->setCTM(0,ctm[1],ctm[2],0,paperWidth-leftMargin, -- -bottomMargin+paperHeight-yoffset); -- break; -- default: -- state->setCTM(ctm[0],0,0,ctm[3],leftMargin, -- -bottomMargin+paperHeight-yoffset); -- break; -- } -- state->concatCTM(scaleWidth,0.0,0.0,scaleHeight,0,0); -- } -- w = (int)(state->getPageWidth()+0.5); -- h = (int)(state->getPageHeight()+0.5); -- } else { -- w = h = 1; -- } -- oprs->initGS(colorMode,w,h,paperColor); -- -- if (underlayCbk) { -- (*underlayCbk)(underlayCbkData); -- } --} -- --void OPVPOutputDev::endPage() { -- oprs->endPage(); --} -- --void OPVPOutputDev::saveState(GfxState *state) { -- oprs->saveState(); --} -- --void OPVPOutputDev::restoreState(GfxState *state) { -- oprs->restoreState(); -- needFontUpdate = true; --} -- --void OPVPOutputDev::updateAll(GfxState *state) { -- updateLineDash(state); -- updateLineJoin(state); -- updateLineCap(state); -- updateLineWidth(state); -- updateFlatness(state); -- updateMiterLimit(state); -- updateFillColor(state); -- updateStrokeColor(state); -- needFontUpdate = true; --} -- --void OPVPOutputDev::updateCTM(GfxState *state, double m11, double m12, -- double m21, double m22, -- double m31, double m32) { -- updateLineDash(state); -- updateLineJoin(state); -- updateLineCap(state); -- updateLineWidth(state); --} -- --void OPVPOutputDev::transLineDash(GfxState *state, SplashCoord **adash, -- int *adashLength, SplashCoord *aphase) { -- double *dashPattern; -- double dashStart; -- static SplashCoord dash[20]; -- int i; -- -- state->getLineDash(&dashPattern, adashLength, &dashStart); -- if (*adashLength > 20) { -- *adashLength = 20; -- } -- for (i = 0; i < *adashLength; ++i) { -- dash[i] = (SplashCoord)state->transformWidth(dashPattern[i]); -- if (dash[i] < 1) { -- dash[i] = 1; -- } -- } -- *adash = dash; -- *aphase = (SplashCoord)state->transformWidth(dashStart); --} -- --void OPVPOutputDev::updateSplashLineDash(GfxState *state, Splash *splash) { -- int dashLength; -- SplashCoord *dash; -- SplashCoord phase; -- -- transLineDash(state, &dash, &dashLength, &phase); -- splash->setLineDash(dash, dashLength, phase); --} -- --void OPVPOutputDev::updateLineDash(GfxState *state) { -- int dashLength; -- SplashCoord *dash; -- SplashCoord phase; -- -- transLineDash(state, &dash, &dashLength, &phase); -- oprs->setLineDash(dash, dashLength, phase); --} -- --void OPVPOutputDev::updateFlatness(GfxState *state) { -- oprs->setFlatness(state->getFlatness()); --} -- --void OPVPOutputDev::updateLineJoin(GfxState *state) { -- oprs->setLineJoin(state->getLineJoin()); --} -- --void OPVPOutputDev::updateLineCap(GfxState *state) { -- oprs->setLineCap(state->getLineCap()); --} -- --void OPVPOutputDev::updateMiterLimit(GfxState *state) { -- oprs->setMiterLimit(state->getMiterLimit()); --} -- --void OPVPOutputDev::updateLineWidth(GfxState *state) { -- oprs->setLineWidth(state->getTransformedLineWidth()); --} -- --void OPVPOutputDev::updateFillColor(GfxState *state) { -- GfxGray gray; -- GfxRGB rgb; -- -- state->getFillGray(&gray); -- state->getFillRGB(&rgb); -- oprs->setFillPattern(getColor(gray, &rgb)); --} -- --void OPVPOutputDev::updateStrokeColor(GfxState *state) { -- GfxGray gray; -- GfxRGB rgb; -- -- state->getStrokeGray(&gray); -- state->getStrokeRGB(&rgb); -- oprs->setStrokePattern(getColor(gray, &rgb)); --} -- --#ifdef SPLASH_CMYK --SplashPattern *OPVPOutputDev::getColor(double gray, GfxRGB *rgb, -- GfxCMYK *cmyk) { --#else --SplashPattern *OPVPOutputDev::getColor(GfxGray gray, GfxRGB *rgb) { --#endif -- SplashPattern *pattern; -- SplashColor color1; -- GfxColorComp r, g, b; -- -- if (reverseVideo) { -- gray = gfxColorComp1 - gray; -- r = gfxColorComp1 - rgb->r; -- g = gfxColorComp1 - rgb->g; -- b = gfxColorComp1 - rgb->b; -- } else { -- r = rgb->r; -- g = rgb->g; -- b = rgb->b; -- } -- -- pattern = NULL; // make gcc happy -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- color1[0] = colToByte(gray); -- pattern = new SplashSolidColor(color1); -- break; -- case splashModeRGB8: -- color1[0] = colToByte(r); -- color1[1] = colToByte(g); -- color1[2] = colToByte(b); -- pattern = new SplashSolidColor(color1); -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- color[0] = colToByte(cmyk->c); -- color[1] = colToByte(cmyk->m); -- color[2] = colToByte(cmyk->y); -- color[3] = colToByte(cmyk->k); -- pattern = new SplashSolidColor(color); -- break; --#endif -- default: -- opvpError(-1, "no supported color mode"); -- break; -- } -- -- return pattern; --} -- --void OPVPOutputDev::updateFont(GfxState *state) { -- needFontUpdate = true; --} -- --void OPVPOutputDev::doUpdateFont(GfxState *state) { -- GfxFont *gfxFont; -- GfxFontType fontType; -- SplashOutFontFileID *id; -- SplashFontFile *fontFile; -- SplashFontSrc *fontsrc = NULL; -- const char *fontName = "(unnamed)"; -- FoFiTrueType *ff; -- Ref embRef; -- Object refObj, strObj; -- GooString *fileName; -- char *tmpBuf; -- int tmpBufLen; -- int *codeToGID; -- double m11, m12, m21, m22; -- int n; -- int faceIndex = 0; -- bool recreateFont = false; -- -- needFontUpdate = false; -- font = NULL; -- fileName = NULL; -- tmpBuf = NULL; -- -- if (!(gfxFont = state->getFont())) { -- goto err1; -- } -- fontType = gfxFont->getType(); -- if (fontType == fontType3) { -- goto err1; -- } -- -- // check the font file cache -- id = new SplashOutFontFileID(gfxFont->getID()); -- if ((fontFile = fontEngine->getFontFile(id))) { -- delete id; -- -- } else { -- if (gfxFont->getName()) { --#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 -- fontName = gfxFont->getName()->getCString(); --#else -- fontName = gfxFont->getName()->c_str(); --#endif -- } -- -- // if there is an embedded font, write it to disk -- if (gfxFont->getEmbeddedFontID(&embRef)) { -- tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen); -- if (! tmpBuf) -- goto err2; -- -- } else { -- SysFontType sftype; -- fileName = globalParams->findSystemFontFile(gfxFont,&sftype, -- &faceIndex, NULL); -- if (fileName == 0) { -- opvpError(-1, "Couldn't find a font for '%s'", fontName); -- goto err2; -- } -- switch (sftype) { -- case sysFontPFA: -- case sysFontPFB: -- fontType = gfxFont->isCIDFont() ? fontCIDType0 : fontType1; -- break; -- case sysFontTTF: -- case sysFontTTC: -- fontType = gfxFont->isCIDFont() ? fontCIDType2 : fontTrueType; -- break; -- } -- } -- -- fontsrc = new SplashFontSrc; -- if (fileName) -- fontsrc->setFile(fileName, false); -- else -- fontsrc->setBuf(tmpBuf, tmpBufLen, true); -- -- // load the font file -- switch (fontType) { -- case fontType1: -- if (!(fontFile = fontEngine->loadType1Font( -- id, -- fontsrc, -- (const char **) -- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontType1C: -- if (!(fontFile = fontEngine->loadType1CFont( -- id, -- fontsrc, -- (const char **) -- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontType1COT: -- if (!(fontFile = fontEngine->loadOpenTypeT1CFont( -- id, -- fontsrc, -- (const char **) -- ((Gfx8BitFont *)gfxFont)->getEncoding()))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontTrueTypeOT: -- case fontTrueType: -- if (fileName) --#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 -- ff = FoFiTrueType::load(fileName->getCString()); --#else -- ff = FoFiTrueType::load(fileName->c_str()); --#endif -- else -- ff = FoFiTrueType::make(tmpBuf, tmpBufLen); -- if (ff) { -- codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff); -- n = 256; -- delete ff; -- } else { -- codeToGID = NULL; -- n = 0; -- } -- if (!(fontFile = fontEngine->loadTrueTypeFont( -- id, -- fontsrc, -- codeToGID, n))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontCIDType0: -- case fontCIDType0C: -- if (!(fontFile = fontEngine->loadCIDFont( -- id, -- fontsrc))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontCIDType0COT: -- n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); -- if (n) { -- codeToGID = (int *)gmallocn(n, sizeof(int)); -- memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), -- n * sizeof(int)); -- } else { -- codeToGID = NULL; -- } -- if (!(fontFile = fontEngine->loadOpenTypeCFFFont( -- id, -- fontsrc,codeToGID,n))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- case fontCIDType2OT: -- case fontCIDType2: -- codeToGID = NULL; -- n = 0; -- if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { -- n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); -- if (n) { -- codeToGID = (int *)gmallocn(n, sizeof(int)); -- memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), -- n * sizeof(int)); -- } -- } else { -- if (fileName) --#if POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 71 -- ff = FoFiTrueType::load(fileName->getCString()); --#else -- ff = FoFiTrueType::load(fileName->c_str()); --#endif -- else -- ff = FoFiTrueType::make(tmpBuf, tmpBufLen); -- if (! ff) -- goto err2; -- codeToGID = ((GfxCIDFont *)gfxFont)->getCodeToGIDMap(ff, &n); -- delete ff; -- } -- if (!(fontFile = fontEngine->loadTrueTypeFont( -- id, -- fontsrc, -- codeToGID, n, faceIndex))) { -- opvpError(-1, "Couldn't create a font for '%s'", fontName); -- goto err2; -- } -- break; -- default: -- // this shouldn't happen -- goto err2; -- } -- fontFile->doAdjustMatrix = true; -- } -- -- // get the font matrix -- state->getFontTransMat(&m11, &m12, &m21, &m22); -- m11 *= state->getHorizScaling(); -- m12 *= state->getHorizScaling(); -- -- // create the scaled font -- fontMat[0] = m11; fontMat[1] = m12; -- fontMat[2] = m21; fontMat[3] = m22; -- font = fontEngine->getFont(fontFile, fontMat, oprs->getMatrix()); -- -- // for substituted fonts: adjust the font matrix -- compare the -- // width of 'm' in the original font and the substituted font -- if (fontFile->doAdjustMatrix && !gfxFont->isCIDFont()) { -- double w1, w2; -- CharCode code; -- const char *name; -- for (code = 0; code < 256; ++code) { -- if ((name = ((Gfx8BitFont *)gfxFont)->getCharName(code)) && -- name[0] == 'm' && name[1] == '\0') { -- break; -- } -- } -- if (code < 256) { -- w1 = ((Gfx8BitFont *)gfxFont)->getWidth(code); -- w2 = font->getGlyphAdvance(code); -- if (!gfxFont->isSymbolic() && w2 > 0) { -- // if real font is substantially narrower than substituted -- // font, reduce the font size accordingly -- if (w1 > 0.01 && w1 < 0.9 * w2) { -- w1 /= w2; -- m11 *= w1; -- m21 *= w1; -- recreateFont = true; -- } -- } -- } -- } -- -- if (recreateFont) -- { -- fontMat[0] = m11; fontMat[1] = m12; -- fontMat[2] = m21; fontMat[3] = m22; -- font = fontEngine->getFont(fontFile, fontMat, oprs->getMatrix()); -- } -- -- if (fontsrc && !fontsrc->isFile) -- fontsrc->unref(); -- return; -- -- err2: -- delete id; -- err1: -- if (fontsrc && !fontsrc->isFile) -- fontsrc->unref(); -- return; --} -- --void OPVPOutputDev::stroke(GfxState *state) { -- OPVPSplashPath *path; -- GfxColorSpace *cs; -- -- /* check None separate color */ -- if ((cs = state->getStrokeColorSpace()) == NULL) return; -- if (cs->getMode() == csSeparation) { -- GooString *name; -- -- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); -- if (name == NULL) return; -- if (name->cmp("None") == 0) return; -- } -- -- path = convertPath(state, state->getPath()); -- oprs->stroke(path); -- delete path; --} -- --void OPVPOutputDev::fill(GfxState *state) { -- OPVPSplashPath *path; -- GfxColorSpace *cs; -- -- /* check None separate color */ -- if ((cs = state->getFillColorSpace()) == NULL) return; -- if (cs->getMode() == csSeparation) { -- GooString *name; -- -- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); -- if (name == NULL) return; -- if (name->cmp("None") == 0) return; -- } -- -- path = convertPath(state, state->getPath()); -- oprs->fill(path, false); -- delete path; --} -- --void OPVPOutputDev::eoFill(GfxState *state) { -- OPVPSplashPath *path; -- GfxColorSpace *cs; -- -- /* check None separate color */ -- if ((cs = state->getFillColorSpace()) == NULL) return; -- if (cs->getMode() == csSeparation) { -- GooString *name; -- -- name = (dynamic_cast<GfxSeparationColorSpace *>(cs))->getName(); -- if (name == NULL) return; -- if (name->cmp("None") == 0) return; -- } -- -- path = convertPath(state, state->getPath()); -- oprs->fill(path, true); -- delete path; --} -- --void OPVPOutputDev::clip(GfxState *state) { -- OPVPSplashPath *path; -- -- path = convertPath(state, state->getPath()); -- oprs->clipToPath(path, false); -- delete path; --} -- --void OPVPOutputDev::eoClip(GfxState *state) { -- OPVPSplashPath *path; -- -- path = convertPath(state, state->getPath()); -- oprs->clipToPath(path, true); -- delete path; --} -- --OPVPSplashPath *OPVPOutputDev::bitmapToPath(SplashBitmap *bitmapA, -- int width, int height) --{ -- int x,y; -- OPVPSplashPath *path; -- int x1, x2; -- SplashColor pix; -- -- path = new OPVPSplashPath(); -- -- for (y = 0;y < height;y++) { -- for (x = 0;x < width;x++) { -- bitmapA->getPixel(x,y,pix); -- if (pix[0] == 0) { -- /* start */ -- x1 = x; -- for (x++;x < width;x++) { -- bitmapA->getPixel(x,y,pix); -- if (pix[0] != 0) { -- /* end */ -- break; -- } -- } -- x2 = x-1; -- path->moveTo(x1,y); -- path->lineTo(x2,y); -- path->lineTo(x2,(y+1)); -- path->lineTo(x1,(y+1)); -- path->close(); -- } -- } -- } -- return path; --} -- --void OPVPOutputDev::clipToStrokePath(GfxState *state) { -- SplashBitmap *tbitmap; -- Splash *tsplash; -- SplashPath *spath; -- OPVPSplashPath *path, *path2; -- -- // use splash for makeStrokePath -- // create dummy bitmap for creating splash -- tbitmap = new SplashBitmap(1, 1, 1, splashModeMono1, false); -- tsplash = new Splash(tbitmap, false); -- // set line parameters -- // except colors -- updateSplashLineDash(state, tsplash); -- tsplash->setLineJoin(state->getLineJoin()); -- tsplash->setLineCap(state->getLineCap()); -- tsplash->setMiterLimit(state->getMiterLimit()); -- tsplash->setLineWidth(state->getTransformedLineWidth()); -- -- path = convertPath(state, state->getPath()); -- spath = tsplash->makeStrokePath(path,0); -- path2 = new OPVPSplashPath(spath); -- delete spath; -- delete path; -- delete tsplash; -- delete tbitmap; -- oprs->clipToPath(path2, false); -- delete path2; --} -- --OPVPSplashPath *OPVPOutputDev::convertPath(GfxState *state, GfxPath *path) { -- OPVPSplashPath *sPath; -- GfxSubpath *subpath; -- double x1, y1, x2, y2, x3, y3; -- int i, j; -- -- sPath = new OPVPSplashPath(); -- for (i = 0; i < path->getNumSubpaths(); ++i) { -- subpath = path->getSubpath(i); -- if (subpath->getNumPoints() > 0) { -- state->transform(subpath->getX(0), subpath->getY(0), &x1, &y1); -- sPath->moveTo((SplashCoord)x1, (SplashCoord)y1); -- j = 1; -- while (j < subpath->getNumPoints()) { -- if (subpath->getCurve(j)) { -- state->transform(subpath->getX(j), subpath->getY(j), &x1, &y1); -- state->transform(subpath->getX(j+1), subpath->getY(j+1), &x2, &y2); -- state->transform(subpath->getX(j+2), subpath->getY(j+2), &x3, &y3); -- sPath->curveTo((SplashCoord)x1, (SplashCoord)y1, -- (SplashCoord)x2, (SplashCoord)y2, -- (SplashCoord)x3, (SplashCoord)y3); -- j += 3; -- } else { -- state->transform(subpath->getX(j), subpath->getY(j), &x1, &y1); -- sPath->lineTo((SplashCoord)x1, (SplashCoord)y1); -- ++j; -- } -- } -- if (subpath->isClosed()) { -- sPath->close(); -- } -- } -- } -- return sPath; --} -- --void OPVPOutputDev::drawChar(GfxState *state, double x, double y, -- double dx, double dy, -- double originX, double originY, -- CharCode code, int nBytes, -- Unicode *u, int uLen) { -- double x1, y1; -- SplashPath *spath; -- OPVPSplashPath *path; -- int render; -- -- // check for invisible text -- this is used by Acrobat Capture -- render = state->getRender(); -- if (render == 3) { -- return; -- } -- -- if (needFontUpdate) { -- doUpdateFont(state); -- } -- if (!font) { -- return; -- } -- -- x -= originX; -- y -= originY; -- state->transform(x,y,&x1,&y1); -- -- // fill -- if (!(render & 1)) { -- oprs->fillChar((SplashCoord)x1, (SplashCoord)y1, code, font, u, fontMat); -- } -- -- // stroke -- if ((render & 3) == 1 || (render & 3) == 2) { -- if ((spath = font->getGlyphPath(code))) { -- path = new OPVPSplashPath(spath); -- delete spath; -- path->closeAllSubPath(); -- path->offset((SplashCoord)x1, (SplashCoord)y1); -- oprs->stroke(path); -- delete path; -- } else { -- opvpError(-1,"No glyph outline infomation"); -- } -- } -- -- // clip -- if (render & 4) { -- if ((spath = font->getGlyphPath(code)) != NULL) { -- path = new OPVPSplashPath(spath); -- delete spath; -- path->offset((SplashCoord)x1, (SplashCoord)y1); -- if (textClipPath) { -- textClipPath->append(path); -- delete path; -- } else { -- textClipPath = path; -- } -- } else { -- opvpError(-1,"No glyph outline infomation"); -- } -- } --} -- --bool OPVPOutputDev::beginType3Char(GfxState *state, double x, double y, -- double dx, double dy, -- CharCode code, Unicode *u, int uLen) { -- /* In a vector mode, cache is not needed */ -- return false; --} -- --void OPVPOutputDev::endType3Char(GfxState *state) { -- /* In a vector mode, cache is not needed */ -- /* do nothing */ --} -- --void OPVPOutputDev::type3D0(GfxState *state, double wx, double wy) { -- /* In a vector mode, cache is not needed */ -- /* do nothing */ --} -- --void OPVPOutputDev::type3D1(GfxState *state, double wx, double wy, -- double llx, double lly, double urx, double ury) { --} -- --void OPVPOutputDev::drawType3Glyph(T3FontCache *t3Font, -- T3FontCacheTag *tag, Guchar *data, -- double x, double y) { -- SplashGlyphBitmap glyph; -- -- glyph.x = -t3Font->glyphX; -- glyph.y = -t3Font->glyphY; -- glyph.w = t3Font->glyphW; -- glyph.h = t3Font->glyphH; -- glyph.aa = colorMode != splashModeMono1; -- glyph.data = data; -- glyph.freeData = false; -- oprs->fillGlyph((SplashCoord)x, (SplashCoord)y, &glyph); --} -- --void OPVPOutputDev::endTextObject(GfxState *state) { -- if (textClipPath) { -- oprs->clipToPath(textClipPath, false); -- delete textClipPath; -- textClipPath = NULL; -- } --} -- --struct SplashOutImageMaskData { -- ImageStream *imgStr; -- bool invert; -- int width, height, y; --}; -- --bool OPVPOutputDev::imageMaskSrc(void *data, SplashColorPtr line) { -- SplashOutImageMaskData *imgMaskData = (SplashOutImageMaskData *)data; -- Guchar *p; -- SplashColorPtr q; -- int x; -- -- if (imgMaskData->y == imgMaskData->height) { -- return false; -- } -- for (x = 0, p = imgMaskData->imgStr->getLine(), q = line; -- x < imgMaskData->width; -- ++x) { -- *q++ = *p++ ^ imgMaskData->invert; -- } -- ++imgMaskData->y; -- return true; --} -- --void OPVPOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, -- int width, int height, bool invert, -- bool interpolate, -- bool inlineImg) { -- const double *ctm; -- SplashCoord mat[6]; -- SplashOutImageMaskData imgMaskData; -- -- ctm = state->getCTM(); -- mat[0] = ctm[0]; -- mat[1] = ctm[1]; -- mat[2] = -ctm[2]; -- mat[3] = -ctm[3]; -- mat[4] = ctm[2] + ctm[4]; -- mat[5] = ctm[3] + ctm[5]; -- -- imgMaskData.imgStr = new ImageStream(str, width, 1, 1); -- imgMaskData.imgStr->reset(); -- imgMaskData.invert = invert ? 0 : 1; -- imgMaskData.width = width; -- imgMaskData.height = height; -- imgMaskData.y = 0; -- -- oprs->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, -- t3GlyphStack != NULL); -- if (inlineImg) { -- while (imgMaskData.y < height) { -- imgMaskData.imgStr->getLine(); -- ++imgMaskData.y; -- } -- } -- -- delete imgMaskData.imgStr; --} -- --struct SplashOutImageData { -- ImageStream *imgStr; -- GfxImageColorMap *colorMap; -- SplashColorPtr lookup; -- int *maskColors; -- SplashColorMode colorMode; -- int width, height, y; --}; -- --bool OPVPOutputDev::imageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine) --{ -- SplashOutImageData *imgData = (SplashOutImageData *)data; -- Guchar *p; -- SplashColorPtr q, col; -- GfxRGB rgb; -- GfxGray gray; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- int nComps, x; -- -- if (imgData->y == imgData->height) { -- return false; -- } -- -- nComps = imgData->colorMap->getNumPixelComps(); -- -- if (imgData->lookup) { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, ++p) { -- *q++ = imgData->lookup[*p]; -- } -- break; -- case splashModeRGB8: -- case splashModeBGR8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, ++p) { -- col = &imgData->lookup[3 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- } -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, ++p) { -- col = &imgData->lookup[4 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- *q++ = col[3]; -- } -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } else { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- imgData->colorMap->getGray(p, &gray); -- *q++ = colToByte(gray); -- } -- break; -- case splashModeRGB8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = colToByte(rgb.r); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.b); -- } -- break; -- case splashModeBGR8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = colToByte(rgb.b); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.r); -- } -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- imgData->colorMap->getCMYK(p, &cmyk); -- *q++ = colToByte(cmyk.c); -- *q++ = colToByte(cmyk.m); -- *q++ = colToByte(cmyk.y); -- *q++ = colToByte(cmyk.k); -- } -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- -- ++imgData->y; -- return true; --} -- --bool OPVPOutputDev::alphaImageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine) { -- SplashOutImageData *imgData = (SplashOutImageData *)data; -- Guchar *p; -- SplashColorPtr q, col; -- GfxRGB rgb; -- GfxGray gray; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- Guchar alpha; -- int nComps, x, i; -- -- if (imgData->y == imgData->height) { -- return false; -- } -- -- nComps = imgData->colorMap->getNumPixelComps(); -- -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- alpha = 0; -- for (i = 0; i < nComps; ++i) { -- if (p[i] < imgData->maskColors[2*i] || -- p[i] > imgData->maskColors[2*i+1]) { -- alpha = 0xff; -- break; -- } -- } -- if (imgData->lookup) { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- *q++ = alpha; -- *q++ = imgData->lookup[*p]; -- break; -- case splashModeRGB8: -- *q++ = alpha; -- col = &imgData->lookup[3 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- break; -- case splashModeBGR8: -- col = &imgData->lookup[3 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- *q++ = alpha; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- *q++ = alpha; -- col = &imgData->lookup[4 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- *q++ = col[3]; -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } else { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- imgData->colorMap->getGray(p, &gray); -- *q++ = alpha; -- *q++ = colToByte(gray); -- break; -- case splashModeRGB8: -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = alpha; -- *q++ = colToByte(rgb.r); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.b); -- break; -- case splashModeBGR8: -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = colToByte(rgb.b); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.r); -- *q++ = alpha; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- imgData->colorMap->getCMYK(p, &cmyk); -- *q++ = alpha; -- *q++ = colToByte(cmyk.c); -- *q++ = colToByte(cmyk.m); -- *q++ = colToByte(cmyk.y); -- *q++ = colToByte(cmyk.k); -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- } -- -- ++imgData->y; -- return true; --} -- --void OPVPOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, -- int width, int height, -- GfxImageColorMap *colorMap, -- bool interpolate, -- int *maskColors, bool inlineImg) { -- const double *ctm; -- SplashCoord mat[6]; -- SplashOutImageData imgData; -- SplashColorMode srcMode; -- SplashImageSource src; -- GfxGray gray; -- GfxRGB rgb; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- Guchar pix; -- int n, i; -- -- ctm = state->getCTM(); -- mat[0] = ctm[0]; -- mat[1] = ctm[1]; -- mat[2] = -ctm[2]; -- mat[3] = -ctm[3]; -- mat[4] = ctm[2] + ctm[4]; -- mat[5] = ctm[3] + ctm[5]; -- -- imgData.imgStr = new ImageStream(str, width, -- colorMap->getNumPixelComps(), -- colorMap->getBits()); -- imgData.imgStr->reset(); -- imgData.colorMap = colorMap; -- imgData.maskColors = maskColors; -- imgData.colorMode = colorMode; -- imgData.width = width; -- imgData.height = height; -- imgData.y = 0; -- -- // special case for one-channel (monochrome/gray/separation) images: -- // build a lookup table here -- imgData.lookup = NULL; -- if (colorMap->getNumPixelComps() == 1) { -- n = 1 << colorMap->getBits(); -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,1); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getGray(&pix, &gray); -- imgData.lookup[i] = colToByte(gray); -- } -- break; -- case splashModeRGB8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.r); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.b); -- } -- break; -- case splashModeBGR8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.b); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.r); -- } -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,4); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getCMYK(&pix, &cmyk); -- imgData.lookup[4*i] = colToByte(cmyk.c); -- imgData.lookup[4*i+1] = colToByte(cmyk.m); -- imgData.lookup[4*i+2] = colToByte(cmyk.y); -- imgData.lookup[4*i+3] = colToByte(cmyk.k); -- } -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- -- if (colorMode == splashModeMono1) { -- srcMode = splashModeMono8; -- } else { -- srcMode = colorMode; -- } -- src = maskColors ? &alphaImageSrc : &imageSrc; -- oprs->drawImage(src, &imgData, srcMode, maskColors ? true : false, -- width, height, mat); -- if (inlineImg) { -- while (imgData.y < height) { -- imgData.imgStr->getLine(); -- ++imgData.y; -- } -- } -- -- gfree(imgData.lookup); -- delete imgData.imgStr; -- str->close(); --} -- --struct SplashOutMaskedImageData { -- ImageStream *imgStr; -- GfxImageColorMap *colorMap; -- SplashBitmap *mask; -- SplashColorPtr lookup; -- SplashColorMode colorMode; -- int width, height, y; --}; -- --bool OPVPOutputDev::maskedImageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine) { -- SplashOutMaskedImageData *imgData = (SplashOutMaskedImageData *)data; -- Guchar *p; -- SplashColor maskColor; -- SplashColorPtr q, col; -- GfxRGB rgb; -- GfxGray gray; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- Guchar alpha; -- int nComps, x; -- -- if (imgData->y == imgData->height) { -- return false; -- } -- -- nComps = imgData->colorMap->getNumPixelComps(); -- -- for (x = 0, p = imgData->imgStr->getLine(), q = line; -- x < imgData->width; -- ++x, p += nComps) { -- imgData->mask->getPixel(x, imgData->y, maskColor); -- alpha = maskColor[0] ? 0xff : 0x00; -- if (imgData->lookup) { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- *q++ = alpha; -- *q++ = imgData->lookup[*p]; -- break; -- case splashModeRGB8: -- *q++ = alpha; -- col = &imgData->lookup[3 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- break; -- case splashModeBGR8: -- col = &imgData->lookup[3 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- *q++ = alpha; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- *q++ = alpha; -- col = &imgData->lookup[4 * *p]; -- *q++ = col[0]; -- *q++ = col[1]; -- *q++ = col[2]; -- *q++ = col[3]; -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } else { -- switch (imgData->colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- imgData->colorMap->getGray(p, &gray); -- *q++ = alpha; -- *q++ = colToByte(gray); -- break; -- case splashModeRGB8: -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = alpha; -- *q++ = colToByte(rgb.r); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.b); -- break; -- case splashModeBGR8: -- imgData->colorMap->getRGB(p, &rgb); -- *q++ = colToByte(rgb.b); -- *q++ = colToByte(rgb.g); -- *q++ = colToByte(rgb.r); -- *q++ = alpha; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- imgData->colorMap->getCMYK(p, &cmyk); -- *q++ = alpha; -- *q++ = colToByte(cmyk.c); -- *q++ = colToByte(cmyk.m); -- *q++ = colToByte(cmyk.y); -- *q++ = colToByte(cmyk.k); -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- } -- -- ++imgData->y; -- return true; --} -- --void OPVPOutputDev::drawMaskedImage(GfxState *state, Object *ref, -- Stream *str, int width, int height, -- GfxImageColorMap *colorMap, -- bool interpolate, -- Stream *maskStr, int maskWidth, -- int maskHeight, bool maskInvert, -- bool maskInterpolate) { -- const double *ctm; -- SplashCoord mat[6]; -- SplashOutMaskedImageData imgData; -- SplashOutImageMaskData imgMaskData; -- SplashColorMode srcMode; -- SplashBitmap *maskBitmap; -- Splash *maskSplash; -- SplashColor maskColor; -- GfxGray gray; -- GfxRGB rgb; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- Guchar pix; -- int n, i; -- -- //----- scale the mask image to the same size as the source image -- -- mat[0] = (SplashCoord)width; -- mat[1] = 0; -- mat[2] = 0; -- mat[3] = (SplashCoord)height; -- mat[4] = 0; -- mat[5] = 0; -- imgMaskData.imgStr = new ImageStream(maskStr, maskWidth, 1, 1); -- imgMaskData.imgStr->reset(); -- imgMaskData.invert = maskInvert ? 0 : 1; -- imgMaskData.width = maskWidth; -- imgMaskData.height = maskHeight; -- imgMaskData.y = 0; -- maskBitmap = new SplashBitmap(width, height, 1, splashModeMono1, false); -- maskSplash = new Splash(maskBitmap, false); -- maskColor[0] = 0; -- maskSplash->clear(maskColor); -- maskColor[0] = 1; -- maskSplash->setFillPattern(new SplashSolidColor(maskColor)); -- maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData, -- maskWidth, maskHeight, mat, false); -- delete imgMaskData.imgStr; -- maskStr->close(); -- delete maskSplash; -- -- //----- draw the source image -- -- ctm = state->getCTM(); -- mat[0] = ctm[0]; -- mat[1] = ctm[1]; -- mat[2] = -ctm[2]; -- mat[3] = -ctm[3]; -- mat[4] = ctm[2] + ctm[4]; -- mat[5] = ctm[3] + ctm[5]; -- -- imgData.imgStr = new ImageStream(str, width, -- colorMap->getNumPixelComps(), -- colorMap->getBits()); -- imgData.imgStr->reset(); -- imgData.colorMap = colorMap; -- imgData.mask = maskBitmap; -- imgData.colorMode = colorMode; -- imgData.width = width; -- imgData.height = height; -- imgData.y = 0; -- -- // special case for one-channel (monochrome/gray/separation) images: -- // build a lookup table here -- imgData.lookup = NULL; -- if (colorMap->getNumPixelComps() == 1) { -- n = 1 << colorMap->getBits(); -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,1); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getGray(&pix, &gray); -- imgData.lookup[i] = colToByte(gray); -- } -- break; -- case splashModeRGB8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.r); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.b); -- } -- break; -- case splashModeBGR8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.b); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.r); -- } -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,4); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getCMYK(&pix, &cmyk); -- imgData.lookup[4*i] = colToByte(cmyk.c); -- imgData.lookup[4*i+1] = colToByte(cmyk.m); -- imgData.lookup[4*i+2] = colToByte(cmyk.y); -- imgData.lookup[4*i+3] = colToByte(cmyk.k); -- } -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- srcMode = splashModeMono8; -- break; -- case splashModeRGB8: -- srcMode = splashModeRGB8; -- break; -- case splashModeBGR8: -- srcMode = splashModeBGR8; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- srcMode = splashModeCMYK8; -- break; --#endif -- default: -- //~ unimplemented -- srcMode = splashModeRGB8; -- break; -- } -- oprs->drawImage(&maskedImageSrc, &imgData, srcMode, true, -- width, height, mat); -- -- delete maskBitmap; -- gfree(imgData.lookup); -- delete imgData.imgStr; -- str->close(); --} -- --void OPVPOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, -- Stream *str, int width, int height, -- GfxImageColorMap *colorMap, -- bool interpolate, -- Stream *maskStr, -- int maskWidth, int maskHeight, -- GfxImageColorMap *maskColorMap, -- bool maskInterpolate) { -- const double *ctm; -- SplashCoord mat[6]; -- SplashOutImageData imgData; -- SplashOutImageData imgMaskData; -- SplashColorMode srcMode; -- SplashBitmap *maskBitmap; -- Splash *maskSplash; -- SplashColor maskColor; -- GfxGray gray; -- GfxRGB rgb; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- Guchar pix; -- int n, i; -- -- ctm = state->getCTM(); -- mat[0] = ctm[0]; -- mat[1] = ctm[1]; -- mat[2] = -ctm[2]; -- mat[3] = -ctm[3]; -- mat[4] = ctm[2] + ctm[4]; -- mat[5] = ctm[3] + ctm[5]; -- -- //----- set up the soft mask -- -- imgMaskData.imgStr = new ImageStream(maskStr, maskWidth, -- maskColorMap->getNumPixelComps(), -- maskColorMap->getBits()); -- imgMaskData.imgStr->reset(); -- imgMaskData.colorMap = maskColorMap; -- imgMaskData.maskColors = NULL; -- imgMaskData.colorMode = splashModeMono8; -- imgMaskData.width = maskWidth; -- imgMaskData.height = maskHeight; -- imgMaskData.y = 0; -- n = 1 << maskColorMap->getBits(); -- imgMaskData.lookup = (SplashColorPtr)gmallocn(n,1); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- maskColorMap->getGray(&pix, &gray); -- imgMaskData.lookup[i] = colToByte(gray); -- } -- maskBitmap = new SplashBitmap(maskWidth,maskHeight, -- 1, splashModeMono8, false); -- maskSplash = new Splash(maskBitmap, false); -- maskColor[0] = 0; -- maskSplash->clear(maskColor); --#if POPPLER_VERSION_MAJOR <= 0 && (POPPLER_VERSION_MINOR <= 20 || (POPPLER_VERSION_MINOR == 21 && POPPLER_VERSION_MICRO <= 2)) -- maskSplash->drawImage(&imageSrc, &imgMaskData, -- splashModeMono8, false, maskWidth, maskHeight, mat); --#elif POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33 -- maskSplash->drawImage(&imageSrc, &imgMaskData, -- splashModeMono8, false, maskWidth, maskHeight, -- mat,false); --#else -- maskSplash->drawImage(&imageSrc, 0, &imgMaskData, -- splashModeMono8, false, maskWidth, maskHeight, -- mat,false); --#endif -- delete imgMaskData.imgStr; -- maskStr->close(); -- gfree(imgMaskData.lookup); -- delete maskSplash; -- oprs->setSoftMask(maskBitmap); -- -- //----- draw the source image -- -- imgData.imgStr = new ImageStream(str, width, -- colorMap->getNumPixelComps(), -- colorMap->getBits()); -- imgData.imgStr->reset(); -- imgData.colorMap = colorMap; -- imgData.maskColors = NULL; -- imgData.colorMode = colorMode; -- imgData.width = width; -- imgData.height = height; -- imgData.y = 0; -- -- // special case for one-channel (monochrome/gray/separation) images: -- // build a lookup table here -- imgData.lookup = NULL; -- if (colorMap->getNumPixelComps() == 1) { -- n = 1 << colorMap->getBits(); -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,1); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getGray(&pix, &gray); -- imgData.lookup[i] = colToByte(gray); -- } -- break; -- case splashModeRGB8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.r); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.b); -- } -- break; -- case splashModeBGR8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,3); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getRGB(&pix, &rgb); -- imgData.lookup[3*i] = colToByte(rgb.b); -- imgData.lookup[3*i+1] = colToByte(rgb.g); -- imgData.lookup[3*i+2] = colToByte(rgb.r); -- } -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- imgData.lookup = (SplashColorPtr)gmallocn(n,4); -- for (i = 0; i < n; ++i) { -- pix = (Guchar)i; -- colorMap->getCMYK(&pix, &cmyk); -- imgData.lookup[4*i] = colToByte(cmyk.c); -- imgData.lookup[4*i+1] = colToByte(cmyk.m); -- imgData.lookup[4*i+2] = colToByte(cmyk.y); -- imgData.lookup[4*i+3] = colToByte(cmyk.k); -- } -- break; --#endif -- default: -- //~ unimplemented -- break; -- } -- } -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- srcMode = splashModeMono8; -- break; -- case splashModeRGB8: -- srcMode = splashModeRGB8; -- break; -- case splashModeBGR8: -- srcMode = splashModeBGR8; -- break; --#if SPLASH_CMYK -- case splashModeCMYK8: -- srcMode = splashModeCMYK8; -- break; --#endif -- default: -- //~ unimplemented -- srcMode = splashModeRGB8; -- break; -- } -- oprs->drawImage(&imageSrc, &imgData, srcMode, false, width, height, mat); -- -- oprs->setSoftMask(NULL); -- gfree(imgData.lookup); -- delete imgData.imgStr; -- str->close(); --} -- --int OPVPOutputDev::getBitmapWidth() { -- return bitmap->getWidth(); --} -- --int OPVPOutputDev::getBitmapHeight() { -- return bitmap->getHeight(); --} -- --void OPVPOutputDev::xorRectangle(int x0, int y0, int x1, int y1, -- SplashPattern *pattern) { -- /* no need in printing */ --} -- --void OPVPOutputDev::setFillColor(int r, int g, int b) { -- GfxRGB rgb; -- GfxGray gray; --#if SPLASH_CMYK -- GfxCMYK cmyk; --#endif -- -- rgb.r = byteToCol(r); -- rgb.g = byteToCol(g); -- rgb.b = byteToCol(b); -- gray = (GfxColorComp)(0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.g + 0.5); -- if (gray > gfxColorComp1) { -- gray = gfxColorComp1; -- } --#if SPLASH_CMYK -- cmyk.c = gfxColorComp1 - rgb.r; -- cmyk.m = gfxColorComp1 - rgb.g; -- cmyk.y = gfxColorComp1 - rgb.b; -- cmyk.k = 0; -- oprs->setFillPattern(getColor(gray, &rgb, &cmyk)); --#else -- oprs->setFillPattern(getColor(gray, &rgb)); --#endif --} -- --int OPVPOutputDev::OPVPStartJob(char *jobInfo) --{ -- return oprs->OPVPStartJob(jobInfo); --} -- --int OPVPOutputDev::OPVPEndJob() --{ -- return oprs->OPVPEndJob(); --} -- --int OPVPOutputDev::OPVPStartDoc(char *docInfo) --{ -- return oprs->OPVPStartDoc(docInfo); --} -- --int OPVPOutputDev::OPVPEndDoc() --{ -- return oprs->OPVPEndDoc(); --} -- --int OPVPOutputDev::OPVPStartPage(char *pageInfo, -- int rasterWidth, int rasterHeight) --{ -- paperWidth = rasterWidth; -- paperHeight = rasterHeight; -- return oprs->OPVPStartPage(pageInfo,rasterWidth); --} -- --int OPVPOutputDev::OPVPEndPage() --{ -- return oprs->OPVPEndPage(); --} -- --int OPVPOutputDev::outSlice() --{ -- return oprs->outSlice(); --} -- --void OPVPOutputDev::psXObject(Stream *psStream, Stream *level1Stream) --{ -- opvpError(-1,"psXObject is found, but it is not supported"); --} -diff --git a/filter/pdftoopvp/OPVPOutputDev.h b/filter/pdftoopvp/OPVPOutputDev.h -deleted file mode 100644 -index f3d0825..0000000 ---- a/filter/pdftoopvp/OPVPOutputDev.h -+++ /dev/null -@@ -1,250 +0,0 @@ --//======================================================================== --// --// OPVPOutputDev.h --// --// Copyright 2005 AXE,Inc. --// --//======================================================================== -- --#ifndef OPVPOUTPUTDEV_H --#define OPVPOUTPUTDEV_H -- --#include <config.h> -- --#ifdef USE_GCC_PRAGMAS --#pragma interface --#endif -- --#include "goo/gtypes.h" --#include "splash/SplashTypes.h" --#include "config.h" --#include "OutputDev.h" --#include "GfxState.h" --#include "GfxFont.h" -- --class GfxState; --class GfxPath; --class Gfx8BitFont; --class SplashBitmap; --class OPRS; --class OPVPSplashPath; --class SplashPattern; --class SplashFontEngine; --class SplashFont; --class T3FontCache; --struct T3FontCacheTag; --struct T3GlyphStack; --struct GfxRGB; -- --//------------------------------------------------------------------------ -- --// number of Type 3 fonts to cache --#define splashOutT3FontCacheSize 8 -- --//------------------------------------------------------------------------ --// OPVPOutputDev --//------------------------------------------------------------------------ -- --class OPVPOutputDev: public OutputDev { --public: -- -- // Constructor. -- OPVPOutputDev(); -- -- // Second Constructor -- int init(SplashColorMode colorModeA, bool colorProfile, bool reverseVideoA, -- SplashColor paperColorA, -- const char *driverName, int outputFD, -- const char *printerModel, -- int nOptions, -- const char *optionKeys[], const char *optionVals[]); -- -- // Destructor. -- virtual ~OPVPOutputDev(); -- -- //----- get info about output device -- -- // Does this device use upside-down coordinates? -- // (Upside-down means (0,0) is the top left corner of the page.) -- virtual bool upsideDown() { return true; } -- -- // Does this device use drawChar() or drawString()? -- virtual bool useDrawChar() { return true; } -- -- // Does this device use beginType3Char/endType3Char? Otherwise, -- // text in Type 3 fonts will be drawn with drawChar/drawString. -- virtual bool interpretType3Chars() { return true; } -- -- //----- initialization and control -- -- // Start a page. -- virtual void startPage(int pageNum, GfxState *state); -- -- // End a page. -- virtual void endPage(); -- -- //----- save/restore graphics state -- virtual void saveState(GfxState *state); -- virtual void restoreState(GfxState *state); -- -- //----- update graphics state -- virtual void updateAll(GfxState *state); -- virtual void updateCTM(GfxState *state, double m11, double m12, -- double m21, double m22, double m31, double m32); -- virtual void updateLineDash(GfxState *state); -- virtual void updateFlatness(GfxState *state); -- virtual void updateLineJoin(GfxState *state); -- virtual void updateLineCap(GfxState *state); -- virtual void updateMiterLimit(GfxState *state); -- virtual void updateLineWidth(GfxState *state); -- virtual void updateFillColor(GfxState *state); -- virtual void updateStrokeColor(GfxState *state); -- -- //----- update text state -- virtual void updateFont(GfxState *state); -- -- //----- path painting -- virtual void stroke(GfxState *state); -- virtual void fill(GfxState *state); -- virtual void eoFill(GfxState *state); -- -- //----- path clipping -- virtual void clip(GfxState *state); -- virtual void eoClip(GfxState *state); -- virtual void clipToStrokePath(GfxState *state); -- -- //----- text drawing -- virtual void drawChar(GfxState *state, double x, double y, -- double dx, double dy, -- double originX, double originY, -- CharCode code, int nBytes, Unicode *u, int uLen); -- virtual bool beginType3Char(GfxState *state, double x, double y, -- double dx, double dy, -- CharCode code, Unicode *u, int uLen); -- virtual void endType3Char(GfxState *state); -- virtual void endTextObject(GfxState *state); -- -- //----- image drawing -- virtual void drawImageMask(GfxState *state, Object *ref, Stream *str, -- int width, int height, bool invert, -- bool interpolate, -- bool inlineImg); -- virtual void drawImage(GfxState *state, Object *ref, Stream *str, -- int width, int height, GfxImageColorMap *colorMap, -- bool interpolate, -- int *maskColors, bool inlineImg); -- virtual void drawMaskedImage(GfxState *state, Object *ref, Stream *str, -- int width, int height, -- GfxImageColorMap *colorMap, -- bool interpolate, -- Stream *maskStr, int maskWidth, int maskHeight, -- bool maskInvert, bool maskeInterpolate); -- virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, -- int width, int height, -- GfxImageColorMap *colorMap, -- bool interpolate, -- Stream *maskStr, -- int maskWidth, int maskHeight, -- GfxImageColorMap *maskColorMap, -- bool maskInterpolate); -- -- //----- Type 3 font operators -- virtual void type3D0(GfxState *state, double wx, double wy); -- virtual void type3D1(GfxState *state, double wx, double wy, -- double llx, double lly, double urx, double ury); -- -- //----- special access -- -- // Called to indicate that a new PDF document has been loaded. -- void startDoc(XRef *xrefA); -- -- bool isReverseVideo() { return reverseVideo; } -- -- // Get the bitmap and its size. -- SplashBitmap *getBitmap() { return bitmap; } -- int getBitmapWidth(); -- int getBitmapHeight(); -- -- // Get the Splash object. -- OPRS *getOPRS() { return oprs; } -- -- // XOR a rectangular region in the bitmap with <pattern>. <pattern> -- // is passed to Splash::setFillPattern, so it should not be used -- // after calling this function. -- void xorRectangle(int x0, int y0, int x1, int y1, SplashPattern *pattern); -- -- // Set the Splash fill color. -- void setFillColor(int r, int g, int b); -- -- void setUnderlayCbk(void (*cbk)(void *data), void *data) -- { underlayCbk = cbk; underlayCbkData = data; } -- -- int OPVPStartJob(char *jobInfo); -- int OPVPEndJob(); -- int OPVPStartDoc(char *docInfo); -- int OPVPEndDoc(); -- int OPVPStartPage(char *pageInfo, int rasterWidth, int rasterHeight); -- int OPVPEndPage(); -- int outSlice(); -- virtual void psXObject(Stream *psStream, Stream *level1Stream); -- void setScale(double w, double h, double leftMarginA, double bottomMarginA, -- int rotateA, int yoffsetA, int sliceHeightA); -- --private: -- -- SplashPattern *getColor(GfxGray gray, GfxRGB *rgb); -- OPVPSplashPath *convertPath(GfxState *state, GfxPath *path); -- void drawType3Glyph(T3FontCache *t3Font, -- T3FontCacheTag *tag, Guchar *data, -- double x, double y); -- void patternFillChar(GfxState *state, -- double x, double y, CharCode code); -- -- static bool imageMaskSrc(void *data, SplashColorPtr line); -- static bool imageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine); -- static bool alphaImageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine); -- static bool maskedImageSrc(void *data, SplashColorPtr line, -- Guchar *alphaLine); -- -- OPVPSplashPath *bitmapToPath(SplashBitmap *bitmapA, int width, int height); -- void closeAllSubPath(OPVPSplashPath *path); -- void patternFillImageMask(GfxState *state, -- SplashImageMaskSource src, void *srcData, int w, int h, SplashCoord *mat); -- void doUpdateFont(GfxState *state); -- void transLineDash(GfxState *state, SplashCoord **adash, -- int *adashLength, SplashCoord *aphase); -- void updateSplashLineDash(GfxState *state, Splash *splash); -- -- SplashColorMode colorMode; -- bool reverseVideo; // reverse video mode -- SplashColor paperColor; // paper color -- -- XRef *xref; // xref table for current document -- -- SplashBitmap *bitmap; -- OPRS *oprs; -- SplashFontEngine *fontEngine; -- -- T3FontCache * // Type 3 font cache -- t3FontCache[splashOutT3FontCacheSize]; -- int nT3Fonts; // number of valid entries in t3FontCache -- T3GlyphStack *t3GlyphStack; // Type 3 glyph context stack -- -- SplashFont *font; // current font -- bool needFontUpdate; // set when the font needs to be updated -- OPVPSplashPath *textClipPath; // clipping path built with text object -- -- void (*underlayCbk)(void *data); -- void *underlayCbkData; -- double fontMat[4]; -- double scaleWidth, scaleHeight; -- int paperWidth, paperHeight; -- double leftMargin, bottomMargin; -- int rotate; -- int yoffset; -- int sliceHeight; --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPRS.cxx b/filter/pdftoopvp/oprs/OPRS.cxx -deleted file mode 100644 -index 21cabc0..0000000 ---- a/filter/pdftoopvp/oprs/OPRS.cxx -+++ /dev/null -@@ -1,604 +0,0 @@ --//======================================================================== --// --// OPRS.cc --// --//======================================================================== -- --#include <config.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#ifdef USE_GCC_PRAGMAS --#pragma implementation --#endif -- --#include <stdlib.h> --#include <string.h> --#include <string.h> --#include <dlfcn.h> --#include <stdarg.h> --#include <math.h> --#if defined __OpenBSD__ --#include <sys/endian.h> --#if BYTE_ORDER == BIG_ENDIAN --#define __BYTE_ORDER __BIG_ENDIAN --#else --#define __BYTE_ORDER __LITTLE_ENDIAN --#endif --#endif -- --#include "goo/gmem.h" --#include "splash/SplashErrorCodes.h" --#include "splash/SplashMath.h" --#include "splash/SplashBitmap.h" --#include "splash/SplashState.h" --#include "splash/SplashXPathScanner.h" --#include "splash/SplashPattern.h" --#include "splash/SplashScreen.h" --#include "splash/SplashFont.h" --#include "splash/SplashGlyphBitmap.h" --#include "splash/Splash.h" --#include "OPVPSplash.h" --#include "OPVPSplashClip.h" --#include "OPVPSplashPath.h" --#include "OPVPSplashXPath.h" --#include "OPRS.h" -- --//------------------------------------------------------------------------ --// Splash --//------------------------------------------------------------------------ -- --#define SPLASH(x) (rasterMode ? (splash->x) : (opvpSplash->x)) -- --OPRS::OPRS() --{ -- opvp = 0; -- splash = 0; -- opvpSplash = 0; -- rasterMode = false; --} -- --int OPRS::setBitmap(SplashBitmap *bitmapA) { -- if (splash != 0) { -- delete splash; -- } -- splash = new Splash(bitmapA, false); -- rasterMode = true; -- return 0; --} -- --OPRS::~OPRS() { -- if (splash != 0) { -- delete splash; -- splash = 0; -- } -- if (opvpSplash != 0) { -- opvpSplash->restoreAllDriverState(); -- delete opvpSplash; -- opvpSplash = 0; -- } --} -- --//------------------------------------------------------------------------ --// state read --//------------------------------------------------------------------------ -- -- --SplashPattern *OPRS::getStrokePattern() { -- return SPLASH(getStrokePattern()); --} -- --SplashPattern *OPRS::getFillPattern() { -- return SPLASH(getFillPattern()); --} -- --SplashScreen *OPRS::getScreen() { -- return SPLASH(getScreen()); --} -- --SplashCoord OPRS::getLineWidth() { -- return SPLASH(getLineWidth()); --} -- --int OPRS::getLineCap() { -- return SPLASH(getLineCap()); --} -- --int OPRS::getLineJoin() { -- return SPLASH(getLineJoin()); --} -- --SplashCoord OPRS::getMiterLimit() { -- return SPLASH(getMiterLimit()); --} -- --SplashCoord OPRS::getFlatness() { -- return 1; --} -- --SplashCoord *OPRS::getLineDash() { -- return SPLASH(getLineDash()); --} -- --int OPRS::getLineDashLength() { -- return SPLASH(getLineDashLength()); --} -- --SplashCoord OPRS::getLineDashPhase() { -- return SPLASH(getLineDashPhase()); --} -- --OPVPSplashClip *OPRS::getClip() { -- if (rasterMode) { -- SplashClip *sclip = splash->getClip(); -- OPVPSplashClip *r = new OPVPSplashClip(sclip); -- delete sclip; -- return r; -- } else { -- return opvpSplash->getClip(); -- } --} -- --//------------------------------------------------------------------------ --// state write --//------------------------------------------------------------------------ -- --void OPRS::setStrokePattern(SplashPattern *strokePattern) { -- SPLASH(setStrokePattern(strokePattern)); --} -- --void OPRS::setFillPattern(SplashPattern *fillPattern) { -- SPLASH(setFillPattern(fillPattern)); --} -- --void OPRS::setScreen(SplashScreen *screen) { -- SPLASH(setScreen(screen)); --} -- --void OPRS::setLineWidth(SplashCoord lineWidth) { -- SPLASH(setLineWidth(lineWidth)); --} -- --void OPRS::setMiterLimit(SplashCoord miterLimit) { -- SPLASH(setMiterLimit(miterLimit)); --} -- --void OPRS::setLineCap(int lineCap) { -- SPLASH(setLineCap(lineCap)); --} -- --void OPRS::setLineJoin(int lineJoin) { -- SPLASH(setLineJoin(lineJoin)); --} -- --void OPRS::setFlatness(SplashCoord flatness) { --/* ignore flatness */ --} -- --void OPRS::setLineDash(SplashCoord *lineDash, int lineDashLength, -- SplashCoord lineDashPhase) { -- SPLASH(setLineDash(lineDash,lineDashLength,lineDashPhase)); --} -- --SplashError OPRS::clipToPath(OPVPSplashPath *path, bool eo) { -- return SPLASH(clipToPath(path,eo)); --} -- --//------------------------------------------------------------------------ --// state save/restore --//------------------------------------------------------------------------ -- --void OPRS::saveState() { -- SPLASH(saveState()); --} -- --SplashError OPRS::restoreState() { -- SPLASH(restoreState()); -- return splashOk; --} -- --//------------------------------------------------------------------------ --// drawing operations --//------------------------------------------------------------------------ -- --void OPRS::clear(SplashColor color) { -- SPLASH(clear(color)); --} -- --SplashError OPRS::stroke(OPVPSplashPath *path) { -- return SPLASH(stroke(path)); --} -- --SplashError OPRS::fill(OPVPSplashPath *path, bool eo) { -- return SPLASH(fill(path,eo)); --} -- --SplashError OPRS::fillChar(SplashCoord x, SplashCoord y, -- int c, SplashFont *font, Unicode *u, -- double *fontMat) { -- if (rasterMode) { -- return splash->fillChar(x,y,c,font); -- } else { -- return opvpSplash->fillChar(x,y,c,font,u,fontMat); -- } --} -- --SplashError OPRS::fillGlyph(SplashCoord x, SplashCoord y, -- SplashGlyphBitmap *glyph) { -- SPLASH(fillGlyph(x,y,glyph)); -- return splashOk; --} -- --SplashError OPRS::fillImageMask(SplashImageMaskSource src, void *srcData, -- int w, int h, SplashCoord *mat, bool glyphMode) { -- return SPLASH(fillImageMask(src,srcData,w,h,mat,glyphMode)); --} -- --SplashError OPRS::drawImage(SplashImageSource src, void *srcData, -- SplashColorMode srcMode, bool srcAlpha, -- int w, int h, SplashCoord *mat) { -- if (rasterMode) { --#if POPPLER_VERSION_MAJOR <= 0 && (POPPLER_VERSION_MINOR <= 20 || (POPPLER_VERSION_MINOR == 21 && POPPLER_VERSION_MICRO <= 2)) -- return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat); --#elif POPPLER_VERSION_MAJOR <= 0 && POPPLER_VERSION_MINOR <= 33 -- return splash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat,false); --#else -- return splash->drawImage(src,0,srcData,srcMode,srcAlpha,w,h,mat,false); --#endif -- } else { -- return opvpSplash->drawImage(src,srcData,srcMode,srcAlpha,w,h,mat); -- } --} -- --/* -- * initialize and load vector-driver -- */ --int OPRS::init(const char *driverName, int outputFD, -- const char *printerModel, int nOptions, -- const char *optionKeys[], const char *optionVals[]) --{ -- opvp = OPVPWrapper::loadDriver(driverName,outputFD,printerModel); -- if (opvp == 0) return -1; -- rasterMode = false; -- if (!rasterMode) { -- opvpSplash = new OPVPSplash(opvp,nOptions, -- optionKeys, optionVals); -- } -- return 0; --} -- --int OPRS::OPVPStartJob(char *jobInfo) --{ -- if (!opvp->supportStartJob) { -- return 0; -- } -- return opvp->StartJob((const opvp_char_t *)jobInfo); --} -- --int OPRS::OPVPEndJob() --{ -- if (!opvp->supportEndJob) { -- return 0; -- } -- return opvp->EndJob(); --} -- --int OPRS::OPVPStartDoc(char *docInfo) --{ -- if (!opvp->supportStartDoc) { -- return 0; -- } -- return opvp->StartDoc((const opvp_char_t *)docInfo); --} -- --int OPRS::OPVPEndDoc() --{ -- if (!opvp->supportEndDoc) { -- return 0; -- } -- return opvp->EndDoc(); --} -- --int OPRS::OPVPStartPage(char *pageInfo, int rasterWidth) --{ -- int r; -- -- if (opvp->supportStartPage) { -- if ((r = opvp->StartPage((const opvp_char_t *)pageInfo)) < 0) { -- return r; -- } -- } -- if (rasterMode) { -- if (!opvp->supportStartRaster) { -- error("No StartRaster error in raster mode\n"); -- return -1; -- } -- if (opvp->supportSetCurrentPoint) { -- opvp_fix_t x,y; -- -- OPVP_F2FIX(0.0,x); -- OPVP_F2FIX(0.0,y); -- opvp->SetCurrentPoint(x,y); -- } -- opvp->StartRaster(rasterWidth); -- } -- return 0; --} -- --int OPRS::OPVPEndPage() --{ -- int r; -- -- if (rasterMode) { -- if (!opvp->supportEndRaster) { -- error("No EndRaster error in raster mode\n"); -- return -1; -- } -- opvp->EndRaster(); -- } -- if (opvp->supportEndPage) { -- if ((r = opvp->EndPage()) < 0) { -- return r; -- } -- } -- return splashOk; --} -- --unsigned char *OPRS::getScanLineDataMono1(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth) --{ -- int n = (rasterWidth+7)/8; -- -- memcpy(dst,bitmap,n); -- return bitmap+n; --} -- --unsigned char *OPRS::getScanLineDataMono8(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth) --{ -- memcpy(dst,bitmap,rasterWidth); -- return bitmap+rasterWidth; --} -- --unsigned char *OPRS::getScanLineDataRGB8(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth) --{ -- int i; -- -- for (i = 0;i < rasterWidth;i++) { --#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN -- bitmap++; -- *dst++ = *bitmap++; -- *dst++ = *bitmap++; -- *dst++ = *bitmap++; --#else -- dst[2] = *bitmap++; -- dst[1] = *bitmap++; -- dst[0] = *bitmap++; -- bitmap++; -- dst += 3; --#endif -- } -- return bitmap; --} -- --unsigned char *OPRS::getScanLineDataBGR8Packed(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth) --{ -- memcpy(dst,bitmap,rasterWidth*3); -- return bitmap+rasterWidth*3; --} -- --OPRS::GetScanLineDataFunT OPRS::getGetScanLineDataFun(SplashBitmap *bitmap) --{ -- switch (bitmap->getMode()) { -- case splashModeMono1: -- return getScanLineDataMono1; -- case splashModeMono8: -- return getScanLineDataMono8; -- case splashModeRGB8: -- return getScanLineDataRGB8; -- default: -- OPRS::error("Unknown bitmap mode\n"); -- break; -- } -- return getScanLineDataMono8; --} -- --int OPRS::getRasterSize(SplashBitmap *bitmap) --{ -- int rw = bitmap->getWidth(); -- -- switch (bitmap->getMode()) { -- case splashModeMono1: -- return (rw+7)/8; -- case splashModeMono8: -- return rw; -- case splashModeRGB8: -- return rw*3; -- default: -- OPRS::error("Unknown bitmap mode\n"); -- break; -- } -- return 0; --} -- --bool OPRS::checkAll1(unsigned char *bp, int n, int width, int mode) --{ -- int lastbytemask = 0xff; -- int i; -- -- if (mode == splashModeMono1) { -- lastbytemask <<= (width & 0x7); -- lastbytemask &= 0xff; -- } -- for (i = 0;i < n-1;i++) { -- if (*bp++ != 0xff) return false; -- } -- return (*bp & lastbytemask) == lastbytemask; --} -- --int OPRS::outSlice() --{ -- if (rasterMode) { -- /* out bitmap */ -- int rasterWidth; -- int nScanLines; -- int rasterSize; -- unsigned char *p; -- int i; -- SplashBitmap *bitmap; -- SplashColorPtr cp; -- unsigned char *bp; -- GetScanLineDataFunT fun; -- int mode; -- -- if (!opvp->supportStartRaster || !opvp->supportTransferRasterData -- || !opvp->supportEndRaster) { -- OPRS::error("No raster supporting printer driver\n"); -- return -1; -- } -- -- bitmap = splash->getBitmap(); -- rasterWidth = bitmap->getWidth(); -- nScanLines = bitmap->getHeight(); -- rasterSize = getRasterSize(bitmap); -- if ((bp = new unsigned char[rasterSize]) == 0) { -- OPRS::error("Not enough memory\n"); -- return -1; -- } -- cp = (bitmap->getDataPtr()); -- p = reinterpret_cast<unsigned char *>(cp); -- fun = getGetScanLineDataFun(bitmap); -- mode = bitmap->getMode(); -- for (i = 0;i < nScanLines;i++) { -- p = (*fun)(bp,p,rasterWidth); -- if (opvp->supportSkipRaster -- && checkAll1(bp,rasterSize,rasterWidth,mode)) { -- /* all white, skip raster */ -- opvp->SkipRaster(1); -- } else { -- opvp->TransferRasterData(rasterSize,bp); -- } -- } -- delete[] bp; -- } -- return 0; --} -- --int OPRS::setColorMode(int colorModeA, bool colorProfile) --{ -- opvp_cspace_t cspace = OPVP_CSPACE_STANDARDRGB; -- -- if (opvp->supportGetColorSpace) opvp->GetColorSpace(&cspace); -- switch (cspace){ -- case OPVP_CSPACE_BW: -- if (colorModeA != splashModeMono1) { -- OPRS::error("not mono mode is specified on a monochrome printer\n"); -- return -1; -- } -- break; -- case OPVP_CSPACE_DEVICEGRAY: -- if (colorModeA != splashModeMono1 && colorModeA != splashModeMono8) { -- OPRS::error("colorMode is specified on not a color printer\n"); -- return -1; -- } -- break; -- case OPVP_CSPACE_DEVICERGB: -- if (colorProfile) break; -- default: -- /* rgb color */ -- if (colorProfile) { -- /* try set colorspace to DEVICERGB */ -- if (opvp->supportSetColorSpace) opvp->SetColorSpace( -- OPVP_CSPACE_DEVICERGB); -- if (opvp->supportGetColorSpace) opvp->GetColorSpace(&cspace); -- if (cspace == OPVP_CSPACE_DEVICERGB) break; -- /* fail to set, fall through */ -- } -- if (opvp->supportSetColorSpace) opvp->SetColorSpace( -- OPVP_CSPACE_STANDARDRGB); -- break; -- } -- if (!rasterMode) { -- opvpSplash->setColorMode(colorModeA); -- } -- return 0; --} -- --SplashBitmap *OPRS::getBitmap() --{ -- return SPLASH(getBitmap()); --} -- --void OPRS::setDebugMode(bool debugModeA) --{ -- SPLASH(setDebugMode(debugModeA)); --} -- --void OPRS::initGS(int colorMode, int w, int h, SplashColor paperColor) --{ -- SplashColor color; -- -- if (!rasterMode && opvp->supportInitGS) { -- opvp->InitGS(); -- } -- if (opvp->supportSetPaintMode) { -- opvp->SetPaintMode(OPVP_PAINTMODE_TRANSPARENT); -- } -- switch (colorMode) { -- case splashModeMono1: color[0] = 0; break; -- case splashModeMono8: color[0] = 0; break; -- case splashModeRGB8: color[0] = color[1] = color[2] = 0; break; -- } -- if (!rasterMode) { -- opvpSplash->setStateBypass(true); -- } -- SPLASH(setStrokePattern(new SplashSolidColor(color))); -- SPLASH(setFillPattern(new SplashSolidColor(color))); -- SPLASH(setLineCap(splashLineCapButt)); -- SPLASH(setLineJoin(splashLineJoinMiter)); -- SPLASH(setLineDash(0, 0, 0)); -- SPLASH(setLineWidth(0)); -- SPLASH(setMiterLimit(10)); -- SPLASH(setFlatness(1)); -- SPLASH(clipResetToRect(0,0,w-1,h-1)); -- SPLASH(clear(paperColor)); -- if (!rasterMode) { -- opvpSplash->setStateBypass(false); -- } --} -- --void OPRS::error(const char *msg, ...) --{ -- va_list args; -- -- fprintf(stderr,"ERROR:OPRS:"); -- va_start(args, msg); -- vfprintf(stderr, msg, args); -- va_end(args); -- fflush(stderr); --} -- --void OPRS::endPage() --{ -- /* restore state */ -- while (SPLASH(restoreState()) == splashOk); -- if (!rasterMode) { -- opvpSplash->endPage(); -- } --} -- --void OPRS::setSoftMask(SplashBitmap *softMaskA) --{ -- /* Soft Mask is not supported in vector mode. */ -- if (rasterMode) { -- splash->setSoftMask(softMaskA); -- } --} -- --SplashCoord *OPRS::getMatrix() --{ -- return SPLASH(getMatrix()); --} -diff --git a/filter/pdftoopvp/oprs/OPRS.h b/filter/pdftoopvp/oprs/OPRS.h -deleted file mode 100644 -index e47804c..0000000 ---- a/filter/pdftoopvp/oprs/OPRS.h -+++ /dev/null -@@ -1,188 +0,0 @@ --//======================================================================== --// --// OPRS.h --// --//======================================================================== -- --#ifndef OPRS_H --#define OPRS_H -- --#include <config.h> -- --#ifdef USE_GCC_PRAGMAS --#pragma interface --#endif -- --#include "splash/SplashTypes.h" --#include "opvp_common.h" --#include "splash/Splash.h" --#include "OPVPSplash.h" --#include "OPVPWrapper.h" -- --#define OPVP_BUFF_SIZE 256 -- --class SplashBitmap; --class SplashGlyphBitmap; --class SplashState; --class SplashPattern; --class SplashScreen; --class OPVPSplashPath; --class SplashXPath; --class OPVPSplashClip; --class SplashFont; -- --//------------------------------------------------------------------------ --// OPRS --//------------------------------------------------------------------------ -- --class OPRS { --public: -- -- static void error(const char *msg, ...); -- OPRS(); -- ~OPRS(); -- -- int setBitmap(SplashBitmap *bitmapA); -- -- //----- state read -- -- SplashPattern *getStrokePattern(); -- SplashPattern *getFillPattern(); -- SplashScreen *getScreen(); -- SplashCoord getLineWidth(); -- int getLineCap(); -- int getLineJoin(); -- SplashCoord getMiterLimit(); -- SplashCoord getFlatness(); -- SplashCoord *getLineDash(); -- int getLineDashLength(); -- SplashCoord getLineDashPhase(); -- OPVPSplashClip *getClip(); -- -- //----- state write -- -- void setStrokePattern(SplashPattern *strokeColor); -- void setFillPattern(SplashPattern *fillColor); -- void setScreen(SplashScreen *screen); -- void setLineWidth(SplashCoord lineWidth); -- void setMiterLimit(SplashCoord miterLimit); -- void setLineCap(int lineCap); -- void setLineJoin(int lineJoin); -- void setFlatness(SplashCoord flatness); -- // the <lineDash> array will be copied -- void setLineDash(SplashCoord *lineDash, int lineDashLength, -- SplashCoord lineDashPhase); -- SplashError clipToPath(OPVPSplashPath *path, bool eo); -- -- //----- state save/restore -- -- void saveState(); -- SplashError restoreState(); -- -- void setSoftMask(SplashBitmap *softMaskA); -- -- //----- drawing operations -- -- // Fill the bitmap with <color>. This is not subject to clipping. -- void clear(SplashColor color); -- -- // Stroke a path using the current stroke pattern. -- SplashError stroke(OPVPSplashPath *path); -- -- // Fill a path using the current fill pattern. -- SplashError fill(OPVPSplashPath *path, bool eo); -- -- // Draw a character, using the current fill pattern. -- SplashError fillChar(SplashCoord x, SplashCoord y, int c, SplashFont *font, -- Unicode *u, double *fontMat); -- -- // Draw a glyph, using the current fill pattern. This function does -- // not free any data, i.e., it ignores glyph->freeData. -- SplashError fillGlyph(SplashCoord x, SplashCoord y, -- SplashGlyphBitmap *glyph); -- -- // Draws an image mask using the fill color. This will read <w>*<h> -- // pixels from <src>, in raster order, starting with the top line. -- // "1" pixels will be drawn with the current fill color; "0" pixels -- // are transparent. The matrix: -- // [ mat[0] mat[1] 0 ] -- // [ mat[2] mat[3] 0 ] -- // [ mat[4] mat[5] 1 ] -- // maps a unit square to the desired destination for the image, in -- // PostScript style: -- // [x' y' 1] = [x y 1] * mat -- // Note that the Splash y axis points downward, and the image source -- // is assumed to produce pixels in raster order, starting from the -- // top line. -- SplashError fillImageMask(SplashImageMaskSource src, void *srcData, -- int w, int h, SplashCoord *mat, bool glyphMode); -- -- // Draw an image. This will read <w>*<h> pixels from <src>, in -- // raster order, starting with the top line. These pixels are -- // assumed to be in the source mode, <srcMode>. The following -- // combinations of source and target modes are supported: -- // source target -- // ------ ------ -- // Mono1 Mono1 -- // Mono8 Mono1 -- with dithering -- // Mono8 Mono8 -- // RGB8 RGB8 -- // BGR8packed BGR8Packed -- // The matrix behaves as for fillImageMask. -- SplashError drawImage(SplashImageSource src, void *srcData, -- SplashColorMode srcMode, bool srcAlpha, -- int w, int h, SplashCoord *mat); -- -- //~ drawMaskedImage -- -- //----- misc -- -- // Return the associated bitmap. -- SplashBitmap *getBitmap(); -- -- // Toggle debug mode on or off. -- void setDebugMode(bool debugModeA); -- -- int init(const char *driverName, int outputFD, -- const char *printerModel, int nOptions, -- const char *optionKeys[], const char *optionVals[]); -- void initGS(int colorMode, int w, int h, SplashColor paperColor); -- int setColorMode(int colorModeA, bool colorProfile); -- int unloadVectorDriver(); -- -- int OPVPStartJob(char *jobInfo); -- int OPVPEndJob(); -- int OPVPStartDoc(char *docInfo); -- int OPVPEndDoc(); -- int OPVPStartPage(char *pageInfo, int rasterWidth); -- int OPVPEndPage(); -- int outSlice(); -- Splash *getSplash() { return splash; } -- int getRasterMode() { return rasterMode; } -- void endPage(); -- SplashCoord *getMatrix(); -- --private: -- int rasterMode; -- OPVPSplash *opvpSplash; -- Splash *splash; -- OPVPWrapper *opvp; -- int getRasterSize(SplashBitmap *bitmap); -- -- typedef unsigned char *(*GetScanLineDataFunT)(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth); -- -- static unsigned char *getScanLineDataMono1(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth); -- static unsigned char *getScanLineDataMono8(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth); -- static unsigned char *getScanLineDataRGB8(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth); -- static unsigned char *getScanLineDataBGR8Packed(unsigned char *dst, -- unsigned char *bitmap, int rasterWidth); -- -- GetScanLineDataFunT getGetScanLineDataFun(SplashBitmap *bitmap); -- bool checkAll1(unsigned char *bp, int n, int width, int mode); --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPSplash.cxx b/filter/pdftoopvp/oprs/OPVPSplash.cxx -deleted file mode 100644 -index 89b7d33..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplash.cxx -+++ /dev/null -@@ -1,2293 +0,0 @@ --//======================================================================== --// --// OPVPSplash.cc --// --//======================================================================== -- --#include <config.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#ifdef USE_GCC_PRAGMAS --#pragma implementation --#endif -- --#include <stdlib.h> --#include <string.h> --#include <math.h> --#include <limits.h> --#include "goo/gmem.h" --#include "splash/SplashErrorCodes.h" --#include "splash/SplashMath.h" --#include "splash/SplashBitmap.h" --#include "splash/SplashXPathScanner.h" --#include "splash/SplashPattern.h" --#include "splash/SplashScreen.h" --#include "splash/SplashFont.h" --#include "splash/SplashGlyphBitmap.h" --#include "splash/Splash.h" --#include "OPRS.h" --#include "OPVPSplashState.h" --#include "OPVPSplash.h" --#include "OPVPSplashPath.h" --#include "OPVPSplashXPath.h" --#include "OPVPSplashClip.h" -- --//------------------------------------------------------------------------ --// OPVPSplash --//------------------------------------------------------------------------ -- --inline void OPVPSplash::transform(SplashCoord *matrix, -- SplashCoord xi, SplashCoord yi, -- SplashCoord *xo, SplashCoord *yo) { -- // [ m[0] m[1] 0 ] -- // [xo yo 1] = [xi yi 1] * [ m[2] m[3] 0 ] -- // [ m[4] m[5] 1 ] -- *xo = xi * matrix[0] + yi * matrix[2] + matrix[4]; -- *yo = xi * matrix[1] + yi * matrix[3] + matrix[5]; --} -- --OPVPSplash::OPVPSplash(OPVPWrapper *opvpA, -- int nOptions, const char *optionKeys[], const char *optionVals[]) --{ -- const char *opv; -- -- opvp = opvpA; -- // with default screen params -- state = new OPVPSplashState(0,0,false,(SplashScreenParams *)NULL); -- debugMode = false; -- stateBypass = false; -- clipPath = 0; -- if (getOption("OPVP_OLDLIPSDRIVER",nOptions, -- optionKeys,optionVals) != NULL) { -- oldLipsDriver = true; -- } else { -- oldLipsDriver = false; -- } -- if (getOption("OPVP_CLIPPATHNOTSAVED",nOptions, -- optionKeys,optionVals) != NULL) { -- clipPathNotSaved = true; -- } else { -- clipPathNotSaved = false; -- } -- if (getOption("OPVP_NOSHEARIMAGE",nOptions, -- optionKeys,optionVals) != NULL) { -- noShearImage = true; -- } else { -- noShearImage = false; -- } -- if (getOption("OPVP_NOLINESTYLE",nOptions, -- optionKeys,optionVals) != NULL) { -- noLineStyle = true; -- } else { -- noLineStyle = false; -- } -- if (!opvpA->supportSetLineStyle || !opvpA->supportSetLineDash -- || !opvpA->supportSetLineDashOffset) { -- noLineStyle = true; -- } -- if (getOption("OPVP_NOCLIPPATH",nOptions, -- optionKeys,optionVals) != NULL) { -- noClipPath = true; -- } else { -- noClipPath = false; -- } -- if (getOption("OPVP_IGNOREMITERLIMIT",nOptions, -- optionKeys,optionVals) != NULL) { -- ignoreMiterLimit = true; -- } else { -- ignoreMiterLimit = false; -- } -- if (getOption("OPVP_NOMITERLIMIT",nOptions, -- optionKeys,optionVals) != NULL) { -- noMiterLimit = true; -- } else { -- noMiterLimit = false; -- } -- if (!opvpA->supportSetMiterLimit) { -- noMiterLimit = true; -- } -- if ((opv = getOption("OPVP_BITMAPCHARTHRESHOLD",nOptions, -- optionKeys,optionVals)) != NULL) { -- bitmapCharThreshold = atoi(opv); -- } else { -- bitmapCharThreshold = OPVP_BITMAPCHAR_THRESHOLD; -- } -- if ((opv = getOption("OPVP_MAXCLIPPATHLENGTH",nOptions, -- optionKeys,optionVals)) != NULL) { -- maxClipPathLength = atoi(opv); -- } else { -- maxClipPathLength = OPVP_MAX_CLIPPATH_LENGTH; -- } -- if ((opv = getOption("OPVP_MAXFILLPATHLENGTH",nOptions, -- optionKeys,optionVals)) != NULL) { -- maxFillPathLength = atoi(opv); -- } else { -- maxFillPathLength = OPVP_MAX_FILLPATH_LENGTH; -- } -- if (getOption("OPVP_NOIMAGEMASK",nOptions, -- optionKeys,optionVals) != NULL) { -- noImageMask = true; -- } else { -- noImageMask = false; -- } -- if (getOption("OPVP_NOBITMAPCHAR",nOptions, -- optionKeys,optionVals) != NULL) { -- bitmapCharThreshold = 0; -- } -- if (!opvpA->supportSetClipPath) { -- noClipPath = true; -- } -- savedNoClipPath = noClipPath; -- saveDriverStateCount = 0; -- if (noImageMask) { -- /* We draw bitmapChar with imageMask feature. -- So, when noImageMask, noBitmapChar */ -- bitmapCharThreshold = 0; -- } --#ifdef OPTION_DEBUG --fprintf(stderr,"noClipPath=%d\n",noClipPath); --fprintf(stderr,"oldLipsDriver=%d\n",oldLipsDriver); --fprintf(stderr,"noLineStyle=%d\n",noLineStyle); --fprintf(stderr,"noMiterLimit=%d\n",noMiterLimit); --fprintf(stderr,"ignoreMiterLimit=%d\n",ignoreMiterLimit); --fprintf(stderr,"noShearImage=%d\n",noShearImage); --fprintf(stderr,"clipPathNotSaved=%d\n",clipPathNotSaved); --fprintf(stderr,"bitmapCharThreshold=%d\n",bitmapCharThreshold); --fprintf(stderr,"maxClipPathLength=%d\n",maxClipPathLength); --#endif --} -- --OPVPSplash::~OPVPSplash() --{ -- while (state->next) { -- restoreState(); -- } -- delete state; -- if (opvp->supportClosePrinter) { -- opvp->ClosePrinter(); -- } -- delete opvp; --} -- --//------------------------------------------------------------------------ --// state read --//------------------------------------------------------------------------ -- -- --SplashPattern *OPVPSplash::getStrokePattern() { -- return state->strokePattern; --} -- --SplashPattern *OPVPSplash::getFillPattern() { -- return state->fillPattern; --} -- --SplashScreen *OPVPSplash::getScreen() { -- return state->screen; --} -- --SplashCoord OPVPSplash::getLineWidth() { -- return state->lineWidth; --} -- --int OPVPSplash::getLineCap() { -- return state->lineCap; --} -- --int OPVPSplash::getLineJoin() { -- return state->lineJoin; --} -- --SplashCoord OPVPSplash::getMiterLimit() { -- return state->miterLimit; --} -- --SplashCoord OPVPSplash::getFlatness() { -- return state->flatness; --} -- --SplashCoord *OPVPSplash::getLineDash() { -- return state->lineDash; --} -- --int OPVPSplash::getLineDashLength() { -- return state->lineDashLength; --} -- --SplashCoord OPVPSplash::getLineDashPhase() { -- return state->lineDashPhase; --} -- --OPVPSplashClip *OPVPSplash::getClip() { -- return state->clip; --} -- --//------------------------------------------------------------------------ --// state write --//------------------------------------------------------------------------ -- --opvp_cspace_t OPVPSplash::getOPVPColorSpace() --{ -- switch (colorMode) { -- case splashModeMono1: -- return OPVP_CSPACE_BW; -- break; -- case splashModeMono8: -- return OPVP_CSPACE_DEVICEGRAY; -- break; -- case splashModeRGB8: -- default: -- break; -- } -- return OPVP_CSPACE_STANDARDRGB; --} -- --void OPVPSplash::makeBrush(SplashPattern *pattern, opvp_brush_t *brush) --{ -- brush->colorSpace = getOPVPColorSpace(); -- brush->pbrush = NULL; -- brush->color[3] = -1; -- brush->xorg = brush->yorg = 0; -- if (pattern == NULL) { -- /* set default black color */ -- brush->color[2] = 0; -- brush->color[1] = 0; -- brush->color[0] = 0; -- } else if (typeid(*pattern) == typeid(SplashSolidColor)) { -- /* solid color */ -- SplashColor color; -- -- pattern->getColor(0,0,color); -- switch (colorMode) { -- case splashModeMono1: -- brush->color[2] = color[0]; -- brush->color[1] = 0; -- brush->color[0] = 0; -- break; -- case splashModeMono8: -- brush->color[2] = color[0]; -- brush->color[1] = 0; -- brush->color[0] = 0; -- break; -- case splashModeRGB8: -- brush->color[2] = splashRGB8R(color); -- brush->color[1] = splashRGB8G(color); -- brush->color[0] = splashRGB8B(color); -- break; -- default: -- OPRS::error("Unknown color mode\n"); -- brush->color[2] = splashRGB8R(color); -- brush->color[1] = splashRGB8G(color); -- brush->color[0] = splashRGB8B(color); -- break; -- } -- } else { -- /* error */ -- return; -- } --} -- --bool OPVPSplash::equalPattern(SplashPattern *pat1, SplashPattern *pat2) --{ -- SplashColor c1, c2; -- if (pat1 == NULL || pat2 == NULL) { -- return pat1 == pat2; -- } -- if (typeid(*pat1) != typeid(*pat2)) return false; -- -- pat1->getColor(0,0,c1); -- pat2->getColor(0,0,c2); -- switch (colorMode) { -- case splashModeMono1: -- return c1[0] == c2[0]; -- break; -- case splashModeMono8: -- return c1[0] == c2[0]; -- break; -- case splashModeRGB8: -- return c1[0] == c2[0] && c1[1] == c2[1] && c1[2] == c2[2]; -- break; -- default: -- break; -- } -- return true; --} -- --void OPVPSplash::setStrokePattern(SplashPattern *strokePattern) { -- opvp_brush_t brush; -- -- if (!stateBypass && equalPattern(strokePattern,state->strokePattern)) { -- delete strokePattern; -- return; -- } -- state->setStrokePattern(strokePattern); -- makeBrush(strokePattern,&brush); -- if (opvp->SetStrokeColor(&brush) != 0) { -- OPRS::error("SetStrokeColor error\n"); -- return; -- } --} -- --void OPVPSplash::setFillPattern(SplashPattern *fillPattern) { -- opvp_brush_t brush; -- -- if (!stateBypass && equalPattern(fillPattern,state->fillPattern)) { -- delete fillPattern; -- return; -- } -- state->setFillPattern(fillPattern); -- makeBrush(fillPattern,&brush); -- if (opvp->SetFillColor(&brush) != 0) { -- OPRS::error("SetFillColor error\n"); -- return; -- } --} -- --void OPVPSplash::setScreen(SplashScreen *screen) { -- state->setScreen(screen); --} -- --void OPVPSplash::setLineWidth(SplashCoord lineWidth) { -- if (stateBypass || state->lineWidth != lineWidth) { -- opvp_fix_t width; -- -- state->lineWidth = lineWidth; -- OPVP_F2FIX(lineWidth,width); -- if (opvp->SetLineWidth(width) < 0) { -- OPRS::error("SetLineWidth error\n"); -- return; -- } -- } --} -- --void OPVPSplash::setLineCap(int lineCap) { -- if (stateBypass || state->lineCap != lineCap) { -- opvp_linecap_t cap; -- -- state->lineCap = lineCap; -- switch (lineCap) { -- case splashLineCapButt: -- cap = OPVP_LINECAP_BUTT; -- break; -- case splashLineCapRound: -- cap = OPVP_LINECAP_ROUND; -- break; -- case splashLineCapProjecting: -- cap = OPVP_LINECAP_SQUARE; -- break; -- default: -- /* error */ -- cap = OPVP_LINECAP_BUTT; -- break; -- } -- if (opvp->SetLineCap(cap) < 0) { -- OPRS::error("SetLineCap error\n"); -- return; -- } -- } --} -- --void OPVPSplash::setLineJoin(int lineJoin) { -- if (stateBypass || state->lineJoin != lineJoin) { -- opvp_linejoin_t join; -- -- state->lineJoin = lineJoin; -- switch (lineJoin) { -- case splashLineJoinMiter: -- join = OPVP_LINEJOIN_MITER; -- break; -- case splashLineJoinRound: -- join = OPVP_LINEJOIN_ROUND; -- break; -- case splashLineJoinBevel: -- join = OPVP_LINEJOIN_BEVEL; -- break; -- default: -- /* error */ -- join = OPVP_LINEJOIN_MITER; -- break; -- } -- if (opvp->SetLineJoin(join) < 0) { -- OPRS::error("SetLineJoin error\n"); -- return; -- } -- } --} -- --void OPVPSplash::setMiterLimit(SplashCoord miterLimit) { -- if (stateBypass || state->miterLimit != miterLimit) { -- opvp_fix_t limit; -- -- state->miterLimit = miterLimit; -- if (noMiterLimit) return; -- if (oldLipsDriver) { -- /* for old driver for lips */ -- /* miterLimit is length/2 */ -- miterLimit = miterLimit*state->lineWidth*0.5; -- } -- OPVP_F2FIX(miterLimit,limit); -- if (opvp->SetMiterLimit(limit) < 0) { -- OPRS::error("SetMiterLimit error\n"); -- return; -- } -- } --} -- --void OPVPSplash::setFlatness(SplashCoord flatness) { -- if (flatness < 1) { -- state->flatness = 1; -- } else { -- state->flatness = flatness; -- } --} -- --void OPVPSplash::setLineDash(SplashCoord *lineDash, int lineDashLength, -- SplashCoord lineDashPhase) { -- int i; -- opvp_fix_t *pdash; -- bool equal; -- -- if (stateBypass || lineDash != state->lineDash) { -- if (lineDash == NULL || lineDashLength == 0) { -- if (!noLineStyle -- && opvp->SetLineStyle(OPVP_LINESTYLE_SOLID) < 0) { -- OPRS::error("SetLineStyle error\n"); -- return; -- } -- state->setLineDash(lineDash, lineDashLength, lineDashPhase); -- return; -- } else if (stateBypass || state->lineDash == NULL) { -- if (!noLineStyle -- && opvp->SetLineStyle(OPVP_LINESTYLE_DASH) < 0) { -- OPRS::error("SetLineStyle error\n"); -- return; -- } -- } -- } -- if (lineDash == NULL || lineDashLength == 0) return; -- if (!noLineStyle) { -- equal = (state->lineDash != NULL); -- pdash = new opvp_fix_t[lineDashLength]; -- for (i = 0;i < lineDashLength;i++) { -- if (equal && lineDash[i] != state->lineDash[i]) equal = false; -- OPVP_F2FIX(lineDash[i],pdash[i]); -- } -- if (!equal && opvp->SetLineDash(lineDashLength,pdash) < 0) { -- OPRS::error("SetLineDash error\n"); -- goto err; -- } -- if (stateBypass || lineDashPhase != state->lineDashPhase) { -- opvp_fix_t offset; -- -- OPVP_F2FIX(lineDashPhase,offset); -- if (opvp->SetLineDashOffset(offset) < 0) { -- OPRS::error("SetLineDashOffset error\n"); -- goto err; -- } -- } --err: -- delete[] pdash; -- } -- state->setLineDash(lineDash, lineDashLength, lineDashPhase); --} -- --SplashError OPVPSplash::doClipPath(OPVPSplashPath *path, bool eo, -- OPVPClipPath *prevClip) --{ -- SplashError result; -- -- if (path->getLength() > maxClipPathLength) { -- if (!noClipPath) { -- if (prevClip != 0 && -- prevClip->getPath()->getLength() <= maxClipPathLength) { -- /* previous clipping is printer clipping */ -- if (opvp->ResetClipPath() != 0) { -- OPRS::error("ResetClipPath error\n"); -- return splashErrOPVP; -- } -- } -- noClipPath = true; -- } -- } else { -- noClipPath = savedNoClipPath; -- } -- if (!noClipPath && path->getLength() > 0) { -- /* when path->length == 0, no drawable arae, and no output -- so, it isn't need to set ClipPath */ -- if ((result = path->makePath(opvp)) != splashOk) { -- return result; -- } -- if (opvp->SetClipPath( -- eo ? OPVP_CLIPRULE_EVENODD : OPVP_CLIPRULE_WINDING) < 0) { -- OPRS::error("SetClipPath error\n"); -- return splashErrOPVP; -- } -- } -- return splashOk; --} -- --SplashError OPVPSplash::makeRectanglePath(SplashCoord x0, -- SplashCoord y0, SplashCoord x1, SplashCoord y1, OPVPSplashPath **p) --{ -- SplashError result; -- -- *p = new OPVPSplashPath(); -- if ((result = (*p)->moveTo(x0,y0)) != splashOk) return result; -- if ((result = (*p)->lineTo(x1,y0)) != splashOk) return result; -- if ((result = (*p)->lineTo(x1,y1)) != splashOk) return result; -- if ((result = (*p)->lineTo(x0,y1)) != splashOk) return result; -- if ((result = (*p)->close()) != splashOk) return result; -- return splashOk; --} -- --void OPVPSplash::clipResetToRect(SplashCoord x0, SplashCoord y0, -- SplashCoord x1, SplashCoord y1) { -- OPVPSplashPath *p; -- OPVPClipPath *cp; -- -- while ((cp = OPVPClipPath::pop()) != NULL) delete cp; -- if (clipPath != 0) { -- delete clipPath; -- clipPath = 0; -- } -- -- if (makeRectanglePath(x0,y0,x1,y1,&p) != splashOk) return; -- -- if (doClipPath(p,true,clipPath) != splashOk) return; -- clipPath = new OPVPClipPath(p,true); -- state->clip->resetToRect(x0, y0, x1, y1); --} -- --SplashError OPVPSplash::clipToPath(OPVPSplashPath *path, bool eo) { -- SplashError result; -- SplashCoord x0, y0, x1, y1; -- SplashCoord x2, y2, x3, y3; -- SplashClipResult clipResult; -- int xMin, yMin, xMax, yMax; -- -- if (path == 0) return splashErrBogusPath; -- if (path->getLength() == 0) return splashOk; -- if (clipPath == 0) { -- /* no clip region exist */ -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = path->copy(); -- } else { -- OPVPSplashPath *oldPath = clipPath->getPath(); -- if (path->isRectanglePath(&x0,&y0,&x1,&y1)) { -- if ((clipResult = state->clip->testRect( -- splashRound(x0), splashRound(y0), splashRound(x1), splashRound(y1))) -- == splashClipAllOutside) { -- /* no drawable area */ -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = new OPVPSplashPath(); -- } else if (clipResult == splashClipPartial) { -- if (oldPath->isRectanglePath(&x2,&y2,&x3,&y3)) { -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- /* both rectangle */ -- if (x0 < x2) x0 = x2; -- if (y0 < y2) y0 = y2; -- if (x1 > x3) x1 = x3; -- if (y1 > y3) y1 = y3; -- if ((result = makeRectanglePath(x0,y0,x1,y1,&path)) != splashOk) { -- return result; -- } -- } else { -- state->clip->getBBox(&xMin,&yMin,&xMax,&yMax); -- if (splashRound(x0) <= xMin && splashRound(y0) <= yMin -- && splashRound(x1) >= xMax && splashRound(y1)) { -- /* The old path is all inside the new path */ -- /* We may ignore the new path */ -- return splashOk; -- } -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- if (state->clip->getNumPaths() > 0) { -- path = state->clip->makePath(); -- } else { -- path = new OPVPSplashPath(); -- } -- } -- } else { -- /* splashClipAllInside */ -- /* We may ignore the previous region. */ -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = path->copy(); -- } -- } else { -- /* non rectangle path */ -- -- OPVPSplashXPath *xpath = new OPVPSplashXPath(path, state->matrix, -- state->flatness, false); -- -- xpath->sort(); -- SplashXPathScanner *scanner = new SplashXPathScanner(xpath,eo, -- INT_MIN,INT_MAX); -- scanner->getBBox(&xMin,&yMin,&xMax,&yMax); -- delete scanner; -- delete xpath; -- if ((clipResult = state->clip->testRect(xMin,yMin,xMax,yMax)) -- == splashClipAllOutside) { -- /* no efect */ -- /* no drawable area */ -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = new OPVPSplashPath(); -- } else if (clipResult == splashClipPartial) { -- OPVPSplashClip *nclip = new OPVPSplashClip(xMin,yMin,xMax,yMax,false); -- nclip->clipToPath(path,state->matrix,state->flatness,eo); -- state->clip->getBBox(&xMin,&yMin,&xMax,&yMax); -- if ((clipResult = nclip->testRect(xMin,yMin,xMax,yMax)) -- == splashClipAllOutside) { -- /* no drawable area */ -- delete nclip; -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = new OPVPSplashPath(); -- } else { -- delete nclip; -- if (clipResult == splashClipAllInside) { -- /* The old path is all inside the new path */ -- /* We may ignore the new path */ -- return splashOk; -- } -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- if (state->clip->getNumPaths() > 0) { -- path = state->clip->makePath(); -- } else { -- path = new OPVPSplashPath(); -- } -- } -- } else { -- /* splashClipAllInside */ -- /* We may ignore the previous region. */ -- if ((result = state->clip->clipToPath(path, state->matrix, -- state->flatness, eo)) != splashOk) { -- return result; -- } -- path = path->copy(); -- } -- } -- } -- if ((result = doClipPath(path,eo,clipPath)) != splashOk) { -- delete path; -- return result; -- } -- if (clipPath != 0) delete clipPath; -- clipPath = new OPVPClipPath(path,eo); -- -- return splashOk; --} -- --//------------------------------------------------------------------------ --// state save/restore --//------------------------------------------------------------------------ -- --void OPVPSplash::saveState() { -- OPVPSplashState *newState; -- -- newState = state->copy(); -- newState->next = state; -- state = newState; -- if (clipPath != 0) clipPath->push(); -- if (opvp->SaveGS() != 0) { -- OPRS::error("SaveGS error\n"); -- return; -- } -- saveDriverStateCount++; --} -- --SplashError OPVPSplash::restoreState() { -- OPVPSplashState *oldState; -- OPVPClipPath *oldClip; -- OPVPSplashPath *path; -- bool saved = false; -- -- if (!state->next) { -- return splashErrNoSave; -- } -- oldState = state; -- state = state->next; -- delete oldState; -- if (saveDriverStateCount > 0 && opvp->RestoreGS() != 0) { -- OPRS::error("RestoreGS error\n"); -- return splashErrOPVP; -- } -- saveDriverStateCount--; -- oldClip = clipPath; -- if (clipPath != 0) { -- saved = clipPath->getSaved(); -- delete clipPath; -- clipPath = 0; -- } -- clipPath = OPVPClipPath::pop(); -- if (clipPath != 0) { -- path = clipPath->getPath(); -- if (path->getLength() > maxClipPathLength) { -- if (clipPathNotSaved && !noClipPath) { -- if (opvp->ResetClipPath() != 0) { -- OPRS::error("ResetClipPath error\n"); -- return splashErrOPVP; -- } -- noClipPath = true; -- } -- } else { -- noClipPath = savedNoClipPath; -- } -- } else { -- noClipPath = savedNoClipPath; -- } -- if (clipPathNotSaved && !noClipPath) { -- if (clipPath != 0) { -- if (!saved) { -- SplashError result; -- -- if ((result = doClipPath(clipPath->getPath(),clipPath->getEo(), -- oldClip)) -- != splashOk) return result; -- } -- } else if (oldClip != 0) { -- if (opvp->ResetClipPath() != 0) { -- OPRS::error("ResetClipPath error\n"); -- return splashErrOPVP; -- } -- } -- } -- return splashOk; --} -- --//------------------------------------------------------------------------ --// drawing operations --//------------------------------------------------------------------------ -- --void OPVPSplash::clear(SplashColor color) --{ -- opvp_brush_t brush; -- -- brush.colorSpace = getOPVPColorSpace(); -- brush.pbrush = NULL; -- brush.color[3] = -1; -- brush.xorg = brush.yorg = 0; -- switch (colorMode) { -- case splashModeMono1: -- brush.color[2] = color[0]; -- brush.color[1] = 0; -- brush.color[0] = 0; -- break; -- case splashModeMono8: -- brush.color[2] = color[0]; -- brush.color[1] = 0; -- brush.color[0] = 0; -- break; -- case splashModeRGB8: -- brush.color[2] = splashRGB8R(color); -- brush.color[1] = splashRGB8G(color); -- brush.color[0] = splashRGB8B(color); -- break; -- default: -- OPRS::error("Unknown color mode\n"); -- brush.color[2] = splashRGB8R(color); -- brush.color[1] = splashRGB8G(color); -- brush.color[0] = splashRGB8B(color); -- break; -- } -- opvp->SetBgColor(&brush); --} -- --/* -- Translate arc to Bezier Curve -- -- input start point (x0,y0) , center (cx, cy) and end point (x3, y3) -- return Bezier curve control points (rx1,ry1 and rx2, ry2) -- -- an angle should be less than eqaul 90 degree -- --*/ --void OPVPSplash::arcToCurve(SplashCoord x0, SplashCoord y0, -- SplashCoord x3, SplashCoord y3, -- SplashCoord cx, SplashCoord cy, SplashCoord *rx1, SplashCoord *ry1, -- SplashCoord *rx2, SplashCoord *ry2) --{ --#define ROTX(x,y) (x*rotcos-y*rotsin)*r+cx --#define ROTY(x,y) (x*rotsin+y*rotcos)*r+cy -- -- SplashCoord x1,y1,x2,y2; -- SplashCoord r; -- SplashCoord rotcos, rotsin; -- SplashCoord ox,oy,hx,hy,d; -- -- hx = (x0+x3)/2; -- hy = (y0+y3)/2; -- r = splashDist(x0,y0,cx,cy); -- d = splashDist(x0,y0,hx,hy); -- rotcos = (hx-cx)/d; -- rotsin = (hy-cy)/d; -- oy = (splashDist(x0,y0,x3,y3)/2)/r; -- ox = splashDist(hx,hy,cx,cy)/r; -- x1 = ((4-ox)/3); -- y1 = ((1-ox)*(3-ox)/(3*oy)); -- x2 = x1; -- y2 = -y1; -- *rx1 = ROTX(x1,y1); -- *ry1 = ROTY(x1,y1); -- *rx2 = ROTX(x2,y2); -- *ry2 = ROTY(x2,y2); --#undef ROTX --#undef ROTY --} -- --SplashError OPVPSplash::strokeByMyself(OPVPSplashPath *path) --{ -- SplashPath *dPath; -- OPVPSplashPath *oPath; -- Splash *osplash; -- SplashPattern *savedPattern; -- -- /* draw dashed line by myself */ -- if (path->getLength() == 0) { -- return splashOk; -- } -- -- osplash = new Splash(new SplashBitmap(1,1,4,splashModeMono1,false),false); -- state->setState(osplash); -- dPath = osplash->makeStrokePath(path,state->lineWidth); -- oPath = new OPVPSplashPath(dPath); -- delete dPath; -- -- if (state->lineWidth <= 1) { -- OPVPSplashXPath *xPath; -- xPath = new OPVPSplashXPath(oPath, state->matrix, state->flatness, false); -- xPath->strokeNarrow(this,state); -- delete xPath; -- } else { -- /* change fill pattern temprarily */ -- savedPattern = state->fillPattern->copy(); -- setFillPattern(state->strokePattern->copy()); -- -- fillByMyself(oPath,false); -- -- /* restore fill pattern */ -- setFillPattern(savedPattern); -- } -- delete osplash; -- return splashOk; --} -- --SplashError OPVPSplash::stroke(OPVPSplashPath *path) { -- SplashError result; -- -- if (clipPath != 0 && clipPath->getPath()->getLength() == 0) { -- return splashOk; -- } -- if ((state->lineDash != NULL -- && state->lineDashLength > 0 && noLineStyle)) { -- return strokeByMyself(path); -- } -- if (noMiterLimit && (!ignoreMiterLimit) && state->lineWidth != 0 -- && state->lineJoin == splashLineJoinMiter) { -- return strokeByMyself(path); -- } -- if (noClipPath) { -- int xMin, yMin, xMax, yMax; -- SplashClipResult clipResult; -- int fatOffset = splashCeil(state->lineWidth/2); -- int miterLimit = splashCeil(state->miterLimit/2); -- -- if (fatOffset < miterLimit) fatOffset = miterLimit; -- path->getBBox(&xMin,&yMin,&xMax,&yMax); -- xMin -= fatOffset; -- yMin -= fatOffset; -- xMax += fatOffset; -- yMax += fatOffset; -- clipResult = state->clip->testRect(xMin,yMin,xMax,yMax); -- if (clipResult == splashClipAllOutside) { -- /* not need to draw */ -- return splashOk; -- } else if (clipResult == splashClipPartial) { -- return strokeByMyself(path); -- } -- /* splashClipAllInside */ -- /* fall through */ -- } -- if ((result = path->makePath(opvp)) != 0) return result; -- if (opvp->StrokePath() < 0) { -- OPRS::error("StrokePath error\n"); -- return splashErrOPVP; -- } -- return splashOk; --} -- --SplashError OPVPSplash::fillByMyself(OPVPSplashPath *path, bool eo) --{ -- OPVPSplashXPath *xPath; -- SplashXPathScanner *scanner; -- int xMinI, yMinI, xMaxI, yMaxI, x0, x1, y; -- SplashClipResult clipRes, clipRes2; -- -- if (path->getLength() == 0) { -- return splashOk; -- } -- xPath = new OPVPSplashXPath(path, state->matrix, state->flatness, true); -- xPath->sort(); -- scanner = new SplashXPathScanner(xPath, eo, INT_MIN, INT_MAX); -- -- // get the min and max x and y values -- scanner->getBBox(&xMinI, &yMinI, &xMaxI, &yMaxI); -- -- // check clipping -- if ((clipRes = state->clip->testRect(xMinI, yMinI, xMaxI, yMaxI)) -- != splashClipAllOutside) { -- SplashPattern *savedPattern; -- -- /* change stroke pattern temporarily */ -- savedPattern = state->strokePattern->copy(); -- setStrokePattern(state->fillPattern->copy()); -- -- for (y = yMinI; y < yMaxI; ++y) { --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- SplashXPathScanIterator iterator(*scanner, y); -- while (iterator.getNextSpan(&x0, &x1)) --#else -- while (scanner->getNextSpan(y, &x0, &x1)) --#endif -- { -- if (x0 == x1) continue; -- if (clipRes == splashClipAllInside) { -- drawSpan(x0, x1-1, y, true); -- } else { -- clipRes2 = state->clip->testSpan(x0, x1, y); -- drawSpan(x0, x1-1, y, clipRes2 == splashClipAllInside); -- } -- } -- } -- /* restore stroke pattern */ -- setStrokePattern(savedPattern); -- } -- -- delete scanner; -- delete xPath; -- return splashOk; --} -- --SplashError OPVPSplash::fill(OPVPSplashPath *path, bool eo) { -- SplashError result; -- opvp_fillmode_t mode; -- -- if (path->getLength() <= 1) return splashOk; -- if (clipPath != 0 && clipPath->getPath()->getLength() == 0) { -- return splashOk; -- } -- if (path->getLength() > maxFillPathLength) { -- return fillByMyself(path,eo); -- } -- if (noClipPath) { -- int xMin, yMin, xMax, yMax; -- SplashClipResult clipResult; -- -- path->getBBox(&xMin,&yMin,&xMax,&yMax); -- clipResult = state->clip->testRect(xMin,yMin,xMax,yMax); -- if (clipResult == splashClipAllOutside) { -- /* not need to draw */ -- return splashOk; -- } else if (clipResult == splashClipPartial) { -- return fillByMyself(path,eo); -- } -- /* splashClipAllInside */ -- /* fall through */ -- } -- if ((result = path->makePath(opvp)) != 0) return result; -- mode = eo ? OPVP_FILLMODE_EVENODD : OPVP_FILLMODE_WINDING; -- if (opvp->SetFillMode(mode) < 0) { -- OPRS::error("SetFillMode error\n"); -- return splashErrOPVP; -- } -- if (opvp->FillPath() < 0) { -- OPRS::error("FillPath error\n"); -- return splashErrOPVP; -- } -- return splashOk; --} -- --void OPVPSplash::fillGlyph(SplashCoord x, SplashCoord y, -- SplashGlyphBitmap *glyph) --{ -- opvp_fix_t opvpx,opvpy; -- int opvpbytes; -- int x0, y0; -- Guchar *bp; -- SplashClipResult clipRes; -- SplashCoord xt, yt; -- -- transform(state->matrix,x,y,&xt,&yt); -- x0 = splashFloor(xt)-glyph->x; -- y0 = splashFloor(yt)-glyph->y; -- clipRes = state->clip->testRect(x0,y0, -- x0 + glyph->w - 1, -- y0 + glyph->h - 1); -- if (clipRes == splashClipAllOutside) return; -- OPVP_i2Fix((x0),(opvpx)); -- OPVP_i2Fix((y0),(opvpy)); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- } -- -- if (oldLipsDriver && (((glyph->w+7)/8) & 3) != 0) { -- /* not 4bytes aligned, so make aligned */ -- int i; -- int m = (glyph->w+7)/8; -- -- opvpbytes = (m+3)/4; -- opvpbytes *= 4; -- bp = (Guchar *)gmallocn(glyph->h,opvpbytes); -- for (i = 0;i < glyph->h;i++) { -- memcpy(bp+i*opvpbytes,glyph->data+i*m,m); -- } -- } else { -- bp = glyph->data; -- opvpbytes = (glyph->w+7)/8; -- } -- if ((!noClipPath || clipRes != splashClipPartial) && !noImageMask) { -- if (opvp->DrawImage(glyph->w,glyph->h,opvpbytes,OPVP_IFORMAT_MASK, -- glyph->w,glyph->h,(void *)bp) < 0) { -- OPRS::error("DrawImage error\n"); -- } -- } else { -- int tx,ty; -- int sx = 0; -- SplashPattern *savedPattern; -- SplashCoord *savedLineDash = 0; -- int savedLineDashLength; -- SplashCoord savedLineDashPhase; -- SplashCoord savedLineWidth; -- -- /* change stroke pattern temprarily */ -- savedPattern = state->strokePattern->copy(); -- setStrokePattern(state->fillPattern->copy()); -- /* change lins style temporarily */ -- savedLineDashLength = state->lineDashLength; -- savedLineDashPhase = state->lineDashPhase; -- if (savedLineDashLength > 0 && state->lineDash != 0) { -- savedLineDash = new SplashCoord[savedLineDashLength]; -- memcpy(savedLineDash, state->lineDash, -- savedLineDashLength*sizeof(SplashCoord)); -- } -- setLineDash(0,0,0); -- savedLineWidth = state->lineWidth; -- setLineWidth(0.0); -- -- -- for (ty = 0;ty < glyph->h;ty++) { -- bool dmode = false; -- for (tx = 0;tx < glyph->w;tx++) { -- bool on = (bp[opvpbytes*ty+(tx/8)] & (0x80 >> (tx & 7))) != 0; -- -- if (on && !dmode) { -- sx = tx; -- dmode = true; -- } else if (!on && dmode) { -- drawSpan(x0+sx,x0+tx-1,y0+ty,true); -- dmode = false; -- } -- } -- if (dmode) { -- drawSpan(x0+sx,x0+tx-1,y0+ty,true); -- } -- } -- /* restore stroke pattern */ -- setStrokePattern(savedPattern); -- /* restore line style */ -- setLineDash(savedLineDash,savedLineDashLength, -- savedLineDashPhase); -- if (savedLineDash != 0) { -- delete[] savedLineDash; -- } -- setLineWidth(savedLineWidth); -- } -- if (bp != glyph->data) gfree(bp); --} -- --SplashError OPVPSplash::fillChar(SplashCoord x, SplashCoord y, -- int c, SplashFont *font, -- Unicode *u, double *fontMat) { -- SplashError err = splashOk; -- SplashPath *spath; -- OPVPSplashPath *path; -- SplashCoord xt, yt; -- double mx,my; -- -- transform(state->matrix, x, y, &xt, &yt); -- if ((spath = font->getGlyphPath(c)) == 0) return splashOk; -- path = new OPVPSplashPath(spath); -- delete spath; -- if (bitmapCharThreshold > 0) { -- mx = splashAbs(fontMat[0]); -- if (mx < splashAbs(fontMat[1])) { -- mx = splashAbs(fontMat[1]); -- } -- my = splashAbs(fontMat[3]); -- if (my < splashAbs(fontMat[2])) { -- my = splashAbs(fontMat[2]); -- } -- if (path == 0 || (mx*my < bitmapCharThreshold)) { -- /* if a char is enough small, then out a char as a bitmask */ -- SplashGlyphBitmap glyph; -- int x0, y0, xFrac, yFrac; -- SplashClipResult clipRes; -- -- x0 = splashFloor(xt); -- xFrac = splashFloor((xt - x0) * splashFontFraction); -- y0 = splashFloor(yt); -- yFrac = splashFloor((yt - y0) * splashFontFraction); -- if (font->getGlyph(c, xFrac, yFrac, &glyph, x0, y0, state->clip, -- &clipRes)) { -- if (path != 0) delete path; -- if (glyph.w == 0 || glyph.h == 0) { -- /* empty glyph */ -- return splashOk; -- } -- if (clipRes != splashClipAllOutside) { -- fillGlyph(xt, yt, &glyph); -- } -- if (glyph.freeData) { -- gfree(glyph.data); -- } -- return err; -- } -- } -- /* fall through and out a char as a path */ -- } -- if (path == 0) { -- //OPRS::error("FillPath error\n"); -- err = splashErrOPVP; -- goto err0; -- } -- path->offset(xt,yt); -- err = fill(path,false); --err0: -- if (path != 0) delete path; -- return err; --} -- --SplashError OPVPSplash::fillImageMaskFastWithCTM(SplashImageMaskSource src, -- void *srcData, int w, int h, int tx, int ty,SplashCoord *mat) { -- int i, j; -- opvp_fix_t opvpx,opvpy; -- int opvpbytes; -- opvp_ctm_t opvpctm; -- Guchar *buf = 0, *bp; -- SplashError result = splashOk; -- SplashColorPtr lineBuf; -- -- opvpbytes = (w+7)/8; -- /* align 4 */ -- opvpbytes = (opvpbytes+3)/4; -- opvpbytes *= 4; -- buf = (Guchar *)gmallocn(h,opvpbytes); -- lineBuf = (SplashColorPtr)gmallocn(8,opvpbytes); -- -- for (i = 0;i < h;i++) { -- int k; -- -- bp = buf+opvpbytes*i; -- (*src)(srcData, lineBuf); -- for (j = 0;j < w;j += k) { -- Guchar d; -- -- d = 0; -- for (k = 0;k < 8 && j+k < w;k++) { -- d <<= 1; -- if (lineBuf[j+k] != 0) d |= 1; -- } -- d <<= 8-k; -- *bp++ = d; -- } -- } -- free(lineBuf); -- opvpctm.a = mat[0]; -- opvpctm.b = mat[1]; -- opvpctm.c = mat[2]; -- opvpctm.d = mat[3]; -- opvpctm.e = mat[4]; -- opvpctm.f = mat[5]; -- OPVP_i2Fix((tx),(opvpx)); -- OPVP_i2Fix((ty),(opvpy)); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- } -- -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_MASK,1,1,(void *)(buf)) < 0) { -- OPRS::error("DrawImage error\n"); -- result = splashErrOPVP; -- } -- /* reset CTM */ -- opvpctm.a = 1.0; -- opvpctm.b = 0.0; -- opvpctm.c = 0.0; -- opvpctm.d = 1.0; -- opvpctm.e = 0.0; -- opvpctm.f = 0.0; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- if (buf != 0) gfree(buf); -- return result; --} -- --SplashError OPVPSplash::fillImageMask(SplashImageMaskSource src, void *srcData, -- int w, int h, SplashCoord *mat, bool glyphMode) { -- bool rot; -- SplashCoord xScale, yScale, xShear, yShear; -- int tx, ty, scaledWidth, scaledHeight, xSign, ySign; -- int ulx, uly, llx, lly, urx, ury, lrx, lry; -- int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1; -- int xMin, xMax, yMin, yMax; -- SplashClipResult clipRes; -- SplashColorPtr pixBuf; -- SplashColorPtr p; -- int x, y; -- int i; -- SplashPattern *savedPattern; -- SplashCoord *savedLineDash = 0; -- int savedLineDashLength; -- SplashCoord savedLineDashPhase; -- SplashCoord savedLineWidth; -- -- if (debugMode) { -- printf("fillImageMask: w=%d h=%d mat=[%.2f %.2f %.2f %.2f %.2f %.2f]\n", -- w, h, mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); -- } -- -- // check for singular matrix -- if (splashAbs(mat[0] * mat[3] - mat[1] * mat[2]) < 0.000001) { -- return splashErrSingularMatrix; -- } -- -- // compute scale, shear, rotation, translation parameters -- rot = splashAbs(mat[1]) > splashAbs(mat[0]); -- if (rot) { -- xScale = -mat[1]; -- yScale = mat[2] - (mat[0] * mat[3]) / mat[1]; -- xShear = -mat[3] / yScale; -- yShear = -mat[0] / mat[1]; -- } else { -- xScale = mat[0]; -- yScale = mat[3] - (mat[1] * mat[2]) / mat[0]; -- xShear = mat[2] / yScale; -- yShear = mat[1] / mat[0]; -- } -- tx = splashRound(mat[4]); -- ty = splashRound(mat[5]); -- scaledWidth = abs(splashRound(mat[4] + xScale) - tx) + 1; -- scaledHeight = abs(splashRound(mat[5] + yScale) - ty) + 1; -- xSign = (xScale < 0) ? -1 : 1; -- ySign = (yScale < 0) ? -1 : 1; -- -- // clipping -- ulx1 = 0; -- uly1 = 0; -- urx1 = xSign * (scaledWidth - 1); -- ury1 = splashRound(yShear * urx1); -- llx1 = splashRound(xShear * ySign * (scaledHeight - 1)); -- lly1 = ySign * (scaledHeight - 1) + splashRound(yShear * llx1); -- lrx1 = xSign * (scaledWidth - 1) + -- splashRound(xShear * ySign * (scaledHeight - 1)); -- lry1 = ySign * (scaledHeight - 1) + splashRound(yShear * lrx1); -- if (rot) { -- ulx = tx + uly1; uly = ty - ulx1; -- urx = tx + ury1; ury = ty - urx1; -- llx = tx + lly1; lly = ty - llx1; -- lrx = tx + lry1; lry = ty - lrx1; -- } else { -- ulx = tx + ulx1; uly = ty + uly1; -- urx = tx + urx1; ury = ty + ury1; -- llx = tx + llx1; lly = ty + lly1; -- lrx = tx + lrx1; lry = ty + lry1; -- } -- xMin = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx -- : (llx < lrx) ? llx : lrx -- : (urx < llx) ? (urx < lrx) ? urx : lrx -- : (llx < lrx) ? llx : lrx; -- xMax = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx -- : (llx > lrx) ? llx : lrx -- : (urx > llx) ? (urx > lrx) ? urx : lrx -- : (llx > lrx) ? llx : lrx; -- yMin = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry -- : (lly < lry) ? lly : lry -- : (ury < lly) ? (ury < lry) ? ury : lry -- : (lly < lry) ? lly : lry; -- yMax = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry -- : (lly > lry) ? lly : lry -- : (ury > lly) ? (ury > lry) ? ury : lry -- : (lly > lry) ? lly : lry; -- clipRes = state->clip->testRect(xMin, yMin, xMax, yMax); -- if (clipRes == splashClipAllOutside) return splashOk; -- -- if (!noClipPath || clipRes == splashClipAllInside) { -- if (!noShearImage && !noImageMask) { -- if (fillImageMaskFastWithCTM(src,srcData,w,h,tx,ty,mat) -- == splashOk) { -- return splashOk; -- } -- } -- } -- -- SplashError result = splashOk; -- /* change stroke pattern temprarily */ -- savedPattern = state->strokePattern->copy(); -- setStrokePattern(state->fillPattern->copy()); -- -- /* change lins style temporarily */ -- savedLineDashLength = state->lineDashLength; -- savedLineDashPhase = state->lineDashPhase; -- if (savedLineDashLength > 0 && state->lineDash != 0) { -- savedLineDash = new SplashCoord[savedLineDashLength]; -- memcpy(savedLineDash, state->lineDash, -- savedLineDashLength*sizeof(SplashCoord)); -- } -- setLineDash(0,0,0); -- savedLineWidth = state->lineWidth; -- setLineWidth(0.0); -- -- /* calculate inverse matrix */ -- SplashCoord imat[4]; -- double det = mat[0] * mat[3] - mat[1] * mat[2]; -- imat[0] = mat[3]/det; -- imat[1] = -mat[1]/det; -- imat[2] = -mat[2]/det; -- imat[3] = mat[0]/det; -- -- /* read source image */ -- pixBuf = (SplashColorPtr)gmallocn(h , w); -- -- p = pixBuf; -- for (i = 0; i < h; ++i) { -- (*src)(srcData, p); -- p += w; -- } -- int width = xMax-xMin+1; -- int height = yMax-yMin+1; -- OPVPSplashClip *clip = state->clip->copy(); -- -- if (w < scaledWidth || h < scaledHeight) { -- OPVPSplashPath cpath; -- -- cpath.moveTo(tx,ty); -- cpath.lineTo(mat[0]+tx,mat[1]+ty); -- cpath.lineTo(mat[0]+mat[2]+tx,mat[1]+mat[3]+ty); -- cpath.lineTo(mat[2]+tx,mat[3]+ty); -- clip->clipToPath(&cpath,state->matrix,1.0,false); -- } -- for (y = 0;y < height;y++) { -- int dy = y+yMin-ty; -- int sx = 0; -- bool dmode = false; -- -- for (x = 0;x < width;x++) { -- if (!clip->test(x+xMin,y+yMin)) { -- if (dmode) { -- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); -- dmode = false; -- } -- continue; -- } -- int ox,oy; -- /* calculate original coordinate */ -- int dx = x+xMin-tx; -- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); -- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); -- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { -- bool on = pixBuf[oy*w+ox] != 0; -- -- if (on && !dmode) { -- dmode = true; -- sx = x; -- } else if (!on && dmode) { -- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); -- dmode = false; -- } -- } else if (dmode) { -- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); -- dmode = false; -- } -- } -- if (dmode) { -- drawSpan(xMin+sx,xMin+x-1,yMin+y,true); -- } -- } -- delete clip; -- gfree(pixBuf); -- -- /* restore stroke pattern */ -- setStrokePattern(savedPattern); -- /* restore line style */ -- setLineDash(savedLineDash,savedLineDashLength, -- savedLineDashPhase); -- if (savedLineDash != 0) { -- delete[] savedLineDash; -- } -- setLineWidth(savedLineWidth); -- -- return result; --} -- --SplashError OPVPSplash::drawImageNotShear(SplashImageSource src, -- void *srcData, -- int w, int h, -- int tx, int ty, -- int scaledWidth, int scaledHeight, -- int xSign, int ySign, bool rot) { -- int i, j; -- opvp_fix_t opvpx,opvpy; -- int opvpbytes, linesize; -- opvp_ctm_t opvpctm; -- SplashError result = splashOk; -- Guchar *buf = 0, *bp; -- SplashColorPtr lineBuf = 0, color; -- float e,f; -- int hs,he, hstep; -- int ow = w; -- int lineBufSize; -- -- if (rot) { -- int t = h; -- -- h = w; -- w = t; -- t = scaledHeight; -- scaledHeight = scaledWidth; -- scaledWidth = t; -- if (xSign != ySign) { -- xSign = xSign >= 0 ? -1 : 1; -- } else { -- ySign = ySign >= 0 ? -1 : 1; -- } -- } -- -- if (xSign > 0) { -- OPVP_i2Fix((tx),(opvpx)); -- e = tx; -- } else { -- OPVP_i2Fix((tx-scaledWidth),(opvpx)); -- e = tx-scaledWidth; -- } -- if (ySign > 0) { -- OPVP_i2Fix((ty),(opvpy)); -- f = ty; -- } else { -- OPVP_i2Fix((ty-scaledHeight),(opvpy)); -- f = ty-scaledHeight; -- } -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- return splashErrOPVP; -- } -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- linesize = w; -- opvpbytes = (w+3)/4; -- opvpbytes *= 4; -- lineBufSize = (ow+3)/4; -- lineBufSize *= 4; -- break; -- case splashModeRGB8: -- linesize = w*3;; -- opvpbytes = (w*3+3)/4; -- opvpbytes *= 4; -- lineBufSize = (ow*3+3)/4; -- lineBufSize *= 4; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- return splashErrOPVP; -- break; -- } -- if (ySign >= 0) { -- hstep = 1; -- hs = 0; -- he = h; -- } else { -- hstep = -1; -- hs = h-1; -- he = -1; -- } -- buf = (Guchar *)gmallocn(h,opvpbytes); -- lineBuf = (SplashColorPtr)gmallocn(lineBufSize,1); -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- if (rot) { -- if (xSign >= 0) { -- for (i = 0;i < w;i++) { -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = hs;j != he;j += hstep) { -- bp = buf+i+j*opvpbytes; -- *bp = *color++; -- } -- } -- } else { -- for (i = 0;i < w;i++) { -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = hs;j != he;j += hstep) { -- bp = buf+linesize-1-i+j*opvpbytes; -- *bp = *color++; -- } -- } -- } -- } else { -- if (xSign >= 0) { -- for (i = hs;i != he;i += hstep) { -- bp = buf+opvpbytes*i; -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = 0;j < w;j++) { -- *bp++ = *color++; -- } -- } -- } else { -- for (i = hs;i != he;i += hstep) { -- bp = buf+opvpbytes*i+linesize-1; -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = 0;j < w;j++) { -- *bp-- = *color++; -- } -- } -- } -- } -- break; -- case splashModeRGB8: -- if (rot) { -- if (xSign >= 0) { -- for (i = 0;i < w;i++) { -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = hs;j != he;j += hstep) { -- bp = buf+i*3+j*opvpbytes; -- bp[0] = *color++; -- bp[1] = *color++; -- bp[2] = *color++; -- } -- } -- } else { -- for (i = 0;i < w;i++) { -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = hs;j != he;j += hstep) { -- bp = buf+linesize-3-i*3+j*opvpbytes; -- bp[0] = *color++; -- bp[1] = *color++; -- bp[2] = *color++; -- } -- } -- } -- } else { -- if (xSign >= 0) { -- for (i = hs;i != he;i += hstep) { -- bp = buf+opvpbytes*i; -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = 0;j < w;j++) { -- *bp++ = *color++; -- *bp++ = *color++; -- *bp++ = *color++; -- } -- } -- } else { -- for (i = hs;i != he;i += hstep) { -- bp = buf+opvpbytes*i+linesize-1; -- (*src)(srcData, lineBuf, NULL); -- color = lineBuf; -- for (j = 0;j < w;j++) { -- *bp-- = color[2]; -- *bp-- = color[1]; -- *bp-- = color[0]; -- color += 3; -- } -- } -- } -- } -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- result = splashErrOPVP; -- goto err1; -- break; -- } -- if (lineBuf != 0) gfree(lineBuf); -- -- /* canonlisp driver use CTM only, ignores currentPoint */ -- /* So, set start point to CTM */ -- opvpctm.a = 1.0; -- opvpctm.b = 0.0; -- opvpctm.c = 0.0; -- opvpctm.d = 1.0; -- opvpctm.e = e; -- opvpctm.f = f; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_RAW, -- scaledWidth,scaledHeight,(void *)(buf)) < 0) { -- OPRS::error("DrawImage error\n"); -- result = splashErrOPVP; -- goto err1; -- } --err1: -- /* reset CTM */ -- opvpctm.e = 0.0; -- opvpctm.f = 0.0; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- if (buf != 0) gfree(buf); -- return result; --} -- --SplashError OPVPSplash::drawImageFastWithCTM(SplashImageSource src, -- void *srcData, -- int w, int h, int tx, int ty, -- SplashCoord *mat) { -- int i; -- opvp_fix_t opvpx,opvpy; -- int opvpbytes; -- opvp_ctm_t opvpctm; -- Guchar *buf = 0, *bp; -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- opvpbytes = (w+3)/4; -- opvpbytes *= 4; -- break; -- case splashModeRGB8: -- opvpbytes = (w*3+3)/4; -- opvpbytes *= 4; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- return splashErrOPVP; -- break; -- } -- buf = (Guchar *)gmallocn(h,opvpbytes); -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- for (i = 0;i < h;i++) { -- bp = buf+opvpbytes*i; -- (*src)(srcData, (SplashColorPtr)bp, NULL); -- } -- break; -- case splashModeRGB8: -- for (i = 0;i < h;i++) { -- bp = buf+opvpbytes*i; -- (*src)(srcData, (SplashColorPtr)bp, NULL); -- } -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- goto err0; -- break; -- } -- -- opvpctm.a = mat[0]; -- opvpctm.b = mat[1]; -- opvpctm.c = mat[2]; -- opvpctm.d = mat[3]; -- opvpctm.e = mat[4]; -- opvpctm.f = mat[5]; -- OPVP_i2Fix((tx),(opvpx)); -- OPVP_i2Fix((ty),(opvpy)); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- } -- -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- if (opvp->DrawImage(w,h,opvpbytes,OPVP_IFORMAT_RAW,1,1,(void *)(buf)) < 0) { -- OPRS::error("DrawImage error\n"); -- } --err0: -- /* reset CTM */ -- opvpctm.a = 1.0; -- opvpctm.b = 0.0; -- opvpctm.c = 0.0; -- opvpctm.d = 1.0; -- opvpctm.e = 0.0; -- opvpctm.f = 0.0; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- if (buf != 0) gfree(buf); -- return splashOk; --} -- --SplashError OPVPSplash::drawImage(SplashImageSource src, void *srcData, -- SplashColorMode srcMode, bool srcAlpha, -- int w, int h, SplashCoord *mat) { -- bool ok, rot; -- SplashCoord xScale, yScale, xShear, yShear; -- int tx, ty, scaledWidth, scaledHeight, xSign, ySign; -- int ulx, uly, llx, lly, urx, ury, lrx, lry; -- int ulx1, uly1, llx1, lly1, urx1, ury1, lrx1, lry1; -- int xMin, xMax, yMin, yMax; -- SplashClipResult clipRes; -- SplashColorPtr pixBuf, p; -- int x, y; -- int i; -- -- if (debugMode) { -- printf("drawImage: srcMode=%d w=%d h=%d mat=[%.2f %.2f %.2f %.2f %.2f %.2f]\n", -- srcMode, w, h, mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]); -- } -- -- // check color modes -- ok = false; // make gcc happy -- switch (colorMode) { -- case splashModeMono1: -- ok = srcMode == splashModeMono1 || srcMode == splashModeMono8; -- break; -- case splashModeMono8: -- ok = srcMode == splashModeMono8; -- break; -- case splashModeRGB8: -- ok = srcMode == splashModeRGB8; -- break; -- } -- if (!ok) { -- OPRS::error("Image Mode mismatch\n"); -- return splashErrModeMismatch; -- } -- -- // check for singular matrix -- if (splashAbs(mat[0] * mat[3] - mat[1] * mat[2]) < 0.000001) { -- OPRS::error("Image Not Singular Matrix\n"); -- return splashErrSingularMatrix; -- } -- -- // compute scale, shear, rotation, translation parameters -- rot = splashAbs(mat[1]) > splashAbs(mat[0]); -- if (rot) { -- xScale = -mat[1]; -- yScale = mat[2] - (mat[0] * mat[3]) / mat[1]; -- xShear = -mat[3] / yScale; -- yShear = -mat[0] / mat[1]; -- } else { -- xScale = mat[0]; -- yScale = mat[3] - (mat[1] * mat[2]) / mat[0]; -- xShear = mat[2] / yScale; -- yShear = mat[1] / mat[0]; -- } -- tx = splashRound(mat[4]); -- ty = splashRound(mat[5]); -- scaledWidth = abs(splashRound(mat[4] + xScale) - tx) + 1; -- scaledHeight = abs(splashRound(mat[5] + yScale) - ty) + 1; -- xSign = (xScale < 0) ? -1 : 1; -- ySign = (yScale < 0) ? -1 : 1; -- -- // clipping -- ulx1 = 0; -- uly1 = 0; -- urx1 = xSign * (scaledWidth - 1); -- ury1 = splashRound(yShear * urx1); -- llx1 = splashRound(xShear * ySign * (scaledHeight - 1)); -- lly1 = ySign * (scaledHeight - 1) + splashRound(yShear * llx1); -- lrx1 = xSign * (scaledWidth - 1) + -- splashRound(xShear * ySign * (scaledHeight - 1)); -- lry1 = ySign * (scaledHeight - 1) + splashRound(yShear * lrx1); -- if (rot) { -- ulx = tx + uly1; uly = ty - ulx1; -- urx = tx + ury1; ury = ty - urx1; -- llx = tx + lly1; lly = ty - llx1; -- lrx = tx + lry1; lry = ty - lrx1; -- } else { -- ulx = tx + ulx1; uly = ty + uly1; -- urx = tx + urx1; ury = ty + ury1; -- llx = tx + llx1; lly = ty + lly1; -- lrx = tx + lrx1; lry = ty + lry1; -- } -- xMin = (ulx < urx) ? (ulx < llx) ? (ulx < lrx) ? ulx : lrx -- : (llx < lrx) ? llx : lrx -- : (urx < llx) ? (urx < lrx) ? urx : lrx -- : (llx < lrx) ? llx : lrx; -- xMax = (ulx > urx) ? (ulx > llx) ? (ulx > lrx) ? ulx : lrx -- : (llx > lrx) ? llx : lrx -- : (urx > llx) ? (urx > lrx) ? urx : lrx -- : (llx > lrx) ? llx : lrx; -- yMin = (uly < ury) ? (uly < lly) ? (uly < lry) ? uly : lry -- : (lly < lry) ? lly : lry -- : (ury < lly) ? (ury < lry) ? ury : lry -- : (lly < lry) ? lly : lry; -- yMax = (uly > ury) ? (uly > lly) ? (uly > lry) ? uly : lry -- : (lly > lry) ? lly : lry -- : (ury > lly) ? (ury > lry) ? ury : lry -- : (lly > lry) ? lly : lry; -- if ((clipRes = state->clip->testRect(xMin, yMin, xMax, yMax)) -- == splashClipAllOutside) { -- return splashOk; -- } -- -- if (!noClipPath || clipRes == splashClipAllInside) { -- if (!srcAlpha && !noShearImage) { -- if (drawImageFastWithCTM(src,srcData,w,h,tx,ty,mat) == splashOk) { -- return splashOk; -- } -- } -- if (!srcAlpha && splashRound(xShear) == 0 && splashRound(yShear) == 0) { -- /* no sheared case */ -- if (drawImageNotShear(src,srcData,w,h,tx,ty, -- scaledWidth, scaledHeight,xSign,ySign,rot) == splashOk) { -- return splashOk; -- } -- } -- } -- -- /* shear case */ -- SplashError result = splashOk; -- -- /* calculate inverse matrix */ -- SplashCoord imat[4]; -- double det = mat[0] * mat[3] - mat[1] * mat[2]; -- imat[0] = mat[3]/det; -- imat[1] = -mat[1]/det; -- imat[2] = -mat[2]/det; -- imat[3] = mat[0]/det; -- -- opvp_fix_t opvpx,opvpy; -- int opvpbytes, linesize; -- int width = xMax-xMin+1; -- int height = yMax-yMin+1; -- opvp_ctm_t opvpctm; -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- if (srcAlpha) { -- /* alpha data exists */ -- linesize = w*2; -- } else { -- linesize = w; -- } -- opvpbytes = (width+3)/4; -- opvpbytes *= 4; -- break; -- case splashModeRGB8: -- if (srcAlpha) { -- /* alpha data exists */ -- linesize = w*4; -- } else { -- linesize = w*3; -- } -- opvpbytes = (width*3+3)/4; -- opvpbytes *= 4; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- return splashErrOPVP; -- break; -- } -- -- /* read source image */ -- pixBuf = (SplashColorPtr)gmallocn(h , linesize); -- -- p = pixBuf; -- for (i = 0; i < h; ++i) { -- (*src)(srcData, p, NULL); -- p += linesize; -- } -- /* allocate line buffer */ -- Guchar *lineBuf = (Guchar *)gmallocn(opvpbytes,1); -- Guchar *onBuf = (Guchar *)gmallocn(width,1); -- OPVPSplashClip *clip; -- opvpctm.a = 1.0; -- opvpctm.b = 0.0; -- opvpctm.c = 0.0; -- opvpctm.d = 1.0; -- -- clip = state->clip->copy(); -- if (w < scaledWidth || h < scaledHeight) { -- OPVPSplashPath cpath; -- -- cpath.moveTo(tx,ty); -- cpath.lineTo(mat[0]+tx,mat[1]+ty); -- cpath.lineTo(mat[0]+mat[2]+tx,mat[1]+mat[3]+ty); -- cpath.lineTo(mat[2]+tx,mat[3]+ty); -- clip->clipToPath(&cpath,state->matrix,1.0,false); -- } -- for (y = 0;y < height;y++) { -- int dy = y+yMin-ty; -- memset(onBuf,0,width); -- if (srcAlpha) { -- /* with alpha data */ -- for (x = 0;x < width;x++) { -- if (!clip->test(x+xMin,y+yMin)) continue; -- int ox,oy; -- /* calculate original coordinate */ -- int dx = x+xMin-tx; -- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); -- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); -- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { -- /* in the image */ -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- onBuf[x] = pixBuf[oy*linesize+ox] != 0; -- lineBuf[x] = pixBuf[oy*linesize+ox+1]; -- break; -- case splashModeRGB8: -- p = pixBuf+oy*linesize+ox*4; -- onBuf[x] = (*p++) != 0; -- lineBuf[x*3] = *p++; -- lineBuf[x*3+1] = *p++; -- lineBuf[x*3+2] = *p; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- result = splashErrOPVP; -- goto err1; -- break; -- } -- } -- } -- } else { -- for (x = 0;x < width;x++) { -- if (!clip->test(x+xMin,y+yMin)) continue; -- int ox,oy; -- /* calculate original coordinate */ -- int dx = x+xMin-tx; -- ox = (int)trunc((imat[0]*dx+imat[2]*dy)*w); -- oy = (int)trunc((imat[1]*dx+imat[3]*dy)*h); -- if (ox >= 0 && ox < w && oy >= 0 && oy < h) { -- /* in the image */ -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- lineBuf[x] = pixBuf[oy*linesize+ox]; -- break; -- case splashModeRGB8: -- p = pixBuf+oy*linesize+ox*3; -- lineBuf[x*3] = *p++; -- lineBuf[x*3+1] = *p++; -- lineBuf[x*3+2] = *p; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- result = splashErrOPVP; -- goto err1; -- break; -- } -- onBuf[x] = 1; -- } -- } -- } -- /* out pixel */ -- int sx = 0; -- int ex; -- while (sx < width) { -- /* find start pixel */ -- for (;onBuf[sx] == 0 && sx < width;sx++); -- if (sx >= width) break; -- /* find end pixel */ -- for (ex = sx+1;onBuf[ex] != 0 && ex < width;ex++); -- int n = ex-sx; -- Guchar *bp; -- int ns; -- -- switch (colorMode) { -- case splashModeMono1: -- case splashModeMono8: -- bp = lineBuf+sx; -- ns = n; -- break; -- case splashModeRGB8: -- bp = lineBuf+sx*3; -- ns = n*3; -- break; -- default: -- OPRS::error("Image: no supported color mode\n"); -- result = splashErrOPVP; -- goto err1; -- break; -- } -- ns = (ns+3)/4; -- ns *= 4; -- -- OPVP_i2Fix(xMin+sx,(opvpx)); -- OPVP_i2Fix(yMin+y,(opvpy)); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- result = splashErrOPVP; -- goto err1; -- } -- /* canonlisp driver use CTM only, ignores currentPoint */ -- /* So, set start point to CTM */ -- opvpctm.e = xMin+sx; -- opvpctm.f = yMin+y; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- if (opvp->DrawImage(n,1,ns,OPVP_IFORMAT_RAW, -- n,1,(void *)(bp)) < 0) { -- OPRS::error("DrawImage error\n"); -- result = splashErrOPVP; -- goto err1; -- } -- -- /* reset CTM */ -- opvpctm.e = 0.0; -- opvpctm.f = 0.0; -- if (opvp->SetCTM(&opvpctm) < 0) { -- OPRS::error("SetCTM error\n"); -- } -- -- sx = ex+1; -- } -- } -- -- --err1: -- delete clip; -- gfree(pixBuf); -- gfree(lineBuf); -- gfree(onBuf); -- return result; --} -- --void OPVPSplash::setColorMode(int colorModeA) --{ -- colorMode = colorModeA; --} -- --void OPVPSplash::drawSpan(int x0, int x1, int y, bool noClip) --{ -- int s,e; -- opvp_point_t points[1]; -- opvp_fix_t opvpx, opvpy; -- SplashCoord *savedLineDash = 0; -- int savedLineDashLength; -- SplashCoord savedLineDashPhase; -- SplashCoord savedLineWidth; -- bool noSpan; -- -- -- if (opvp->NewPath() < 0) { -- OPRS::error("NewPath error\n"); -- return; -- } -- if (noClip) { -- noSpan = false; -- OPVP_i2Fix(x0,opvpx); -- OPVP_i2Fix(y,opvpy); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- return; -- } -- OPVP_i2Fix(x1+1,points[0].x); -- OPVP_i2Fix(y,points[0].y); -- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { -- OPRS::error("LinePath error\n"); -- return; -- } -- } else { -- noSpan = true; -- s = x0; -- while (s < x1) { -- /* find start point */ -- for (;s < x1;s++) { -- if (state->clip->test(s, y)) break; -- } -- if (s < x1) { -- /* start point was found */ -- /* then find end point */ -- for (e = s+1;e < x1;e++) { -- if (!state->clip->test(e, y)) break; -- } -- /* do make span */ -- noSpan = false; -- OPVP_i2Fix(s,opvpx); -- OPVP_i2Fix(y,opvpy); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- return; -- } -- OPVP_i2Fix(e,points[0].x); -- OPVP_i2Fix(y,points[0].y); -- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { -- OPRS::error("LinePath error\n"); -- return; -- } -- s = e; -- } -- } -- } -- if (opvp->EndPath() < 0) { -- OPRS::error("EndPath error\n"); -- return; -- } -- if (noSpan) return; -- /* change lins style temporarily */ -- savedLineDashLength = state->lineDashLength; -- savedLineDashPhase = state->lineDashPhase; -- if (savedLineDashLength > 0 && state->lineDash != 0) { -- savedLineDash = new SplashCoord[savedLineDashLength]; -- memcpy(savedLineDash, state->lineDash, -- savedLineDashLength*sizeof(SplashCoord)); -- } -- setLineDash(0,0,0); -- savedLineWidth = state->lineWidth; -- setLineWidth(0.0); -- -- if (opvp->StrokePath() < 0) { -- OPRS::error("StrokePath error\n"); -- return; -- } -- -- /* restore line style */ -- setLineDash(savedLineDash,savedLineDashLength, -- savedLineDashPhase); -- if (savedLineDash != 0) { -- delete[] savedLineDash; -- } -- setLineWidth(savedLineWidth); --} -- --/* -- draw pixel with StrokePath -- color is stroke color --*/ --void OPVPSplash::drawPixel(int x, int y, bool noClip) --{ -- opvp_point_t points[1]; -- opvp_fix_t opvpx, opvpy; -- -- if (noClip || state->clip->test(x, y)) { -- if (opvp->NewPath() < 0) { -- OPRS::error("NewPath error\n"); -- return; -- } -- OPVP_i2Fix(x,opvpx); -- OPVP_i2Fix(y,opvpy); -- if (opvp->SetCurrentPoint(opvpx,opvpy) < 0) { -- OPRS::error("NewPath error\n"); -- return; -- } -- OPVP_i2Fix(x+1,points[0].x); -- OPVP_i2Fix(y,points[0].y); -- if (opvp->LinePath(OPVP_PATHOPEN,1,points) < 0) { -- OPRS::error("LinePath error\n"); -- return; -- } -- if (opvp->EndPath() < 0) { -- OPRS::error("EndPath error\n"); -- return; -- } -- if (opvp->StrokePath() < 0) { -- OPRS::error("StrokePath error\n"); -- return; -- } -- } --} -- --const char *OPVPSplash::getOption(const char *key, int nOptions, -- const char *optionKeys[], const char *optionVals[]) --{ -- int i; -- -- for (i = 0;i < nOptions;i++) { -- if (strcmp(key,optionKeys[i]) == 0) { -- return optionVals[i]; -- } -- } -- return 0; --} -- --void OPVPSplash::endPage() --{ -- if (clipPath != 0) { -- delete clipPath; -- clipPath = 0; -- } --} -- --void OPVPSplash::restoreAllDriverState() --{ -- for (;saveDriverStateCount > 0;saveDriverStateCount--) { -- opvp->RestoreGS(); -- } --} -- --SplashCoord *OPVPSplash::getMatrix() --{ -- return state->matrix; --} -- --OPVPClipPath *OPVPClipPath::stackTop = 0; -- --OPVPClipPath::OPVPClipPath(OPVPSplashPath *pathA, bool eoA) --{ -- path = pathA; -- eo = eoA; -- next = 0; -- saved = false; --} -- --void OPVPClipPath::push() --{ -- OPVPClipPath *p; -- -- p = stackTop; -- stackTop = copy(); -- stackTop->next = p; -- saved = true; --} -- --OPVPClipPath *OPVPClipPath::pop() { -- OPVPClipPath *p = stackTop; -- if (stackTop != 0) stackTop = stackTop->next; -- return p; --} -- --OPVPClipPath *OPVPClipPath::copy() --{ -- OPVPClipPath *p; -- -- p = new OPVPClipPath(path->copy(),eo); -- p->saved = saved; -- return p; --} -diff --git a/filter/pdftoopvp/oprs/OPVPSplash.h b/filter/pdftoopvp/oprs/OPVPSplash.h -deleted file mode 100644 -index 200fda3..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplash.h -+++ /dev/null -@@ -1,244 +0,0 @@ --//======================================================================== --// --// OPVPSplash.h --// --//======================================================================== -- --#ifndef OPVPSPLASH_H --#define OPVPSPLASH_H -- --#include <config.h> -- --#ifdef USE_GCC_PRAGMAS --#pragma interface --#endif -- --#include <typeinfo> --#include "splash/SplashTypes.h" --#include "splash/SplashPattern.h" --#include "splash/SplashErrorCodes.h" --#include "OPVPSplashPath.h" --#include "OPVPWrapper.h" --#include "CharTypes.h" -- --/* extra error code */ --#define splashErrOPVP 100 -- --#define OPVP_MAX_CLIPPATH_LENGTH 2000 --#define OPVP_MAX_FILLPATH_LENGTH 4000 --#define OPVP_BITMAPCHAR_THRESHOLD 2000 --#define OPVP_ROP_SRCCOPY 0xCC --#define OPVP_ROP_S 0xCC --#define OPVP_ROP_P 0xF0 --#define OPVP_ROP_PSDPxax 0xB8 --#define OPVP_ROP_DSPDxax 0xE2 -- --class SplashBitmap; --class SplashGlyphBitmap; --class OPVPSplashState; --class SplashPattern; --class SplashScreen; --class OPVPSplashPath; --class OPVPSplashXPath; --class OPVPSplashClip; --class SplashFont; -- --class OPVPClipPath { --public: -- OPVPClipPath(OPVPSplashPath *pathA, bool eoA); -- void push(); -- static OPVPClipPath *pop(); -- ~OPVPClipPath() { delete path; } -- OPVPSplashPath *getPath() { return path; } -- bool getEo() { return eo; } -- bool getSaved() { return saved; } --private: -- OPVPClipPath *copy(); -- OPVPClipPath *next; -- OPVPSplashPath *path; -- bool eo; -- bool saved; -- static OPVPClipPath *stackTop; --}; -- --//------------------------------------------------------------------------ --// Splash --//------------------------------------------------------------------------ -- --class OPVPSplash { --public: -- -- // Create a new rasterizer object. -- OPVPSplash(OPVPWrapper *opvpA, -- int nOptions, const char *optionKeys[], const char *optionVals[]); -- -- virtual ~OPVPSplash(); -- -- //----- state read -- -- SplashPattern *getStrokePattern(); -- SplashPattern *getFillPattern(); -- SplashScreen *getScreen(); -- SplashCoord getLineWidth(); -- int getLineCap(); -- int getLineJoin(); -- SplashCoord getMiterLimit(); -- SplashCoord getFlatness(); -- SplashCoord *getLineDash(); -- int getLineDashLength(); -- SplashCoord getLineDashPhase(); -- OPVPSplashClip *getClip(); -- -- //----- state write -- -- void setStrokePattern(SplashPattern *strokeColor); -- void setFillPattern(SplashPattern *fillColor); -- void setScreen(SplashScreen *screen); -- void setLineWidth(SplashCoord lineWidth); -- void setLineCap(int lineCap); -- void setLineJoin(int lineJoin); -- void setMiterLimit(SplashCoord miterLimit); -- void setFlatness(SplashCoord flatness); -- // the <lineDash> array will be copied -- void setLineDash(SplashCoord *lineDash, int lineDashLength, -- SplashCoord lineDashPhase); -- void clipResetToRect(SplashCoord x0, SplashCoord y0, -- SplashCoord x1, SplashCoord y1); -- SplashError clipToPath(OPVPSplashPath *path, bool eo); -- -- //----- state save/restore -- -- void saveState(); -- SplashError restoreState(); -- void restoreAllDriverState(); -- -- //----- drawing operations -- -- // Fill the bitmap with <color>. This is not subject to clipping. -- void clear(SplashColor color); -- -- // Stroke a path using the current stroke pattern. -- SplashError stroke(OPVPSplashPath *path); -- -- // Fill a path using the current fill pattern. -- SplashError fill(OPVPSplashPath *path, bool eo); -- -- // Draw a character, using the current fill pattern. -- SplashError fillChar(SplashCoord x, SplashCoord y, int c, -- SplashFont *font, Unicode *u, double *fontMat); -- -- // Draw a glyph, using the current fill pattern. This function does -- // not free any data, i.e., it ignores glyph->freeData. -- // not used in vector mode -- void fillGlyph(SplashCoord x, SplashCoord y, -- SplashGlyphBitmap *glyph); -- -- // Draws an image mask using the fill color. This will read <w>*<h> -- // pixels from <src>, in raster order, starting with the top line. -- // "1" pixels will be drawn with the current fill color; "0" pixels -- // are transparent. The matrix: -- // [ mat[0] mat[1] 0 ] -- // [ mat[2] mat[3] 0 ] -- // [ mat[4] mat[5] 1 ] -- // maps a unit square to the desired destination for the image, in -- // PostScript style: -- // [x' y' 1] = [x y 1] * mat -- // Note that the Splash y axis points downward, and the image source -- // is assumed to produce pixels in raster order, starting from the -- // top line. -- SplashError fillImageMask(SplashImageMaskSource src, void *srcData, -- int w, int h, SplashCoord *mat, bool glyphMode); -- -- // Draw an image. This will read <w>*<h> pixels from <src>, in -- // raster order, starting with the top line. These pixels are -- // assumed to be in the source mode, <srcMode>. The following -- // combinations of source and target modes are supported: -- // source target -- // ------ ------ -- // Mono1 Mono1 -- // Mono8 Mono1 -- with dithering -- // Mono8 Mono8 -- // RGB8 RGB8 -- // BGR8packed BGR8Packed -- // The matrix behaves as for fillImageMask. -- SplashError drawImage(SplashImageSource src, void *srcData, -- SplashColorMode srcMode, bool srcAlpha, -- int w, int h, SplashCoord *mat); -- -- //~ drawMaskedImage -- -- //----- misc -- -- // Return the associated bitmap. -- SplashBitmap *getBitmap() { return 0; } -- -- // Toggle debug mode on or off. -- void setDebugMode(bool debugModeA) { debugMode = debugModeA; } -- -- void setColorMode(int colorModeA); -- void setStateBypass(bool bypass) {stateBypass = bypass;} -- void endPage(); -- SplashCoord *getMatrix(); -- void drawSpan(int x0, int x1, int y, bool noClip); --#ifdef OLD_DRAW_IMAGE -- void drawPixel(int x, int y, SplashColor *color, bool noClip); --#endif -- void drawPixel(int x, int y, bool noClip); -- void arcToCurve(SplashCoord x0, SplashCoord y0, -- SplashCoord x3, SplashCoord y3, -- SplashCoord cx, SplashCoord cy, SplashCoord *rx1, SplashCoord *ry1, -- SplashCoord *rx2, SplashCoord *ry2); -- --private: -- void makeBrush(SplashPattern *pattern, opvp_brush_t *brush); -- SplashError doClipPath(OPVPSplashPath *path, bool eo, -- OPVPClipPath *prevClip); -- opvp_cspace_t getOPVPColorSpace(); -- bool equalPattern(SplashPattern *pt1, SplashPattern *pt2); -- SplashError makeRectanglePath(SplashCoord x0, SplashCoord y0, -- SplashCoord x1, SplashCoord y1, OPVPSplashPath **p); -- SplashError drawImageFastWithCTM(SplashImageSource src, void *srcData, -- int w, int h, int tx, int ty, -- SplashCoord *mat); -- SplashError drawImageNotShear(SplashImageSource src, -- void *srcData, -- int w, int h, -- int tx, int ty, -- int scaledWidth, int scaledHeight, -- int xSign, int ySign, bool rot); -- SplashError fillImageMaskFastWithCTM(SplashImageMaskSource src, -- void *srcData, int w, int h, int tx, int ty,SplashCoord *mat); -- SplashError strokeByMyself(OPVPSplashPath *path); -- SplashError fillByMyself(OPVPSplashPath *path, bool eo); -- OPVPSplashXPath *makeDashedPath(OPVPSplashXPath *xPath); -- void transform(SplashCoord *matrix, SplashCoord xi, SplashCoord yi, -- SplashCoord *xo, SplashCoord *yo); -- -- const char *getOption(const char *key, int nOptions, const char *optionKeys[], -- const char *optionVals[]); -- -- OPVPWrapper *opvp; -- int printerContext; -- -- OPVPSplashState *state; -- bool debugMode; -- int colorMode; -- bool stateBypass; -- OPVPClipPath *clipPath; -- -- bool oldLipsDriver; -- bool clipPathNotSaved; -- bool noShearImage; -- bool noLineStyle; -- bool noClipPath; -- bool noMiterLimit; -- bool ignoreMiterLimit; -- bool savedNoClipPath; -- bool noImageMask; -- int bitmapCharThreshold; -- int maxClipPathLength; -- int maxFillPathLength; -- int saveDriverStateCount; --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPSplashClip.cxx b/filter/pdftoopvp/oprs/OPVPSplashClip.cxx -deleted file mode 100644 -index d81fd3f..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashClip.cxx -+++ /dev/null -@@ -1,103 +0,0 @@ --#include <config.h> -- --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif -- --#include "splash/SplashXPathScanner.h" --#include "OPVPSplashClip.h" -- --void OPVPSplashClip::getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA) --{ -- int i; -- int cxMin = splashRound(xMin), cyMin = splashRound(yMin); -- int cxMax = splashRound(xMax), cyMax = splashRound(yMax); -- int txMin, tyMin, txMax, tyMax; -- -- for (i = 0; i < length; ++i) { -- scanners[i]->getBBox(&txMin,&tyMin,&txMax,&tyMax); -- if (txMin > cxMin) cxMin = txMin; -- if (tyMin > cyMin) cyMin = tyMin; -- if (txMax < cxMax) cxMax = txMax; -- if (tyMax < cyMax) cyMax = tyMax; -- } -- *xMinA = cxMin; -- *yMinA = cyMin; -- *xMaxA = cxMax; -- *yMaxA = cyMax; --} -- --OPVPSplashPath *OPVPSplashClip::makePath() --{ -- int i,j; -- int y, x0, x1; -- int txMin, tyMin, txMax, tyMax; -- Guchar *cbuf,*tbuf; -- int blen; -- OPVPSplashPath *p = new OPVPSplashPath(); -- -- getBBox(&txMin,&tyMin,&txMax,&tyMax); -- if (txMin > txMax || tyMin > tyMax) return p; -- blen = txMax-txMin+1; -- cbuf = new Guchar[blen]; -- tbuf = new Guchar[blen]; -- -- for (y = tyMin;y <= tyMax;y++) { -- /* clear buffer */ -- for (i = 0;i < blen;i++) { -- cbuf[i] = 0; -- } --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- SplashXPathScanIterator iterator(*scanners[0], y); -- while (iterator.getNextSpan(&x0, &x1)) --#else -- while (scanners[0]->getNextSpan(y,&x0,&x1)) --#endif -- { -- if (x0 < txMin) x0 = txMin; -- if (x1 > txMax) x1 = txMax; -- for (i = x0;i < x1;i++) { -- cbuf[i-txMin] = 1; -- } -- } -- for (j = 1; j < length; ++j) { -- /* clear buffer */ -- for (i = 0;i < blen;i++) { -- tbuf[i] = 0; -- } --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- SplashXPathScanIterator iterator2(*scanners[j], y); -- while (iterator2.getNextSpan(&x0, &x1)) --#else -- while (scanners[j]->getNextSpan(y,&x0,&x1)) --#endif -- { -- if (x0 < txMin) x0 = txMin; -- if (x1 > txMax) x1 = txMax; -- for (i = x0;i < x1;i++) { -- tbuf[i-txMin] = 1; -- } -- } -- /* and buffer */ -- for (i = 0;i < blen;i++) { -- cbuf[i] &= tbuf[i]; -- } -- } -- /* scan buffer and add path */ -- for (i = 0;i < blen;i = j) { -- if (cbuf[i] != 0) { -- p->moveTo(i+txMin,y); -- for (j = i+1;j < blen && cbuf[j] != 0;j++); -- p->lineTo(j-1+txMin,y); -- p->lineTo(j-1+txMin,y+1); -- p->lineTo(i+txMin,y+1); -- p->close(); -- } else { -- j = i+1; -- } -- } -- } -- delete[] cbuf; -- delete[] tbuf; -- return p; --} -diff --git a/filter/pdftoopvp/oprs/OPVPSplashClip.h b/filter/pdftoopvp/oprs/OPVPSplashClip.h -deleted file mode 100644 -index 05bd57b..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashClip.h -+++ /dev/null -@@ -1,30 +0,0 @@ --#ifndef OPVPSPLASHCLIP_H --#define OPVPSPLASHCLIP_H -- --#include "splash/SplashClip.h" --#include "OPVPSplashPath.h" -- --class OPVPSplashClip : public SplashClip { --public: -- -- OPVPSplashClip(SplashCoord x0, SplashCoord y0, -- SplashCoord x1, SplashCoord y1, -- bool antialiasA) : -- SplashClip(x0,y0,x1,y1,antialiasA) { -- } -- -- OPVPSplashClip(SplashClip *sclip) : SplashClip(sclip) { -- } -- -- OPVPSplashClip *copy() { return new OPVPSplashClip(this); } -- -- ~OPVPSplashClip() {} -- -- void getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA); -- OPVPSplashPath *makePath(); --private: -- OPVPSplashClip(OPVPSplashClip *clip) : SplashClip(clip) { -- } --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPSplashPath.cxx b/filter/pdftoopvp/oprs/OPVPSplashPath.cxx -deleted file mode 100644 -index f03c128..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashPath.cxx -+++ /dev/null -@@ -1,185 +0,0 @@ --#include <config.h> --#include <stdio.h> --#include "splash/SplashMath.h" --#include "OPVPSplashPath.h" --#include "OPVPWrapper.h" --#include "OPRS.h" -- --void OPVPSplashPath::getBBox(int *xMinA, int *yMinA, int *xMaxA, -- int *yMaxA) --{ -- int i; -- SplashCoord xMin, yMin, xMax, yMax; -- -- if (length <= 0) { -- /* return far away point */ -- *xMinA = *yMinA = *xMaxA = *yMaxA = 0xC0000000; -- return; -- } -- xMin = xMax = pts[0].x; -- yMin = yMax = pts[0].y; -- for (i = 1;i < length;i++) { -- if (pts[i].x > xMax) { -- xMax = pts[i].x; -- } else if (pts[i].x < xMin) { -- xMin = pts[i].x; -- } -- if (pts[i].y > yMax) { -- yMax = pts[i].y; -- } else if (pts[i].y < yMin) { -- yMin = pts[i].y; -- } -- } -- *xMinA = splashRound(xMin); -- *xMaxA = splashRound(xMax); -- *yMinA = splashRound(yMin); -- *yMaxA = splashRound(yMax); --} -- --bool OPVPSplashPath::isRectanglePath( -- SplashCoord *xMin, SplashCoord *yMin, SplashCoord *xMax, SplashCoord *yMax) --{ -- if (length != 5 -- || pts[0].x != pts[4].x -- || pts[0].y != pts[4].y -- || flags[0] != (splashPathFirst | splashPathClosed) -- || flags[1] != 0 -- || flags[2] != 0 -- || flags[3] != 0 -- || flags[4] != (splashPathLast | splashPathClosed)) { -- return false; -- } -- if (splashRound(pts[0].x) == splashRound(pts[1].x)) { -- if (splashRound(pts[1].y) != splashRound(pts[2].y) -- || splashRound(pts[2].x) != splashRound(pts[3].x) -- || splashRound(pts[3].y) != splashRound(pts[4].y)) { -- return false; -- } -- } else if (splashRound(pts[0].y) == splashRound(pts[1].y)) { -- if (splashRound(pts[1].x) != splashRound(pts[2].x) -- || splashRound(pts[2].y) != splashRound(pts[3].y) -- || splashRound(pts[3].x) != splashRound(pts[4].x)) { -- return false; -- } -- } else { -- return false; -- } -- *xMin = pts[0].x; -- *yMin = pts[0].y; -- *xMax = pts[2].x; -- *yMax = pts[2].y; -- if (*xMin > *xMax) { -- SplashCoord t = *xMin; -- -- *xMin = *xMax; -- *xMax = t; -- } -- if (*yMin > *yMax) { -- SplashCoord t = *yMin; -- -- *yMin = *yMax; -- *yMax = t; -- } -- return true; --} -- --SplashError OPVPSplashPath::makePath(OPVPWrapper *opvp) --{ -- int i,j; -- opvp_fix_t x,y; -- -- if (opvp->NewPath() < 0) { -- OPRS::error("NewPath error\n"); -- return splashErrOPVP; -- } -- for (i = 0;i < length;i = j) { -- int curve = 0; -- int n; -- opvp_point_t *points; -- int k; -- -- if ((flags[i] & splashPathFirst) != 0) { -- /* first point of a subpath */ -- if ((flags[i] & splashPathLast) == 0 -- || (flags[i] & splashPathClosed) != 0) { -- OPVP_F2FIX((pts[i].x),(x)); -- OPVP_F2FIX((pts[i].y),(y)); -- if (opvp->SetCurrentPoint(x,y) < 0) { -- OPRS::error("SetCurrentPoint error\n"); -- return splashErrOPVP; -- } -- } -- j = i+1; -- continue; -- } -- if (i+2 < length && flags[i] == splashPathCurve) { -- /* curve */ -- curve = 1; -- for (j = i;j+2 < length -- && flags[j] == splashPathCurve;j += 3); -- } else { -- curve = 0; -- for (j = i;j < length -- && (flags[j] & splashPathCurve) == 0 -- && (flags[j] & splashPathFirst) == 0;j++); -- } -- -- n = j-i; -- points = new opvp_point_t[n]; -- /* copy points */ -- for (k = i; k < j;k++) { -- OPVP_F2FIX((pts[k].x),(points[k-i].x)); -- OPVP_F2FIX((pts[k].y),(points[k-i].y)); -- } -- -- if (curve) { -- /* curve */ -- if (opvp->BezierPath(n,points) < 0) { -- OPRS::error("BezierPath error\n"); -- return splashErrOPVP; -- } -- } else { -- /* line */ -- bool closed = (flags[j-1] & splashPathClosed) != 0; -- -- if (closed) { -- if (opvp->LinePath(OPVP_PATHCLOSE, -- n,points) < 0) { -- OPRS::error("LinePath error\n"); -- return splashErrOPVP; -- } -- } else { -- if (opvp->LinePath(OPVP_PATHOPEN, -- n,points) < 0) { -- OPRS::error("LinePath error\n"); -- return splashErrOPVP; -- } -- } -- } -- delete[] points; -- } -- if (opvp->EndPath() < 0) { -- OPRS::error("EndPath error\n"); -- return splashErrOPVP; -- } -- return splashOk; --} -- --void OPVPSplashPath::closeAllSubPath() --{ -- int i; -- int f = 0; -- -- for (i = 0;i < length;i++) { -- if ((flags[i] & splashPathFirst) != 0) { -- f = i; -- } -- if ((flags[i] & splashPathLast) != 0) { -- if (pts[f].x == pts[i].x -- && pts[f].y == pts[i].y) { -- flags[f] |= splashPathClosed; -- flags[i] |= splashPathClosed; -- } -- } -- } --} -diff --git a/filter/pdftoopvp/oprs/OPVPSplashPath.h b/filter/pdftoopvp/oprs/OPVPSplashPath.h -deleted file mode 100644 -index 38bfeff..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashPath.h -+++ /dev/null -@@ -1,28 +0,0 @@ --#ifndef OPVPSPLASHPATH_H --#define OPVPSPLASHPATH_H -- --#include "splash/SplashPath.h" --#include "OPVPWrapper.h" -- --class OPVPSplashPath : public SplashPath { --public: -- -- OPVPSplashPath() {}; -- -- OPVPSplashPath(SplashPath *spath) : SplashPath(spath) { -- } -- -- // Copy a path. -- OPVPSplashPath *copy() { return new OPVPSplashPath(this); } -- -- void getBBox(int *xMinA, int *yMinA, int *xMaxA, int *yMaxA); -- bool isRectanglePath(SplashCoord *xMin, SplashCoord *yMin, -- SplashCoord *xMax, SplashCoord *yMax); -- SplashError makePath(OPVPWrapper *opvp); -- void closeAllSubPath(); --private: -- OPVPSplashPath(OPVPSplashPath *path) : SplashPath(path) { -- } --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPSplashState.cxx b/filter/pdftoopvp/oprs/OPVPSplashState.cxx -deleted file mode 100644 -index f5ba705..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashState.cxx -+++ /dev/null -@@ -1,176 +0,0 @@ --//======================================================================== --// --// SplashState.cc --// --//======================================================================== -- --#include <config.h> -- --#ifdef USE_GCC_PRAGMAS --#pragma implementation --#endif -- --#include <string.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include "goo/gmem.h" --#include "splash/SplashPattern.h" --#include "splash/SplashScreen.h" --#include "splash/SplashBitmap.h" --#include "splash/SplashState.h" --#include "OPVPSplashState.h" --#include "OPVPSplashClip.h" -- --//------------------------------------------------------------------------ --// SplashState --//------------------------------------------------------------------------ -- --OPVPSplashState::OPVPSplashState(int width, int height, bool vectorAntialias, -- SplashScreenParams *screenParams) { -- SplashColor color; -- -- matrix[0] = 1; matrix[1] = 0; -- matrix[2] = 0; matrix[3] = 1; -- matrix[4] = 0; matrix[5] = 0; -- memset(&color, 0, sizeof(SplashColor)); -- strokePattern = new SplashSolidColor(color); -- fillPattern = new SplashSolidColor(color); -- screen = new SplashScreen(screenParams); -- blendFunc = NULL; -- strokeAlpha = 1; -- fillAlpha = 1; -- lineWidth = 0; -- lineCap = splashLineCapButt; -- lineJoin = splashLineJoinMiter; -- miterLimit = 10; -- flatness = 1; -- lineDash = NULL; -- lineDashLength = 0; -- lineDashPhase = 0; -- strokeAdjust = false; -- clip = new OPVPSplashClip(0, 0, width - 0.001, -- height - 0.001, vectorAntialias); -- softMask = NULL; -- deleteSoftMask = false; -- inNonIsolatedGroup = false; -- next = NULL; --} -- --OPVPSplashState::OPVPSplashState(int width, int height, bool vectorAntialias, -- SplashScreen *screenA) { -- SplashColor color; -- -- matrix[0] = 1; matrix[1] = 0; -- matrix[2] = 0; matrix[3] = 1; -- matrix[4] = 0; matrix[5] = 0; -- memset(&color, 0, sizeof(SplashColor)); -- strokePattern = new SplashSolidColor(color); -- fillPattern = new SplashSolidColor(color); -- screen = screenA->copy(); -- blendFunc = NULL; -- strokeAlpha = 1; -- fillAlpha = 1; -- lineWidth = 0; -- lineCap = splashLineCapButt; -- lineJoin = splashLineJoinMiter; -- miterLimit = 10; -- flatness = 1; -- lineDash = NULL; -- lineDashLength = 0; -- lineDashPhase = 0; -- strokeAdjust = false; -- clip = new OPVPSplashClip(0, 0, width - 0.001, -- height - 0.001, vectorAntialias); -- softMask = NULL; -- deleteSoftMask = false; -- inNonIsolatedGroup = false; -- next = NULL; --} -- --OPVPSplashState::OPVPSplashState(OPVPSplashState *state) { -- memcpy(matrix, state->matrix, 6 * sizeof(SplashCoord)); -- strokePattern = state->strokePattern->copy(); -- fillPattern = state->fillPattern->copy(); -- screen = state->screen->copy(); -- blendFunc = state->blendFunc; -- strokeAlpha = state->strokeAlpha; -- fillAlpha = state->fillAlpha; -- lineWidth = state->lineWidth; -- lineCap = state->lineCap; -- lineJoin = state->lineJoin; -- miterLimit = state->miterLimit; -- flatness = state->flatness; -- if (state->lineDash) { -- lineDashLength = state->lineDashLength; -- lineDash = (SplashCoord *)gmallocn(lineDashLength, sizeof(SplashCoord)); -- memcpy(lineDash, state->lineDash, lineDashLength * sizeof(SplashCoord)); -- } else { -- lineDash = NULL; -- lineDashLength = 0; -- } -- lineDashPhase = state->lineDashPhase; -- strokeAdjust = state->strokeAdjust; -- clip = state->clip->copy(); -- softMask = state->softMask; -- deleteSoftMask = false; -- inNonIsolatedGroup = state->inNonIsolatedGroup; -- next = NULL; --} -- --OPVPSplashState::~OPVPSplashState() { -- delete strokePattern; -- delete fillPattern; -- delete screen; -- gfree(lineDash); -- delete clip; -- if (deleteSoftMask && softMask) { -- delete softMask; -- } --} -- --void OPVPSplashState::setState(Splash *osplash) { -- osplash->setMatrix(matrix); -- osplash->setFlatness(flatness); -- osplash->setLineDash(lineDash,lineDashLength,lineDashPhase); -- osplash->setLineCap(lineCap); -- osplash->setStrokeAdjust(strokeAdjust); -- osplash->setMiterLimit(miterLimit); -- osplash->setLineJoin(lineJoin); --} -- --void OPVPSplashState::setStrokePattern(SplashPattern *strokePatternA) { -- delete strokePattern; -- strokePattern = strokePatternA; --} -- --void OPVPSplashState::setFillPattern(SplashPattern *fillPatternA) { -- delete fillPattern; -- fillPattern = fillPatternA; --} -- --void OPVPSplashState::setScreen(SplashScreen *screenA) { -- delete screen; -- screen = screenA; --} -- --void OPVPSplashState::setLineDash(SplashCoord *lineDashA, int lineDashLengthA, -- SplashCoord lineDashPhaseA) { -- gfree(lineDash); -- lineDashLength = lineDashLengthA; -- if (lineDashLength > 0) { -- lineDash = (SplashCoord *)gmallocn(lineDashLength, sizeof(SplashCoord)); -- memcpy(lineDash, lineDashA, lineDashLength * sizeof(SplashCoord)); -- } else { -- lineDash = NULL; -- } -- lineDashPhase = lineDashPhaseA; --} -- --void OPVPSplashState::setSoftMask(SplashBitmap *softMaskA) { -- if (deleteSoftMask) { -- delete softMask; -- } -- softMask = softMaskA; -- deleteSoftMask = true; --} -diff --git a/filter/pdftoopvp/oprs/OPVPSplashState.h b/filter/pdftoopvp/oprs/OPVPSplashState.h -deleted file mode 100644 -index dc91e51..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashState.h -+++ /dev/null -@@ -1,93 +0,0 @@ --//======================================================================== --// --// OPVPSplashState.h --// --//======================================================================== -- --#ifndef OPVPSPLASHSTATE_H --#define OPVPSPLASHSTATE_H -- --#ifdef USE_GCC_PRAGMAS --#pragma interface --#endif -- --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include "splash/SplashTypes.h" --#include "splash/SplashState.h" --#include "splash/Splash.h" -- --class SplashPattern; --class SplashScreen; --class OPVPSplashClip; --class SplashBitmap; -- --//------------------------------------------------------------------------ --// SplashState --//------------------------------------------------------------------------ -- --class OPVPSplashState { --public: -- -- // Create a new state object, initialized with default settings. -- OPVPSplashState(int width, int height, bool vectorAntialias, -- SplashScreenParams *screenParams); -- OPVPSplashState(int width, int height, bool vectorAntialias, -- SplashScreen *screenA); -- -- // Copy a state object. -- OPVPSplashState *copy() { return new OPVPSplashState(this); } -- -- ~OPVPSplashState(); -- -- void setState(Splash *osplash); -- -- // Set the stroke pattern. This does not copy <strokePatternA>. -- void setStrokePattern(SplashPattern *strokePatternA); -- -- // Set the fill pattern. This does not copy <fillPatternA>. -- void setFillPattern(SplashPattern *fillPatternA); -- -- // Set the screen. This does not copy <screenA>. -- void setScreen(SplashScreen *screenA); -- -- // Set the line dash pattern. This copies the <lineDashA> array. -- void setLineDash(SplashCoord *lineDashA, int lineDashLengthA, -- SplashCoord lineDashPhaseA); -- -- // Set the soft mask bitmap. -- void setSoftMask(SplashBitmap *softMaskA); -- --private: -- -- OPVPSplashState(OPVPSplashState *state); -- -- SplashCoord matrix[6]; -- SplashPattern *strokePattern; -- SplashPattern *fillPattern; -- SplashScreen *screen; -- SplashBlendFunc blendFunc; -- SplashCoord strokeAlpha; -- SplashCoord fillAlpha; -- SplashCoord lineWidth; -- int lineCap; -- int lineJoin; -- SplashCoord miterLimit; -- SplashCoord flatness; -- SplashCoord *lineDash; -- int lineDashLength; -- SplashCoord lineDashPhase; -- bool strokeAdjust; -- OPVPSplashClip *clip; -- SplashBitmap *softMask; -- bool deleteSoftMask; -- bool inNonIsolatedGroup; -- -- OPVPSplashState *next; // used by OPVPSplash class -- -- friend class OPVPSplash; -- friend class OPVPSplashXPath; --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx b/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx -deleted file mode 100644 -index 53ca21d..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashXPath.cxx -+++ /dev/null -@@ -1,88 +0,0 @@ --#include <config.h> --#include <stdio.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include "splash/Splash.h" --#include "splash/SplashMath.h" --#include "OPVPSplashClip.h" --#include "OPVPSplashXPath.h" --#include "OPVPWrapper.h" --#include "OPVPSplash.h" -- --void OPVPSplashXPath::strokeNarrow(OPVPSplash *splash, OPVPSplashState *state) --{ -- SplashXPathSeg *seg; -- int x0, x1, x2, x3, y0, y1, x, y, t; -- SplashCoord dx, dy, dxdy; -- SplashClipResult clipRes; -- int i; -- -- for (i = 0, seg = segs; i < length; ++i, ++seg) { -- -- x0 = splashFloor(seg->x0); -- x1 = splashFloor(seg->x1); -- y0 = splashFloor(seg->y0); -- y1 = splashFloor(seg->y1); -- -- // horizontal segment -- if (y0 == y1) { -- if (x0 > x1) { -- t = x0; x0 = x1; x1 = t; -- } -- if ((clipRes = state->clip->testSpan(x0, x1, y0)) -- != splashClipAllOutside) { -- splash->drawSpan(x0, x1, y0, clipRes == splashClipAllInside); -- } -- -- // segment with |dx| > |dy| -- } else if (splashAbs(seg->dxdy) > 1) { -- dx = seg->x1 - seg->x0; -- dy = seg->y1 - seg->y0; -- dxdy = seg->dxdy; -- if (y0 > y1) { -- t = y0; y0 = y1; y1 = t; -- t = x0; x0 = x1; x1 = t; -- dx = -dx; -- dy = -dy; -- } -- if ((clipRes = state->clip->testRect(x0 <= x1 ? x0 : x1, y0, -- x0 <= x1 ? x1 : x0, y1)) -- != splashClipAllOutside) { -- if (dx > 0) { -- x2 = x0; -- for (y = y0; y < y1; ++y) { -- x3 = splashFloor(seg->x0 + (y + 1 - seg->y0) * dxdy); -- splash->drawSpan(x2, x3 - 1, y, clipRes == splashClipAllInside); -- x2 = x3; -- } -- splash->drawSpan(x2, x1, y, clipRes == splashClipAllInside); -- } else { -- x2 = x0; -- for (y = y0; y < y1; ++y) { -- x3 = splashFloor(seg->x0 + (y + 1 - seg->y0) * dxdy); -- splash->drawSpan(x3 + 1, x2, y, clipRes == splashClipAllInside); -- x2 = x3; -- } -- splash->drawSpan(x1, x2, y, clipRes == splashClipAllInside); -- } -- } -- -- // segment with |dy| > |dx| -- } else { -- dxdy = seg->dxdy; -- if (y0 > y1) { -- t = y0; y0 = y1; y1 = t; -- } -- if ((clipRes = state->clip->testRect(x0 <= x1 ? x0 : x1, y0, -- x0 <= x1 ? x1 : x0, y1)) -- != splashClipAllOutside) { -- for (y = y0; y <= y1; ++y) { -- x = splashFloor(seg->x0 + (y - seg->y0) * dxdy); -- splash->drawPixel(x, y, clipRes == splashClipAllInside); -- } -- } -- } -- } --} -- -diff --git a/filter/pdftoopvp/oprs/OPVPSplashXPath.h b/filter/pdftoopvp/oprs/OPVPSplashXPath.h -deleted file mode 100644 -index 2a07782..0000000 ---- a/filter/pdftoopvp/oprs/OPVPSplashXPath.h -+++ /dev/null -@@ -1,32 +0,0 @@ --#ifndef OPVPSPLASHXPATH_H --#define OPVPSPLASHXPATH_H -- --#include <config.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include "splash/SplashXPath.h" --#include "OPVPSplashPath.h" --#include "OPVPSplashState.h" -- --class OPVPSplash; -- --class OPVPSplashXPath : public SplashXPath { --public: -- OPVPSplashXPath(OPVPSplashPath *path, SplashCoord *matrix, -- SplashCoord flatness, bool closeSubpaths) : -- SplashXPath(path,matrix,flatness,closeSubpaths) { -- } -- -- // Copy an expanded path. -- OPVPSplashXPath *copy() { return new OPVPSplashXPath(this); } -- -- OPVPSplashXPath *makeDashedPath(OPVPSplashState *state); -- void strokeNarrow(OPVPSplash *splash, OPVPSplashState *state); --private: -- OPVPSplashXPath() : SplashXPath(new SplashPath(), 0, 0, false) {}; -- OPVPSplashXPath(OPVPSplashXPath *xPath) : SplashXPath(xPath) { -- } --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPWrapper.cxx b/filter/pdftoopvp/oprs/OPVPWrapper.cxx -deleted file mode 100644 -index 3453e0d..0000000 ---- a/filter/pdftoopvp/oprs/OPVPWrapper.cxx -+++ /dev/null -@@ -1,910 +0,0 @@ --/* -- OPVPWrapper.cc --*/ -- -- --#include <config.h> --#include <stdio.h> --#include "OPRS.h" --#include "OPVPWrapper.h" --#include "OPVPWrapper_0_2.h" --#include <string.h> --#include <dlfcn.h> -- --OPVPWrapper::OPVPWrapper(void *opvpHandleA, opvp_int_t *opvpErrorNoA, -- opvp_api_procs_t *procsA, opvp_dc_t printerContextA) --{ -- procs = procsA; -- opvpHandle = opvpHandleA; -- opvpErrorNo = opvpErrorNoA; -- printerContext = printerContextA; -- version[0] = 1; -- version[1] = 0; -- supportClosePrinter = (procs->opvpClosePrinter != 0); -- supportStartJob = (procs->opvpStartJob != 0); -- supportEndJob = (procs->opvpEndJob != 0); -- supportAbortJob = (procs->opvpAbortJob != 0); -- supportStartDoc = (procs->opvpStartDoc != 0); -- supportEndDoc = (procs->opvpEndDoc != 0); -- supportStartPage = (procs->opvpStartPage != 0); -- supportEndPage = (procs->opvpEndPage != 0); -- supportResetCTM = (procs->opvpResetCTM != 0); -- supportSetCTM = (procs->opvpSetCTM != 0); -- supportGetCTM = (procs->opvpGetCTM != 0); -- supportInitGS = (procs->opvpInitGS != 0); -- supportSaveGS = (procs->opvpSaveGS != 0); -- supportRestoreGS = (procs->opvpRestoreGS != 0); -- supportQueryColorSpace = (procs->opvpQueryColorSpace != 0); -- supportSetColorSpace = (procs->opvpSetColorSpace != 0); -- supportGetColorSpace = (procs->opvpGetColorSpace != 0); -- supportSetFillMode = (procs->opvpSetFillMode != 0); -- supportGetFillMode = (procs->opvpGetFillMode != 0); -- supportSetAlphaConstant = (procs->opvpSetAlphaConstant != 0); -- supportGetAlphaConstant = (procs->opvpGetAlphaConstant != 0); -- supportSetLineWidth = (procs->opvpSetLineWidth != 0); -- supportGetLineWidth = (procs->opvpGetLineWidth != 0); -- supportSetLineDash = (procs->opvpSetLineDash != 0); -- supportGetLineDash = (procs->opvpGetLineDash != 0); -- supportSetLineDashOffset = (procs->opvpSetLineDashOffset != 0); -- supportGetLineDashOffset = (procs->opvpGetLineDashOffset != 0); -- supportSetLineStyle = (procs->opvpSetLineStyle != 0); -- supportGetLineStyle = (procs->opvpGetLineStyle != 0); -- supportSetLineCap = (procs->opvpSetLineCap != 0); -- supportGetLineCap = (procs->opvpGetLineCap != 0); -- supportSetLineJoin = (procs->opvpSetLineJoin != 0); -- supportGetLineJoin = (procs->opvpGetLineJoin != 0); -- supportSetMiterLimit = (procs->opvpSetMiterLimit != 0); -- supportGetMiterLimit = (procs->opvpGetMiterLimit != 0); -- supportSetPaintMode = (procs->opvpSetPaintMode != 0); -- supportGetPaintMode = (procs->opvpGetPaintMode != 0); -- supportSetStrokeColor = (procs->opvpSetStrokeColor != 0); -- supportSetFillColor = (procs->opvpSetFillColor != 0); -- supportSetBgColor = (procs->opvpSetBgColor != 0); -- supportNewPath = (procs->opvpNewPath != 0); -- supportEndPath = (procs->opvpEndPath != 0); -- supportStrokePath = (procs->opvpStrokePath != 0); -- supportFillPath = (procs->opvpFillPath != 0); -- supportStrokeFillPath = (procs->opvpStrokeFillPath != 0); -- supportSetClipPath = (procs->opvpSetClipPath != 0); -- supportSetCurrentPoint = (procs->opvpSetCurrentPoint != 0); -- supportLinePath = (procs->opvpLinePath != 0); -- supportPolygonPath = (procs->opvpPolygonPath != 0); -- supportRectanglePath = (procs->opvpRectanglePath != 0); -- supportRoundRectanglePath = (procs->opvpRoundRectanglePath != 0); -- supportBezierPath = (procs->opvpBezierPath != 0); -- supportArcPath = (procs->opvpArcPath != 0); -- supportDrawImage = (procs->opvpDrawImage != 0); -- supportStartDrawImage = (procs->opvpStartDrawImage != 0); -- supportTransferDrawImage = (procs->opvpTransferDrawImage != 0); -- supportEndDrawImage = (procs->opvpEndDrawImage != 0); -- supportStartScanline = (procs->opvpStartScanline != 0); -- supportScanline = (procs->opvpScanline != 0); -- supportEndScanline = (procs->opvpEndScanline != 0); -- supportStartRaster = (procs->opvpStartRaster != 0); -- supportTransferRasterData = (procs->opvpTransferRasterData != 0); -- supportSkipRaster = (procs->opvpSkipRaster != 0); -- supportEndRaster = (procs->opvpEndRaster != 0); -- supportStartStream = (procs->opvpStartStream != 0); -- supportTransferStreamData = (procs->opvpTransferStreamData != 0); -- supportEndStream = (procs->opvpEndStream != 0); -- supportQueryDeviceCapability = (procs->opvpQueryDeviceCapability != 0); -- supportQueryDeviceInfo = (procs->opvpQueryDeviceInfo != 0); -- supportResetClipPath = (procs->opvpResetClipPath != 0); --} -- --OPVPWrapper::~OPVPWrapper() --{ -- unloadDriver(opvpHandle); -- opvpHandle = 0; --} -- --opvp_result_t OPVPWrapper::ClosePrinter() --{ -- if (!supportClosePrinter) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpClosePrinter(printerContext); --} -- --opvp_result_t OPVPWrapper::StartJob(const opvp_char_t *jobInfo) --{ -- if (!supportStartJob) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartJob(printerContext,jobInfo); --} -- --opvp_result_t OPVPWrapper::EndJob() --{ -- if (!supportEndJob) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndJob(printerContext); --} -- --opvp_result_t OPVPWrapper::AbortJob() --{ -- if (!supportAbortJob) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpAbortJob(printerContext); --} -- --opvp_result_t OPVPWrapper::StartDoc(const opvp_char_t *docInfo) --{ -- if (!supportStartDoc) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartDoc(printerContext,docInfo); --} -- --opvp_result_t OPVPWrapper::EndDoc() --{ -- if (!supportEndDoc) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndDoc(printerContext); --} -- --opvp_result_t OPVPWrapper::StartPage(const opvp_char_t *pageInfo) --{ -- if (!supportStartPage) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartPage(printerContext,pageInfo); --} -- --opvp_result_t OPVPWrapper::EndPage() --{ -- if (!supportEndPage) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndPage(printerContext); --} -- --opvp_result_t OPVPWrapper::QueryDeviceCapability(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf) --{ -- if (!supportQueryDeviceCapability) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpQueryDeviceCapability(printerContext,queryflag, -- buflen,infoBuf); --} -- --opvp_result_t OPVPWrapper::QueryDeviceInfo(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf) --{ -- if (!supportQueryDeviceInfo) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpQueryDeviceInfo(printerContext,queryflag, -- buflen,infoBuf); --} -- --opvp_result_t OPVPWrapper::ResetCTM() --{ -- if (!supportResetCTM) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpResetCTM(printerContext); --} -- --opvp_result_t OPVPWrapper::SetCTM(const opvp_ctm_t *pCTM) --{ -- if (!supportSetCTM) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetCTM(printerContext,pCTM); --} -- --opvp_result_t OPVPWrapper::GetCTM(opvp_ctm_t *pCTM) --{ -- if (!supportGetCTM) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetCTM(printerContext,pCTM); --} -- --opvp_result_t OPVPWrapper::InitGS() --{ -- if (!supportInitGS) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpInitGS(printerContext); --} -- --opvp_result_t OPVPWrapper::SaveGS() --{ -- if (!supportSaveGS) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSaveGS(printerContext); --} -- --opvp_result_t OPVPWrapper::RestoreGS() --{ -- if (!supportRestoreGS) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpRestoreGS(printerContext); --} -- --opvp_result_t OPVPWrapper::QueryColorSpace(opvp_int_t *pnum, -- opvp_cspace_t *pcspace) --{ -- if (!supportQueryColorSpace) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpQueryColorSpace(printerContext,pnum,pcspace); --} -- --opvp_result_t OPVPWrapper::SetColorSpace(opvp_cspace_t cspace) --{ -- if (!supportSetColorSpace) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetColorSpace(printerContext,cspace); --} -- --opvp_result_t OPVPWrapper::GetColorSpace(opvp_cspace_t *pcspace) --{ -- if (!supportGetColorSpace) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetColorSpace(printerContext,pcspace); --} -- --opvp_result_t OPVPWrapper::SetFillMode(opvp_fillmode_t fillmode) --{ -- if (!supportSetFillMode) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetFillMode(printerContext,fillmode); --} -- --opvp_result_t OPVPWrapper::GetFillMode(opvp_fillmode_t *pfillmode) --{ -- if (!supportGetFillMode) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetFillMode(printerContext,pfillmode); --} -- --opvp_result_t OPVPWrapper::SetAlphaConstant(opvp_float_t alpha) --{ -- if (!supportSetAlphaConstant) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetAlphaConstant(printerContext,alpha); --} -- --opvp_result_t OPVPWrapper::GetAlphaConstant(opvp_float_t *palpha) --{ -- if (!supportGetAlphaConstant) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetAlphaConstant(printerContext,palpha); --} -- --opvp_result_t OPVPWrapper::SetLineWidth(opvp_fix_t width) --{ -- if (!supportSetLineWidth) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineWidth(printerContext,width); --} -- --opvp_result_t OPVPWrapper::GetLineWidth(opvp_fix_t *pwidth) --{ -- if (!supportGetLineWidth) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineWidth(printerContext,pwidth); --} -- --opvp_result_t OPVPWrapper::SetLineDash(opvp_int_t num, -- const opvp_fix_t *pdash) --{ -- if (!supportSetLineDash) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineDash(printerContext,num,pdash); --} -- --opvp_result_t OPVPWrapper::GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash) --{ -- if (!supportGetLineDash) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineDash(printerContext,pnum,pdash); --} -- --opvp_result_t OPVPWrapper::SetLineDashOffset(opvp_fix_t offset) --{ -- if (!supportSetLineDashOffset) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineDashOffset(printerContext,offset); --} -- --opvp_result_t OPVPWrapper::GetLineDashOffset(opvp_fix_t *poffset) --{ -- if (!supportGetLineDashOffset) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineDashOffset(printerContext,poffset); --} -- --opvp_result_t OPVPWrapper::SetLineStyle(opvp_linestyle_t linestyle) --{ -- if (!supportSetLineStyle) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineStyle(printerContext,linestyle); --} -- --opvp_result_t OPVPWrapper::GetLineStyle(opvp_linestyle_t *plinestyle) --{ -- if (!supportGetLineStyle) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineStyle(printerContext,plinestyle); --} -- --opvp_result_t OPVPWrapper::SetLineCap(opvp_linecap_t linecap) --{ -- if (!supportSetLineCap) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineCap(printerContext,linecap); --} -- --opvp_result_t OPVPWrapper::GetLineCap(opvp_linecap_t *plinecap) --{ -- if (!supportGetLineCap) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineCap(printerContext,plinecap); --} -- --opvp_result_t OPVPWrapper::SetLineJoin(opvp_linejoin_t linejoin) --{ -- if (!supportSetLineJoin) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetLineJoin(printerContext,linejoin); --} -- --opvp_result_t OPVPWrapper::GetLineJoin(opvp_linejoin_t *plinejoin) --{ -- if (!supportGetLineJoin) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetLineJoin(printerContext,plinejoin); --} -- --opvp_result_t OPVPWrapper::SetMiterLimit(opvp_fix_t miterlimit) --{ -- if (!supportSetMiterLimit) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetMiterLimit(printerContext,miterlimit); --} -- --opvp_result_t OPVPWrapper::GetMiterLimit(opvp_fix_t *pmiterlimit) --{ -- if (!supportGetMiterLimit) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetMiterLimit(printerContext,pmiterlimit); --} -- --opvp_result_t OPVPWrapper::SetPaintMode(opvp_paintmode_t paintmode) --{ -- if (!supportSetPaintMode) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetPaintMode(printerContext,paintmode); --} -- --opvp_result_t OPVPWrapper::GetPaintMode(opvp_paintmode_t *ppaintmode) --{ -- if (!supportGetPaintMode) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpGetPaintMode(printerContext,ppaintmode); --} -- --opvp_result_t OPVPWrapper::SetStrokeColor(const opvp_brush_t *brush) --{ -- if (!supportSetStrokeColor) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetStrokeColor(printerContext,brush); --} -- --opvp_result_t OPVPWrapper::SetFillColor(const opvp_brush_t *brush) --{ -- if (!supportSetFillColor) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetFillColor(printerContext,brush); --} -- --opvp_result_t OPVPWrapper::SetBgColor(const opvp_brush_t *brush) --{ -- if (!supportSetBgColor) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetBgColor(printerContext,brush); --} -- --opvp_result_t OPVPWrapper::NewPath() --{ -- if (!supportNewPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpNewPath(printerContext); --} -- --opvp_result_t OPVPWrapper::EndPath() --{ -- if (!supportEndPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndPath(printerContext); --} -- --opvp_result_t OPVPWrapper::StrokePath() --{ -- if (!supportStrokePath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStrokePath(printerContext); --} -- --opvp_result_t OPVPWrapper::FillPath() --{ -- if (!supportFillPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpFillPath(printerContext); --} -- --opvp_result_t OPVPWrapper::StrokeFillPath() --{ -- if (!supportStrokeFillPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStrokeFillPath(printerContext); --} -- --opvp_result_t OPVPWrapper::SetClipPath(opvp_cliprule_t clipRule) --{ -- if (!supportSetClipPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetClipPath(printerContext,clipRule); --} -- --opvp_result_t OPVPWrapper::SetCurrentPoint(opvp_fix_t x, opvp_fix_t y) --{ -- if (!supportSetCurrentPoint) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSetCurrentPoint(printerContext,x,y); --} -- --opvp_result_t OPVPWrapper::LinePath(opvp_pathmode_t flag, -- opvp_int_t npoints, const opvp_point_t *points) --{ -- if (!supportLinePath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpLinePath(printerContext,flag,npoints,points); --} -- --opvp_result_t OPVPWrapper::PolygonPath(opvp_int_t npolygons, -- const opvp_int_t *nvertexes, const opvp_point_t *points) --{ -- if (!supportPolygonPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpPolygonPath(printerContext,npolygons,nvertexes,points); --} -- --opvp_result_t OPVPWrapper::RectanglePath(opvp_int_t nrectangles, -- const opvp_rectangle_t *rectangles) --{ -- if (!supportRectanglePath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpRectanglePath(printerContext,nrectangles,rectangles); --} -- --opvp_result_t OPVPWrapper::RoundRectanglePath(opvp_int_t nrectangles, -- const opvp_roundrectangle_t *rectangles) --{ -- if (!supportRoundRectanglePath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpRoundRectanglePath(printerContext,nrectangles,rectangles); --} -- --opvp_result_t OPVPWrapper::BezierPath(opvp_int_t npoints, -- const opvp_point_t *points) --{ -- if (!supportBezierPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpBezierPath(printerContext,npoints,points); --} -- --opvp_result_t OPVPWrapper::ArcPath(opvp_arcmode_t kind, -- opvp_arcdir_t dir, opvp_fix_t bbx0, -- opvp_fix_t bby0, opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, -- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1) --{ -- if (!supportArcPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpArcPath(printerContext,kind,dir,bbx0,bby0, -- bbx1,bby1,x0,y0,x1,y1); --} -- --opvp_result_t OPVPWrapper::DrawImage( -- opvp_int_t sourceWidth, opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, -- opvp_int_t destinationHeight, const void *imagedata) --{ -- if (!supportDrawImage) { -- int result; -- -- if ((result = StartDrawImage(sourceWidth,sourceHeight,sourcePitch, -- imageFormat,destinationWidth,destinationHeight)) < 0) { -- return result; -- } -- if ((result = TransferDrawImage(sourcePitch*sourceHeight, -- imagedata)) < 0) { -- return result; -- } -- return EndDrawImage(); -- } -- return procs->opvpDrawImage(printerContext,sourceWidth, sourceHeight, -- sourcePitch, imageFormat, destinationWidth, destinationHeight, -- imagedata); --} -- --opvp_result_t OPVPWrapper::StartDrawImage( -- opvp_int_t sourceWidth, opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, -- opvp_int_t destinationHeight) --{ -- if (!supportStartDrawImage) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartDrawImage(printerContext,sourceWidth, -- sourceHeight,sourcePitch,imageFormat, -- destinationWidth,destinationHeight); --} -- --opvp_result_t OPVPWrapper::TransferDrawImage(opvp_int_t count, -- const void *imagedata) --{ -- if (!supportTransferDrawImage) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpTransferDrawImage(printerContext,count,imagedata); --} -- --opvp_result_t OPVPWrapper::EndDrawImage() --{ -- if (!supportEndDrawImage) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndDrawImage(printerContext); --} -- --opvp_result_t OPVPWrapper::StartScanline(opvp_int_t yposition) --{ -- if (!supportStartScanline) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartScanline(printerContext,yposition); --} -- --opvp_result_t OPVPWrapper::Scanline(opvp_int_t nscanpairs, -- const opvp_int_t *scanpairs) --{ -- if (!supportScanline) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpScanline(printerContext,nscanpairs,scanpairs); --} -- --opvp_result_t OPVPWrapper::EndScanline() --{ -- if (!supportEndScanline) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndScanline(printerContext); --} -- --opvp_result_t OPVPWrapper::StartRaster( -- opvp_int_t rasterWidth) --{ -- if (!supportStartRaster) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartRaster(printerContext,rasterWidth); --} -- --opvp_result_t OPVPWrapper::TransferRasterData(opvp_int_t count, -- const opvp_byte_t *data) --{ -- if (!supportTransferRasterData) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpTransferRasterData(printerContext,count, -- data); --} -- --opvp_result_t OPVPWrapper::SkipRaster(opvp_int_t count) --{ -- if (!supportSkipRaster) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpSkipRaster(printerContext,count); --} -- --opvp_result_t OPVPWrapper::EndRaster() --{ -- if (!supportEndRaster) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndRaster(printerContext); --} -- --opvp_result_t OPVPWrapper::StartStream() --{ -- if (!supportStartStream) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpStartStream(printerContext); --} -- --opvp_result_t OPVPWrapper::TransferStreamData(opvp_int_t count, -- const void *data) --{ -- if (!supportTransferStreamData) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpTransferStreamData(printerContext,count,data); --} -- --opvp_result_t OPVPWrapper::EndStream() --{ -- if (!supportEndStream) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpEndStream(printerContext); --} -- --opvp_result_t OPVPWrapper::ResetClipPath() --{ -- if (!supportResetClipPath) { -- *opvpErrorNo = OPVP_NOTSUPPORTED; -- return -1; -- } -- return procs->opvpResetClipPath(printerContext); --} -- --char *OPVPWrapper::allocString(char **destin, unsigned int size) --{ -- if (!destin) return 0; -- -- if (*destin != 0) delete[] *destin; -- if (size > 0) { -- *destin = new char[size]; -- } -- -- return *destin; --} -- --char **OPVPWrapper::genDynamicLibName(const char *name) --{ -- static char *buff[5] = {0,0,0,0,0}; -- -- allocString(&(buff[0]), strlen(name)+1); -- strcpy(buff[0], name); -- allocString(&(buff[1]), strlen(name)+3+1); -- strcpy(buff[1], name); -- strcat(buff[1], ".so"); -- allocString(&(buff[2]), strlen(name)+4+1); -- strcpy(buff[2], name); -- strcat(buff[2], ".dll"); -- allocString(&(buff[3]), strlen(name)+6+1); -- strcpy(buff[3], "lib"); -- strcat(buff[3], name); -- strcat(buff[3], ".so"); -- buff[4] = 0; -- -- return buff; --} -- --OPVPWrapper *OPVPWrapper::loadDriver(const char *driverName, -- int outputFD, const char *printerModel) --{ -- char **list = 0; -- int i; -- void *h; -- int nApiEntry; -- int (*opvpOpenPrinter)(opvp_int_t outputFD, -- const opvp_char_t * printerModel, const opvp_int_t version[2], -- opvp_api_procs_t **apiEntry) = 0; -- int (*opvpOpenPrinter_0_2)(int outputFD, char* printerModel, -- int *nApiEntry, OPVP_api_procs **apiEntry) = 0; -- opvp_api_procs_t *opvpProcs; -- OPVP_api_procs *opvpProcs_0_2; -- opvp_dc_t opvpContext; -- int opvpContext_0_2 = 0; -- opvp_int_t *opvpErrorNo = 0; -- int *opvpErrorNo_0_2 = 0; -- void *handle = 0; -- OPVPWrapper *opvp = 0; -- -- // remove directory part -- const char *s = strrchr(driverName,'/'); -- if (s != NULL) { -- driverName = s+1; -- } -- -- list = genDynamicLibName(driverName); -- -- if (list) { -- i = 0; -- while (list[i]) { -- if ((h = dlopen(list[i],RTLD_NOW))) { -- opvpOpenPrinter = (int (*)(opvp_int_t, -- const opvp_char_t *, const opvp_int_t[2], -- opvp_api_procs_t **))dlsym(h,"opvpOpenPrinter"); -- opvpErrorNo = (opvp_int_t *)dlsym(h,"opvpErrorNo"); -- if (opvpOpenPrinter && opvpErrorNo) { -- handle = h; -- break; -- } -- opvpOpenPrinter = 0; -- opvpErrorNo = 0; -- /* try version 0.2 driver */ -- opvpOpenPrinter_0_2 = (int (*)(int, char*, int *, -- OPVP_api_procs **))dlsym(h,"OpenPrinter"); -- opvpErrorNo_0_2 = (int *)dlsym(h,"errorno"); -- if (opvpOpenPrinter_0_2 && opvpErrorNo_0_2) { -- handle = h; -- break; -- } -- opvpOpenPrinter_0_2 = 0; -- opvpErrorNo_0_2 = 0; -- } -- i++; -- } -- for (i = 0;list[i] != 0;i++) { -- delete[] (list[i]); -- list[i] = 0; -- } -- } -- if (handle == 0) { -- OPRS::error("Loading vector printer driver (%s) fail\n",driverName); -- return 0; -- } -- if (opvpOpenPrinter != 0) { -- opvp_int_t apiVersion[2]; -- -- /* require version 1.0 */ -- apiVersion[0] = 1; -- apiVersion[1] = 0; -- if ((opvpContext = (*opvpOpenPrinter)(outputFD, -- (const opvp_char_t *)printerModel,apiVersion,&opvpProcs)) < 0) { -- OPRS::error("OpenPrinter fail\n",driverName); -- unloadDriver(handle); -- return 0; -- } -- opvp = new OPVPWrapper(handle, opvpErrorNo, opvpProcs, opvpContext); -- } else if (opvpOpenPrinter_0_2) { -- if ((opvpContext_0_2 = (*opvpOpenPrinter_0_2)(outputFD, -- (char *)printerModel,&nApiEntry,&opvpProcs_0_2)) < 0) { -- OPRS::error("OpenPrinter fail\n",driverName); -- unloadDriver(handle); -- return 0; -- } -- opvp = (OPVPWrapper *)new OPVPWrapper_0_2(handle, opvpErrorNo_0_2, -- opvpProcs_0_2, opvpContext_0_2); -- } -- return opvp; --} -- --/* -- * unload vector-driver -- */ --int OPVPWrapper::unloadDriver(void *opvpHandleA) --{ -- if (opvpHandleA != 0) { -- dlclose(opvpHandleA); -- } -- return 0; --} -- --opvp_int_t OPVPWrapper::getErrorNo() --{ -- return *opvpErrorNo; --} -- -diff --git a/filter/pdftoopvp/oprs/OPVPWrapper.h b/filter/pdftoopvp/oprs/OPVPWrapper.h -deleted file mode 100644 -index 1dfcba3..0000000 ---- a/filter/pdftoopvp/oprs/OPVPWrapper.h -+++ /dev/null -@@ -1,205 +0,0 @@ --/* -- OPVPWrapper.h --*/ -- --#ifndef OPVPWRAPPER_H --#define OPVPWRAPPER_H -- --#include "opvp_common.h" -- --class OPVPWrapper { --public: -- static OPVPWrapper *loadDriver(const char *driverName, int outputFD, -- const char *printerModel); -- static int unloadDriver(void *opvpHandleA); --private: -- static char *allocString(char **destin, unsigned int size); -- static char **genDynamicLibName(const char *name); --public: -- OPVPWrapper() {}; -- OPVPWrapper(void *opvpHandleA, opvp_int_t *opvpErrorNoA, -- opvp_api_procs_t *procsA, opvp_dc_t printerContextA); -- virtual ~OPVPWrapper(); -- -- virtual opvp_int_t getErrorNo(); -- -- void getVersion(opvp_int_t versionA[2]) -- { -- versionA[0] = version[0]; -- versionA[1] = version[1]; -- } -- -- virtual opvp_result_t ClosePrinter(); -- virtual opvp_result_t StartJob(const opvp_char_t *jobInfo); -- virtual opvp_result_t EndJob(); -- virtual opvp_result_t AbortJob(); -- virtual opvp_result_t StartDoc(const opvp_char_t *docInfo); -- virtual opvp_result_t EndDoc(); -- virtual opvp_result_t StartPage(const opvp_char_t *pageInfo); -- virtual opvp_result_t EndPage(); -- virtual opvp_result_t QueryDeviceCapability(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf); -- virtual opvp_result_t QueryDeviceInfo(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf); -- virtual opvp_result_t ResetCTM(); -- virtual opvp_result_t SetCTM(const opvp_ctm_t *pCTM); -- virtual opvp_result_t GetCTM(opvp_ctm_t *pCTM); -- virtual opvp_result_t InitGS(); -- virtual opvp_result_t SaveGS(); -- virtual opvp_result_t RestoreGS(); -- virtual opvp_result_t QueryColorSpace(opvp_int_t *pnum, -- opvp_cspace_t *pcspace); -- virtual opvp_result_t SetColorSpace(opvp_cspace_t cspace); -- virtual opvp_result_t GetColorSpace(opvp_cspace_t *pcspace); -- virtual opvp_result_t SetFillMode(opvp_fillmode_t fillmode); -- virtual opvp_result_t GetFillMode(opvp_fillmode_t *pfillmode); -- virtual opvp_result_t SetAlphaConstant(opvp_float_t alpha); -- virtual opvp_result_t GetAlphaConstant(opvp_float_t *palpha); -- virtual opvp_result_t SetLineWidth(opvp_fix_t width); -- virtual opvp_result_t GetLineWidth(opvp_fix_t *pwidth); -- virtual opvp_result_t SetLineDash(opvp_int_t num, const opvp_fix_t *pdash); -- virtual opvp_result_t GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash); -- virtual opvp_result_t SetLineDashOffset(opvp_fix_t offset); -- virtual opvp_result_t GetLineDashOffset(opvp_fix_t *poffset); -- virtual opvp_result_t SetLineStyle(opvp_linestyle_t linestyle); -- virtual opvp_result_t GetLineStyle(opvp_linestyle_t *plinestyle); -- virtual opvp_result_t SetLineCap(opvp_linecap_t linecap); -- virtual opvp_result_t GetLineCap(opvp_linecap_t *plinecap); -- virtual opvp_result_t SetLineJoin(opvp_linejoin_t linejoin); -- virtual opvp_result_t GetLineJoin(opvp_linejoin_t *plinejoin); -- virtual opvp_result_t SetMiterLimit(opvp_fix_t miterlimit); -- virtual opvp_result_t GetMiterLimit(opvp_fix_t *pmiterlimit); -- virtual opvp_result_t SetPaintMode(opvp_paintmode_t paintmode); -- virtual opvp_result_t GetPaintMode(opvp_paintmode_t *ppaintmode); -- virtual opvp_result_t SetStrokeColor(const opvp_brush_t *brush); -- virtual opvp_result_t SetFillColor(const opvp_brush_t *brush); -- virtual opvp_result_t SetBgColor(const opvp_brush_t *brush); -- virtual opvp_result_t NewPath(); -- virtual opvp_result_t EndPath(); -- virtual opvp_result_t StrokePath(); -- virtual opvp_result_t FillPath(); -- virtual opvp_result_t StrokeFillPath(); -- virtual opvp_result_t SetClipPath(opvp_cliprule_t clipRule); -- virtual opvp_result_t SetCurrentPoint(opvp_fix_t x, opvp_fix_t y); -- virtual opvp_result_t LinePath(opvp_pathmode_t flag, -- opvp_int_t npoints, const opvp_point_t *points); -- virtual opvp_result_t PolygonPath(opvp_int_t npolygons, -- const opvp_int_t *nvertexes, const opvp_point_t *points); -- virtual opvp_result_t RectanglePath(opvp_int_t nrectangles, -- const opvp_rectangle_t *reclangles); -- virtual opvp_result_t RoundRectanglePath(opvp_int_t nrectangles, -- const opvp_roundrectangle_t *reclangles); -- virtual opvp_result_t BezierPath(opvp_int_t npoints, -- const opvp_point_t *points); -- virtual opvp_result_t ArcPath(opvp_arcmode_t kind, -- opvp_arcdir_t dir, opvp_fix_t bbx0, opvp_fix_t bby0, -- opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, -- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1); -- virtual opvp_result_t DrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, -- opvp_int_t destinationWidth, opvp_int_t destinationHeight, -- const void *imageData); -- virtual opvp_result_t StartDrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, -- opvp_int_t destinationWidth, opvp_int_t destinationHeight); -- virtual opvp_result_t TransferDrawImage(opvp_int_t count, -- const void *imageData); -- virtual opvp_result_t EndDrawImage(); -- virtual opvp_result_t StartScanline(opvp_int_t yposition); -- virtual opvp_result_t Scanline(opvp_int_t nscanpairs, -- const opvp_int_t *scanpairs); -- virtual opvp_result_t EndScanline(); -- virtual opvp_result_t StartRaster(opvp_int_t rasterWidth); -- virtual opvp_result_t TransferRasterData(opvp_int_t count, -- const opvp_byte_t *data); -- virtual opvp_result_t SkipRaster(opvp_int_t count); -- virtual opvp_result_t EndRaster(); -- virtual opvp_result_t StartStream(); -- virtual opvp_result_t TransferStreamData(opvp_int_t count, -- const void *data); -- virtual opvp_result_t EndStream(); -- virtual opvp_result_t ResetClipPath(); -- -- bool supportClosePrinter; -- bool supportStartJob; -- bool supportEndJob; -- bool supportAbortJob; -- bool supportStartDoc; -- bool supportEndDoc; -- bool supportStartPage; -- bool supportEndPage; -- bool supportResetCTM; -- bool supportSetCTM; -- bool supportGetCTM; -- bool supportInitGS; -- bool supportSaveGS; -- bool supportRestoreGS; -- bool supportQueryColorSpace; -- bool supportSetColorSpace; -- bool supportGetColorSpace; -- bool supportSetFillMode; -- bool supportGetFillMode; -- bool supportSetAlphaConstant; -- bool supportGetAlphaConstant; -- bool supportSetLineWidth; -- bool supportGetLineWidth; -- bool supportSetLineDash; -- bool supportGetLineDash; -- bool supportSetLineDashOffset; -- bool supportGetLineDashOffset; -- bool supportSetLineStyle; -- bool supportGetLineStyle; -- bool supportSetLineCap; -- bool supportGetLineCap; -- bool supportSetLineJoin; -- bool supportGetLineJoin; -- bool supportSetMiterLimit; -- bool supportGetMiterLimit; -- bool supportSetPaintMode; -- bool supportGetPaintMode; -- bool supportSetStrokeColor; -- bool supportSetFillColor; -- bool supportSetBgColor; -- bool supportNewPath; -- bool supportEndPath; -- bool supportStrokePath; -- bool supportFillPath; -- bool supportStrokeFillPath; -- bool supportSetClipPath; -- bool supportSetCurrentPoint; -- bool supportLinePath; -- bool supportPolygonPath; -- bool supportRectanglePath; -- bool supportRoundRectanglePath; -- bool supportBezierPath; -- bool supportArcPath; -- bool supportDrawImage; -- bool supportStartDrawImage; -- bool supportTransferDrawImage; -- bool supportEndDrawImage; -- bool supportStartScanline; -- bool supportScanline; -- bool supportEndScanline; -- bool supportStartRaster; -- bool supportTransferRasterData; -- bool supportSkipRaster; -- bool supportEndRaster; -- bool supportStartStream; -- bool supportTransferStreamData; -- bool supportEndStream; -- bool supportQueryDeviceCapability; -- bool supportQueryDeviceInfo; -- bool supportResetClipPath; -- --protected: -- void *opvpHandle; -- opvp_int_t version[2]; --private: -- opvp_api_procs_t *procs; -- opvp_int_t *opvpErrorNo; -- opvp_dc_t printerContext; --}; -- --#endif -diff --git a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx b/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx -deleted file mode 100644 -index 112580e..0000000 ---- a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.cxx -+++ /dev/null -@@ -1,1172 +0,0 @@ --/* -- OPVPWrapper_0_2.cc --*/ -- -- --#include <config.h> --#include "OPVPWrapper_0_2.h" --#include <string.h> -- --/* color space mapping 0.2 to 1.0 */ --opvp_cspace_t OPVPWrapper_0_2::cspace_0_2_to_1_0[] = { -- OPVP_CSPACE_BW, -- OPVP_CSPACE_DEVICEGRAY, -- OPVP_CSPACE_DEVICECMY, -- OPVP_CSPACE_DEVICECMYK, -- OPVP_CSPACE_DEVICERGB, -- OPVP_CSPACE_STANDARDRGB, -- OPVP_CSPACE_STANDARDRGB64 --}; -- --/* color space mapping 1.0 to 0.2 */ --OPVP_ColorSpace OPVPWrapper_0_2::cspace_1_0_to_0_2[] = { -- OPVP_cspaceBW, -- OPVP_cspaceDeviceGray, -- OPVP_cspaceDeviceCMY, -- OPVP_cspaceDeviceCMYK, -- OPVP_cspaceDeviceRGB, -- (OPVP_ColorSpace)0, /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ -- OPVP_cspaceStandardRGB, -- OPVP_cspaceStandardRGB64, --}; -- --/* image format mapping 1.0 to 0.2 */ --OPVP_ImageFormat OPVPWrapper_0_2::iformat_1_0_to_0_2[] = { -- OPVP_iformatRaw, -- /* OPVP_IFORMAT_MASK use iformat raw in 0.2 */ -- OPVP_iformatRaw, -- OPVP_iformatRLE, -- OPVP_iformatJPEG, -- OPVP_iformatPNG, --}; -- --/* image colorDepth needed in 0.2 */ --int OPVPWrapper_0_2::colorDepth_0_2[] = { -- 1, /* OPVP_CSPACE_BW */ -- 8, /* OPVP_CSPACE_DEVICEGRAY */ -- 24, /* OPVP_CSPACE_DEVICECMY */ -- 32, /* OPVP_CSPACE_DEVICECMYK */ -- 24, /* OPVP_CSPACE_DEVICERGB */ -- 32, /* OPVP_CSPACE_DEVICEKRGB */ -- 24, /* OPVP_CSPACE_STANDARDRGB */ -- 64, /* OPVP_CSPACE_STANDARDRGB64 */ --}; -- --OPVPWrapper_0_2::OPVPWrapper_0_2(void *opvpHandleA, int *opvpErrorNoA, -- OPVP_api_procs *procsA, int printerContextA) --{ -- procs_0_2 = procsA; -- opvpHandle = opvpHandleA; -- opvpErrorNo_0_2 = opvpErrorNoA; -- printerContext_0_2 = printerContextA; -- version[0] = 0; -- version[1] = 2; -- supportClosePrinter = (procs_0_2->ClosePrinter != 0); -- supportStartJob = (procs_0_2->StartJob != 0); -- supportEndJob = (procs_0_2->EndJob != 0); -- supportAbortJob = false; -- supportStartDoc = (procs_0_2->StartDoc != 0); -- supportEndDoc = (procs_0_2->EndDoc != 0); -- supportStartPage = (procs_0_2->StartPage != 0); -- supportEndPage = (procs_0_2->EndPage != 0); -- supportResetCTM = (procs_0_2->ResetCTM != 0); -- supportSetCTM = (procs_0_2->SetCTM != 0); -- supportGetCTM = (procs_0_2->GetCTM != 0); -- supportInitGS = (procs_0_2->InitGS != 0); -- supportSaveGS = (procs_0_2->SaveGS != 0); -- supportRestoreGS = (procs_0_2->RestoreGS != 0); -- supportQueryColorSpace = (procs_0_2->QueryColorSpace != 0); -- supportSetColorSpace = (procs_0_2->SetColorSpace != 0); -- supportGetColorSpace = (procs_0_2->GetColorSpace != 0); -- supportSetFillMode = (procs_0_2->SetFillMode != 0); -- supportGetFillMode = (procs_0_2->GetFillMode != 0); -- supportSetAlphaConstant = (procs_0_2->SetAlphaConstant != 0); -- supportGetAlphaConstant = (procs_0_2->GetAlphaConstant != 0); -- supportSetLineWidth = (procs_0_2->SetLineWidth != 0); -- supportGetLineWidth = (procs_0_2->GetLineWidth != 0); -- supportSetLineDash = (procs_0_2->SetLineDash != 0); -- supportGetLineDash = (procs_0_2->GetLineDash != 0); -- supportSetLineDashOffset = (procs_0_2->SetLineDashOffset != 0); -- supportGetLineDashOffset = (procs_0_2->GetLineDashOffset != 0); -- supportSetLineStyle = (procs_0_2->SetLineStyle != 0); -- supportGetLineStyle = (procs_0_2->GetLineStyle != 0); -- supportSetLineCap = (procs_0_2->SetLineCap != 0); -- supportGetLineCap = (procs_0_2->GetLineCap != 0); -- supportSetLineJoin = (procs_0_2->SetLineJoin != 0); -- supportGetLineJoin = (procs_0_2->GetLineJoin != 0); -- supportSetMiterLimit = (procs_0_2->SetMiterLimit != 0); -- supportGetMiterLimit = (procs_0_2->GetMiterLimit != 0); -- supportSetPaintMode = (procs_0_2->SetPaintMode != 0); -- supportGetPaintMode = (procs_0_2->GetPaintMode != 0); -- supportSetStrokeColor = (procs_0_2->SetStrokeColor != 0); -- supportSetFillColor = (procs_0_2->SetFillColor != 0); -- supportSetBgColor = (procs_0_2->SetBgColor != 0); -- supportNewPath = (procs_0_2->NewPath != 0); -- supportEndPath = (procs_0_2->EndPath != 0); -- supportStrokePath = (procs_0_2->StrokePath != 0); -- supportFillPath = (procs_0_2->FillPath != 0); -- supportStrokeFillPath = (procs_0_2->StrokeFillPath != 0); -- supportSetClipPath = (procs_0_2->SetClipPath != 0); -- supportSetCurrentPoint = (procs_0_2->SetCurrentPoint != 0); -- supportLinePath = (procs_0_2->LinePath != 0); -- supportPolygonPath = (procs_0_2->PolygonPath != 0); -- supportRectanglePath = (procs_0_2->RectanglePath != 0); -- supportRoundRectanglePath = (procs_0_2->RoundRectanglePath != 0); -- supportBezierPath = (procs_0_2->BezierPath != 0); -- supportArcPath = (procs_0_2->ArcPath != 0); -- supportDrawImage = (procs_0_2->DrawImage != 0); -- supportStartDrawImage = (procs_0_2->StartDrawImage != 0); -- supportTransferDrawImage = (procs_0_2->TransferDrawImage != 0); -- supportEndDrawImage = (procs_0_2->EndDrawImage != 0); -- supportStartScanline = (procs_0_2->StartScanline != 0); -- supportScanline = (procs_0_2->Scanline != 0); -- supportEndScanline = (procs_0_2->EndScanline != 0); -- supportStartRaster = (procs_0_2->StartRaster != 0); -- supportTransferRasterData = (procs_0_2->TransferRasterData != 0); -- supportSkipRaster = (procs_0_2->SkipRaster != 0); -- supportEndRaster = (procs_0_2->EndRaster != 0); -- supportStartStream = (procs_0_2->StartStream != 0); -- supportTransferStreamData = (procs_0_2->TransferStreamData != 0); -- supportEndStream = (procs_0_2->EndStream != 0); -- supportQueryDeviceCapability = (procs_0_2->QueryDeviceCapability != 0); -- supportQueryDeviceInfo = (procs_0_2->QueryDeviceInfo != 0); -- supportResetClipPath = (procs_0_2->ResetClipPath != 0); -- colorSpace = OPVP_CSPACE_STANDARDRGB; -- if (supportGetColorSpace) { -- if (GetColorSpace(&colorSpace) != OPVP_OK) { -- colorSpace = OPVP_CSPACE_STANDARDRGB; -- } -- } --} -- --OPVPWrapper_0_2::~OPVPWrapper_0_2() --{ --} -- --opvp_result_t OPVPWrapper_0_2::ClosePrinter() --{ -- if (!supportClosePrinter) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->ClosePrinter(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StartJob( -- const opvp_char_t *jobInfo) --{ -- if (!supportStartJob) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StartJob(printerContext_0_2, -- (char *)jobInfo); --} -- --opvp_result_t OPVPWrapper_0_2::EndJob() --{ -- if (!supportEndJob) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndJob(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::AbortJob() --{ -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; --} -- --opvp_result_t OPVPWrapper_0_2::StartDoc( -- const opvp_char_t *docInfo) --{ -- if (!supportStartDoc) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StartDoc(printerContext_0_2, -- (char *)docInfo); --} -- --opvp_result_t OPVPWrapper_0_2::EndDoc() --{ -- if (!supportEndDoc) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndDoc(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StartPage( -- const opvp_char_t *pageInfo) --{ -- int r; -- -- if (!supportStartPage) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((r = procs_0_2->StartPage(printerContext_0_2, -- /* discard const */(char *)pageInfo)) != OPVP_OK) { -- /* error */ -- return (opvp_result_t)r; -- } -- /* initialize ROP */ -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2, -- OPVP_0_2_ROP_P); -- } -- return OPVP_OK; --} -- --opvp_result_t OPVPWrapper_0_2::EndPage() --{ -- if (!supportEndPage) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndPage(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::QueryDeviceCapability( -- opvp_flag_t queryflag, opvp_int_t *buflen, opvp_byte_t *infoBuf) --{ -- if (!supportQueryDeviceCapability) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2-> -- QueryDeviceCapability(printerContext_0_2,queryflag,*buflen, -- (char *)infoBuf); --} -- --opvp_result_t OPVPWrapper_0_2::QueryDeviceInfo( -- opvp_flag_t queryflag, opvp_int_t *buflen, opvp_byte_t *infoBuf) --{ -- if (!supportQueryDeviceInfo) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (queryflag & OPVP_QF_MEDIACOPY) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (queryflag & OPVP_QF_PRINTREGION) { -- queryflag &= ~OPVP_QF_PRINTREGION; -- queryflag |= 0x0020000; -- } -- return (opvp_result_t)procs_0_2->QueryDeviceInfo(printerContext_0_2, -- queryflag,*buflen,(char *)infoBuf); --} -- --opvp_result_t OPVPWrapper_0_2::ResetCTM() --{ -- if (!supportResetCTM) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->ResetCTM(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::SetCTM(const opvp_ctm_t *pCTM) --{ -- if (!supportSetCTM) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetCTM(printerContext_0_2, -- (OPVP_CTM *)pCTM); --} -- --opvp_result_t OPVPWrapper_0_2::GetCTM(opvp_ctm_t *pCTM) --{ -- if (!supportGetCTM) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->GetCTM(printerContext_0_2, -- (OPVP_CTM *)pCTM); --} -- --opvp_result_t OPVPWrapper_0_2::InitGS() --{ -- int r; -- -- if (!supportInitGS) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((r = procs_0_2->InitGS(printerContext_0_2)) != OPVP_OK) { -- /* error */ -- return (opvp_result_t)r; -- } -- /* initialize ROP */ -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2, -- OPVP_0_2_ROP_P); -- } -- return OPVP_OK; --} -- --opvp_result_t OPVPWrapper_0_2::SaveGS() --{ -- if (!supportSaveGS) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SaveGS(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::RestoreGS() --{ -- if (!supportRestoreGS) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->RestoreGS(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::QueryColorSpace( -- opvp_int_t *pnum, opvp_cspace_t *pcspace) --{ -- int r; -- int i; -- -- if (!supportQueryColorSpace) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((r = procs_0_2->QueryColorSpace(printerContext_0_2, -- (OPVP_ColorSpace *)pcspace,pnum)) != OPVP_OK) { -- /* error */ -- return (opvp_result_t)r; -- } -- /* translate cspaces */ -- for (i = 0;i < *pnum;i++) { -- if ((unsigned int)pcspace[i] -- > sizeof(cspace_0_2_to_1_0)/sizeof(opvp_cspace_t)) { -- /* unknown color space */ -- /* set DEVICERGB instead */ -- pcspace[i] = OPVP_CSPACE_DEVICERGB; -- } else { -- pcspace[i] = cspace_0_2_to_1_0[pcspace[i]]; -- } -- } -- return OPVP_OK; --} -- --opvp_result_t OPVPWrapper_0_2::SetColorSpace( -- opvp_cspace_t cspace) --{ -- int r; -- -- if (!supportSetColorSpace) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (cspace == OPVP_CSPACE_DEVICEKRGB) { -- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((unsigned int)cspace -- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { -- /* unknown color space */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- r = procs_0_2->SetColorSpace(printerContext_0_2, -- cspace_1_0_to_0_2[cspace]); -- if (r == OPVP_OK) { -- colorSpace = cspace; -- } -- return (opvp_result_t)r; --} -- --opvp_result_t OPVPWrapper_0_2::GetColorSpace( -- opvp_cspace_t *pcspace) --{ -- int r; -- -- if (!supportGetColorSpace) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((r = procs_0_2->GetColorSpace(printerContext_0_2, -- (OPVP_ColorSpace *)pcspace)) != OPVP_OK) { -- /* error */ -- return (opvp_result_t)r; -- } -- if ((unsigned int)*pcspace -- > sizeof(cspace_0_2_to_1_0)/sizeof(opvp_cspace_t)) { -- /* unknown color space */ -- /* set DEVICERGB instead */ -- *pcspace = OPVP_CSPACE_DEVICERGB; -- } else { -- *pcspace = cspace_0_2_to_1_0[*pcspace]; -- } -- return (opvp_result_t)r; --} -- --opvp_result_t OPVPWrapper_0_2::SetFillMode( -- opvp_fillmode_t fillmode) --{ -- if (!supportSetFillMode) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_FillMode is comaptible with opvp_fillmode_t */ -- return (opvp_result_t)procs_0_2->SetFillMode(printerContext_0_2, -- (OPVP_FillMode)fillmode); --} -- --opvp_result_t OPVPWrapper_0_2::GetFillMode( -- opvp_fillmode_t *pfillmode) --{ -- if (!supportGetFillMode) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_FillMode is comaptible with opvp_fillmode_t */ -- return (opvp_result_t)procs_0_2->GetFillMode(printerContext_0_2, -- (OPVP_FillMode *)pfillmode); --} -- --opvp_result_t OPVPWrapper_0_2::SetAlphaConstant( -- opvp_float_t alpha) --{ -- if (!supportSetAlphaConstant) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetAlphaConstant(printerContext_0_2,alpha); --} -- --opvp_result_t OPVPWrapper_0_2::GetAlphaConstant( -- opvp_float_t *palpha) --{ -- if (!supportGetAlphaConstant) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->GetAlphaConstant(printerContext_0_2,palpha); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineWidth( -- opvp_fix_t width) --{ -- if (!supportSetLineWidth) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetLineWidth(printerContext_0_2,width); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineWidth( -- opvp_fix_t *pwidth) --{ -- if (!supportGetLineWidth) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->GetLineWidth(printerContext_0_2,pwidth); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineDash(opvp_int_t num, -- const opvp_fix_t *pdash) --{ -- if (!supportSetLineDash) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetLineDash(printerContext_0_2, -- /* remove const */ (OPVP_Fix *)pdash,num); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineDash( -- opvp_int_t *pnum, opvp_fix_t *pdash) --{ -- if (!supportGetLineDash) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->GetLineDash(printerContext_0_2, -- pdash,pnum); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineDashOffset( -- opvp_fix_t offset) --{ -- if (!supportSetLineDashOffset) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetLineDashOffset(printerContext_0_2,offset); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineDashOffset( -- opvp_fix_t *poffset) --{ -- if (!supportGetLineDashOffset) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->GetLineDashOffset(printerContext_0_2,poffset); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineStyle( -- opvp_linestyle_t linestyle) --{ -- if (!supportSetLineStyle) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineStyle is compatible with opvp_linestyle_t */ -- return (opvp_result_t)procs_0_2->SetLineStyle(printerContext_0_2, -- (OPVP_LineStyle)linestyle); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineStyle( -- opvp_linestyle_t *plinestyle) --{ -- if (!supportGetLineStyle) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineStyle is compatible with opvp_linestyle_t */ -- return (opvp_result_t)procs_0_2->GetLineStyle(printerContext_0_2, -- (OPVP_LineStyle *)plinestyle); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineCap( -- opvp_linecap_t linecap) --{ -- if (!supportSetLineCap) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineCap is compatible with opvp_cap_t */ -- return (opvp_result_t)procs_0_2->SetLineCap(printerContext_0_2, -- (OPVP_LineCap)linecap); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineCap( -- opvp_linecap_t *plinecap) --{ -- if (!supportGetLineCap) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineCap is compatible with opvp_cap_t */ -- return (opvp_result_t)procs_0_2->GetLineCap(printerContext_0_2, -- (OPVP_LineCap *)plinecap); --} -- --opvp_result_t OPVPWrapper_0_2::SetLineJoin( -- opvp_linejoin_t linejoin) --{ -- if (!supportSetLineJoin) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineJoin is compatible with opvp_linejoin_t */ -- return (opvp_result_t)procs_0_2->SetLineJoin(printerContext_0_2, -- (OPVP_LineJoin)linejoin); --} -- --opvp_result_t OPVPWrapper_0_2::GetLineJoin( -- opvp_linejoin_t *plinejoin) --{ -- if (!supportGetLineJoin) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_LineJoin is compatible with opvp_linejoin_t */ -- return (opvp_result_t)procs_0_2->GetLineJoin(printerContext_0_2, -- (OPVP_LineJoin *)plinejoin); --} -- --opvp_result_t OPVPWrapper_0_2::SetMiterLimit( -- opvp_fix_t miterlimit) --{ -- if (!supportSetMiterLimit) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Fix is compatible with opvp_fix_t */ -- return (opvp_result_t)procs_0_2->SetMiterLimit(printerContext_0_2, -- (OPVP_Fix)miterlimit); --} -- --opvp_result_t OPVPWrapper_0_2::GetMiterLimit( -- opvp_fix_t *pmiterlimit) --{ -- if (!supportGetMiterLimit) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Fix is compatible with opvp_fix_t */ -- return (opvp_result_t)procs_0_2->GetMiterLimit(printerContext_0_2, -- (OPVP_Fix *)pmiterlimit); --} -- --opvp_result_t OPVPWrapper_0_2::SetPaintMode( -- opvp_paintmode_t paintmode) --{ -- if (!supportSetPaintMode) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_PaintMode is compatible with opvp_paintmode_t */ -- return (opvp_result_t)procs_0_2->SetPaintMode(printerContext_0_2, -- (OPVP_PaintMode)paintmode); --} -- --opvp_result_t OPVPWrapper_0_2::GetPaintMode( -- opvp_paintmode_t *ppaintmode) --{ -- if (!supportGetPaintMode) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_PaintMode is compatible with opvp_paintmode_t */ -- return (opvp_result_t)procs_0_2->GetPaintMode(printerContext_0_2, -- (OPVP_PaintMode *)ppaintmode); --} -- --opvp_result_t OPVPWrapper_0_2::SetStrokeColor( -- const opvp_brush_t *brush) --{ -- OPVP_Brush brush_0_2; -- -- if (!supportSetStrokeColor) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (brush == 0) { -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { -- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((unsigned int)brush->colorSpace -- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { -- /* unknown color space */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; -- brush_0_2.xorg = brush->xorg; -- brush_0_2.yorg = brush->yorg; -- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; -- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); -- return (opvp_result_t)procs_0_2->SetStrokeColor(printerContext_0_2, -- &brush_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::SetFillColor( -- const opvp_brush_t *brush) --{ -- OPVP_Brush brush_0_2; -- -- if (!supportSetFillColor) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (brush == 0) { -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { -- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((unsigned int)brush->colorSpace -- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { -- /* unknown color space */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; -- brush_0_2.xorg = brush->xorg; -- brush_0_2.yorg = brush->yorg; -- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; -- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); -- return (opvp_result_t)procs_0_2->SetFillColor(printerContext_0_2, -- &brush_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::SetBgColor( -- const opvp_brush_t *brush) --{ -- OPVP_Brush brush_0_2; -- -- if (!supportSetBgColor) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (brush == 0) { -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- if (brush->colorSpace == OPVP_CSPACE_DEVICEKRGB) { -- /* 0.2 doesn't have OPVP_CSPACE_DEVICEKRGB */ -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if ((unsigned int)brush->colorSpace -- > sizeof(cspace_1_0_to_0_2)/sizeof(OPVP_ColorSpace)) { -- /* unknown color space */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- brush_0_2.colorSpace = cspace_1_0_to_0_2[brush->colorSpace]; -- brush_0_2.xorg = brush->xorg; -- brush_0_2.yorg = brush->yorg; -- brush_0_2.pbrush = (OPVP_BrushData *)brush->pbrush; -- memcpy(brush_0_2.color,brush->color,sizeof(brush_0_2.color)); -- return (opvp_result_t)procs_0_2->SetBgColor(printerContext_0_2, -- &brush_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::NewPath() --{ -- if (!supportNewPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->NewPath(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::EndPath() --{ -- if (!supportEndPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndPath(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StrokePath() --{ -- if (!supportStrokePath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StrokePath(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::FillPath() --{ -- if (!supportFillPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->FillPath(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StrokeFillPath() --{ -- if (!supportStrokeFillPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StrokeFillPath(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::SetClipPath( -- opvp_cliprule_t clipRule) --{ -- if (!supportSetClipPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_ClipRule is compatible with opvp_cliprule_t */ -- return (opvp_result_t)procs_0_2->SetClipPath(printerContext_0_2, -- (OPVP_ClipRule)clipRule); --} -- --opvp_result_t OPVPWrapper_0_2::SetCurrentPoint( -- opvp_fix_t x, opvp_fix_t y) --{ -- if (!supportSetCurrentPoint) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SetCurrentPoint(printerContext_0_2,x,y); --} -- --opvp_result_t OPVPWrapper_0_2::LinePath( -- opvp_pathmode_t flag, opvp_int_t npoints, const opvp_point_t *points) --{ -- if (!supportLinePath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Point is compatible with opvp_point_t */ -- return (opvp_result_t)procs_0_2->LinePath(printerContext_0_2,flag,npoints, -- (OPVP_Point *)points); --} -- --opvp_result_t OPVPWrapper_0_2::PolygonPath( -- opvp_int_t npolygons, const opvp_int_t *nvertexes, -- const opvp_point_t *points) --{ -- if (!supportPolygonPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Point is compatible with opvp_point_t */ -- return (opvp_result_t)procs_0_2->PolygonPath(printerContext_0_2, -- (int)npolygons,(int *)nvertexes,(OPVP_Point *)points); --} -- --opvp_result_t OPVPWrapper_0_2::RectanglePath( -- opvp_int_t nrectangles, const opvp_rectangle_t *rectangles) --{ -- if (!supportRectanglePath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Rectangle is compatible with opvp_rectangle_t */ -- return (opvp_result_t)procs_0_2->RectanglePath(printerContext_0_2, -- (int)nrectangles,(OPVP_Rectangle *)rectangles); --} -- --opvp_result_t OPVPWrapper_0_2::RoundRectanglePath( -- opvp_int_t nrectangles, const opvp_roundrectangle_t *rectangles) --{ -- if (!supportRoundRectanglePath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_RoundRectangle is compatible with opvp_roundrectangle_t */ -- return (opvp_result_t)procs_0_2->RoundRectanglePath(printerContext_0_2, -- (int)nrectangles,(OPVP_RoundRectangle *)rectangles); --} -- --opvp_result_t OPVPWrapper_0_2::BezierPath(opvp_int_t npoints, -- const opvp_point_t *points) --{ -- if (!supportBezierPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* OPVP_Point is compatible with opvp_point_t */ -- return (opvp_result_t)procs_0_2->BezierPath(printerContext_0_2,(int)npoints, -- (OPVP_Point *)points); --} -- --opvp_result_t OPVPWrapper_0_2::ArcPath(opvp_arcmode_t kind, opvp_arcdir_t dir, -- opvp_fix_t bbx0, opvp_fix_t bby0, opvp_fix_t bbx1, -- opvp_fix_t bby1, opvp_fix_t x0, opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1) --{ -- if (!supportArcPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- /* opvp_arcmode_t is compatible with int */ -- /* opvp_arcdir_t is compatible with int */ -- return (opvp_result_t)procs_0_2->ArcPath(printerContext_0_2, -- (int)kind,(int)dir,bbx0,bby0, -- bbx1,bby1,x0,y0,x1,y1); --} -- --opvp_result_t OPVPWrapper_0_2::DrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, -- opvp_int_t destinationHeight, const void *imagedata) --{ -- int r; -- OPVP_Rectangle rect; -- OPVP_ImageFormat iformat_0_2; -- OPVP_PaintMode paintmode_0_2 = OPVP_paintModeTransparent; -- int depth; -- -- if (!supportDrawImage) { -- int result; -- -- if ((result = StartDrawImage(sourceWidth, -- sourceHeight,sourcePitch,imageFormat,destinationWidth, -- destinationHeight)) < 0) { -- return result; -- } -- if ((result = TransferDrawImage(sourcePitch*sourceHeight, -- imagedata)) < 0) { -- return result; -- } -- return EndDrawImage(); -- } -- -- if (imageFormat == OPVP_IFORMAT_MASK) { -- if (procs_0_2->GetPaintMode != 0) { -- procs_0_2->GetPaintMode(printerContext_0_2, -- &paintmode_0_2); -- } -- if (paintmode_0_2 != OPVP_paintModeTransparent) { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2, -- OPVP_0_2_ROP_S); -- } -- } -- else { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2, -- OPVP_0_2_ROP_OR); -- } -- } -- depth = 1; -- } else { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); -- } -- depth = colorDepth_0_2[colorSpace]; -- } -- -- OPVP_I2FIX(0,rect.p0.x); -- OPVP_I2FIX(0,rect.p0.y); -- OPVP_I2FIX(destinationWidth,rect.p1.x); -- OPVP_I2FIX(destinationHeight,rect.p1.y); -- if ((unsigned int)imageFormat -- > sizeof(iformat_1_0_to_0_2)/sizeof(OPVP_ImageFormat)) { -- /* illegal image format */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- iformat_0_2 = iformat_1_0_to_0_2[imageFormat]; -- r = procs_0_2->DrawImage(printerContext_0_2,sourceWidth,sourceHeight, -- depth,iformat_0_2,rect, -- sourcePitch*sourceHeight, -- /* remove const */ (void *)imagedata); -- -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_P); -- } -- -- return (opvp_result_t)r; --} -- --opvp_result_t OPVPWrapper_0_2::StartDrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, opvp_int_t destinationWidth, -- opvp_int_t destinationHeight) --{ -- int r; -- OPVP_Rectangle rect; -- OPVP_ImageFormat iformat_0_2; -- OPVP_PaintMode paintmode_0_2 = OPVP_paintModeTransparent; -- int depth; -- -- if (!supportStartDrawImage) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- if (imageFormat == OPVP_IFORMAT_MASK) { -- if (procs_0_2->GetPaintMode != 0) { -- procs_0_2->GetPaintMode(printerContext_0_2, -- &paintmode_0_2); -- } -- if (paintmode_0_2 != OPVP_paintModeTransparent) { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); -- } -- } -- else { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_OR); -- } -- } -- depth = 1; -- } else { -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_S); -- } -- depth = colorDepth_0_2[colorSpace]; -- } -- -- OPVP_I2FIX(0,rect.p0.x); -- OPVP_I2FIX(0,rect.p0.y); -- OPVP_I2FIX(destinationWidth,rect.p1.x); -- OPVP_I2FIX(destinationHeight,rect.p1.y); -- if ((unsigned int)imageFormat -- > sizeof(iformat_1_0_to_0_2)/sizeof(OPVP_ImageFormat)) { -- /* illegal image format */ -- *opvpErrorNo_0_2 = OPVP_PARAMERROR_0_2; -- return -1; -- } -- iformat_0_2 = iformat_1_0_to_0_2[imageFormat]; -- r = procs_0_2->StartDrawImage(printerContext_0_2, -- sourceWidth,sourceHeight, -- depth,iformat_0_2,rect); -- -- return (opvp_result_t)r; --} -- --opvp_result_t OPVPWrapper_0_2::TransferDrawImage(opvp_int_t count, -- const void *imagedata) --{ -- if (!supportTransferDrawImage) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->TransferDrawImage(printerContext_0_2, -- count,(void *)imagedata); --} -- --opvp_result_t OPVPWrapper_0_2::EndDrawImage() --{ -- int r; -- -- if (!supportEndDrawImage) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- r = procs_0_2->EndDrawImage(printerContext_0_2); -- -- /* make sure rop is pattern copy */ -- if (procs_0_2->SetROP != 0) { -- procs_0_2->SetROP(printerContext_0_2,OPVP_0_2_ROP_P); -- } -- -- return (opvp_result_t)r; --} -- --opvp_result_t OPVPWrapper_0_2::StartScanline(opvp_int_t yposition) --{ -- if (!supportStartScanline) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StartScanline(printerContext_0_2,yposition); --} -- --opvp_result_t OPVPWrapper_0_2::Scanline(opvp_int_t nscanpairs, -- const opvp_int_t *scanpairs) --{ -- if (!supportScanline) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->Scanline(printerContext_0_2, -- (int)nscanpairs,(int *)scanpairs); --} -- --opvp_result_t OPVPWrapper_0_2::EndScanline() --{ -- if (!supportEndScanline) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndScanline(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StartRaster(opvp_int_t rasterWidth) --{ -- if (!supportStartRaster) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StartRaster(printerContext_0_2,rasterWidth); --} -- --opvp_result_t OPVPWrapper_0_2::TransferRasterData(opvp_int_t count, -- const opvp_byte_t *data) --{ -- if (!supportTransferRasterData) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->TransferRasterData(printerContext_0_2, -- (int)count, (unsigned char *)data); --} -- --opvp_result_t OPVPWrapper_0_2::SkipRaster(opvp_int_t count) --{ -- if (!supportSkipRaster) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->SkipRaster(printerContext_0_2,count); --} -- --opvp_result_t OPVPWrapper_0_2::EndRaster() --{ -- if (!supportEndRaster) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndRaster(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::StartStream() --{ -- if (!supportStartStream) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->StartStream(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::TransferStreamData(opvp_int_t count, -- const void *data) --{ -- if (!supportTransferStreamData) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->TransferStreamData(printerContext_0_2, -- count,(void *)data); --} -- --opvp_result_t OPVPWrapper_0_2::EndStream() --{ -- if (!supportEndStream) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->EndStream(printerContext_0_2); --} -- --opvp_result_t OPVPWrapper_0_2::ResetClipPath() --{ -- if (!supportResetClipPath) { -- *opvpErrorNo_0_2 = OPVP_NOTSUPPORTED_0_2; -- return -1; -- } -- return (opvp_result_t)procs_0_2->ResetClipPath(printerContext_0_2); --} -- --/* translate error code */ --opvp_int_t OPVPWrapper_0_2::getErrorNo() --{ -- switch(*opvpErrorNo_0_2) { -- case OPVP_FATALERROR_0_2: -- return OPVP_FATALERROR; -- break; -- case OPVP_BADREQUEST_0_2: -- return OPVP_BADREQUEST; -- break; -- case OPVP_BADCONTEXT_0_2: -- return OPVP_BADCONTEXT; -- break; -- case OPVP_NOTSUPPORTED_0_2: -- return OPVP_NOTSUPPORTED; -- break; -- case OPVP_JOBCANCELED_0_2: -- return OPVP_JOBCANCELED; -- break; -- case OPVP_PARAMERROR_0_2: -- return OPVP_PARAMERROR; -- break; -- default: -- break; -- } -- /* unknown error no */ -- /* return FATALERROR instead */ -- return OPVP_FATALERROR; --} -diff --git a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h b/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h -deleted file mode 100644 -index f670a45..0000000 ---- a/filter/pdftoopvp/oprs/OPVPWrapper_0_2.h -+++ /dev/null -@@ -1,127 +0,0 @@ --/* -- OPVPWrapper_0_2.h --*/ -- --#ifndef OPVPWRAPPER_0_2_H --#define OPVPWRAPPER_0_2_H -- --#include "OPVPWrapper.h" -- --/* ROP */ --#define OPVP_0_2_ROP_S 0xCC --#define OPVP_0_2_ROP_P 0xF0 --#define OPVP_0_2_ROP_OR 0xB8 -- --class OPVPWrapper_0_2: public OPVPWrapper { --private: -- static opvp_cspace_t cspace_0_2_to_1_0[]; -- static OPVP_ColorSpace cspace_1_0_to_0_2[]; -- static OPVP_ImageFormat iformat_1_0_to_0_2[]; -- static int colorDepth_0_2[]; --public: -- OPVPWrapper_0_2(void *opvpHandleA, int *opvpErrorNoA, -- OPVP_api_procs *procsA, int printerContextA); -- virtual ~OPVPWrapper_0_2(); -- virtual opvp_int_t getErrorNo(); -- -- virtual opvp_result_t ClosePrinter(); -- virtual opvp_result_t StartJob(const opvp_char_t *jobInfo); -- virtual opvp_result_t EndJob(); -- virtual opvp_result_t AbortJob(); -- virtual opvp_result_t StartDoc(const opvp_char_t *docInfo); -- virtual opvp_result_t EndDoc(); -- virtual opvp_result_t StartPage(const opvp_char_t *pageInfo); -- virtual opvp_result_t EndPage(); -- virtual opvp_result_t QueryDeviceCapability(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf); -- virtual opvp_result_t QueryDeviceInfo(opvp_flag_t queryflag, -- opvp_int_t *buflen, opvp_byte_t *infoBuf); -- virtual opvp_result_t ResetCTM(); -- virtual opvp_result_t SetCTM(const opvp_ctm_t *pCTM); -- virtual opvp_result_t GetCTM(opvp_ctm_t *pCTM); -- virtual opvp_result_t InitGS(); -- virtual opvp_result_t SaveGS(); -- virtual opvp_result_t RestoreGS(); -- virtual opvp_result_t QueryColorSpace(opvp_int_t *pnum, -- opvp_cspace_t *pcspace); -- virtual opvp_result_t SetColorSpace(opvp_cspace_t cspace); -- virtual opvp_result_t GetColorSpace(opvp_cspace_t *pcspace); -- virtual opvp_result_t SetFillMode(opvp_fillmode_t fillmode); -- virtual opvp_result_t GetFillMode(opvp_fillmode_t *pfillmode); -- virtual opvp_result_t SetAlphaConstant(opvp_float_t alpha); -- virtual opvp_result_t GetAlphaConstant(opvp_float_t *palpha); -- virtual opvp_result_t SetLineWidth(opvp_fix_t width); -- virtual opvp_result_t GetLineWidth(opvp_fix_t *pwidth); -- virtual opvp_result_t SetLineDash(opvp_int_t num, const opvp_fix_t *pdash); -- virtual opvp_result_t GetLineDash(opvp_int_t *pnum, opvp_fix_t *pdash); -- virtual opvp_result_t SetLineDashOffset(opvp_fix_t offset); -- virtual opvp_result_t GetLineDashOffset(opvp_fix_t *poffset); -- virtual opvp_result_t SetLineStyle(opvp_linestyle_t linestyle); -- virtual opvp_result_t GetLineStyle(opvp_linestyle_t *plinestyle); -- virtual opvp_result_t SetLineCap(opvp_linecap_t linecap); -- virtual opvp_result_t GetLineCap(opvp_linecap_t *plinecap); -- virtual opvp_result_t SetLineJoin(opvp_linejoin_t linejoin); -- virtual opvp_result_t GetLineJoin(opvp_linejoin_t *plinejoin); -- virtual opvp_result_t SetMiterLimit(opvp_fix_t miterlimit); -- virtual opvp_result_t GetMiterLimit(opvp_fix_t *pmiterlimit); -- virtual opvp_result_t SetPaintMode(opvp_paintmode_t paintmode); -- virtual opvp_result_t GetPaintMode(opvp_paintmode_t *ppaintmode); -- virtual opvp_result_t SetStrokeColor(const opvp_brush_t *brush); -- virtual opvp_result_t SetFillColor(const opvp_brush_t *brush); -- virtual opvp_result_t SetBgColor(const opvp_brush_t *brush); -- virtual opvp_result_t NewPath(); -- virtual opvp_result_t EndPath(); -- virtual opvp_result_t StrokePath(); -- virtual opvp_result_t FillPath(); -- virtual opvp_result_t StrokeFillPath(); -- virtual opvp_result_t SetClipPath(opvp_cliprule_t clipRule); -- virtual opvp_result_t SetCurrentPoint(opvp_fix_t x, opvp_fix_t y); -- virtual opvp_result_t LinePath(opvp_pathmode_t flag, -- opvp_int_t npoints, const opvp_point_t *points); -- virtual opvp_result_t PolygonPath(opvp_int_t npolygons, -- const opvp_int_t *nvertexes, const opvp_point_t *points); -- virtual opvp_result_t RectanglePath(opvp_int_t nrectangles, -- const opvp_rectangle_t *reclangles); -- virtual opvp_result_t RoundRectanglePath(opvp_int_t nrectangles, -- const opvp_roundrectangle_t *reclangles); -- virtual opvp_result_t BezierPath(opvp_int_t npoints, -- const opvp_point_t *points); -- virtual opvp_result_t ArcPath(opvp_arcmode_t kind, -- opvp_arcdir_t dir, opvp_fix_t bbx0, opvp_fix_t bby0, -- opvp_fix_t bbx1, opvp_fix_t bby1, opvp_fix_t x0, -- opvp_fix_t y0, opvp_fix_t x1, opvp_fix_t y1); -- virtual opvp_result_t DrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, -- opvp_int_t destinationWidth, opvp_int_t destinationHeight, -- const void *imageData); -- virtual opvp_result_t StartDrawImage(opvp_int_t sourceWidth, -- opvp_int_t sourceHeight, opvp_int_t sourcePitch, -- opvp_imageformat_t imageFormat, -- opvp_int_t destinationWidth, opvp_int_t destinationHeight); -- virtual opvp_result_t TransferDrawImage(opvp_int_t count, -- const void *imageData); -- virtual opvp_result_t EndDrawImage(); -- virtual opvp_result_t StartScanline(opvp_int_t yposition); -- virtual opvp_result_t Scanline(opvp_int_t nscanpairs, -- const opvp_int_t *scanpairs); -- virtual opvp_result_t EndScanline(); -- virtual opvp_result_t StartRaster(opvp_int_t rasterWidth); -- virtual opvp_result_t TransferRasterData(opvp_int_t count, -- const opvp_byte_t *data); -- virtual opvp_result_t SkipRaster(opvp_int_t count); -- virtual opvp_result_t EndRaster(); -- virtual opvp_result_t StartStream(); -- virtual opvp_result_t TransferStreamData(opvp_int_t count, -- const void *data); -- virtual opvp_result_t EndStream(); -- virtual opvp_result_t ResetClipPath(); -- --private: -- OPVP_api_procs *procs_0_2; -- int *opvpErrorNo_0_2; -- int printerContext_0_2; -- opvp_cspace_t colorSpace; --}; -- --#endif -diff --git a/filter/pdftoopvp/opvp/opvp.h b/filter/pdftoopvp/opvp/opvp.h -deleted file mode 100644 -index 41ade3a..0000000 ---- a/filter/pdftoopvp/opvp/opvp.h -+++ /dev/null -@@ -1,292 +0,0 @@ --/* -- * OpenPrinting Vector Printer Driver API Definitions [opvp.h] -- * -- * Copyright (c) 2006 Free Standards Group -- * Copyright (c) 2006 Fuji Xerox Printing Systems Co., Ltd. -- * Copyright (c) 2006 Canon Inc. -- * Copyright (c) 2003-2006 AXE Inc. -- * -- * All Rights Reserverd. -- * -- * Permission to use, copy, modify, distribute, and sell this software -- * and its documentation for any purpose is hereby granted without -- * fee, provided that the above copyright notice appear in all copies -- * and that both that copyright notice and this permission notice -- * appear in supporting documentation. -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR -- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- */ -- /* -- 2007 Modified for OPVP 1.0 by BBR Inc. -- */ -- --#ifndef _OPVP_H_ --#define _OPVP_H_ -- --/* Return Values and Error Codes */ --#define OPVP_OK 0 /* -1 for errors */ --#define OPVP_FATALERROR -1 /* error: cannot be recovered */ --#define OPVP_BADREQUEST -2 /* error: called where it should -- not be called */ --#define OPVP_BADCONTEXT -3 /* error: invalid printer context */ --#define OPVP_NOTSUPPORTED -4 /* error: combination of -- parameters are set -- which cannot be handled -- by driver or printer */ --#define OPVP_JOBCANCELED -5 /* error: job has been canceled -- by some cause */ --#define OPVP_PARAMERROR -6 /* error: invalid parameter */ --#define OPVP_VERSIONERROR -7 /* error: invalid API version */ -- --/* Basic Types */ --typedef int opvp_dc_t; /* driver/device context */ --typedef int opvp_result_t; /* return value */ --typedef unsigned char opvp_byte_t; /* BYTE */ --typedef unsigned char opvp_char_t; /* character (string) */ --typedef int opvp_int_t; /* integer */ --typedef int opvp_fix_t; /* fixed integer */ --typedef float opvp_float_t; /* float */ --typedef unsigned int opvp_flag_t; /* flags */ --typedef unsigned int opvp_rop_t; /* raster operation */ -- --/* for opvp_fix_t */ --#define OPVP_FIX_FRACT_WIDTH 8 --#define OPVP_FIX_FRACT_DENOM (1<<OPVP_FIX_FRACT_WIDTH) --#define OPVP_FIX_FLOOR_WIDTH (sizeof(int)*8-OPVP_FIX_FRACT_WIDTH) -- --/* convert macro */ --#define OPVP_I2FIX(i,fix) (fix=(i)<<OPVP_FIX_FRACT_WIDTH) --#define OPVP_F2FIX(f,fix) (fix=((int)floor(f)<<OPVP_FIX_FRACT_WIDTH)\ -- |((int)((f-floor(f))*OPVP_FIX_FRACT_DENOM)\ -- &(OPVP_FIX_FRACT_DENOM-1))) -- --/* graphic elements */ --typedef struct _opvp_point { -- opvp_fix_t x, y; --} opvp_point_t; -- --typedef struct _opvp_rectangle { -- opvp_point_t p0; /* start point */ -- opvp_point_t p1; /* diagonal point */ --} opvp_rectangle_t; -- --typedef struct _opvp_roundrectangle { -- opvp_point_t p0; /* start point */ -- opvp_point_t p1; /* diagonal point */ -- opvp_fix_t xellipse, yellipse; --} opvp_roundrectangle_t; -- --/* Image Formats */ --typedef enum _opvp_imageformat { -- OPVP_IFORMAT_RAW = 0, -- OPVP_IFORMAT_MASK = 1, -- OPVP_IFORMAT_RLE = 2, -- OPVP_IFORMAT_JPEG = 3, -- OPVP_IFORMAT_PNG = 4 --} opvp_imageformat_t; -- --/* Color Presentation */ --typedef enum _opvp_colormapping { -- OPVP_CMAP_DIRECT = 0, -- OPVP_CMAP_INDEXED = 1 --} opvp_colormapping_t; -- --typedef enum _opvp_cspace { -- OPVP_CSPACE_BW = 0, -- OPVP_CSPACE_DEVICEGRAY = 1, -- OPVP_CSPACE_DEVICECMY = 2, -- OPVP_CSPACE_DEVICECMYK = 3, -- OPVP_CSPACE_DEVICERGB = 4, -- OPVP_CSPACE_DEVICEKRGB = 5, -- OPVP_CSPACE_STANDARDRGB = 6, -- OPVP_CSPACE_STANDARDRGB64 = 7 --} opvp_cspace_t; -- --/* Fill, Paint, Clip */ --typedef enum _opvp_fillmode { -- OPVP_FILLMODE_EVENODD = 0, -- OPVP_FILLMODE_WINDING = 1 --} opvp_fillmode_t; -- --typedef enum _opvp_paintmode { -- OPVP_PAINTMODE_OPAQUE = 0, -- OPVP_PAINTMODE_TRANSPARENT = 1 --} opvp_paintmode_t; -- --typedef enum _opvp_cliprule { -- OPVP_CLIPRULE_EVENODD = 0, -- OPVP_CLIPRULE_WINDING = 1 --} opvp_cliprule_t; -- --/* Line */ --typedef enum _opvp_linestyle { -- OPVP_LINESTYLE_SOLID = 0, -- OPVP_LINESTYLE_DASH = 1 --} opvp_linestyle_t; -- --typedef enum _opvp_linecap { -- OPVP_LINECAP_BUTT = 0, -- OPVP_LINECAP_ROUND = 1, -- OPVP_LINECAP_SQUARE = 2 --} opvp_linecap_t; -- --typedef enum _opvp_linejoin { -- OPVP_LINEJOIN_MITER = 0, -- OPVP_LINEJOIN_ROUND = 1, -- OPVP_LINEJOIN_BEVEL = 2 --} opvp_linejoin_t; -- --/* Brush */ --typedef enum _opvp_bdtype { -- OPVP_BDTYPE_NORMAL = 0 --} opvp_bdtype_t; -- --typedef struct _opvp_brushdata { -- opvp_bdtype_t type; -- opvp_int_t width, height, pitch; -- opvp_byte_t data[1]; -- --} opvp_brushdata_t; -- --typedef struct _opvp_brush { -- opvp_cspace_t colorSpace; -- opvp_int_t color[4]; /* aRGB quadruplet */ -- opvp_int_t xorg, yorg; /* brush origin */ -- /* ignored for opvpSetBgColor */ -- opvp_brushdata_t *pbrush; /* pointer to brush data */ -- /* solid brush used, if NULL */ --} opvp_brush_t; -- --/* Misc. Flags */ --typedef enum _opvp_arcmode { -- OPVP_ARC = 0, -- OPVP_CHORD = 1, -- OPVP_PIE = 2 --} opvp_arcmode_t; -- --typedef enum _opvp_arcdir { -- OPVP_CLOCKWISE = 0, -- OPVP_COUNTERCLOCKWISE = 1 --} opvp_arcdir_t; -- --typedef enum _opvp_pathmode { -- OPVP_PATHCLOSE = 0, -- OPVP_PATHOPEN = 1 --} opvp_pathmode_t; -- --/* CTM */ --typedef struct _opvp_ctm { -- opvp_float_t a, b, c, d, e, f; --} opvp_ctm_t; -- --/* Device Information and Capabilites */ --typedef enum _opvp_queryinfoflags { -- OPVP_QF_DEVICERESOLUTION = 0x00000001, -- OPVP_QF_MEDIASIZE = 0x00000002, -- OPVP_QF_PAGEROTATION = 0x00000004, -- OPVP_QF_MEDIANUP = 0x00000008, -- OPVP_QF_MEDIADUPLEX = 0x00000010, -- OPVP_QF_MEDIASOURCE = 0x00000020, -- OPVP_QF_MEDIADESTINATION = 0x00000040, -- OPVP_QF_MEDIATYPE = 0x00000080, -- OPVP_QF_MEDIACOPY = 0x00000100, /* Maximum copy number -- supported */ -- OPVP_QF_PRINTREGION = 0x00010000 /* only for opvpQueryDeviceInfo */ --} opvp_queryinfoflags_t; -- -- --/* API Procedure Entries */ --typedef struct _opvp_api_procs { -- opvp_dc_t (*opvpOpenPrinter)(opvp_int_t,const opvp_char_t*,const opvp_int_t[2],struct _opvp_api_procs**); -- opvp_result_t (*opvpClosePrinter)(opvp_dc_t); -- opvp_result_t (*opvpStartJob)(opvp_dc_t,const opvp_char_t*); -- opvp_result_t (*opvpEndJob)(opvp_dc_t); -- opvp_result_t (*opvpAbortJob)(opvp_dc_t); -- opvp_result_t (*opvpStartDoc)(opvp_dc_t,const opvp_char_t*); -- opvp_result_t (*opvpEndDoc)(opvp_dc_t); -- opvp_result_t (*opvpStartPage)(opvp_dc_t,const opvp_char_t*); -- opvp_result_t (*opvpEndPage)(opvp_dc_t); -- opvp_result_t (*opvpQueryDeviceCapability)(opvp_dc_t,opvp_flag_t,opvp_int_t*,opvp_byte_t*); -- opvp_result_t (*opvpQueryDeviceInfo)(opvp_dc_t,opvp_flag_t,opvp_int_t*,opvp_char_t*); -- opvp_result_t (*opvpResetCTM)(opvp_dc_t); -- opvp_result_t (*opvpSetCTM)(opvp_dc_t,const opvp_ctm_t*); -- opvp_result_t (*opvpGetCTM)(opvp_dc_t,opvp_ctm_t*); -- opvp_result_t (*opvpInitGS)(opvp_dc_t); -- opvp_result_t (*opvpSaveGS)(opvp_dc_t); -- opvp_result_t (*opvpRestoreGS)(opvp_dc_t); -- opvp_result_t (*opvpQueryColorSpace)(opvp_dc_t,opvp_int_t*,opvp_cspace_t*); -- opvp_result_t (*opvpSetColorSpace)(opvp_dc_t,opvp_cspace_t); -- opvp_result_t (*opvpGetColorSpace)(opvp_dc_t,opvp_cspace_t*); -- opvp_result_t (*opvpSetFillMode)(opvp_dc_t,opvp_fillmode_t); -- opvp_result_t (*opvpGetFillMode)(opvp_dc_t,opvp_fillmode_t*); -- opvp_result_t (*opvpSetAlphaConstant)(opvp_dc_t,opvp_float_t); -- opvp_result_t (*opvpGetAlphaConstant)(opvp_dc_t,opvp_float_t*); -- opvp_result_t (*opvpSetLineWidth)(opvp_dc_t,opvp_fix_t); -- opvp_result_t (*opvpGetLineWidth)(opvp_dc_t,opvp_fix_t*); -- opvp_result_t (*opvpSetLineDash)(opvp_dc_t,opvp_int_t,const opvp_fix_t*); -- opvp_result_t (*opvpGetLineDash)(opvp_dc_t,opvp_int_t*,opvp_fix_t*); -- opvp_result_t (*opvpSetLineDashOffset)(opvp_dc_t,opvp_fix_t); -- opvp_result_t (*opvpGetLineDashOffset)(opvp_dc_t,opvp_fix_t*); -- opvp_result_t (*opvpSetLineStyle)(opvp_dc_t,opvp_linestyle_t); -- opvp_result_t (*opvpGetLineStyle)(opvp_dc_t,opvp_linestyle_t*); -- opvp_result_t (*opvpSetLineCap)(opvp_dc_t,opvp_linecap_t); -- opvp_result_t (*opvpGetLineCap)(opvp_dc_t,opvp_linecap_t*); -- opvp_result_t (*opvpSetLineJoin)(opvp_dc_t,opvp_linejoin_t); -- opvp_result_t (*opvpGetLineJoin)(opvp_dc_t,opvp_linejoin_t*); -- opvp_result_t (*opvpSetMiterLimit)(opvp_dc_t,opvp_fix_t); -- opvp_result_t (*opvpGetMiterLimit)(opvp_dc_t,opvp_fix_t*); -- opvp_result_t (*opvpSetPaintMode)(opvp_dc_t,opvp_paintmode_t); -- opvp_result_t (*opvpGetPaintMode)(opvp_dc_t,opvp_paintmode_t*); -- opvp_result_t (*opvpSetStrokeColor)(opvp_dc_t,const opvp_brush_t*); -- opvp_result_t (*opvpSetFillColor)(opvp_dc_t,const opvp_brush_t*); -- opvp_result_t (*opvpSetBgColor)(opvp_dc_t,const opvp_brush_t*); -- opvp_result_t (*opvpNewPath)(opvp_dc_t); -- opvp_result_t (*opvpEndPath)(opvp_dc_t); -- opvp_result_t (*opvpStrokePath)(opvp_dc_t); -- opvp_result_t (*opvpFillPath)(opvp_dc_t); -- opvp_result_t (*opvpStrokeFillPath)(opvp_dc_t); -- opvp_result_t (*opvpSetClipPath)(opvp_dc_t,opvp_cliprule_t); -- opvp_result_t (*opvpResetClipPath)(opvp_dc_t); -- opvp_result_t (*opvpSetCurrentPoint)(opvp_dc_t,opvp_fix_t,opvp_fix_t); -- opvp_result_t (*opvpLinePath)(opvp_dc_t,opvp_pathmode_t,opvp_int_t,const opvp_point_t*); -- opvp_result_t (*opvpPolygonPath)(opvp_dc_t,opvp_int_t,const opvp_int_t*,const opvp_point_t*); -- opvp_result_t (*opvpRectanglePath)(opvp_dc_t,opvp_int_t,const opvp_rectangle_t*); -- opvp_result_t (*opvpRoundRectanglePath)(opvp_dc_t,opvp_int_t,const opvp_roundrectangle_t*); -- opvp_result_t (*opvpBezierPath)(opvp_dc_t,opvp_int_t,const opvp_point_t*); -- opvp_result_t (*opvpArcPath)(opvp_dc_t,opvp_arcmode_t,opvp_arcdir_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t,opvp_fix_t); -- opvp_result_t (*opvpDrawImage)(opvp_dc_t,opvp_int_t,opvp_int_t,opvp_int_t,opvp_imageformat_t,opvp_int_t, opvp_int_t ,const void*); -- opvp_result_t (*opvpStartDrawImage)(opvp_dc_t,opvp_int_t,opvp_int_t,opvp_int_t,opvp_imageformat_t,opvp_int_t, opvp_int_t); -- opvp_result_t (*opvpTransferDrawImage)(opvp_dc_t,opvp_int_t,const void*); -- opvp_result_t (*opvpEndDrawImage)(opvp_dc_t); -- opvp_result_t (*opvpStartScanline)(opvp_dc_t,opvp_int_t); -- opvp_result_t (*opvpScanline)(opvp_dc_t,opvp_int_t,const opvp_int_t*); -- opvp_result_t (*opvpEndScanline)(opvp_dc_t); -- opvp_result_t (*opvpStartRaster)(opvp_dc_t,opvp_int_t); -- opvp_result_t (*opvpTransferRasterData)(opvp_dc_t,opvp_int_t,const opvp_byte_t*); -- opvp_result_t (*opvpSkipRaster)(opvp_dc_t,opvp_int_t); -- opvp_result_t (*opvpEndRaster)(opvp_dc_t); -- opvp_result_t (*opvpStartStream)(opvp_dc_t); -- opvp_result_t (*opvpTransferStreamData)(opvp_dc_t,opvp_int_t,const void*); -- opvp_result_t (*opvpEndStream)(opvp_dc_t); --} opvp_api_procs_t; -- --/* Function prototype */ --opvp_dc_t opvpOpenPrinter( -- opvp_int_t outputFD, -- const opvp_char_t *printerModel, -- const opvp_int_t apiVersion[2], -- opvp_api_procs_t **apiProcs); -- --/* error no */ --extern opvp_int_t opvpErrorNo; -- --#endif /* _OPVP_H_ */ -diff --git a/filter/pdftoopvp/opvp/opvp_0_2_0.h b/filter/pdftoopvp/opvp/opvp_0_2_0.h -deleted file mode 100644 -index 2b2c4aa..0000000 ---- a/filter/pdftoopvp/opvp/opvp_0_2_0.h -+++ /dev/null -@@ -1,298 +0,0 @@ --/* -- --Copyright (c) 2003-2004, AXE, Inc. All rights reserved. -- --Permission is hereby granted, free of charge, to any person obtaining --a copy of this software and associated documentation files (the --"Software"), to deal in the Software without restriction, including --without limitation the rights to use, copy, modify, merge, publish, --distribute, sublicense, and/or sell copies of the Software, and to --permit persons to whom the Software is furnished to do so, subject to --the following conditions: -- --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -- --THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY --CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE --SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- --*/ --/* opvp_common.h ver.1.00 rel.1.0 26 Nov 2004 */ --/* OpenPrinting Vector Printer Driver Glue Code */ -- --#ifndef _FSGPD_0_2_0_H --#define _FSGPD_0_2_0_H -- --#define _PDAPI_VERSION_MAJOR_ 0 --#define _PDAPI_VERSION_MINOR_ 2 -- --/* Return Values */ --#define OPVP_OK 0 /* error is -1 */ -- --/* Error Codes */ --#define OPVP_FATALERROR -101 /* unrecoverable error occurred within the */ -- /* library */ --#define OPVP_BADREQUEST -102 /* invalid function parameters */ --#define OPVP_BADCONTEXT -103 /* bad parameter precontext */ --#define OPVP_NOTSUPPORTED -104 /* printer or driver request not supported */ --#define OPVP_JOBCANCELED -105 /* job cancelled */ --#define OPVP_PARAMERROR -106 /* illegal parameter combination */ -- --/* Info params */ --#define OPVP_INFO_PREFIX "updf:" -- --/* Fix */ --#define OPVP_FIX_FRACT_WIDTH 8 --#define OPVP_FIX_FRACT_DENOM (1<<OPVP_FIX_FRACT_WIDTH) --#define OPVP_FIX_FLOOR_WIDTH (sizeof(int)*8-OPVP_FIX_FRACT_WIDTH) --#if 0 --typedef struct { -- unsigned int fract : OPVP_FIX_FRACT_WIDTH; -- signed int floor : OPVP_FIX_FLOOR_WIDTH; --} OPVP_Fix; --#define OPVP_i2Fix(i,fix) (fix.fract=0,fix.floor=i) --#define OPVP_Fix2f(fix,f) (f=(double)fix.floor\ -- +(double)(fix.fract)/OPVP_FIX_FRACT_DENOM) --#define OPVP_f2Fix(f,fix) (fix.fract=(f-floor(f))*OPVP_FIX_FRACT_DENOM,\ -- fix.floor=floor(f)) --#else --typedef int OPVP_Fix; --#define OPVP_i2Fix(i,fix) (fix=(i)<<8) --#define OPVP_f2Fix(f,fix) (fix=((int)floor(f)<<8)\ -- |((int)(((f)-floor(f))*OPVP_FIX_FRACT_DENOM)\ -- &0x000000ff)) --#endif -- --/* Basic Types */ --typedef struct _OPVP_Point { -- OPVP_Fix x; -- OPVP_Fix y; --} OPVP_Point; -- --typedef struct _OPVP_Rectangle { -- OPVP_Point p0; /* start point */ -- OPVP_Point p1; /* end point */ --} OPVP_Rectangle; -- --typedef struct _OPVP_RoundRectangle { -- OPVP_Point p0; /* start point */ -- OPVP_Point p1; /* end point */ -- OPVP_Fix xellipse; -- OPVP_Fix yellipse; --} OPVP_RoundRectangle; -- --/* Image Formats */ --typedef enum _OPVP_ImageFormat { -- OPVP_iformatRaw = 0, -- OPVP_iformatRLE = 1, -- OPVP_iformatJPEG = 2, -- OPVP_iformatPNG = 3 --} OPVP_ImageFormat; -- --/* Color Presentation */ --typedef enum _OPVP_ColorMapping { -- OPVP_cmapDirect = 0, -- OPVP_cmapIndexed = 1 --} OPVP_ColorMapping; -- --typedef enum _OPVP_ColorSpace { -- OPVP_cspaceBW = 0, -- OPVP_cspaceDeviceGray = 1, -- OPVP_cspaceDeviceCMY = 2, -- OPVP_cspaceDeviceCMYK = 3, -- OPVP_cspaceDeviceRGB = 4, -- OPVP_cspaceStandardRGB = 5, -- OPVP_cspaceStandardRGB64 = 6 --} OPVP_ColorSpace; -- --/* Raster Operation modes */ --typedef enum _OPVP_ROP { -- OPVP_ropPset = 0, -- OPVP_ropPreset = 1, -- OPVP_ropOr = 2, -- OPVP_ropAnd = 3, -- OPVP_ropXor = 4 --} OPVP_ROP; -- --/* Fill, Paint, Clip */ --typedef enum _OPVP_FillMode { -- OPVP_fillModeEvenOdd = 0, -- OPVP_fillModeWinding = 1 --} OPVP_FillMode; -- --typedef enum _OPVP_PaintMode { -- OPVP_paintModeOpaque = 0, -- OPVP_paintModeTransparent = 1 --} OPVP_PaintMode; -- --typedef enum _OPVP_ClipRule { -- OPVP_clipRuleEvenOdd = 0, -- OPVP_clipRuleWinding = 1 --} OPVP_ClipRule; -- --/* Line */ --typedef enum _OPVP_LineStyle { -- OPVP_lineStyleSolid = 0, -- OPVP_lineStyleDash = 1 --} OPVP_LineStyle; -- --typedef enum _OPVP_LineCap { -- OPVP_lineCapButt = 0, -- OPVP_lineCapRound = 1, -- OPVP_lineCapSquare = 2 --} OPVP_LineCap; -- --typedef enum _OPVP_LineJoin { -- OPVP_lineJoinMiter = 0, -- OPVP_lineJoinRound = 1, -- OPVP_lineJoinBevel = 2 --} OPVP_LineJoin; -- --/* Brush */ --typedef enum _OPVP_BrushDataType { -- OPVP_bdtypeNormal = 0 --} OPVP_BrushDataType; -- --typedef struct _OPVP_BrushData { -- OPVP_BrushDataType type; -- int width; -- int height; -- int pitch; --#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) -- void *data; /* pointer to actual data */ --#else -- char data[1]; --#endif --} OPVP_BrushData; -- --typedef struct _OPVP_Brush { -- OPVP_ColorSpace colorSpace; -- int color[4]; /* aRGB quadruplet */ --#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) -- OPVP_BrushData *pbrush; /* pointer to brush data */ -- /* solid brush used, if null */ -- int xorg; /* brush origin */ -- int yorg; /* ignored for SetBgColor */ --#else -- int xorg; /* brush origin */ -- int yorg; /* ignored for SetBgColor */ -- OPVP_BrushData *pbrush; /* pointer to brush data */ -- /* solid brush used, if null */ --#endif --} OPVP_Brush; -- --/* Misc. Flags */ --#define OPVP_Arc 0 /* circular arc */ --#define OPVP_Chord 1 /* arch */ --#define OPVP_Pie 2 /* pie section */ --#define OPVP_Clockwise 0 /* clockwise */ --#define OPVP_Counterclockwise 1 /* counter-clockwise */ --#define OPVP_PathClose 0 /* Close path when using LinePath */ --#define OPVP_PathOpen 1 /* Do not close path when using LinePath */ -- --/* CTM */ --typedef struct _OPVP_CTM { -- float a; -- float b; -- float c; -- float d; -- float e; -- float f; --} OPVP_CTM; -- --/* Vector Driver API Proc. Entries */ --typedef struct _OPVP_api_procs { -- int (*OpenPrinter)(int,char *,int *,struct _OPVP_api_procs **); -- int (*ClosePrinter)(int); -- int (*StartJob)(int,char *); -- int (*EndJob)(int); -- int (*StartDoc)(int,char *); -- int (*EndDoc)(int); -- int (*StartPage)(int,char *); -- int (*EndPage)(int); --#if (_PDAPI_VERSION_MAJOR_ > 0 || _PDAPI_VERSION_MINOR_ >= 2) -- int (*QueryDeviceCapability)(int,int,int,char *); -- int (*QueryDeviceInfo)(int,int,int,char *); --#endif -- int (*ResetCTM)(int); -- int (*SetCTM)(int,OPVP_CTM *); -- int (*GetCTM)(int,OPVP_CTM *); -- int (*InitGS)(int); -- int (*SaveGS)(int); -- int (*RestoreGS)(int); -- int (*QueryColorSpace)(int,OPVP_ColorSpace *,int *); -- int (*SetColorSpace)(int,OPVP_ColorSpace); -- int (*GetColorSpace)(int,OPVP_ColorSpace *); -- int (*QueryROP)(int,int *,int *); -- int (*SetROP)(int,int); -- int (*GetROP)(int,int *); -- int (*SetFillMode)(int,OPVP_FillMode); -- int (*GetFillMode)(int,OPVP_FillMode *); -- int (*SetAlphaConstant)(int,float); -- int (*GetAlphaConstant)(int,float *); -- int (*SetLineWidth)(int,OPVP_Fix); -- int (*GetLineWidth)(int,OPVP_Fix *); -- int (*SetLineDash)(int,OPVP_Fix *,int); -- int (*GetLineDash)(int,OPVP_Fix *,int *); -- int (*SetLineDashOffset)(int,OPVP_Fix); -- int (*GetLineDashOffset)(int,OPVP_Fix *); -- int (*SetLineStyle)(int,OPVP_LineStyle); -- int (*GetLineStyle)(int,OPVP_LineStyle *); -- int (*SetLineCap)(int,OPVP_LineCap); -- int (*GetLineCap)(int,OPVP_LineCap *); -- int (*SetLineJoin)(int,OPVP_LineJoin); -- int (*GetLineJoin)(int,OPVP_LineJoin *); -- int (*SetMiterLimit)(int,OPVP_Fix); -- int (*GetMiterLimit)(int,OPVP_Fix *); -- int (*SetPaintMode)(int,OPVP_PaintMode); -- int (*GetPaintMode)(int,OPVP_PaintMode *); -- int (*SetStrokeColor)(int,OPVP_Brush *); -- int (*SetFillColor)(int,OPVP_Brush *); -- int (*SetBgColor)(int,OPVP_Brush *); -- int (*NewPath)(int); -- int (*EndPath)(int); -- int (*StrokePath)(int); -- int (*FillPath)(int); -- int (*StrokeFillPath)(int); -- int (*SetClipPath)(int,OPVP_ClipRule); --#if (_PDAPI_VERSION_MAJOR_ > 0 || _PDAPI_VERSION_MINOR_ >= 2) -- int (*ResetClipPath)(int); --#endif -- int (*SetCurrentPoint)(int,OPVP_Fix,OPVP_Fix); -- int (*LinePath)(int,int,int,OPVP_Point *); -- int (*PolygonPath)(int,int,int *,OPVP_Point *); -- int (*RectanglePath)(int,int,OPVP_Rectangle *); -- int (*RoundRectanglePath)(int,int,OPVP_RoundRectangle *); --#if (_PDAPI_VERSION_MAJOR_ == 0 && _PDAPI_VERSION_MINOR_ < 2) -- int (*BezierPath)(int,int *,OPVP_Point *); --#else -- int (*BezierPath)(int,int,OPVP_Point *); --#endif -- int (*ArcPath)(int,int,int,OPVP_Fix,OPVP_Fix,OPVP_Fix,OPVP_Fix, -- OPVP_Fix,OPVP_Fix,OPVP_Fix,OPVP_Fix); -- int (*DrawBitmapText)(int,int,int,int,void *); -- int (*DrawImage)(int,int,int,int, -- OPVP_ImageFormat,OPVP_Rectangle,int,void *); -- int (*StartDrawImage)(int,int,int,int, -- OPVP_ImageFormat,OPVP_Rectangle); -- int (*TransferDrawImage)(int,int,void *); -- int (*EndDrawImage)(int); -- int (*StartScanline)(int,int); -- int (*Scanline)(int,int,int *); -- int (*EndScanline)(int); -- int (*StartRaster)(int,int); -- int (*TransferRasterData)(int,int,unsigned char *); -- int (*SkipRaster)(int,int); -- int (*EndRaster)(int); -- int (*StartStream)(int); -- int (*TransferStreamData)(int,int,void *); -- int (*EndStream)(int); --} OPVP_api_procs; -- --#endif /* _OPVP_COMMON_H_ */ -- -diff --git a/filter/pdftoopvp/opvp/opvp_common.h b/filter/pdftoopvp/opvp/opvp_common.h -deleted file mode 100644 -index 5d65b32..0000000 ---- a/filter/pdftoopvp/opvp/opvp_common.h -+++ /dev/null -@@ -1,54 +0,0 @@ --/* -- --Copyright (c) 2003-2004, AXE, Inc. All rights reserved. -- --Permission is hereby granted, free of charge, to any person obtaining --a copy of this software and associated documentation files (the --"Software"), to deal in the Software without restriction, including --without limitation the rights to use, copy, modify, merge, publish, --distribute, sublicense, and/or sell copies of the Software, and to --permit persons to whom the Software is furnished to do so, subject to --the following conditions: -- --The above copyright notice and this permission notice shall be included --in all copies or substantial portions of the Software. -- --THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY --CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE --SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- --*/ --/* OpenPrinting Vector Printer Driver Glue Code */ -- --#ifndef _OPVP_COMMON_H_ --#define _OPVP_COMMON_H_ -- --#include "opvp_0_2_0.h" --#undef _PDAPI_VERSION_MAJOR_ --#undef _PDAPI_VERSION_MINOR_ --/* undefine conflicted macros */ --#undef OPVP_INFO_PREFIX --#undef OPVP_OK --#undef OPVP_FATALERROR --#undef OPVP_BADREQUEST --#undef OPVP_BADCONTEXT --#undef OPVP_NOTSUPPORTED --#undef OPVP_JOBCANCELED --#undef OPVP_PARAMERROR --/* define 0_2 error no as different macros */ --#define OPVP_FATALERROR_0_2 -101 --#define OPVP_BADREQUEST_0_2 -102 --#define OPVP_BADCONTEXT_0_2 -103 --#define OPVP_NOTSUPPORTED_0_2 -104 --#define OPVP_JOBCANCELED_0_2 -105 --#define OPVP_PARAMERROR_0_2 -106 -- --#include "opvp.h" --#define OPVP_INFO_PREFIX "" -- --#endif /* _OPVP_COMMON_H_ */ -- -diff --git a/filter/pdftoopvp/pdftoopvp.cxx b/filter/pdftoopvp/pdftoopvp.cxx -deleted file mode 100644 -index dfff692..0000000 ---- a/filter/pdftoopvp/pdftoopvp.cxx -+++ /dev/null -@@ -1,798 +0,0 @@ --//======================================================================== --// --// pdftoopvp.cc --// --// Copyright 2005 AXE,Inc. --// --// 2007,2008,2009 Modified by BBR Inc. --//======================================================================== -- --#include <config.h> --#include <stdio.h> --#include <stdlib.h> --#include <unistd.h> --#include <ctype.h> --#include <math.h> --#ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" --#endif --#include "goo/GooString.h" --#define GSTRING_H // for old GooString.h --#include "goo/gmem.h" --#include "GlobalParams.h" --#include "Object.h" --#include "PDFDoc.h" --#include "splash/SplashBitmap.h" --#include "OPRS.h" --#include "OPVPOutputDev.h" --#include "Gfx.h" --#include <cups/cups.h> --#include <cups/ppd.h> --#include "OPVPError.h" -- --#define MMPERINCH (25.4) -- --static int resolution = 300; --static int hResolution = 0; --static int vResolution = 0; --static bool mono = false; --static bool reverse = false; --static bool gray = false; --static char enableFreeTypeStr[16] = ""; --static bool quiet = false; --static char outputOrderStr[256] = ""; --static bool oldLipsDriver = false; --static bool HPDriver = false; --static bool NECDriver = false; --static bool clipPathNotSaved = false; --static bool noShearImage = false; --static bool noLineStyle = false; --static bool noImageMask = false; --static bool noClipPath = false; --static bool ignoreMiterLimit = false; --static bool noMiterLimit = false; --static char printerDriver[1024] = ""; --static char printerModel[1024] = ""; --static char jobInfo[4096] = ""; --static char docInfo[1024] = ""; --static char pageInfo[1024] = ""; --static bool noBitmapChar = false; --static char bitmapCharThreshold[20] = "2000"; --static char maxClipPathLength[20] = "2000"; --static char maxFillPathLength[20] = "4000"; --static int pageWidth = -1; --static int pageHeight = -1; -- --static int outOnePage(PDFDoc *doc, OPVPOutputDev *opvpOut, int pg) --{ -- char buf[1024]; -- char *p; -- double pw = doc->getPageMediaWidth(pg); -- double ph = doc->getPageMediaHeight(pg); -- int paperWidth; -- int paperHeight; -- -- if (pw != pageWidth || ph != pageHeight) { -- if (pageInfo[0] != '\0') { -- snprintf(buf,sizeof(buf),"%s;MediaSize=%dx%dmm",pageInfo, -- (int)(pw*MMPERINCH/72), -- (int)(ph*MMPERINCH/72)); -- } else { -- snprintf(buf,sizeof(buf),"MediaSize=%dx%dmm", -- (int)(pw*MMPERINCH/72), -- (int)(ph*MMPERINCH/72)); -- } -- p = buf; -- } else { -- pw = pageWidth; -- ph = pageHeight; -- p = pageInfo; -- } -- -- paperWidth = (int)(pw*hResolution/72+0.5); -- paperHeight = (int)(ph*vResolution/72+0.5); -- if (opvpOut->OPVPStartPage(p,paperWidth,paperHeight) < 0) { -- opvpError(-1,"Start Page failed"); -- return 2; -- } -- opvpOut->setScale(1.0,1.0,0,0,0,0,paperHeight); -- doc->displayPage(opvpOut, pg, resolution, resolution, -- 0, true, true, false); -- if (opvpOut->outSlice() < 0) { -- opvpError(-1,"OutSlice failed"); -- return 2; -- } -- if (opvpOut->OPVPEndPage() < 0) { -- opvpError(-1,"End Page failed"); -- return 2; -- } -- return 0; --} -- --#define MAX_OPVP_OPTIONS 20 -- --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 --void CDECL myErrorFun(void *data, ErrorCategory category, --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- Goffset pos, const char *msg) --#else -- Goffset pos, char *msg) --#endif /* MAJOR > 0 || MINOR >= 70 */ --#else --void CDECL myErrorFun(void *data, ErrorCategory category, -- int pos, char *msg) --#endif --{ -- if (pos >= 0) { --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 -- fprintf(stderr, "ERROR (%lld): ", pos); --#else -- fprintf(stderr, "ERROR (%d): ", pos); --#endif -- } else { -- fprintf(stderr, "ERROR: "); -- } -- fprintf(stderr, "%s\n",msg); -- fflush(stderr); --} -- --static bool getColorProfilePath(ppd_file_t *ppd, GooString *path) --{ -- // get color profile path -- const char *colorModel; -- const char *cupsICCQualifier2; -- const char *cupsICCQualifier2Choice; -- const char *cupsICCQualifier3; -- const char *cupsICCQualifier3Choice; -- ppd_attr_t *attr; -- ppd_choice_t *choice; -- const char *datadir; -- -- if ((attr = ppdFindAttr(ppd,"ColorModel",NULL)) != NULL) { -- colorModel = attr->value; -- } else { -- colorModel = NULL; -- } -- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier2",NULL)) != NULL) { -- cupsICCQualifier2 = attr->value; -- } else { -- cupsICCQualifier2 = "MediaType"; -- } -- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier2)) != NULL) { -- cupsICCQualifier2Choice = choice->choice; -- } else { -- cupsICCQualifier2Choice = NULL; -- } -- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier3",NULL)) != NULL) { -- cupsICCQualifier3 = attr->value; -- } else { -- cupsICCQualifier3 = "Resolution"; -- } -- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier3)) != NULL) { -- cupsICCQualifier3Choice = choice->choice; -- } else { -- cupsICCQualifier3Choice = NULL; -- } -- -- for (attr = ppdFindAttr(ppd,"cupsICCProfile",NULL);attr != NULL; -- attr = ppdFindNextAttr(ppd,"cupsICCProfile",NULL)) { -- // check color model -- char buf[PPD_MAX_NAME]; -- char *p, *r; -- -- strncpy(buf,attr->spec,sizeof(buf)); -- if ((p = strchr(buf,'.')) != NULL) { -- *p = '\0'; -- } -- if (colorModel != NULL && buf[0] != '\0' -- && strcasecmp(buf,colorModel) != 0) continue; -- if (p == NULL) { -- break; -- } else { -- p++; -- if ((r = strchr(p,'.')) != 0) { -- *r = '\0'; -- } -- } -- if (cupsICCQualifier2Choice != NULL && p[0] != '\0' -- && strcasecmp(p,cupsICCQualifier2Choice) != 0) continue; -- if (r == NULL) { -- break; -- } else { -- r++; -- if ((p = strchr(r,'.')) != 0) { -- *p = '\0'; -- } -- } -- if (cupsICCQualifier3Choice == NULL || r[0] == '\0' -- || strcasecmp(r,cupsICCQualifier3Choice) == 0) break; -- } -- if (attr != NULL) { -- // matched -- path->clear(); -- if (attr->value[0] != '/') { -- if ((datadir = getenv("CUPS_DATADIR")) == NULL) -- datadir = CUPS_DATADIR; -- path->append(datadir); -- path->append("/profiles/"); -- } -- path->append(attr->value); -- return true; -- } -- return false; --} -- --int main(int argc, char *argv[]) { --/* mtrace(); */ -- int exitCode; --{ -- PDFDoc *doc; -- SplashColor paperColor; -- OPVPOutputDev *opvpOut; -- bool ok = true; -- int pg; -- const char *optionKeys[MAX_OPVP_OPTIONS]; -- const char *optionVals[MAX_OPVP_OPTIONS]; -- int nOptions = 0; -- int numPages; -- int i; -- GooString fileName; -- GooString colorProfilePath("opvp.icc"); -- -- exitCode = 99; -- setErrorCallback(::myErrorFun,NULL); -- -- // parse args -- int num_options; -- cups_option_t *options; -- const char *val; -- char *ppdFileName; -- ppd_file_t *ppd = 0; -- ppd_attr_t *attr; -- GooString jobInfoStr; -- GooString docInfoStr; -- GooString pageInfoStr; -- bool colorProfile = false; -- -- -- if (argc < 6 || argc > 7) { -- opvpError(-1,"ERROR: %s job-id user title copies options [file]", -- argv[0]); -- return (1); -- } -- -- if ((ppdFileName = getenv("PPD")) != 0) { -- if ((ppd = ppdOpenFile(ppdFileName)) != 0) { -- /* get attributes from PPD File */ -- if ((attr = ppdFindAttr(ppd,"opvpJobInfo",0)) != 0) { -- jobInfoStr.append(attr->value); -- } -- if ((attr = ppdFindAttr(ppd,"opvpDocInfo",0)) != 0) { -- docInfoStr.append(attr->value); -- } -- if ((attr = ppdFindAttr(ppd,"opvpPageInfo",0)) != 0) { -- pageInfoStr.append(attr->value); -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpOldLipsDriver",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- oldLipsDriver = true; -- } else { -- oldLipsDriver = false; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpHPDriver",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- HPDriver = true; -- } else { -- HPDriver = false; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpNECDriver",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- NECDriver = true; -- } else { -- NECDriver = false; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpClipPathNotSaved",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- clipPathNotSaved = true; -- } else { -- clipPathNotSaved = false; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpShearImage",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noShearImage = false; -- } else { -- noShearImage = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpLineStyle",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noLineStyle = false; -- } else { -- noLineStyle = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpImageMask",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noImageMask = false; -- } else { -- noImageMask = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpClipPath",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noClipPath = false; -- } else { -- noClipPath = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpMiterLimit",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noMiterLimit = false; -- } else { -- noMiterLimit = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpIgnoreMiterLimit",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- ignoreMiterLimit = true; -- } else { -- ignoreMiterLimit = false; -- } -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpBitmapCharThreshold",0)) != 0) { -- strncpy(bitmapCharThreshold,attr->value, -- sizeof(bitmapCharThreshold)-1); -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpMaxClipPathLength",0)) != 0) { -- strncpy(maxClipPathLength,attr->value, -- sizeof(maxClipPathLength)-1); -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpMaxFillPathLength",0)) != 0) { -- strncpy(maxFillPathLength,attr->value, -- sizeof(maxFillPathLength)-1); -- } -- if ((attr = ppdFindAttr(ppd,"pdftoopvpBitmapChar",0)) != 0) { -- if (strcasecmp(attr->value,"true") == 0) { -- noBitmapChar = false; -- } else { -- noBitmapChar = true; -- } -- } -- if ((attr = ppdFindAttr(ppd,"opvpDriver",0)) != 0) { -- strncpy(printerDriver,attr->value,sizeof(printerDriver)-1); -- printerDriver[sizeof(printerDriver)-1] = '\0'; -- } -- if ((attr = ppdFindAttr(ppd,"opvpModel",0)) != 0) { -- strncpy(printerModel,attr->value,sizeof(printerModel)-1); -- printerModel[sizeof(printerModel)-1] = '\0'; -- } -- ppdMarkDefaults(ppd); -- } -- } -- /* get attributes and options from command line option */ -- num_options = cupsParseOptions(argv[5],0,&options); -- cupsMarkOptions(ppd,num_options,options); -- -- for (i = 0;i < num_options;i++) { -- if (strcasecmp(options[i].name,"Resolution") == 0) { -- resolution = atoi(options[i].value); -- } else if (strcasecmp(options[i].name,"pdftoopvpOldLipsDriver") == 0) { -- oldLipsDriver = true; -- } else if (strcasecmp(options[i].name,"pdftoopvpHPDriver") == 0) { -- HPDriver = true; -- } else if (strcasecmp(options[i].name,"pdftoopvpNECDriver") == 0) { -- NECDriver = true; -- } else if (strcasecmp(options[i].name,"pdftoopvpClipPathNotSaved") == 0) { -- clipPathNotSaved = true; -- } else if (strcasecmp(options[i].name,"pdftoopvpShearImage") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noShearImage = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpLineStyle") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noLineStyle = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpImageMask") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noImageMask = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpClipPath") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noClipPath = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpMiterLimit") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noMiterLimit = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpIgnoreMiterLimit") == 0) { -- if (strcasecmp(options[i].value,"true") == 0) { -- ignoreMiterLimit = true; -- } -- } -- else if (strcasecmp(options[i].name,"pdftoopvpBitmapChar") == 0) { -- if (strcasecmp(options[i].value,"false") == 0) { -- noBitmapChar = true; -- } -- } else if (strcasecmp(options[i].name,"pdftoopvpBitmapCharThreshold") == 0) { -- strncpy(bitmapCharThreshold,options[i].value, -- sizeof(bitmapCharThreshold)-1); -- } else if (strcasecmp(options[i].name,"pdftoopvpMaxClipPathLength") == 0) { -- strncpy(maxClipPathLength,options[i].value, -- sizeof(maxClipPathLength)-1); -- } else if (strcasecmp(options[i].name,"pdftoopvpMaxFillPathLength") == 0) { -- strncpy(maxFillPathLength,options[i].value, -- sizeof(maxFillPathLength)-1); -- } else if (strcasecmp(options[i].name,"opvpDriver") == 0) { -- strncpy(printerDriver,options[i].value,sizeof(printerDriver)-1); -- printerDriver[sizeof(printerDriver)-1] = '\0'; -- } else if (strcasecmp(options[i].name,"opvpModel") == 0) { -- strncpy(printerModel,options[i].value,sizeof(printerModel)-1); -- printerModel[sizeof(printerModel)-1] = '\0'; -- } else if (strcasecmp(options[i].name,"opvpJobInfo") == 0) { -- /* do nothing here */; -- } else if (strcasecmp(options[i].name,"opvpDocInfo") == 0) { -- /* do nothing here */; -- } else if (strcasecmp(options[i].name,"opvpPageInfo") == 0) { -- /* do nothing here */; -- } -- } -- if (ppd != 0) { -- int section; -- ppd_choice_t **choices; -- ppd_size_t *pagesize; -- -- if ((pagesize = ppdPageSize(ppd,0)) != 0) { -- pageWidth = (int)pagesize->width; -- pageHeight = (int)pagesize->length; -- } -- for (section = (int)PPD_ORDER_ANY; -- section <= (int)PPD_ORDER_PROLOG;section++) { -- int n; -- -- n = ppdCollect(ppd,(ppd_section_t)section,&choices); -- for (i = 0;i < n;i++) { -- -- if (strcasecmp(((ppd_option_t *)(choices[i]->option))->keyword, -- "Resolution") == 0) { -- resolution = atoi(choices[i]->choice); -- } -- } -- if (choices != 0) free(choices); -- } -- --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 -- strncpy(jobInfo,jobInfoStr.getCString(),sizeof(jobInfo)-1); -- jobInfo[sizeof(jobInfo)-1] = '\0'; -- strncpy(docInfo,docInfoStr.getCString(),sizeof(docInfo)-1); -- docInfo[sizeof(docInfo)-1] = '\0'; -- strncpy(pageInfo,pageInfoStr.getCString(),sizeof(pageInfo)-1); -- pageInfo[sizeof(pageInfo)-1] = '\0'; --#else -- strncpy(jobInfo,jobInfoStr.c_str(),sizeof(jobInfo)-1); -- jobInfo[sizeof(jobInfo)-1] = '\0'; -- strncpy(docInfo,docInfoStr.c_str(),sizeof(docInfo)-1); -- docInfo[sizeof(docInfo)-1] = '\0'; -- strncpy(pageInfo,pageInfoStr.c_str(),sizeof(pageInfo)-1); -- pageInfo[sizeof(pageInfo)-1] = '\0'; --#endif -- -- colorProfile = getColorProfilePath(ppd,&colorProfilePath); -- -- ppdClose(ppd); -- } -- if ((val = cupsGetOption("opvpJobInfo",num_options, options)) != 0) { -- /* override ppd value */ -- strncpy(jobInfo,val,sizeof(jobInfo)-1); -- jobInfo[sizeof(jobInfo)-1] = '\0'; -- } -- if ((val = cupsGetOption("opvpDocInfo",num_options, options)) != 0) { -- /* override ppd value */ -- strncpy(docInfo,val,sizeof(docInfo)-1); -- docInfo[sizeof(docInfo)-1] = '\0'; -- } -- if ((val = cupsGetOption("opvpPageInfo",num_options, options)) != 0) { -- /* override ppd value */ -- strncpy(pageInfo,val,sizeof(pageInfo)-1); -- pageInfo[sizeof(pageInfo)-1] = '\0'; -- } -- -- cupsFreeOptions(num_options,options); --#if 0 -- /* for debug parameters */ -- fprintf(stderr,"WARNING:resolution=%d\n",resolution); -- fprintf(stderr,"WARNING:sliceHeight=%d\n",sliceHeight); -- fprintf(stderr,"WARNING:oldLipsDriver=%d\n",oldLipsDriver); -- fprintf(stderr,"WARNING:HPDriver=%d\n",HPDriver); -- fprintf(stderr,"WARNING:NECDriver=%d\n",NECDriver); -- fprintf(stderr,"WARNING:clipPathNotSaved=%d\n",clipPathNotSaved); -- fprintf(stderr,"WARNING:noShearImage=%d\n",noShearImage); -- fprintf(stderr,"WARNING:noLineStyle=%d\n",noLineStyle); -- fprintf(stderr,"WARNING:noClipPath=%d\n",noClipPath); -- fprintf(stderr,"WARNING:noMiterLimit=%d\n",noMiterLimit); -- fprintf(stderr,"WARNING:printerDriver=%s\n",printerDriver); -- fprintf(stderr,"WARNING:printerModel=%s\n",printerModel); -- fprintf(stderr,"WARNING:jobInfo=%s\n",jobInfo); -- fprintf(stderr,"WARNING:docInfo=%s\n",docInfo); -- fprintf(stderr,"WARNING:pageInfo=%s\n",pageInfo); -- fprintf(stderr,"WARNING:noBitmapChar=%d\n",noBitmapChar); -- fprintf(stderr,"WARNING:bitmapCharThreshold=%s\n",bitmapCharThreshold); -- fprintf(stderr,"WARNING:maxClipPathLength=%s\n",maxClipPathLength); -- fprintf(stderr,"WARNING:maxFillPathLength=%s\n",maxFillPathLength); --exit(0); --#endif -- -- if (oldLipsDriver) { -- optionKeys[nOptions] = "OPVP_OLDLIPSDRIVER"; -- optionVals[nOptions] = "1"; -- nOptions++; -- clipPathNotSaved = true; -- noShearImage = true; -- } -- if (HPDriver) { -- noClipPath = true; -- noLineStyle = true; -- noShearImage = true; -- } -- if (NECDriver) { -- noMiterLimit = true; -- strcpy(maxClipPathLength,"6"); -- noShearImage = true; -- } -- if (clipPathNotSaved) { -- optionKeys[nOptions] = "OPVP_CLIPPATHNOTSAVED"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noShearImage) { -- optionKeys[nOptions] = "OPVP_NOSHEARIMAGE"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noLineStyle) { -- optionKeys[nOptions] = "OPVP_NOLINESTYLE"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noImageMask) { -- optionKeys[nOptions] = "OPVP_NOIMAGEMASK"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noClipPath) { -- optionKeys[nOptions] = "OPVP_NOCLIPPATH"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noMiterLimit) { -- optionKeys[nOptions] = "OPVP_NOMITERLIMIT"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (noBitmapChar) { -- optionKeys[nOptions] = "OPVP_NOBITMAPCHAR"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- if (ignoreMiterLimit) { -- optionKeys[nOptions] = "OPVP_IGNOREMITERLIMIT"; -- optionVals[nOptions] = "1"; -- nOptions++; -- } -- optionKeys[nOptions] = "OPVP_BITMAPCHARTHRESHOLD"; -- optionVals[nOptions] = bitmapCharThreshold; -- nOptions++; -- optionKeys[nOptions] = "OPVP_MAXCLIPPATHLENGTH"; -- optionVals[nOptions] = maxClipPathLength; -- nOptions++; -- optionKeys[nOptions] = "OPVP_MAXFILLPATHLENGTH"; -- optionVals[nOptions] = maxFillPathLength; -- nOptions++; -- if (hResolution == 0) hResolution = resolution; -- if (hResolution == 0) hResolution = resolution; -- if (vResolution == 0) vResolution = resolution; -- if (strcasecmp(outputOrderStr,"reverse") == 0) { -- reverse = true; -- } -- -- if (argc > 6) { -- fileName.append(argv[6]); -- } else { -- fileName.append("-"); -- } -- -- // read config file -- globalParams = new GlobalParams(); -- if (enableFreeTypeStr[0]) { -- if (!globalParams->setEnableFreeType(enableFreeTypeStr)) { -- opvpError(-1,"Bad '-freetype' value on command line"); -- ok = false; -- } -- } --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 -- globalParams->setAntialias("no"); --#endif -- if (quiet) { -- globalParams->setErrQuiet(quiet); -- } -- if (!ok) { -- exitCode = 2; -- goto err0; -- } -- -- if (fileName.cmp("-") == 0) { -- /* stdin */ -- char *s; -- GooString name; -- int fd; -- char buf[4096]; -- int n; -- -- /* create a tmp file */ -- if ((s = getenv("TMPDIR")) != 0) { -- name.append(s); -- } else { -- name.append("/tmp"); -- } -- name.append("/XXXXXX"); --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 -- fd = mkstemp(name.getCString()); --#else -- std::string t = name.toStr(); -- fd = mkstemp(&t[0]); -- name = GooString(std::move(t)); --#endif -- if (fd < 0) { -- opvpError(-1,"Can't create temporary file"); -- exitCode = 2; -- goto err0; -- } -- -- /* check JCL */ -- while (fgets(buf,sizeof(buf)-1,stdin) != NULL -- && strncmp(buf,"%PDF",4) != 0) { -- if (strncmp(buf,"pdftoopvp jobInfo:",18) == 0) { -- /* JCL jobInfo exists, override jobInfo */ -- strncpy(jobInfo,buf+18,sizeof(jobInfo)-1); -- for (i = sizeof(jobInfo)-2;i >= 0 -- && (jobInfo[i] == 0 || jobInfo[i] == '\n' || jobInfo[i] == ';') -- ;i--); -- jobInfo[i+1] = 0; -- } -- } -- if (strncmp(buf,"%PDF",4) != 0) { -- opvpError(-1,"Can't find PDF header"); -- exitCode = 2; -- goto err0; -- } -- /* copy PDF header */ -- n = strlen(buf); -- if (write(fd,buf,n) != n) { -- opvpError(-1,"Can't copy stdin to temporary file"); -- close(fd); -- exitCode = 2; -- goto err0; -- } -- /* copy rest stdin to the tmp file */ -- while ((n = fread(buf,1,sizeof(buf),stdin)) > 0) { -- if (write(fd,buf,n) != n) { -- opvpError(-1,"Can't copy stdin to temporary file"); -- close(fd); -- exitCode = 2; -- goto err0; -- } -- } -- close(fd); -- doc = new PDFDoc(&name); -- /* remove name */ --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 71 -- unlink(name.getCString()); --#else -- unlink(name.c_str()); --#endif -- } else { -- /* no jcl check */ -- doc = new PDFDoc(fileName.copy()); -- } -- if (!doc->isOk()) { -- opvpError(-1," Parsing PDF failed: error code %d", -- doc->getErrorCode()); -- exitCode = 2; -- goto err05; -- } -- -- if (doc->isEncrypted() && !doc->okToPrint()) { -- opvpError(-1,"Print Permission Denied"); -- exitCode = 2; -- goto err05; -- } -- -- /* paperColor is white */ -- paperColor[0] = 255; -- paperColor[1] = 255; -- paperColor[2] = 255; --#ifdef USE_CMS -- /* set color profile file name */ -- GfxColorSpace::setDisplayProfileName(&colorProfilePath); --#endif -- opvpOut = new OPVPOutputDev(); -- if (opvpOut->init(mono ? splashModeMono1 : -- gray ? splashModeMono8 : -- splashModeRGB8, -- colorProfile, -- false, paperColor, -- printerDriver,1,printerModel, -- nOptions,optionKeys,optionVals) < 0) { -- opvpError(-1,"OPVPOutputDev Initialize fail"); -- exitCode = 2; -- goto err1; -- } -- -- opvpOut->startDoc(doc->getXRef()); -- --#if 0 --fprintf(stderr,"JobInfo=%s\n",jobInfo); --#endif -- if (opvpOut->OPVPStartJob(jobInfo) < 0) { -- opvpError(-1,"Start job failed"); -- exitCode = 2; -- goto err1; -- } -- if (opvpOut->OPVPStartDoc(docInfo) < 0) { -- opvpError(-1,"Start Document failed"); -- exitCode = 2; -- goto err2; -- } -- numPages = doc->getNumPages(); -- for (pg = 1; pg <= numPages; ++pg) { -- if ((exitCode = outOnePage(doc,opvpOut,pg)) != 0) break; -- } -- if (opvpOut->OPVPEndDoc() < 0) { -- opvpError(-1,"End Document failed"); -- exitCode = 2; -- } --err2: -- if (opvpOut->OPVPEndJob() < 0) { -- opvpError(-1,"End job failed"); -- exitCode = 2; -- } -- -- // clean up -- err1: -- delete opvpOut; -- err05: -- delete doc; -- err0: -- delete globalParams; -- --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 -- // check for memory leaks -- Object::memCheck(stderr); -- gMemReport(stderr); --#endif -- --} --/* muntrace(); */ -- return exitCode; --} -- --/* for memory debug */ --/* For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW -- * should be used as a guard, otherwise use traditional definition */ --#ifndef _GLIBCXX_THROW --#define _GLIBCXX_THROW throw --#endif -- --void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) --{ -- void *p = malloc(size); -- return p; --} -- --void operator delete(void *p) throw () --{ -- free(p); --} -diff --git a/filter/pdftopdf/pdftopdf.cc b/filter/pdftopdf/pdftopdf.cc -index 3b9bb30..8b76240 100644 ---- a/filter/pdftopdf/pdftopdf.cc -+++ b/filter/pdftopdf/pdftopdf.cc -@@ -857,7 +857,6 @@ void calculate(ppd_file_t *ppd,ProcessingParameters ¶m) // {{{ - // }}} - - // reads from stdin into temporary file. returns FILE * or NULL on error --// TODO? to extra file (also used in pdftoijs, e.g.) - FILE *copy_stdin_to_temp() // {{{ - { - char buf[BUFSIZ]; -diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx -index ee8b6ce..c8725c4 100644 ---- a/filter/pdftoraster.cxx -+++ b/filter/pdftoraster.cxx -@@ -37,27 +37,22 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - #include <stdio.h> - #include <stdlib.h> - #ifdef HAVE_CPP_POPPLER_VERSION_H --#include "cpp/poppler-version.h" -+#include <poppler/cpp/poppler-version.h> - #endif --#include "goo/GooString.h" --#include "goo/gmem.h" --#include "Object.h" --#include "Stream.h" --#include "PDFDoc.h" --#include "SplashOutputDev.h" --#include "GfxState.h" - #include <cups/ppd.h> - #include <stdarg.h> --#include "PDFError.h" --#include "GlobalParams.h" - #include <cups/raster.h> - #include <cupsfilters/image.h> - #include <cupsfilters/raster.h> - #include <cupsfilters/colormanager.h> --#include <splash/SplashTypes.h> --#include <splash/SplashBitmap.h> - #include <strings.h> - #include <math.h> -+#include <poppler/cpp/poppler-document.h> -+#include <poppler/cpp/poppler-page.h> -+#include <poppler/cpp/poppler-global.h> -+#include <poppler/cpp/poppler-image.h> -+#include <poppler/cpp/poppler-page-renderer.h> -+#include <poppler/cpp/poppler-rectangle.h> - #ifdef USE_LCMS1 - #include <lcms.h> - #define cmsColorSpaceSignature icColorSpaceSignature -@@ -166,7 +161,7 @@ namespace { - {15,143,47,175,7,135,39,167,13,141,45,173,5,133,37,165}, - {207,79,239,111,199,71,231,103,205,77,237,109,197,69,229,101}, - {63,191,31,159,55,183,23,151,61,189,29,157,53,181,21,149}, -- {255,127,223,95,247,119,215,87,253,125,221,93,245,117,213,85} -+ {255,127,223,95,247,119,215,87,253,125,221,93,245,117,213,85} - }; - unsigned int dither2[8][8] = { - {0,32,8,40,2,34,10,42}, -@@ -176,13 +171,13 @@ namespace { - {3,35,11,43,1,33,9,41}, - {51,19,59,27,49,17,57,25}, - {15,47,7,39,13,45,5,37}, -- {63,31,55,23,61,29,53,21} -+ {63,31,55,23,61,29,53,21} - }; - unsigned int dither4[4][4] = { - {0,8,2,10}, - {12,4,14,6}, - {3,11,1,9}, -- {15,7,13,5} -+ {15,7,13,5} - }; - - /* for color profiles */ -@@ -224,7 +219,7 @@ cmsCIExyYTRIPLE adobergb_matrix() - cmsCIExyYTRIPLE m; - - double * matrix = cmMatrixAdobeRgb(); -- -+ - m.Red.x = matrix[0]; - m.Red.y = matrix[1]; - m.Red.Y = matrix[2]; -@@ -251,7 +246,7 @@ cmsHPROFILE adobergb_profile() - #else - cmsToneCurve * Gamma = cmsBuildGamma(NULL, 2.2); - cmsToneCurve * Gamma3[3]; --#endif -+#endif - Gamma3[0] = Gamma3[1] = Gamma3[2] = Gamma; - - // Build AdobeRGB profile -@@ -272,7 +267,7 @@ cmsHPROFILE sgray_profile() - cmsToneCurve Gamma = cmsBuildGamma(256, 2.2); - #else - cmsToneCurve * Gamma = cmsBuildGamma(NULL, 2.2); --#endif -+#endif - // Build sGray profile - wp = sgray_wp(); - sgray = cmsCreateGrayProfile(&wp, Gamma); -@@ -280,30 +275,6 @@ cmsHPROFILE sgray_profile() - return sgray; - } - --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 --void CDECL myErrorFun(void *data, ErrorCategory category, --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 70 -- Goffset pos, const char *msg) --#else -- Goffset pos, char *msg) --#endif /* MAJOR > 0 || MINOR >= 70 */ --#else --void CDECL myErrorFun(void *data, ErrorCategory category, -- int pos, char *msg) --#endif --{ -- if (pos >= 0) { --#if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 23 -- fprintf(stderr, "ERROR (%lld): ", pos); --#else -- fprintf(stderr, "ERROR (%d): ", pos); --#endif -- } else { -- fprintf(stderr, "ERROR: "); -- } -- fprintf(stderr, "%s\n",msg); -- fflush(stderr); --} - - #ifdef USE_LCMS1 - static int lcmsErrorHandler(int ErrorCode, const char *ErrorText) -@@ -320,93 +291,6 @@ static void lcmsErrorHandler(cmsContext contextId, cmsUInt32Number ErrorCode, - #endif - - --#if 0 --static bool getColorProfilePath(ppd_file_t *ppd, GooString *path) --{ -- // get color profile path -- const char *colorModel; -- const char *cupsICCQualifier2; -- const char *cupsICCQualifier2Choice; -- const char *cupsICCQualifier3; -- const char *cupsICCQualifier3Choice; -- ppd_attr_t *attr; -- ppd_choice_t *choice; -- -- if ((choice = ppdFindMarkedChoice(ppd,"ColorModel")) != NULL) { -- colorModel = choice->choice; -- } else { -- colorModel = NULL; -- } -- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier2",NULL)) != NULL) { -- cupsICCQualifier2 = attr->value; -- } else { -- cupsICCQualifier2 = "MediaType"; -- } -- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier2)) != NULL) { -- cupsICCQualifier2Choice = choice->choice; -- } else { -- cupsICCQualifier2Choice = NULL; -- } -- if ((attr = ppdFindAttr(ppd,"cupsICCQualifier3",NULL)) != NULL) { -- cupsICCQualifier3 = attr->value; -- } else { -- cupsICCQualifier3 = "Resolution"; -- } -- if ((choice = ppdFindMarkedChoice(ppd,cupsICCQualifier3)) != NULL) { -- cupsICCQualifier3Choice = choice->choice; -- } else { -- cupsICCQualifier3Choice = NULL; -- } -- -- for (attr = ppdFindAttr(ppd,"cupsICCProfile",NULL);attr != NULL; -- attr = ppdFindNextAttr(ppd,"cupsICCProfile",NULL)) { -- // check color model -- char buf[PPD_MAX_NAME]; -- char *p, *r; -- char *datadir; -- -- strncpy(buf,attr->spec,sizeof(buf)); -- if ((p = strchr(buf,'.')) != NULL) { -- *p = '\0'; -- } -- if (colorModel != NULL && buf[0] != '\0' -- && strcasecmp(buf,colorModel) != 0) continue; -- if (p == NULL) { -- break; -- } else { -- p++; -- if ((r = strchr(p,'.')) != 0) { -- *r = '\0'; -- } -- } -- if (cupsICCQualifier2Choice != NULL && p[0] != '\0' -- && strcasecmp(p,cupsICCQualifier2Choice) != 0) continue; -- if (r == NULL) { -- break; -- } else { -- r++; -- if ((p = strchr(r,'.')) != 0) { -- *p = '\0'; -- } -- } -- if (cupsICCQualifier3Choice == NULL || r[0] == '\0' -- || strcasecmp(r,cupsICCQualifier3Choice) == 0) break; -- } -- if (attr != NULL) { -- // matched -- path->clear(); -- if (attr->value[0] != '/') { -- if ((datadir = getenv("CUPS_DATADIR")) == NULL) -- datadir = CUPS_DATADIR; -- path->append(datadir); -- path->append("/profiles/"); -- } -- path->append(attr->value); -- return true; -- } -- return false; --} --#endif - - static void handleRqeuiresPageRegion() { - ppd_choice_t *mf; -@@ -448,14 +332,13 @@ static void parseOpts(int argc, char **argv) - { - int num_options = 0; - cups_option_t *options = 0; -- GooString profilePath; - char *profile = 0; - const char *t = NULL; - ppd_attr_t *attr; - - if (argc < 6 || argc > 7) { -- pdfError(-1,const_cast<char *>("%s job-id user title copies options [file]"), -- argv[0]); -+ fprintf(stderr, "ERROR: Usage: %s job-id user title copies options [file]\n", -+ argv[0]); - exit(1); - } - -@@ -464,7 +347,7 @@ static void parseOpts(int argc, char **argv) - if (t && strcasestr(t, "pwg")) - pwgraster = 1; - #endif /* HAVE_CUPS_1_7 */ -- -+ - ppd = ppdOpenFile(getenv("PPD")); - if (ppd == NULL) - fprintf(stderr, "DEBUG: PPD file is not specified.\n"); -@@ -542,10 +425,10 @@ static void parseOpts(int argc, char **argv) - - if (cm_calibrate == CM_CALIBRATION_ENABLED) - cm_disabled = 1; -- else -+ else - cm_disabled = cmIsPrinterCmDisabled(getenv("PRINTER")); -- -- if (!cm_disabled) -+ -+ if (!cm_disabled) - cmGetPrinterIccProfile(getenv("PRINTER"), &profile, ppd); - - if (profile != NULL) { -@@ -573,7 +456,7 @@ static void parseOpts(int argc, char **argv) - if (strcasestr(t, "pwg")) - pwgraster = 1; - else -- pwgraster = 0; -+ pwgraster = 0; - } - cupsRasterParseIPPOptions(&header,num_options,options,pwgraster,1); - #else -@@ -1399,7 +1282,7 @@ static unsigned int getCMSColorSpaceType(cmsColorSpaceSignature cs) - /* select convertLine function */ - static void selectConvertFunc(cups_raster_t *raster) - { -- if ((colorProfile == NULL || popplerColorProfile == colorProfile) -+ if ((colorProfile == NULL || popplerColorProfile == colorProfile) - && (header.cupsColorOrder == CUPS_ORDER_CHUNKED - || header.cupsNumColors == 1)) { - if (selectSpecialCase()) return; -@@ -1477,7 +1360,7 @@ static void selectConvertFunc(cups_raster_t *raster) - COLORSPACE_SH(dcst) | - CHANNELS_SH(header.cupsNumColors) | BYTES_SH(bytes), - renderingIntent,0)) == 0) { -- pdfError(-1,const_cast<char *>("Can't create color transform")); -+ fprintf(stderr, "ERROR: Can't create color transform"); - exit(1); - } - } else { -@@ -1548,7 +1431,7 @@ static void selectConvertFunc(cups_raster_t *raster) - convertCSpace = W8toK8; - break; - default: -- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); -+ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n" ); - exit(1); - break; - } -@@ -1623,13 +1506,105 @@ static void selectConvertFunc(cups_raster_t *raster) - } - } - --static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, -+static unsigned char *onebitpixel(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height){ -+ unsigned char *temp; -+ temp=dst; -+ int cnt=0; -+ for(unsigned int i=0;i<height;i++){ -+ for(unsigned int j=0;j<width;j+=8){ -+ unsigned char tem=0; -+ for(int k=0;k<8;k++){ -+ cnt++; -+ tem <<=1; -+ unsigned int var=*src; -+ if(var > dither1[i & 0xf][(j+k) & 0xf]){ -+ tem |= 0x1; -+ } -+ src +=1; -+ } -+ *dst=tem; -+ dst+=1; -+ } -+ } -+ return temp; -+} -+ -+ -+static unsigned char *removeAlpha(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height){ -+ unsigned char *temp; -+ temp=dst; -+ for(unsigned int i=0;i<height;i++){ -+ for(unsigned int j=0;j<width;j++){ -+ dst[0]=src[2]; -+ dst[1]=src[1]; -+ dst[2]=src[0]; -+ src+=4; -+ dst+=3; -+ } -+ } -+ return temp; -+} -+ -+static void writePageImage(cups_raster_t *raster, poppler::document *doc, - int pageNo) - { - ConvertLineFunc convertLine; - unsigned char *lineBuf = NULL; - unsigned char *dp; -- unsigned int rowsize = bitmap->getRowSize(); -+ unsigned int rowsize; -+ -+ poppler::page *current_page =doc->create_page(pageNo-1); -+ poppler::page_renderer pr; -+ pr.set_render_hint(poppler::page_renderer::antialiasing, true); -+ pr.set_render_hint(poppler::page_renderer::text_antialiasing, true); -+ -+ unsigned char *colordata,*newdata,*graydata,*onebitdata; -+ unsigned int pixel_count; -+ poppler::image im; -+ //render the page according to the colourspace and generate the requried data -+ switch (header.cupsColorSpace) { -+ case CUPS_CSPACE_W://gray -+ case CUPS_CSPACE_K://black -+ case CUPS_CSPACE_SW://sgray -+ if(header.cupsBitsPerColor==1){ //special case for 1-bit colorspaces -+ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],bytesPerLine*8,header.cupsHeight); -+ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); -+ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); -+ graydata=(unsigned char *)malloc(sizeof(char)*im.width()*im.height()); -+ cupsImageRGBToWhite(newdata,graydata,im.width()*im.height()); -+ onebitdata=(unsigned char *)malloc(sizeof(char)*bytesPerLine*im.height()); -+ onebitpixel(graydata,onebitdata,im.width(),im.height()); -+ colordata=onebitdata; -+ rowsize=bytesPerLine; -+ } -+ else{ -+ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],header.cupsWidth,header.cupsHeight); -+ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); -+ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); -+ pixel_count=im.width()*im.height(); -+ graydata=(unsigned char *)malloc(sizeof(char)*im.width()*im.height()); -+ cupsImageRGBToWhite(newdata,graydata,pixel_count); -+ colordata=graydata; -+ rowsize=header.cupsWidth; -+ } -+ -+ break; -+ case CUPS_CSPACE_RGB: -+ case CUPS_CSPACE_ADOBERGB: -+ case CUPS_CSPACE_CMYK: -+ case CUPS_CSPACE_SRGB: -+ case CUPS_CSPACE_CMY: -+ case CUPS_CSPACE_RGBW: -+ default: -+ im = pr.render_page(current_page,header.HWResolution[0],header.HWResolution[1],bitmapoffset[0],bitmapoffset[1],header.cupsWidth,header.cupsHeight); -+ newdata = (unsigned char *)malloc(sizeof(char)*3*im.width()*im.height()); -+ newdata = removeAlpha((unsigned char *)im.const_data(),newdata,im.width(),im.height()); -+ pixel_count=im.width()*im.height(); -+ rowsize=header.cupsWidth*3; -+ colordata=newdata; -+ break; -+ } -+ - - if (allocLineBuf) lineBuf = new unsigned char [bytesPerLine]; - if ((pageNo & 1) == 0) { -@@ -1639,13 +1614,11 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, - } - if (header.Duplex && (pageNo & 1) == 0 && swap_image_y) { - for (unsigned int plane = 0;plane < nplanes;plane++) { -- unsigned char *bp = (unsigned char *)(bitmap->getDataPtr()); -+ unsigned char *bp = colordata + (header.cupsHeight - 1) * rowsize; - -- bp += rowsize * (bitmapoffset[1] + header.cupsHeight - 1) + -- popplerBitsPerPixel * bitmapoffset[0] / 8; - for (unsigned int h = header.cupsHeight;h > 0;h--) { - for (unsigned int band = 0;band < nbands;band++) { -- dp = convertLine(bp,lineBuf,h,plane+band,header.cupsWidth, -+ dp = convertLine(bp,lineBuf,h - 1,plane+band,header.cupsWidth, - bytesPerLine); - cupsRasterWritePixels(raster,dp,bytesPerLine); - } -@@ -1654,10 +1627,8 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, - } - } else { - for (unsigned int plane = 0;plane < nplanes;plane++) { -- unsigned char *bp = (unsigned char *)(bitmap->getDataPtr()); -+ unsigned char *bp = colordata; - -- bp += rowsize * bitmapoffset[1] + -- popplerBitsPerPixel * bitmapoffset[0] / 8; - for (unsigned int h = 0;h < header.cupsHeight;h++) { - for (unsigned int band = 0;band < nbands;band++) { - dp = convertLine(bp,lineBuf,h,plane+band,header.cupsWidth, -@@ -1671,29 +1642,39 @@ static void writePageImage(cups_raster_t *raster, SplashBitmap *bitmap, - if (allocLineBuf) delete[] lineBuf; - } - --static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, -- SplashOutputDev *out, cups_raster_t *raster) -+static void outPage(poppler::document *doc, int pageNo, -+ cups_raster_t *raster) - { -- SplashBitmap *bitmap; -- Page *page = catalog->getPage(pageNo); -- PDFRectangle mediaBox = *page->getMediaBox(); -- int rotate = page->getRotate(); -+ int rotate = 0; - double paperdimensions[2], /* Physical size of the paper */ - margins[4]; /* Physical margins of print */ - ppd_size_t *size; /* Page size */ - double l, swap; -+ int imageable_area_fit = 0; - int i; -- bool landscape = 0; - -+ poppler::page *current_page =doc->create_page(pageNo-1); -+ poppler::page_box_enum box = poppler::page_box_enum::media_box; -+ poppler::rectf mediaBox = current_page->page_rect(box); -+ poppler::page::orientation_enum orient = current_page->orientation(); -+ switch (orient) { -+ case poppler::page::landscape: rotate=90; -+ break; -+ case poppler::page::upside_down: rotate=180; -+ break; -+ case poppler::page::seascape: rotate=270; -+ break; -+ default:rotate=0; -+ } - fprintf(stderr, "DEBUG: mediaBox = [ %f %f %f %f ]; rotate = %d\n", -- mediaBox.x1, mediaBox.y1, mediaBox.x2, mediaBox.y2, rotate); -- l = mediaBox.x2 - mediaBox.x1; -+ mediaBox.left(), mediaBox.top(), mediaBox.right(), mediaBox.bottom(), rotate); -+ l = mediaBox.width(); - if (l < 0) l = -l; - if (rotate == 90 || rotate == 270) - header.PageSize[1] = (unsigned)l; - else - header.PageSize[0] = (unsigned)l; -- l = mediaBox.y2 - mediaBox.y1; -+ l = mediaBox.height(); - if (l < 0) l = -l; - if (rotate == 90 || rotate == 270) - header.PageSize[0] = (unsigned)l; -@@ -1703,22 +1684,37 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, - memset(paperdimensions, 0, sizeof(paperdimensions)); - memset(margins, 0, sizeof(margins)); - if (ppd) { -+ imageable_area_fit = 0; - for (i = ppd->num_sizes, size = ppd->sizes; - i > 0; - i --, size ++) { - /* Skip page sizes which conflict with settings of the other options */ - /* TODO XXX */ - /* Find size of document's page under the PPD page sizes */ -- if (fabs(header.PageSize[1] - size->length) < 5.0 && -- fabs(header.PageSize[0] - size->width) < 5.0) -+ if (fabs(header.PageSize[1] - size->length) / size->length < 0.01 && -+ fabs(header.PageSize[0] - size->width) / size->width < 0.01) - break; - } -+ if (i == 0) { -+ /* Input page size does not fit any of the PPD's sizes, try to fit -+ the input page size into the imageable areas of the PPD's sizes */ -+ for (i = ppd->num_sizes, size = ppd->sizes; -+ i > 0; -+ i --, size ++) -+ if (fabs(header.PageSize[1] - size->top + size->bottom) / -+ size->length < 0.01 && -+ fabs(header.PageSize[0] - size->right + size->left) / -+ size->width < 0.01) { -+ fprintf(stderr, "DEBUG: Imageable area fit\n"); -+ imageable_area_fit = 1; -+ break; -+ } -+ } - if (i > 0) { - /* - * Standard size... - */ - fprintf(stderr, "DEBUG: size = %s\n", size->name); -- landscape = 0; - paperdimensions[0] = size->width; - paperdimensions[1] = size->length; - if (pwgraster == 0) { -@@ -1734,19 +1730,33 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, - * landscape orientation... - */ - -+ imageable_area_fit = 0; - for (i = ppd->num_sizes, size = ppd->sizes; - i > 0; - i --, size ++) -- if (fabs(header.PageSize[0] - size->length) < 5.0 && -- fabs(header.PageSize[1] - size->width) < 5.0) -+ if (fabs(header.PageSize[0] - size->length) / size->length < 0.01 && -+ fabs(header.PageSize[1] - size->width) / size->width < 0.01) - break; -- -+ if (i == 0) { -+ /* Input page size does not fit any of the PPD's sizes, try to fit -+ the input page size into the imageable areas of the PPD's sizes */ -+ for (i = ppd->num_sizes, size = ppd->sizes; -+ i > 0; -+ i --, size ++) -+ if (fabs(header.PageSize[0] - size->top + size->bottom) / -+ size->length < 0.01 && -+ fabs(header.PageSize[1] - size->right + size->left) / -+ size->width < 0.01) { -+ fprintf(stderr, "DEBUG: Imageable area fit\n"); -+ imageable_area_fit = 1; -+ break; -+ } -+ } - if (i > 0) { - /* - * Standard size in landscape orientation... - */ - fprintf(stderr, "DEBUG: landscape size = %s\n", size->name); -- landscape = 1; - paperdimensions[0] = size->width; - paperdimensions[1] = size->length; - if (pwgraster == 0) { -@@ -1761,14 +1771,15 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, - * Custom size... - */ - fprintf(stderr, "DEBUG: size = Custom\n"); -- landscape = 0; - paperdimensions[1] = size->length; - for (i = 0; i < 2; i ++) - paperdimensions[i] = header.PageSize[i]; - if (pwgraster == 0) - for (i = 0; i < 4; i ++) - margins[i] = ppd->custom_margins[i]; -- header.cupsPageSizeName[0] = '\0'; -+ snprintf(header.cupsPageSizeName, 64, -+ "Custom.%dx%d", -+ header.PageSize[0], header.PageSize[1]); - } - } - } else { -@@ -1802,12 +1813,14 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, - } - } - -- doc->displayPage(out,pageNo,header.HWResolution[0], -- header.HWResolution[1],(landscape == 0 ? 0 : 90), -- true,true,true); -- bitmap = out->getBitmap(); -- bitmapoffset[0] = margins[0] / 72.0 * header.HWResolution[0]; -- bitmapoffset[1] = margins[3] / 72.0 * header.HWResolution[1]; -+ -+ if (imageable_area_fit == 0) { -+ bitmapoffset[0] = margins[0] / 72.0 * header.HWResolution[0]; -+ bitmapoffset[1] = margins[3] / 72.0 * header.HWResolution[1]; -+ } else { -+ bitmapoffset[0] = 0; -+ bitmapoffset[1] = 0; -+ } - - /* write page header */ - if (pwgraster == 0) { -@@ -1849,12 +1862,12 @@ static void outPage(PDFDoc *doc, Catalog *catalog, int pageNo, - header.cupsBytesPerLine *= header.cupsNumColors; - } - if (!cupsRasterWriteHeader2(raster,&header)) { -- pdfError(-1,const_cast<char *>("Can't write page %d header"),pageNo); -+ fprintf(stderr, "ERROR: Can't write page %d header\n",pageNo ); - exit(1); - } - - /* write page image */ -- writePageImage(raster,bitmap,pageNo); -+ writePageImage(raster,doc,pageNo); - } - - static void setPopplerColorProfile() -@@ -1936,29 +1949,19 @@ static void setPopplerColorProfile() - popplerColorProfile = NULL; - break; - default: -- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); -+ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n" ); - exit(1); - break; - } -- if (popplerColorProfile != NULL) { -- GfxColorSpace::setDisplayProfile(popplerColorProfile); -- } - } - - int main(int argc, char *argv[]) { -- PDFDoc *doc; -- SplashOutputDev *out; -- SplashColor paperColor; -+ poppler::document *doc; - int i; -- int npages; -+ int npages=0; - cups_raster_t *raster; -- enum SplashColorMode cmode; -- int rowpad; -- Catalog *catalog; - -- setErrorCallback(::myErrorFun,NULL); - cmsSetLogErrorHandler(lcmsErrorHandler); -- globalParams = new GlobalParams(); - parseOpts(argc, argv); - - if (argc == 6) { -@@ -1970,43 +1973,37 @@ int main(int argc, char *argv[]) { - - fd = cupsTempFd(name,sizeof(name)); - if (fd < 0) { -- pdfError(-1,const_cast<char *>("Can't create temporary file")); -+ fprintf(stderr, "ERROR: Can't create temporary file\n"); - exit(1); - } - - /* copy stdin to the tmp file */ - while ((n = read(0,buf,BUFSIZ)) > 0) { - if (write(fd,buf,n) != n) { -- pdfError(-1,const_cast<char *>("Can't copy stdin to temporary file")); -+ fprintf(stderr, "ERROR: Can't copy stdin to temporary file\n" ); - close(fd); - exit(1); - } - } - close(fd); -- doc = new PDFDoc(new GooString(name)); -+ doc=poppler::document::load_from_file(name,"",""); - /* remove name */ - unlink(name); - } else { -- GooString *fileName = new GooString(argv[6]); - /* argc == 7 filenmae is specified */ - FILE *fp; - - if ((fp = fopen(argv[6],"rb")) == 0) { -- pdfError(-1,const_cast<char *>("Can't open input file %s"),argv[6]); -+ fprintf(stderr, "ERROR: Can't open input file %s\n",argv[6]); - exit(1); - } - parsePDFTOPDFComment(fp); - fclose(fp); -- doc = new PDFDoc(fileName,NULL,NULL); -+ doc=poppler::document::load_from_file(argv[6],"",""); - } - -- if (!doc->isOk()) { -- exitCode = 1; -- goto err1; -- } -- -- catalog = doc->getCatalog(); -- npages = doc->getNumPages(); -+ if(doc != NULL) -+ npages = doc->pages(); - - /* fix NumCopies, Collate ccording to PDFTOPDFComments */ - header.NumCopies = deviceCopies; -@@ -2020,7 +2017,7 @@ int main(int argc, char *argv[]) { - && header.cupsBitsPerColor != 4 - && header.cupsBitsPerColor != 8 - && header.cupsBitsPerColor != 16) { -- pdfError(-1,const_cast<char *>("Specified color format is not supported")); -+ fprintf(stderr, "ERROR: Specified color format is not supported\n"); - exit(1); - } - if (header.cupsColorOrder == CUPS_ORDER_PLANAR) { -@@ -2055,7 +2052,7 @@ int main(int argc, char *argv[]) { - if (header.cupsColorOrder != CUPS_ORDER_CHUNKED - || (header.cupsBitsPerColor != 8 - && header.cupsBitsPerColor != 16)) { -- pdfError(-1,const_cast<char *>("Specified color format is not supported")); -+ fprintf(stderr, "ERROR: Specified color format is not supported\n"); - exit(1); - } - case CUPS_CSPACE_RGB: -@@ -2071,12 +2068,6 @@ int main(int argc, char *argv[]) { - case CUPS_CSPACE_RGBW: - case CUPS_CSPACE_GMCK: - case CUPS_CSPACE_GMCS: -- cmode = splashModeRGB8; -- rowpad = 4; -- /* set paper color white */ -- paperColor[0] = 255; -- paperColor[1] = 255; -- paperColor[2] = 255; - popplerBitsPerPixel = 24; - popplerNumColors = 3; - break; -@@ -2086,21 +2077,17 @@ int main(int argc, char *argv[]) { - case CUPS_CSPACE_WHITE: - case CUPS_CSPACE_GOLD: - case CUPS_CSPACE_SILVER: -- if (header.cupsBitsPerColor == 1 -+ if (header.cupsBitsPerColor == 1 - && header.cupsBitsPerPixel == 1) { -- cmode = splashModeMono1; - popplerBitsPerPixel = 1; - } else { -- cmode = splashModeMono8; - popplerBitsPerPixel = 8; - } - /* set paper color white */ -- paperColor[0] = 255; -- rowpad = 1; - popplerNumColors = 1; - break; - default: -- pdfError(-1,const_cast<char *>("Specified ColorSpace is not supported")); -+ fprintf(stderr, "ERROR: Specified ColorSpace is not supported\n"); - exit(1); - break; - } -@@ -2109,27 +2096,21 @@ int main(int argc, char *argv[]) { - setPopplerColorProfile(); - } - -- out = new SplashOutputDev(cmode,rowpad/* row padding */, -- false,paperColor,true --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR <= 30 -- ,false --#endif -- ); -- out->startDoc(doc); -- - if ((raster = cupsRasterOpen(1, pwgraster ? CUPS_RASTER_WRITE_PWG : - CUPS_RASTER_WRITE)) == 0) { -- pdfError(-1,const_cast<char *>("Can't open raster stream")); -+ fprintf(stderr, "ERROR: Can't open raster stream\n"); - exit(1); - } - selectConvertFunc(raster); -- for (i = 1;i <= npages;i++) { -- outPage(doc,catalog,i,out,raster); -- } -+ if(doc != NULL){ -+ for (i = 1;i <= npages;i++) { -+ outPage(doc,i,raster); -+ } -+ } else -+ fprintf(stderr, "DEBUG: Input is empty, outputting empty file.\n"); -+ - cupsRasterClose(raster); - -- delete out; --err1: - delete doc; - if (ppd != NULL) { - ppdClose(ppd); -@@ -2144,12 +2125,6 @@ err1: - cmsDeleteTransform(colorTransform); - } - --#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69 -- // Check for memory leaks -- Object::memCheck(stderr); -- gMemReport(stderr); --#endif -- - return exitCode; - } - -@@ -2162,20 +2137,20 @@ err1: - - void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) - { -- return gmalloc(size); -+ return malloc(size); - } - - void operator delete(void *p) throw () - { -- gfree(p); -+ free(p); - } - - void * operator new[](size_t size) _GLIBCXX_THROW (std::bad_alloc) - { -- return gmalloc(size); -+ return malloc(size); - } - - void operator delete[](void *p) throw () - { -- gfree(p); -+ free(p); - } -diff --git a/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd b/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd -deleted file mode 100644 -index 798181b..0000000 ---- a/ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd -+++ /dev/null -@@ -1,342 +0,0 @@ --*PPD-Adobe: "4.3" --*% --*FormatVersion: "4.3" --*FileVersion: "1.1" --*LanguageVersion: English --*LanguageEncoding: ISOLatin1 --*PCFileName: "HPIJS.PPD" --*Manufacturer: "HP" --*Product: "(PhotoSmart Pro B8300)" --*cupsVersion: 1.0 --*cupsManualCopies: True --*cupsModelNumber: 2 --*cupsFilter: "application/vnd.cups-pdf 0 pdftoijs" --*ModelName: "HP PhotoSmart Pro B8300" --*ShortNickName: "HP PhotoSmart Pro B8300 hpijs" --*NickName: "HP PhotoSmart Pro B8300 CUPS/pdftoijs/hpijs" --*PSVersion: "(3010.000) 800" --*LanguageLevel: "3" --*ColorDevice: True --*DefaultColorSpace: RGB --*FileSystem: False --*Throughput: "1" --*LandscapeOrientation: Plus90 --*TTRasterizer: Type42 --*1284DeviceID: "DRV:Dhpijs,R1,M1,F1,Sv,TI,X1200,Y1200,C1,t90,l90,g100,p100,s70;" -- --*driverName hpijs/hpijs - HP's IJS driver for most of their non-PostScript printers: "" --*driverType I/IJS: "" --*driverUrl: "http://hplipopensource.com/" --*driverObsolete: False --*driverSupplier: "Hewlett-Packard" --*driverManufacturerSupplied: True --*driverLicense: "BSD" --*driverFreeSoftware: True --*driverSupportContactVoluntary: "https://launchpad.net/hplip HPLIP support and bug tracking system" --*driverMaxResolution: 1200 1200 --*driverColor: True --*driverTextSupport: 90 --*driverLineartSupport: 90 --*driverGraphicsSupport: 100 --*driverPhotoSupport: 100 --*driverRenderingSpeed: 70 -- --*DefaultResolution: 1200dpi -- -- -- --*HWMargins: 18 36 18 9 --*VariablePaperSize: True --*MaxMediaWidth: 100000 --*MaxMediaHeight: 100000 --*NonUIOrderDependency: 105 AnySetup *CustomPageSize --*CustomPageSize True: "" --*ParamCustomPageSize Width: 1 points 36 100000 --*ParamCustomPageSize Height: 2 points 36 100000 --*ParamCustomPageSize Orientation: 3 int 0 0 --*ParamCustomPageSize WidthOffset: 4 points 0 0 --*ParamCustomPageSize HeightOffset: 5 points 0 0 -- --*ijsServer: "hpijs" --*ijsManufacturer: "HP" --*ijsModel: "deskjet 5600" --*ijsColorSpace: "rgb" -- --*OpenGroup: General/General -- --*OpenUI *Quality/Resolution, Quality, Ink Type, Media Type: PickOne --*OrderDependency: 100 AnySetup *Quality --*DefaultQuality: 600ColorCMYK -- --*Quality 300ColorCMYK/300 dpi, Color, Black + Color Cartr.: "" --*ijsParams Quality=300ColorCMYK: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=300ColorCMYK: "300 300" -- --*Quality 300ColorCMYKFullBleed/300 dpi, Color, Full Bleed, Black + Color Cartr.: "" --*ijsParams Quality=300ColorCMYKFullbleed: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2,Quality:FullBleed=1" --*ijsResolution Quality=300ColorCMYKFullbleed: "300 300" -- --*Quality 300DraftColorCMYK/300 dpi, Draft, Color, Black + Color Cartr.: "" --*ijsParams Quality=300DraftColorCMYK: "Quality:Quality=1,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=300DraftColorCMYK: "300 300" -- --*Quality 300DraftGrayscaleCMYK/300 dpi, Draft, Grayscale, Black + Color Cartr.: "" --*ijsParams Quality=300DraftGrayscaleCMYK: "Quality:Quality=1,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=300DraftGrayscaleCMYK: "300 300" -- --*Quality 300FastDraftColorCMYK/300 dpi, FastDraft, Color, Black + Color Cartr.: "" --*ijsParams Quality=300FastDraftColorCMYK: "Quality:Quality=4,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution 300FastDraftColorCMYK: "300 300" -- --*Quality 300FastDraftGrayscaleCMYK/300 dpi, FastDraft, Grayscale, Black + Color Cartr.: "" --*ijsParams Quality=300FastDraftGrayscaleCMYK: "Quality:Quality=4,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=300FastDraftGrayscaleCMYK: "300 300" -- --*Quality 300GrayscaleCMYK/300 dpi, Grayscale, Black + Color Cartr.: "" --*ijsParams Quality=300GrayscaleCMYK: "Quality:Quality=0,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=300GrayscaleCMYK: "300 300" -- --*Quality 600ColorCMYK/600 dpi, Color, Black + Color Cartr.: "" --*ijsParams Quality=600ColorCMYK: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=600ColorCMYK: "600 600" -- --*Quality 600ColorCMYKFullBleed/600 dpi, Color, Full Bleed, Black + Color Cartr.: "" --*ijsParams Quality=600ColorCMYKFullbleed: "Quality:Quality=0,Quality:ColorMode=2,Quality:MediaType=0,Quality:PenSet=2,Quality:FullBleed=1" --*ijsResolution Quality=600ColorCMYKFullbleed: "600 600" -- --*Quality 600GrayscaleCMYK/600 dpi, Grayscale, Black + Color Cartr.: "" --*ijsParams Quality=600GrayscaleCMYK: "Quality:Quality=0,Quality:ColorMode=0,Quality:MediaType=0,Quality:PenSet=2" --*ijsResolution Quality=600GrayscaleCMYK: "600 600" -- --*Quality 1200PhotoCMYK/1200 dpi, Photo, Black + Color Cartr., Photo Paper: "" --*ijsParams Quality=1200PhotoCMYK: "Quality:Quality=3,Quality:ColorMode=2,Quality:MediaType=2,Quality:PenSet=2" --*ijsResolution Quality=1200PhotoCMYK: "1200 1200" -- --*Quality 1200PhotoCMYKFullBleed/1200 dpi, Photo, Full Bleed, Black + Color Cartr., Photo Paper: "" --*ijsParams Quality=1200PhotoCMYKFullBleed: "Quality:Quality=3,Quality:ColorMode=2,Quality:MediaType=3,Quality:PenSet=2,Quality:FullBleed=1" --*ijsResolution Quality=1200PhotoCMYKFullBleed: "1200 1200" -- --*CloseUI: *Quality -- --*OpenUI *InputSlot/Media Source: PickOne --*OrderDependency: 100 AnySetup *InputSlot --*DefaultInputSlot: Default -- --*InputSlot Default/Printer default: "" --*ijsParams InputSlot=Default: "PS:MediaPosition=7" -- --*InputSlot PhotoTray/Photo Tray: "" --*ijsParams InputSlot=PhotoTray: "PS:MediaPosition=6" -- --*InputSlot Upper/Upper Tray: "" --*ijsParams InputSlot=Upper: "PS:MediaPosition=1" -- --*InputSlot Lower/Lower Tray: "" --*ijsParams InputSlot=Lower: "PS:MediaPosition=4" -- --*InputSlot CDDVDTray/CD or DVD Tray: "" --*ijsParams InputSlot=CDDVDTray: "PS:MediaPosition=14" -- --*InputSlot Envelope/Envelope Feeder: "" --*ijsParams InputSlot=Envelope: "PS:MediaPosition=3" -- --*InputSlot LargeCapacity/Large Capacity Tray: "" --*ijsParams InputSlot=LargeCapacity: "PS:MediaPosition=5" -- --*InputSlot Manual/Manual Feeder: "" --*ijsParams InputSlot=Manual: "PS:MediaPosition=2" -- --*InputSlot MPTray/Multi Purpose Tray: "" --*ijsParams InputSlot=MPTray: "PS:MediaPosition=8" -- --*CloseUI: *InputSlot -- --*OpenUI *PageSize/Page Size: PickOne --*OrderDependency: 105 AnySetup *PageSize --*DefaultPageSize: Letter --*PageSize Letter/Letter: "" --*PageSize A4/A4: "" --*PageSize Photo/Photo or 4x6 inch index card: "" --*PageSize Photo5x7/Photo or 5x7 inch index card: "" --*PageSize PhotoTearOff/Photo with tear-off tab: "" --*PageSize 3x5/3x5 inch index card: "" --*PageSize 5x8/5x8 inch index card: "" --*PageSize A3/A3: "" --*PageSize A5/A5: "" --*PageSize A6/A6: "" --*PageSize A6TearOff/A6 with tear-off tab: "" --*PageSize B4JIS/B4 (JIS): "" --*PageSize B5JIS/B5 (JIS): "" --*PageSize CDDVD80/CD or DVD 80 mm: "" --*PageSize CDDVD120/CD or DVD 120 mm: "" --*PageSize Env10/Envelope #10: "" --*PageSize EnvC5/Envelope C5: "" --*PageSize EnvC6/Envelope C6: "" --*PageSize EnvDL/Envelope DL: "" --*PageSize EnvISOB5/Envelope B5: "" --*PageSize EnvMonarch/Envelope Monarch: "" --*PageSize Executive/Executive: "" --*PageSize FLSA/American Foolscap: "" --*PageSize Hagaki/Hagaki: "" --*PageSize Ledger/Ledger: "" --*PageSize Legal/Legal: "" --*PageSize Oufuku/Oufuku-Hagaki: "" --*PageSize SuperB/Super B: "" --*PageSize w558h774/16K: "" --*PageSize w612h935/Executive (JIS): "" --*PageSize w774h1116/8K: "" --*CloseUI: *PageSize -- --*OpenUI *PageRegion: PickOne --*OrderDependency: 105 AnySetup *PageRegion --*DefaultPageRegion: Letter --*PageRegion Letter/Letter: "" --*PageRegion A4/A4: "" --*PageRegion Photo/Photo or 4x6 inch index card: "" --*PageRegion Photo5x7/Photo or 5x7 inch index card: "" --*PageRegion PhotoTearOff/Photo with tear-off tab: "" --*PageRegion 3x5/3x5 inch index card: "" --*PageRegion 5x8/5x8 inch index card: "" --*PageRegion A3/A3: "" --*PageRegion A5/A5: "" --*PageRegion A6/A6: "" --*PageRegion A6TearOff/A6 with tear-off tab: "" --*PageRegion B4JIS/B4 (JIS): "" --*PageRegion B5JIS/B5 (JIS): "" --*PageRegion CDDVD80/CD or DVD 80 mm: "" --*PageRegion CDDVD120/CD or DVD 120 mm: "" --*PageRegion Env10/Envelope #10: "" --*PageRegion EnvC5/Envelope C5: "" --*PageRegion EnvC6/Envelope C6: "" --*PageRegion EnvDL/Envelope DL: "" --*PageRegion EnvISOB5/Envelope B5: "" --*PageRegion EnvMonarch/Envelope Monarch: "" --*PageRegion Executive/Executive: "" --*PageRegion FLSA/American Foolscap: "" --*PageRegion Hagaki/Hagaki: "" --*PageRegion Ledger/Ledger: "" --*PageRegion Legal/Legal: "" --*PageRegion Oufuku/Oufuku-Hagaki: "" --*PageRegion SuperB/Super B: "" --*PageRegion w558h774/16K: "" --*PageRegion w612h935/Executive (JIS): "" --*PageRegion w774h1116/8K: "" --*CloseUI: *PageRegion -- --*DefaultImageableArea: Letter --*ImageableArea Letter/Letter: "18 36 594 783" --*ImageableArea A4/A4: "9.72 36 585.28 833" --*ImageableArea Photo/Photo or 4x6 inch index card: "0 36 288 432" --*ImageableArea Photo5x7/Photo or 5x7 inch index card: "0 36 360 504" --*ImageableArea PhotoTearOff/Photo with tear-off tab: "0 0 288 432" --*ImageableArea 3x5/3x5 inch index card: "0 36 216 360" --*ImageableArea 5x8/5x8 inch index card: "0 36 360 576" --*ImageableArea A3/A3: "14.40 36.00 827.60 1181" --*ImageableArea A5/A5: "9 36 411 586" --*ImageableArea A6/A6: "0 36 297 420" --*ImageableArea A6TearOff/A6 with tear-off tab: "0 0 297 420" --*ImageableArea B4JIS/B4 (JIS): "18 36 711 1024" --*ImageableArea B5JIS/B5 (JIS): "18 36 498 720" --*ImageableArea CDDVD80/CD or DVD 80 mm: "0 36 237 237" --*ImageableArea CDDVD120/CD or DVD 120 mm: "0 36 360 360" --*ImageableArea Env10/Envelope #10: "0 36 297 684" --*ImageableArea EnvC5/Envelope C5: "18 36 441 640" --*ImageableArea EnvC6/Envelope C6: "0 36 323 459" --*ImageableArea EnvDL/Envelope DL: "0 36 312 624" --*ImageableArea EnvISOB5/Envelope B5: "18 36 481 700" --*ImageableArea EnvMonarch/Envelope Monarch: "0 36 279 540" --*ImageableArea Executive/Executive: "18 36 504 747" --*ImageableArea FLSA/American Foolscap: "18 36 594 927" --*ImageableArea Hagaki/Hagaki: "0 36 283 420" --*ImageableArea Ledger/Ledger: "14.40 36 777.60 1215" --*ImageableArea Legal/Legal: "18 36 594 999" --*ImageableArea Oufuku/Oufuku-Hagaki: "0 36 420 567" --*ImageableArea SuperB/Super B: "14.40 36 921.60 1359" --*ImageableArea w558h774/16K: "18 36 540 765" --*ImageableArea w612h935/Executive (JIS): "18 36 594 926" --*ImageableArea w774h1116/8K: "18 36 756 1107" -- --*DefaultPaperDimension: Letter --*PaperDimension Letter/Letter: "612 792" --*PaperDimension A4/A4: "595 842" --*PaperDimension Photo/Photo or 4x6 inch index card: "288 432" --*PaperDimension Photo5x7/Photo or 5x7 inch index card: "360 504" --*PaperDimension PhotoTearOff/Photo with tear-off tab: "288 432" --*PaperDimension 3x5/3x5 inch index card: "216 360" --*PaperDimension 5x8/5x8 inch index card: "360 576" --*PaperDimension A3/A3: "842 1190" --*PaperDimension A5/A5: "420 595" --*PaperDimension A6/A6: "297 420" --*PaperDimension A6TearOff/A6 with tear-off tab: "297 420" --*PaperDimension B4JIS/B4 (JIS): "729 1033" --*PaperDimension B5JIS/B5 (JIS): "516 729" --*PaperDimension CDDVD80/CD or DVD 80 mm: "237 237" --*PaperDimension CDDVD120/CD or DVD 120 mm: "360 360" --*PaperDimension Env10/Envelope #10: "297 684" --*PaperDimension EnvC5/Envelope C5: "459 649" --*PaperDimension EnvC6/Envelope C6: "323 459" --*PaperDimension EnvDL/Envelope DL: "312 624" --*PaperDimension EnvISOB5/Envelope B5: "499 709" --*PaperDimension EnvMonarch/Envelope Monarch: "279 540" --*PaperDimension Executive/Executive: "522 756" --*PaperDimension FLSA/American Foolscap: "612 936" --*PaperDimension Hagaki/Hagaki: "283 420" --*PaperDimension Ledger/Ledger: "792 1224" --*PaperDimension Legal/Legal: "612 1008" --*PaperDimension Oufuku/Oufuku-Hagaki: "420 567" --*PaperDimension SuperB/Super B: "936 1368" --*PaperDimension w558h774/16K: "558 774" --*PaperDimension w612h935/Executive (JIS): "612 935" --*PaperDimension w774h1116/8K: "774 1116" -- --*OpenUI *Duplex/Double-Sided Printing: PickOne --*FoomaticRIPOption Duplex: enum CmdLine A --*OrderDependency: 120 AnySetup *Duplex --*DefaultDuplex: None --*Duplex DuplexNoTumble/Long Edge (Standard): "" --*Duplex DuplexTumble/Short Edge (Flip): "" --*Duplex None/Off: "" --*CloseUI: *Duplex -- --*CloseGroup: General -- -- --*% Generic boilerplate PPD stuff as standard PostScript fonts and so on -- --*DefaultFont: Courier --*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM --*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM --*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM --*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM --*Font Bookman-Demi: Standard "(001.004S)" Standard ROM --*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM --*Font Bookman-Light: Standard "(001.004S)" Standard ROM --*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM --*Font Courier: Standard "(002.004S)" Standard ROM --*Font Courier-Bold: Standard "(002.004S)" Standard ROM --*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM --*Font Courier-Oblique: Standard "(002.004S)" Standard ROM --*Font Helvetica: Standard "(001.006S)" Standard ROM --*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM --*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM --*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM --*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM --*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM --*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM --*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM --*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM --*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM --*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM --*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM --*Font Palatino-Bold: Standard "(001.005S)" Standard ROM --*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM --*Font Palatino-Italic: Standard "(001.005S)" Standard ROM --*Font Palatino-Roman: Standard "(001.005S)" Standard ROM --*Font Symbol: Special "(001.007S)" Special ROM --*Font Times-Bold: Standard "(001.007S)" Standard ROM --*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM --*Font Times-Italic: Standard "(001.007S)" Standard ROM --*Font Times-Roman: Standard "(001.007S)" Standard ROM --*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM --*Font ZapfDingbats: Special "(001.004S)" Standard ROM -- diff --git a/cups-filters.spec b/cups-filters.spec index 4d198d6..dc80e52 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.0 -Release: 2%{?dist} +Version: 1.27.1 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -310,7 +310,10 @@ done %{_libdir}/libfontembed.so %changelog -* Tue Feb 17 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-2 +* Tue Feb 18 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.1-1 +- 1.27.1 + +* Tue Feb 18 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-2 - 1802969 - Service "cups-browsed" is crashing all the time * Tue Jan 28 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.0-1 diff --git a/sources b/sources index d36b49a..8992c86 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.0.tar.xz) = f49d9c3e558cd3ac7d5eb0bf323940e7bb3c088a24ef9232cde2cb84ddc0e262c77acd29eb97851ca4e3bd473d764e730480808f9c1d95b1dd6d406073614702 +SHA512 (cups-filters-1.27.1.tar.xz) = 3fde635735138fa5ef511466b07f396f96860efcc51d9a01f5b95e86fc71ef48b9d17ba1bbe2eeb29585c3afc8bf26370b8f07df76a3adea2335be90e3fdb91b From 39704fa7922c08adf6f6cb852971352cbb3813a0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 26 Feb 2020 15:10:53 +0100 Subject: [PATCH 083/197] 1806862 - foomatic-rip handles empty files in bad way --- cups-filters.spec | 7 +- foomatic-rip-fix-empty-output.patch | 193 ++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 foomatic-rip-fix-empty-output.patch diff --git a/cups-filters.spec b/cups-filters.spec index dc80e52..81e0c8c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.1 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -30,6 +30,7 @@ Patch02: cups-browsed.8.patch # crash on uninitialized string # reported upstream https://github.com/OpenPrinting/cups-filters/pull/204 Patch03: cups-filters-abrt.patch +Patch04: foomatic-rip-fix-empty-output.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -142,6 +143,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch02 -p1 -b .manpage # crash in cups-browsed %patch03 -p1 -b .abrt +%patch04 -p1 -b .empty-output %build # work-around Rpath @@ -310,6 +312,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Feb 25 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.1-2 +- 1806862 - foomatic-rip handles empty files in bad way + * Tue Feb 18 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.1-1 - 1.27.1 diff --git a/foomatic-rip-fix-empty-output.patch b/foomatic-rip-fix-empty-output.patch new file mode 100644 index 0000000..e9f67bc --- /dev/null +++ b/foomatic-rip-fix-empty-output.patch @@ -0,0 +1,193 @@ +diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c +index 73ef28c..fb1c253 100644 +--- a/filter/foomatic-rip/foomaticrip.c ++++ b/filter/foomatic-rip/foomaticrip.c +@@ -560,8 +560,10 @@ int print_file(const char *filename, int convert) + { + FILE *file; + char buf[8192]; ++ char tmpfilename[PATH_MAX]; + int type; + int startpos; ++ int pagecount; + size_t n; + int ret; + +@@ -603,7 +605,6 @@ int print_file(const char *filename, int convert) + char pdf2ps_cmd[CMDLINE_MAX]; + FILE *out, *in; + int renderer_pid; +- char tmpfilename[PATH_MAX] = ""; + + _log("Driver does not understand PDF input, " + "converting to PostScript\n"); +@@ -615,7 +616,7 @@ int print_file(const char *filename, int convert) + { + int fd; + FILE *tmpfile; +- ++ + snprintf(tmpfilename, PATH_MAX, "%s/foomatic-XXXXXX", temp_dir()); + fd = mkstemp(tmpfilename); + if (fd < 0) { +@@ -625,7 +626,7 @@ int print_file(const char *filename, int convert) + tmpfile = fdopen(fd, "r+"); + copy_file(tmpfile, stdin, buf, n); + fclose(tmpfile); +- ++ + filename = tmpfilename; + } + +@@ -668,6 +669,16 @@ int print_file(const char *filename, int convert) + "Couldn't dup stdout of pdf-to-ps\n"); + + clearerr(stdin); ++ pagecount = pdf_count_pages(filename); ++ _log("File contains %d pages.\n", pagecount); ++ if (pagecount < 0) { ++ _log("Unexpected page_count\n"); ++ return 0; ++ } ++ if (pagecount == 0) { ++ _log("No pages left, outputting empty file.\n"); ++ return 1; ++ } + ret = print_file("<STDIN>", 0); + + wait_for_process(renderer_pid); +@@ -687,7 +698,75 @@ int print_file(const char *filename, int convert) + case PS_FILE: + _log("Filetype: PostScript\n"); + if (file == stdin) +- return print_ps(stdin, buf, n, filename); ++ { ++ if (convert) ++ { ++ int fd; ++ FILE *tmpfile; ++ ++ snprintf(tmpfilename, PATH_MAX, "%s/foomatic-XXXXXX", temp_dir()); ++ fd = mkstemp(tmpfilename); ++ if (fd < 0) { ++ _log("Could not create temporary file: %s\n", strerror(errno)); ++ return EXIT_PRNERR_NORETRY_BAD_SETTINGS; ++ } ++ ++ /* Copy already read data to the tmp file */ ++ if (write(fd,buf,n) != n) { ++ _log("ERROR: Can't copy already read data to temporary file\n"); ++ close(fd); ++ } ++ /* Copy stdin to the tmp file */ ++ while ((n = read(0,buf,BUFSIZ)) > 0) { ++ if (write(fd,buf,n) != n) { ++ _log("ERROR: Can't copy stdin to temporary file\n"); ++ close(fd); ++ } ++ } ++ /* Rewind tmp file to read it again */ ++ if (lseek(fd,0,SEEK_SET) < 0) { ++ _log("ERROR: Can't rewind temporary file\n"); ++ close(fd); ++ } ++ ++ char gscommand[65536]; ++ char output[31] = ""; ++ int pagecount; ++ size_t bytes; ++ filename = strdup(tmpfilename); ++ snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox %s 2>&1 | grep -c HiResBoundingBox", ++ CUPS_GHOSTSCRIPT, filename); ++ FILE *pd = popen(gscommand, "r"); ++ bytes = fread(output, 1, 31, pd); ++ pclose(pd); ++ ++ if (bytes <= 0 || sscanf(output, "%d", &pagecount) < 1) ++ pagecount = -1; ++ ++ if (pagecount < 0) { ++ _log("Unexpected page_count\n"); ++ return 0; ++ } ++ ++ if (pagecount == 0) { ++ _log("No pages left, outputting empty file.\n"); ++ return 1; ++ } ++ ++ _log("File contains %d pages.\n", pagecount); ++ ++ if ((tmpfile = fdopen(fd,"rb")) == 0) { ++ _log("ERROR: Can't fdopen temporary file\n"); ++ close(fd); ++ } ++ ret = print_ps(tmpfile, NULL, 0, filename); ++ fclose(tmpfile); ++ unlink(tmpfilename); ++ return ret; ++ } ++ else ++ return print_ps(stdin, buf, n, filename); ++ } + else + return print_ps(file, NULL, 0, filename); + +diff --git a/filter/foomatic-rip/pdf.c b/filter/foomatic-rip/pdf.c +index 1631f96..7364a73 100644 +--- a/filter/foomatic-rip/pdf.c ++++ b/filter/foomatic-rip/pdf.c +@@ -39,7 +39,7 @@ + static int wait_for_renderer(); + + +-static int pdf_count_pages(const char *filename) ++int pdf_count_pages(const char *filename) + { + char gscommand[CMDLINE_MAX]; + char output[63] = ""; +diff --git a/filter/foomatic-rip/pdf.h b/filter/foomatic-rip/pdf.h +index c9472a0..07e2f32 100644 +--- a/filter/foomatic-rip/pdf.h ++++ b/filter/foomatic-rip/pdf.h +@@ -25,6 +25,7 @@ + #define pdf_h + + int print_pdf(FILE *s, const char *alreadyread, size_t len, const char *filename, size_t startpos); ++int pdf_count_pages(const char *filemame); + + #endif + +diff --git a/filter/foomatic-rip/postscript.c b/filter/foomatic-rip/postscript.c +index 8b6f0ad..f0ddf01 100644 +--- a/filter/foomatic-rip/postscript.c ++++ b/filter/foomatic-rip/postscript.c +@@ -322,7 +322,6 @@ void _print_ps(stream_t *stream) + pid_t rendererpid = 0; + FILE *rendererhandle = NULL; + +- int empty = 1; + int retval; + + dstr_t *tmp = create_dstr(); +@@ -1010,7 +1009,6 @@ void _print_ps(stream_t *stream) + /* No renderer running, start it */ + dstrcpy(tmp, psheader->data); + dstrcat(tmp, psfifo->data); +- empty = 0; + get_renderer_handle(tmp, &rendererhandle, &rendererpid); + /* psfifo is sent out, flush it */ + dstrclear(psfifo); +@@ -1075,12 +1073,6 @@ void _print_ps(stream_t *stream) + + } while ((maxlines == 0 || linect < maxlines) && more_stuff != 0); + +- if (empty) +- { +- _log("No pages left, outputting empty file.\n"); +- return; +- } +- + /* Some buffer still containing data? Send it out to the renderer */ + if (more_stuff || inheader || !isempty(psfifo->data)) { + /* Flush psfifo and send the remaining data to the renderer, this From 890dbaf30aa7b1ba1bcee8e8b17a278e5bbdadad Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 2 Mar 2020 15:40:37 +0100 Subject: [PATCH 084/197] 1.27.2 --- .gitignore | 1 + ...-test-suite-when-test-font-is-missin.patch | 121 +++++++++++ cups-filters-abrt.patch | 66 ------ cups-filters.spec | 24 +-- foomatic-rip-fix-empty-output.patch | 193 ------------------ sources | 2 +- 6 files changed, 134 insertions(+), 273 deletions(-) create mode 100644 0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch delete mode 100644 cups-filters-abrt.patch delete mode 100644 foomatic-rip-fix-empty-output.patch diff --git a/.gitignore b/.gitignore index d365a60..d7e0cb2 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,4 @@ /cups-filters-1.26.0.tar.xz /cups-filters-1.27.0.tar.xz /cups-filters-1.27.1.tar.xz +/cups-filters-1.27.2.tar.xz diff --git a/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch b/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch new file mode 100644 index 0000000..d6e9ed4 --- /dev/null +++ b/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch @@ -0,0 +1,121 @@ +From 1d66106e5ae45407b01459cb112ee09752166dba Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Mon, 2 Mar 2020 14:56:55 +0100 +Subject: [PATCH] Fix segfaults in test suite when test font is missing + +--- + configure.ac | 3 +++ + filter/test_pdf2.c | 8 +++++++- + fontembed/test_analyze.c | 9 ++++++++- + fontembed/test_pdf.c | 8 +++++++- + fontembed/test_ps.c | 8 +++++++- + 5 files changed, 32 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d5fe836c..7ffb6693 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -788,6 +788,9 @@ AC_ARG_WITH([test-font-path], + [with_test_font_path="$withval"], + [with_test_font_path="/usr/share/fonts/dejavu/DejaVuSans.ttf"] + ) ++AC_CHECK_FILE("$with_test_font_path", [], [ ++ AC_MSG_ERROR([Requested font file is missing. Please install a package providing it.]) ++]) + AC_DEFINE_UNQUOTED([TESTFONT], ["$with_test_font_path"], [Path to font used in tests]) + + # ================ +diff --git a/filter/test_pdf2.c b/filter/test_pdf2.c +index a0c1d8b0..3d58a59d 100644 +--- a/filter/test_pdf2.c ++++ b/filter/test_pdf2.c +@@ -41,12 +41,18 @@ int main() + + // font, pt.1 + const char *fn=TESTFONT; ++ OTF_FILE *otf=NULL; + /* + if (argc==2) { + fn=argv[1]; + } + */ +- OTF_FILE *otf=otf_load(fn); ++ otf=otf_load(fn); ++ if (!otf) ++ { ++ printf("Font %s was not loaded, exiting.\n", TESTFONT); ++ return 1; ++ } + assert(otf); + FONTFILE *ff=fontfile_open_sfnt(otf); + EMB_PARAMS *emb=emb_new(ff, +diff --git a/fontembed/test_analyze.c b/fontembed/test_analyze.c +index 3f42573d..967a7516 100644 +--- a/fontembed/test_analyze.c ++++ b/fontembed/test_analyze.c +@@ -183,10 +183,17 @@ void show_hmtx(OTF_FILE *otf) // {{{ + int main(int argc,char **argv) + { + const char *fn=TESTFONT; ++ OTF_FILE *otf=NULL; + if (argc==2) { + fn=argv[1]; + } +- OTF_FILE *otf=otf_load(fn); ++ otf=otf_load(fn); ++ if (!otf) ++ { ++ printf("Font %s was not loaded, exiting.\n", TESTFONT); ++ return 1; ++ } ++ + assert(otf); + if (otf->numTTC) { + printf("TTC has %d fonts, using %d\n",otf->numTTC,otf->useTTC); +diff --git a/fontembed/test_pdf.c b/fontembed/test_pdf.c +index 565fd59f..881a4dca 100644 +--- a/fontembed/test_pdf.c ++++ b/fontembed/test_pdf.c +@@ -72,10 +72,16 @@ static inline void write_string(FILE *f,EMB_PARAMS *emb,const char *str) // {{{ + int main(int argc,char **argv) + { + const char *fn=TESTFONT; ++ OTF_FILE *otf=NULL; + if (argc==2) { + fn=argv[1]; + } +- OTF_FILE *otf=otf_load(fn); ++ otf=otf_load(fn); ++ if (!otf) ++ { ++ printf("Font %s was not loaded, exiting.\n", TESTFONT); ++ return 1; ++ } + assert(otf); + FONTFILE *ff=fontfile_open_sfnt(otf); + EMB_PARAMS *emb=emb_new(ff, +diff --git a/fontembed/test_ps.c b/fontembed/test_ps.c +index 1f8c2bb7..688d9392 100644 +--- a/fontembed/test_ps.c ++++ b/fontembed/test_ps.c +@@ -45,10 +45,16 @@ static inline void write_string(FILE *f,EMB_PARAMS *emb,const char *str) // {{{ + int main(int argc,char **argv) + { + const char *fn=TESTFONT; ++ OTF_FILE *otf=NULL; + if (argc==2) { + fn=argv[1]; + } +- OTF_FILE *otf=otf_load(fn); ++ otf=otf_load(fn); ++ if (!otf) ++ { ++ printf("Font %s was not loaded, exiting.\n", TESTFONT); ++ return 1; ++ } + assert(otf); + FONTFILE *ff=fontfile_open_sfnt(otf); + EMB_PARAMS *emb=emb_new(ff, +-- +2.21.1 + diff --git a/cups-filters-abrt.patch b/cups-filters-abrt.patch deleted file mode 100644 index 75cd5e1..0000000 --- a/cups-filters-abrt.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index d83420a..0ae3400 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -2491,18 +2491,35 @@ int check_printer_with_options(char* cluster_name, int idx_option1, - remote_printer_t *p; - cups_array_t *first_attributes_value; - cups_array_t *second_attributes_value; -- char *borderless_pagesize; -+ char *borderless_pagesize = NULL; - int option1_is_size = 0, option2_is_size = 0; -+ unsigned long int max_length = 0, option1_len = 0, option2_len = 0, t_len = 0; - char t[] = ".Borderless"; - -- borderless_pagesize = malloc(sizeof(char) * 32); -+ t_len = strlen(t); -+ if (option1) -+ option1_len = strlen(option1); -+ if (option2) -+ option2_len = strlen(option2); -+ -+ /* Seems to be possible to have both options...*/ -+ max_length = option1_len + option2_len + (2 * t_len) + 1; -+ -+ borderless_pagesize = (char *)malloc(sizeof(char) * max_length); -+ if (borderless_pagesize == NULL) -+ { -+ debug_printf("check_printer_with_options: Run out of memory.\n"); -+ return 0; -+ } -+ memset(borderless_pagesize, 0, max_length); -+ - if (!strcmp(ppd_keywords[idx_option1], "PageSize") || - !strcmp(ppd_keywords[idx_option1], "PageRegion")) { - /* Check that we are generating .Borderless for the correct size, i.e We - are generating 4x5.Borderless for 4x5 and not generating - 4x5.Borderless.Borderless for 4x5.Borderless */ -- if (strlen(option1) >= 11 && -- !strcmp(&option1[strlen(option1) - strlen(t)], t)) -+ if (option1_len >= 11 && -+ !strcmp(&option1[option1_len - t_len], t)) - ; - else { - strcat(borderless_pagesize, option1); -@@ -2512,8 +2529,8 @@ int check_printer_with_options(char* cluster_name, int idx_option1, - } - if (!strcmp(ppd_keywords[idx_option2], "PageSize") || - !strcmp(ppd_keywords[idx_option2], "PageRegion")) { -- if(strlen(option2) >=11 && -- !strcmp(&option2[strlen(option2) - strlen(t)], t)) -+ if(option2_len >=11 && -+ !strcmp(&option2[option2_len - t_len], t)) - ; - else { - strcat(borderless_pagesize, option2); -@@ -2536,7 +2553,10 @@ int check_printer_with_options(char* cluster_name, int idx_option1, - if (cupsArrayFind(second_attributes_value,(void*)option2) || - (option2_is_size && cupsArrayFind(second_attributes_value, - (void*)borderless_pagesize))) -+ { -+ free(borderless_pagesize); - return 1; -+ } - } - } - free(borderless_pagesize); diff --git a/cups-filters.spec b/cups-filters.spec index 81e0c8c..f3f0b74 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.1 -Release: 2%{?dist} +Version: 1.27.2 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -26,11 +26,10 @@ Patch01: cups-filters-createall.patch # have 'cups-filters' in path, because it is shipped in 'cups-filters' package # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct -Patch02: cups-browsed.8.patch -# crash on uninitialized string -# reported upstream https://github.com/OpenPrinting/cups-filters/pull/204 -Patch03: cups-filters-abrt.patch -Patch04: foomatic-rip-fix-empty-output.patch +Patch02: cups-browsed.8.patch +# Segfaults in test suite when test font is missing +# https://github.com/OpenPrinting/cups-filters/pull/214 +Patch03: 0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -141,9 +140,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage -# crash in cups-browsed -%patch03 -p1 -b .abrt -%patch04 -p1 -b .empty-output +%patch03 -p1 -b .fontemb %build # work-around Rpath @@ -153,8 +150,6 @@ This is the development package for OpenPrinting CUPS filters and backends. # Brother, Minolta, and Konica Minolta to work around # bugs in the printer's PS interpreters # --with-rcdir=no - don't install SysV init script -# --enable-auto-setup-driverless - enable automatic setup of IPP network printers -# with driverless support # --enable-driverless - enable PPD generator for driverless printing in # /usr/lib/cups/driver, it is for manual setup of # driverless printers with printer setup tool @@ -172,7 +167,7 @@ This is the development package for OpenPrinting CUPS filters and backends. --with-rcdir=no \ --disable-mutool \ --enable-driverless \ - --enable-auto-setup-driverless \ + --with-test-font-path=/usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf \ --enable-pclm make %{?_smp_mflags} @@ -312,6 +307,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Mar 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.2-1 +- 1.27.2 + * Tue Feb 25 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.1-2 - 1806862 - foomatic-rip handles empty files in bad way diff --git a/foomatic-rip-fix-empty-output.patch b/foomatic-rip-fix-empty-output.patch deleted file mode 100644 index e9f67bc..0000000 --- a/foomatic-rip-fix-empty-output.patch +++ /dev/null @@ -1,193 +0,0 @@ -diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c -index 73ef28c..fb1c253 100644 ---- a/filter/foomatic-rip/foomaticrip.c -+++ b/filter/foomatic-rip/foomaticrip.c -@@ -560,8 +560,10 @@ int print_file(const char *filename, int convert) - { - FILE *file; - char buf[8192]; -+ char tmpfilename[PATH_MAX]; - int type; - int startpos; -+ int pagecount; - size_t n; - int ret; - -@@ -603,7 +605,6 @@ int print_file(const char *filename, int convert) - char pdf2ps_cmd[CMDLINE_MAX]; - FILE *out, *in; - int renderer_pid; -- char tmpfilename[PATH_MAX] = ""; - - _log("Driver does not understand PDF input, " - "converting to PostScript\n"); -@@ -615,7 +616,7 @@ int print_file(const char *filename, int convert) - { - int fd; - FILE *tmpfile; -- -+ - snprintf(tmpfilename, PATH_MAX, "%s/foomatic-XXXXXX", temp_dir()); - fd = mkstemp(tmpfilename); - if (fd < 0) { -@@ -625,7 +626,7 @@ int print_file(const char *filename, int convert) - tmpfile = fdopen(fd, "r+"); - copy_file(tmpfile, stdin, buf, n); - fclose(tmpfile); -- -+ - filename = tmpfilename; - } - -@@ -668,6 +669,16 @@ int print_file(const char *filename, int convert) - "Couldn't dup stdout of pdf-to-ps\n"); - - clearerr(stdin); -+ pagecount = pdf_count_pages(filename); -+ _log("File contains %d pages.\n", pagecount); -+ if (pagecount < 0) { -+ _log("Unexpected page_count\n"); -+ return 0; -+ } -+ if (pagecount == 0) { -+ _log("No pages left, outputting empty file.\n"); -+ return 1; -+ } - ret = print_file("<STDIN>", 0); - - wait_for_process(renderer_pid); -@@ -687,7 +698,75 @@ int print_file(const char *filename, int convert) - case PS_FILE: - _log("Filetype: PostScript\n"); - if (file == stdin) -- return print_ps(stdin, buf, n, filename); -+ { -+ if (convert) -+ { -+ int fd; -+ FILE *tmpfile; -+ -+ snprintf(tmpfilename, PATH_MAX, "%s/foomatic-XXXXXX", temp_dir()); -+ fd = mkstemp(tmpfilename); -+ if (fd < 0) { -+ _log("Could not create temporary file: %s\n", strerror(errno)); -+ return EXIT_PRNERR_NORETRY_BAD_SETTINGS; -+ } -+ -+ /* Copy already read data to the tmp file */ -+ if (write(fd,buf,n) != n) { -+ _log("ERROR: Can't copy already read data to temporary file\n"); -+ close(fd); -+ } -+ /* Copy stdin to the tmp file */ -+ while ((n = read(0,buf,BUFSIZ)) > 0) { -+ if (write(fd,buf,n) != n) { -+ _log("ERROR: Can't copy stdin to temporary file\n"); -+ close(fd); -+ } -+ } -+ /* Rewind tmp file to read it again */ -+ if (lseek(fd,0,SEEK_SET) < 0) { -+ _log("ERROR: Can't rewind temporary file\n"); -+ close(fd); -+ } -+ -+ char gscommand[65536]; -+ char output[31] = ""; -+ int pagecount; -+ size_t bytes; -+ filename = strdup(tmpfilename); -+ snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox %s 2>&1 | grep -c HiResBoundingBox", -+ CUPS_GHOSTSCRIPT, filename); -+ FILE *pd = popen(gscommand, "r"); -+ bytes = fread(output, 1, 31, pd); -+ pclose(pd); -+ -+ if (bytes <= 0 || sscanf(output, "%d", &pagecount) < 1) -+ pagecount = -1; -+ -+ if (pagecount < 0) { -+ _log("Unexpected page_count\n"); -+ return 0; -+ } -+ -+ if (pagecount == 0) { -+ _log("No pages left, outputting empty file.\n"); -+ return 1; -+ } -+ -+ _log("File contains %d pages.\n", pagecount); -+ -+ if ((tmpfile = fdopen(fd,"rb")) == 0) { -+ _log("ERROR: Can't fdopen temporary file\n"); -+ close(fd); -+ } -+ ret = print_ps(tmpfile, NULL, 0, filename); -+ fclose(tmpfile); -+ unlink(tmpfilename); -+ return ret; -+ } -+ else -+ return print_ps(stdin, buf, n, filename); -+ } - else - return print_ps(file, NULL, 0, filename); - -diff --git a/filter/foomatic-rip/pdf.c b/filter/foomatic-rip/pdf.c -index 1631f96..7364a73 100644 ---- a/filter/foomatic-rip/pdf.c -+++ b/filter/foomatic-rip/pdf.c -@@ -39,7 +39,7 @@ - static int wait_for_renderer(); - - --static int pdf_count_pages(const char *filename) -+int pdf_count_pages(const char *filename) - { - char gscommand[CMDLINE_MAX]; - char output[63] = ""; -diff --git a/filter/foomatic-rip/pdf.h b/filter/foomatic-rip/pdf.h -index c9472a0..07e2f32 100644 ---- a/filter/foomatic-rip/pdf.h -+++ b/filter/foomatic-rip/pdf.h -@@ -25,6 +25,7 @@ - #define pdf_h - - int print_pdf(FILE *s, const char *alreadyread, size_t len, const char *filename, size_t startpos); -+int pdf_count_pages(const char *filemame); - - #endif - -diff --git a/filter/foomatic-rip/postscript.c b/filter/foomatic-rip/postscript.c -index 8b6f0ad..f0ddf01 100644 ---- a/filter/foomatic-rip/postscript.c -+++ b/filter/foomatic-rip/postscript.c -@@ -322,7 +322,6 @@ void _print_ps(stream_t *stream) - pid_t rendererpid = 0; - FILE *rendererhandle = NULL; - -- int empty = 1; - int retval; - - dstr_t *tmp = create_dstr(); -@@ -1010,7 +1009,6 @@ void _print_ps(stream_t *stream) - /* No renderer running, start it */ - dstrcpy(tmp, psheader->data); - dstrcat(tmp, psfifo->data); -- empty = 0; - get_renderer_handle(tmp, &rendererhandle, &rendererpid); - /* psfifo is sent out, flush it */ - dstrclear(psfifo); -@@ -1075,12 +1073,6 @@ void _print_ps(stream_t *stream) - - } while ((maxlines == 0 || linect < maxlines) && more_stuff != 0); - -- if (empty) -- { -- _log("No pages left, outputting empty file.\n"); -- return; -- } -- - /* Some buffer still containing data? Send it out to the renderer */ - if (more_stuff || inheader || !isempty(psfifo->data)) { - /* Flush psfifo and send the remaining data to the renderer, this diff --git a/sources b/sources index 8992c86..206ae12 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.1.tar.xz) = 3fde635735138fa5ef511466b07f396f96860efcc51d9a01f5b95e86fc71ef48b9d17ba1bbe2eeb29585c3afc8bf26370b8f07df76a3adea2335be90e3fdb91b +SHA512 (cups-filters-1.27.2.tar.xz) = c0e1456dd3f512ae2215e566f853e47b66de46d0d1301fc5a6f3674ac7d1ddb03c3bb236b0419b20168742076381c58581cc3e582cf7abf76139367d549a6c46 From 1fc0a67de9a465fdc9daa67e4f54b6044c384da4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 20 Mar 2020 06:37:18 +0100 Subject: [PATCH 085/197] fix leaks in cups-browsed add require on nss-mdns --- cups-browsed-leaks.patch | 95 ++++++++++++++++++++++++++++++++++++++++ cups-filters.spec | 12 ++++- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 cups-browsed-leaks.patch diff --git a/cups-browsed-leaks.patch b/cups-browsed-leaks.patch new file mode 100644 index 0000000..e283cbb --- /dev/null +++ b/cups-browsed-leaks.patch @@ -0,0 +1,95 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 77efa583..dd0fcbb3 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -6278,6 +6278,7 @@ on_job_state (CupsNotifier *object, + } + + ippDelete(response); ++ response = NULL; + } else + debug_printf("IPP request to %s:%d failed.\n", p->host, + p->port); +@@ -8070,7 +8071,7 @@ gboolean update_cups_queues(gpointer unused) { + debug_printf("Default page size: %s\n", + default_page_size); + p->num_options = cupsAddOption("media-default", +- strdup(default_page_size), ++ default_page_size, + p->num_options, &(p->options)); + } else { + attr = ippFindAttribute(p->prattrs, +@@ -8081,7 +8082,7 @@ gboolean update_cups_queues(gpointer unused) { + debug_printf("Default page size: %s\n", + default_page_size); + p->num_options = cupsAddOption("media-default", +- strdup(default_page_size), ++ default_page_size, + p->num_options, &(p->options)); + } else + debug_printf("No default page size found!\n"); +@@ -8101,7 +8102,7 @@ gboolean update_cups_queues(gpointer unused) { + bottom = 1270; + snprintf(buffer, sizeof(buffer), "%d", bottom); + p->num_options = cupsAddOption("media-bottom-margin-default", +- strdup(buffer), ++ buffer, + p->num_options, &(p->options)); + + if ((attr = ippFindAttribute(p->prattrs, +@@ -8117,7 +8118,7 @@ gboolean update_cups_queues(gpointer unused) { + left = 635; + snprintf(buffer, sizeof(buffer), "%d", left); + p->num_options = cupsAddOption("media-left-margin-default", +- strdup(buffer), ++ buffer, + p->num_options, &(p->options)); + + if ((attr = ippFindAttribute(p->prattrs, +@@ -8133,7 +8134,7 @@ gboolean update_cups_queues(gpointer unused) { + right = 635; + snprintf(buffer, sizeof(buffer), "%d", right); + p->num_options = cupsAddOption("media-right-margin-default", +- strdup(buffer), ++ buffer, + p->num_options, &(p->options)); + + if ((attr = ippFindAttribute(p->prattrs, +@@ -8149,7 +8150,7 @@ gboolean update_cups_queues(gpointer unused) { + top = 1270; + snprintf(buffer, sizeof(buffer), "%d", top); + p->num_options = cupsAddOption("media-top-margin-default", +- strdup(buffer), ++ buffer, + p->num_options, &(p->options)); + + debug_printf("Margins: Left: %d, Right: %d, Top: %d, Bottom: %d\n", +@@ -8170,7 +8171,7 @@ gboolean update_cups_queues(gpointer unused) { + debug_printf("Best color space: %s\n", + best_color_space); + p->num_options = cupsAddOption("print-color-mode-default", +- strdup(best_color_space), ++ best_color_space, + p->num_options, &(p->options)); + } else { + debug_printf("No info about supported color spaces found!\n"); +@@ -8185,7 +8186,7 @@ gboolean update_cups_queues(gpointer unused) { + p->num_options, &(p->options)); + + p->num_options = cupsAddOption("output-format-default", +- strdup(p->pdl), ++ p->pdl, + p->num_options, &(p->options)); + p->num_options = cupsAddOption("make-and-model-default", + remove_bad_chars(p->make_model, 0), +@@ -8527,8 +8528,8 @@ gboolean update_cups_queues(gpointer unused) { + /* Default option settings from printer entry */ + for (i = 0; i < p->num_options; i ++) + if (strcasecmp(p->options[i].name, "printer-is-shared")) +- num_options = cupsAddOption(strdup(p->options[i].name), +- strdup(p->options[i].value), ++ num_options = cupsAddOption(p->options[i].name, ++ p->options[i].value, + num_options, &options); + /* Encode option list into IPP attributes */ + cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION); diff --git a/cups-filters.spec b/cups-filters.spec index f3f0b74..7b3264a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.2 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -30,6 +30,7 @@ Patch02: cups-browsed.8.patch # Segfaults in test suite when test font is missing # https://github.com/OpenPrinting/cups-filters/pull/214 Patch03: 0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch +Patch04: cups-browsed-leaks.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -109,6 +110,10 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd +# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues +# or device during discovery +Requires: nss-mdns + %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries # LGPLv2: libcupsfilters @@ -141,6 +146,7 @@ This is the development package for OpenPrinting CUPS filters and backends. # links in manpage %patch02 -p1 -b .manpage %patch03 -p1 -b .fontemb +%patch04 -p1 -b .memleaks %build # work-around Rpath @@ -307,6 +313,10 @@ done %{_libdir}/libfontembed.so %changelog +* Fri Mar 13 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.2-2 +- fix leaks in cups-browsed +- add require on nss-mdns + * Mon Mar 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.2-1 - 1.27.2 From 69c633e97b351d2ed7861a15a2403897aa796f4a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 23 Mar 2020 07:16:26 +0100 Subject: [PATCH 086/197] 1.27.3 --- .gitignore | 1 + ...-test-suite-when-test-font-is-missin.patch | 121 ------------------ cups-browsed-leaks.patch | 95 -------------- cups-filters.spec | 14 +- sources | 2 +- 5 files changed, 7 insertions(+), 226 deletions(-) delete mode 100644 0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch delete mode 100644 cups-browsed-leaks.patch diff --git a/.gitignore b/.gitignore index d7e0cb2..889c912 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,4 @@ /cups-filters-1.27.0.tar.xz /cups-filters-1.27.1.tar.xz /cups-filters-1.27.2.tar.xz +/cups-filters-1.27.3.tar.xz diff --git a/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch b/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch deleted file mode 100644 index d6e9ed4..0000000 --- a/0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 1d66106e5ae45407b01459cb112ee09752166dba Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Mon, 2 Mar 2020 14:56:55 +0100 -Subject: [PATCH] Fix segfaults in test suite when test font is missing - ---- - configure.ac | 3 +++ - filter/test_pdf2.c | 8 +++++++- - fontembed/test_analyze.c | 9 ++++++++- - fontembed/test_pdf.c | 8 +++++++- - fontembed/test_ps.c | 8 +++++++- - 5 files changed, 32 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index d5fe836c..7ffb6693 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -788,6 +788,9 @@ AC_ARG_WITH([test-font-path], - [with_test_font_path="$withval"], - [with_test_font_path="/usr/share/fonts/dejavu/DejaVuSans.ttf"] - ) -+AC_CHECK_FILE("$with_test_font_path", [], [ -+ AC_MSG_ERROR([Requested font file is missing. Please install a package providing it.]) -+]) - AC_DEFINE_UNQUOTED([TESTFONT], ["$with_test_font_path"], [Path to font used in tests]) - - # ================ -diff --git a/filter/test_pdf2.c b/filter/test_pdf2.c -index a0c1d8b0..3d58a59d 100644 ---- a/filter/test_pdf2.c -+++ b/filter/test_pdf2.c -@@ -41,12 +41,18 @@ int main() - - // font, pt.1 - const char *fn=TESTFONT; -+ OTF_FILE *otf=NULL; - /* - if (argc==2) { - fn=argv[1]; - } - */ -- OTF_FILE *otf=otf_load(fn); -+ otf=otf_load(fn); -+ if (!otf) -+ { -+ printf("Font %s was not loaded, exiting.\n", TESTFONT); -+ return 1; -+ } - assert(otf); - FONTFILE *ff=fontfile_open_sfnt(otf); - EMB_PARAMS *emb=emb_new(ff, -diff --git a/fontembed/test_analyze.c b/fontembed/test_analyze.c -index 3f42573d..967a7516 100644 ---- a/fontembed/test_analyze.c -+++ b/fontembed/test_analyze.c -@@ -183,10 +183,17 @@ void show_hmtx(OTF_FILE *otf) // {{{ - int main(int argc,char **argv) - { - const char *fn=TESTFONT; -+ OTF_FILE *otf=NULL; - if (argc==2) { - fn=argv[1]; - } -- OTF_FILE *otf=otf_load(fn); -+ otf=otf_load(fn); -+ if (!otf) -+ { -+ printf("Font %s was not loaded, exiting.\n", TESTFONT); -+ return 1; -+ } -+ - assert(otf); - if (otf->numTTC) { - printf("TTC has %d fonts, using %d\n",otf->numTTC,otf->useTTC); -diff --git a/fontembed/test_pdf.c b/fontembed/test_pdf.c -index 565fd59f..881a4dca 100644 ---- a/fontembed/test_pdf.c -+++ b/fontembed/test_pdf.c -@@ -72,10 +72,16 @@ static inline void write_string(FILE *f,EMB_PARAMS *emb,const char *str) // {{{ - int main(int argc,char **argv) - { - const char *fn=TESTFONT; -+ OTF_FILE *otf=NULL; - if (argc==2) { - fn=argv[1]; - } -- OTF_FILE *otf=otf_load(fn); -+ otf=otf_load(fn); -+ if (!otf) -+ { -+ printf("Font %s was not loaded, exiting.\n", TESTFONT); -+ return 1; -+ } - assert(otf); - FONTFILE *ff=fontfile_open_sfnt(otf); - EMB_PARAMS *emb=emb_new(ff, -diff --git a/fontembed/test_ps.c b/fontembed/test_ps.c -index 1f8c2bb7..688d9392 100644 ---- a/fontembed/test_ps.c -+++ b/fontembed/test_ps.c -@@ -45,10 +45,16 @@ static inline void write_string(FILE *f,EMB_PARAMS *emb,const char *str) // {{{ - int main(int argc,char **argv) - { - const char *fn=TESTFONT; -+ OTF_FILE *otf=NULL; - if (argc==2) { - fn=argv[1]; - } -- OTF_FILE *otf=otf_load(fn); -+ otf=otf_load(fn); -+ if (!otf) -+ { -+ printf("Font %s was not loaded, exiting.\n", TESTFONT); -+ return 1; -+ } - assert(otf); - FONTFILE *ff=fontfile_open_sfnt(otf); - EMB_PARAMS *emb=emb_new(ff, --- -2.21.1 - diff --git a/cups-browsed-leaks.patch b/cups-browsed-leaks.patch deleted file mode 100644 index e283cbb..0000000 --- a/cups-browsed-leaks.patch +++ /dev/null @@ -1,95 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 77efa583..dd0fcbb3 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -6278,6 +6278,7 @@ on_job_state (CupsNotifier *object, - } - - ippDelete(response); -+ response = NULL; - } else - debug_printf("IPP request to %s:%d failed.\n", p->host, - p->port); -@@ -8070,7 +8071,7 @@ gboolean update_cups_queues(gpointer unused) { - debug_printf("Default page size: %s\n", - default_page_size); - p->num_options = cupsAddOption("media-default", -- strdup(default_page_size), -+ default_page_size, - p->num_options, &(p->options)); - } else { - attr = ippFindAttribute(p->prattrs, -@@ -8081,7 +8082,7 @@ gboolean update_cups_queues(gpointer unused) { - debug_printf("Default page size: %s\n", - default_page_size); - p->num_options = cupsAddOption("media-default", -- strdup(default_page_size), -+ default_page_size, - p->num_options, &(p->options)); - } else - debug_printf("No default page size found!\n"); -@@ -8101,7 +8102,7 @@ gboolean update_cups_queues(gpointer unused) { - bottom = 1270; - snprintf(buffer, sizeof(buffer), "%d", bottom); - p->num_options = cupsAddOption("media-bottom-margin-default", -- strdup(buffer), -+ buffer, - p->num_options, &(p->options)); - - if ((attr = ippFindAttribute(p->prattrs, -@@ -8117,7 +8118,7 @@ gboolean update_cups_queues(gpointer unused) { - left = 635; - snprintf(buffer, sizeof(buffer), "%d", left); - p->num_options = cupsAddOption("media-left-margin-default", -- strdup(buffer), -+ buffer, - p->num_options, &(p->options)); - - if ((attr = ippFindAttribute(p->prattrs, -@@ -8133,7 +8134,7 @@ gboolean update_cups_queues(gpointer unused) { - right = 635; - snprintf(buffer, sizeof(buffer), "%d", right); - p->num_options = cupsAddOption("media-right-margin-default", -- strdup(buffer), -+ buffer, - p->num_options, &(p->options)); - - if ((attr = ippFindAttribute(p->prattrs, -@@ -8149,7 +8150,7 @@ gboolean update_cups_queues(gpointer unused) { - top = 1270; - snprintf(buffer, sizeof(buffer), "%d", top); - p->num_options = cupsAddOption("media-top-margin-default", -- strdup(buffer), -+ buffer, - p->num_options, &(p->options)); - - debug_printf("Margins: Left: %d, Right: %d, Top: %d, Bottom: %d\n", -@@ -8170,7 +8171,7 @@ gboolean update_cups_queues(gpointer unused) { - debug_printf("Best color space: %s\n", - best_color_space); - p->num_options = cupsAddOption("print-color-mode-default", -- strdup(best_color_space), -+ best_color_space, - p->num_options, &(p->options)); - } else { - debug_printf("No info about supported color spaces found!\n"); -@@ -8185,7 +8186,7 @@ gboolean update_cups_queues(gpointer unused) { - p->num_options, &(p->options)); - - p->num_options = cupsAddOption("output-format-default", -- strdup(p->pdl), -+ p->pdl, - p->num_options, &(p->options)); - p->num_options = cupsAddOption("make-and-model-default", - remove_bad_chars(p->make_model, 0), -@@ -8527,8 +8528,8 @@ gboolean update_cups_queues(gpointer unused) { - /* Default option settings from printer entry */ - for (i = 0; i < p->num_options; i ++) - if (strcasecmp(p->options[i].name, "printer-is-shared")) -- num_options = cupsAddOption(strdup(p->options[i].name), -- strdup(p->options[i].value), -+ num_options = cupsAddOption(p->options[i].name, -+ p->options[i].value, - num_options, &options); - /* Encode option list into IPP attributes */ - cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION); diff --git a/cups-filters.spec b/cups-filters.spec index 7b3264a..a189530 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.2 -Release: 2%{?dist} +Version: 1.27.3 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,10 +27,6 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch -# Segfaults in test suite when test font is missing -# https://github.com/OpenPrinting/cups-filters/pull/214 -Patch03: 0001-Fix-segfaults-in-test-suite-when-test-font-is-missin.patch -Patch04: cups-browsed-leaks.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -145,8 +141,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage -%patch03 -p1 -b .fontemb -%patch04 -p1 -b .memleaks %build # work-around Rpath @@ -173,7 +167,6 @@ This is the development package for OpenPrinting CUPS filters and backends. --with-rcdir=no \ --disable-mutool \ --enable-driverless \ - --with-test-font-path=/usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf \ --enable-pclm make %{?_smp_mflags} @@ -313,6 +306,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Mar 23 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-1 +- 1.27.3 + * Fri Mar 13 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.2-2 - fix leaks in cups-browsed - add require on nss-mdns diff --git a/sources b/sources index 206ae12..6a36118 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.2.tar.xz) = c0e1456dd3f512ae2215e566f853e47b66de46d0d1301fc5a6f3674ac7d1ddb03c3bb236b0419b20168742076381c58581cc3e582cf7abf76139367d549a6c46 +SHA512 (cups-filters-1.27.3.tar.xz) = 48c8a1d2ee860733a5cae41e333c45a997916638ea05552f2ec915d2713ecc216658763089affc8165907caf2b929406232192d70d0c0877b72377390b46ffd3 From 2ef13432e5d8feec9e0c6203f8c99e0aaf0ed7b8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 6 Apr 2020 13:34:04 +0200 Subject: [PATCH 087/197] make nss-mdns and avahi recommended --- cups-filters.spec | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index a189530..f9940da 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.3 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -107,8 +107,10 @@ Requires(preun): systemd Requires(postun): systemd # cups-browsed needs nss-mdns for resolving .local addresses of remote print queues -# or device during discovery -Requires: nss-mdns +# or device during discovery for newer (2012+) devices - make it recommended together +# with avahi - needed for device discovery as well +Recommends: nss-mdns +Recommends: avahi %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries @@ -306,6 +308,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Apr 06 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-2 +- make nss-mdns and avahi recommended + * Mon Mar 23 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-1 - 1.27.3 From 5ab9f50bd830e9a140c358cb00ff512c63ebf4c4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 8 Apr 2020 13:48:07 +0200 Subject: [PATCH 088/197] memory issues in cups-browsed --- cups-browsed-mem-issues.patch | 131 ++++++++++++++++++++++++++++++++++ cups-filters.spec | 9 ++- 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 cups-browsed-mem-issues.patch diff --git a/cups-browsed-mem-issues.patch b/cups-browsed-mem-issues.patch new file mode 100644 index 0000000..63c584e --- /dev/null +++ b/cups-browsed-mem-issues.patch @@ -0,0 +1,131 @@ +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 142d3042..fcd95e2c 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -435,7 +435,7 @@ const char * + _searchDirForCatalog(const char *dirname) + { + const char *catalog = NULL, *c1, *c2; +- cups_dir_t *dir, *subdir; ++ cups_dir_t *dir = NULL, *subdir; + cups_dentry_t *subdirentry, *catalogentry; + char subdirpath[1024], catalogpath[2048], lang[8]; + int i; +@@ -499,6 +499,7 @@ _searchDirForCatalog(const char *dirname) + break; + } + cupsDirClose(subdir); ++ subdir = NULL; + if (catalog != NULL) + break; + } +@@ -749,13 +750,18 @@ load_opt_strings_catalog(const char *location, cups_array_t *options) + 2: "..." = "..." + 10: EOF, save last entry */ + int digit; ++ int found_in_catalog = 0; + + if (location == NULL || (strncasecmp(location, "http:", 5) && + strncasecmp(location, "https:", 6))) { + if (location == NULL || + (stat(location, &statbuf) == 0 && + S_ISDIR(statbuf.st_mode))) /* directory? */ ++ { + filename = _findCUPSMessageCatalog(location); ++ if (filename) ++ found_in_catalog = 1; ++ } + else + filename = location; + } else { +@@ -939,6 +945,8 @@ load_opt_strings_catalog(const char *location, cups_array_t *options) + free(opt_name); + if (filename == tmpfile) + unlink(filename); ++ if (found_in_catalog) ++ free(filename); + } + + +@@ -1948,10 +1956,16 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + } else { + if ((current_res = resolutionArrayNew()) != NULL) { + if ((current_def = resolutionNew(lowdpi, lowdpi)) != NULL) ++ { + cupsArrayAdd(current_res, current_def); ++ free_resolution(current_def, NULL); ++ } + if (hidpi != lowdpi && + (current_def = resolutionNew(hidpi, hidpi)) != NULL) ++ { + cupsArrayAdd(current_res, current_def); ++ free_resolution(current_def, NULL); ++ } + current_def = NULL; + if (cupsArrayCount(current_res) > 0 && + joinResolutionArrays(&common_res, ¤t_res, &common_def, +@@ -2069,7 +2083,10 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + if (common_res == NULL) { + if ((common_res = resolutionArrayNew()) != NULL) { + if ((current_def = resolutionNew(300, 300)) != NULL) ++ { + cupsArrayAdd(common_res, current_def); ++ free_resolution(current_def, NULL); ++ } + current_def = NULL; + } else + goto bad_ppd; +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index c649eab6..1a81d52c 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -7481,7 +7481,7 @@ gboolean update_cups_queues(gpointer unused) { + *color_space; + #endif + const char *loadedppd = NULL; +- ppd_file_t *ppd; ++ ppd_file_t *ppd = NULL; + ppd_choice_t *choice; + cups_file_t *in, *out; + char keyword[1024], *keyptr; +@@ -8413,6 +8413,7 @@ gboolean update_cups_queues(gpointer unused) { + p->timeout = current_time + TIMEOUT_RETRY; + p->no_autosave = 0; + ppdClose(ppd); ++ ppd = NULL; + unlink(loadedppd); + break; + } +@@ -8423,6 +8424,7 @@ gboolean update_cups_queues(gpointer unused) { + p->no_autosave = 0; + cupsFileClose(out); + ppdClose(ppd); ++ ppd = NULL; + unlink(loadedppd); + break; + } +@@ -8493,10 +8495,14 @@ gboolean update_cups_queues(gpointer unused) { + cupsFileClose(in); + cupsFileClose(out); + ppdClose(ppd); ++ ppd = NULL; + unlink(loadedppd); + loadedppd = NULL; + if (ppdfile) ++ { + free(ppdfile); ++ ppdfile = NULL; ++ } + ppdfile = strdup(buf); + } + +@@ -12438,6 +12444,9 @@ fail: + + if (local_printers_context) { + browse_poll_cancel_subscription (local_printers_context); ++#ifdef HAVE_CUPS_2_0 ++ free(local_printers_context->server); ++#endif + g_list_free_full (local_printers_context->printers, + browsepoll_printer_free); + free (local_printers_context); diff --git a/cups-filters.spec b/cups-filters.spec index f9940da..f87f8a3 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.3 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,6 +27,8 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch +# memory issue in cups-browsed, backported from upstream +Patch03: cups-browsed-mem-issues.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -143,6 +145,8 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage +# memory issues in cups-browsed, backported from upstream +%patch03 -p1 -b .mem-issues %build # work-around Rpath @@ -308,6 +312,9 @@ done %{_libdir}/libfontembed.so %changelog +* Wed Apr 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-3 +- memory issues in cups-browsed + * Mon Apr 06 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-2 - make nss-mdns and avahi recommended From 401449b6bfd3af7113918ecc8be76ce6950316f9 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 14 Apr 2020 13:56:49 +0200 Subject: [PATCH 089/197] 1.27.4 --- .gitignore | 1 + cups-browsed-mem-issues.patch | 131 ---------------------------------- cups-filters.spec | 11 ++- sources | 2 +- 4 files changed, 7 insertions(+), 138 deletions(-) delete mode 100644 cups-browsed-mem-issues.patch diff --git a/.gitignore b/.gitignore index 889c912..3203396 100644 --- a/.gitignore +++ b/.gitignore @@ -96,3 +96,4 @@ /cups-filters-1.27.1.tar.xz /cups-filters-1.27.2.tar.xz /cups-filters-1.27.3.tar.xz +/cups-filters-1.27.4.tar.xz diff --git a/cups-browsed-mem-issues.patch b/cups-browsed-mem-issues.patch deleted file mode 100644 index 63c584e..0000000 --- a/cups-browsed-mem-issues.patch +++ /dev/null @@ -1,131 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 142d3042..fcd95e2c 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -435,7 +435,7 @@ const char * - _searchDirForCatalog(const char *dirname) - { - const char *catalog = NULL, *c1, *c2; -- cups_dir_t *dir, *subdir; -+ cups_dir_t *dir = NULL, *subdir; - cups_dentry_t *subdirentry, *catalogentry; - char subdirpath[1024], catalogpath[2048], lang[8]; - int i; -@@ -499,6 +499,7 @@ _searchDirForCatalog(const char *dirname) - break; - } - cupsDirClose(subdir); -+ subdir = NULL; - if (catalog != NULL) - break; - } -@@ -749,13 +750,18 @@ load_opt_strings_catalog(const char *location, cups_array_t *options) - 2: "..." = "..." - 10: EOF, save last entry */ - int digit; -+ int found_in_catalog = 0; - - if (location == NULL || (strncasecmp(location, "http:", 5) && - strncasecmp(location, "https:", 6))) { - if (location == NULL || - (stat(location, &statbuf) == 0 && - S_ISDIR(statbuf.st_mode))) /* directory? */ -+ { - filename = _findCUPSMessageCatalog(location); -+ if (filename) -+ found_in_catalog = 1; -+ } - else - filename = location; - } else { -@@ -939,6 +945,8 @@ load_opt_strings_catalog(const char *location, cups_array_t *options) - free(opt_name); - if (filename == tmpfile) - unlink(filename); -+ if (found_in_catalog) -+ free(filename); - } - - -@@ -1948,10 +1956,16 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - } else { - if ((current_res = resolutionArrayNew()) != NULL) { - if ((current_def = resolutionNew(lowdpi, lowdpi)) != NULL) -+ { - cupsArrayAdd(current_res, current_def); -+ free_resolution(current_def, NULL); -+ } - if (hidpi != lowdpi && - (current_def = resolutionNew(hidpi, hidpi)) != NULL) -+ { - cupsArrayAdd(current_res, current_def); -+ free_resolution(current_def, NULL); -+ } - current_def = NULL; - if (cupsArrayCount(current_res) > 0 && - joinResolutionArrays(&common_res, ¤t_res, &common_def, -@@ -2069,7 +2083,10 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - if (common_res == NULL) { - if ((common_res = resolutionArrayNew()) != NULL) { - if ((current_def = resolutionNew(300, 300)) != NULL) -+ { - cupsArrayAdd(common_res, current_def); -+ free_resolution(current_def, NULL); -+ } - current_def = NULL; - } else - goto bad_ppd; -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index c649eab6..1a81d52c 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -7481,7 +7481,7 @@ gboolean update_cups_queues(gpointer unused) { - *color_space; - #endif - const char *loadedppd = NULL; -- ppd_file_t *ppd; -+ ppd_file_t *ppd = NULL; - ppd_choice_t *choice; - cups_file_t *in, *out; - char keyword[1024], *keyptr; -@@ -8413,6 +8413,7 @@ gboolean update_cups_queues(gpointer unused) { - p->timeout = current_time + TIMEOUT_RETRY; - p->no_autosave = 0; - ppdClose(ppd); -+ ppd = NULL; - unlink(loadedppd); - break; - } -@@ -8423,6 +8424,7 @@ gboolean update_cups_queues(gpointer unused) { - p->no_autosave = 0; - cupsFileClose(out); - ppdClose(ppd); -+ ppd = NULL; - unlink(loadedppd); - break; - } -@@ -8493,10 +8495,14 @@ gboolean update_cups_queues(gpointer unused) { - cupsFileClose(in); - cupsFileClose(out); - ppdClose(ppd); -+ ppd = NULL; - unlink(loadedppd); - loadedppd = NULL; - if (ppdfile) -+ { - free(ppdfile); -+ ppdfile = NULL; -+ } - ppdfile = strdup(buf); - } - -@@ -12438,6 +12444,9 @@ fail: - - if (local_printers_context) { - browse_poll_cancel_subscription (local_printers_context); -+#ifdef HAVE_CUPS_2_0 -+ free(local_printers_context->server); -+#endif - g_list_free_full (local_printers_context->printers, - browsepoll_printer_free); - free (local_printers_context); diff --git a/cups-filters.spec b/cups-filters.spec index f87f8a3..a150469 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.3 -Release: 3%{?dist} +Version: 1.27.4 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -27,8 +27,6 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch -# memory issue in cups-browsed, backported from upstream -Patch03: cups-browsed-mem-issues.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -145,8 +143,6 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage -# memory issues in cups-browsed, backported from upstream -%patch03 -p1 -b .mem-issues %build # work-around Rpath @@ -312,6 +308,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Apr 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.4-1 +- 1.27.4 + * Wed Apr 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.3-3 - memory issues in cups-browsed diff --git a/sources b/sources index 6a36118..15f72c4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.3.tar.xz) = 48c8a1d2ee860733a5cae41e333c45a997916638ea05552f2ec915d2713ecc216658763089affc8165907caf2b929406232192d70d0c0877b72377390b46ffd3 +SHA512 (cups-filters-1.27.4.tar.xz) = 8005e94bb6b06d0a15fa4dfd8455d0bc67418478bf517e205af1c8c0018681a97ae9ea486db07570050ebeeb7f63f75319a8fe012c112c6d16c0941299eaa50e From f62a89ac9072a8b89fb96cf5e6e42f15dbe9df14 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 8 Jun 2020 13:09:28 +0200 Subject: [PATCH 090/197] 1.27.5 --- .gitignore | 1 + cups-filters-remove-queues-on-restart.patch | 162 ++++++++++++++++++++ cups-filters.spec | 9 +- sources | 2 +- 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 cups-filters-remove-queues-on-restart.patch diff --git a/.gitignore b/.gitignore index 3203396..ea2a123 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,4 @@ /cups-filters-1.27.2.tar.xz /cups-filters-1.27.3.tar.xz /cups-filters-1.27.4.tar.xz +/cups-filters-1.27.5.tar.xz diff --git a/cups-filters-remove-queues-on-restart.patch b/cups-filters-remove-queues-on-restart.patch new file mode 100644 index 0000000..33f20f1 --- /dev/null +++ b/cups-filters-remove-queues-on-restart.patch @@ -0,0 +1,162 @@ +diff --git a/NEWS b/NEWS +index c2fce749..24d888ce 100644 +--- a/NEWS ++++ b/NEWS +@@ -3,12 +3,6 @@ NEWS - OpenPrinting CUPS Filters v1.27.5 - 2020-06-05 + + CHANGES IN V1.27.5 + +- - cups-browsed: Do not remove the created local queues on +- shutdown, to avoid their re-creation on restart, so that +- desktops get no cluttered with notifications of new queues +- being created. One can return to the old behavior via +- "KeepGeneratedQueuesOnShutdown No" in cups-browsed.conf +- (Ubuntu bug #1869981, #1878241). + - cups-browsed: Do not accept DNS-SD broadcasts of IPPS type + of "remote" CUPS queues of another CUPS instance on the + local machine. This way we get a local queue pointing to +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 7ca6724c..dca3972f 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -456,7 +456,6 @@ static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_DRIVERL + static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_ALL; + #endif + #endif +-static unsigned int KeepGeneratedQueuesOnShutdown = 1; + static ipp_queue_type_t IPPPrinterQueueType = PPD_YES; + static int NewIPPPrinterQueuesShared = 0; + static int AutoClustering = 1; +@@ -10200,17 +10199,9 @@ void avahi_browser_shutdown() { + for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); + p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { + if (p->type && p->type[0]) { +- if (KeepGeneratedQueuesOnShutdown) { +- if (p->status != STATUS_TO_BE_RELEASED && +- p->status != STATUS_DISAPPEARED) { +- p->status = STATUS_UNCONFIRMED; +- p->timeout = time(NULL) + TIMEOUT_CONFIRM; +- } +- } else { +- if (p->status != STATUS_TO_BE_RELEASED) +- p->status = STATUS_DISAPPEARED; +- p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; +- } ++ if (p->status != STATUS_TO_BE_RELEASED) ++ p->status = STATUS_DISAPPEARED; ++ p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; + } + } + if (in_shutdown == 0) +@@ -11645,13 +11636,6 @@ read_configuration (const char *filename) + else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || + !strcasecmp(value, "off") || !strcasecmp(value, "0")) + NewBrowsePollQueuesShared = 0; +- } else if (!strcasecmp(line, "KeepGeneratedQueuesOnShutdown") && value) { +- if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || +- !strcasecmp(value, "on") || !strcasecmp(value, "1")) +- KeepGeneratedQueuesOnShutdown = 1; +- else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || +- !strcasecmp(value, "off") || !strcasecmp(value, "0")) +- KeepGeneratedQueuesOnShutdown = 0; + } else if (!strcasecmp(line, "AutoClustering") && value) { + if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || + !strcasecmp(value, "on") || !strcasecmp(value, "1")) +@@ -12444,13 +12428,12 @@ fail: + g_object_unref (proxy); + + /* Remove all queues which we have set up */ +- if (KeepGeneratedQueuesOnShutdown == 0) +- for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); +- p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { +- if (p->status != STATUS_TO_BE_RELEASED) +- p->status = STATUS_DISAPPEARED; +- p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; +- } ++ for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); ++ p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { ++ if (p->status != STATUS_TO_BE_RELEASED) ++ p->status = STATUS_DISAPPEARED; ++ p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; ++ } + update_cups_queues(NULL); + + cancel_subscription (subscription_id); +diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 +index 8ef649fd..99ed3796 100644 +--- a/utils/cups-browsed.conf.5 ++++ b/utils/cups-browsed.conf.5 +@@ -732,27 +732,6 @@ not to share newly discovered IPP printers. + .fam C + NewIPPPrinterQueuesShared Yes + +-.fam T +-.fi +-How to handle the print queues cups-browsed creates when cups-browsed +-is shut down: +-.PP +-"KeepGeneratedQueuesOnShutdown No" makes the queues being +-removed. This makes sense as these queues only work while cups-browsed +-is running. cups-browsed has to determine to which member printer of a +-cluster to pass on the job. +-.PP +-"KeepGeneratedQueuesOnShutdown Yes" (the default) makes the queues not +-being removed. This is the recommended setting for a system where +-cups-browsed is permanently running and only stopped for short times +-(like log rotation) or on shutdown. This avoids the re-creation of the +-queues when cups-browsed is restarted, which often causes a clutter of +-CUPS notifications on the desktop. +-.PP +-.nf +-.fam C +- KeepGeneratedQueuesOnShutdown No +- + .fam T + .fi + If there is more than one remote CUPS printer whose local queue +@@ -869,7 +848,7 @@ local queue named "LJ4050": + .fi + As DNS-SD service names are unique in a network you can create a + cluster from exactly specified printers (spaces replaced by +-underscores): ++underscors): + .PP + .nf + .fam C +diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in +index 7e248c51..ca4371fe 100644 +--- a/utils/cups-browsed.conf.in ++++ b/utils/cups-browsed.conf.in +@@ -552,23 +552,6 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ + # NewIPPPrinterQueuesShared Yes + + +-# How to handle the print queues cups-browsed creates when +-# cups-browsed is shut down: +- +-# "KeepGeneratedQueuesOnShutdown No" makes the queues being +-# removed. This makes sense as these queues only work while +-# cups-browsed is running. cups-browsed has to determine to which +-# member printer of a cluster to pass on the job. +- +-# "KeepGeneratedQueuesOnShutdown Yes" (the default) makes the queues +-# not being removed. This is the recommended setting for a system +-# where cups-browsed is permanently running and only stopped for short +-# times (like log rotation) or on shutdown. This avoids the +-# re-creation of the queues when cups-browsed is restarted, which +-# often causes a clutter of CUPS notifications on the desktop. +- +-# KeepGeneratedQueuesOnShutdown No +- + # If there is more than one remote CUPS printer whose local queue + # would get the same name and AutoClustering is set to "Yes" (the + # default) only one local queue is created which makes up a +@@ -664,7 +647,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ + + # As DNS-SD service names are unique in a network you can create a + # cluster from exactly specified printers (spaces replaced by +-# underscores): ++# underscors): + + # Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2 + diff --git a/cups-filters.spec b/cups-filters.spec index a150469..0ad3943 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.4 +Version: 1.27.5 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -27,6 +27,9 @@ Patch01: cups-filters-createall.patch # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, # so cups-browsed would have separate sub package, so the link would be correct Patch02: cups-browsed.8.patch +# upstream decided on keep queues after restart - IMO it causes more issues than it +# solves https://github.com/OpenPrinting/cups-filters/issues/241 +Patch03: cups-filters-remove-queues-on-restart.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -143,6 +146,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch01 -p1 -b .createall # links in manpage %patch02 -p1 -b .manpage +%patch03 -p1 -b .remove-queues-on-restart %build # work-around Rpath @@ -308,6 +312,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Jun 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-1 +- 1.27.5 + * Tue Apr 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.4-1 - 1.27.4 diff --git a/sources b/sources index 15f72c4..ca231de 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.4.tar.xz) = 8005e94bb6b06d0a15fa4dfd8455d0bc67418478bf517e205af1c8c0018681a97ae9ea486db07570050ebeeb7f63f75319a8fe012c112c6d16c0941299eaa50e +SHA512 (cups-filters-1.27.5.tar.xz) = 8bc917b2a168add1062d091d02d99c39d72861c0d0cb1242c34b2bf117c9943e7fdc1fe002de7cde4cb1919fbce41073adc34916c328fc99e66e389b0a4fe103 From 5b19b86468ff341c56f8879dcd6c4b87a67de892 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 20 Jul 2020 14:55:43 +0200 Subject: [PATCH 091/197] 1848575 - [cups, cups-filters] PPD generators creates invalid cupsManualCopies entry --- cups-filters-manual-copies.patch | 13 +++++++++++++ cups-filters.spec | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cups-filters-manual-copies.patch diff --git a/cups-filters-manual-copies.patch b/cups-filters-manual-copies.patch new file mode 100644 index 0000000..edf2175 --- /dev/null +++ b/cups-filters-manual-copies.patch @@ -0,0 +1,13 @@ +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 55801af..428a23e 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -2062,7 +2062,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + format, we need to create multiple copies on the client. We add a line to + the PPD which tells the pdftopdf filter to generate the copies */ + if (manual_copies == 1) +- cupsFilePuts(fp, "*cupsManualCopies: true\n"); ++ cupsFilePuts(fp, "*cupsManualCopies: True\n"); + + /* No resolution requirements by any of the supported PDLs? + Use "printer-resolution-supported" attribute */ diff --git a/cups-filters.spec b/cups-filters.spec index 0ad3943..ab2b79a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -30,6 +30,8 @@ Patch02: cups-browsed.8.patch # upstream decided on keep queues after restart - IMO it causes more issues than it # solves https://github.com/OpenPrinting/cups-filters/issues/241 Patch03: cups-filters-remove-queues-on-restart.patch +# backported from upstream, copies were ignored because typo in ppdgenerator +Patch04: cups-filters-manual-copies.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -147,6 +149,7 @@ This is the development package for OpenPrinting CUPS filters and backends. # links in manpage %patch02 -p1 -b .manpage %patch03 -p1 -b .remove-queues-on-restart +%patch04 -p1 -b .manual-copies %build # work-around Rpath @@ -312,6 +315,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Jul 20 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-2 +- 1848575 - [cups, cups-filters] PPD generators creates invalid cupsManualCopies entry + * Mon Jun 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-1 - 1.27.5 From a784c2a3f08b62e2c5f87db217a76933ed36ca4e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Mon, 27 Jul 2020 14:51:38 +0000 Subject: [PATCH 092/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index ab2b79a..580bb34 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -315,6 +315,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.27.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Mon Jul 20 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-2 - 1848575 - [cups, cups-filters] PPD generators creates invalid cupsManualCopies entry From 9866ec1f82bc948c8a4d3784d9b58823f4b32c54 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 5 Aug 2020 09:56:17 +0200 Subject: [PATCH 093/197] use %make_build and %make_install according FPG --- cups-filters.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 580bb34..60897a6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -178,10 +178,10 @@ This is the development package for OpenPrinting CUPS filters and backends. --enable-driverless \ --enable-pclm -make %{?_smp_mflags} +%make_build %install -make install DESTDIR=%{buildroot} +%make_install # Don't ship libtool la files. rm -f %{buildroot}%{_libdir}/lib*.la @@ -315,6 +315,9 @@ done %{_libdir}/libfontembed.so %changelog +* Wed Aug 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-4 +- use %%make_build and %%make_install according FPG + * Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.27.5-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 970239102aec805f23e4d3ef060607528848c6b0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 5 Aug 2020 10:04:40 +0200 Subject: [PATCH 094/197] own 'new' directories --- cups-filters.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cups-filters.spec b/cups-filters.spec index 60897a6..86b543e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -301,6 +301,7 @@ done %files libs %dir %{_pkgdocdir}/ %{_pkgdocdir}/COPYING +%dir %{_pkgdocdir}/fontembed %{_pkgdocdir}/fontembed/README %{_libdir}/libcupsfilters.so.1* %{_libdir}/libfontembed.so.1* @@ -317,6 +318,7 @@ done %changelog * Wed Aug 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-4 - use %%make_build and %%make_install according FPG +- own 'new' directories * Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.27.5-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From bb10dc7b6fb7afa8b34fa80b96307eacf0f5e610 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 6 Aug 2020 07:22:33 +0200 Subject: [PATCH 095/197] require ipptool explicitly --- cups-filters.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 86b543e..d6a105f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -117,6 +117,9 @@ Requires(postun): systemd Recommends: nss-mdns Recommends: avahi +# ipptool is used in driverless backend, not needed classic PPD based print queue +Recommends: cups-ipptool + %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries # LGPLv2: libcupsfilters @@ -316,6 +319,9 @@ done %{_libdir}/libfontembed.so %changelog +* Thu Aug 06 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-5 +- require ipptool explicitly + * Wed Aug 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-4 - use %%make_build and %%make_install according FPG - own 'new' directories From e0f5d959cd8fe3e92d674fc7e416d97c0cc31160 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 6 Aug 2020 08:25:58 +0200 Subject: [PATCH 096/197] remove buildrequire on ipptool --- cups-filters.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index d6a105f..c56dce1 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -70,8 +70,6 @@ BuildRequires: avahi-devel BuildRequires: pkgconfig(avahi-glib) BuildRequires: pkgconfig(glib-2.0) BuildRequires: systemd -# for test suite -BuildRequires: cups-ipptool # Make sure we get postscriptdriver tags. BuildRequires: python3-cups @@ -321,6 +319,7 @@ done %changelog * Thu Aug 06 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-5 - require ipptool explicitly +- remove buildrequire on ipptool * Wed Aug 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-4 - use %%make_build and %%make_install according FPG From 63ff06c16a813f86388b82e093173904591aa7cc Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 19 Aug 2020 06:45:58 +0200 Subject: [PATCH 097/197] 1867412 - cups-browsed leaks memory --- ...s-browsed.c-Fix-several-memory-leaks.patch | 311 ++++++++++++++++++ cups-filters.spec | 8 +- 2 files changed, 318 insertions(+), 1 deletion(-) create mode 100644 0001-cups-browsed.c-Fix-several-memory-leaks.patch diff --git a/0001-cups-browsed.c-Fix-several-memory-leaks.patch b/0001-cups-browsed.c-Fix-several-memory-leaks.patch new file mode 100644 index 0000000..544631e --- /dev/null +++ b/0001-cups-browsed.c-Fix-several-memory-leaks.patch @@ -0,0 +1,311 @@ +From ee288bfdf0b6f3778d3962087ae8d5fb1890215a Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Tue, 18 Aug 2020 08:01:08 +0200 +Subject: [PATCH] cups-browsed.c: Fix several memory leaks + +--- + utils/cups-browsed.c | 126 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 113 insertions(+), 13 deletions(-) + +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index c5eec9fd..885783ee 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -1409,9 +1409,15 @@ void add_mimetype_attributes(char* cluster_name, ipp_t **merged_attributes) + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_MIMETYPE, + attributes[attr_no], num_value, NULL, + (const char * const *)values); ++ ++ for (int k = 0; k < i; k++) { ++ free(values[k]); ++ values[k] = NULL; ++ } + } ++ cupsArrayDelete(list); ++ list = NULL; + } +- cupsArrayDelete(list); + } + + /*add_tagzero_attributes - Adds attribute to the merged_attribute variable for +@@ -1476,9 +1482,15 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) + IPP_CONST_TAG(IPP_TAG_KEYWORD), + attributes[attr_no], num_value, NULL, + (const char * const *)values); ++ ++ for (int k = 0; k < i; k++) { ++ free(values[k]); ++ values[k] = NULL; ++ } + } ++ cupsArrayDelete(list); ++ list = NULL; + } +- cupsArrayDelete(list); + } + + /*add_keyword_attributes - Adds attributes to the merged_attribute variable for +@@ -1540,9 +1552,15 @@ void add_keyword_attributes(char* cluster_name, ipp_t **merged_attributes) + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, + attributes[attr_no], num_value, NULL, + (const char * const *)values); ++ ++ for (int k = 0; k < i; k++) { ++ free(values[k]); ++ values[k] = NULL; ++ } + } ++ cupsArrayDelete(list); ++ list = NULL; + } +- cupsArrayDelete(list); + } + + /*add_enum_attributes - Adds attributes to the merged_attribute variable for +@@ -1552,7 +1570,7 @@ void add_enum_attributes(char* cluster_name, ipp_t **merged_attributes) + { + int count, i, value; + remote_printer_t *p; +- char *str; ++ char *str = NULL; + char *q; + cups_array_t *list; + ipp_attribute_t *attr; +@@ -1600,8 +1618,14 @@ void add_enum_attributes(char* cluster_name, ipp_t **merged_attributes) + ippAddIntegers(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_ENUM, + attributes[attr_no], num_value,values); + } ++ ++ if (str != NULL) { ++ free(str); ++ str = NULL; ++ } ++ cupsArrayDelete(list); ++ list = NULL; + } +- cupsArrayDelete(list); + } + + /*add_margin_attribute - Adds margin attributes to the merged_attribute variable for the cluster.*/ +@@ -1657,8 +1681,14 @@ void add_margin_attributes(char* cluster_name, ipp_t **merged_attributes) + ippAddIntegers(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_INTEGER, + attributes[attr_no], num_value,values); + } ++ ++ if (str != NULL) { ++ free(str); ++ str = NULL; ++ } ++ cupsArrayDelete(list); ++ list = NULL; + } +- cupsArrayDelete(list); + } + + /*add_resolution_attributes - Adds resolution attributes to the merged_attribute +@@ -1710,8 +1740,9 @@ void add_resolution_attributes(char* cluster_name, ipp_t **merged_attributes) + attributes[attr_no], num_resolution, + IPP_RES_PER_INCH, xres, yres); + } ++ cupsArrayDelete(res_array); ++ res_array = NULL; + } +- cupsArrayDelete(res_array); + } + + /*add_mediasize_attribute - Adds media sizes to the merged_attribute for the +@@ -1810,7 +1841,11 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) + } + } + } ++ ++ free(temp); ++ free(temp_range); + cupsArrayDelete(sizes); ++ cupsArrayDelete(size_ranges); + } + + /*add_mediadatabase_attribute - Adds media-col-database attributes for the +@@ -1928,6 +1963,8 @@ add_mediadatabase_attributes(char* cluster_name, ipp_t **merged_attributes) + } + } + } ++ ++ free(temp); + cupsArrayDelete(media_database); + } + +@@ -1974,8 +2011,11 @@ void add_jobpresets_attribute(char* cluster_name, ipp_t ** merged_attributes) + } + } + +- if (num_preset == 0) ++ if (num_preset == 0) { ++ cupsArrayDelete(list); ++ cupsArrayDelete(added_presets); + return; ++ } + + preset_attribute = ippAddCollections(*merged_attributes, IPP_TAG_PRINTER, + "job-presets-supported", num_preset, +@@ -1998,6 +2038,9 @@ void add_jobpresets_attribute(char* cluster_name, ipp_t ** merged_attributes) + } + } + } ++ ++ cupsArrayDelete(list); ++ cupsArrayDelete(added_presets); + } + + /* get_pagesize: Function returns the standard/custom page size using +@@ -2029,6 +2072,8 @@ static cups_array_t* get_pagesize(ipp_t *printer_attributes) + cupsArrayAdd(page_media, ppdsizename); + } + free(ppdsizename); ++ cupsArrayDelete(sizes); ++ + return page_media; + } + +@@ -2669,8 +2714,14 @@ cups_array_t* get_cluster_sizes(char* cluster_name) + } + } + } ++ ++ cupsArrayDelete(sizes); ++ sizes = NULL; + } + } ++ ++ cupsArrayDelete(sizes_ppdname); ++ + return cluster_sizes; + } + +@@ -2718,6 +2769,9 @@ cups_array_t* generate_cluster_conflicts(char* cluster_name, + cupsArrayAdd(pagesizes, ppdsizename); + } + cluster_options[i] = pagesizes; ++ ++ cupsArrayDelete(sizes); ++ sizes = NULL; + } + } + +@@ -2774,10 +2828,21 @@ cups_array_t* generate_cluster_conflicts(char* cluster_name, + cupsArrayAdd(conflict_pairs, constraint); + } + } ++ ++ cupsArrayDelete(printer_second_options); ++ printer_second_options = NULL; + } + } ++ ++ cupsArrayDelete(printer_first_options); ++ printer_first_options = NULL; + } + } ++ ++ for(i = 0; i < no_of_ppd_keywords; i ++) { ++ cupsArrayDelete(cluster_options[i]); ++ } ++ + free(ppdsizename); + return conflict_pairs; + } +@@ -3010,6 +3075,8 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, + temp->bottom_margin, + temp->media_source, temp->media_type); + ippSetCollection(*merged_attributes, &media_col_default, 0, current_media); ++ ++ free(temp); + } + + /*Finding the default colormodel for the cluster*/ +@@ -3691,7 +3758,8 @@ get_printer_uuid(http_t *http_printer, + const char* raw_uri) + { + ipp_t *response = NULL; +- ipp_attribute_t *attr; ++ ipp_attribute_t *attr = NULL; ++ char * uuid = NULL; + + const char * const pattrs[] = { + "printer-uuid", +@@ -3713,13 +3781,18 @@ get_printer_uuid(http_t *http_printer, + } + + attr = ippFindAttribute(response, "printer-uuid", IPP_TAG_URI); ++ ++ + if (attr) +- return (ippGetString(attr, 0, NULL) + 9); ++ uuid = ippGetString(attr, 0, NULL) + 9; + else { + debug_printf ("Printer with URI %s: Cannot read \"printer-uuid\" IPP attribute!\n", + raw_uri); +- return NULL; + } ++ ++ ippDelete(response); ++ ++ return uuid; + } + + static void +@@ -8114,6 +8187,19 @@ gboolean update_cups_queues(gpointer unused) { + ppdfile = strdup(buffer); + } + } ++ ++ if (num_cluster_printers != 1) { ++ free(default_pagesize); ++ default_pagesize = NULL; ++ free(make_model); ++ make_model = NULL; ++ cupsArrayDelete(conflicts); ++ conflicts = NULL; ++ ippDelete(printer_attributes); ++ printer_attributes = NULL; ++ cupsArrayDelete(sizes); ++ sizes = NULL; ++ } + } else if (IPPPrinterQueueType == PPD_NO) { + ppdfile = NULL; + +@@ -8430,6 +8516,19 @@ gboolean update_cups_queues(gpointer unused) { + } + } + } ++ ++ if (num_cluster_printers != 1) { ++ free(default_pagesize); ++ default_pagesize = NULL; ++ free(make_model); ++ make_model = NULL; ++ cupsArrayDelete(conflicts); ++ conflicts = NULL; ++ ippDelete(printer_attributes); ++ printer_attributes = NULL; ++ cupsArrayDelete(sizes); ++ sizes = NULL; ++ } + } else { + /* Device URI: using implicitclass backend for IPP network printer */ + httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri), +@@ -8531,8 +8630,9 @@ gboolean update_cups_queues(gpointer unused) { + cupsFilePrintf(out, "%s\n", line); + } + /* Save the NickName of the PPD to check whether external +- manipulations of the print queue have replaced the PPD */ +- if (!strncmp(line, "*NickName:", 10)) { ++ manipulations of the print queue have replaced the PPD. ++ Check whether nickname is defined too */ ++ if (!strncmp(line, "*NickName:", 10) && p->nickname == NULL) { + ptr = strchr(line, '"'); + if (ptr) { + ptr ++; +-- +2.26.2 + diff --git a/cups-filters.spec b/cups-filters.spec index c56dce1..3c09e19 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -32,6 +32,8 @@ Patch02: cups-browsed.8.patch Patch03: cups-filters-remove-queues-on-restart.patch # backported from upstream, copies were ignored because typo in ppdgenerator Patch04: cups-filters-manual-copies.patch +# 1867412 - cups-browsed leaks memory +Patch05: 0001-cups-browsed.c-Fix-several-memory-leaks.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -151,6 +153,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %patch02 -p1 -b .manpage %patch03 -p1 -b .remove-queues-on-restart %patch04 -p1 -b .manual-copies +%patch05 -p1 -b .sizes-leak %build # work-around Rpath @@ -317,6 +320,9 @@ done %{_libdir}/libfontembed.so %changelog +* Wed Aug 19 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-6 +- 1867412 - cups-browsed leaks memory + * Thu Aug 06 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-5 - require ipptool explicitly - remove buildrequire on ipptool From f282cc85141b9e58d019181bca1a9de97d9bd7b7 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 24 Aug 2020 07:29:55 +0200 Subject: [PATCH 098/197] use configure option instead of downstream, cups-browsed.conf editing, patch --- ...-configure-option-for-local-queues-n.patch | 90 +++++++++++++++++++ cups-filters-createall.patch | 12 --- cups-filters.spec | 17 ++-- 3 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 0001-configure.ac-Add-configure-option-for-local-queues-n.patch delete mode 100644 cups-filters-createall.patch diff --git a/0001-configure.ac-Add-configure-option-for-local-queues-n.patch b/0001-configure.ac-Add-configure-option-for-local-queues-n.patch new file mode 100644 index 0000000..8d8a6d6 --- /dev/null +++ b/0001-configure.ac-Add-configure-option-for-local-queues-n.patch @@ -0,0 +1,90 @@ +From c2373316af1891f3a2d4af94052f12d2b4c88c49 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Fri, 21 Aug 2020 08:39:28 +0200 +Subject: [PATCH] configure.ac: Add configure option for local queues naming + for remote CUPS queues + +--- + configure.ac | 30 +++++++++++++++++++++++++++--- + utils/cups-browsed.c | 10 +++++++++- + 2 files changed, 36 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 580b107d..20899740 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -850,6 +850,29 @@ PKG_CHECK_EXISTS([liblouis], [ + AM_CONDITIONAL(ENABLE_BRAILLE, test "x$enable_braille" = xyes) + AC_SUBST(TABLESDIR) + ++# ========================================= ++# Local queue naming for remote CUPS queues ++# ========================================= ++AC_ARG_WITH([remote-cups-local-queue-naming], ++ [AS_HELP_STRING([--with-remote-cups-local-queue-naming=DNS-SD|MakeModel|RemoteName], [Choose the origin of local queue naming for remote CUPS queues, default based on DNS-SD ID])], ++ [case "x$withval" in ++ "xMakeModel") ++ REMOTE_CUPS_LOCAL_QUEUE_NAMING="MakeModel" ++ AC_DEFINE([NAMING_MAKE_MODEL], [1], [Define that we create local queues for remote CUPS queues based on printer Make-Model]) ++ ;; ++ "xRemoteName") ++ REMOTE_CUPS_LOCAL_QUEUE_NAMING="RemoteName" ++ AC_DEFINE([NAMING_REMOTE_NAME], [1], [Define that we create local queues for remote CUPS queues based on their print queue name on the server]) ++ ;; ++ *) ++ REMOTE_CUPS_LOCAL_QUEUE_NAMING="DNS-SD" ++ AC_DEFINE([NAMING_DNSSD], [1], [Define that we create local queues for remote CUPS queues based on DNS-SD name]) ++ ;; ++ esac], ++ [REMOTE_CUPS_LOCAL_QUEUE_NAMING="DNS-SD" ++ AC_DEFINE([NAMING_DNSSD], [1], [Define that we create local queues for remote CUPS queues based on DNS-SD name])] ++) ++ + # ========================================================= + # Select a different shell instead of the default /bin/bash + # ========================================================= +@@ -919,9 +942,9 @@ AC_OUTPUT + AC_MSG_NOTICE([ + ============================================================================== + Environment settings: +- CFLAGS: ${CFLAGS} +- CXXFLAGS: ${CXXFLAGS} +- LDFLAGS: ${LDFLAGS} ++ CFLAGS: ${CFLAGS} ++ CXXFLAGS: ${CXXFLAGS} ++ LDFLAGS: ${LDFLAGS} + Build configuration: + cups-config: ${with_cups_config} + font directory: ${sysconfdir}/${FONTDIR} +@@ -955,6 +978,7 @@ Build configuration: + driverless: ${enable_driverless} + apple-raster: ${APPLE_RASTER_FILTER} + pclm: ${enable_pclm} ++ local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} + all ipp printer auto-setup: ${enable_auto_setup_all} + only driverless auto-setup: ${enable_auto_setup_driverless_only} + only local auto-setup: ${enable_auto_setup_local_only} +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 9f0e7b92..64675e1c 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -443,7 +443,15 @@ static unsigned int HttpRemoteTimeout = 10; + static unsigned int HttpMaxRetries = 5; + static unsigned int DNSSDBasedDeviceURIs = 1; + static ip_based_uris_t IPBasedDeviceURIs = IP_BASED_URIS_NO; +-static local_queue_naming_t LocalQueueNamingRemoteCUPS=LOCAL_QUEUE_NAMING_DNSSD; ++#ifdef NAMING_MAKE_MODEL ++static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_MAKE_MODEL; ++#else ++# ifdef NAMING_REMOTE_NAME ++static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_REMOTE_NAME; ++# else ++static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_DNSSD; ++# endif ++#endif + static local_queue_naming_t LocalQueueNamingIPPPrinter=LOCAL_QUEUE_NAMING_DNSSD; + static unsigned int OnlyUnsupportedByCUPS = 0; + static unsigned int UseCUPSGeneratedPPDs = 0; +-- +2.26.2 + diff --git a/cups-filters-createall.patch b/cups-filters-createall.patch deleted file mode 100644 index b200eb4..0000000 --- a/cups-filters-createall.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up cups-filters-1.16.1/utils/cups-browsed.conf.in.createall cups-filters-1.16.1/utils/cups-browsed.conf.in ---- cups-filters-1.16.1/utils/cups-browsed.conf.in.createall 2018-01-02 17:17:51.555941155 +0100 -+++ cups-filters-1.16.1/utils/cups-browsed.conf.in 2018-01-02 17:19:49.651048564 +0100 -@@ -359,7 +359,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTO - - # LocalQueueNamingRemoteCUPS DNS-SD - # LocalQueueNamingRemoteCUPS MakeModel --# LocalQueueNamingRemoteCUPS RemoteName -+LocalQueueNamingRemoteCUPS RemoteName - # LocalQueueNamingIPPPrinter DNS-SD - # LocalQueueNamingIPPPrinter MakeModel - diff --git a/cups-filters.spec b/cups-filters.spec index 3c09e19..7f59bfe 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.27.5 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,8 +20,9 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -# set defaults in cups-browsed.conf -Patch01: cups-filters-createall.patch +# add configure option for local_queue_naming for remote CUPS queues +# backported from upstream +Patch01: 0001-configure.ac-Add-configure-option-for-local-queues-n.patch # Links in man page is wrong - it shows 'cups-browsed' in path, but we # have 'cups-filters' in path, because it is shipped in 'cups-filters' package # instead of 'cups-browsed' as Ubuntu does. I can repack the project later, @@ -148,7 +149,7 @@ This is the development package for OpenPrinting CUPS filters and backends. %setup -q # set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default -%patch01 -p1 -b .createall +%patch01 -p1 -b .add-configure-local-queues # links in manpage %patch02 -p1 -b .manpage %patch03 -p1 -b .remove-queues-on-restart @@ -172,6 +173,8 @@ This is the development package for OpenPrinting CUPS filters and backends. # --disable-silent-rules - verbose build output # --disable-mutool - mupdf is retired in Fedora, use qpdf # --enable-pclm - support for pclm language +# --with-remote-cups-local-queue-naming=RemoteName - name created local queues, which point to +# remote CUPS queue, by its name from the server %configure --disable-static \ --disable-silent-rules \ @@ -180,7 +183,8 @@ This is the development package for OpenPrinting CUPS filters and backends. --with-rcdir=no \ --disable-mutool \ --enable-driverless \ - --enable-pclm + --enable-pclm \ + --with-remote-cups-local-queue-naming=RemoteName %make_build @@ -320,6 +324,9 @@ done %{_libdir}/libfontembed.so %changelog +* Fri Aug 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-7 +- use configure option instead of downstream, cups-browsed.conf editing, patch + * Wed Aug 19 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-6 - 1867412 - cups-browsed leaks memory From 592296aa15fa4a3707d11666d1e42d54f41260a0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 24 Aug 2020 07:37:03 +0200 Subject: [PATCH 099/197] the exact path in cups-browsed manpage was removed, use the patch removing it instead of downstream one --- ...emove-mentions-of-README-and-AUTHORS.patch | 31 +++++++++++++++++++ cups-browsed.8.patch | 14 --------- cups-filters.spec | 8 ++--- 3 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch delete mode 100644 cups-browsed.8.patch diff --git a/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch b/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch new file mode 100644 index 0000000..868d60f --- /dev/null +++ b/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch @@ -0,0 +1,31 @@ +From 6b650f45b21e306db482221223584497a710b54d Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Mon, 15 Jun 2020 14:55:31 +0200 +Subject: [PATCH] cups-browsed.8: Remove mentions of README and AUTHORS files + +--- + utils/cups-browsed.8 | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/utils/cups-browsed.8 b/utils/cups-browsed.8 +index cc8374ce..73c2f686 100644 +--- a/utils/cups-browsed.8 ++++ b/utils/cups-browsed.8 +@@ -96,12 +96,8 @@ that clients running cups 1.6.x plus \fBcups-browsed\fP can use the CUPS + broadcasts from servers with cups 1.5.x. As with browsing of Bonjour + broadcasts, the created local raw queues are available to applications + and command line tools. ++.PP ++This manual page was written for the Debian Project, but it may be used by others. + .SH SEE ALSO + + \fBcups-browsed.conf\fP(5) +-.PP +-/usr/share/doc/\fBcups-browsed\fP/README.gz +-.SH AUTHOR +-The authors of \fBcups-browsed\fP are listed in /usr/share/doc/\fBcups-browsed\fP/AUTHORS. +-.PP +-This manual page was written for the Debian Project, but it may be used by others. +-- +2.26.2 + diff --git a/cups-browsed.8.patch b/cups-browsed.8.patch deleted file mode 100644 index 583c758..0000000 --- a/cups-browsed.8.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up cups-filters-1.20.0/utils/cups-browsed.8.manpage cups-filters-1.20.0/utils/cups-browsed.8 ---- cups-filters-1.20.0/utils/cups-browsed.8.manpage 2018-11-12 14:14:48.436062013 +0100 -+++ cups-filters-1.20.0/utils/cups-browsed.8 2018-11-12 14:19:10.188091043 +0100 -@@ -100,8 +100,8 @@ and command line tools. - - \fBcups-browsed.conf\fP(5) - .PP --/usr/share/doc/\fBcups-browsed\fP/README.gz -+/usr/share/doc/cups-filters/README.gz - .SH AUTHOR --The authors of \fBcups-browsed\fP are listed in /usr/share/doc/\fBcups-browsed\fP/AUTHORS. -+The authors of \fBcups-browsed\fP are listed in /usr/share/doc/cups-filters/AUTHORS. - .PP - This manual page was written for the Debian Project, but it may be used by others. diff --git a/cups-filters.spec b/cups-filters.spec index 7f59bfe..7a7740f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -23,11 +23,8 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio # add configure option for local_queue_naming for remote CUPS queues # backported from upstream Patch01: 0001-configure.ac-Add-configure-option-for-local-queues-n.patch -# Links in man page is wrong - it shows 'cups-browsed' in path, but we -# have 'cups-filters' in path, because it is shipped in 'cups-filters' package -# instead of 'cups-browsed' as Ubuntu does. I can repack the project later, -# so cups-browsed would have separate sub package, so the link would be correct -Patch02: cups-browsed.8.patch +# remove bad paths in man page, backported from upstream +Patch02: 0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch # upstream decided on keep queues after restart - IMO it causes more issues than it # solves https://github.com/OpenPrinting/cups-filters/issues/241 Patch03: cups-filters-remove-queues-on-restart.patch @@ -326,6 +323,7 @@ done %changelog * Fri Aug 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-7 - use configure option instead of downstream, cups-browsed.conf editing, patch +- the exact path in cups-browsed manpage was removed, use the patch removing it instead of downstream one * Wed Aug 19 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-6 - 1867412 - cups-browsed leaks memory From 9003c6ec4bf871af6a337d1726a00a0d445612b3 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 24 Aug 2020 09:05:50 +0200 Subject: [PATCH 100/197] use configure option to dont save queues between restarts instead of downstream patch reverting the issue --- cups-filters-remove-queues-on-restart.patch | 187 ++++---------------- cups-filters.spec | 1 + 2 files changed, 36 insertions(+), 152 deletions(-) diff --git a/cups-filters-remove-queues-on-restart.patch b/cups-filters-remove-queues-on-restart.patch index 33f20f1..907c385 100644 --- a/cups-filters-remove-queues-on-restart.patch +++ b/cups-filters-remove-queues-on-restart.patch @@ -1,162 +1,45 @@ -diff --git a/NEWS b/NEWS -index c2fce749..24d888ce 100644 ---- a/NEWS -+++ b/NEWS -@@ -3,12 +3,6 @@ NEWS - OpenPrinting CUPS Filters v1.27.5 - 2020-06-05 +diff --git a/configure.ac b/configure.ac +index 3c3d68ad..4e2ee330 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -850,6 +850,16 @@ PKG_CHECK_EXISTS([liblouis], [ + AM_CONDITIONAL(ENABLE_BRAILLE, test "x$enable_braille" = xyes) + AC_SUBST(TABLESDIR) - CHANGES IN V1.27.5 - -- - cups-browsed: Do not remove the created local queues on -- shutdown, to avoid their re-creation on restart, so that -- desktops get no cluttered with notifications of new queues -- being created. One can return to the old behavior via -- "KeepGeneratedQueuesOnShutdown No" in cups-browsed.conf -- (Ubuntu bug #1869981, #1878241). - - cups-browsed: Do not accept DNS-SD broadcasts of IPPS type - of "remote" CUPS queues of another CUPS instance on the - local machine. This way we get a local queue pointing to ++# =============================================== ++# Should we keep generated queues after shutdown? ++# =============================================== ++AC_ARG_ENABLE(saving-created-queues, AS_HELP_STRING([--enable-saving-created-queues], [enable saving created queues during shutdown]), ++ [SAVING_CREATED_QUEUES=$enableval],[SAVING_CREATED_QUEUES="no"]) ++ ++AS_IF([test "x$SAVING_CREATED_QUEUES" != "xno"], ++ [AC_DEFINE([SAVING_CREATED_QUEUES], [1], [Define whether we save queues during shutdown])] ++) ++ + # ========================================= + # Local queue naming for remote CUPS queues + # ========================================= +@@ -979,6 +989,7 @@ Build configuration: + apple-raster: ${APPLE_RASTER_FILTER} + pclm: ${enable_pclm} + local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} ++ keep generated queues during shutdown: ${SAVING_CREATED_QUEUES} + all ipp printer auto-setup: ${enable_auto_setup_all} + only driverless auto-setup: ${enable_auto_setup_driverless_only} + only local auto-setup: ${enable_auto_setup_local_only} diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 7ca6724c..dca3972f 100644 +index 59e3c269..00039c49 100644 --- a/utils/cups-browsed.c +++ b/utils/cups-browsed.c -@@ -456,7 +456,6 @@ static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_DRIVERL +@@ -466,7 +466,11 @@ static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_DRIVERL static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_ALL; #endif #endif --static unsigned int KeepGeneratedQueuesOnShutdown = 1; ++#ifdef SAVING_CREATED_QUEUES + static unsigned int KeepGeneratedQueuesOnShutdown = 1; ++#else ++static unsigned int KeepGeneratedQueuesOnShutdown = 0; ++#endif static ipp_queue_type_t IPPPrinterQueueType = PPD_YES; static int NewIPPPrinterQueuesShared = 0; static int AutoClustering = 1; -@@ -10200,17 +10199,9 @@ void avahi_browser_shutdown() { - for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); - p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { - if (p->type && p->type[0]) { -- if (KeepGeneratedQueuesOnShutdown) { -- if (p->status != STATUS_TO_BE_RELEASED && -- p->status != STATUS_DISAPPEARED) { -- p->status = STATUS_UNCONFIRMED; -- p->timeout = time(NULL) + TIMEOUT_CONFIRM; -- } -- } else { -- if (p->status != STATUS_TO_BE_RELEASED) -- p->status = STATUS_DISAPPEARED; -- p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; -- } -+ if (p->status != STATUS_TO_BE_RELEASED) -+ p->status = STATUS_DISAPPEARED; -+ p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; - } - } - if (in_shutdown == 0) -@@ -11645,13 +11636,6 @@ read_configuration (const char *filename) - else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || - !strcasecmp(value, "off") || !strcasecmp(value, "0")) - NewBrowsePollQueuesShared = 0; -- } else if (!strcasecmp(line, "KeepGeneratedQueuesOnShutdown") && value) { -- if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || -- !strcasecmp(value, "on") || !strcasecmp(value, "1")) -- KeepGeneratedQueuesOnShutdown = 1; -- else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || -- !strcasecmp(value, "off") || !strcasecmp(value, "0")) -- KeepGeneratedQueuesOnShutdown = 0; - } else if (!strcasecmp(line, "AutoClustering") && value) { - if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || - !strcasecmp(value, "on") || !strcasecmp(value, "1")) -@@ -12444,13 +12428,12 @@ fail: - g_object_unref (proxy); - - /* Remove all queues which we have set up */ -- if (KeepGeneratedQueuesOnShutdown == 0) -- for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); -- p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { -- if (p->status != STATUS_TO_BE_RELEASED) -- p->status = STATUS_DISAPPEARED; -- p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; -- } -+ for (p = (remote_printer_t *)cupsArrayFirst(remote_printers); -+ p; p = (remote_printer_t *)cupsArrayNext(remote_printers)) { -+ if (p->status != STATUS_TO_BE_RELEASED) -+ p->status = STATUS_DISAPPEARED; -+ p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY; -+ } - update_cups_queues(NULL); - - cancel_subscription (subscription_id); -diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 -index 8ef649fd..99ed3796 100644 ---- a/utils/cups-browsed.conf.5 -+++ b/utils/cups-browsed.conf.5 -@@ -732,27 +732,6 @@ not to share newly discovered IPP printers. - .fam C - NewIPPPrinterQueuesShared Yes - --.fam T --.fi --How to handle the print queues cups-browsed creates when cups-browsed --is shut down: --.PP --"KeepGeneratedQueuesOnShutdown No" makes the queues being --removed. This makes sense as these queues only work while cups-browsed --is running. cups-browsed has to determine to which member printer of a --cluster to pass on the job. --.PP --"KeepGeneratedQueuesOnShutdown Yes" (the default) makes the queues not --being removed. This is the recommended setting for a system where --cups-browsed is permanently running and only stopped for short times --(like log rotation) or on shutdown. This avoids the re-creation of the --queues when cups-browsed is restarted, which often causes a clutter of --CUPS notifications on the desktop. --.PP --.nf --.fam C -- KeepGeneratedQueuesOnShutdown No -- - .fam T - .fi - If there is more than one remote CUPS printer whose local queue -@@ -869,7 +848,7 @@ local queue named "LJ4050": - .fi - As DNS-SD service names are unique in a network you can create a - cluster from exactly specified printers (spaces replaced by --underscores): -+underscors): - .PP - .nf - .fam C -diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in -index 7e248c51..ca4371fe 100644 ---- a/utils/cups-browsed.conf.in -+++ b/utils/cups-browsed.conf.in -@@ -552,23 +552,6 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ - # NewIPPPrinterQueuesShared Yes - - --# How to handle the print queues cups-browsed creates when --# cups-browsed is shut down: -- --# "KeepGeneratedQueuesOnShutdown No" makes the queues being --# removed. This makes sense as these queues only work while --# cups-browsed is running. cups-browsed has to determine to which --# member printer of a cluster to pass on the job. -- --# "KeepGeneratedQueuesOnShutdown Yes" (the default) makes the queues --# not being removed. This is the recommended setting for a system --# where cups-browsed is permanently running and only stopped for short --# times (like log rotation) or on shutdown. This avoids the --# re-creation of the queues when cups-browsed is restarted, which --# often causes a clutter of CUPS notifications on the desktop. -- --# KeepGeneratedQueuesOnShutdown No -- - # If there is more than one remote CUPS printer whose local queue - # would get the same name and AutoClustering is set to "Yes" (the - # default) only one local queue is created which makes up a -@@ -664,7 +647,7 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ - - # As DNS-SD service names are unique in a network you can create a - # cluster from exactly specified printers (spaces replaced by --# underscores): -+# underscors): - - # Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2 - diff --git a/cups-filters.spec b/cups-filters.spec index 7a7740f..9cff1a4 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -324,6 +324,7 @@ done * Fri Aug 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-7 - use configure option instead of downstream, cups-browsed.conf editing, patch - the exact path in cups-browsed manpage was removed, use the patch removing it instead of downstream one +- use configure option to dont save queues between restarts instead of downstream patch reverting the issue * Wed Aug 19 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-6 - 1867412 - cups-browsed leaks memory From 649f2110e910f05550447b90fd7bc9641868b53b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 24 Aug 2020 09:06:48 +0200 Subject: [PATCH 101/197] memory leaks patch is from upstream too --- cups-filters.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 9cff1a4..4011d8e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -30,7 +30,7 @@ Patch02: 0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch Patch03: cups-filters-remove-queues-on-restart.patch # backported from upstream, copies were ignored because typo in ppdgenerator Patch04: cups-filters-manual-copies.patch -# 1867412 - cups-browsed leaks memory +# 1867412 - cups-browsed leaks memory, backported from upstream Patch05: 0001-cups-browsed.c-Fix-several-memory-leaks.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -325,6 +325,7 @@ done - use configure option instead of downstream, cups-browsed.conf editing, patch - the exact path in cups-browsed manpage was removed, use the patch removing it instead of downstream one - use configure option to dont save queues between restarts instead of downstream patch reverting the issue +- memory leaks patch is from upstream too * Wed Aug 19 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-6 - 1867412 - cups-browsed leaks memory From 47bca230580c90d70ea718ce132af3a1c0fbac7f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 28 Aug 2020 08:40:06 +0200 Subject: [PATCH 102/197] 1.28.1 - added driverless fax support --- .gitignore | 1 + ...-configure-option-for-local-queues-n.patch | 90 ----- ...emove-mentions-of-README-and-AUTHORS.patch | 31 -- ...s-browsed.c-Fix-several-memory-leaks.patch | 311 ------------------ ...emoved-all-signal-handling-and-globa.patch | 165 ++++++++++ cups-filters-manual-copies.patch | 13 - cups-filters-remove-queues-on-restart.patch | 45 --- cups-filters.spec | 77 +++-- sources | 2 +- 9 files changed, 220 insertions(+), 515 deletions(-) delete mode 100644 0001-configure.ac-Add-configure-option-for-local-queues-n.patch delete mode 100644 0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch delete mode 100644 0001-cups-browsed.c-Fix-several-memory-leaks.patch create mode 100644 0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch delete mode 100644 cups-filters-manual-copies.patch delete mode 100644 cups-filters-remove-queues-on-restart.patch diff --git a/.gitignore b/.gitignore index ea2a123..7fde2f5 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,4 @@ /cups-filters-1.27.3.tar.xz /cups-filters-1.27.4.tar.xz /cups-filters-1.27.5.tar.xz +/cups-filters-1.28.1.tar.xz diff --git a/0001-configure.ac-Add-configure-option-for-local-queues-n.patch b/0001-configure.ac-Add-configure-option-for-local-queues-n.patch deleted file mode 100644 index 8d8a6d6..0000000 --- a/0001-configure.ac-Add-configure-option-for-local-queues-n.patch +++ /dev/null @@ -1,90 +0,0 @@ -From c2373316af1891f3a2d4af94052f12d2b4c88c49 Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Fri, 21 Aug 2020 08:39:28 +0200 -Subject: [PATCH] configure.ac: Add configure option for local queues naming - for remote CUPS queues - ---- - configure.ac | 30 +++++++++++++++++++++++++++--- - utils/cups-browsed.c | 10 +++++++++- - 2 files changed, 36 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 580b107d..20899740 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -850,6 +850,29 @@ PKG_CHECK_EXISTS([liblouis], [ - AM_CONDITIONAL(ENABLE_BRAILLE, test "x$enable_braille" = xyes) - AC_SUBST(TABLESDIR) - -+# ========================================= -+# Local queue naming for remote CUPS queues -+# ========================================= -+AC_ARG_WITH([remote-cups-local-queue-naming], -+ [AS_HELP_STRING([--with-remote-cups-local-queue-naming=DNS-SD|MakeModel|RemoteName], [Choose the origin of local queue naming for remote CUPS queues, default based on DNS-SD ID])], -+ [case "x$withval" in -+ "xMakeModel") -+ REMOTE_CUPS_LOCAL_QUEUE_NAMING="MakeModel" -+ AC_DEFINE([NAMING_MAKE_MODEL], [1], [Define that we create local queues for remote CUPS queues based on printer Make-Model]) -+ ;; -+ "xRemoteName") -+ REMOTE_CUPS_LOCAL_QUEUE_NAMING="RemoteName" -+ AC_DEFINE([NAMING_REMOTE_NAME], [1], [Define that we create local queues for remote CUPS queues based on their print queue name on the server]) -+ ;; -+ *) -+ REMOTE_CUPS_LOCAL_QUEUE_NAMING="DNS-SD" -+ AC_DEFINE([NAMING_DNSSD], [1], [Define that we create local queues for remote CUPS queues based on DNS-SD name]) -+ ;; -+ esac], -+ [REMOTE_CUPS_LOCAL_QUEUE_NAMING="DNS-SD" -+ AC_DEFINE([NAMING_DNSSD], [1], [Define that we create local queues for remote CUPS queues based on DNS-SD name])] -+) -+ - # ========================================================= - # Select a different shell instead of the default /bin/bash - # ========================================================= -@@ -919,9 +942,9 @@ AC_OUTPUT - AC_MSG_NOTICE([ - ============================================================================== - Environment settings: -- CFLAGS: ${CFLAGS} -- CXXFLAGS: ${CXXFLAGS} -- LDFLAGS: ${LDFLAGS} -+ CFLAGS: ${CFLAGS} -+ CXXFLAGS: ${CXXFLAGS} -+ LDFLAGS: ${LDFLAGS} - Build configuration: - cups-config: ${with_cups_config} - font directory: ${sysconfdir}/${FONTDIR} -@@ -955,6 +978,7 @@ Build configuration: - driverless: ${enable_driverless} - apple-raster: ${APPLE_RASTER_FILTER} - pclm: ${enable_pclm} -+ local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} - all ipp printer auto-setup: ${enable_auto_setup_all} - only driverless auto-setup: ${enable_auto_setup_driverless_only} - only local auto-setup: ${enable_auto_setup_local_only} -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 9f0e7b92..64675e1c 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -443,7 +443,15 @@ static unsigned int HttpRemoteTimeout = 10; - static unsigned int HttpMaxRetries = 5; - static unsigned int DNSSDBasedDeviceURIs = 1; - static ip_based_uris_t IPBasedDeviceURIs = IP_BASED_URIS_NO; --static local_queue_naming_t LocalQueueNamingRemoteCUPS=LOCAL_QUEUE_NAMING_DNSSD; -+#ifdef NAMING_MAKE_MODEL -+static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_MAKE_MODEL; -+#else -+# ifdef NAMING_REMOTE_NAME -+static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_REMOTE_NAME; -+# else -+static local_queue_naming_t LocalQueueNamingRemoteCUPS = LOCAL_QUEUE_NAMING_DNSSD; -+# endif -+#endif - static local_queue_naming_t LocalQueueNamingIPPPrinter=LOCAL_QUEUE_NAMING_DNSSD; - static unsigned int OnlyUnsupportedByCUPS = 0; - static unsigned int UseCUPSGeneratedPPDs = 0; --- -2.26.2 - diff --git a/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch b/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch deleted file mode 100644 index 868d60f..0000000 --- a/0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 6b650f45b21e306db482221223584497a710b54d Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Mon, 15 Jun 2020 14:55:31 +0200 -Subject: [PATCH] cups-browsed.8: Remove mentions of README and AUTHORS files - ---- - utils/cups-browsed.8 | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/utils/cups-browsed.8 b/utils/cups-browsed.8 -index cc8374ce..73c2f686 100644 ---- a/utils/cups-browsed.8 -+++ b/utils/cups-browsed.8 -@@ -96,12 +96,8 @@ that clients running cups 1.6.x plus \fBcups-browsed\fP can use the CUPS - broadcasts from servers with cups 1.5.x. As with browsing of Bonjour - broadcasts, the created local raw queues are available to applications - and command line tools. -+.PP -+This manual page was written for the Debian Project, but it may be used by others. - .SH SEE ALSO - - \fBcups-browsed.conf\fP(5) --.PP --/usr/share/doc/\fBcups-browsed\fP/README.gz --.SH AUTHOR --The authors of \fBcups-browsed\fP are listed in /usr/share/doc/\fBcups-browsed\fP/AUTHORS. --.PP --This manual page was written for the Debian Project, but it may be used by others. --- -2.26.2 - diff --git a/0001-cups-browsed.c-Fix-several-memory-leaks.patch b/0001-cups-browsed.c-Fix-several-memory-leaks.patch deleted file mode 100644 index 544631e..0000000 --- a/0001-cups-browsed.c-Fix-several-memory-leaks.patch +++ /dev/null @@ -1,311 +0,0 @@ -From ee288bfdf0b6f3778d3962087ae8d5fb1890215a Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Tue, 18 Aug 2020 08:01:08 +0200 -Subject: [PATCH] cups-browsed.c: Fix several memory leaks - ---- - utils/cups-browsed.c | 126 ++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 113 insertions(+), 13 deletions(-) - -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index c5eec9fd..885783ee 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -1409,9 +1409,15 @@ void add_mimetype_attributes(char* cluster_name, ipp_t **merged_attributes) - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_MIMETYPE, - attributes[attr_no], num_value, NULL, - (const char * const *)values); -+ -+ for (int k = 0; k < i; k++) { -+ free(values[k]); -+ values[k] = NULL; -+ } - } -+ cupsArrayDelete(list); -+ list = NULL; - } -- cupsArrayDelete(list); - } - - /*add_tagzero_attributes - Adds attribute to the merged_attribute variable for -@@ -1476,9 +1482,15 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) - IPP_CONST_TAG(IPP_TAG_KEYWORD), - attributes[attr_no], num_value, NULL, - (const char * const *)values); -+ -+ for (int k = 0; k < i; k++) { -+ free(values[k]); -+ values[k] = NULL; -+ } - } -+ cupsArrayDelete(list); -+ list = NULL; - } -- cupsArrayDelete(list); - } - - /*add_keyword_attributes - Adds attributes to the merged_attribute variable for -@@ -1540,9 +1552,15 @@ void add_keyword_attributes(char* cluster_name, ipp_t **merged_attributes) - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, - attributes[attr_no], num_value, NULL, - (const char * const *)values); -+ -+ for (int k = 0; k < i; k++) { -+ free(values[k]); -+ values[k] = NULL; -+ } - } -+ cupsArrayDelete(list); -+ list = NULL; - } -- cupsArrayDelete(list); - } - - /*add_enum_attributes - Adds attributes to the merged_attribute variable for -@@ -1552,7 +1570,7 @@ void add_enum_attributes(char* cluster_name, ipp_t **merged_attributes) - { - int count, i, value; - remote_printer_t *p; -- char *str; -+ char *str = NULL; - char *q; - cups_array_t *list; - ipp_attribute_t *attr; -@@ -1600,8 +1618,14 @@ void add_enum_attributes(char* cluster_name, ipp_t **merged_attributes) - ippAddIntegers(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_ENUM, - attributes[attr_no], num_value,values); - } -+ -+ if (str != NULL) { -+ free(str); -+ str = NULL; -+ } -+ cupsArrayDelete(list); -+ list = NULL; - } -- cupsArrayDelete(list); - } - - /*add_margin_attribute - Adds margin attributes to the merged_attribute variable for the cluster.*/ -@@ -1657,8 +1681,14 @@ void add_margin_attributes(char* cluster_name, ipp_t **merged_attributes) - ippAddIntegers(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_INTEGER, - attributes[attr_no], num_value,values); - } -+ -+ if (str != NULL) { -+ free(str); -+ str = NULL; -+ } -+ cupsArrayDelete(list); -+ list = NULL; - } -- cupsArrayDelete(list); - } - - /*add_resolution_attributes - Adds resolution attributes to the merged_attribute -@@ -1710,8 +1740,9 @@ void add_resolution_attributes(char* cluster_name, ipp_t **merged_attributes) - attributes[attr_no], num_resolution, - IPP_RES_PER_INCH, xres, yres); - } -+ cupsArrayDelete(res_array); -+ res_array = NULL; - } -- cupsArrayDelete(res_array); - } - - /*add_mediasize_attribute - Adds media sizes to the merged_attribute for the -@@ -1810,7 +1841,11 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) - } - } - } -+ -+ free(temp); -+ free(temp_range); - cupsArrayDelete(sizes); -+ cupsArrayDelete(size_ranges); - } - - /*add_mediadatabase_attribute - Adds media-col-database attributes for the -@@ -1928,6 +1963,8 @@ add_mediadatabase_attributes(char* cluster_name, ipp_t **merged_attributes) - } - } - } -+ -+ free(temp); - cupsArrayDelete(media_database); - } - -@@ -1974,8 +2011,11 @@ void add_jobpresets_attribute(char* cluster_name, ipp_t ** merged_attributes) - } - } - -- if (num_preset == 0) -+ if (num_preset == 0) { -+ cupsArrayDelete(list); -+ cupsArrayDelete(added_presets); - return; -+ } - - preset_attribute = ippAddCollections(*merged_attributes, IPP_TAG_PRINTER, - "job-presets-supported", num_preset, -@@ -1998,6 +2038,9 @@ void add_jobpresets_attribute(char* cluster_name, ipp_t ** merged_attributes) - } - } - } -+ -+ cupsArrayDelete(list); -+ cupsArrayDelete(added_presets); - } - - /* get_pagesize: Function returns the standard/custom page size using -@@ -2029,6 +2072,8 @@ static cups_array_t* get_pagesize(ipp_t *printer_attributes) - cupsArrayAdd(page_media, ppdsizename); - } - free(ppdsizename); -+ cupsArrayDelete(sizes); -+ - return page_media; - } - -@@ -2669,8 +2714,14 @@ cups_array_t* get_cluster_sizes(char* cluster_name) - } - } - } -+ -+ cupsArrayDelete(sizes); -+ sizes = NULL; - } - } -+ -+ cupsArrayDelete(sizes_ppdname); -+ - return cluster_sizes; - } - -@@ -2718,6 +2769,9 @@ cups_array_t* generate_cluster_conflicts(char* cluster_name, - cupsArrayAdd(pagesizes, ppdsizename); - } - cluster_options[i] = pagesizes; -+ -+ cupsArrayDelete(sizes); -+ sizes = NULL; - } - } - -@@ -2774,10 +2828,21 @@ cups_array_t* generate_cluster_conflicts(char* cluster_name, - cupsArrayAdd(conflict_pairs, constraint); - } - } -+ -+ cupsArrayDelete(printer_second_options); -+ printer_second_options = NULL; - } - } -+ -+ cupsArrayDelete(printer_first_options); -+ printer_first_options = NULL; - } - } -+ -+ for(i = 0; i < no_of_ppd_keywords; i ++) { -+ cupsArrayDelete(cluster_options[i]); -+ } -+ - free(ppdsizename); - return conflict_pairs; - } -@@ -3010,6 +3075,8 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, - temp->bottom_margin, - temp->media_source, temp->media_type); - ippSetCollection(*merged_attributes, &media_col_default, 0, current_media); -+ -+ free(temp); - } - - /*Finding the default colormodel for the cluster*/ -@@ -3691,7 +3758,8 @@ get_printer_uuid(http_t *http_printer, - const char* raw_uri) - { - ipp_t *response = NULL; -- ipp_attribute_t *attr; -+ ipp_attribute_t *attr = NULL; -+ char * uuid = NULL; - - const char * const pattrs[] = { - "printer-uuid", -@@ -3713,13 +3781,18 @@ get_printer_uuid(http_t *http_printer, - } - - attr = ippFindAttribute(response, "printer-uuid", IPP_TAG_URI); -+ -+ - if (attr) -- return (ippGetString(attr, 0, NULL) + 9); -+ uuid = ippGetString(attr, 0, NULL) + 9; - else { - debug_printf ("Printer with URI %s: Cannot read \"printer-uuid\" IPP attribute!\n", - raw_uri); -- return NULL; - } -+ -+ ippDelete(response); -+ -+ return uuid; - } - - static void -@@ -8114,6 +8187,19 @@ gboolean update_cups_queues(gpointer unused) { - ppdfile = strdup(buffer); - } - } -+ -+ if (num_cluster_printers != 1) { -+ free(default_pagesize); -+ default_pagesize = NULL; -+ free(make_model); -+ make_model = NULL; -+ cupsArrayDelete(conflicts); -+ conflicts = NULL; -+ ippDelete(printer_attributes); -+ printer_attributes = NULL; -+ cupsArrayDelete(sizes); -+ sizes = NULL; -+ } - } else if (IPPPrinterQueueType == PPD_NO) { - ppdfile = NULL; - -@@ -8430,6 +8516,19 @@ gboolean update_cups_queues(gpointer unused) { - } - } - } -+ -+ if (num_cluster_printers != 1) { -+ free(default_pagesize); -+ default_pagesize = NULL; -+ free(make_model); -+ make_model = NULL; -+ cupsArrayDelete(conflicts); -+ conflicts = NULL; -+ ippDelete(printer_attributes); -+ printer_attributes = NULL; -+ cupsArrayDelete(sizes); -+ sizes = NULL; -+ } - } else { - /* Device URI: using implicitclass backend for IPP network printer */ - httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri), -@@ -8531,8 +8630,9 @@ gboolean update_cups_queues(gpointer unused) { - cupsFilePrintf(out, "%s\n", line); - } - /* Save the NickName of the PPD to check whether external -- manipulations of the print queue have replaced the PPD */ -- if (!strncmp(line, "*NickName:", 10)) { -+ manipulations of the print queue have replaced the PPD. -+ Check whether nickname is defined too */ -+ if (!strncmp(line, "*NickName:", 10) && p->nickname == NULL) { - ptr = strchr(line, '"'); - if (ptr) { - ptr ++; --- -2.26.2 - diff --git a/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch b/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch new file mode 100644 index 0000000..a8aedfa --- /dev/null +++ b/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch @@ -0,0 +1,165 @@ +From ffce73c94f92c9a1b193858b96399e319268a1fa Mon Sep 17 00:00:00 2001 +From: Till Kamppeter <till.kamppeter@gmail.com> +Date: Thu, 27 Aug 2020 15:45:22 +0200 +Subject: [PATCH] libcupsfilters: Removed all signal handling and global + variables from get_printer_attributes() and ippfind_based_uri_converter() + +(cherry picked from commit 23a9dc4010cefe239b8393e4500eb834b0f5ee32) +--- + cupsfilters/ipp.c | 86 ++++------------------------------------------- + 1 file changed, 6 insertions(+), 80 deletions(-) + +diff --git a/cupsfilters/ipp.c b/cupsfilters/ipp.c +index c9138fe2..21861a59 100644 +--- a/cupsfilters/ipp.c ++++ b/cupsfilters/ipp.c +@@ -36,25 +36,24 @@ + #if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) + #define HAVE_CUPS_1_6 1 + #endif +-static int debug = 0; +-static int job_canceled = 0; +-static void cancel_job(int sig); + + enum resolve_uri_converter_type /**** Resolving DNS-SD based URI ****/ + { + CUPS_BACKEND_URI_CONVERTER = -1, + IPPFIND_BASED_CONVERTER_FOR_PRINT_URI = 0, + IPPFIND_BASED_CONVERTER_FOR_FAX_URI = 1 +-} ; ++}; ++ + static int + convert_to_port(char *a) + { + int port = 0; +- for( int i = 0; i<strlen(a); i++) ++ for (int i = 0; i<strlen(a); i++) + port = port*10 + (a[i] - '0'); +- ++ + return (port); + } ++ + void + log_printf(char *log, + const char *format, ...) +@@ -232,38 +231,7 @@ get_printer_attributes5(http_t *http_printer, + "uri-security-supported" + }; + +-#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) +- struct sigaction action; /* Actions for POSIX signals */ +-#endif /* HAVE_SIGACTION && !HAVE_SIGSET */ +- +- /* +- * Make sure status messages are not buffered... +- */ +- +- setbuf(stderr, NULL); +- +- /* +- * Ignore broken pipe signals... +- */ +- +- signal(SIGPIPE, SIG_IGN); +- +- /* +- * Register a signal handler to cleanly cancel a job. +- */ +- +-#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ +- sigset(SIGTERM, cancel_job); +-#elif defined(HAVE_SIGACTION) +- memset(&action, 0, sizeof(action)); +- sigemptyset(&action.sa_mask); +- action.sa_handler = cancel_job; +- sigaction(SIGTERM, &action, NULL); +-#else +- signal(SIGTERM, cancel_job); +-#endif /* HAVE_SIGSET */ +- +- /* Expect a device capable of standard IPP Everywhere*/ ++ /* Expect a device capable of standard IPP Everywhere */ + if (driverless_info != NULL) + *driverless_info = FULL_DRVLESS; + +@@ -549,10 +517,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + goto error; + } + +- if (debug) +- fprintf(stderr, "DEBUG: Started %s (PID %d)\n", ippfind_argv[0], +- ippfind_pid); +- + dup2(post_proc_pipe[0], 0); + close(post_proc_pipe[0]); + close(post_proc_pipe[1]); +@@ -617,10 +581,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + */ + + while ((wait_pid = wait(&wait_status)) < 0 && errno == EINTR) { +- if (job_canceled) { +- kill(ippfind_pid, SIGTERM); +- job_canceled = 0; +- } + } + + if (wait_pid < 0) +@@ -635,34 +595,12 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + if (wait_status) { + if (WIFEXITED(wait_status)) { + exit_status = WEXITSTATUS(wait_status); +- +- if (debug) +- fprintf(stderr, "DEBUG: PID %d (%s) stopped with status %d!\n", +- wait_pid, +- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), +- exit_status); +- + if (wait_pid == ippfind_pid && exit_status <= 2) + exit_status = 0; + } else if (WTERMSIG(wait_status) == SIGTERM) { +- if (debug) +- fprintf(stderr, +- "DEBUG: PID %d (%s) was terminated normally with signal %d!\n", +- wait_pid, +- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), +- exit_status); + } else { + exit_status = WTERMSIG(wait_status); +- if (debug) +- fprintf(stderr, "DEBUG: PID %d (%s) crashed on signal %d!\n", +- wait_pid, +- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), +- exit_status); + } +- } else { +- if (debug) +- fprintf(stderr, "DEBUG: PID %d (%s) exited with no errors.\n",wait_pid, +- (wait_pid == ippfind_pid ? "ippfind" :"Unknown process")); + } + } + if (is_fax && !output_of_fax_uri) { +@@ -679,18 +617,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + error: + return (NULL); + } +- +-/* +- * 'cancel_job()' - Flag the job as canceled. +- */ +- +-static void +-cancel_job(int sig) /* I - Signal number (unused) */ +-{ +- (void)sig; +- +- job_canceled = 1; +-} + + + #endif /* HAVE_CUPS_1_6 */ +-- +2.26.2 + diff --git a/cups-filters-manual-copies.patch b/cups-filters-manual-copies.patch deleted file mode 100644 index edf2175..0000000 --- a/cups-filters-manual-copies.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 55801af..428a23e 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -2062,7 +2062,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - format, we need to create multiple copies on the client. We add a line to - the PPD which tells the pdftopdf filter to generate the copies */ - if (manual_copies == 1) -- cupsFilePuts(fp, "*cupsManualCopies: true\n"); -+ cupsFilePuts(fp, "*cupsManualCopies: True\n"); - - /* No resolution requirements by any of the supported PDLs? - Use "printer-resolution-supported" attribute */ diff --git a/cups-filters-remove-queues-on-restart.patch b/cups-filters-remove-queues-on-restart.patch deleted file mode 100644 index 907c385..0000000 --- a/cups-filters-remove-queues-on-restart.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 3c3d68ad..4e2ee330 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -850,6 +850,16 @@ PKG_CHECK_EXISTS([liblouis], [ - AM_CONDITIONAL(ENABLE_BRAILLE, test "x$enable_braille" = xyes) - AC_SUBST(TABLESDIR) - -+# =============================================== -+# Should we keep generated queues after shutdown? -+# =============================================== -+AC_ARG_ENABLE(saving-created-queues, AS_HELP_STRING([--enable-saving-created-queues], [enable saving created queues during shutdown]), -+ [SAVING_CREATED_QUEUES=$enableval],[SAVING_CREATED_QUEUES="no"]) -+ -+AS_IF([test "x$SAVING_CREATED_QUEUES" != "xno"], -+ [AC_DEFINE([SAVING_CREATED_QUEUES], [1], [Define whether we save queues during shutdown])] -+) -+ - # ========================================= - # Local queue naming for remote CUPS queues - # ========================================= -@@ -979,6 +989,7 @@ Build configuration: - apple-raster: ${APPLE_RASTER_FILTER} - pclm: ${enable_pclm} - local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} -+ keep generated queues during shutdown: ${SAVING_CREATED_QUEUES} - all ipp printer auto-setup: ${enable_auto_setup_all} - only driverless auto-setup: ${enable_auto_setup_driverless_only} - only local auto-setup: ${enable_auto_setup_local_only} -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 59e3c269..00039c49 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -466,7 +466,11 @@ static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_DRIVERL - static create_ipp_printer_queues_t CreateIPPPrinterQueues = IPP_PRINTERS_ALL; - #endif - #endif -+#ifdef SAVING_CREATED_QUEUES - static unsigned int KeepGeneratedQueuesOnShutdown = 1; -+#else -+static unsigned int KeepGeneratedQueuesOnShutdown = 0; -+#endif - static ipp_queue_type_t IPPPrinterQueueType = PPD_YES; - static int NewIPPPrinterQueuesShared = 0; - static int AutoClustering = 1; diff --git a/cups-filters.spec b/cups-filters.spec index 4011d8e..740b20e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.27.5 -Release: 7%{?dist} +Version: 1.28.1 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,18 +20,7 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -# add configure option for local_queue_naming for remote CUPS queues -# backported from upstream -Patch01: 0001-configure.ac-Add-configure-option-for-local-queues-n.patch -# remove bad paths in man page, backported from upstream -Patch02: 0001-cups-browsed.8-Remove-mentions-of-README-and-AUTHORS.patch -# upstream decided on keep queues after restart - IMO it causes more issues than it -# solves https://github.com/OpenPrinting/cups-filters/issues/241 -Patch03: cups-filters-remove-queues-on-restart.patch -# backported from upstream, copies were ignored because typo in ppdgenerator -Patch04: cups-filters-manual-copies.patch -# 1867412 - cups-browsed leaks memory, backported from upstream -Patch05: 0001-cups-browsed.c-Fix-several-memory-leaks.patch +Patch01: 0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -44,6 +33,8 @@ Requires: cups-filters-libs%{?_isa} = %{version}-%{release} BuildRequires: gcc # gcc-c++ for pdftoopvp, pdftopdf BuildRequires: gcc-c++ +# for autosetup +BuildRequires: git BuildRequires: cups-devel BuildRequires: pkgconf-pkg-config @@ -143,15 +134,7 @@ This package provides cupsfilters and fontembed libraries. This is the development package for OpenPrinting CUPS filters and backends. %prep -%setup -q - -# set LocalQueueNamingRemoteCUPS and CreateIPPPrinterQueues by default -%patch01 -p1 -b .add-configure-local-queues -# links in manpage -%patch02 -p1 -b .manpage -%patch03 -p1 -b .remove-queues-on-restart -%patch04 -p1 -b .manual-copies -%patch05 -p1 -b .sizes-leak +%autosetup -S git %build # work-around Rpath @@ -253,7 +236,47 @@ done %{_pkgdocdir}/AUTHORS %{_pkgdocdir}/NEWS %config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf -%attr(0755,root,root) %{_cups_serverbin}/filter/* +%{_cups_serverbin}/filter/cgmtopdf +%{_cups_serverbin}/filter/cmxtopdf +%{_cups_serverbin}/filter/emftopdf +%{_cups_serverbin}/filter/imagetoubrl +%{_cups_serverbin}/filter/svgtopdf +%{_cups_serverbin}/filter/textbrftoindexv4 +%{_cups_serverbin}/filter/vectortoubrl +%{_cups_serverbin}/filter/wmftopdf +%{_cups_serverbin}/filter/xfigtopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser +%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf +%attr(0755,root,root) %{_cups_serverbin}/filter/commandtoescpx +%attr(0755,root,root) %{_cups_serverbin}/filter/commandtopclx +%attr(0755,root,root) %{_cups_serverbin}/filter/foomatic-rip +%attr(0755,root,root) %{_cups_serverbin}/filter/gstopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/gstopxl +%attr(0755,root,root) %{_cups_serverbin}/filter/gstoraster +%attr(0755,root,root) %{_cups_serverbin}/filter/imagetobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/imagetopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/imagetops +%attr(0755,root,root) %{_cups_serverbin}/filter/imagetoraster +%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv3 +%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv4 +%attr(0755,root,root) %{_cups_serverbin}/filter/musicxmltobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/pdftopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/pdftops +%attr(0755,root,root) %{_cups_serverbin}/filter/pdftoraster +%attr(0755,root,root) %{_cups_serverbin}/filter/rastertoescpx +%attr(0755,root,root) %{_cups_serverbin}/filter/rastertopclm +%attr(0755,root,root) %{_cups_serverbin}/filter/rastertopclx +%attr(0755,root,root) %{_cups_serverbin}/filter/rastertopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/rastertops +%attr(0755,root,root) %{_cups_serverbin}/filter/sys5ippprinter +%attr(0755,root,root) %{_cups_serverbin}/filter/textbrftoindexv3 +%attr(0755,root,root) %{_cups_serverbin}/filter/texttobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/texttopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/texttops +%attr(0755,root,root) %{_cups_serverbin}/filter/texttotext +%attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf # all backends needs to be run only as root because of kerberos %attr(0700,root,root) %{_cups_serverbin}/backend/parallel # Serial backend needs to run as root (bug #212577#c4). @@ -266,8 +289,11 @@ done %attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf %{_bindir}/foomatic-rip %{_bindir}/driverless +%{_bindir}/driverless-fax %{_cups_serverbin}/backend/driverless +%{_cups_serverbin}/backend/driverless-fax %{_cups_serverbin}/driver/driverless +%{_cups_serverbin}/driver/driverless-fax %{_datadir}/cups/banners %{_datadir}/cups/braille %{_datadir}/cups/charsets @@ -321,6 +347,9 @@ done %{_libdir}/libfontembed.so %changelog +* Thu Aug 27 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-1 +- 1.28.1 - added driverless fax support + * Fri Aug 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.27.5-7 - use configure option instead of downstream, cups-browsed.conf editing, patch - the exact path in cups-browsed manpage was removed, use the patch removing it instead of downstream one diff --git a/sources b/sources index ca231de..ba96251 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.27.5.tar.xz) = 8bc917b2a168add1062d091d02d99c39d72861c0d0cb1242c34b2bf117c9943e7fdc1fe002de7cde4cb1919fbce41073adc34916c328fc99e66e389b0a4fe103 +SHA512 (cups-filters-1.28.1.tar.xz) = 23f6fa31e2c64aaa1b7321280bb92dffb25456289c21aa91aec46afca80a8b4e9ea6697ed5ed574d4bbb0c2ab790618cc926d46bb35f2eec576d0ab88a0f2aff From 1b2594f02a535f6143ec4e88efba4ec507d59aa8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 31 Aug 2020 16:25:04 +0200 Subject: [PATCH 103/197] MDNS resolving should be done by systemd-resolved now --- cups-filters.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 740b20e..293b4a8 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.1 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -100,10 +100,10 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues -# or device during discovery for newer (2012+) devices - make it recommended together -# with avahi - needed for device discovery as well +%if 0%{?fedora} <= 33 || 0%{?rhel} <= 8 Recommends: nss-mdns +%endif +# avahi is needed for device discovery Recommends: avahi # ipptool is used in driverless backend, not needed classic PPD based print queue @@ -347,6 +347,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Aug 31 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-2 +- MDNS resolving should be done by systemd-resolved now + * Thu Aug 27 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-1 - 1.28.1 - added driverless fax support From 91fd1dacc772ed6b3c9b756ae343f3a0fe780d3e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 3 Sep 2020 12:51:54 +0200 Subject: [PATCH 104/197] revert previous commit - systemd-resolved doesn't work with avahi right now because missing link in NetworkManager --- cups-filters.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 293b4a8..8a590f0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -100,9 +100,10 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -%if 0%{?fedora} <= 33 || 0%{?rhel} <= 8 +# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues +# or device during discovery for newer (2012+) devices - make it recommended together +# with avahi - needed for device discovery as well Recommends: nss-mdns -%endif # avahi is needed for device discovery Recommends: avahi @@ -347,6 +348,10 @@ done %{_libdir}/libfontembed.so %changelog +* Thu Sep 03 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-2 +- revert previous commit - systemd-resolved doesn't work with avahi right now + because missing link in NetworkManager + * Mon Aug 31 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-2 - MDNS resolving should be done by systemd-resolved now From 3b950f0025c188f532aabfb085b26d4ec9024a43 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 15 Sep 2020 13:10:05 +0200 Subject: [PATCH 105/197] 1.28.2 --- .gitignore | 1 + ...emoved-all-signal-handling-and-globa.patch | 165 ------------------ cups-filters.spec | 8 +- sources | 2 +- 4 files changed, 7 insertions(+), 169 deletions(-) delete mode 100644 0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch diff --git a/.gitignore b/.gitignore index 7fde2f5..a46ad1a 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,4 @@ /cups-filters-1.27.4.tar.xz /cups-filters-1.27.5.tar.xz /cups-filters-1.28.1.tar.xz +/cups-filters-1.28.2.tar.xz diff --git a/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch b/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch deleted file mode 100644 index a8aedfa..0000000 --- a/0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch +++ /dev/null @@ -1,165 +0,0 @@ -From ffce73c94f92c9a1b193858b96399e319268a1fa Mon Sep 17 00:00:00 2001 -From: Till Kamppeter <till.kamppeter@gmail.com> -Date: Thu, 27 Aug 2020 15:45:22 +0200 -Subject: [PATCH] libcupsfilters: Removed all signal handling and global - variables from get_printer_attributes() and ippfind_based_uri_converter() - -(cherry picked from commit 23a9dc4010cefe239b8393e4500eb834b0f5ee32) ---- - cupsfilters/ipp.c | 86 ++++------------------------------------------- - 1 file changed, 6 insertions(+), 80 deletions(-) - -diff --git a/cupsfilters/ipp.c b/cupsfilters/ipp.c -index c9138fe2..21861a59 100644 ---- a/cupsfilters/ipp.c -+++ b/cupsfilters/ipp.c -@@ -36,25 +36,24 @@ - #if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) - #define HAVE_CUPS_1_6 1 - #endif --static int debug = 0; --static int job_canceled = 0; --static void cancel_job(int sig); - - enum resolve_uri_converter_type /**** Resolving DNS-SD based URI ****/ - { - CUPS_BACKEND_URI_CONVERTER = -1, - IPPFIND_BASED_CONVERTER_FOR_PRINT_URI = 0, - IPPFIND_BASED_CONVERTER_FOR_FAX_URI = 1 --} ; -+}; -+ - static int - convert_to_port(char *a) - { - int port = 0; -- for( int i = 0; i<strlen(a); i++) -+ for (int i = 0; i<strlen(a); i++) - port = port*10 + (a[i] - '0'); -- -+ - return (port); - } -+ - void - log_printf(char *log, - const char *format, ...) -@@ -232,38 +231,7 @@ get_printer_attributes5(http_t *http_printer, - "uri-security-supported" - }; - --#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) -- struct sigaction action; /* Actions for POSIX signals */ --#endif /* HAVE_SIGACTION && !HAVE_SIGSET */ -- -- /* -- * Make sure status messages are not buffered... -- */ -- -- setbuf(stderr, NULL); -- -- /* -- * Ignore broken pipe signals... -- */ -- -- signal(SIGPIPE, SIG_IGN); -- -- /* -- * Register a signal handler to cleanly cancel a job. -- */ -- --#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ -- sigset(SIGTERM, cancel_job); --#elif defined(HAVE_SIGACTION) -- memset(&action, 0, sizeof(action)); -- sigemptyset(&action.sa_mask); -- action.sa_handler = cancel_job; -- sigaction(SIGTERM, &action, NULL); --#else -- signal(SIGTERM, cancel_job); --#endif /* HAVE_SIGSET */ -- -- /* Expect a device capable of standard IPP Everywhere*/ -+ /* Expect a device capable of standard IPP Everywhere */ - if (driverless_info != NULL) - *driverless_info = FULL_DRVLESS; - -@@ -549,10 +517,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - goto error; - } - -- if (debug) -- fprintf(stderr, "DEBUG: Started %s (PID %d)\n", ippfind_argv[0], -- ippfind_pid); -- - dup2(post_proc_pipe[0], 0); - close(post_proc_pipe[0]); - close(post_proc_pipe[1]); -@@ -617,10 +581,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - */ - - while ((wait_pid = wait(&wait_status)) < 0 && errno == EINTR) { -- if (job_canceled) { -- kill(ippfind_pid, SIGTERM); -- job_canceled = 0; -- } - } - - if (wait_pid < 0) -@@ -635,34 +595,12 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - if (wait_status) { - if (WIFEXITED(wait_status)) { - exit_status = WEXITSTATUS(wait_status); -- -- if (debug) -- fprintf(stderr, "DEBUG: PID %d (%s) stopped with status %d!\n", -- wait_pid, -- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), -- exit_status); -- - if (wait_pid == ippfind_pid && exit_status <= 2) - exit_status = 0; - } else if (WTERMSIG(wait_status) == SIGTERM) { -- if (debug) -- fprintf(stderr, -- "DEBUG: PID %d (%s) was terminated normally with signal %d!\n", -- wait_pid, -- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), -- exit_status); - } else { - exit_status = WTERMSIG(wait_status); -- if (debug) -- fprintf(stderr, "DEBUG: PID %d (%s) crashed on signal %d!\n", -- wait_pid, -- (wait_pid == ippfind_pid ? "ippfind" : "Unknown process"), -- exit_status); - } -- } else { -- if (debug) -- fprintf(stderr, "DEBUG: PID %d (%s) exited with no errors.\n",wait_pid, -- (wait_pid == ippfind_pid ? "ippfind" :"Unknown process")); - } - } - if (is_fax && !output_of_fax_uri) { -@@ -679,18 +617,6 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - error: - return (NULL); - } -- --/* -- * 'cancel_job()' - Flag the job as canceled. -- */ -- --static void --cancel_job(int sig) /* I - Signal number (unused) */ --{ -- (void)sig; -- -- job_canceled = 1; --} - - - #endif /* HAVE_CUPS_1_6 */ --- -2.26.2 - diff --git a/cups-filters.spec b/cups-filters.spec index 8a590f0..2894de5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.1 -Release: 2%{?dist} +Version: 1.28.2 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,7 +20,6 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -Patch01: 0001-libcupsfilters-Removed-all-signal-handling-and-globa.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -348,6 +347,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Sep 15 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-1 +- 1.28.2 + * Thu Sep 03 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.1-2 - revert previous commit - systemd-resolved doesn't work with avahi right now because missing link in NetworkManager diff --git a/sources b/sources index ba96251..e912292 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.1.tar.xz) = 23f6fa31e2c64aaa1b7321280bb92dffb25456289c21aa91aec46afca80a8b4e9ea6697ed5ed574d4bbb0c2ab790618cc926d46bb35f2eec576d0ab88a0f2aff +SHA512 (cups-filters-1.28.2.tar.xz) = aa5f075927286a8278259025aa5baf95445809a83b88e2d4654e8f0a124012591b045df115294242fae60a283d983d6cdbaafc6a51224af30a7e56b58d831da5 From 08a1bd7590b28d5f1a5f4a1564896e54adadc207 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 17 Sep 2020 15:51:24 +0200 Subject: [PATCH 106/197] 1879147 - driverless cannot generate ppd for dns-sd based uris --- cups-filters-init-buf.patch | 186 ++++++++++++++++++++++++++++++++++++ cups-filters.spec | 6 +- 2 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 cups-filters-init-buf.patch diff --git a/cups-filters-init-buf.patch b/cups-filters-init-buf.patch new file mode 100644 index 0000000..42e6f94 --- /dev/null +++ b/cups-filters-init-buf.patch @@ -0,0 +1,186 @@ +diff --git a/cupsfilters/ipp.c b/cupsfilters/ipp.c +index 21861a5..98c5ecf 100644 +--- a/cupsfilters/ipp.c ++++ b/cupsfilters/ipp.c +@@ -191,7 +191,7 @@ get_printer_attributes5(http_t *http_printer, + { + const char *uri; + int have_http, uri_status, host_port, i = 0, total_attrs = 0, fallback, +- cap = 0; ++ cap = 0, uri_alloc = 0; + char scheme[10], userpass[1024], host_name[1024], resource[1024]; + ipp_t *request, *response = NULL; + ipp_attribute_t *attr; +@@ -247,7 +247,18 @@ get_printer_attributes5(http_t *http_printer, + if(resolve_uri_type == CUPS_BACKEND_URI_CONVERTER) + uri = resolve_uri(raw_uri); + else ++ { + uri = ippfind_based_uri_converter(raw_uri, resolve_uri_type); ++ if (uri != NULL) ++ uri_alloc = 1; ++ } ++ ++ if (uri == NULL) ++ { ++ log_printf(get_printer_attributes_log, ++ "get-printer-attibutes: Cannot resolve URI: %s\n", raw_uri); ++ return NULL; ++ } + + /* Extract URI componants needed for the IPP request */ + uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, +@@ -261,6 +272,7 @@ get_printer_attributes5(http_t *http_printer, + log_printf(get_printer_attributes_log, + "get-printer-attributes: Cannot parse the printer URI: %s\n", + uri); ++ if (uri_alloc == 1) free(uri); + return NULL; + } + +@@ -273,6 +285,7 @@ get_printer_attributes5(http_t *http_printer, + log_printf(get_printer_attributes_log, + "get-printer-attributes: Cannot connect to printer with URI %s.\n", + uri); ++ if (uri_alloc == 1) free(uri); + return NULL; + } + } else +@@ -370,6 +383,7 @@ get_printer_attributes5(http_t *http_printer, + } else { + /* Suitable response, we are done */ + if (have_http == 0) httpClose(http_printer); ++ if (uri_alloc == 1) free(uri); + return response; + } + } else { +@@ -398,6 +412,7 @@ get_printer_attributes5(http_t *http_printer, + } + + if (have_http == 0) httpClose(http_printer); ++ if (uri_alloc == 1) free(uri); + return NULL; + } + +@@ -418,7 +433,7 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + char *ippfind_argv[100], /* Arguments for ippfind */ + *ptr_to_port = NULL, + *reg_type, +- *resolved_uri, /* Buffer for resolved URI */ ++ *resolved_uri = NULL, /* Buffer for resolved URI */ + *resource_field = NULL, + *service_hostname = NULL, + /* URI components... */ +@@ -426,13 +441,11 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + userpass[256], + hostname[1024], + resource[1024], +- buffer[8192], /* Copy buffer */ ++ *buffer = NULL, /* Copy buffer */ + *ptr; /* Pointer into string */; + cups_file_t *fp; /* Post-processing input file */ + int status; /* Status of GET request */ + +- resolved_uri = (char *)malloc(2048 * (sizeof(char))); +- + status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), + userpass, sizeof(userpass), + hostname, sizeof(hostname), &port, resource, +@@ -445,10 +458,16 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + + /* URI is not DNS-SD-based, so do not resolve */ + if ((reg_type = strstr(hostname, "._tcp")) == NULL) { +- free(resolved_uri); + return strdup(uri); + } + ++ resolved_uri = (char *)malloc(MAX_URI_LEN * (sizeof(char))); ++ if (resolved_uri == NULL) { ++ fprintf(stderr, "resolved_uri malloc: Out of memory\n"); ++ goto error; ++ } ++ memset(resolved_uri, 0, MAX_URI_LEN); ++ + reg_type --; + while (reg_type >= hostname && *reg_type != '.') + reg_type --; +@@ -523,26 +542,38 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + + fp = cupsFileStdin(); + +- while ((bytes = cupsFileGetLine(fp, buffer, sizeof(buffer))) > 0) { ++ buffer = (char*)malloc(MAX_OUTPUT_LEN * sizeof(char)); ++ if (buffer == NULL) { ++ fprintf(stderr, "buffer malloc: Out of memory.\n"); ++ goto error; ++ } ++ memset(buffer, 0, MAX_OUTPUT_LEN); ++ ++ while ((bytes = cupsFileGetLine(fp, buffer, MAX_OUTPUT_LEN)) > 0) { + /* Mark all the fields of the output of ippfind */ + ptr = buffer; ++ ++ /* ignore new lines */ ++ if (bytes < 3) ++ goto read_error; ++ + /* First, build the DNS-SD-service-name-based URI ... */ + while (ptr && !isalnum(*ptr & 255)) ptr ++; + + service_hostname = ptr; +- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); ++ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); + if (!ptr) goto read_error; + *ptr = '\0'; + ptr ++; + + resource_field = ptr; +- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); ++ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); + if (!ptr) goto read_error; + *ptr = '\0'; + ptr ++; + + ptr_to_port = ptr; +- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); ++ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); + if (!ptr) goto read_error; + *ptr = '\0'; + ptr ++; +@@ -566,9 +597,12 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + output_of_fax_uri = 1; /* fax-uri requested from fax-capable device */ + + read_error: +- continue; ++ memset(buffer, 0, MAX_OUTPUT_LEN); + } + ++ if (buffer != NULL) ++ free(buffer); ++ + /* + * Wait for the child processes to exit... + */ +@@ -615,6 +649,8 @@ ippfind_based_uri_converter (const char *uri, int is_fax) + */ + + error: ++ if (resolved_uri != NULL) ++ free(resolved_uri); + return (NULL); + } + +diff --git a/cupsfilters/ipp.h b/cupsfilters/ipp.h +index 374b890..bcf22a8 100644 +--- a/cupsfilters/ipp.h ++++ b/cupsfilters/ipp.h +@@ -38,6 +38,9 @@ extern "C" { + #endif + + #define LOGSIZE 4 * 65536 ++#define MAX_OUTPUT_LEN 8192 ++#define MAX_URI_LEN 2048 ++ + char get_printer_attributes_log[LOGSIZE]; + + const char *resolve_uri(const char *raw_uri); diff --git a/cups-filters.spec b/cups-filters.spec index 2894de5..f326cd6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.2 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,6 +20,7 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz +Patch01: cups-filters-init-buf.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -347,6 +348,9 @@ done %{_libdir}/libfontembed.so %changelog +* Thu Sep 17 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-2 +- 1879147 - driverless cannot generate ppd for dns-sd based uris + * Tue Sep 15 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-1 - 1.28.2 From d6cf1a69c5315a173ad0888df74a641087e6bf4e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 27 Oct 2020 10:21:31 +0100 Subject: [PATCH 107/197] 1891720 - foomatic-rip files up /var/spool/tmp with temporary files --- cups-filters-uuid.patch | 22 ++++++++++++++++++++++ cups-filters.spec | 9 ++++++++- foomatic-remove-tmpfile.patch | 17 +++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 cups-filters-uuid.patch create mode 100644 foomatic-remove-tmpfile.patch diff --git a/cups-filters-uuid.patch b/cups-filters-uuid.patch new file mode 100644 index 0000000..a13a5c1 --- /dev/null +++ b/cups-filters-uuid.patch @@ -0,0 +1,22 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 8c2040b6..b0e7a803 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3614,7 +3614,7 @@ new_local_printer (const char *device_uri, + { + local_printer_t *printer = g_malloc (sizeof (local_printer_t)); + printer->device_uri = strdup (device_uri); +- printer->uuid = (uuid ? strdup (uuid) : NULL); ++ printer->uuid = uuid; + printer->cups_browsed_controlled = cups_browsed_controlled; + return printer; + } +@@ -3796,7 +3796,7 @@ get_printer_uuid(http_t *http_printer, + + + if (attr) +- uuid = ippGetString(attr, 0, NULL) + 9; ++ uuid = strdup(ippGetString(attr, 0, NULL) + 9); + else { + debug_printf ("Printer with URI %s: Cannot read \"printer-uuid\" IPP attribute!\n", + raw_uri); diff --git a/cups-filters.spec b/cups-filters.spec index f326cd6..0a56c64 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.2 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,6 +21,10 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz Patch01: cups-filters-init-buf.patch +# backported from upstream https://github.com/OpenPrinting/cups-filters/pull/311 +Patch02: cups-filters-uuid.patch +# backported from upstream https://github.com/OpenPrinting/cups-filters/pull/313 +Patch03: foomatic-remove-tmpfile.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -348,6 +352,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Sep 29 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-3 +- 1891720 - foomatic-rip files up /var/spool/tmp with temporary files + * Thu Sep 17 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-2 - 1879147 - driverless cannot generate ppd for dns-sd based uris diff --git a/foomatic-remove-tmpfile.patch b/foomatic-remove-tmpfile.patch new file mode 100644 index 0000000..bbe7a68 --- /dev/null +++ b/foomatic-remove-tmpfile.patch @@ -0,0 +1,17 @@ +diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c +index 7dc2426..146125f 100644 +--- a/filter/foomatic-rip/foomaticrip.c ++++ b/filter/foomatic-rip/foomaticrip.c +@@ -672,6 +672,12 @@ int print_file(const char *filename, int convert) + if (out != NULL) + fclose(out); + ++ // Delete temp file if we created one ++ if ( *tmpfilename ) { ++ _log("Removing temporary file %s\n", tmpfilename); ++ unlink(tmpfilename); ++ } ++ + return ret; + } + From 0a471b82f794b82aef7bc8fb60bb2842bbe9685c Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 2 Nov 2020 13:28:57 +0100 Subject: [PATCH 108/197] 1.28.5, 1881365 - cups-browsed crashing --- .gitignore | 1 + ...dded-NULL-check-when-removing-.Borde.patch | 58 ++++++ cups-filters-init-buf.patch | 186 ------------------ cups-filters-uuid.patch | 22 --- cups-filters.spec | 14 +- sources | 2 +- 6 files changed, 68 insertions(+), 215 deletions(-) create mode 100644 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch delete mode 100644 cups-filters-init-buf.patch delete mode 100644 cups-filters-uuid.patch diff --git a/.gitignore b/.gitignore index a46ad1a..8853b51 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,4 @@ /cups-filters-1.27.5.tar.xz /cups-filters-1.28.1.tar.xz /cups-filters-1.28.2.tar.xz +/cups-filters-1.28.5.tar.xz diff --git a/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch b/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch new file mode 100644 index 0000000..d7937df --- /dev/null +++ b/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch @@ -0,0 +1,58 @@ +From 240ffb901d06a117bb8e10b486bfd3de6fe464b2 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter <till.kamppeter@gmail.com> +Date: Wed, 28 Oct 2020 10:44:19 +0100 +Subject: [PATCH] libcupsfilters: Added NULL check when removing ".Borderless" + suffixes from page size names + +--- + NEWS | 2 ++ + cupsfilters/ppdgenerator.c | 12 ++++++++---- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 9fd4fb21..7b4aa0cf 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -2224,7 +2224,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + + if (all_borderless) { + suffix = strcasestr(ppdname, ".Borderless"); +- *suffix = '\0'; ++ if (suffix) ++ *suffix = '\0'; + } + + cupsFilePrintf(fp, "*OpenUI *PageSize/%s: PickOne\n" +@@ -2258,7 +2259,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + + if (all_borderless) { + suffix = strcasestr(ppdsizename, ".Borderless"); +- *suffix = '\0'; ++ if (suffix) ++ *suffix = '\0'; + } + + cupsFilePrintf(fp, "*PageSize %s%s%s%s: \"<</PageSize[%s %s]>>setpagedevice\"\n", +@@ -2302,7 +2304,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + + if (all_borderless) { + suffix = strcasestr(ppdsizename, ".Borderless"); +- *suffix = '\0'; ++ if (suffix) ++ *suffix = '\0'; + } + + cupsFilePrintf(fp, "*PageRegion %s%s%s%s: \"<</PageSize[%s %s]>>setpagedevice\"\n", +@@ -2338,7 +2341,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + + if (all_borderless) { + suffix = strcasestr(ppdsizename, ".Borderless"); +- *suffix = '\0'; ++ if (suffix) ++ *suffix = '\0'; + } + + cupsFilePrintf(fp, "*ImageableArea %s: \"%s %s %s %s\"\n", ppdsizename, +-- +2.26.2 + diff --git a/cups-filters-init-buf.patch b/cups-filters-init-buf.patch deleted file mode 100644 index 42e6f94..0000000 --- a/cups-filters-init-buf.patch +++ /dev/null @@ -1,186 +0,0 @@ -diff --git a/cupsfilters/ipp.c b/cupsfilters/ipp.c -index 21861a5..98c5ecf 100644 ---- a/cupsfilters/ipp.c -+++ b/cupsfilters/ipp.c -@@ -191,7 +191,7 @@ get_printer_attributes5(http_t *http_printer, - { - const char *uri; - int have_http, uri_status, host_port, i = 0, total_attrs = 0, fallback, -- cap = 0; -+ cap = 0, uri_alloc = 0; - char scheme[10], userpass[1024], host_name[1024], resource[1024]; - ipp_t *request, *response = NULL; - ipp_attribute_t *attr; -@@ -247,7 +247,18 @@ get_printer_attributes5(http_t *http_printer, - if(resolve_uri_type == CUPS_BACKEND_URI_CONVERTER) - uri = resolve_uri(raw_uri); - else -+ { - uri = ippfind_based_uri_converter(raw_uri, resolve_uri_type); -+ if (uri != NULL) -+ uri_alloc = 1; -+ } -+ -+ if (uri == NULL) -+ { -+ log_printf(get_printer_attributes_log, -+ "get-printer-attibutes: Cannot resolve URI: %s\n", raw_uri); -+ return NULL; -+ } - - /* Extract URI componants needed for the IPP request */ - uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, -@@ -261,6 +272,7 @@ get_printer_attributes5(http_t *http_printer, - log_printf(get_printer_attributes_log, - "get-printer-attributes: Cannot parse the printer URI: %s\n", - uri); -+ if (uri_alloc == 1) free(uri); - return NULL; - } - -@@ -273,6 +285,7 @@ get_printer_attributes5(http_t *http_printer, - log_printf(get_printer_attributes_log, - "get-printer-attributes: Cannot connect to printer with URI %s.\n", - uri); -+ if (uri_alloc == 1) free(uri); - return NULL; - } - } else -@@ -370,6 +383,7 @@ get_printer_attributes5(http_t *http_printer, - } else { - /* Suitable response, we are done */ - if (have_http == 0) httpClose(http_printer); -+ if (uri_alloc == 1) free(uri); - return response; - } - } else { -@@ -398,6 +412,7 @@ get_printer_attributes5(http_t *http_printer, - } - - if (have_http == 0) httpClose(http_printer); -+ if (uri_alloc == 1) free(uri); - return NULL; - } - -@@ -418,7 +433,7 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - char *ippfind_argv[100], /* Arguments for ippfind */ - *ptr_to_port = NULL, - *reg_type, -- *resolved_uri, /* Buffer for resolved URI */ -+ *resolved_uri = NULL, /* Buffer for resolved URI */ - *resource_field = NULL, - *service_hostname = NULL, - /* URI components... */ -@@ -426,13 +441,11 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - userpass[256], - hostname[1024], - resource[1024], -- buffer[8192], /* Copy buffer */ -+ *buffer = NULL, /* Copy buffer */ - *ptr; /* Pointer into string */; - cups_file_t *fp; /* Post-processing input file */ - int status; /* Status of GET request */ - -- resolved_uri = (char *)malloc(2048 * (sizeof(char))); -- - status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), - userpass, sizeof(userpass), - hostname, sizeof(hostname), &port, resource, -@@ -445,10 +458,16 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - - /* URI is not DNS-SD-based, so do not resolve */ - if ((reg_type = strstr(hostname, "._tcp")) == NULL) { -- free(resolved_uri); - return strdup(uri); - } - -+ resolved_uri = (char *)malloc(MAX_URI_LEN * (sizeof(char))); -+ if (resolved_uri == NULL) { -+ fprintf(stderr, "resolved_uri malloc: Out of memory\n"); -+ goto error; -+ } -+ memset(resolved_uri, 0, MAX_URI_LEN); -+ - reg_type --; - while (reg_type >= hostname && *reg_type != '.') - reg_type --; -@@ -523,26 +542,38 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - - fp = cupsFileStdin(); - -- while ((bytes = cupsFileGetLine(fp, buffer, sizeof(buffer))) > 0) { -+ buffer = (char*)malloc(MAX_OUTPUT_LEN * sizeof(char)); -+ if (buffer == NULL) { -+ fprintf(stderr, "buffer malloc: Out of memory.\n"); -+ goto error; -+ } -+ memset(buffer, 0, MAX_OUTPUT_LEN); -+ -+ while ((bytes = cupsFileGetLine(fp, buffer, MAX_OUTPUT_LEN)) > 0) { - /* Mark all the fields of the output of ippfind */ - ptr = buffer; -+ -+ /* ignore new lines */ -+ if (bytes < 3) -+ goto read_error; -+ - /* First, build the DNS-SD-service-name-based URI ... */ - while (ptr && !isalnum(*ptr & 255)) ptr ++; - - service_hostname = ptr; -- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); -+ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); - if (!ptr) goto read_error; - *ptr = '\0'; - ptr ++; - - resource_field = ptr; -- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); -+ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); - if (!ptr) goto read_error; - *ptr = '\0'; - ptr ++; - - ptr_to_port = ptr; -- ptr = memchr(ptr, '\t', sizeof(buffer) - (ptr - buffer)); -+ ptr = memchr(ptr, '\t', MAX_OUTPUT_LEN - (ptr - buffer)); - if (!ptr) goto read_error; - *ptr = '\0'; - ptr ++; -@@ -566,9 +597,12 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - output_of_fax_uri = 1; /* fax-uri requested from fax-capable device */ - - read_error: -- continue; -+ memset(buffer, 0, MAX_OUTPUT_LEN); - } - -+ if (buffer != NULL) -+ free(buffer); -+ - /* - * Wait for the child processes to exit... - */ -@@ -615,6 +649,8 @@ ippfind_based_uri_converter (const char *uri, int is_fax) - */ - - error: -+ if (resolved_uri != NULL) -+ free(resolved_uri); - return (NULL); - } - -diff --git a/cupsfilters/ipp.h b/cupsfilters/ipp.h -index 374b890..bcf22a8 100644 ---- a/cupsfilters/ipp.h -+++ b/cupsfilters/ipp.h -@@ -38,6 +38,9 @@ extern "C" { - #endif - - #define LOGSIZE 4 * 65536 -+#define MAX_OUTPUT_LEN 8192 -+#define MAX_URI_LEN 2048 -+ - char get_printer_attributes_log[LOGSIZE]; - - const char *resolve_uri(const char *raw_uri); diff --git a/cups-filters-uuid.patch b/cups-filters-uuid.patch deleted file mode 100644 index a13a5c1..0000000 --- a/cups-filters-uuid.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 8c2040b6..b0e7a803 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3614,7 +3614,7 @@ new_local_printer (const char *device_uri, - { - local_printer_t *printer = g_malloc (sizeof (local_printer_t)); - printer->device_uri = strdup (device_uri); -- printer->uuid = (uuid ? strdup (uuid) : NULL); -+ printer->uuid = uuid; - printer->cups_browsed_controlled = cups_browsed_controlled; - return printer; - } -@@ -3796,7 +3796,7 @@ get_printer_uuid(http_t *http_printer, - - - if (attr) -- uuid = ippGetString(attr, 0, NULL) + 9; -+ uuid = strdup(ippGetString(attr, 0, NULL) + 9); - else { - debug_printf ("Printer with URI %s: Cannot read \"printer-uuid\" IPP attribute!\n", - raw_uri); diff --git a/cups-filters.spec b/cups-filters.spec index 0a56c64..c74e6c7 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.2 -Release: 3%{?dist} +Version: 1.28.5 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,11 +20,10 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -Patch01: cups-filters-init-buf.patch -# backported from upstream https://github.com/OpenPrinting/cups-filters/pull/311 -Patch02: cups-filters-uuid.patch # backported from upstream https://github.com/OpenPrinting/cups-filters/pull/313 -Patch03: foomatic-remove-tmpfile.patch +Patch01: foomatic-remove-tmpfile.patch +# backported from upstream +Patch02: 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -352,6 +351,9 @@ done %{_libdir}/libfontembed.so %changelog +* Mon Nov 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-1 +- 1.28.5, 1881365 - cups-browsed crashing + * Tue Sep 29 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.2-3 - 1891720 - foomatic-rip files up /var/spool/tmp with temporary files diff --git a/sources b/sources index e912292..681dcd9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.2.tar.xz) = aa5f075927286a8278259025aa5baf95445809a83b88e2d4654e8f0a124012591b045df115294242fae60a283d983d6cdbaafc6a51224af30a7e56b58d831da5 +SHA512 (cups-filters-1.28.5.tar.xz) = e020d0e14ad70fbac4d367b4f1d653faf5030b961c6fc4b9f9587c068ccb63c286d07ee32e04e634a877fc8ca90c6dfa4b89aa288e896eea0026e1053cd8a4ef From 7f6989d5c2bdbd274e23cceb910c32accda0f3d6 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 5 Nov 2020 07:56:15 +0100 Subject: [PATCH 109/197] use make and git-core --- cups-filters.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index c74e6c7..ea99c40 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.5 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -37,7 +37,9 @@ BuildRequires: gcc # gcc-c++ for pdftoopvp, pdftopdf BuildRequires: gcc-c++ # for autosetup -BuildRequires: git +BuildRequires: git-core +# uses make for compiling +BuildRequires: make BuildRequires: cups-devel BuildRequires: pkgconf-pkg-config @@ -351,6 +353,9 @@ done %{_libdir}/libfontembed.so %changelog +* Thu Nov 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-2 +- use make and git-core + * Mon Nov 02 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-1 - 1.28.5, 1881365 - cups-browsed crashing From 12bd6655362f7e0f8790c34a208d10ca6333f99e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 24 Nov 2020 06:53:42 +0100 Subject: [PATCH 110/197] fix various memory issues within cups-browsed --- cups-filters-allocedrange-lost.patch | 32 ++++++ cups-filters-document-format-leak.patch | 15 +++ cups-filters-free-after-error.patch | 26 +++++ cups-filters-free-current-media.patch | 12 +++ cups-filters-free-printer-sizes.patch | 30 ++++++ cups-filters-free-temp-insequence.patch | 13 +++ cups-filters-get-attrs-earlier.patch | 36 +++++++ cups-filters-ipp-leak.patch | 22 ++++ cups-filters-nickname-handling.patch | 103 +++++++++++++++++++ cups-filters-resolution-memleaks.patch | 124 +++++++++++++++++++++++ cups-filters-support-jobattr-leaks.patch | 54 ++++++++++ cups-filters-tagzeroattrs-notconst.patch | 15 +++ cups-filters-undef-printquality.patch | 13 +++ cups-filters-uninit-attrs.patch | 37 +++++++ cups-filters-unused-pointer.patch | 29 ++++++ cups-filters-uuid-recast.patch | 13 +++ cups-filters-warnings.patch | 33 ++++++ cups-filters.spec | 25 ++++- 18 files changed, 631 insertions(+), 1 deletion(-) create mode 100644 cups-filters-allocedrange-lost.patch create mode 100644 cups-filters-document-format-leak.patch create mode 100644 cups-filters-free-after-error.patch create mode 100644 cups-filters-free-current-media.patch create mode 100644 cups-filters-free-printer-sizes.patch create mode 100644 cups-filters-free-temp-insequence.patch create mode 100644 cups-filters-get-attrs-earlier.patch create mode 100644 cups-filters-ipp-leak.patch create mode 100644 cups-filters-nickname-handling.patch create mode 100644 cups-filters-resolution-memleaks.patch create mode 100644 cups-filters-support-jobattr-leaks.patch create mode 100644 cups-filters-tagzeroattrs-notconst.patch create mode 100644 cups-filters-undef-printquality.patch create mode 100644 cups-filters-uninit-attrs.patch create mode 100644 cups-filters-unused-pointer.patch create mode 100644 cups-filters-uuid-recast.patch create mode 100644 cups-filters-warnings.patch diff --git a/cups-filters-allocedrange-lost.patch b/cups-filters-allocedrange-lost.patch new file mode 100644 index 0000000..32f430f --- /dev/null +++ b/cups-filters-allocedrange-lost.patch @@ -0,0 +1,32 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 93f21c3..32d03da 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -1770,7 +1770,7 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) + ipp_t *media_size; + cups_array_t *sizes, *size_ranges; + media_size_t *temp, *media_s; +- pagesize_range_t *temp_range; ++ pagesize_range_t *temp_range = NULL, *range = NULL; + char* attributes[] = { + "media-size-supported", + }; +@@ -1843,12 +1843,12 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) + } + } + if (num_ranges) { +- for (temp_range = cupsArrayFirst(size_ranges); temp_range; +- i++, temp_range = cupsArrayNext(size_ranges)) { +- ipp_t *size_range = create_media_range(temp_range->x_dim_min, +- temp_range->x_dim_max, +- temp_range->y_dim_min, +- temp_range->y_dim_max); ++ for (range = cupsArrayFirst(size_ranges); range; ++ i++, range = cupsArrayNext(size_ranges)) { ++ ipp_t *size_range = create_media_range(range->x_dim_min, ++ range->x_dim_max, ++ range->y_dim_min, ++ range->y_dim_max); + ippSetCollection(*merged_attributes, &media_size_supported, i, + size_range); + ippDelete(size_range); diff --git a/cups-filters-document-format-leak.patch b/cups-filters-document-format-leak.patch new file mode 100644 index 0000000..db8bf1f --- /dev/null +++ b/cups-filters-document-format-leak.patch @@ -0,0 +1,15 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index f246453..0c40112 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -6593,7 +6593,10 @@ on_job_state (CupsNotifier *object, + cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION); + cupsEncodeOptions2(request, num_options, options, IPP_TAG_PRINTER); + ippDelete(cupsDoRequest(conn, request, "/admin/")); ++ + cupsFreeOptions(num_options, options); ++ free(document_format); ++ + if (cupsLastError() > IPP_STATUS_OK_EVENTS_COMPLETE) { + debug_printf("ERROR: Unable to set \"" CUPS_BROWSED_DEST_PRINTER + "-default\" option to communicate the destination server for this job (%s)!\n", diff --git a/cups-filters-free-after-error.patch b/cups-filters-free-after-error.patch new file mode 100644 index 0000000..ed41768 --- /dev/null +++ b/cups-filters-free-after-error.patch @@ -0,0 +1,26 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index a303df3..58f8be5 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -8949,6 +8949,21 @@ gboolean update_cups_queues(gpointer unused) { + p->timeout = current_time + pause_between_cups_queue_updates; + + cannot_create: ++ if (printer_attributes != NULL && num_cluster_printers != 1) ++ ippDelete(printer_attributes); ++ ++ if (default_pagesize != NULL && num_cluster_printers != 1) ++ free(default_pagesize); ++ ++ if (conflicts != NULL && num_cluster_printers != 1) ++ cupsArrayDelete(conflicts); ++ ++ if (make_model != NULL && num_cluster_printers != 1) ++ free(make_model); ++ ++ if (sizes != NULL && num_cluster_printers != 1) ++ cupsArrayDelete(sizes); ++ + if (p && !in_shutdown) + remove_printer_entry(p); + diff --git a/cups-filters-free-current-media.patch b/cups-filters-free-current-media.patch new file mode 100644 index 0000000..e5aa324 --- /dev/null +++ b/cups-filters-free-current-media.patch @@ -0,0 +1,12 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 58f8be5..3cb1f71 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3089,6 +3089,7 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, + free(temp->media_source); + free(temp->media_type); + free(temp); ++ ippDelete(current_media); + } + + /*Finding the default colormodel for the cluster*/ diff --git a/cups-filters-free-printer-sizes.patch b/cups-filters-free-printer-sizes.patch new file mode 100644 index 0000000..30f5151 --- /dev/null +++ b/cups-filters-free-printer-sizes.patch @@ -0,0 +1,30 @@ +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index b8a907f..c50ba78 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -2354,8 +2354,6 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + twidth, tlength); + } + +- cupsArrayDelete(sizes); +- + /* + * Custom size support... + */ +@@ -2394,7 +2392,6 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + cupsFilePuts(fp, "*CustomPageSize True: \"pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\"\n"); + } + } else { +- cupsArrayDelete(sizes); + cupsFilePrintf(fp, + "*%% Printer did not supply page size info via IPP, using defaults\n" + "*OpenUI *PageSize/Media Size: PickOne\n" +@@ -2461,6 +2458,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + "*PaperDimension EnvMonarch/Envelope Monarch: \"279 540\"\n"); + } + ++ cupsArrayDelete(printer_sizes); ++ + /* + * InputSlot... + */ diff --git a/cups-filters-free-temp-insequence.patch b/cups-filters-free-temp-insequence.patch new file mode 100644 index 0000000..a922d17 --- /dev/null +++ b/cups-filters-free-temp-insequence.patch @@ -0,0 +1,13 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index f21df6b..0d0f30f 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3086,6 +3086,8 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, + temp->media_source, temp->media_type); + ippSetCollection(*merged_attributes, &media_col_default, 0, current_media); + ++ free(temp->media_source); ++ free(temp->media_type); + free(temp); + } + diff --git a/cups-filters-get-attrs-earlier.patch b/cups-filters-get-attrs-earlier.patch new file mode 100644 index 0000000..3f0034c --- /dev/null +++ b/cups-filters-get-attrs-earlier.patch @@ -0,0 +1,36 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 885bc1c..b4df0e4 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -8157,6 +8157,7 @@ gboolean update_cups_queues(gpointer unused) { + sizes = NULL; + } else { + make_model = (char*)malloc(sizeof(char) * 256); ++ printer_attributes = get_cluster_attributes(p->queue_name); + if ((attr = ippFindAttribute(printer_attributes, + "printer-make-and-model", + IPP_TAG_TEXT)) != NULL) +@@ -8174,7 +8175,6 @@ gboolean update_cups_queues(gpointer unused) { + } + } + default_pagesize = (char *)malloc(sizeof(char)*32); +- printer_attributes = get_cluster_attributes(p->queue_name); + debug_printf("Generated Merged Attributes for local queue %s\n", + p->queue_name); + conflicts = generate_cluster_conflicts(p->queue_name, +@@ -8499,6 +8499,7 @@ gboolean update_cups_queues(gpointer unused) { + sizes = NULL; + } else { + make_model = (char*)malloc(sizeof(char)*256); ++ printer_attributes = get_cluster_attributes(p->queue_name); + if((attr = ippFindAttribute(printer_attributes, + "printer-make-and-model", + IPP_TAG_TEXT)) != NULL) +@@ -8516,7 +8517,6 @@ gboolean update_cups_queues(gpointer unused) { + } + } + default_pagesize = (char *)malloc(sizeof(char)*32); +- printer_attributes = get_cluster_attributes(p->queue_name); + debug_printf("Generated Merged Attributes for local queue %s\n", + p->queue_name); + conflicts = generate_cluster_conflicts(p->queue_name, diff --git a/cups-filters-ipp-leak.patch b/cups-filters-ipp-leak.patch new file mode 100644 index 0000000..23dba59 --- /dev/null +++ b/cups-filters-ipp-leak.patch @@ -0,0 +1,22 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 0c40112..450179b 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -6417,13 +6417,14 @@ on_job_state (CupsNotifier *object, + } + break; + } ++ ++ ippDelete(response); ++ response = NULL; ++ + if (pstate == IPP_PRINTER_IDLE && paccept) { + q->last_printer = i; + break; + } +- +- ippDelete(response); +- response = NULL; + } else + debug_printf("IPP request to %s:%d failed.\n", p->host, + p->port); diff --git a/cups-filters-nickname-handling.patch b/cups-filters-nickname-handling.patch new file mode 100644 index 0000000..5f5fd6e --- /dev/null +++ b/cups-filters-nickname-handling.patch @@ -0,0 +1,103 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 3cb1f71..db822af 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -7200,6 +7200,10 @@ create_remote_printer_entry (const char *queue_name, + in a row during creation of this printer's queue */ + p->timeouted = 0; + ++ /* Initialize nickname array for *Nickname directive from PPD ++ * - either from CUPS server or from our PPD generator */ ++ p->nickname = NULL; ++ + /* Remote CUPS printer or local queue remaining from previous cups-browsed + session */ + /* is_cups_queue: -1: Unknown, 0: IPP printer, 1: Remote CUPS queue, +@@ -7215,7 +7219,6 @@ create_remote_printer_entry (const char *queue_name, + remote CUPS server gets used. So we will not generate a PPD file + or interface script at this point. */ + p->netprinter = 0; +- p->nickname = NULL; + if (p->uri[0] != '\0') { + p->prattrs = get_printer_attributes(p->uri, NULL, 0, NULL, 0, 1); + debug_log_out(get_printer_attributes_log); +@@ -7620,7 +7623,7 @@ gboolean update_cups_queues(gpointer unused) { + time_t current_time; + int i, ap_remote_queue_id_line_inserted, + want_raw, num_cluster_printers = 0; +- char *disabled_str, *ptr; ++ char *disabled_str; + char *ppdfile, *ifscript; + int fd = 0; /* Script file descriptor */ + char tempfile[1024]; /* Temporary file */ +@@ -8189,7 +8192,6 @@ gboolean update_cups_queues(gpointer unused) { + debug_printf("Generated Default Attributes for local queue %s\n", + p->queue_name); + } +- p->nickname = NULL; + if (ppdfile == NULL) { + /* If we do not want CUPS-generated PPDs or we cannot obtain a + CUPS-generated PPD, for example if CUPS does not create a +@@ -8476,7 +8478,6 @@ gboolean update_cups_queues(gpointer unused) { + p->queue_name, p->uri); + goto cannot_create; + } +- p->nickname = NULL; + num_cluster_printers = 0; + for (s = (remote_printer_t *)cupsArrayFirst(remote_printers); + s; s = (remote_printer_t *)cupsArrayNext(remote_printers)) { +@@ -8683,14 +8684,48 @@ gboolean update_cups_queues(gpointer unused) { + manipulations of the print queue have replaced the PPD. + Check whether nickname is defined too */ + if (!strncmp(line, "*NickName:", 10) && p->nickname == NULL) { ++ char *ptr = NULL; ++ char *end_ptr = NULL; ++ int nickname_len = 0; ++ + ptr = strchr(line, '"'); +- if (ptr) { +- ptr ++; +- p->nickname = strdup(ptr); +- ptr = strchr(p->nickname, '"'); +- if (ptr) +- *ptr = '\0'; ++ ++ if (ptr == NULL) ++ { ++ debug_printf("Malformed *Nickname directive in PPD - no double quote in line.\n"); ++ continue; ++ } ++ ++ ptr ++; ++ end_ptr = strchr(ptr, '"'); ++ ++ if (end_ptr == NULL) ++ { ++ debug_printf("Malformed *Nickname directive in PPD - no ending double quote\n"); ++ continue; + } ++ ++ /* both pointers are null terminated, because cupsFileGets() puts ++ * a null terminator into returned buffer with one line ++ * here as 'line' array) and those two pointers points on two places ++ * in the 'line' array. ++ */ ++ nickname_len = strlen(ptr) - strlen(end_ptr); ++ ++ if (nickname_len == 0) ++ { ++ debug_printf("Malformed *Nickname directive in PPD - empty nickname.\n"); ++ continue; ++ } ++ ++ /* alloc one more space for null terminator, calloc() will initialize ++ * it to null automatically, so then we only copy a string with 'nickname_len' ++ * length to get a proper null terminated p->nickname. ++ */ ++ p->nickname = (char*)calloc(nickname_len + 1, sizeof(char)); ++ ++ if (p->nickname != NULL) ++ strncpy(p->nickname, ptr, nickname_len); + } + } + cupsFilePrintf(out,"*cupsFilter2: \"application/vnd.cups-pdf application/pdf 0 -\"\n"); diff --git a/cups-filters-resolution-memleaks.patch b/cups-filters-resolution-memleaks.patch new file mode 100644 index 0000000..6921ae7 --- /dev/null +++ b/cups-filters-resolution-memleaks.patch @@ -0,0 +1,124 @@ +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 7b4aa0c..bc694f0 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -1059,9 +1059,11 @@ ippResolutionListToArray(ipp_attribute_t *attr) + res_array = resolutionArrayNew(); + if (res_array) { + for (i = 0; i < count; i ++) +- if ((res = ippResolutionToRes(attr, i)) != NULL && +- cupsArrayFind(res_array, res) == NULL) +- cupsArrayAdd(res_array, res); ++ if ((res = ippResolutionToRes(attr, i)) != NULL) { ++ if (cupsArrayFind(res_array, res) == NULL) ++ cupsArrayAdd(res_array, res); ++ free_resolution(res, NULL); ++ } + } + if (cupsArrayCount(res_array) == 0) { + cupsArrayDelete(res_array); +diff --git a/cupsfilters/ppdgenerator.h b/cupsfilters/ppdgenerator.h +index 5e03e6d..050c320 100644 +--- a/cupsfilters/ppdgenerator.h ++++ b/cupsfilters/ppdgenerator.h +@@ -71,6 +71,7 @@ char *ppdCreateFromIPP2(char *buffer, size_t bufsize, + const char *default_cluster_color); + int compare_resolutions(void *resolution_a, void *resolution_b, + void *user_data); ++void free_resolution(void *resolution, void *user_data); + res_t * ippResolutionToRes(ipp_attribute_t *attr, int index); + cups_array_t * resolutionArrayNew(); + cups_array_t* generate_sizes(ipp_t *response, +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index e2c9d38..8a882a1 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -1733,12 +1733,14 @@ void add_resolution_attributes(char* cluster_name, ipp_t **merged_attributes) + if ((attr = ippFindAttribute(p->prattrs, attributes[attr_no], + IPP_TAG_RESOLUTION)) != NULL) { + for (i = 0, count = ippGetCount(attr); i < count; i ++) { +- if ((res = ippResolutionToRes(attr, i)) != NULL && +- cupsArrayFind(res_array, res) == NULL) { +- cupsArrayAdd(res_array, res); +- num_resolution ++; +- } +- } ++ if ((res = ippResolutionToRes(attr, i)) != NULL) { ++ if (cupsArrayFind(res_array, res) == NULL) { ++ cupsArrayAdd(res_array, res); ++ num_resolution ++; ++ } ++ free_resolution(res, NULL); ++ } ++ } + } + } + if (num_resolution) { +@@ -3219,6 +3221,7 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, + "printer-resolution-default", + IPP_RES_PER_INCH, xres, yres); + debug_printf("Default Resolution : %dx%d\n", xres, yres); ++ free_resolution(res, NULL); + } + } + +@@ -6157,7 +6160,7 @@ on_job_state (CupsNotifier *object, + const char *pdl = NULL; + cups_array_t *pdl_list; + char resolution[32]; +- res_t *max_res = NULL, *min_res = NULL, *res; ++ res_t *max_res = NULL, *min_res = NULL, *res = NULL; + int xres, yres; + int got_printer_info; + static const char *pattrs[] = +@@ -6504,6 +6507,10 @@ on_job_state (CupsNotifier *object, + + /* Deciding the resolution to be sent with the job */ + /* Finding the minimum and maximum resolution supported by the printer */ ++ ++ max_res = resolutionNew(0, 0); ++ min_res = resolutionNew(0, 0); ++ + if (s && + ((attr = ippFindAttribute(s->prattrs, "printer-resolution-supported", + IPP_TAG_RESOLUTION)) != NULL)) { +@@ -6511,14 +6518,20 @@ on_job_state (CupsNotifier *object, + if ((res = ippResolutionToRes(attr, i)) != NULL) { + debug_printf("%d %d\n",res->x,res->y); + if (i == 0) { +- max_res = res; +- min_res = res; ++ max_res->x = res->x; ++ max_res->y = res->y; ++ min_res->x = res->x; ++ min_res->y = res->y; + } else { + if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) +- max_res = res; ++ max_res->x = res->x; ++ max_res->y = res->y; + if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) +- min_res = res; ++ min_res->x = res->x; ++ min_res->y = res->y; + } ++ free_resolution(res, NULL); ++ res = NULL; + } + } + } +@@ -6555,10 +6568,14 @@ on_job_state (CupsNotifier *object, + snprintf(resolution, sizeof(resolution), "%ddpi", xres); + else + snprintf(resolution, sizeof(resolution), "%dx%ddpi", xres, yres); ++ free_resolution(res, NULL); + } + } + } + ++ free_resolution(max_res, NULL); ++ free_resolution(min_res, NULL); ++ + request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER); + httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, + "localhost", 0, "/printers/%s", printer); diff --git a/cups-filters-support-jobattr-leaks.patch b/cups-filters-support-jobattr-leaks.patch new file mode 100644 index 0000000..2e52fe1 --- /dev/null +++ b/cups-filters-support-jobattr-leaks.patch @@ -0,0 +1,54 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 450179b..ec00151 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3237,15 +3237,15 @@ int supports_job_attributes_requested(const gchar* printer, int printer_index, + ipp_attribute_t *attr, *attr1; + ipp_t *request, *response = NULL; + const char *str, *side, *resource; +- cups_array_t *job_sheet_supported, +- *multiple_doc_supported, *print_qualities, +- *media_type_supported, *staplelocation_supported, +- *foldtype_supported, *punchmedia_supported, +- *color_supported; ++ cups_array_t *job_sheet_supported = NULL, ++ *multiple_doc_supported = NULL, *print_qualities = NULL, ++ *media_type_supported = NULL, *staplelocation_supported = NULL, ++ *foldtype_supported = NULL, *punchmedia_supported = NULL, ++ *color_supported = NULL; + remote_printer_t *p; + int i, count, side_found, orien_req, orien, + orien_found; +- cups_array_t *sizes; ++ cups_array_t *sizes = NULL; + int ret = 1; + + p = (remote_printer_t *)cupsArrayIndex(remote_printers, printer_index); +@@ -3515,7 +3515,26 @@ int supports_job_attributes_requested(const gchar* printer, int printer_index, + } + + cleanup: +- ippDelete(response); ++ if (response != NULL) ++ ippDelete(response); ++ if (job_sheet_supported != NULL) ++ cupsArrayDelete(job_sheet_supported); ++ if (multiple_doc_supported) ++ cupsArrayDelete(multiple_doc_supported); ++ if (media_type_supported != NULL) ++ cupsArrayDelete(media_type_supported); ++ if (staplelocation_supported != NULL) ++ cupsArrayDelete(staplelocation_supported); ++ if (foldtype_supported != NULL) ++ cupsArrayDelete(foldtype_supported); ++ if (punchmedia_supported != NULL) ++ cupsArrayDelete(punchmedia_supported); ++ if (color_supported != NULL) ++ cupsArrayDelete(color_supported); ++ if (print_qualities != NULL) ++ cupsArrayDelete(print_qualities); ++ if (sizes != NULL) ++ cupsArrayDelete(sizes); + + return ret; + } diff --git a/cups-filters-tagzeroattrs-notconst.patch b/cups-filters-tagzeroattrs-notconst.patch new file mode 100644 index 0000000..a863e47 --- /dev/null +++ b/cups-filters-tagzeroattrs-notconst.patch @@ -0,0 +1,15 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 174e293..7110be4 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -1491,8 +1491,8 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) + strncpy(values[i], q, sizeof(values[i]) - 1); + } + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, +- IPP_CONST_TAG(IPP_TAG_KEYWORD), +- attributes[attr_no], num_value, NULL, ++ IPP_TAG_KEYWORD, attributes[attr_no], ++ num_value, NULL, + (const char * const *)values); + + for (int k = 0; k < i; k++) { diff --git a/cups-filters-undef-printquality.patch b/cups-filters-undef-printquality.patch new file mode 100644 index 0000000..c8b6bab --- /dev/null +++ b/cups-filters-undef-printquality.patch @@ -0,0 +1,13 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 0a8a7f1..92c2e6a 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -6174,7 +6174,7 @@ on_job_state (CupsNotifier *object, + cups_option_t *options; + int num_of_printers; + char* document_format; +- int print_quality; ++ int print_quality = 0; + const char *pdl = NULL; + cups_array_t *pdl_list; + char resolution[32]; diff --git a/cups-filters-uninit-attrs.patch b/cups-filters-uninit-attrs.patch new file mode 100644 index 0000000..dc2a729 --- /dev/null +++ b/cups-filters-uninit-attrs.patch @@ -0,0 +1,37 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 826679f..93f21c3 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -1415,8 +1415,8 @@ void add_mimetype_attributes(char* cluster_name, ipp_t **merged_attributes) + for (q = (char *)cupsArrayFirst(list),i=0; + q; + q = (char *)cupsArrayNext(list),i++) { +- values[i]=malloc(sizeof(char)*strlen(q)+1); +- strncpy(values[i], q, sizeof(values[i]) - 1); ++ values[i]=malloc(sizeof(char) * (strlen(q) + 1)); ++ snprintf(values[i], strlen(q) + 1, "%s", q); + } + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_MIMETYPE, + attributes[attr_no], num_value, NULL, +@@ -1487,8 +1487,8 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) + /* Transferring attributes value from cups Array to char* array*/ + for (q = (char *)cupsArrayFirst(list), i = 0; q; + q = (char *)cupsArrayNext(list), i ++) { +- values[i] = malloc(sizeof(char) * strlen(q) + 1); +- strncpy(values[i], q, sizeof(values[i]) - 1); ++ values[i] = malloc(sizeof(char) * (strlen(q) + 1)); ++ snprintf(values[i], strlen(q) + 1, "%s", q); + } + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, + IPP_TAG_KEYWORD, attributes[attr_no], +@@ -1558,8 +1558,8 @@ void add_keyword_attributes(char* cluster_name, ipp_t **merged_attributes) + for (q = (char *)cupsArrayFirst(list), i=0; + q; + q = (char *)cupsArrayNext(list), i ++) { +- values[i] = malloc(sizeof(char) * strlen(q) + 1); +- strncpy(values[i], q, sizeof(values[i]) - 1); ++ values[i] = malloc(sizeof(char) * (strlen(q) + 1)); ++ snprintf(values[i], strlen(q) + 1, "%s", q); + } + ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, + attributes[attr_no], num_value, NULL, diff --git a/cups-filters-unused-pointer.patch b/cups-filters-unused-pointer.patch new file mode 100644 index 0000000..f6ac3bc --- /dev/null +++ b/cups-filters-unused-pointer.patch @@ -0,0 +1,29 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 7110be4..f21df6b 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -2679,7 +2679,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) + cups_array_t *cluster_sizes = NULL, + *sizes_ppdname; + cups_size_t *size; +- pagesize_count_t *temp; + remote_printer_t *p; + ipp_attribute_t *defattr; + char ppdname[41], pagesize[128]; +@@ -2687,7 +2686,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) + int min_length, min_width, max_length, max_width, + bottom, left, right, top; + +- temp = (pagesize_count_t *)malloc(sizeof(pagesize_count_t)); + cluster_sizes = cupsArrayNew3((cups_array_func_t)pwg_compare_sizes, + NULL, NULL, 0, + (cups_acopy_func_t)pwg_copy_size, +@@ -2713,8 +2711,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) + sizes = generate_sizes(p->prattrs, &defattr, &min_length, &min_width, + &max_length, &max_width, + &bottom, &left, &right, &top, ppdname); +- temp->pagesize = ppdname; +- temp->count = 1; + for (size = (cups_size_t *)cupsArrayFirst(sizes); + size; size = (cups_size_t *)cupsArrayNext(sizes)) { + if (!cupsArrayFind(cluster_sizes, size)) { diff --git a/cups-filters-uuid-recast.patch b/cups-filters-uuid-recast.patch new file mode 100644 index 0000000..116efd5 --- /dev/null +++ b/cups-filters-uuid-recast.patch @@ -0,0 +1,13 @@ +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 0d0f30f..885bc1c 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -3622,7 +3622,7 @@ new_local_printer (const char *device_uri, + { + local_printer_t *printer = g_malloc (sizeof (local_printer_t)); + printer->device_uri = strdup (device_uri); +- printer->uuid = uuid; ++ printer->uuid = (char*)uuid; + printer->cups_browsed_controlled = cups_browsed_controlled; + return printer; + } diff --git a/cups-filters-warnings.patch b/cups-filters-warnings.patch new file mode 100644 index 0000000..3707bb5 --- /dev/null +++ b/cups-filters-warnings.patch @@ -0,0 +1,33 @@ +diff --git a/cupsfilters/ppdgenerator.h b/cupsfilters/ppdgenerator.h +index 050c3201..027b9752 100644 +--- a/cupsfilters/ppdgenerator.h ++++ b/cupsfilters/ppdgenerator.h +@@ -73,6 +73,7 @@ int compare_resolutions(void *resolution_a, void *resolution_b, + void *user_data); + void free_resolution(void *resolution, void *user_data); + res_t * ippResolutionToRes(ipp_attribute_t *attr, int index); ++res_t * resolutionNew(int x, int y); + cups_array_t * resolutionArrayNew(); + cups_array_t* generate_sizes(ipp_t *response, + ipp_attribute_t **defattr, +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index f47b8115..89c403fc 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -6535,12 +6535,14 @@ on_job_state (CupsNotifier *object, + min_res->x = res->x; + min_res->y = res->y; + } else { +- if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) ++ if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) { + max_res->x = res->x; + max_res->y = res->y; +- if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) ++ } ++ if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) { + min_res->x = res->x; + min_res->y = res->y; ++ } + } + free_resolution(res, NULL); + res = NULL; diff --git a/cups-filters.spec b/cups-filters.spec index ea99c40..84a9fbe 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.5 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -23,7 +23,27 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio # backported from upstream https://github.com/OpenPrinting/cups-filters/pull/313 Patch01: foomatic-remove-tmpfile.patch # backported from upstream +# https://github.com/OpenPrinting/cups-filters/commit/240ffb901d06a117bb8e10b486bfd3de6fe464b2 Patch02: 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch +# all below to patch19 backported from upstream PR +# https://github.com/OpenPrinting/cups-filters/pull/322 +Patch03: cups-filters-resolution-memleaks.patch +Patch04: cups-filters-tagzeroattrs-notconst.patch +Patch05: cups-filters-unused-pointer.patch +Patch06: cups-filters-free-temp-insequence.patch +Patch07: cups-filters-uuid-recast.patch +Patch08: cups-filters-get-attrs-earlier.patch +Patch09: cups-filters-free-after-error.patch +Patch10: cups-filters-free-printer-sizes.patch +Patch11: cups-filters-free-current-media.patch +Patch12: cups-filters-nickname-handling.patch +Patch13: cups-filters-uninit-attrs.patch +Patch14: cups-filters-allocedrange-lost.patch +Patch15: cups-filters-document-format-leak.patch +Patch16: cups-filters-ipp-leak.patch +Patch17: cups-filters-support-jobattr-leaks.patch +Patch18: cups-filters-undef-printquality.patch +Patch19: cups-filters-warnings.patch Requires: cups-filters-libs%{?_isa} = %{version}-%{release} @@ -353,6 +373,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Nov 24 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-3 +- fix various memory issues within cups-browsed + * Thu Nov 05 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-2 - use make and git-core From d613403ccefe8441b75200179423cd9b42ca04e8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 1 Dec 2020 08:04:34 +0100 Subject: [PATCH 111/197] filters using ijs were removed, removed the dep --- cups-filters.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 84a9fbe..b1c4a43 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.5 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -76,8 +76,6 @@ BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(dbus-1) BuildRequires: ghostscript -# libijs -BuildRequires: pkgconfig(ijs) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(lcms2) @@ -373,6 +371,9 @@ done %{_libdir}/libfontembed.so %changelog +* Tue Dec 01 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-4 +- filters using ijs were removed, removed the dep + * Tue Nov 24 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-3 - fix various memory issues within cups-browsed From 6a6ba51b99a6d26768ce2fd86fe9dd3d8137e68a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 1 Dec 2020 08:39:41 +0100 Subject: [PATCH 112/197] Sort the files and requires --- cups-filters.spec | 171 +++++++++++++++++++++++----------------------- 1 file changed, 86 insertions(+), 85 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index b1c4a43..9c2692e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -45,10 +45,14 @@ Patch17: cups-filters-support-jobattr-leaks.patch Patch18: cups-filters-undef-printquality.patch Patch19: cups-filters-warnings.patch -Requires: cups-filters-libs%{?_isa} = %{version}-%{release} -# gcc and gcc-c++ is not in buildroot by default +# autogen.sh +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: gettext-devel +BuildRequires: libtool +# build requirements for build system: # gcc for backends (implicitclass, parallel, serial, backend error handling) # cupsfilters (colord, color manager...), filter (banners, # commandto*, braille, foomatic-rip, imagetoraster, imagetopdf, gstoraster e.g.), @@ -60,25 +64,32 @@ BuildRequires: gcc-c++ BuildRequires: git-core # uses make for compiling BuildRequires: make - -BuildRequires: cups-devel +# we use pkgconfig to get a proper devel packages +# proper CFLAGS and LDFLAGS BuildRequires: pkgconf-pkg-config + +# uses CUPS API functions - arrays, ipp functions +BuildRequires: cups-devel + # pdftopdf BuildRequires: pkgconfig(libqpdf) + # pdftops BuildRequires: poppler-utils -# pdftoijs, pdftoopvp, pdftoraster, gstoraster -BuildRequires: pkgconfig(poppler) -BuildRequires: poppler-cpp-devel + +# pdftoraster, gstoraster +BuildRequires: ghostscript BuildRequires: libjpeg-turbo-devel BuildRequires: libtiff-devel -BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(dbus-1) -BuildRequires: ghostscript -BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(lcms2) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(poppler) +BuildRequires: pkgconfig(zlib) +BuildRequires: poppler-cpp-devel + # cups-browsed BuildRequires: avahi-devel BuildRequires: pkgconfig(avahi-glib) @@ -91,30 +102,32 @@ BuildRequires: python3-cups # Testing font for test scripts. BuildRequires: dejavu-sans-fonts -# autogen.sh -BuildRequires: autoconf -BuildRequires: automake -BuildRequires: gettext-devel -BuildRequires: libtool - # needed for systemd rpm macros in scriptlets BuildRequires: systemd-rpm-macros -Requires: cups-filesystem -# if --with-pdftops is set to hybrid, we use poppler filters for several printers -# and for printing banners, for other printers we need gs - ghostscript -Requires: poppler-utils -# several filters calls 'gs' binary during filtering -Requires: ghostscript - -# for getting ICC profiles for filters (dbus must run) -Requires: colord - -# texttopdf -Requires: liberation-mono-fonts +# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues +# or device during discovery for newer (2012+) devices - make it recommended together +# with avahi - needed for device discovery as well +Recommends: nss-mdns +# avahi is needed for device discovery +Recommends: avahi +# ipptool is used in driverless backend, not needed classic PPD based print queue +Recommends: cups-ipptool # pstopdf Requires: bc grep sed which +# for getting ICC profiles for filters (dbus must run) +Requires: colord +Requires: cups-filesystem +# have the same libs for the package +Requires: cups-filters-libs%{?_isa} = %{version}-%{release} +# several filters calls 'gs' binary during filtering +Requires: ghostscript +# texttopdf +Requires: liberation-mono-fonts +# if --with-pdftops is set to hybrid, we use poppler filters for several printers +# and for printing banners, for other printers we need gs - ghostscript +Requires: poppler-utils # cups-browsed # cups-browsed needs to have cups.service to run @@ -123,15 +136,6 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd -# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues -# or device during discovery for newer (2012+) devices - make it recommended together -# with avahi - needed for device discovery as well -Recommends: nss-mdns -# avahi is needed for device discovery -Recommends: avahi - -# ipptool is used in driverless backend, not needed classic PPD based print queue -Recommends: cups-ipptool %package libs Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries @@ -259,19 +263,22 @@ done %{_pkgdocdir}/ABOUT-NLS %{_pkgdocdir}/AUTHORS %{_pkgdocdir}/NEWS -%config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf -%{_cups_serverbin}/filter/cgmtopdf -%{_cups_serverbin}/filter/cmxtopdf -%{_cups_serverbin}/filter/emftopdf -%{_cups_serverbin}/filter/imagetoubrl -%{_cups_serverbin}/filter/svgtopdf -%{_cups_serverbin}/filter/textbrftoindexv4 -%{_cups_serverbin}/filter/vectortoubrl -%{_cups_serverbin}/filter/wmftopdf -%{_cups_serverbin}/filter/xfigtopdf -%attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf -%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser -%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf +%{_bindir}/foomatic-rip +%{_bindir}/driverless +%{_bindir}/driverless-fax +%{_sbindir}/cups-browsed +%attr(0700,root,root) %{_cups_serverbin}/backend/beh +# cups-brf needs to be run as root, otherwise it leaves error messages +# in journal +%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf +# implicitclass backend must be run as root +%attr(0700,root,root) %{_cups_serverbin}/backend/implicitclass +# all backends needs to be run only as root because of kerberos +%attr(0700,root,root) %{_cups_serverbin}/backend/parallel +# Serial backend needs to run as root (bug #212577#c4). +%attr(0700,root,root) %{_cups_serverbin}/backend/serial +%{_cups_serverbin}/backend/driverless +%{_cups_serverbin}/backend/driverless-fax %attr(0755,root,root) %{_cups_serverbin}/filter/commandtoescpx %attr(0755,root,root) %{_cups_serverbin}/filter/commandtopclx %attr(0755,root,root) %{_cups_serverbin}/filter/foomatic-rip @@ -301,39 +308,21 @@ done %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext %attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf %attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf -# all backends needs to be run only as root because of kerberos -%attr(0700,root,root) %{_cups_serverbin}/backend/parallel -# Serial backend needs to run as root (bug #212577#c4). -%attr(0700,root,root) %{_cups_serverbin}/backend/serial -# implicitclass backend must be run as root -%attr(0700,root,root) %{_cups_serverbin}/backend/implicitclass -%attr(0700,root,root) %{_cups_serverbin}/backend/beh -# cups-brf needs to be run as root, otherwise it leaves error messages -# in journal -%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf -%{_bindir}/foomatic-rip -%{_bindir}/driverless -%{_bindir}/driverless-fax -%{_cups_serverbin}/backend/driverless -%{_cups_serverbin}/backend/driverless-fax +%{_cups_serverbin}/filter/cgmtopdf +%{_cups_serverbin}/filter/cmxtopdf +%{_cups_serverbin}/filter/emftopdf +%{_cups_serverbin}/filter/imagetoubrl +%{_cups_serverbin}/filter/svgtopdf +%{_cups_serverbin}/filter/textbrftoindexv4 +%{_cups_serverbin}/filter/vectortoubrl +%{_cups_serverbin}/filter/wmftopdf +%{_cups_serverbin}/filter/xfigtopdf %{_cups_serverbin}/driver/driverless %{_cups_serverbin}/driver/driverless-fax %{_datadir}/cups/banners %{_datadir}/cups/braille %{_datadir}/cups/charsets %{_datadir}/cups/data/* -# this needs to be in the main package because of cupsfilters.drv -%{_datadir}/cups/ppdc/pcl.h -%{_datadir}/cups/ppdc/braille.defs -%{_datadir}/cups/ppdc/fr-braille.po -%{_datadir}/cups/ppdc/imagemagick.defs -%{_datadir}/cups/ppdc/index.defs -%{_datadir}/cups/ppdc/liblouis.defs -%{_datadir}/cups/ppdc/liblouis1.defs -%{_datadir}/cups/ppdc/liblouis2.defs -%{_datadir}/cups/ppdc/liblouis3.defs -%{_datadir}/cups/ppdc/liblouis4.defs -%{_datadir}/cups/ppdc/media-braille.defs %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/drv/generic-brf.drv %{_datadir}/cups/drv/generic-ubrl.drv @@ -346,12 +335,24 @@ done %{_datadir}/cups/mime/braille.convs %{_datadir}/cups/mime/braille.types %{_datadir}/ppd/cupsfilters -%{_sbindir}/cups-browsed -%{_unitdir}/cups-browsed.service -%{_mandir}/man8/cups-browsed.8.gz -%{_mandir}/man5/cups-browsed.conf.5.gz +# this needs to be in the main package because of cupsfilters.drv +%{_datadir}/cups/ppdc/pcl.h +%{_datadir}/cups/ppdc/braille.defs +%{_datadir}/cups/ppdc/fr-braille.po +%{_datadir}/cups/ppdc/imagemagick.defs +%{_datadir}/cups/ppdc/index.defs +%{_datadir}/cups/ppdc/liblouis.defs +%{_datadir}/cups/ppdc/liblouis1.defs +%{_datadir}/cups/ppdc/liblouis2.defs +%{_datadir}/cups/ppdc/liblouis3.defs +%{_datadir}/cups/ppdc/liblouis4.defs +%{_datadir}/cups/ppdc/media-braille.defs %{_mandir}/man1/foomatic-rip.1.gz %{_mandir}/man1/driverless.1.gz +%{_mandir}/man5/cups-browsed.conf.5.gz +%{_mandir}/man8/cups-browsed.8.gz +%config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf +%{_unitdir}/cups-browsed.service %files libs %dir %{_pkgdocdir}/ @@ -362,13 +363,13 @@ done %{_libdir}/libfontembed.so.1* %files devel +%{_datadir}/cups/ppdc/escp.h %{_includedir}/cupsfilters %{_includedir}/fontembed -%{_datadir}/cups/ppdc/escp.h -%{_libdir}/pkgconfig/libcupsfilters.pc -%{_libdir}/pkgconfig/libfontembed.pc %{_libdir}/libcupsfilters.so %{_libdir}/libfontembed.so +%{_libdir}/pkgconfig/libcupsfilters.pc +%{_libdir}/pkgconfig/libfontembed.pc %changelog * Tue Dec 01 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-4 From 5d1b2b21fe131fb1fdc2cd622e64a779398835a0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 1 Dec 2020 08:55:31 +0100 Subject: [PATCH 113/197] Put back files forgotten by previous commit --- cups-filters.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cups-filters.spec b/cups-filters.spec index 9c2692e..1e0b04a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -279,6 +279,9 @@ done %attr(0700,root,root) %{_cups_serverbin}/backend/serial %{_cups_serverbin}/backend/driverless %{_cups_serverbin}/backend/driverless-fax +%attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser +%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf %attr(0755,root,root) %{_cups_serverbin}/filter/commandtoescpx %attr(0755,root,root) %{_cups_serverbin}/filter/commandtopclx %attr(0755,root,root) %{_cups_serverbin}/filter/foomatic-rip From 3a7b0475948b9b723343b3fc4ebb47b83c803a83 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 8 Dec 2020 11:25:12 +0100 Subject: [PATCH 114/197] 1.28.6 --- .gitignore | 1 + cups-filters-allocedrange-lost.patch | 32 ------ cups-filters-document-format-leak.patch | 15 --- cups-filters-free-after-error.patch | 26 ----- cups-filters-free-current-media.patch | 12 --- cups-filters-free-printer-sizes.patch | 30 ------ cups-filters-free-temp-insequence.patch | 13 --- cups-filters-get-attrs-earlier.patch | 36 ------- cups-filters-ipp-leak.patch | 22 ---- cups-filters-nickname-handling.patch | 103 ------------------- cups-filters-resolution-memleaks.patch | 124 ----------------------- cups-filters-support-jobattr-leaks.patch | 54 ---------- cups-filters-tagzeroattrs-notconst.patch | 15 --- cups-filters-undef-printquality.patch | 13 --- cups-filters-uninit-attrs.patch | 37 ------- cups-filters-unused-pointer.patch | 29 ------ cups-filters-uuid-recast.patch | 13 --- cups-filters-warnings.patch | 33 ------ cups-filters.spec | 30 ++---- foomatic-remove-tmpfile.patch | 17 ---- sources | 2 +- 21 files changed, 8 insertions(+), 649 deletions(-) delete mode 100644 cups-filters-allocedrange-lost.patch delete mode 100644 cups-filters-document-format-leak.patch delete mode 100644 cups-filters-free-after-error.patch delete mode 100644 cups-filters-free-current-media.patch delete mode 100644 cups-filters-free-printer-sizes.patch delete mode 100644 cups-filters-free-temp-insequence.patch delete mode 100644 cups-filters-get-attrs-earlier.patch delete mode 100644 cups-filters-ipp-leak.patch delete mode 100644 cups-filters-nickname-handling.patch delete mode 100644 cups-filters-resolution-memleaks.patch delete mode 100644 cups-filters-support-jobattr-leaks.patch delete mode 100644 cups-filters-tagzeroattrs-notconst.patch delete mode 100644 cups-filters-undef-printquality.patch delete mode 100644 cups-filters-uninit-attrs.patch delete mode 100644 cups-filters-unused-pointer.patch delete mode 100644 cups-filters-uuid-recast.patch delete mode 100644 cups-filters-warnings.patch delete mode 100644 foomatic-remove-tmpfile.patch diff --git a/.gitignore b/.gitignore index 8853b51..e8f59f9 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,4 @@ /cups-filters-1.28.1.tar.xz /cups-filters-1.28.2.tar.xz /cups-filters-1.28.5.tar.xz +/cups-filters-1.28.6.tar.xz diff --git a/cups-filters-allocedrange-lost.patch b/cups-filters-allocedrange-lost.patch deleted file mode 100644 index 32f430f..0000000 --- a/cups-filters-allocedrange-lost.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 93f21c3..32d03da 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -1770,7 +1770,7 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) - ipp_t *media_size; - cups_array_t *sizes, *size_ranges; - media_size_t *temp, *media_s; -- pagesize_range_t *temp_range; -+ pagesize_range_t *temp_range = NULL, *range = NULL; - char* attributes[] = { - "media-size-supported", - }; -@@ -1843,12 +1843,12 @@ void add_mediasize_attributes(char* cluster_name, ipp_t **merged_attributes) - } - } - if (num_ranges) { -- for (temp_range = cupsArrayFirst(size_ranges); temp_range; -- i++, temp_range = cupsArrayNext(size_ranges)) { -- ipp_t *size_range = create_media_range(temp_range->x_dim_min, -- temp_range->x_dim_max, -- temp_range->y_dim_min, -- temp_range->y_dim_max); -+ for (range = cupsArrayFirst(size_ranges); range; -+ i++, range = cupsArrayNext(size_ranges)) { -+ ipp_t *size_range = create_media_range(range->x_dim_min, -+ range->x_dim_max, -+ range->y_dim_min, -+ range->y_dim_max); - ippSetCollection(*merged_attributes, &media_size_supported, i, - size_range); - ippDelete(size_range); diff --git a/cups-filters-document-format-leak.patch b/cups-filters-document-format-leak.patch deleted file mode 100644 index db8bf1f..0000000 --- a/cups-filters-document-format-leak.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index f246453..0c40112 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -6593,7 +6593,10 @@ on_job_state (CupsNotifier *object, - cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION); - cupsEncodeOptions2(request, num_options, options, IPP_TAG_PRINTER); - ippDelete(cupsDoRequest(conn, request, "/admin/")); -+ - cupsFreeOptions(num_options, options); -+ free(document_format); -+ - if (cupsLastError() > IPP_STATUS_OK_EVENTS_COMPLETE) { - debug_printf("ERROR: Unable to set \"" CUPS_BROWSED_DEST_PRINTER - "-default\" option to communicate the destination server for this job (%s)!\n", diff --git a/cups-filters-free-after-error.patch b/cups-filters-free-after-error.patch deleted file mode 100644 index ed41768..0000000 --- a/cups-filters-free-after-error.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index a303df3..58f8be5 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -8949,6 +8949,21 @@ gboolean update_cups_queues(gpointer unused) { - p->timeout = current_time + pause_between_cups_queue_updates; - - cannot_create: -+ if (printer_attributes != NULL && num_cluster_printers != 1) -+ ippDelete(printer_attributes); -+ -+ if (default_pagesize != NULL && num_cluster_printers != 1) -+ free(default_pagesize); -+ -+ if (conflicts != NULL && num_cluster_printers != 1) -+ cupsArrayDelete(conflicts); -+ -+ if (make_model != NULL && num_cluster_printers != 1) -+ free(make_model); -+ -+ if (sizes != NULL && num_cluster_printers != 1) -+ cupsArrayDelete(sizes); -+ - if (p && !in_shutdown) - remove_printer_entry(p); - diff --git a/cups-filters-free-current-media.patch b/cups-filters-free-current-media.patch deleted file mode 100644 index e5aa324..0000000 --- a/cups-filters-free-current-media.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 58f8be5..3cb1f71 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3089,6 +3089,7 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, - free(temp->media_source); - free(temp->media_type); - free(temp); -+ ippDelete(current_media); - } - - /*Finding the default colormodel for the cluster*/ diff --git a/cups-filters-free-printer-sizes.patch b/cups-filters-free-printer-sizes.patch deleted file mode 100644 index 30f5151..0000000 --- a/cups-filters-free-printer-sizes.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index b8a907f..c50ba78 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -2354,8 +2354,6 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - twidth, tlength); - } - -- cupsArrayDelete(sizes); -- - /* - * Custom size support... - */ -@@ -2394,7 +2392,6 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - cupsFilePuts(fp, "*CustomPageSize True: \"pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\"\n"); - } - } else { -- cupsArrayDelete(sizes); - cupsFilePrintf(fp, - "*%% Printer did not supply page size info via IPP, using defaults\n" - "*OpenUI *PageSize/Media Size: PickOne\n" -@@ -2461,6 +2458,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - "*PaperDimension EnvMonarch/Envelope Monarch: \"279 540\"\n"); - } - -+ cupsArrayDelete(printer_sizes); -+ - /* - * InputSlot... - */ diff --git a/cups-filters-free-temp-insequence.patch b/cups-filters-free-temp-insequence.patch deleted file mode 100644 index a922d17..0000000 --- a/cups-filters-free-temp-insequence.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index f21df6b..0d0f30f 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3086,6 +3086,8 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, - temp->media_source, temp->media_type); - ippSetCollection(*merged_attributes, &media_col_default, 0, current_media); - -+ free(temp->media_source); -+ free(temp->media_type); - free(temp); - } - diff --git a/cups-filters-get-attrs-earlier.patch b/cups-filters-get-attrs-earlier.patch deleted file mode 100644 index 3f0034c..0000000 --- a/cups-filters-get-attrs-earlier.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 885bc1c..b4df0e4 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -8157,6 +8157,7 @@ gboolean update_cups_queues(gpointer unused) { - sizes = NULL; - } else { - make_model = (char*)malloc(sizeof(char) * 256); -+ printer_attributes = get_cluster_attributes(p->queue_name); - if ((attr = ippFindAttribute(printer_attributes, - "printer-make-and-model", - IPP_TAG_TEXT)) != NULL) -@@ -8174,7 +8175,6 @@ gboolean update_cups_queues(gpointer unused) { - } - } - default_pagesize = (char *)malloc(sizeof(char)*32); -- printer_attributes = get_cluster_attributes(p->queue_name); - debug_printf("Generated Merged Attributes for local queue %s\n", - p->queue_name); - conflicts = generate_cluster_conflicts(p->queue_name, -@@ -8499,6 +8499,7 @@ gboolean update_cups_queues(gpointer unused) { - sizes = NULL; - } else { - make_model = (char*)malloc(sizeof(char)*256); -+ printer_attributes = get_cluster_attributes(p->queue_name); - if((attr = ippFindAttribute(printer_attributes, - "printer-make-and-model", - IPP_TAG_TEXT)) != NULL) -@@ -8516,7 +8517,6 @@ gboolean update_cups_queues(gpointer unused) { - } - } - default_pagesize = (char *)malloc(sizeof(char)*32); -- printer_attributes = get_cluster_attributes(p->queue_name); - debug_printf("Generated Merged Attributes for local queue %s\n", - p->queue_name); - conflicts = generate_cluster_conflicts(p->queue_name, diff --git a/cups-filters-ipp-leak.patch b/cups-filters-ipp-leak.patch deleted file mode 100644 index 23dba59..0000000 --- a/cups-filters-ipp-leak.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 0c40112..450179b 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -6417,13 +6417,14 @@ on_job_state (CupsNotifier *object, - } - break; - } -+ -+ ippDelete(response); -+ response = NULL; -+ - if (pstate == IPP_PRINTER_IDLE && paccept) { - q->last_printer = i; - break; - } -- -- ippDelete(response); -- response = NULL; - } else - debug_printf("IPP request to %s:%d failed.\n", p->host, - p->port); diff --git a/cups-filters-nickname-handling.patch b/cups-filters-nickname-handling.patch deleted file mode 100644 index 5f5fd6e..0000000 --- a/cups-filters-nickname-handling.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 3cb1f71..db822af 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -7200,6 +7200,10 @@ create_remote_printer_entry (const char *queue_name, - in a row during creation of this printer's queue */ - p->timeouted = 0; - -+ /* Initialize nickname array for *Nickname directive from PPD -+ * - either from CUPS server or from our PPD generator */ -+ p->nickname = NULL; -+ - /* Remote CUPS printer or local queue remaining from previous cups-browsed - session */ - /* is_cups_queue: -1: Unknown, 0: IPP printer, 1: Remote CUPS queue, -@@ -7215,7 +7219,6 @@ create_remote_printer_entry (const char *queue_name, - remote CUPS server gets used. So we will not generate a PPD file - or interface script at this point. */ - p->netprinter = 0; -- p->nickname = NULL; - if (p->uri[0] != '\0') { - p->prattrs = get_printer_attributes(p->uri, NULL, 0, NULL, 0, 1); - debug_log_out(get_printer_attributes_log); -@@ -7620,7 +7623,7 @@ gboolean update_cups_queues(gpointer unused) { - time_t current_time; - int i, ap_remote_queue_id_line_inserted, - want_raw, num_cluster_printers = 0; -- char *disabled_str, *ptr; -+ char *disabled_str; - char *ppdfile, *ifscript; - int fd = 0; /* Script file descriptor */ - char tempfile[1024]; /* Temporary file */ -@@ -8189,7 +8192,6 @@ gboolean update_cups_queues(gpointer unused) { - debug_printf("Generated Default Attributes for local queue %s\n", - p->queue_name); - } -- p->nickname = NULL; - if (ppdfile == NULL) { - /* If we do not want CUPS-generated PPDs or we cannot obtain a - CUPS-generated PPD, for example if CUPS does not create a -@@ -8476,7 +8478,6 @@ gboolean update_cups_queues(gpointer unused) { - p->queue_name, p->uri); - goto cannot_create; - } -- p->nickname = NULL; - num_cluster_printers = 0; - for (s = (remote_printer_t *)cupsArrayFirst(remote_printers); - s; s = (remote_printer_t *)cupsArrayNext(remote_printers)) { -@@ -8683,14 +8684,48 @@ gboolean update_cups_queues(gpointer unused) { - manipulations of the print queue have replaced the PPD. - Check whether nickname is defined too */ - if (!strncmp(line, "*NickName:", 10) && p->nickname == NULL) { -+ char *ptr = NULL; -+ char *end_ptr = NULL; -+ int nickname_len = 0; -+ - ptr = strchr(line, '"'); -- if (ptr) { -- ptr ++; -- p->nickname = strdup(ptr); -- ptr = strchr(p->nickname, '"'); -- if (ptr) -- *ptr = '\0'; -+ -+ if (ptr == NULL) -+ { -+ debug_printf("Malformed *Nickname directive in PPD - no double quote in line.\n"); -+ continue; -+ } -+ -+ ptr ++; -+ end_ptr = strchr(ptr, '"'); -+ -+ if (end_ptr == NULL) -+ { -+ debug_printf("Malformed *Nickname directive in PPD - no ending double quote\n"); -+ continue; - } -+ -+ /* both pointers are null terminated, because cupsFileGets() puts -+ * a null terminator into returned buffer with one line -+ * here as 'line' array) and those two pointers points on two places -+ * in the 'line' array. -+ */ -+ nickname_len = strlen(ptr) - strlen(end_ptr); -+ -+ if (nickname_len == 0) -+ { -+ debug_printf("Malformed *Nickname directive in PPD - empty nickname.\n"); -+ continue; -+ } -+ -+ /* alloc one more space for null terminator, calloc() will initialize -+ * it to null automatically, so then we only copy a string with 'nickname_len' -+ * length to get a proper null terminated p->nickname. -+ */ -+ p->nickname = (char*)calloc(nickname_len + 1, sizeof(char)); -+ -+ if (p->nickname != NULL) -+ strncpy(p->nickname, ptr, nickname_len); - } - } - cupsFilePrintf(out,"*cupsFilter2: \"application/vnd.cups-pdf application/pdf 0 -\"\n"); diff --git a/cups-filters-resolution-memleaks.patch b/cups-filters-resolution-memleaks.patch deleted file mode 100644 index 6921ae7..0000000 --- a/cups-filters-resolution-memleaks.patch +++ /dev/null @@ -1,124 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 7b4aa0c..bc694f0 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -1059,9 +1059,11 @@ ippResolutionListToArray(ipp_attribute_t *attr) - res_array = resolutionArrayNew(); - if (res_array) { - for (i = 0; i < count; i ++) -- if ((res = ippResolutionToRes(attr, i)) != NULL && -- cupsArrayFind(res_array, res) == NULL) -- cupsArrayAdd(res_array, res); -+ if ((res = ippResolutionToRes(attr, i)) != NULL) { -+ if (cupsArrayFind(res_array, res) == NULL) -+ cupsArrayAdd(res_array, res); -+ free_resolution(res, NULL); -+ } - } - if (cupsArrayCount(res_array) == 0) { - cupsArrayDelete(res_array); -diff --git a/cupsfilters/ppdgenerator.h b/cupsfilters/ppdgenerator.h -index 5e03e6d..050c320 100644 ---- a/cupsfilters/ppdgenerator.h -+++ b/cupsfilters/ppdgenerator.h -@@ -71,6 +71,7 @@ char *ppdCreateFromIPP2(char *buffer, size_t bufsize, - const char *default_cluster_color); - int compare_resolutions(void *resolution_a, void *resolution_b, - void *user_data); -+void free_resolution(void *resolution, void *user_data); - res_t * ippResolutionToRes(ipp_attribute_t *attr, int index); - cups_array_t * resolutionArrayNew(); - cups_array_t* generate_sizes(ipp_t *response, -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index e2c9d38..8a882a1 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -1733,12 +1733,14 @@ void add_resolution_attributes(char* cluster_name, ipp_t **merged_attributes) - if ((attr = ippFindAttribute(p->prattrs, attributes[attr_no], - IPP_TAG_RESOLUTION)) != NULL) { - for (i = 0, count = ippGetCount(attr); i < count; i ++) { -- if ((res = ippResolutionToRes(attr, i)) != NULL && -- cupsArrayFind(res_array, res) == NULL) { -- cupsArrayAdd(res_array, res); -- num_resolution ++; -- } -- } -+ if ((res = ippResolutionToRes(attr, i)) != NULL) { -+ if (cupsArrayFind(res_array, res) == NULL) { -+ cupsArrayAdd(res_array, res); -+ num_resolution ++; -+ } -+ free_resolution(res, NULL); -+ } -+ } - } - } - if (num_resolution) { -@@ -3219,6 +3221,7 @@ void get_cluster_default_attributes(ipp_t** merged_attributes, - "printer-resolution-default", - IPP_RES_PER_INCH, xres, yres); - debug_printf("Default Resolution : %dx%d\n", xres, yres); -+ free_resolution(res, NULL); - } - } - -@@ -6157,7 +6160,7 @@ on_job_state (CupsNotifier *object, - const char *pdl = NULL; - cups_array_t *pdl_list; - char resolution[32]; -- res_t *max_res = NULL, *min_res = NULL, *res; -+ res_t *max_res = NULL, *min_res = NULL, *res = NULL; - int xres, yres; - int got_printer_info; - static const char *pattrs[] = -@@ -6504,6 +6507,10 @@ on_job_state (CupsNotifier *object, - - /* Deciding the resolution to be sent with the job */ - /* Finding the minimum and maximum resolution supported by the printer */ -+ -+ max_res = resolutionNew(0, 0); -+ min_res = resolutionNew(0, 0); -+ - if (s && - ((attr = ippFindAttribute(s->prattrs, "printer-resolution-supported", - IPP_TAG_RESOLUTION)) != NULL)) { -@@ -6511,14 +6518,20 @@ on_job_state (CupsNotifier *object, - if ((res = ippResolutionToRes(attr, i)) != NULL) { - debug_printf("%d %d\n",res->x,res->y); - if (i == 0) { -- max_res = res; -- min_res = res; -+ max_res->x = res->x; -+ max_res->y = res->y; -+ min_res->x = res->x; -+ min_res->y = res->y; - } else { - if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) -- max_res = res; -+ max_res->x = res->x; -+ max_res->y = res->y; - if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) -- min_res = res; -+ min_res->x = res->x; -+ min_res->y = res->y; - } -+ free_resolution(res, NULL); -+ res = NULL; - } - } - } -@@ -6555,10 +6568,14 @@ on_job_state (CupsNotifier *object, - snprintf(resolution, sizeof(resolution), "%ddpi", xres); - else - snprintf(resolution, sizeof(resolution), "%dx%ddpi", xres, yres); -+ free_resolution(res, NULL); - } - } - } - -+ free_resolution(max_res, NULL); -+ free_resolution(min_res, NULL); -+ - request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER); - httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, - "localhost", 0, "/printers/%s", printer); diff --git a/cups-filters-support-jobattr-leaks.patch b/cups-filters-support-jobattr-leaks.patch deleted file mode 100644 index 2e52fe1..0000000 --- a/cups-filters-support-jobattr-leaks.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 450179b..ec00151 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3237,15 +3237,15 @@ int supports_job_attributes_requested(const gchar* printer, int printer_index, - ipp_attribute_t *attr, *attr1; - ipp_t *request, *response = NULL; - const char *str, *side, *resource; -- cups_array_t *job_sheet_supported, -- *multiple_doc_supported, *print_qualities, -- *media_type_supported, *staplelocation_supported, -- *foldtype_supported, *punchmedia_supported, -- *color_supported; -+ cups_array_t *job_sheet_supported = NULL, -+ *multiple_doc_supported = NULL, *print_qualities = NULL, -+ *media_type_supported = NULL, *staplelocation_supported = NULL, -+ *foldtype_supported = NULL, *punchmedia_supported = NULL, -+ *color_supported = NULL; - remote_printer_t *p; - int i, count, side_found, orien_req, orien, - orien_found; -- cups_array_t *sizes; -+ cups_array_t *sizes = NULL; - int ret = 1; - - p = (remote_printer_t *)cupsArrayIndex(remote_printers, printer_index); -@@ -3515,7 +3515,26 @@ int supports_job_attributes_requested(const gchar* printer, int printer_index, - } - - cleanup: -- ippDelete(response); -+ if (response != NULL) -+ ippDelete(response); -+ if (job_sheet_supported != NULL) -+ cupsArrayDelete(job_sheet_supported); -+ if (multiple_doc_supported) -+ cupsArrayDelete(multiple_doc_supported); -+ if (media_type_supported != NULL) -+ cupsArrayDelete(media_type_supported); -+ if (staplelocation_supported != NULL) -+ cupsArrayDelete(staplelocation_supported); -+ if (foldtype_supported != NULL) -+ cupsArrayDelete(foldtype_supported); -+ if (punchmedia_supported != NULL) -+ cupsArrayDelete(punchmedia_supported); -+ if (color_supported != NULL) -+ cupsArrayDelete(color_supported); -+ if (print_qualities != NULL) -+ cupsArrayDelete(print_qualities); -+ if (sizes != NULL) -+ cupsArrayDelete(sizes); - - return ret; - } diff --git a/cups-filters-tagzeroattrs-notconst.patch b/cups-filters-tagzeroattrs-notconst.patch deleted file mode 100644 index a863e47..0000000 --- a/cups-filters-tagzeroattrs-notconst.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 174e293..7110be4 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -1491,8 +1491,8 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) - strncpy(values[i], q, sizeof(values[i]) - 1); - } - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, -- IPP_CONST_TAG(IPP_TAG_KEYWORD), -- attributes[attr_no], num_value, NULL, -+ IPP_TAG_KEYWORD, attributes[attr_no], -+ num_value, NULL, - (const char * const *)values); - - for (int k = 0; k < i; k++) { diff --git a/cups-filters-undef-printquality.patch b/cups-filters-undef-printquality.patch deleted file mode 100644 index c8b6bab..0000000 --- a/cups-filters-undef-printquality.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 0a8a7f1..92c2e6a 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -6174,7 +6174,7 @@ on_job_state (CupsNotifier *object, - cups_option_t *options; - int num_of_printers; - char* document_format; -- int print_quality; -+ int print_quality = 0; - const char *pdl = NULL; - cups_array_t *pdl_list; - char resolution[32]; diff --git a/cups-filters-uninit-attrs.patch b/cups-filters-uninit-attrs.patch deleted file mode 100644 index dc2a729..0000000 --- a/cups-filters-uninit-attrs.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 826679f..93f21c3 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -1415,8 +1415,8 @@ void add_mimetype_attributes(char* cluster_name, ipp_t **merged_attributes) - for (q = (char *)cupsArrayFirst(list),i=0; - q; - q = (char *)cupsArrayNext(list),i++) { -- values[i]=malloc(sizeof(char)*strlen(q)+1); -- strncpy(values[i], q, sizeof(values[i]) - 1); -+ values[i]=malloc(sizeof(char) * (strlen(q) + 1)); -+ snprintf(values[i], strlen(q) + 1, "%s", q); - } - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER,IPP_TAG_MIMETYPE, - attributes[attr_no], num_value, NULL, -@@ -1487,8 +1487,8 @@ void add_tagzero_attributes(char* cluster_name, ipp_t **merged_attributes) - /* Transferring attributes value from cups Array to char* array*/ - for (q = (char *)cupsArrayFirst(list), i = 0; q; - q = (char *)cupsArrayNext(list), i ++) { -- values[i] = malloc(sizeof(char) * strlen(q) + 1); -- strncpy(values[i], q, sizeof(values[i]) - 1); -+ values[i] = malloc(sizeof(char) * (strlen(q) + 1)); -+ snprintf(values[i], strlen(q) + 1, "%s", q); - } - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, - IPP_TAG_KEYWORD, attributes[attr_no], -@@ -1558,8 +1558,8 @@ void add_keyword_attributes(char* cluster_name, ipp_t **merged_attributes) - for (q = (char *)cupsArrayFirst(list), i=0; - q; - q = (char *)cupsArrayNext(list), i ++) { -- values[i] = malloc(sizeof(char) * strlen(q) + 1); -- strncpy(values[i], q, sizeof(values[i]) - 1); -+ values[i] = malloc(sizeof(char) * (strlen(q) + 1)); -+ snprintf(values[i], strlen(q) + 1, "%s", q); - } - ippAddStrings(*merged_attributes, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, - attributes[attr_no], num_value, NULL, diff --git a/cups-filters-unused-pointer.patch b/cups-filters-unused-pointer.patch deleted file mode 100644 index f6ac3bc..0000000 --- a/cups-filters-unused-pointer.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 7110be4..f21df6b 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -2679,7 +2679,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) - cups_array_t *cluster_sizes = NULL, - *sizes_ppdname; - cups_size_t *size; -- pagesize_count_t *temp; - remote_printer_t *p; - ipp_attribute_t *defattr; - char ppdname[41], pagesize[128]; -@@ -2687,7 +2686,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) - int min_length, min_width, max_length, max_width, - bottom, left, right, top; - -- temp = (pagesize_count_t *)malloc(sizeof(pagesize_count_t)); - cluster_sizes = cupsArrayNew3((cups_array_func_t)pwg_compare_sizes, - NULL, NULL, 0, - (cups_acopy_func_t)pwg_copy_size, -@@ -2713,8 +2711,6 @@ cups_array_t* get_cluster_sizes(char* cluster_name) - sizes = generate_sizes(p->prattrs, &defattr, &min_length, &min_width, - &max_length, &max_width, - &bottom, &left, &right, &top, ppdname); -- temp->pagesize = ppdname; -- temp->count = 1; - for (size = (cups_size_t *)cupsArrayFirst(sizes); - size; size = (cups_size_t *)cupsArrayNext(sizes)) { - if (!cupsArrayFind(cluster_sizes, size)) { diff --git a/cups-filters-uuid-recast.patch b/cups-filters-uuid-recast.patch deleted file mode 100644 index 116efd5..0000000 --- a/cups-filters-uuid-recast.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 0d0f30f..885bc1c 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -3622,7 +3622,7 @@ new_local_printer (const char *device_uri, - { - local_printer_t *printer = g_malloc (sizeof (local_printer_t)); - printer->device_uri = strdup (device_uri); -- printer->uuid = uuid; -+ printer->uuid = (char*)uuid; - printer->cups_browsed_controlled = cups_browsed_controlled; - return printer; - } diff --git a/cups-filters-warnings.patch b/cups-filters-warnings.patch deleted file mode 100644 index 3707bb5..0000000 --- a/cups-filters-warnings.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/cupsfilters/ppdgenerator.h b/cupsfilters/ppdgenerator.h -index 050c3201..027b9752 100644 ---- a/cupsfilters/ppdgenerator.h -+++ b/cupsfilters/ppdgenerator.h -@@ -73,6 +73,7 @@ int compare_resolutions(void *resolution_a, void *resolution_b, - void *user_data); - void free_resolution(void *resolution, void *user_data); - res_t * ippResolutionToRes(ipp_attribute_t *attr, int index); -+res_t * resolutionNew(int x, int y); - cups_array_t * resolutionArrayNew(); - cups_array_t* generate_sizes(ipp_t *response, - ipp_attribute_t **defattr, -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index f47b8115..89c403fc 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -6535,12 +6535,14 @@ on_job_state (CupsNotifier *object, - min_res->x = res->x; - min_res->y = res->y; - } else { -- if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) -+ if(compare_resolutions((void *)res,(void *)max_res,NULL) > 0) { - max_res->x = res->x; - max_res->y = res->y; -- if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) -+ } -+ if(compare_resolutions((void *)res,(void *)min_res,NULL) < 0) { - min_res->x = res->x; - min_res->y = res->y; -+ } - } - free_resolution(res, NULL); - res = NULL; diff --git a/cups-filters.spec b/cups-filters.spec index 1e0b04a..83b635b 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.5 -Release: 4%{?dist} +Version: 1.28.6 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -20,30 +20,9 @@ License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz -# backported from upstream https://github.com/OpenPrinting/cups-filters/pull/313 -Patch01: foomatic-remove-tmpfile.patch # backported from upstream # https://github.com/OpenPrinting/cups-filters/commit/240ffb901d06a117bb8e10b486bfd3de6fe464b2 -Patch02: 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch -# all below to patch19 backported from upstream PR -# https://github.com/OpenPrinting/cups-filters/pull/322 -Patch03: cups-filters-resolution-memleaks.patch -Patch04: cups-filters-tagzeroattrs-notconst.patch -Patch05: cups-filters-unused-pointer.patch -Patch06: cups-filters-free-temp-insequence.patch -Patch07: cups-filters-uuid-recast.patch -Patch08: cups-filters-get-attrs-earlier.patch -Patch09: cups-filters-free-after-error.patch -Patch10: cups-filters-free-printer-sizes.patch -Patch11: cups-filters-free-current-media.patch -Patch12: cups-filters-nickname-handling.patch -Patch13: cups-filters-uninit-attrs.patch -Patch14: cups-filters-allocedrange-lost.patch -Patch15: cups-filters-document-format-leak.patch -Patch16: cups-filters-ipp-leak.patch -Patch17: cups-filters-support-jobattr-leaks.patch -Patch18: cups-filters-undef-printquality.patch -Patch19: cups-filters-warnings.patch +Patch01: 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch # autogen.sh @@ -375,6 +354,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Dec 07 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.6-1 +- 1.28.6 + * Tue Dec 01 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.5-4 - filters using ijs were removed, removed the dep diff --git a/foomatic-remove-tmpfile.patch b/foomatic-remove-tmpfile.patch deleted file mode 100644 index bbe7a68..0000000 --- a/foomatic-remove-tmpfile.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c -index 7dc2426..146125f 100644 ---- a/filter/foomatic-rip/foomaticrip.c -+++ b/filter/foomatic-rip/foomaticrip.c -@@ -672,6 +672,12 @@ int print_file(const char *filename, int convert) - if (out != NULL) - fclose(out); - -+ // Delete temp file if we created one -+ if ( *tmpfilename ) { -+ _log("Removing temporary file %s\n", tmpfilename); -+ unlink(tmpfilename); -+ } -+ - return ret; - } - diff --git a/sources b/sources index 681dcd9..930e8ca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.5.tar.xz) = e020d0e14ad70fbac4d367b4f1d653faf5030b961c6fc4b9f9587c068ccb63c286d07ee32e04e634a877fc8ca90c6dfa4b89aa288e896eea0026e1053cd8a4ef +SHA512 (cups-filters-1.28.6.tar.xz) = 6a353d155ccdcb6882e1fe33d730efded0c49c00a5946c099a983701e1abcd929469762bfa6b04b8bc3ab0b76cb374db04eb96d50b094b51eac56ec87517d784 From a2ea1b6f10f5ec489f684619cf9fbc22daa7c192 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 22 Jan 2021 08:28:47 +0100 Subject: [PATCH 115/197] 1.28.7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - urftopdf nor pdftoopvp aren't compiled anymore - 1904405 - HP M281fdw: čžš characters printed as squares with "driverless" driver --- .gitignore | 1 + ...dded-NULL-check-when-removing-.Borde.patch | 58 ----------------- ...n-the-PPD-generator-really-give-prio.patch | 63 +++++++++++++++++++ sources | 2 +- 4 files changed, 65 insertions(+), 59 deletions(-) delete mode 100644 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch create mode 100644 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch diff --git a/.gitignore b/.gitignore index e8f59f9..0f1ec1d 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,4 @@ /cups-filters-1.28.2.tar.xz /cups-filters-1.28.5.tar.xz /cups-filters-1.28.6.tar.xz +/cups-filters-1.28.7.tar.xz diff --git a/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch b/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch deleted file mode 100644 index d7937df..0000000 --- a/0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 240ffb901d06a117bb8e10b486bfd3de6fe464b2 Mon Sep 17 00:00:00 2001 -From: Till Kamppeter <till.kamppeter@gmail.com> -Date: Wed, 28 Oct 2020 10:44:19 +0100 -Subject: [PATCH] libcupsfilters: Added NULL check when removing ".Borderless" - suffixes from page size names - ---- - NEWS | 2 ++ - cupsfilters/ppdgenerator.c | 12 ++++++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 9fd4fb21..7b4aa0cf 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -2224,7 +2224,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - - if (all_borderless) { - suffix = strcasestr(ppdname, ".Borderless"); -- *suffix = '\0'; -+ if (suffix) -+ *suffix = '\0'; - } - - cupsFilePrintf(fp, "*OpenUI *PageSize/%s: PickOne\n" -@@ -2258,7 +2259,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - - if (all_borderless) { - suffix = strcasestr(ppdsizename, ".Borderless"); -- *suffix = '\0'; -+ if (suffix) -+ *suffix = '\0'; - } - - cupsFilePrintf(fp, "*PageSize %s%s%s%s: \"<</PageSize[%s %s]>>setpagedevice\"\n", -@@ -2302,7 +2304,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - - if (all_borderless) { - suffix = strcasestr(ppdsizename, ".Borderless"); -- *suffix = '\0'; -+ if (suffix) -+ *suffix = '\0'; - } - - cupsFilePrintf(fp, "*PageRegion %s%s%s%s: \"<</PageSize[%s %s]>>setpagedevice\"\n", -@@ -2338,7 +2341,8 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - - if (all_borderless) { - suffix = strcasestr(ppdsizename, ".Borderless"); -- *suffix = '\0'; -+ if (suffix) -+ *suffix = '\0'; - } - - cupsFilePrintf(fp, "*ImageableArea %s: \"%s %s %s %s\"\n", ppdsizename, --- -2.26.2 - diff --git a/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch b/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch new file mode 100644 index 0000000..504ff70 --- /dev/null +++ b/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch @@ -0,0 +1,63 @@ +From a5dd51e25842c7499917f00e53228695fd113826 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter <till.kamppeter@gmail.com> +Date: Thu, 21 Jan 2021 15:50:26 +0100 +Subject: [PATCH] libcupsfilters: In the PPD generator really give priority to + Apple Raster against PDF + +(cherry picked from commit bcd1aedeecb83fe9499d1d0c3dc0dab1ea32811c) +--- + cupsfilters/ppdgenerator.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c +index 4e163836..ebc2ee1c 100644 +--- a/cupsfilters/ppdgenerator.c ++++ b/cupsfilters/ppdgenerator.c +@@ -1951,7 +1951,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + formatfound = 1; + is_pdf = 1; + } else if (cupsArrayFind(pdl_list, "application/pdf")) { +- cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 100 -\"\n"); ++ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 200 -\"\n"); + manual_copies = 0; + formatfound = 1; + is_pdf = 1; +@@ -2030,7 +2030,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + if ((current_res = ippResolutionListToArray(attr)) != NULL && + joinResolutionArrays(&common_res, ¤t_res, &common_def, + ¤t_def)) { +- cupsFilePuts(fp, "*cupsFilter2: \"application/PCLm application/PCLm 200 -\"\n"); ++ cupsFilePuts(fp, "*cupsFilter2: \"application/PCLm application/PCLm 300 -\"\n"); + if (formatfound == 0) manual_copies = 1; + formatfound = 1; + is_pclm = 1; +@@ -2049,7 +2049,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + /* We put a high cost factor here as if a printer supports also + another format, like PWG or Apple Raster, we prefer it, as some + PCL-XL printers have bugs in their PCL-XL interpreters */ +- cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/vnd.hp-pclxl 300 gstopxl\"\n"); ++ cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/vnd.hp-pclxl 400 gstopxl\"\n"); + if (formatfound == 0) manual_copies = 1; + formatfound = 1; + } +@@ -2058,7 +2058,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + /* We put a high cost factor here as if a printer supports also + another format, like PWG or Apple Raster, we prefer it, as many + PostScript printers have bugs in their PostScript interpreters */ +- cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 500 -\"\n"); ++ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 600 -\"\n"); + if (formatfound == 0) manual_copies = 0; + formatfound = 1; + } +@@ -2067,7 +2067,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ + another format, like PWG or Apple Raster, we prefer it, as there + are some printers, like HP inkjets which report to accept PCL + but do not support PCL 5c/e or PCL-XL */ +- cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-raster application/vnd.hp-pcl 700 rastertopclx\"\n"); ++ cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-raster application/vnd.hp-pcl 800 rastertopclx\"\n"); + if (formatfound == 0) manual_copies = 1; + formatfound = 1; + } +-- +2.26.2 + diff --git a/sources b/sources index 930e8ca..5a7310d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.6.tar.xz) = 6a353d155ccdcb6882e1fe33d730efded0c49c00a5946c099a983701e1abcd929469762bfa6b04b8bc3ab0b76cb374db04eb96d50b094b51eac56ec87517d784 +SHA512 (cups-filters-1.28.7.tar.xz) = fa94f51ca1c208dcacb1814d8b812c9a72dd09475b7cf836b02c72cb5e3290318f37e475ee3ae8d45351715c3a2ccc0df5ac51ae6fc11462f5acdfa303a04727 From 0b4e8e3f0477ade328056e075d72a75f460fd0bd Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 22 Jan 2021 08:29:39 +0100 Subject: [PATCH 116/197] 1.28.7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - urftopdf nor pdftoopvp aren't compiled anymore - 1904405 - HP M281fdw: čžš characters printed as squares with "driverless" driver --- cups-filters.spec | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 83b635b..58f3a57 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.6 +Version: 1.28.7 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -21,8 +21,7 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -# https://github.com/OpenPrinting/cups-filters/commit/240ffb901d06a117bb8e10b486bfd3de6fe464b2 -Patch01: 0001-libcupsfilters-Added-NULL-check-when-removing-.Borde.patch +Patch01: 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch # autogen.sh @@ -171,6 +170,7 @@ This is the development package for OpenPrinting CUPS filters and backends. --disable-mutool \ --enable-driverless \ --enable-pclm \ + --with-apple-raster-filter=rastertopdf \ --with-remote-cups-local-queue-naming=RemoteName %make_build @@ -196,14 +196,6 @@ install -p -m 644 utils/cups-browsed.service %{buildroot}%{_unitdir} # create it temporarily as a relative symlink ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip -# Don't ship urftopdf for now (bug #1002947). -rm -f %{buildroot}%{_cups_serverbin}/filter/urftopdf -sed -i '/urftopdf/d' %{buildroot}%{_datadir}/cups/mime/cupsfilters.convs - -# Don't ship pdftoopvp for now (bug #1027557). -rm -f %{buildroot}%{_cups_serverbin}/filter/pdftoopvp -rm -f %{buildroot}%{_sysconfdir}/fonts/conf.d/99pdftoopvp.conf - %check make check @@ -354,6 +346,10 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Jan 11 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-1 +- 1.28.7, urftopdf nor pdftoopvp aren't compiled anymore +- 1904405 - HP M281fdw: čžš characters printed as squares with "driverless" driver + * Mon Dec 07 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.6-1 - 1.28.6 From f08a23d0dd5a0d6b71c2ed92943dd892f6c3cf8d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 25 Jan 2021 09:32:19 +0100 Subject: [PATCH 117/197] unpush fix for 1904405 - M281fdw now often chokes on URF --- cups-filters.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 58f3a57..072bb97 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,7 +21,7 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -Patch01: 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch +#Patch01: 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch # autogen.sh @@ -346,6 +346,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Jan 25 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-2 +- unpush fix for 1904405 - M281fdw now often chokes on URF + * Mon Jan 11 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-1 - 1.28.7, urftopdf nor pdftoopvp aren't compiled anymore - 1904405 - HP M281fdw: čžš characters printed as squares with "driverless" driver From 0423ef0468355a57e55af0692680ab38eb421b92 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Tue, 26 Jan 2021 02:50:23 +0000 Subject: [PATCH 118/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 072bb97..0e4fc69 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -346,6 +346,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Jan 25 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-2 - unpush fix for 1904405 - M281fdw now often chokes on URF From 79752012392ad3728550652bf1796e552a566d1b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 28 Jan 2021 09:44:19 +0100 Subject: [PATCH 119/197] remove nss-mdns - dont require a specific way how to resolve .local addresses --- cups-filters.spec | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 0e4fc69..bb27bc5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -83,13 +83,11 @@ BuildRequires: dejavu-sans-fonts # needed for systemd rpm macros in scriptlets BuildRequires: systemd-rpm-macros -# cups-browsed needs nss-mdns for resolving .local addresses of remote print queues -# or device during discovery for newer (2012+) devices - make it recommended together -# with avahi - needed for device discovery as well -Recommends: nss-mdns -# avahi is needed for device discovery +# cups-browsed needs systemd-resolved or nss-mdns for resolving .local addresses of remote print queues +# let's not require a specific package and let the user decide what he wants to use. +# Avahi is needed for device discovery for newer (2012+) devices and its sharing - make it recommended Recommends: avahi -# ipptool is used in driverless backend, not needed classic PPD based print queue +# ippfind is used in driverless backend, not needed classic PPD based print queue Recommends: cups-ipptool # pstopdf @@ -346,6 +344,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Thu Jan 28 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-4 +- remove nss-mdns - dont require a specific way how to resolve .local addresses + * Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.7-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 8404225612af3a09684a93c831028aefaf7c413f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 1 Feb 2021 11:58:26 +0100 Subject: [PATCH 120/197] rebuilt --- cups-filters.spec | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index bb27bc5..3c52016 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -85,6 +85,11 @@ BuildRequires: systemd-rpm-macros # cups-browsed needs systemd-resolved or nss-mdns for resolving .local addresses of remote print queues # let's not require a specific package and let the user decide what he wants to use. +# just recommend nss-mdns for Fedora for now to have working default, but +# don't hardwire it for resolved users +%if 0%{?fedora} +Recommends: nss-mdns +%endif # Avahi is needed for device discovery for newer (2012+) devices and its sharing - make it recommended Recommends: avahi # ippfind is used in driverless backend, not needed classic PPD based print queue @@ -344,6 +349,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Feb 01 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-5 +- rebuilt + * Thu Jan 28 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-4 - remove nss-mdns - dont require a specific way how to resolve .local addresses From fe20c1aeb69406dac42b59caddffcd7c5efbba1e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 2 Mar 2021 06:14:27 +0100 Subject: [PATCH 121/197] cups-filters.spec: fix the latest changelog message --- cups-filters.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 3c52016..9895f7e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -350,7 +350,7 @@ done %changelog * Mon Feb 01 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-5 -- rebuilt +- put nss-mdns only for Fedora * Thu Jan 28 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-4 - remove nss-mdns - dont require a specific way how to resolve .local addresses From 0ffeb35189fa0382e610910cce4ca8c1aded9ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> Date: Tue, 2 Mar 2021 16:14:00 +0100 Subject: [PATCH 122/197] Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. --- cups-filters.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 9895f7e..abb3466 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -349,6 +349,10 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.28.7-6 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + * Mon Feb 01 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-5 - put nss-mdns only for Fedora From 3f27a10b68c49c04ffec743981f5918b15560207 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 28 Apr 2021 12:47:20 +0200 Subject: [PATCH 123/197] 1954524 - cups-browsed doesn't save "*-default" options --- ...ays-save-.-default-option-entries-fr.patch | 29 +++++++++ ...n-the-PPD-generator-really-give-prio.patch | 63 ------------------- cups-filters.spec | 9 ++- 3 files changed, 36 insertions(+), 65 deletions(-) create mode 100644 0001-cups-browsed-Always-save-.-default-option-entries-fr.patch delete mode 100644 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch diff --git a/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch b/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch new file mode 100644 index 0000000..98fe409 --- /dev/null +++ b/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch @@ -0,0 +1,29 @@ +From 144322be6e06ff12f101fc35e472d62978861e28 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter <till.kamppeter@gmail.com> +Date: Thu, 15 Apr 2021 14:26:44 +0200 +Subject: [PATCH] cups-browsed: Always save "...-default" option entries from + printers.conf + +(cherry picked from commit cdd61132e1719a88dd8006c65e8e260c1aaa02e4) +--- + utils/cups-browsed.c | 4 +--- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index bffd1e09..0c335055 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -5648,9 +5648,7 @@ record_printer_options(const char *printer) { + strcasecmp(key + strlen(key) - strlen(*ptr) + 1, *ptr + 1) == 0)) + break; + if (*ptr != NULL) { +- if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0 && +- (ppdname == NULL || +- strncasecmp(key + strlen(key) - 8, "-default", 8))) { ++ if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0) { + ippAttributeString(attr, buf, sizeof(buf)); + buf[sizeof(buf) - 1] = '\0'; + c = buf; +-- +2.30.2 + diff --git a/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch b/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch deleted file mode 100644 index 504ff70..0000000 --- a/0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch +++ /dev/null @@ -1,63 +0,0 @@ -From a5dd51e25842c7499917f00e53228695fd113826 Mon Sep 17 00:00:00 2001 -From: Till Kamppeter <till.kamppeter@gmail.com> -Date: Thu, 21 Jan 2021 15:50:26 +0100 -Subject: [PATCH] libcupsfilters: In the PPD generator really give priority to - Apple Raster against PDF - -(cherry picked from commit bcd1aedeecb83fe9499d1d0c3dc0dab1ea32811c) ---- - cupsfilters/ppdgenerator.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/cupsfilters/ppdgenerator.c b/cupsfilters/ppdgenerator.c -index 4e163836..ebc2ee1c 100644 ---- a/cupsfilters/ppdgenerator.c -+++ b/cupsfilters/ppdgenerator.c -@@ -1951,7 +1951,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - formatfound = 1; - is_pdf = 1; - } else if (cupsArrayFind(pdl_list, "application/pdf")) { -- cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 100 -\"\n"); -+ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 200 -\"\n"); - manual_copies = 0; - formatfound = 1; - is_pdf = 1; -@@ -2030,7 +2030,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - if ((current_res = ippResolutionListToArray(attr)) != NULL && - joinResolutionArrays(&common_res, ¤t_res, &common_def, - ¤t_def)) { -- cupsFilePuts(fp, "*cupsFilter2: \"application/PCLm application/PCLm 200 -\"\n"); -+ cupsFilePuts(fp, "*cupsFilter2: \"application/PCLm application/PCLm 300 -\"\n"); - if (formatfound == 0) manual_copies = 1; - formatfound = 1; - is_pclm = 1; -@@ -2049,7 +2049,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - /* We put a high cost factor here as if a printer supports also - another format, like PWG or Apple Raster, we prefer it, as some - PCL-XL printers have bugs in their PCL-XL interpreters */ -- cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/vnd.hp-pclxl 300 gstopxl\"\n"); -+ cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/vnd.hp-pclxl 400 gstopxl\"\n"); - if (formatfound == 0) manual_copies = 1; - formatfound = 1; - } -@@ -2058,7 +2058,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - /* We put a high cost factor here as if a printer supports also - another format, like PWG or Apple Raster, we prefer it, as many - PostScript printers have bugs in their PostScript interpreters */ -- cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 500 -\"\n"); -+ cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 600 -\"\n"); - if (formatfound == 0) manual_copies = 0; - formatfound = 1; - } -@@ -2067,7 +2067,7 @@ ppdCreateFromIPP2(char *buffer, /* I - Filename buffer */ - another format, like PWG or Apple Raster, we prefer it, as there - are some printers, like HP inkjets which report to accept PCL - but do not support PCL 5c/e or PCL-XL */ -- cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-raster application/vnd.hp-pcl 700 rastertopclx\"\n"); -+ cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-raster application/vnd.hp-pcl 800 rastertopclx\"\n"); - if (formatfound == 0) manual_copies = 1; - formatfound = 1; - } --- -2.26.2 - diff --git a/cups-filters.spec b/cups-filters.spec index abb3466..007e0d0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.7 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,7 +21,9 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -#Patch01: 0001-libcupsfilters-In-the-PPD-generator-really-give-prio.patch +# 1954524 - cups-browsed doesn't save "*-default" options +# upstream https://github.com/OpenPrinting/cups-filters/commit/cdd61132e1719a88dd8006c65e8e260c1aaa02e4 +Patch01: 0001-cups-browsed-Always-save-.-default-option-entries-fr.patch # autogen.sh @@ -349,6 +351,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Wed Apr 28 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-7 +- 1954524 - cups-browsed doesn't save "*-default" options + * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.28.7-6 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. From d45600263552b743f70eb64b3288c86a39be4ef4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 20 May 2021 06:19:00 +0200 Subject: [PATCH 124/197] 1.28.8 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 0f1ec1d..1383f6a 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,4 @@ /cups-filters-1.28.5.tar.xz /cups-filters-1.28.6.tar.xz /cups-filters-1.28.7.tar.xz +/cups-filters-1.28.8.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 007e0d0..ecddd37 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.7 -Release: 7%{?dist} +Version: 1.28.8 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -351,6 +351,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Fri May 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.8-1 +- 1.28.8 + * Wed Apr 28 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.7-7 - 1954524 - cups-browsed doesn't save "*-default" options diff --git a/sources b/sources index 5a7310d..5e7055a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.7.tar.xz) = fa94f51ca1c208dcacb1814d8b812c9a72dd09475b7cf836b02c72cb5e3290318f37e475ee3ae8d45351715c3a2ccc0df5ac51ae6fc11462f5acdfa303a04727 +SHA512 (cups-filters-1.28.8.tar.xz) = 77b39ce2a30ad44d50aa58964b389fa5dd75b2b4307ccb25996050fd176e1e794ad0a66ddd4de76e95a671683c3bf448a4f471272c97a752f25ff6234f7d8511 From b712bd6dbacdc8f390b55443f5655c8f0a51cd04 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 21 Jun 2021 09:11:40 +0200 Subject: [PATCH 125/197] 1973056 - cups-browsed doesn't renew DBus subscription in time and all printing comes to a halt --- ...ake-NotifLeaseDuration-configurable-.patch | 128 ++++++++++++++++++ cups-filters.spec | 10 +- 2 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch diff --git a/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch b/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch new file mode 100644 index 0000000..df62d0c --- /dev/null +++ b/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch @@ -0,0 +1,128 @@ +From d90a4fc57b00b4a1f6c196bcb96025251b555dd9 Mon Sep 17 00:00:00 2001 +From: zdohnal <zdohnal@redhat.com> +Date: Fri, 18 Jun 2021 12:27:53 +0200 +Subject: [PATCH] cups-browsed.c: Make NotifLeaseDuration configurable and + renew after half the lease duration not 60 sec before end + +1) NotifLeaseDuration directive for cups-browsed.conf - it will make + lease duration for notifications configurable by users. IMO it is not + useful for regular users, but it is helpful during sanity testing + (for verifying that we actually renew the subscription when time + comes). The current hardcoded 1 day is unusuable for that :( . + I implemented the lowest threshold to 300s to prevent a possible DoS. +2) Subscription renewal is set to happen in the middle of NotifLeaseDuration, + not one minute before lease expiration. This was a problem on busy servers, + where cups-browsed was busy and wasn't able to renew the subscription + before cupsd removed it. Then if some jobs had come before the subscription + was created again, the queue got disabled. The proposed approach is based + on behavior of DHCP. +--- + utils/cups-browsed.c | 17 +++++++++++++---- + utils/cups-browsed.conf.5 | 11 +++++++++++ + utils/cups-browsed.conf.in | 8 ++++++++ + 3 files changed, 32 insertions(+), 4 deletions(-) + +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 61d6c551..2d367c59 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -142,7 +142,6 @@ static int ldap_rebind_proc(LDAP *RebindLDAPHandle, + #define TIMEOUT_REMOVE -1 + #define TIMEOUT_CHECK_LIST 2 + +-#define NOTIFY_LEASE_DURATION (24 * 60 * 60) + #define CUPS_DBUS_NAME "org.cups.cupsd.Notifier" + #define CUPS_DBUS_PATH "/org/cups/cupsd/Notifier" + #define CUPS_DBUS_INTERFACE "org.cups.cupsd.Notifier" +@@ -508,6 +507,7 @@ static int autoshutdown_timeout = 30; + static autoshutdown_inactivity_type_t autoshutdown_on = NO_QUEUES; + static guint autoshutdown_exec_id = 0; + static const char *default_printer = NULL; ++static unsigned int notify_lease_duration = 86400; + + static int debug_stderr = 0; + static int debug_logfile = 0; +@@ -5017,7 +5017,7 @@ create_subscription () + ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, + "notify-recipient-uri", NULL, "dbus://"); + ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, +- "notify-lease-duration", NOTIFY_LEASE_DURATION); ++ "notify-lease-duration", notify_lease_duration); + + resp = cupsDoRequest (conn, req, "/"); + if (!resp || cupsLastError() != IPP_STATUS_OK) { +@@ -5060,7 +5060,7 @@ renew_subscription (int id) + ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, + "notify-recipient-uri", NULL, "dbus://"); + ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, +- "notify-lease-duration", NOTIFY_LEASE_DURATION); ++ "notify-lease-duration", notify_lease_duration); + + resp = cupsDoRequest (conn, req, "/"); + if (!resp || cupsLastError() != IPP_STATUS_OK) { +@@ -11857,6 +11857,15 @@ read_configuration (const char *filename) + } else + debug_printf("Invalid %s value: %d\n", + line, t); ++ } else if (!strcasecmp(line, "NotifLeaseDuration") && value) { ++ int t = atoi(value); ++ if (t >= 300) { ++ notify_lease_duration = t; ++ debug_printf("Set %s to %d sec.\n", ++ line, t); ++ } else ++ debug_printf("Invalid %s value: %d\n", ++ line, t); + } else if (!strcasecmp(line, "HttpMaxRetries") && value) { + int t = atoi(value); + if (t > 0) { +@@ -12728,7 +12737,7 @@ int main(int argc, char*argv[]) { + /* Subscribe to CUPS' D-Bus notifications and create a proxy to receive + the notifications */ + subscription_id = create_subscription (); +- g_timeout_add_seconds (NOTIFY_LEASE_DURATION - 60, ++ g_timeout_add_seconds (notify_lease_duration / 2, + renew_subscription_timeout, + &subscription_id); + cups_notifier = cups_notifier_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, +diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 +index c47f8e8d..263f0843 100644 +--- a/utils/cups-browsed.conf.5 ++++ b/utils/cups-browsed.conf.5 +@@ -966,6 +966,17 @@ shutdown. + + .fam T + .fi ++NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed ++in cupsd will last before cupsd cancels it. The default value is 1 day ++in seconds - 86400. The subscription renewal is set to happen after half of ++NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues ++and doing specific actions when a D-BUS notification comes. ++.PP ++.nf ++.fam C ++ NotifLeaseDuration 86400 ++.fam T ++.fi + .SH SEE ALSO + + \fBcups-browsed\fP(8) +diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in +index 3cc4ebb1..ffdf83d6 100644 +--- a/utils/cups-browsed.conf.in ++++ b/utils/cups-browsed.conf.in +@@ -741,3 +741,11 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ + # on the size of the file. + + # DebugLogFileSize 300 ++ ++# NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed ++# in cupsd will last before cupsd cancels it. The default value is 1 day ++# in seconds - 86400. The subscription renewal is set to happen after half of ++# NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues ++# and doing specific actions when a D-BUS notification comes. ++ ++# NotifLeaseDuration 86400 +-- +2.31.1 + diff --git a/cups-filters.spec b/cups-filters.spec index ecddd37..ee6ba05 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.8 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,9 +21,10 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -# 1954524 - cups-browsed doesn't save "*-default" options -# upstream https://github.com/OpenPrinting/cups-filters/commit/cdd61132e1719a88dd8006c65e8e260c1aaa02e4 Patch01: 0001-cups-browsed-Always-save-.-default-option-entries-fr.patch +# 1973056 - renew dbus notifications in the half of time +# upstream https://github.com/OpenPrinting/cups-filters/commit/d90a4fc57b00b4a1f6c196bcb96025251b555dd9 +Patch02: 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch # autogen.sh @@ -351,6 +352,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Jun 21 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.8-2 +- 1973056 - cups-browsed doesn't renew DBus subscription in time and all printing comes to a halt + * Fri May 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.8-1 - 1.28.8 From 84a28971d9b2e48c943602978a8af683b63d51c8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 21 Jun 2021 11:40:01 +0200 Subject: [PATCH 126/197] 1.28.9 --- .gitignore | 1 + ...ays-save-.-default-option-entries-fr.patch | 29 ------------------- cups-filters.spec | 10 ++++--- sources | 2 +- 4 files changed, 8 insertions(+), 34 deletions(-) delete mode 100644 0001-cups-browsed-Always-save-.-default-option-entries-fr.patch diff --git a/.gitignore b/.gitignore index 1383f6a..2fc311c 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,4 @@ /cups-filters-1.28.6.tar.xz /cups-filters-1.28.7.tar.xz /cups-filters-1.28.8.tar.xz +/cups-filters-1.28.9.tar.xz diff --git a/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch b/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch deleted file mode 100644 index 98fe409..0000000 --- a/0001-cups-browsed-Always-save-.-default-option-entries-fr.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 144322be6e06ff12f101fc35e472d62978861e28 Mon Sep 17 00:00:00 2001 -From: Till Kamppeter <till.kamppeter@gmail.com> -Date: Thu, 15 Apr 2021 14:26:44 +0200 -Subject: [PATCH] cups-browsed: Always save "...-default" option entries from - printers.conf - -(cherry picked from commit cdd61132e1719a88dd8006c65e8e260c1aaa02e4) ---- - utils/cups-browsed.c | 4 +--- - 2 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index bffd1e09..0c335055 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -5648,9 +5648,7 @@ record_printer_options(const char *printer) { - strcasecmp(key + strlen(key) - strlen(*ptr) + 1, *ptr + 1) == 0)) - break; - if (*ptr != NULL) { -- if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0 && -- (ppdname == NULL || -- strncasecmp(key + strlen(key) - 8, "-default", 8))) { -+ if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0) { - ippAttributeString(attr, buf, sizeof(buf)); - buf[sizeof(buf) - 1] = '\0'; - c = buf; --- -2.30.2 - diff --git a/cups-filters.spec b/cups-filters.spec index ee6ba05..f4b7493 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.8 -Release: 2%{?dist} +Version: 1.28.9 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,10 +21,9 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -Patch01: 0001-cups-browsed-Always-save-.-default-option-entries-fr.patch # 1973056 - renew dbus notifications in the half of time # upstream https://github.com/OpenPrinting/cups-filters/commit/d90a4fc57b00b4a1f6c196bcb96025251b555dd9 -Patch02: 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch +Patch01: 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch # autogen.sh @@ -352,6 +351,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Jun 21 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-1 +- 1.28.9 + * Mon Jun 21 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.8-2 - 1973056 - cups-browsed doesn't renew DBus subscription in time and all printing comes to a halt diff --git a/sources b/sources index 5e7055a..b3b3063 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.8.tar.xz) = 77b39ce2a30ad44d50aa58964b389fa5dd75b2b4307ccb25996050fd176e1e794ad0a66ddd4de76e95a671683c3bf448a4f471272c97a752f25ff6234f7d8511 +SHA512 (cups-filters-1.28.9.tar.xz) = fbdf01b0a3acd70e3bf036ca4944a8b85ab4ab95d945458e924692008a8a37bb0b1fb097c4d4b3cf6f5ad68ae06e8358659cdfc24974ee629be37b54f5c3dca1 From d17a3ad72757854d3d2bc44d0a8365880604e526 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 20 Jul 2021 11:27:22 +0200 Subject: [PATCH 127/197] 1981603 - pdftopdf doesn't handle "page-range=10-2147483647" correctly --- ...ix-page-range-like-10-in-pdftopdf-fi.patch | 26 +++++++++++++++++++ cups-filters.spec | 7 ++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch diff --git a/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch b/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch new file mode 100644 index 0000000..1baab50 --- /dev/null +++ b/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch @@ -0,0 +1,26 @@ +From 022c34fedb66f706b2ab82d7506d5b5b1fa18e1f Mon Sep 17 00:00:00 2001 +From: Bryan Mason <bmason@redhat.com> +Date: Fri, 16 Jul 2021 11:19:42 -0700 +Subject: [PATCH] libcupsfilter: Fix page range like "10-" in pdftopdf() + filter function + +--- + filter/pdftopdf/pdftopdf.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/filter/pdftopdf/pdftopdf.cc b/filter/pdftopdf/pdftopdf.cc +index 5725e199..979644f1 100644 +--- a/filter/pdftopdf/pdftopdf.cc ++++ b/filter/pdftopdf/pdftopdf.cc +@@ -256,7 +256,7 @@ static void parseRanges(const char *range,IntervalSet &ret) // {{{ + } else { + upper=strtol(range,(char **)&range,10); + if (upper>=2147483647) { +- ret.add(1); ++ ret.add(lower); + } else { + ret.add(lower,upper+1); + } +-- +2.31.1 + diff --git a/cups-filters.spec b/cups-filters.spec index f4b7493..49b3137 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.9 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -24,6 +24,8 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio # 1973056 - renew dbus notifications in the half of time # upstream https://github.com/OpenPrinting/cups-filters/commit/d90a4fc57b00b4a1f6c196bcb96025251b555dd9 Patch01: 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch +# 1981603 - pdftopdf doesn't handle "page-range=10-2147483647" correctly +Patch02: 0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch # autogen.sh @@ -351,6 +353,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Wed Jul 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-2 +- 1981603 - pdftopdf doesn't handle "page-range=10-2147483647" correctly + * Mon Jun 21 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-1 - 1.28.9 From 5aab7baafb8fe63246c9acf63c712af0bc20b16e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 21 Jul 2021 20:14:33 +0000 Subject: [PATCH 128/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 49b3137..d6094ec 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.9 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -353,6 +353,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Wed Jul 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-2 - 1981603 - pdftopdf doesn't handle "page-range=10-2147483647" correctly From 5cab1ec88e46b4a9deaf1004a5691caa6834b2d9 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 27 Jul 2021 07:38:21 +0200 Subject: [PATCH 129/197] remove build requirement on poppler-devel - we need just poppler-cpp-devel --- cups-filters.spec | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index d6094ec..9ba59f9 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.9 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -68,9 +68,8 @@ BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(poppler) +BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(zlib) -BuildRequires: poppler-cpp-devel # cups-browsed BuildRequires: avahi-devel @@ -353,6 +352,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Tue Jul 27 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-4 +- remove build requirement on poppler-devel - we need just poppler-cpp-devel + * Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.9-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 925c0f3f695e3c8b56772bf3bf8719c65e2a63f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 27 Jul 2021 08:15:32 +0200 Subject: [PATCH 130/197] rebuilt with poppler-21.07.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 9ba59f9..fc7cf33 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.9 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -352,6 +352,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Tue Jul 27 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-5 +- rebuilt with poppler-21.07.0 + * Tue Jul 27 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-4 - remove build requirement on poppler-devel - we need just poppler-cpp-devel From 670e73ad828c62c13cd9a1438c96d428c24a6c9b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 15 Sep 2021 11:24:55 +0200 Subject: [PATCH 131/197] 1.28.10 --- .gitignore | 1 + ...ake-NotifLeaseDuration-configurable-.patch | 128 ------------------ ...ix-page-range-like-10-in-pdftopdf-fi.patch | 26 ---- cups-filters.spec | 12 +- sources | 2 +- 5 files changed, 7 insertions(+), 162 deletions(-) delete mode 100644 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch delete mode 100644 0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch diff --git a/.gitignore b/.gitignore index 2fc311c..1b3cbe6 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,4 @@ /cups-filters-1.28.7.tar.xz /cups-filters-1.28.8.tar.xz /cups-filters-1.28.9.tar.xz +/cups-filters-1.28.10.tar.xz diff --git a/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch b/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch deleted file mode 100644 index df62d0c..0000000 --- a/0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch +++ /dev/null @@ -1,128 +0,0 @@ -From d90a4fc57b00b4a1f6c196bcb96025251b555dd9 Mon Sep 17 00:00:00 2001 -From: zdohnal <zdohnal@redhat.com> -Date: Fri, 18 Jun 2021 12:27:53 +0200 -Subject: [PATCH] cups-browsed.c: Make NotifLeaseDuration configurable and - renew after half the lease duration not 60 sec before end - -1) NotifLeaseDuration directive for cups-browsed.conf - it will make - lease duration for notifications configurable by users. IMO it is not - useful for regular users, but it is helpful during sanity testing - (for verifying that we actually renew the subscription when time - comes). The current hardcoded 1 day is unusuable for that :( . - I implemented the lowest threshold to 300s to prevent a possible DoS. -2) Subscription renewal is set to happen in the middle of NotifLeaseDuration, - not one minute before lease expiration. This was a problem on busy servers, - where cups-browsed was busy and wasn't able to renew the subscription - before cupsd removed it. Then if some jobs had come before the subscription - was created again, the queue got disabled. The proposed approach is based - on behavior of DHCP. ---- - utils/cups-browsed.c | 17 +++++++++++++---- - utils/cups-browsed.conf.5 | 11 +++++++++++ - utils/cups-browsed.conf.in | 8 ++++++++ - 3 files changed, 32 insertions(+), 4 deletions(-) - -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 61d6c551..2d367c59 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -142,7 +142,6 @@ static int ldap_rebind_proc(LDAP *RebindLDAPHandle, - #define TIMEOUT_REMOVE -1 - #define TIMEOUT_CHECK_LIST 2 - --#define NOTIFY_LEASE_DURATION (24 * 60 * 60) - #define CUPS_DBUS_NAME "org.cups.cupsd.Notifier" - #define CUPS_DBUS_PATH "/org/cups/cupsd/Notifier" - #define CUPS_DBUS_INTERFACE "org.cups.cupsd.Notifier" -@@ -508,6 +507,7 @@ static int autoshutdown_timeout = 30; - static autoshutdown_inactivity_type_t autoshutdown_on = NO_QUEUES; - static guint autoshutdown_exec_id = 0; - static const char *default_printer = NULL; -+static unsigned int notify_lease_duration = 86400; - - static int debug_stderr = 0; - static int debug_logfile = 0; -@@ -5017,7 +5017,7 @@ create_subscription () - ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, - "notify-recipient-uri", NULL, "dbus://"); - ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, -- "notify-lease-duration", NOTIFY_LEASE_DURATION); -+ "notify-lease-duration", notify_lease_duration); - - resp = cupsDoRequest (conn, req, "/"); - if (!resp || cupsLastError() != IPP_STATUS_OK) { -@@ -5060,7 +5060,7 @@ renew_subscription (int id) - ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, - "notify-recipient-uri", NULL, "dbus://"); - ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, -- "notify-lease-duration", NOTIFY_LEASE_DURATION); -+ "notify-lease-duration", notify_lease_duration); - - resp = cupsDoRequest (conn, req, "/"); - if (!resp || cupsLastError() != IPP_STATUS_OK) { -@@ -11857,6 +11857,15 @@ read_configuration (const char *filename) - } else - debug_printf("Invalid %s value: %d\n", - line, t); -+ } else if (!strcasecmp(line, "NotifLeaseDuration") && value) { -+ int t = atoi(value); -+ if (t >= 300) { -+ notify_lease_duration = t; -+ debug_printf("Set %s to %d sec.\n", -+ line, t); -+ } else -+ debug_printf("Invalid %s value: %d\n", -+ line, t); - } else if (!strcasecmp(line, "HttpMaxRetries") && value) { - int t = atoi(value); - if (t > 0) { -@@ -12728,7 +12737,7 @@ int main(int argc, char*argv[]) { - /* Subscribe to CUPS' D-Bus notifications and create a proxy to receive - the notifications */ - subscription_id = create_subscription (); -- g_timeout_add_seconds (NOTIFY_LEASE_DURATION - 60, -+ g_timeout_add_seconds (notify_lease_duration / 2, - renew_subscription_timeout, - &subscription_id); - cups_notifier = cups_notifier_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 -index c47f8e8d..263f0843 100644 ---- a/utils/cups-browsed.conf.5 -+++ b/utils/cups-browsed.conf.5 -@@ -966,6 +966,17 @@ shutdown. - - .fam T - .fi -+NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed -+in cupsd will last before cupsd cancels it. The default value is 1 day -+in seconds - 86400. The subscription renewal is set to happen after half of -+NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues -+and doing specific actions when a D-BUS notification comes. -+.PP -+.nf -+.fam C -+ NotifLeaseDuration 86400 -+.fam T -+.fi - .SH SEE ALSO - - \fBcups-browsed\fP(8) -diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in -index 3cc4ebb1..ffdf83d6 100644 ---- a/utils/cups-browsed.conf.in -+++ b/utils/cups-browsed.conf.in -@@ -741,3 +741,11 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ - # on the size of the file. - - # DebugLogFileSize 300 -+ -+# NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed -+# in cupsd will last before cupsd cancels it. The default value is 1 day -+# in seconds - 86400. The subscription renewal is set to happen after half of -+# NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues -+# and doing specific actions when a D-BUS notification comes. -+ -+# NotifLeaseDuration 86400 --- -2.31.1 - diff --git a/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch b/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch deleted file mode 100644 index 1baab50..0000000 --- a/0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 022c34fedb66f706b2ab82d7506d5b5b1fa18e1f Mon Sep 17 00:00:00 2001 -From: Bryan Mason <bmason@redhat.com> -Date: Fri, 16 Jul 2021 11:19:42 -0700 -Subject: [PATCH] libcupsfilter: Fix page range like "10-" in pdftopdf() - filter function - ---- - filter/pdftopdf/pdftopdf.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/filter/pdftopdf/pdftopdf.cc b/filter/pdftopdf/pdftopdf.cc -index 5725e199..979644f1 100644 ---- a/filter/pdftopdf/pdftopdf.cc -+++ b/filter/pdftopdf/pdftopdf.cc -@@ -256,7 +256,7 @@ static void parseRanges(const char *range,IntervalSet &ret) // {{{ - } else { - upper=strtol(range,(char **)&range,10); - if (upper>=2147483647) { -- ret.add(1); -+ ret.add(lower); - } else { - ret.add(lower,upper+1); - } --- -2.31.1 - diff --git a/cups-filters.spec b/cups-filters.spec index fc7cf33..942ccb5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.9 -Release: 5%{?dist} +Version: 1.28.10 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,11 +21,6 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream -# 1973056 - renew dbus notifications in the half of time -# upstream https://github.com/OpenPrinting/cups-filters/commit/d90a4fc57b00b4a1f6c196bcb96025251b555dd9 -Patch01: 0001-cups-browsed.c-Make-NotifLeaseDuration-configurable-.patch -# 1981603 - pdftopdf doesn't handle "page-range=10-2147483647" correctly -Patch02: 0001-libcupsfilters-Fix-page-range-like-10-in-pdftopdf-fi.patch # autogen.sh @@ -352,6 +347,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Tue Sep 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-1 +- 1.28.10 + * Tue Jul 27 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.9-5 - rebuilt with poppler-21.07.0 diff --git a/sources b/sources index b3b3063..b303a1b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.9.tar.xz) = fbdf01b0a3acd70e3bf036ca4944a8b85ab4ab95d945458e924692008a8a37bb0b1fb097c4d4b3cf6f5ad68ae06e8358659cdfc24974ee629be37b54f5c3dca1 +SHA512 (cups-filters-1.28.10.tar.xz) = d6079633e10c3cfdc744491df03adc73d98dab0d9c0c6d3bc426b751545ae3434ea875e0841cec9358c19336347903f2832b5f801700b371cc1959e031bfa659 From 0874da6cc28460cf9d975e3e46be4405afd4d37d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 3 Jan 2022 16:14:07 +0100 Subject: [PATCH 132/197] 1995728 - Enable braille printing --- cups-filters.spec | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 942ccb5..e1d000d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.10 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -66,6 +66,9 @@ BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(zlib) +# braille printing +BuildRequires: liblouis-devel + # cups-browsed BuildRequires: avahi-devel BuildRequires: pkgconfig(avahi-glib) @@ -108,6 +111,12 @@ Requires: liberation-mono-fonts # and for printing banners, for other printers we need gs - ghostscript Requires: poppler-utils +# braille printing - required for file conversion +# liblouisutdml-utils for file2brl +# liblouis-utils for lou_translate +Requires: liblouis-utils +Requires: liblouisutdml-utils + # cups-browsed # cups-browsed needs to have cups.service to run Requires: cups @@ -347,6 +356,9 @@ done %{_libdir}/pkgconfig/libfontembed.pc %changelog +* Mon Dec 06 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-2 +- 1995728 - Enable braille printing + * Tue Sep 14 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-1 - 1.28.10 From 4ac3a5a53fb18b89b0dc859a5ccb634bffb0b0ef Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 17 Jan 2022 12:56:27 +0100 Subject: [PATCH 133/197] 2040973 - Make Braille printing support optional --- cups-filters.spec | 109 ++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index e1d000d..2c27dd5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.10 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -66,9 +66,6 @@ BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(zlib) -# braille printing -BuildRequires: liblouis-devel - # cups-browsed BuildRequires: avahi-devel BuildRequires: pkgconfig(avahi-glib) @@ -95,6 +92,8 @@ Recommends: nss-mdns Recommends: avahi # ippfind is used in driverless backend, not needed classic PPD based print queue Recommends: cups-ipptool +# braille filters and backend +Recommends: %{name}-braille%{?_isa} = %{version}-%{release} # pstopdf Requires: bc grep sed which @@ -111,12 +110,6 @@ Requires: liberation-mono-fonts # and for printing banners, for other printers we need gs - ghostscript Requires: poppler-utils -# braille printing - required for file conversion -# liblouisutdml-utils for file2brl -# liblouis-utils for lou_translate -Requires: liblouis-utils -Requires: liblouisutdml-utils - # cups-browsed # cups-browsed needs to have cups.service to run Requires: cups @@ -136,6 +129,20 @@ Summary: OpenPrinting CUPS filters and backends - development environment License: LGPLv2 and MIT Requires: cups-filters-libs%{?_isa} = %{version}-%{release} +%package braille +Summary: OpenPrinting CUPS filters and backends - braille filters and backend +License: GPLv2+ and MIT +BuildRequires: liblouis-devel +# remove after F36 goes EOL +Conflicts: cups-filters < 1.28.10-3 +# we need classic pdftopdf and other filters as well +Requires: cups-filters{?_isa} = %{version}-%{release} +# lou_translate and file2brl are needed for file conversions +# liblouis-utils for lou_translate +Requires: liblouis-utils +# liblouisutdml-utils for file2brl +Requires: liblouisutdml-utils + %description Contains backends, filters, and other software that was once part of the core CUPS distribution but is no longer maintained by @@ -149,6 +156,9 @@ This package provides cupsfilters and fontembed libraries. %description devel This is the development package for OpenPrinting CUPS filters and backends. +%description braille +The package provides filters and cups-brf backend needed for braille printing. + %prep %autosetup -S git @@ -249,9 +259,6 @@ done %{_bindir}/driverless-fax %{_sbindir}/cups-browsed %attr(0700,root,root) %{_cups_serverbin}/backend/beh -# cups-brf needs to be run as root, otherwise it leaves error messages -# in journal -%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf # implicitclass backend must be run as root %attr(0700,root,root) %{_cups_serverbin}/backend/implicitclass # all backends needs to be run only as root because of kerberos @@ -261,21 +268,15 @@ done %{_cups_serverbin}/backend/driverless %{_cups_serverbin}/backend/driverless-fax %attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf -%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser -%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf %attr(0755,root,root) %{_cups_serverbin}/filter/commandtoescpx %attr(0755,root,root) %{_cups_serverbin}/filter/commandtopclx %attr(0755,root,root) %{_cups_serverbin}/filter/foomatic-rip %attr(0755,root,root) %{_cups_serverbin}/filter/gstopdf %attr(0755,root,root) %{_cups_serverbin}/filter/gstopxl %attr(0755,root,root) %{_cups_serverbin}/filter/gstoraster -%attr(0755,root,root) %{_cups_serverbin}/filter/imagetobrf %attr(0755,root,root) %{_cups_serverbin}/filter/imagetopdf %attr(0755,root,root) %{_cups_serverbin}/filter/imagetops %attr(0755,root,root) %{_cups_serverbin}/filter/imagetoraster -%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv3 -%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv4 -%attr(0755,root,root) %{_cups_serverbin}/filter/musicxmltobrf %attr(0755,root,root) %{_cups_serverbin}/filter/pdftopdf %attr(0755,root,root) %{_cups_serverbin}/filter/pdftops %attr(0755,root,root) %{_cups_serverbin}/filter/pdftoraster @@ -290,47 +291,19 @@ done %attr(0755,root,root) %{_cups_serverbin}/filter/texttopdf %attr(0755,root,root) %{_cups_serverbin}/filter/texttops %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext -%attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf -%attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf -%{_cups_serverbin}/filter/cgmtopdf -%{_cups_serverbin}/filter/cmxtopdf -%{_cups_serverbin}/filter/emftopdf -%{_cups_serverbin}/filter/imagetoubrl -%{_cups_serverbin}/filter/svgtopdf -%{_cups_serverbin}/filter/textbrftoindexv4 -%{_cups_serverbin}/filter/vectortoubrl -%{_cups_serverbin}/filter/wmftopdf -%{_cups_serverbin}/filter/xfigtopdf %{_cups_serverbin}/driver/driverless %{_cups_serverbin}/driver/driverless-fax %{_datadir}/cups/banners -%{_datadir}/cups/braille %{_datadir}/cups/charsets %{_datadir}/cups/data/* %{_datadir}/cups/drv/cupsfilters.drv -%{_datadir}/cups/drv/generic-brf.drv -%{_datadir}/cups/drv/generic-ubrl.drv -%{_datadir}/cups/drv/indexv3.drv -%{_datadir}/cups/drv/indexv4.drv %{_datadir}/cups/mime/cupsfilters.types %{_datadir}/cups/mime/cupsfilters.convs %{_datadir}/cups/mime/cupsfilters-ghostscript.convs %{_datadir}/cups/mime/cupsfilters-poppler.convs -%{_datadir}/cups/mime/braille.convs -%{_datadir}/cups/mime/braille.types %{_datadir}/ppd/cupsfilters # this needs to be in the main package because of cupsfilters.drv %{_datadir}/cups/ppdc/pcl.h -%{_datadir}/cups/ppdc/braille.defs -%{_datadir}/cups/ppdc/fr-braille.po -%{_datadir}/cups/ppdc/imagemagick.defs -%{_datadir}/cups/ppdc/index.defs -%{_datadir}/cups/ppdc/liblouis.defs -%{_datadir}/cups/ppdc/liblouis1.defs -%{_datadir}/cups/ppdc/liblouis2.defs -%{_datadir}/cups/ppdc/liblouis3.defs -%{_datadir}/cups/ppdc/liblouis4.defs -%{_datadir}/cups/ppdc/media-braille.defs %{_mandir}/man1/foomatic-rip.1.gz %{_mandir}/man1/driverless.1.gz %{_mandir}/man5/cups-browsed.conf.5.gz @@ -355,7 +328,49 @@ done %{_libdir}/pkgconfig/libcupsfilters.pc %{_libdir}/pkgconfig/libfontembed.pc +%files braille +# cups-brf needs to be run as root, otherwise it leaves error messages +# in journal +%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf +%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser +%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf +%attr(0755,root,root) %{_cups_serverbin}/filter/imagetobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv3 +%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv4 +%attr(0755,root,root) %{_cups_serverbin}/filter/musicxmltobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf +%{_cups_serverbin}/filter/cgmtopdf +%{_cups_serverbin}/filter/cmxtopdf +%{_cups_serverbin}/filter/emftopdf +%{_cups_serverbin}/filter/imagetoubrl +%{_cups_serverbin}/filter/svgtopdf +%{_cups_serverbin}/filter/textbrftoindexv4 +%{_cups_serverbin}/filter/vectortoubrl +%{_cups_serverbin}/filter/xfigtopdf +%{_cups_serverbin}/filter/wmftopdf +%{_datadir}/cups/braille +%{_datadir}/cups/drv/generic-brf.drv +%{_datadir}/cups/drv/generic-ubrl.drv +%{_datadir}/cups/drv/indexv3.drv +%{_datadir}/cups/drv/indexv4.drv +%{_datadir}/cups/ppdc/braille.defs +%{_datadir}/cups/ppdc/fr-braille.po +%{_datadir}/cups/ppdc/imagemagick.defs +%{_datadir}/cups/ppdc/index.defs +%{_datadir}/cups/ppdc/liblouis.defs +%{_datadir}/cups/ppdc/liblouis1.defs +%{_datadir}/cups/ppdc/liblouis2.defs +%{_datadir}/cups/ppdc/liblouis3.defs +%{_datadir}/cups/ppdc/liblouis4.defs +%{_datadir}/cups/ppdc/media-braille.defs +%{_datadir}/cups/mime/braille.convs +%{_datadir}/cups/mime/braille.types + %changelog +* Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-3 +- 2040973 - Make Braille printing support optional + * Mon Dec 06 2021 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-2 - 1995728 - Enable braille printing From 14621a6e828814198efd628c03f83e0ee5f0c0f8 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 17 Jan 2022 13:44:55 +0100 Subject: [PATCH 134/197] cups-filters.spec: fix typo causing problems --- cups-filters.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 2c27dd5..a94760e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.10 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -134,9 +134,9 @@ Summary: OpenPrinting CUPS filters and backends - braille filters and backend License: GPLv2+ and MIT BuildRequires: liblouis-devel # remove after F36 goes EOL -Conflicts: cups-filters < 1.28.10-3 +Conflicts: cups-filters < 1.28.10-4 # we need classic pdftopdf and other filters as well -Requires: cups-filters{?_isa} = %{version}-%{release} +Requires: cups-filters%{?_isa} = %{version}-%{release} # lou_translate and file2brl are needed for file conversions # liblouis-utils for lou_translate Requires: liblouis-utils @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-4 +- fix typo in braille requires + * Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-3 - 2040973 - Make Braille printing support optional From 9809963904ce4ee952b835ce058030d02449a182 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 17 Jan 2022 14:41:36 +0100 Subject: [PATCH 135/197] 1.28.11 --- .gitignore | 1 + cups-filters.spec | 9 ++++++--- sources | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 1b3cbe6..a9aac21 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,4 @@ /cups-filters-1.28.8.tar.xz /cups-filters-1.28.9.tar.xz /cups-filters-1.28.10.tar.xz +/cups-filters-1.28.11.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index a94760e..dcb6afd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.10 -Release: 4%{?dist} +Version: 1.28.11 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -134,7 +134,7 @@ Summary: OpenPrinting CUPS filters and backends - braille filters and backend License: GPLv2+ and MIT BuildRequires: liblouis-devel # remove after F36 goes EOL -Conflicts: cups-filters < 1.28.10-4 +Conflicts: cups-filters < 1.28.11-1 # we need classic pdftopdf and other filters as well Requires: cups-filters%{?_isa} = %{version}-%{release} # lou_translate and file2brl are needed for file conversions @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.11-1 +- 1.28.11 + * Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.10-4 - fix typo in braille requires diff --git a/sources b/sources index b303a1b..942c9fd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.10.tar.xz) = d6079633e10c3cfdc744491df03adc73d98dab0d9c0c6d3bc426b751545ae3434ea875e0841cec9358c19336347903f2832b5f801700b371cc1959e031bfa659 +SHA512 (cups-filters-1.28.11.tar.xz) = 19d6ba76f6985aba4caa8b1c9b353db08261c0661aab579f47577d2e7ed89f907e0b442bebf3ab8a3e5fa05788c83864397855141b222fb0e24073518b72f0c4 From 73dbd2a6779b9905014685f8a674e412e7dbff8b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 18 Jan 2022 11:42:47 +0100 Subject: [PATCH 136/197] raise the NVR to get a new build --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index dcb6afd..567ed38 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.11 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Tue Jan 18 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.11-2 +- raise the NVR to get a new build + * Mon Jan 17 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.11-1 - 1.28.11 From 5210c9483876b859723c684358a957d79a104019 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Thu, 20 Jan 2022 00:07:31 +0000 Subject: [PATCH 137/197] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 567ed38..f188382 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.11 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Tue Jan 18 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.11-2 - raise the NVR to get a new build From 948b35290bbc9f06e6acc3a3d09173075b4693d9 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 8 Mar 2022 17:08:41 +0100 Subject: [PATCH 138/197] 1.28.12 --- .gitignore | 1 + cups-filters.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index a9aac21..2760701 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,4 @@ /cups-filters-1.28.9.tar.xz /cups-filters-1.28.10.tar.xz /cups-filters-1.28.11.tar.xz +/cups-filters-1.28.12.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index f188382..320885a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.11 -Release: 3%{?dist} +Version: 1.28.12 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Tue Mar 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.12-1 +- 1.28.12 + * Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.11-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 942c9fd..d979489 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.11.tar.xz) = 19d6ba76f6985aba4caa8b1c9b353db08261c0661aab579f47577d2e7ed89f907e0b442bebf3ab8a3e5fa05788c83864397855141b222fb0e24073518b72f0c4 +SHA512 (cups-filters-1.28.12.tar.xz) = 430e31815fe3b40b2d12c8db0a9e38060398d9ba3306af5562bc887dd99b06971765b98ba7227a0478d9f6616dd825149f138a2367b442ea0593708eb34140f6 From 226ec8183a38ce95f08bc6f5cdb8137231634b06 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 28 Mar 2022 17:03:43 +0200 Subject: [PATCH 139/197] 1.28.13 --- cups-filters-1.28.13.tar.xz | Bin 0 -> 1510932 bytes cups-filters.spec | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 cups-filters-1.28.13.tar.xz diff --git a/cups-filters-1.28.13.tar.xz b/cups-filters-1.28.13.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..d76897554c2047a51a78403e986d3fcb3ca6800e GIT binary patch literal 1510932 zcmV+aKLEh}H+ooF000E$*0e?f03iVu0001VFXf}?z7g;KT>vqiN=0PiOm~KfP5S0a zh$~)E-8)*eU*RQhui-Q!UT~1F87pq8ZcWYQ+WOL_R`}$bNFf3bUJnTq4LlTa3#&^d zWZVx8rAs!@gQY){CM#^+!BtvEV^Nqp;`T7trLLb@&SYet@n@+?B|P4_=26z&*RO7j z#F+Y*KScA8y;K*mDd{9&yru`LxOyWXhM)aZT}g~!B!c9>t2uoA_PRCw?cczjIaJMn z6viXTvsJ|8G(g*oZ{5q?vD^T_ZILdx)}saT(O~%a<wjJnqWF9L83dG;zqr`{RqevO z?zmCxo$(wq?@-u(V%<?~B81ydKuo;-Eb6!59FZs(jJ4?_K|g}@=lJ6ycasth-?~`x z;T0+*Xy|LlE11{N64~-R_Nwi}1^Z>ezO6Efc)s{Xb&AnNjbAU~m919I?!s$@G05k& zgGiHk14G~%Lh2v=S{|_}9KNo<+wlDwWcgu4ShSF@$qdzs#24{Sf4t@w4qHI8QEbF> z?)Pn8m8PWwGJS}*?9+r^UmjNI7;@(s4Ch%Y>(-AHm;F`5->(>NKd8}Y@_ZhHq(9S% zJqZjB<`8*iK!BW=;>Q}%P^JICoHa`n%E5hv=do=`<`Jgi0YbpL;T`0U3Fgdux2QTh zKt20ZoYk?i=QPYYPjo^(&o2#8W_@@=DFg7oWOI?Z^5?3A&@SCc+Xva<+SC!Kh_;lo zbNcp+l$&QgSifBR_*2!S%;M8rYLJic)o<!;oHDxss9KaSmh36qOpaN&Q^zsfJ)r@g zz#ZN111Rzsu_PqrGdA(Gb^g!eUmoT!;uJthrb<qgU6o{B{3bA(4iMnCtTI&|alLVY zHG9j5B>u;oG<fQRJ{huOtuRoZeAA{DOWA+na=K(XS`TbSXlZ4a!I-ol=^{7mXd<{h zL)C{+hwPEeML-Jqk!+Wzd(3>|%4o8U#~pQqnjeeR>-BS3^NhB)GebC-JWlMBL?9be z>Pkh;l{%?<3j6Ta$hQYG`1SrP@?&lh#Mv*J`?BrF_?CXbuzN0=0W|u-9F?UXVGGJ6 z0Rudacd0-Abi5EXfbqLX9TARC{k2$oeaDs`^V=M~E5JvGo=Qd%kn(!l@RK$~D7aHZ zU56=W6xe6#3q9lkv;u)bEV@kQ3MMe56BJ3qmm;L5s7W<8pD3XgOe5<mZb?R!aaB&9 zARJ;jVGX-{IT{6Uq7)F|!X<yTx}e0NR$1b~-xpulr{Plw1aML`cn$|?#!GO)jndO- zkHRN4<qvM9QiR7}QJXLLzTU`?%A!g-1C-g^-c15n8^vL3lfehWxFik*WZ>RVqPk|0 z-3$wcp)tkrgP`6iF#vEg7BuTM(uihqZjt?z$VbwfNBw0kabzrZS04k{dgmTE_z5%I zgr<1wnf3Rnj)ORjEEBA&TQ}dyB5iz^=!V2Me~}W#phl5n)rkH;0CTP73%hH;uAO(7 zE>yP8Od+K?{~>F~jKWb_g(_-xwJo$-9YjjRsPxs{Af8&CK>>fOxI)T2cp1o|UG!Us z9Ff{2rNfXyV!&EiO`S#nCOciS!wY#2xjAkOzeA5s5UP<+_~dMOujaNICg(`>myW3t z;MQ^u$7Os{{hu-AIySE$g`$E7;TSUjwXom@8w8+$1p-d89trW*#{2HEvIgeX|DD+5 z3-jrR;sD_=x<wq#FH{ooosz}4?xNt#aV!?-o`ss6-MB%v{96e9sMZJKeRgYzIfk%0 zZgE=MkF(%r-c}gT=rqWN1qjdWy}_7yjHv@=tLV-2aM?QL(@EAMwxxyv^eP>6SyRf{ zzm{k{pAQAc=Ik|>M|%A$P-|tEQjRL?`qY3sR4`GV-;q}vT#0E*Ml?qih<npBT-t;} zpJw)+FwcP`)01m&CC$D{LDq4~J4{&agd9s{g2;aQ%NGt@i*bFO8k5bq3gi5-jIxxt z*XME>3v20A#YxW>cy~Di^`8S!)h4bGz1~D%SoEw#G|4qvuA4Q2ATrNsLRe29$_9QH zE>!8Eisks)5ueKe(R{9#F|&62ca#OU=Ij6T%F%q4opgS$vHlG$+C}!13nP)M{?&nI z!pOATBS$eFQ`*Dd>CuJ?ptXJ8YRXen+J0OxxUq1&+qdV$j}4*-p(gZyo%ksyKHv<p z{#tal7rDgmc{nx#`-!5Mehov7!KJ-;zZ4GA-rfRZkzN<GD<!vy&XuB;gEDM$#vLnP zi84+O8QK#4Ez<BdNUct8j+Ks~>!RFbkz%+ls|W)SrI!H4|9x3DK$c0KlOe`yzNo?P z9R1!?Q>`{${i*edpW3M$YNiwZTndEYUQDf!lAinyshn(Wb|LqDQhcKYsc|F~;%;E4 ztYN@DL+x?+cHYI}^5$lSq{`*Uu-5fgIeUe-zc1L{Lfb*#P1n5(L>#H9J499~@*9aI z!b#K>9JG{oCJnwnOiJ7@SHHF~#1Hj&UR$N&jR08hIQ<L<8l9c$aZf1hGzLpN{GUQM zS}39CgU;^KMbe!67pyN3v+UO7DBc76gq|b)ZFVDnZFMj&QY|LRhHz-6Awr((%TrO@ z9Ywb%Y9bI?d?qFfYSoGqBz_=(iv)a6C-HcO2l+H4fj=m_#5lWm{7$fEdp?(9*!RM4 z+4qp+_O(9$C)$<QYh&%w_k}klxUxP`r=FwzbH&zq$H`FWveDeH3#J#72;bQQQBb6x z0fk-*$*Zyc8?8sAJ*qZ6ocnVRP$_f9K@^0O!f5tyi$Ohi7+yv<o7W5KhU;vWOd93A zAg=8Nh@Tj&EiM=^BT#lx!6tFuUB5*-(+8wzK3t4tOZ_7D@IsO13^D`bCZ84QN)d2m zkaSkT`SJk<^!x5jJBMHrJY1)|y*w{!o{lfOKMvedeFwV-{;OQ3hm<PI4~L!c{saG~ zSm$W<msISiOX6JcT((ba?pPl!Er|U{%)v67W56nOhsTpmK}K}9jYwQe^S@OlaNOFj z)V`b1dQEp4tTn9>>F`u$^wJ<H`ZGcRF&g;vHl$Pi>inb2i2zj$`S^8Sgq&u)ktZV` zF|%!{v$1o4E{$4D;oURjEpuJzXV9V&Ry(vUV%`9Up++Q_47}$^zq^>hsZ7_w)Um{! zx=t&`6-a&Dj_PAD-5Es~_-CefS<Ln)KWo=iAzln@-D>0ra?4SO2{2pTwwI&?+6VYV z4piG<Cb$quR&KvJATN9VPmVRGt#m7OfAm0y^#|dfnCul$F&D+v2i3lTKgkY7*(CJK zS*Z?Zt{No};QIivQGFMh*$VJ%DwZ{L7t$hnm~ENBwYZHeLAr)hDg*Yh`h0hFp?WK$ zpU%0n9y~MUS~2G>GYUB%T7ys?;GO;Qmfh%;p}J!0I%#?E&<pY7#uScPOM@mPJccu+ zX!mT{*eA+VpwLwqE+p&K^b+6Qo+$>YGbv{oRhW^1W!G7oZ)E$SFjccu`=P?v;>W4t zAde~rZ;OZ!H1`DinwmViUCf5Y>A?9XjwcV-S!wcDo0f7CoX40&&%xGakS;~iu1s>8 zqxIyhR`m!V`o7#zK-Imy!X&5rfrQh=1aI4-fgjM5deACRZpb8c|AKIKJ*q1}MlV=l ziC~1)Xgo9!<gr#CiVe>P11vwpEN5H`M>d>WuEj?m_YRub6EDzw4OMT{E1F2Mn%jsh z$dW62a7~n|N;4L@yAOLO@8gWw;Lv`%ALV1Gc%}1SwzhPEl~_4F-C00KU6j$rXXZJu z?~xYpxw4Fj<;oLYJ2Z-j!qKKYW_~hiFWrk9fh9Je98ackMT-~kt3RhtnHw)s6`5da z^A(SwJ?q(DEa*+BifpJaRpU)Zusftw+;ly{;7wR!>=miUnxou2egl`50kGmA$cuOj zqlgq1t-TdIL{j3E(b?3T9R#wEu|xgie@|nV|M<k$|`m2qsFu(lzU6McDP)$IOj zg$Fn2pG~Fj;i?3#xUk({T7|6t+^5$C!!e<<ln~nt+d|KWEhT71NTKqTPIQ@+;l<y2 z_0r)yIYOdmzux(sm1RfDr!_T`_N#5;Ni^UA<aHN=c?KO4Pbu<t&b|F;yO=PHp*B-+ zG(Fz@8wjV=^b!s-W!hywhtoO~08{c;;=c-@!kXFl<gb_4UWJ_>cLjd;jU&NgPv~8( zXQX3)x}A0Dayn$E;oYN^_#w;CCI{vlE1cKg)oGi*qa6GgFcyYs%}=s(52P{tn8uu_ ziMJmNATcQ~hzE|tK)P_^^7ZRNNo&g1$R)yeghLlZPjSU2(w_6|iLRBOVTkS(5wjw_ z9?T4X*wifX$`OM-QVSj=u!sh9Rxe3_(1It*a1>#lSl6qQOb-ymH#|&Rk`d${84~l+ z%JgB8QqTC_>qo<yVu5ea?FQ*0GCI21O*5M&YsAIv+(K>5!iNx_RDl-vgr*0b2d!)) z`PTf{Z;d3_k6>ho_QQUsbk92m&#*Cv*-i4qBROU1M1UU8Nc`!8&Q045_XSpi*<wRx zN$c#gTum|uS9s+AT|wEet*CK2)<klPNQUBM$|`yPl1jPlA%X$c`b%HRJTiQt1h{Mt zJg$rI0A)4i_(2d*m=9eqF!Xw8PMx1o$Vkh7!j$4~kOqIPKs@q|=E67opt?iSTG2za z=-7(al4Fub3d>@I;?-Q`ii;T;JxPap9(G$0G~;M$E-Td-=AHvzWSLq!C}BebRoC6< zBtvvSeZ=2Y`!6`o?~l};5PKE^g-Lmc>5?X#6$|7`Xp^3o7W2?OhA=+?+fuK^vi(OI zQ&q`*j^*D{6sWCq!c<yy2ZOQ89$dG=HHkd0kPQ2|>M7CXf|Et&1ZpDl3s390#P0*( z<a~}TdC!f_wFzFl<Z%m?AiIfpqCd3tv|()78LP;#Nc?6)w^ke(9FG8HXi}K#?BWC) zc9R--d!sq`!&2sW*#=(P@O|)W_H7!`Fp%rJU=#M$JwRDwg}8K7qgj#~W7+GYMh@xI zyHp9zJ8>+3ro01!Jnvu$&!u+P+x8h8+B)q9=ruQOkQ(LtYJMlb_hTIpHd6{2zLU<1 zM}MzD45t=}#HY#B-b~{HtcFMKamKl`Jg6x4QRr<!Tl0qisc5o9C%4)tU3ctep<X{F zOY6!9o-}pcGt^34H52LlpxB2vVYHGmdNVeUQ_R6zC_>VqRRaV(CdBXJY^<O7j2Foo zD}w`$mb8c5yDV+;w~0oDSIpW{Ok!WXTLop($3puws9!e8pT6S+?MF?cAoMs&>};aZ z`fK(OW+vZ!Gwnv+t<dAv%s+<2ZcSw(E)#d2txU6~>A+z5<A=1U%sr`p7&PR4JcTx{ z#`GBjwV$T(qFCgG5!ji01j!5;SIoAIfZx4fk85y_Za2in5q_ZX5d9T}Ji8(HBS0O2 zICGr~Jspt`E_}o}wI)Gd5-)0r-Z(wc^i0#r$`>?2^(^)bcPv(Bbol!^z7g~x^?FUt zYTPZWACGGOFN$_JFO*~bfd!kMw_wo<NMNU$?;v9yz+H(THGHX7_N}_r<lKUW-^)6= zbNG%J<|DYY*wpSUTIG_qX=IIQ61y>zvCUN9uTHp6jpgZ}<8F8PCx(w?A?F$4xV`97 z>}|u9&kzx`lwQv(rC9o-ntw_-%Hm8RBvdz=wlTNR%|GW>7sqdg#0WRz${1zTIa$37 z7()Lg6IlkC)ulz}Mi<u}SELHKMAXr;(T3bIWt5;q*$+2p3n*0jF)Hc)V9FT$wOy<a z+3`I-+u9jku1KjpY6BB%eI##$7~VEhw5aAAfqaOS5B7ZPS299B4xZoSA|c=nAp6Gl z;@A-*yx@mh&CLS;VX5lBhAh!JJbuR4JI|R&4yb;j{XgcGhAuqh`nT^Hxq)6(f;!fq zU=x`ckVGs+4Grc!)h&p2S=AfsyZtx4H@#Oz<z^8{XYC0X*_E7cGOfDjnm_l^DKzJu zuIM~SP9aDtHI`EG+QoAq!^V2*X_joi?fkBrZ!~%;u}~;nyB#VB_{tt3t>EcbQ|9!^ zt*#5!1v5dTZAetRDI?)9{@`aP?6b2o9ROQWMl<8n|Mp5A?XG^QJ!;5r@|l+I52M|= z6rDa8p}xwEF@0+tl7Ag~CJ!#PH>u`b*bUY%Tc$PxdU?^Dd%^h2gWb}*#DGg(;!AkY zEE#+IZu_#$gs{XNphm~~34Q3`I$J@eomJQU8E9s1ngPG^DjM@#kJ#crgb$9k`;Hn5 z%jLVD_L-z#N>FMop%OI=)&9|*L@=aQuix2W8&FOF@acL26_#NOjeA49Zpd2gLVfsW z4#Od^&;kR)6e-eT{Cn1xzK)erBXy-12X&0~o0`(@n8H5NkPxWQgzE2~b*rHw3smLb zQY|XgD4&$bFN4bA>QA`uk*Il$M)V}CXYXXFup=koMGopy%Umj(bMXZ>n{yR@^+(qQ zW2V@KIPy6%XTB%Ou^I5xd?%OC9qo_xY%nI1Xf@2)2L}#vtd4_1qL6_o5S1`m)}J<Z zvk{%C7#K}d^cSjPkYDt^5<HV%fD$pmg_tp<Q$gOr5PzDK6sp+16VrX`=*Gr#!aU89 zBWS{oqFe3Gxpx07%?cosCIY1Wi{3)<`Smh%XtTjVme81}(<|eEUc}D^UB=7KWLWb> zGme)y^i~N#A=t4N|BPcKs#`9-vYz}Rv&6P9`>Wo=JPWlg7S1eg;-jB{(zr2#bQ?E} zOLovMg%|>tucWs;5=x0ynu8Gj=ictR2;P~`y+LbTkTp$>a~nkFou~tLj2?kIdmqTn ziS}mTFG;yctH!p9N&sOulN1wxywz9C0aPyFydLgMX#`k5U<^BqqZ~?ZGTXvb@xaQv zplZ_`jAjRturari4dYSw^}YPW{RTk`wvTW(2Se$bXAeMI&LOn>WUmu@&CYJ~I9X|Q zj16wc4SHw&QDGZ#oSni$Q;h2Pf=sDihie9K5B7mRdDEZ!)08{`QwDUv!XQ{~s_@O% zV7W5<PeBWYhLYp_8qm23D6ub}XEL;!p-*Hbd?XFpU79Tbqv9TGv4-Tma%n6_ShW74 zK4op0_0Pi50>w`%o0da>orRoc&S|>;{<2SsRv+=xNapIHu*gz5rj0d-AZaP<g4>jd zoRrSXsK6|qr?`xDc|rRykG+m-A6zobAy=l8hT@XxV|7nLufKdupM-_@(bPY1(Z(p@ z#KabZ+Z-=3kaAycb(Lx5D|BgrO1De+CfYX>RJSqxP!@(IoN?RruYwAX1kmkhTs6_$ zHM{@P*d&E06T}zjkJYgq2>`MF)DiR9z;6khcJI^0$N{2-zKLIOt-oD({;HRUGo|#@ z^!BmE6h=^`D0_jR^?;x9R%^3T#g}I1kaECCUKHZGvJmnH;s8o8NX*=EijA<VKWMTc z6qmBdBR9YG>9&Fby?Ft?+5_?;5u@x+6q&_BJ&}CGsx2#}&z8%y-Md+eDqG0$RVxl? zyF9iVtv4jk%Qztzfxx0&QGW)y0|IR?m>H+(o;`xdVM(f^5n2C9K_IOu$SU=gYopQ$ z^aYB~<PXr5dE*uB%Umw#ye7f|T`zz*P8!$MBrZ3iEL66N`eB=*1X%YU6CBWz1_Caa zpJ?e%H#Q~7FnIYUcUR+l0rE47XFQUD9QeGZh!DV5@Rt8o9gZ}d#4m22xo{}ZliBnp z;N|}U{Tt|sZ<-7RkJxZnhvm6<FL0#3{E;~WM6T74E7N3Klix=th5qJzKs9@`mjvjC zaUS1~C*$c1<jm^{G4bDe_R24z`|OVi@PS!|qAZfDGheK+$%7Jnq=>dRsvj%qLL@4G z&;b`;`#*-?a45(971R+88c<KOr^p)w<9!n$@_lk}g6|hcDmUu-|Me9E-XLc5ATkPq zGPTRSV}pK|%_1gAA=dSpvbPjVqlKD=tdFZ=K#;9%WF2-5F5u#j!HlyA99s6`p-Ay~ zh0FUC>I$t%e=g>h`)MM^FJfs}9?5`Za$86U{t<$pJ-~>yz)JSe|9PofG6E*f9h5b* zm0?8sS+}ikaARhpwCncaS8?22)SQrNbfs)K>$xwx8VqD%7yvDO|AUdbT)5as-5E9I zNTY65J)snabdF%W(M-lzDQYq~;FiYa4fp!+l&3OOc^ijWw*0y)Hwsz-@tqOrORaIi z15%3U8zt7GlK%-6QhtE=?LB9C-T9llu_RVsR5GyXuG~=9I-lY`aOq&m7yq;6Db7z7 z*O2nyyQ246r6n#(6S|tu#Lt_NPL@;=ihVBQsCWb~DyN1-J|5bxgVj&6r3$5DD^Jku z-bz%175pN8y<55-&5SB~H-Sm|eyjN6;tM|m$_K~#D{tCrwfi#=*YOnvNK-K)hI|r( zb5`UOPK0|`6gDML2o9PD>j*7{Vb4fCyA~mATJJ39&b;ys1#{moktobf#v0v1;wH~- zj&BsaSk^5Q5?zgVboquz!n9ZzUv1zDHp{|QU)=3#OZ|oGJW?!Rz4M35_*1YN6t$gH zlt$GW6)a|WUKaRM(fE9BqTZ%f*)LfY+KZD~V>?c(un10c#B})JUv7g=5kWfX;ljw4 z;G!wuG5q_d5^rM#jEQ=J5j}8%NNwdl3`b4;w<}FXe_@gOtoP$cC!YcEB$qYiz&;pe zwT>r!+j_(TDk@N`j0m#jHIIs$I%mF8>)L_(-$fW&L=&l_FWD<W_PS=f7qnhw*1fey z!w)^FGr$3zpuGg0!l`tTtcv*)NT;v`i7dbs+{c>uLw5B5t%W8rP)UrULtw(2vFvEt ztN6$lQ3(wngpc7wx?+g6P9qv__4|%;NZo&4CY#XX*L;FZ0?P4Kp={<n`VAv*GMqU^ z+17wob{j~)>Br35?>I(~43D1uZOE4Mq}MEFfzG(Ecj6johlyM~Z>q|`TKWLm*F+vi z3>c}@5t`aiGm2rsN9$_zgxP1<U{>p=^{!U^1hy;VRz0HRh>NP$ZPKJ`*H(vt1)k}B zMyhO5v^~j+@Kxt}-b=l)+N@L=j`QLCdoz~io@Lba6LATHjIdZrLJ*%$8F;8p6SA=( zr$A-dwE?+dBH?1zv3#zyC=K0QKt`uQGpM&HHHu$IxmBp1NHaJhL)cTeK^0nNmRWhp zgJ2JEy?Gb8bZ@I7(FBq>pRKC8q}`<>^~%))c7h*EA#K{75GDyYe%AwwpF(=KA68uo z4^;#fxIC7Q6~FVffg{0hbP2;s<&IFzO&+Ms{6dBu>&zbT@rrc|ees7U3I7QVtRLqf zMgHIt6@Ya|z3xv-H<M;OiBP)GSqa#vAM0-Q?vj=q*F#gezA<xz#1u_8k$$|Llg_!? zxX5(z4AaF)TRCl8R*DU}Dm_&^i@w!G27y1CI^y%s0-~*RmxU&Ft%CiV=c#Cz0-tv; zO1cKe@qfHn8y>&M4F~Jg{R_KiQy-=jiV5$_F!*Yt*V3Sr%!IM#2s+n*>}j?Y0lc+s zDoMJdZn7mOWc6cII0_#lYe*dXVN-RYEWf1Ns&w$Lhwn1)Ht+`On16z#N;Z5YT>mhV z&rD1154~EKZY6pLq=Y|@D;nw?KFpgNZ7J*i^zJvMN{^Eq*)aK#<kZ~_NPatk-DCB2 zT4rP5a5@g>UR72KhqJmr(@gqf5ef^$tCi*V5!u|*A}70}axL&xu2Nj#$FNGNac4Nt z(Aq@lXkDUAMcf9$m}!(+1-le3<q-T_6E;K7CmMOAwpGf0rQ3hAq~E|ED0f8V@HMZk zW=1$bNQ0BtF4!A4fqv@DD^}=Bs@#=$Z#o$`7HPx{_NM+#TIe#mCzBi1EOWTLLJtzg zM94k}wUzCBXysg^9e5=e#?7G0LI_)`3N)jaVi0|{dVTg>!~W^ZdW7+nAy<!rr&-~u zx_y8bmtvgbY)HFm%_h_cN%u7&DUvgL{F*8|JrdR={=TtC>D2Pm8F~pRGHr1K6rvqe zT80B}KX%SL9pWSAk!WhCnJ6=CTtaZYFTIvE3Mz`i(qwc(!E1l7Fk$|?iJLiM@-2e{ zZRw2ytz-sz6jZO|9pY>YBNhf%O`H~%bsQ$EjpaKG*lr6Th^+yOZy>8r7i%44{}~M| zS0FKtfacAz^_U8vKMDX7jbaVxH}ptmd%`l}<b<3ko3kgNM9bo|2~`es81ruJ({zMp zW2E;u`oks%M85|TmVzs$h4qBkY&<{(xL5=EQU2cX-by_Nev}xI7O7g^{CHk?-g(ue z#X+N8<!rSGT-Gy+Qiqq5ljeQUqV=Sb=D(<%2_s{`K;p8?2D&@-MctSV`osK*LZWbV zdbSz^dKU5=5YHG54K`S<JHjF5XBHbnvYp!$Qq<sr``eUAX>y|j78nrOQD+;bvL<^p zWhXXXMxQ)emJPlu+kQP45Y@lOeZu5?D5LQ)5#Hk6#tHXT61I$<*okn#9@A;=cP5P8 zOAtr^ZSG`XLb^e|+v`|~6`^BjEA)6?jl5GPd9hm?Kg#;$;uT+_2)xtT8n+k0Zx__V zvySSR2#%Xw=lKfI6+$-$QI|qfd2Kdtz5xjw&T?LD(l>n`h5T)WqI#}c7IN`g!3e#3 z%u>gKUY^9~cisdoMnX&5g(gM4SuH$QaCs1nUdHu%KRHJuf3jagb-k{kENFYrO@q$9 ze(-yx5W8R{dJRnxt(gT1Aq}43rCLEQl5*I$?>q9;ew8)ASm?bpPzbEW<6VK5-ls|s z{P97G_%!3L;h(<T0_C%v&4e<3C@VZ`9{;gcZ~<>qFNr9DODB;D95_{K=dG;;WDQyr zsw6kJf(OMGm!>C}34nC-J`y-B@|Mm0p6{v<_Fj}uP<wUgUYx3Kn1{S{tGavkP;tGJ z+#v5ParH}}RHn0c8e#&~TBFI~pBoxcy0`XXZ1ib8I+#IQ%K639D%*9}>Mm&@1{u74 z3|#e(IX0Yer}J#upX`QyPsnVEXt)PF1Q`n5=!msnLu4Vsgm#*L9{uVlmPgzU$Dk<_ zcNW;H4lJdEmrQBOG;HZp>BC67_AaX+*@`dMmBr>xU;5JToIO=JP7>F)JlF-3KpI~e z_|#PkBt9P2>$XUcb=IxThFQ7lfBq@sl2N%?R7alB9!2G=h5?%+=or%2ZE2pV@oiz) zem|M^wM-@0#!<Vx6!^$Hyp~9uY8Z{8ps6)N3ftksFYPl}KG}t0Q0!q(=_thW@#H0g z3ZzQ<`Zpj4d0f!ZG`r;RZTS~VWv=8XZkG0D8A&YwO&hNyJUw#E<O3mAz1;p_;WI1$ z^k3X5qnjJqRXm9T?~l~kd)=OohV;0A;5VO=H?9dZOAj}t393;snH^QW{x%$lgn~nZ z4sqzsI9ui@S#JEsr8Pg26#CDe<D>}jNTYeIwgSPEiZp<dS!^4t4s7RWg$_e|>lU$Z zl|RvHadGG=x{rrWvOwy_4KDc3q>g#8kuZ&rVlf_Wmm~Ae0s{VU+DM3G;QqC@uZs8I zF7k9^=AuMcUTt2qrtPV@M5Q!Y34=(k55r7fj9UlHDK3_wpt|kcKx=>G6#JkiOBrg~ zDA(cHoWH=nY*0tbZqF@|8Z%=vpSE$2HLB*)!L`{%+ME@x&(gK)A)LPwO7Qwygp)~V z>Fh!bKpa&7aXYD<FWXmJ_3kLuB7Yy^rK^CcuW!#S>f%07`3`fYHaN9$XjR%gTJ3~T z+tQpIjD$^>r66T2vg%A?*;Ab+LbHBSdsibv?ou2~=evQ=^R5+i^YD-Pt&!vl4UP$# z&b>giNvOIVokOK{hQk{nW5KO>JOsE7%-Y?~slbiwlioxOYBPnPPAc>}QnG<F5VuV* zb3(<8g-cG;0;Ua4YK%=h*Og@MKui#lH%6*Q{GB51+yRf&tQ$VMwVY9Db(*AtqdNIm zl$=4RwQ@FoIzb%IfJrTx6_y2#katbw7^pF5)S^cbiJPlC4~c^W_*WofF@T^~(Kid( zI>9M;5_%*;>$y<Hz5DQ#x|0f%|Ap3W&Y&QS#uQcWC}OlZ2?*yr_cM6R8+GzlCNV02 z9?SCh3@;_cJltHN3rleXgyf&SK5*j9Ji>3@Kg`EOAWn8DKj-HF4DQzoZ$mn&m2wNL z1%4W9;1D2aT`X4jErNXo@y&ke48*L3`&@sU!z|*%lU8?~SzVa^M>i@FccO&tRmH1r znB6k#z#^@h+}%l4Y6;-f&4jF{=dp2Tmt>t|D7PJSDA(Dv^`D%P-4UusK>)gJw5;KA zlC94j7$@nz8HKKi&nB{UE$J_ig$L_{AGc|^Bt}T*t4j#ol8^__?S(RBv~6*nJ<NX? ziRXGg!mE{UXFegiaS>livUTNyOj1&tS+Y{v+vj>uJJZW@^<zR2U;&VVyig_aZh&(B z;4w06lx6*!#CLh(>syzbiD-I>tZIuJm2pw3+Ha7?PuP2XDaETI`$WEge|7WpfDfix z|B<Q?8-j$<)hW5fh%R?SvE@L0fp>$D!t6PL?3~**fMl9{3^3ese}!*N-8Na+y&(~M z4I7jh%+Dwcl-VC!bd8_R^FDDFn`d#cW^eJ>lS8K>60yV+2JnsbZgnH;)qRKU-rQgf zMelO<M6LICu419z8Q5W2+tCR%6~iF^zm()+Czc^4bc}u80|wv7Mo;MS$9@B37zh`4 zA!NB$n#0C=N*ZtzaFaASu<63T-bnmFVUU)nKv*~}*l)*u46w8mD4r^PIJWkIWMZTJ zdsU)q->;Ag(*=(f#Mf1E1gxGbVhArGmQ`?rh3<*cDK<YIxfO@ulE1gQ(z)fhASE7c zkdM4~r*fNaB7WBGf%`%q6^$vSK4`rE>jER0(DHu$TqCH6e{VY3&nei>;i2+d<-{=u z0}zb75H>XzdmysYe53EBP9g$3gg&D!nC>bA#))Z<6qfMr&vs~L5xPVF!jxah*^n;B zI}}KVZ>hCg9K;sXA}v*Jn~<-*-TsU!JEMWYY{+>ArIyU#s|yY9>u7&Jj<L+Nlq9pp z0ndsa(dvE`wqu?y`bxE;#2N-pivuBEuxV@Bjl0xf16C+gu2D}R2_196?xmaG)9k_$ z9Am*Goxj%3sf)0Y=5ZhBcXnJFHqDhxumd9vIj?HhOKV~z)1NW-zRfnXnMi}3v|x7& zYi&=5gpWId%0ZTdkF@x?v1x>u7mJ1YxJ{Mq1eHD)=YeWZQ#t^oK41j!%N!>H!)a>| zj7#LyOj8+L#e3*xAli<Zx3276d);G0z#o=m3l+b0?a~6sra4>JO-68t`9ovo4W}I* zy-v9hZ*-&fW&`~6L9xi$>r()>y0vJ8{rU5TY<?DztIxxOQGd_f_|_PBVc=464?}*# zX{b;kB6!#hVUo4PkFLWS;QaUi-^uOA>v*@gYm9Y;_pL81Inu!*d~QI%e#!D@Kv*^| z&=_1dBGzeC6%jI;b9&BKOWSuTjNR5`W!xL&;*woHm|JD{4}N($ra4|3g};9i@`iSu zCGKC#bTTu%t+zjW3n9iYzKnflA^A0?B6_1j{sL_}lX$om{)9<4NROZ{UWfYL5Ot(3 z>)X_HNgjd*P(@!LbQZKUb0R1`2t2BEYufne=!_$W&>g+xN`D!*4%!B}tz#ifnx<nB zSm?sphsF<F?}8d9#*8-qO|g@qQ+@@@l7j6|93_f0b|)Q5lB4l^B`m|~m>Y+7$RMq{ zDsz&1VJ;vK$AQS2ji!v9j%Goe&joZg_l(!mf@!1J4$~qXo~aanWT_|b6?2@Cx8j&| z&*`$kcf8ujW^>qY6MLwfU4D^A(n&DN#pS$Y7&sz$GXztvRIcCqPFr%fJP2#c-nc47 z?6e3waL$3DfJ^+@Bp+R))#%EB+`{pO5>4LtAF|})i%XKJe><&yTfh&G4OPiiS99Ad zVI%2<i>`+3Qd(G2-H?SQ02~fXB=(}@I&q0yg~)7<Y8|z8wi#E`d6dd&B+S;^3WYVz zdMYOiT8b7HonSM_rZ2Qo%77vW2HaofWSd(+XT(7NdK={~L`gJ}@gEGcA^1Ru&Ih!5 zX;;_jIBL$VF3yj|hH(nBQr<hvtR^#0;2qq%f*llIgUzBTP%ZXaa=mm!-8`&pb#pO$ zalVVA?%;=nvWXIy9CUs-y>fBGuSeG-KuOG^bUcr$OyWo#%n!^)@;zKvMBF3UlbBa6 zD~yNm96rJ^8a2QCH~`1&U%h5Da8oq^Z<rM}6gz&YNhQ^+{u2LW8Pz)|+%m7mVVL68 zfT4V(N!iCVmcJ?IRFbm!y<)lNTAMEi7*!8@HlHiwUw%%e6WQ7*H+^>lyPC6UQWSAz zz8fgW!-w)hH52a70&U5Ky{hkS18qM5m5iiI6qqK5Lk^7YF{-;?sXuqC1t08R-Yd~Q zF4Noun_>Cjt2YZ;W<TP@x?D#!X*N#-w5>`HXIWA%<Y#_$Ice=Ex9V3$tWNID|BZ~j zAj>ac@(Awk$ATCx@%Un0D|uYc!Q3NV_PoFtM>V904#70UZ$mO-tR#xLdD(}m9)<b1 zHMjb2&_r?v+rjBgvgw&ML5OHnAY49D91dJX_ky#m^znCMfh9)%LKaOU<1npJYo3d^ zIYr!l;9Lj#J`@=5#qGj62QXo0?{`q15QP#gjnrZV3OeF8_GKdXj%;Dy<|z=TX$N?U z_Fi5i4lUZ1yqcTGQz_GPBmIgsXm4~Im!24o^y}mrcE_X%tM)yn5N1mmcNHr`fXC_9 zs2cmHBW7S%-uDCfZtK=Ko<P#o7)Jt+ERk+Uo7M|xN`{+UsQ~%mBs|VN$6L-`AHT!< zEO8RD>ymNY76k+Ty*yy!rEi>2%OVgwoiFPS9g+R1aRuGhAbe^%_7MPTh-F&w4!mor ztl+tJisKs%y?-@6iM_-1N1by+4}W;W6`2>y%jPC6ZQL4*6^I)!^r6SMf2k7hKDxBQ z@v9O4CE1r3FN@K$m;4H}WNdESQVPn@cILg`hS~>>B%X=!Gl?NFnp(0(9NO}sEb$#B zcaUP1ZkXAoq_rKkJIbo(jN!9mdjS*Gmmet5P%vPd<?mi}cqQk?GXn{5au8902t(yE z>H2{i;B~3xw-~}q&h%oXLf*2?C@upR5KsR|=?eM?RCx`sCDp0H8QopETJI7u8mm%9 z!i;q|OA2b@SDzGG`=z{$rn!&Fc;}>b)1XV7x)Guuz?RW*vb8M4r<U?Ka8TuP+Oav~ zt`Mz-NO?dsV-%qvE?0yE3HSVe#R^6hiol4?VH^#GfS9UoRRyre79d=DLzl8~4r&$b z4_A8ej6jy8^#s#qb|2OSOa8RxH0Tb&l*q*@X3)thqEZm#$r}-<#Z`Po1L5SK9D})0 z#aJCDe6bYfd}_uGJF1&GUfEa_Dnm~q^ztrSoVLON2_-KpF9dpyj|5#TzgK1TV>jsa zy)Fc~PO()6mGN4?iw&u^@CduUr|k4ejW>G{e*skDRN<HzmS@e_-N6z~g!c_`S4>DO z8G&^6s(Gn!Ety+HbQehSd;x<j?u#Nhz{orT^nU?XRTuE50KjuQ15eS6`vJLpk1`A2 z_D+63$sGTV4-O<QfbP#{NZWN0qlD4)rhN5fl<*OgeI|d!+lz$w4bK5b?5qUg>phCf zKbd_iD+Z=Pyo0sDf``7d!bx+Z4_fA9WNKb$O?oFsW^jcBz>I4##F*Zm&1{3;N~~tI z2Yh4)1FG|D#9>93wX3+QpfrnP#}(e8_)?3PM`M3tim@5#BZ+<as??femHCydc|}XE z6>G&F&7f{R5GZ#`*71=%fWi2(@5WI8=G$iKLu-79=nHJ6a-*>rbLQ4584LcV2E8QV zuuy;P=D=Q|Q{(%`)Mj|@V>E(~iUWbmkS&=X^@YZB7Xw85pG2kb!IyE9Zvoy88Z|%_ z@lE1+7v4k=Mc5dC{RIMmg-tkQ6Eff|@ivCww_*r~$?u^;zteh{9i)W^uwz)%I?!mp zzg2{~i&hR`ag9#Jy2k)<;nw)}c_TVilN{O<{y|IabgZ!6(6a(n+d3gZ1?Yx_Pec<% zh&!CHE=JKSVF_hKKk*OGe_wrW>i|DwhgK-&1UNy5hY<%tI;5;YQEW$ME!7Hthq8io zkRUc2&U$Zqc_Dam)Z60-vG{k<VVNC+ul0@(&=Ko{vyT7;4BV@Y&vMr2>}~Ku4v>3{ ztGm!1W$h#OEHcMddit_=z%YPT8B!RKMel_a;DG<gMLOptG1glAKOrT_?yG}X6Vlf> zMT0}7qKHgur)K%9RP}3B=!-{TtG3Y9_TA9e@%S=%E;&4u=!yFjE>m${w^LBV%$?nY z2E>i=?dQQI@F9rsG8Xc}D$~qp@w@m(GpnQx>-$Nt5P?>()xwSNYyO@aH;eKw$Sn?i z?Ny+VOF-+pm%gI^I)_?j-4~i*9!;drEG$ErB!Bm6%@lVdB8myK#d3H?Y}Fi2B>VZt zv|UW$n={tcV9lk(z_$5(kUoK=DD@nc@DrG8S<UAC$Cpe#g6i~goJrxC{aS#nX_kjN zn8vP(d^#|^UOWH-muyfR=3agxu?)1AMGx~pP=M}71Yrd?yHbEi^=6vnYfnTg>9)Z0 zH;xs*OxjR_1&GUh0ue%4<7Yup?gCZP_wzY+_{cYQH+Bc015vH$cZe$uigu3CJf(hR zFnTTgg3lw9nl)65{Vdku-H!5Nj2=}G^Ss%wbr}HM!(eESeD?Idni;0Qu&NU=-+1|0 z+)-A3BgI6~5xctETnCJv*tywAE@0*cL7H#XMrSjMJF!u>`?L9nfrmXAH99QIFz+IY zZ;`H=5}}M?37($zsrH(InrUrK4=jIF<vY)XJyiO(Icm;0izeV?>VMBmwnvSr8SVg3 zuNbmQcfSY_;=$8|m<MDNtYSK@t7SW`qbKmH)jqf*j)<aR_pG)}joa*qYyOuqO2e<c zaSS)$U1o^QS60W@{k(M4wmiYY;nq_upaVPXEv^Ut@oz~%BYb2CU!$b8_nW_mbm?W; zzeW(hN9L`z6{q<33`b$zhSSbDj{n)jk3&>!kZFN8e(9AhSaiaj_Nji52_QNEA|*4O zZ=topkcv^&K>w#vZD63<ohWX=N>83gD=iCf@mF&z_45VPyX!IyXP--JPPv7yFwTKC z`&Y3YrFc`#3@1jr<F`TrAIANFHM~}-K*4QAu~q3G=wN#z9w;51wB%8}GUxHjCsH$d zB^zTO8y26yFX4CtD6l94rzsNIZ8K8?_fdHc=2u!MF>{*`5p^zP*pF*+dboy<@#6nV zvZRtj6|w&sn#~+Tx0PF{m3K`^ezGwN*tf7&4U+ZhVNi=UYZmzuU04Sphtc()h@1hW zgxQ+ZYY6?2Yk1|TS_Xm+3cO@i;}YQ@m@A*2ObVJ6MFuJ^nOE__wl;T10%TFkQLc1@ z{|H>3;Yb>i1_fBzw46}@ovxBQ+M%uk;XPZ);zcEd47zG$8MM|0hRf{uZg*OU@i#^r zL^bz?%KhWUHg%PE*m*oow%l-_!>qEwYVQ>5e_YCp^|2iLuLf@=wL^1MTujcoN}(hx zrAbO*&KB08qUK0D=7KN1`{-{LC+RWLM5DRwEmeq%1_gNgmDU0*C%UcV6H-nq+)KoQ zozc`uWvSy9c5xr14?r)qHG8w!47jdc!&=!uKj%4P$vjPPsMH2LMN!y5@a{^&dYWBF z`gTDphB^yoZD3KFkpfNf{E6s-93DdPK~VAJ@#m7K;0ARJOg7UQROh#dUwwE00V+Z~ zdrA5cP|XY5psswb2YUVBBb3x0H?K8%;5&BhT3ltz`15-yBPK@NXixV^TKFnfeKhdi zB_-|SrC8sO95n1>42D~`(8WLHD^e+IGU*;oa8NHGmTOQfqV)wvZ*6!I;Cmz{zAFfg z%L^53h`Z^Y7`R~+KrIG-h^X<Qq>^i05H*T7o^n`Zasrv55h>8(sJGCGViz3?R>^iK zRXA7=a?<{Rab^YjHZ-d<54)8f5{39aHDW(OR6Mxz(5D9w@K5mgp}9}_!`gkHkH40` zft&SHNg2j(CIH|$hO=2-w6L7Uh{0RfjyC}yQ+*tIi#v2r&Tv*yP}jWeyX$pulVJN= znbi}~{|))=YNzz=MN}UC8E25c@i3+jvPDp3yp(I-a|#OzyScsHpJZ8FJf_0xKlnCT zRGK@unb9?HYlZ6bJ{ni79)C40ZvC^BML#hr2*%1XL7%0e^+gWFC|BXoLUmevzwMby z^V=s|T~I3sn5FHnIY5Bva>5MBUva{X*q6PYmB^28`E$DMc>;&{nV$D-{Imefv^iN6 zeQQZ>yYUPZc~Ru*<nS32a0frmo+*Q!!X4tn+DhxqXGas(!lr_I95aWCl3ge(aOgw} z%KVmrwWFAJTWJNJt2@JV<OEc5nEvrm4%R09ItrdiZ=MY|)(`q{utN@w#!>$g_~X1Y zxBV+;*q*Qh$dC+Jq~3@u{iy6Z^Z@)kLr1AJ_ya!7>*T`VTGa@W^kO^-tVc@iO+r?P zKftp?!g-Y}CQ1~Cb>cuMc2KBuG#@O&s@`f#Lye(*bMH#0D2Fbhw;Qpn2xXEJ0%jGP z6t0W-w8kTI&6D^pqP90>p3_qZ81P8wEmS8%)5WqA1z+eTlMqwwS;dq+CXt9mR3WH# z+00}pt}1Z3#SjMS1@#e9_t(2F?bD>F3|~6m4l6Xt`y=yO$u?akWN+7DvU|$nKqx7f zLFHC}B#fR)-Ey38C13XIqa%MII0X(TOo7YsVKXuPBy!uAx+oq;RyRHn{P%TzVwzWh z94D!~eiYPPOcMvB(lpM+T{UJZtxYrvbWe^vZ0INJg1$6FfZUxaI0ls?Q5{(VNI)_| z9uZ)?^c{FW5d@icvTyIt%{R=h=lE(&ZO0RrOduc)yFD&0!O5i!6TFV(d3@p5j=&%c zQq19H0m|xt8`|dUx9@FFu-G33?Ue%xvYB-AWDorp&LHj<G{ZlE7a(IU$iTmf+nx#o zvNu9fC!qo;;q+}*eQMoWq9Tzeo>^l}xKhfh&db%(MVGJYFLjxOR=rGLTf_v!?3<b3 z%5YBILqhLqS|oInJ=EuZ6X#War0E>V4NBO_>r;oemP5&rL6=tIQIk<F&f#s;q`-UG z!&VNvr9bi#{n+ZzPKVTfvNu3Fp-QC(y{8%H9Ihe>+*e5Mi~A>6R!swN@;*OG`aKj{ z@@S^IdZyL(2NwGm$!GA>bf<zBtFx#mnCP6jdk&yzzN<PfqAI4vg*cxbj2L{c0q&|O zucUKmA{}6VcBc~_2emC)<@X8SfMv<q-|TUuI;#L8&UD7N#T8HzKb+YHF;=nD?BB{* zRXHN+9tbWz(w=m{c|Z{}&VzAJ<_cB`1*w3ID|t^jGBk7Way5uvlKNm-W^;Z+xPfQa znuzq`=drNO!MHyrf7uV=ZELDp-|WZtB>_;e)iy}n>y4p!VV<)7SX8uf>E;V#d~AlT z!bu^3BIx`L74p;--A@|QnQw(*@LirIEP=#CP8Dx;th2liZ!?|QRsm!Iua({TQl0LW ztB6_Yseihim(Lxv#mRuH&qtZ)^uq#pyAT)p#P8iMf+-~X)c_~E;oXzdD9c{mxy{?B zd5^d?T%v5&YR?UUEAw|wJ5g*$dd7?<7Lt<r8rdnSjhef#6h2L9D98Urko5#7-783| zhhyrRseYYE!Udm!i*^;N#*}P)RxB}}yli}G^7kn`;)!8pol6r$$OR`WdBfU~zTGiv z+}D(KhYPz;jiesOv{0l?&yY}DM&rFW_P|9gfGm|stTh;#Ay)uRAjD2n^d<zk(G@vr zio{u~;g~-PXv#Ca*$MCW!;V!ZVG)OR9Gdu7O7V%Asq}#7VZwv^-B3AUx&+2K$nMY( zSBMQcGi74lANj)Fpu)H4I<4~YB2(FS*rIxqH%xHQ1oekS;4$jzC-}C}F0zuA|AZ!- zH{Y{$e>h#IGvt)BMz=}vO`*=7C6BFpXVDWhRQlzfYH0r2tMx{`)IgJ-N{+Sl4!*j{ zPWFC9oR2nvUXqfa0<0Qnh;=heH;cpduu3!{i}fR=Th)r#?#r^52iqi?KumA_V{~he zbly(m7%j^66QX=ra>Z2AMps)k!N|Y&l=AqxYm(qB#D*@xHP{|y|C#Uv>lU531WmVN zeTRPECB+MW9R3u`40_3EB+hb)J@)40pBk5g7|i5I#7nDw?&bUOa^%BZu<dAUVuYSH zbiYTSVZmkuN?8HHlsxr0oRzd1wq4rH(T3k{fGC1rgdD`XRoq@#4ZrQpX{e{c-LL~` z@GW37NZ(!m^u87fJO$qROxkX<z;s|OYqBB(<&&F>p7tmgB7DSB$x;D;0NU2;5Jh0b z0aRe_Ti;$H{lVePX_;U53OA#t_Er2V4nmwsSq=+M;AiZ}iYkXJG+RqTRmhm*yr<R< zK5r1$T9S^M&dyKpJ>pVL>GN_HhIYN*5(S#5E9UYz{H&JgQ+0zkhK2qf`s!)>gSV}Q zNI@pOcD3pc{KC2K0^k%Lo;g-r7+k-fj*`E%n@pM1JKjHF9bl8L{d#ZR8?&du6d*;^ zBgo*dkucOTpOnkIm@AColPcXZ)|ooEY`2ZT*$P6hU%Q7zy3JaQusF7)^EbI4b~=IO zRo9mgMGD2FMx&F!tiz7&{cWEj{AWQYBCt4m1!2y!W|mEaI*bLV(u4ow;?UxTCJGev z8g;<S*nzG^!}B&CVN;#U8V376vn#I%TU4(Ta(>zOB@)+aF56Nz?PMbjS?~Gvx(^Zm zWeh+oA|Q4hF?Ji%rWe){a;Gj%-cwde;`?#BDTP+IjBx?hHFnIC3$P}Y$w9DFZyV~3 zhF~q&6=aLXXMe;7kZCOSKK2nDt~D@7WZg+J9I&xl65mRD(|6+Egzx@_XO}=8WsXOA zo1b#pm%q{O4;q$ULVZ)DW{IX1^?nJ_EnQabN0a}b6DF=^-AiH?6z|B;UAT}*(pkw~ zqxbZ}HHT**5TV>tN%c-tLl`x~f7V2cdp>8xw)EG+`Q!}vwq@Zvu3KXN0kO7JdMPA7 zzX^^Kd<P3MDuM9AZL{&P5ngDSjd&uQ1IC2>^$7PD9Lz9;-%G`i<{34!Ijy#<>~5<D zry+y3FC}ysfN;BbFs+jHn1+!48Ob3cUyX3(=EZCp18V_MopE{a2V9k6lyM%OIAR7z ztreqAO?1Y)&gQ<BjxkbL7@)1lkoQ=3$1G9Eyd_S_6|RaFL}raY;`f~wf+6R<3isy_ zKtV}Il~enMG@+hgi+>O8_#{W#us3XDY!&5E^Lp=m1-AS#rzxQC_R^7B-+<beQ9Gym z8EDL?^-B9^sxVJ1+Rb;Ju<0(#+Gz%X=|Ckv6M|?>2(w!w7eJO#l!uF*ZKcduN_z1H z)Y6V&$$=!@4GoHKe|>i^(tA^h9#*d(d+^+ii$4-+mp8HW8L?8_OId*-jM3`Ak7%Cw zN>6ptGZMuw4X^{HOJbqORM+<ofs?4I#JnyGE9E8g;UV-yO`&h~3O(m|!jVQJlr94G zsf@k}#t+#tbB?$f1f%nd>>LCF))oUq2dg~Z&#vVy<Nuk-HZ-z%kfKG*dIhLh*FP`O zIyMqvjjq}kId^=cEjUv8EdWc_1ga#9g7AyH3B{}+GO76{0_33$t#l8Fr+y)UeB7^t zv{qO)AoDH`c!B``KLEhCYCy<i@Wfg@QNm(PYy4t`X~-dD>E~s5!ZPq~4q;Ld5UgvJ z+VCGG#!E`S{m(@Ko@JOBN_Yw=kUzG+-Y~W#3<>p7aEf2ZR+WZkNdf}TnExJ$e+wt2 zh97q;&M@1TjfgdZCpO(@kFH9iwj_&yU`yBv9L4f*XZ=Vq;dF=_$9U<1kTkKT(P@!j zpf|l1iX4qkGUZnEu~Nope+DcyOmeV{d5Ym9PQDy`Dkd+g<lH^^{o<ABOa8R%LXU!N z+?A9avu++>FZ2ES&dGQzf*hSe^DEl4fA|W8nK6R<^j*s$y*O8bO?u{jz@}v8qXvcA zn@*GbF{G{YkfqI-WsgQNfIX(yvk~P{1%ZRAk1e;0)eolid~lDL<0gi({M}xgoDVGB z_f&T$?zU=jxAM1<Z7Cd^+h#3Ku!8BrndT~W%`Sz(nTnxufRDfDdUx`%n_v8iV_w5b zJ~uD*(~>9gwW%z=7?Oa&G3W*N)|Jx+55R-6rl%}r{1`9z9Y`;O0{bq-ZO5Y?-EI|o zQX|@!=ek=$nTMv=%uw~M;bxt%engzn*jbHmIR48>rToM^`X}gYP!7G<Q7+m;%){5< zx&q=QrcBn3QSKmFIk8GwRGpjJS=pvbs~bwlM0eR>f~F;r;lF2X)s|Foz7ep1YzqU} z1aX0>=_Vc~#sy~ih+~0i4dhO5Gh{qo2uwh4O^^4Bc+5WSt0VM(c@$qRl;-UfmhrNS z_5`Pi>Z)~>3rJwWiHdT=6REnWjD?FX0Rza#plRMSf9mC=oLBT~J>iAERkaVN9<*=p zeoOrd-4!lUnSnKE%QA6>$!$OhF6X<Y3J7e#B5W7_GFT!@B;>aU=*qcsXYWz+=MDFg z{r*35>G-MN^OttIx~fn{F?6DYMOvhmn8<19BG3AGo!?TsPJuK$xM_R%kW+Bs*b41# za-RqE1Ck>6vEU!7k(TDh){%qRN5LH`h@Q0)$WsdGks8PN+?IaEK$P)UyZIa=B1nla zxdLosRFaXkaYnsY9doCoWpV2RXm6L@^Jv}m;O3x;*05{ayi5$P{7S{ldWhHMmDg~@ zM~%s;lH6<N=GNmh1!Lp3Ci(~_F?4ntd5B;QH)$euEH`3pru1Foc78KSw;&WQV$(*j zd;`$IXu9`&mZLt2mzFIDEH3-ieR{EYPXyPcFOQUwp&5>KPVX>*@hEwj6NIIoxcb7P zJ%4Y|as41s9}H-f7bUJ2K@9U;^jITwC&Q~EZz03gaFHnb&R+;plDc^|W`P2tA<Wz8 z+;Ey5hb<6mG<|`3A3H%<(_0&n(?_M7SD)qdFVJ>FvLiVAaj|!V!43_Ov5B0)?@}}V zD;BU`+h7TbY}EyGa%Aq4fxrFNo(B*28D8H*^@cH@z}Twd*$RXdV!2M-%?K?>h1WZZ zh|%b&IOhyl)9B%<N|BX1IOkq%=D0K`EaiItm@1B&X3kLDQRfW%**$Fxz$x!upP4pO z!(De6z-<@U;TBd=W&m?(^35ca^IQnSRn4P{WUzAQ#0ST1V!F*a-jhX7j*8JN?YB&- z&)3ITGg*Fg1X?d{#I5Lzj;l~<y6=2#I+;P%Hvrzr-;uGqJ)cNi6(w=T*D{gSGI6zV z8#Q`AB8}Xfb+j8!zV6ZdK(Y?Jp5H%+l9wZ]Mdn^creW7b6ltXj!1DPOHL2AkPK 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�jt@JKad`4yGbAR8^BgeQ<N3*^BuD*} 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%0A$J9+hx`y&Xi>dZSkYmET`i|g~b!{sB$En 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 dS*4`_k;j#;edt4tYXE#WexmC%owul+czj}59C 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%0DU!?Na2@^*^A_G<g&$C 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 `;Lzz}RKK1MpV_XPi3s3MKur8Wd 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%0D8?SqB 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�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%0DBIhiXM-TsPbpp5 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�tF?AU>P~F-XLP{D9Ri|d|^#k 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Ξ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 W0000^&eoe07dtQm000001X)^Vuf?_i literal 0 HcmV?d00001 diff --git a/cups-filters.spec b/cups-filters.spec index 320885a..287bc07 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.12 +Version: 1.28.13 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Mon Mar 28 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.13-1 +- 1.28.13 + * Tue Mar 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.12-1 - 1.28.12 From faec0dbe072275a3925707fd5f4f1a1ed6de24f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 7 Apr 2022 12:18:02 +0200 Subject: [PATCH 140/197] 1.28.14 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2760701..cddaee0 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,4 @@ /cups-filters-1.28.10.tar.xz /cups-filters-1.28.11.tar.xz /cups-filters-1.28.12.tar.xz +/cups-filters-1.28.14.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 287bc07..e0f5c6a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.13 +Version: 1.28.14 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Thu Apr 07 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.14-1 +- 1.28.14 + * Mon Mar 28 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.13-1 - 1.28.13 diff --git a/sources b/sources index d979489..d4facca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.12.tar.xz) = 430e31815fe3b40b2d12c8db0a9e38060398d9ba3306af5562bc887dd99b06971765b98ba7227a0478d9f6616dd825149f138a2367b442ea0593708eb34140f6 +SHA512 (cups-filters-1.28.14.tar.xz) = a128858ac582da1322edad1cfca02bb6e5a077a4d3ca61d9e33e07b83e5015bb1a11571d30c66069f503031a6b55a82d7867cd171a7090fa729d894441f7abdd From 6e20b40da9c960370679e65b94790f9b4de63c4b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 22 Apr 2022 06:34:12 +0200 Subject: [PATCH 141/197] 1.28.15 --- .gitignore | 1 + cups-filters.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index cddaee0..35c0377 100644 --- a/.gitignore +++ b/.gitignore @@ -109,3 +109,4 @@ /cups-filters-1.28.11.tar.xz /cups-filters-1.28.12.tar.xz /cups-filters-1.28.14.tar.xz +/cups-filters-1.28.15.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index e0f5c6a..0150b1e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,7 +3,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.14 +Version: 1.28.15 Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Wed Apr 20 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.15-1 +- 1.28.15 + * Thu Apr 07 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.14-1 - 1.28.14 diff --git a/sources b/sources index d4facca..71dfbfa 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.14.tar.xz) = a128858ac582da1322edad1cfca02bb6e5a077a4d3ca61d9e33e07b83e5015bb1a11571d30c66069f503031a6b55a82d7867cd171a7090fa729d894441f7abdd +SHA512 (cups-filters-1.28.15.tar.xz) = cc8d43bba6edb2b839f3be5fcbcdeb7633ed0f0f0c2737bcc6957cf95fb4ded8ee412358cc95fdbf289ae897dd0b7f32e689f02d191a8f15930eb4d2deefd74c From ca565205ee47e6dacc3dab6f7feec4dd07c62274 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 20 Jul 2022 23:53:18 +0000 Subject: [PATCH 142/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 0150b1e..3e03ac0 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.15 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -368,6 +368,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.15-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Wed Apr 20 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.15-1 - 1.28.15 From 67ee5bbd715106e0dd99c2d6a7cef8e5116cb7c4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 8 Sep 2022 11:45:51 +0200 Subject: [PATCH 143/197] 2123809 - rpm -Va reports error on /etc/cups/cups-browsed.conf --- cups-filters.spec | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 3e03ac0..3162e77 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.15 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -308,7 +308,9 @@ done %{_mandir}/man1/driverless.1.gz %{_mandir}/man5/cups-browsed.conf.5.gz %{_mandir}/man8/cups-browsed.8.gz -%config(noreplace) %{_sysconfdir}/cups/cups-browsed.conf +# 2123809 - rpm -Va reports changes due %post scriptlet (remove the verify part once we remove +# cups-browsed.conf update from %post) +%config(noreplace) %verify(not size filedigest mtime) %{_sysconfdir}/cups/cups-browsed.conf %{_unitdir}/cups-browsed.service %files libs @@ -368,6 +370,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Thu Sep 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.15-3 +- 2123809 - rpm -Va reports error on /etc/cups/cups-browsed.conf + * Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.15-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 2c091ba0e4e8cdebcf8e5775c02d5fbb5317a9a6 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 19 Sep 2022 13:34:48 +0200 Subject: [PATCH 144/197] 1.28.16 --- .gitignore | 1 + cups-filters.spec | 11 +++++++++-- sources | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 35c0377..6344b88 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,4 @@ /cups-filters-1.28.12.tar.xz /cups-filters-1.28.14.tar.xz /cups-filters-1.28.15.tar.xz +/cups-filters-1.28.16.tar.xz diff --git a/cups-filters.spec b/cups-filters.spec index 3162e77..4060a29 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -3,8 +3,8 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters -Version: 1.28.15 -Release: 3%{?dist} +Version: 1.28.16 +Release: 1%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -21,6 +21,7 @@ Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz # backported from upstream +Patch0001: browsed-updatenetif.patch # autogen.sh @@ -62,6 +63,9 @@ BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(lcms2) +# used for getting image resolution from images - they have +# EXIF data in them and library accesses it +BuildRequires: pkgconfig(libexif) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(zlib) @@ -370,6 +374,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Thu Sep 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-1 +- 1.28.16 + * Thu Sep 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.15-3 - 2123809 - rpm -Va reports error on /etc/cups/cups-browsed.conf diff --git a/sources b/sources index 71dfbfa..43ca9d6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.15.tar.xz) = cc8d43bba6edb2b839f3be5fcbcdeb7633ed0f0f0c2737bcc6957cf95fb4ded8ee412358cc95fdbf289ae897dd0b7f32e689f02d191a8f15930eb4d2deefd74c +SHA512 (cups-filters-1.28.16.tar.xz) = 0369f96a8ae5e33bf75c8765947d5ad7285b3532e9d9b0ded7e206798834c9ade3a2ac3f1d16e0fdd43346f2bc7852c541130e935cbb20f9c1239a53118d1239 From 15366e173e95555e317bd10c7c4228cc38f015f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 19 Sep 2022 13:34:48 +0200 Subject: [PATCH 145/197] 1.28.16 --- browsed-updatenetif.patch | 121 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 browsed-updatenetif.patch diff --git a/browsed-updatenetif.patch b/browsed-updatenetif.patch new file mode 100644 index 0000000..5a49c82 --- /dev/null +++ b/browsed-updatenetif.patch @@ -0,0 +1,121 @@ +diff --git a/configure.ac b/configure.ac +index c1b108f..e921820 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -902,6 +902,16 @@ AC_ARG_WITH([shell], + ) + AC_DEFINE_UNQUOTED([SHELL], "$with_shell", [Path for a modern shell]) + ++AC_ARG_ENABLE([frequent_netif_update], ++ [AS_HELP_STRING([--enable-frequent-netif-update], [Enable network interface update after each found entry to prevent network issues])], ++ [FREQUENT_NETIF_UPDATE=$enableval], ++ [FREQUENT_NETIF_UPDATE=yes] ++) ++ ++AS_IF([test "x$FREQUENT_NETIF_UPDATE" != "xno"], ++ [AC_DEFINE([FREQUENT_NETIF_UPDATE], [1], [Define whether we want network interface update after each found entry])] ++) ++ + # ===================== + # Prepare all .in files + # ===================== +@@ -978,6 +988,7 @@ Build configuration: + pclm: ${enable_pclm} + local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} + keep generated queues during shutdown: ${SAVING_CREATED_QUEUES} ++ update network interfaces after each found entry: ${FREQUENT_NETIF_UPDATE} + all ipp printer auto-setup: ${enable_auto_setup_all} + only driverless auto-setup: ${enable_auto_setup_driverless_only} + only local auto-setup: ${enable_auto_setup_local_only} +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 9971209..79ece21 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -490,6 +490,11 @@ static autoshutdown_inactivity_type_t autoshutdown_on = NO_QUEUES; + static guint autoshutdown_exec_id = 0; + static const char *default_printer = NULL; + static unsigned int notify_lease_duration = 86400; ++#ifdef FREQUENT_NETIF_UPDATE ++static int FrequentNetifUpdate = 1; ++#else ++static int FrequentNetifUpdate = 0; ++#endif + + static int debug_stderr = 0; + static int debug_logfile = 0; +@@ -9700,7 +9705,7 @@ examine_discovered_printer_record(const char *host, + or legacy CUPS, needed for the is_local_hostname() function calls. + During DNS-SD discovery the update is already done by the Avahi + event handler function. */ +- if (type == NULL || type[0] == '\0') ++ if (FrequentNetifUpdate && (type == NULL || type[0] == '\0')) + update_netifs(NULL); + + /* Check if we have already created a queue for the discovered +@@ -10100,9 +10105,11 @@ static void resolve_callback(AvahiServiceResolver *r, + strncpy(ifname, "Unknown", sizeof(ifname) - 1); + } + ++ if (FrequentNetifUpdate) ++ update_netifs(NULL); ++ + /* Ignore local queues of the cupsd we are serving for, identifying them + via UUID */ +- update_netifs(NULL); + if ((flags & AVAHI_LOOKUP_RESULT_LOCAL) || !strcasecmp(ifname, "lo") || + is_local_hostname(host_name)) { + update_local_printers (); +@@ -11967,6 +11974,13 @@ read_configuration (const char *filename) + else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || + !strcasecmp(value, "off") || !strcasecmp(value, "0")) + AutoClustering = 0; ++ } else if (!strcasecmp(line, "FrequentNetifUpdate") && value) { ++ if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || ++ !strcasecmp(value, "on") || !strcasecmp(value, "1")) ++ FrequentNetifUpdate = 1; ++ else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || ++ !strcasecmp(value, "off") || !strcasecmp(value, "0")) ++ FrequentNetifUpdate = 0; + } else if (!strcasecmp(line, "Cluster") && value) { + ptr = value; + ptr2 = NULL; +diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 +index 7e6ee3b..7f60168 100644 +--- a/utils/cups-browsed.conf.5 ++++ b/utils/cups-browsed.conf.5 +@@ -1005,6 +1005,18 @@ and doing specific actions when a D-BUS notification comes. + NotifLeaseDuration 86400 + .fam T + .fi ++FrequentNetifUpdate turns on/off the network interface update routines ++which happen for each found entry, which can slow up cups-browsed significantly ++if we are on a network with many shared printers or if we use BrowsePoll to a server ++with many queues. Network interface updates after receiving D-BUS notification ++from NetworkManager won't be turned off with the directive. The default value ++is 'Yes'. ++.PP ++.nf ++.fam C ++ FrequentNetifUpdate Yes ++.fam T ++.fi + .SH SEE ALSO + + \fBcups-browsed\fP(8) +diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in +index ee2f5bf..6866918 100644 +--- a/utils/cups-browsed.conf.in ++++ b/utils/cups-browsed.conf.in +@@ -774,3 +774,12 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ + # and doing specific actions when a D-BUS notification comes. + + # NotifLeaseDuration 86400 ++ ++# FrequentNetifUpdate turns on/off the network interface update routines ++# which happen for each found entry, which can slow up cups-browsed significantly ++# if we are on a network with many shared printers or if we use BrowsePoll to a server ++# with many queues. Network interface updates after receiving D-BUS notification ++# from NetworkManager won't be turned off with the directive. The default value ++# is 'Yes'. ++# ++# FrequentNetifUpdate Yes From 86b38d6d57999735ec5ecfc363f83b6d78126a71 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 21 Sep 2022 10:13:58 +0200 Subject: [PATCH 146/197] disable frequent network interface data update, which slows down the queue creation --- cups-filters.spec | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 4060a29..d624cfb 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -4,7 +4,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 1%{?dist} +Release: 2%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -185,6 +185,9 @@ The package provides filters and cups-brf backend needed for braille printing. # --enable-pclm - support for pclm language # --with-remote-cups-local-queue-naming=RemoteName - name created local queues, which point to # remote CUPS queue, by its name from the server +# --disable-frequent-netif-update - cups-browsed can update its network interface data after every found printer, +# which slows down the printer creation - this disables it and leave the network +# interface update only after notification from NetworkManager %configure --disable-static \ --disable-silent-rules \ @@ -195,7 +198,8 @@ The package provides filters and cups-brf backend needed for braille printing. --enable-driverless \ --enable-pclm \ --with-apple-raster-filter=rastertopdf \ - --with-remote-cups-local-queue-naming=RemoteName + --with-remote-cups-local-queue-naming=RemoteName \ + --disable-frequent-netif-update %make_build @@ -374,6 +378,9 @@ done %{_datadir}/cups/mime/braille.types %changelog +* Wed Sep 21 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-2 +- disable frequent network interface data update, which slows down the queue creation + * Thu Sep 08 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-1 - 1.28.16 From d0a8a52f31d74cffc08c927f73fd66c63837ccf6 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 22 Sep 2022 15:53:50 +0200 Subject: [PATCH 147/197] build braille subpackage only on Fedora and CentOS Stream > 9 --- cups-filters.spec | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index d624cfb..61c6721 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -1,10 +1,17 @@ +# build braille subpackage on Fedora, don't do it on CentOS Stream 9 or older +%if 0%{?fedora} || 0%{?rhel} > 9 +%bcond_without braille +%else +%bcond_with braille +%endif + # we build CUPS also with relro %global _hardened_build 1 Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 2%{?dist} +Release: 3%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -23,6 +30,11 @@ Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{versio # backported from upstream Patch0001: browsed-updatenetif.patch +%if %{with braille} +# due moving texttobrf and textbrftoindexv3 to cups-filters-braille +# remove after F38 goes EOL and CentOS Stream 10 is released +Conflicts: cups-filters-braille < 1.28.16-3 +%endif # autogen.sh BuildRequires: autoconf @@ -96,8 +108,11 @@ Recommends: nss-mdns Recommends: avahi # ippfind is used in driverless backend, not needed classic PPD based print queue Recommends: cups-ipptool + +%if %{with braille} # braille filters and backend Recommends: %{name}-braille%{?_isa} = %{version}-%{release} +%endif # pstopdf Requires: bc grep sed which @@ -133,19 +148,23 @@ Summary: OpenPrinting CUPS filters and backends - development environment License: LGPLv2 and MIT Requires: cups-filters-libs%{?_isa} = %{version}-%{release} +%if %{with braille} %package braille Summary: OpenPrinting CUPS filters and backends - braille filters and backend License: GPLv2+ and MIT BuildRequires: liblouis-devel -# remove after F36 goes EOL -Conflicts: cups-filters < 1.28.11-1 +# due moving texttobrf and textbrftoindexv3 to cups-filters-braille +# remove after F38 goes EOL and CentOS Stream 10 is released +Conflicts: cups-filters < 1.28.16-3 # we need classic pdftopdf and other filters as well Requires: cups-filters%{?_isa} = %{version}-%{release} -# lou_translate and file2brl are needed for file conversions +# one of lou_translate (from liblouis-utils package) and +# file2brl (from liblouisutdml-utils package) is used for file conversions: +# => prefer lou_translate from liblouis-utils because liblouis-utils are in +# CentOS Stream # liblouis-utils for lou_translate Requires: liblouis-utils -# liblouisutdml-utils for file2brl -Requires: liblouisutdml-utils +%endif %description Contains backends, filters, and other software that was @@ -160,8 +179,10 @@ This package provides cupsfilters and fontembed libraries. %description devel This is the development package for OpenPrinting CUPS filters and backends. +%if %{with braille} %description braille The package provides filters and cups-brf backend needed for braille printing. +%endif %prep %autosetup -S git @@ -199,6 +220,11 @@ The package provides filters and cups-brf backend needed for braille printing. --enable-pclm \ --with-apple-raster-filter=rastertopdf \ --with-remote-cups-local-queue-naming=RemoteName \ +%if %{with braille} + --enable-braille \ +%else + --disable-braille \ +%endif --disable-frequent-netif-update %make_build @@ -294,8 +320,6 @@ done %attr(0755,root,root) %{_cups_serverbin}/filter/rastertopdf %attr(0755,root,root) %{_cups_serverbin}/filter/rastertops %attr(0755,root,root) %{_cups_serverbin}/filter/sys5ippprinter -%attr(0755,root,root) %{_cups_serverbin}/filter/textbrftoindexv3 -%attr(0755,root,root) %{_cups_serverbin}/filter/texttobrf %attr(0755,root,root) %{_cups_serverbin}/filter/texttopdf %attr(0755,root,root) %{_cups_serverbin}/filter/texttops %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext @@ -338,6 +362,7 @@ done %{_libdir}/pkgconfig/libcupsfilters.pc %{_libdir}/pkgconfig/libfontembed.pc +%if %{with braille} %files braille # cups-brf needs to be run as root, otherwise it leaves error messages # in journal @@ -348,6 +373,8 @@ done %attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv3 %attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv4 %attr(0755,root,root) %{_cups_serverbin}/filter/musicxmltobrf +%attr(0755,root,root) %{_cups_serverbin}/filter/textbrftoindexv3 +%attr(0755,root,root) %{_cups_serverbin}/filter/texttobrf %attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf %attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf %{_cups_serverbin}/filter/cgmtopdf @@ -376,8 +403,12 @@ done %{_datadir}/cups/ppdc/media-braille.defs %{_datadir}/cups/mime/braille.convs %{_datadir}/cups/mime/braille.types +%endif %changelog +* Thu Sep 22 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-3 +- build braille subpackage only on Fedora and CentOS Stream > 9 + * Wed Sep 21 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-2 - disable frequent network interface data update, which slows down the queue creation From 6ea383d6ac2707adcf35c0032c86281997f7a351 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 22 Sep 2022 16:03:16 +0200 Subject: [PATCH 148/197] rebuilt with qpdf-11.1.0 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 61c6721..12ea47d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -11,7 +11,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 3%{?dist} +Release: 4%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -406,6 +406,9 @@ done %endif %changelog +* Thu Sep 22 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-4 +- rebuilt with qpdf-11.1.0 + * Thu Sep 22 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-3 - build braille subpackage only on Fedora and CentOS Stream > 9 From 62dde7da6299579983a09fdf5845b4dea5567dc5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 13 Oct 2022 12:44:50 +0200 Subject: [PATCH 149/197] rebuilt with qpdf-11.1.1 --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 12ea47d..2bb28de 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -11,7 +11,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 4%{?dist} +Release: 5%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -406,6 +406,9 @@ done %endif %changelog +* Thu Oct 13 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-5 +- rebuilt with qpdf-11.1.1 + * Thu Sep 22 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-4 - rebuilt with qpdf-11.1.0 From 662860bd6d055645092b762fb10af699f5e80824 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 13 Oct 2022 13:53:23 +0200 Subject: [PATCH 150/197] really build with qpdf-11.1.1 (forgot to wait for qpdf in side tag...) --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 2bb28de..9adda7c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -11,7 +11,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 5%{?dist} +Release: 6%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -406,6 +406,9 @@ done %endif %changelog +* Thu Oct 13 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-6 +- really build with qpdf-11.1.1 (forgot to wait for qpdf in side tag...) + * Thu Oct 13 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-5 - rebuilt with qpdf-11.1.1 From c7f670cf9b012d57f50f96db727a76024b2f1629 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Thu, 19 Jan 2023 00:49:31 +0000 Subject: [PATCH 151/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 9adda7c..ead46e9 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -11,7 +11,7 @@ Summary: OpenPrinting CUPS filters and backends Name: cups-filters Version: 1.28.16 -Release: 6%{?dist} +Release: 7%{?dist} # For a breakdown of the licensing, see COPYING file # GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, @@ -406,6 +406,9 @@ done %endif %changelog +* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.16-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Oct 13 2022 Zdenek Dohnal <zdohnal@redhat.com> - 1.28.16-6 - really build with qpdf-11.1.1 (forgot to wait for qpdf in side tag...) From 06431fc214f0752345c78f98e6ca4ee2b0b7e6e5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 20 Feb 2023 16:44:38 +0100 Subject: [PATCH 152/197] 2170538 - Rebase to 2.0b3 --- .gitignore | 1 + 0001-Coverity-fixes.patch | 146 +++++++++++ 0001-configure.ac-C-not-needed.patch | 56 ++++ browsed-updatenetif.patch | 121 --------- cups-filters.spec | 379 ++++++--------------------- sources | 2 +- 6 files changed, 281 insertions(+), 424 deletions(-) create mode 100644 0001-Coverity-fixes.patch create mode 100644 0001-configure.ac-C-not-needed.patch delete mode 100644 browsed-updatenetif.patch diff --git a/.gitignore b/.gitignore index 6344b88..c141a01 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,4 @@ /cups-filters-1.28.14.tar.xz /cups-filters-1.28.15.tar.xz /cups-filters-1.28.16.tar.xz +/cups-filters-2.0b3.tar.gz diff --git a/0001-Coverity-fixes.patch b/0001-Coverity-fixes.patch new file mode 100644 index 0000000..c51e4fb --- /dev/null +++ b/0001-Coverity-fixes.patch @@ -0,0 +1,146 @@ +From 9ca26d04f170626a66a23cde3eac29dac7e89260 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Thu, 16 Feb 2023 15:49:10 +0100 +Subject: [PATCH] Coverity fixes 2 + +--- + filter/foomatic-rip/foomaticrip.c | 4 +++- + filter/foomatic-rip/options.c | 7 ++----- + filter/foomatic-rip/postscript.c | 11 +++++++---- + filter/rastertoescpx.c | 3 +++ + utils/driverless.c | 3 ++- + 5 files changed, 17 insertions(+), 11 deletions(-) + +diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c +index b6abe4d33..036d6138b 100644 +--- a/filter/foomatic-rip/foomaticrip.c ++++ b/filter/foomatic-rip/foomaticrip.c +@@ -639,7 +639,7 @@ int + print_file(const char *filename, + int convert) + { +- FILE *file; ++ FILE *file = NULL; + char buf[8192]; + char tmpfilename[PATH_MAX] = ""; + int type; +@@ -664,6 +664,8 @@ print_file(const char *filename, + n = fread_or_die(buf, 1, sizeof(buf) - 1, file); + if (!n) { + _log("Input is empty, outputting empty file.\n"); ++ if (strcasecmp(filename, "<STDIN>")) ++ fclose(file); + return (1); + } + buf[n] = '\0'; +diff --git a/filter/foomatic-rip/options.c b/filter/foomatic-rip/options.c +index ae5bac2ed..bad833bc1 100644 +--- a/filter/foomatic-rip/options.c ++++ b/filter/foomatic-rip/options.c +@@ -1255,8 +1255,6 @@ option_has_choice(option_t *opt, + const char * + option_text(option_t *opt) + { +- if (isempty(opt->text)) +- return (opt->text); + return (opt->text); + } + +@@ -2263,9 +2261,8 @@ ppd_supports_pdf() + // line + if (startswith(cmd, "gs")) + { +- strncpy(cmd_pdf, cmd, 4096); +- if (strlen(cmd) > 4095) +- cmd_pdf[4095] = '\0'; ++ strncpy(cmd_pdf, cmd, 4095); ++ cmd_pdf[4095] = '\0'; + return (1); + } + +diff --git a/filter/foomatic-rip/postscript.c b/filter/foomatic-rip/postscript.c +index b09c5b8ff..e6fbd2ac0 100644 +--- a/filter/foomatic-rip/postscript.c ++++ b/filter/foomatic-rip/postscript.c +@@ -178,17 +178,14 @@ print_ps(FILE *file, + const char *filename) + { + stream_t stream; +- char gscommand[65536]; + int pagefound = 0; + FILE *in, *out; + pid_t pid; +- char buf[4096]; + struct pollfd pfd; + size_t bytes, bytes_sent; + char *pos; + int pres; +- dstr_t *line = create_dstr(); +- dstr_t *data_read = create_dstr(); ++ dstr_t *line = NULL, *data_read = NULL; + + + // Define input data stream for reading +@@ -228,6 +225,11 @@ print_ps(FILE *file, + // lines, we only need the boolean answer whether there are pages or + // not + // ++ ++ char buf[4096]; ++ char gscommand[65536]; ++ line = create_dstr(); ++ data_read = create_dstr(); + + snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox -dDEVICEWIDTHPOINTS=1 -dDEVICEHEIGHTPOINTS=1 -_ 2>&1", + CUPS_GHOSTSCRIPT); +@@ -313,6 +315,7 @@ print_ps(FILE *file, + _log("No pages left, outputting empty file.\n"); + + free_dstr(data_read); ++ free_dstr(line); + } + + return (1); +diff --git a/filter/rastertoescpx.c b/filter/rastertoescpx.c +index ccd599ea5..f060db0b3 100644 +--- a/filter/rastertoescpx.c ++++ b/filter/rastertoescpx.c +@@ -335,6 +335,9 @@ StartPage(ppd_file_t *ppd, // I - PPD file + DitherLuts[6] = ppdLutLoad(ppd, colormodel, header->MediaType, + resolution, "LightBlack", logfunc, ld); + break; ++ default : // ERROR ++ fputs("ERROR: Unexpected number of channels\n", stderr); ++ exit(1); + } + + for (plane = 0; plane < PrinterPlanes; plane ++) +diff --git a/utils/driverless.c b/utils/driverless.c +index 8af843333..7c67cbe19 100644 +--- a/utils/driverless.c ++++ b/utils/driverless.c +@@ -495,19 +495,20 @@ list_printers (int mode, int reg_type_no, int isFax) + if (fp) { + while ((bytes = cupsFileGetLine(fp, buffer, sizeof(buffer))) > 0 || + (bytes < 0 && (errno == EAGAIN || errno == EINTR))) { +- ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); + ptr = buffer; + while (ptr && !isalnum(*ptr & 255)) ptr ++; + if ((!strncasecmp(ptr, "ipps", 4) && ptr[4] == '\t')) { + ptr += 4; + *ptr = '\0'; + ptr ++; ++ ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); + snprintf(ippfind_output, MAX_OUTPUT_LEN, "%s", ptr); + cupsArrayAdd(service_uri_list_ipps, ippfind_output); + } else if ((!strncasecmp(ptr, "ipp", 3) && ptr[3] == '\t')) { + ptr += 3; + *ptr = '\0'; + ptr ++; ++ ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); + snprintf(ippfind_output, MAX_OUTPUT_LEN, "%s", ptr); + cupsArrayAdd(service_uri_list_ipp, ippfind_output); + } else +-- +2.39.2 + diff --git a/0001-configure.ac-C-not-needed.patch b/0001-configure.ac-C-not-needed.patch new file mode 100644 index 0000000..c955a46 --- /dev/null +++ b/0001-configure.ac-C-not-needed.patch @@ -0,0 +1,56 @@ +From 6872a5bf03a8001169af2348cb97de9557eee4e7 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Thu, 2 Feb 2023 16:42:28 +0100 +Subject: [PATCH] configure.ac: C++ not needed + +--- + INSTALL | 7 +++---- + configure.ac | 5 +---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/INSTALL b/INSTALL +index dd377fe54..f836bfa61 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -16,10 +16,9 @@ found in "CHANGES.md". + + BEFORE YOU BEGIN + +- You'll need ANSI-compliant C and C++ compilers, plus a make program and +- POSIX-compliant shell (/bin/sh). The GNU compiler tools and Bash work well +- and we have tested the current CUPS code against several versions of GCC +- with excellent results. ++ You'll need ANSI-compliant C, plus a make program and POSIX-compliant shell ++ (/bin/sh). The GNU compiler tools and Bash work well and we have tested ++ the current CUPS code against several versions of GCC with excellent results. + + The Makefiles used by the project should work with most versions of make. + We've tested them with GNU make as well as the make programs shipped by +diff --git a/configure.ac b/configure.ac +index a3606c30f..affe7008d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -19,7 +19,7 @@ m4_include([m4/ax_compare_version.m4]) + m4_include([m4/basic-directories.m4]) + AM_INIT_AUTOMAKE([1.11 gnu dist-xz dist-bzip2 subdir-objects foreign]) + AM_SILENT_RULES([yes]) +-AC_LANG([C++]) ++AC_LANG([C]) + AC_CONFIG_HEADERS([config.h]) + # Extra defines for the config.h + AH_BOTTOM([ +@@ -50,11 +50,8 @@ AH_BOTTOM([ + # Find required base packages + # =========================== + AC_PROG_CC +-AC_PROG_CXX +-AX_CXX_COMPILE_STDCXX([11],[noext],[mandatory]) + AM_PROG_CC_C_O + AM_ICONV +-AC_PROG_CPP + AC_PROG_INSTALL + AC_PROG_LN_S + AS_LN_SRF_PREPARE +-- +2.39.1 + diff --git a/browsed-updatenetif.patch b/browsed-updatenetif.patch deleted file mode 100644 index 5a49c82..0000000 --- a/browsed-updatenetif.patch +++ /dev/null @@ -1,121 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index c1b108f..e921820 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -902,6 +902,16 @@ AC_ARG_WITH([shell], - ) - AC_DEFINE_UNQUOTED([SHELL], "$with_shell", [Path for a modern shell]) - -+AC_ARG_ENABLE([frequent_netif_update], -+ [AS_HELP_STRING([--enable-frequent-netif-update], [Enable network interface update after each found entry to prevent network issues])], -+ [FREQUENT_NETIF_UPDATE=$enableval], -+ [FREQUENT_NETIF_UPDATE=yes] -+) -+ -+AS_IF([test "x$FREQUENT_NETIF_UPDATE" != "xno"], -+ [AC_DEFINE([FREQUENT_NETIF_UPDATE], [1], [Define whether we want network interface update after each found entry])] -+) -+ - # ===================== - # Prepare all .in files - # ===================== -@@ -978,6 +988,7 @@ Build configuration: - pclm: ${enable_pclm} - local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} - keep generated queues during shutdown: ${SAVING_CREATED_QUEUES} -+ update network interfaces after each found entry: ${FREQUENT_NETIF_UPDATE} - all ipp printer auto-setup: ${enable_auto_setup_all} - only driverless auto-setup: ${enable_auto_setup_driverless_only} - only local auto-setup: ${enable_auto_setup_local_only} -diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c -index 9971209..79ece21 100644 ---- a/utils/cups-browsed.c -+++ b/utils/cups-browsed.c -@@ -490,6 +490,11 @@ static autoshutdown_inactivity_type_t autoshutdown_on = NO_QUEUES; - static guint autoshutdown_exec_id = 0; - static const char *default_printer = NULL; - static unsigned int notify_lease_duration = 86400; -+#ifdef FREQUENT_NETIF_UPDATE -+static int FrequentNetifUpdate = 1; -+#else -+static int FrequentNetifUpdate = 0; -+#endif - - static int debug_stderr = 0; - static int debug_logfile = 0; -@@ -9700,7 +9705,7 @@ examine_discovered_printer_record(const char *host, - or legacy CUPS, needed for the is_local_hostname() function calls. - During DNS-SD discovery the update is already done by the Avahi - event handler function. */ -- if (type == NULL || type[0] == '\0') -+ if (FrequentNetifUpdate && (type == NULL || type[0] == '\0')) - update_netifs(NULL); - - /* Check if we have already created a queue for the discovered -@@ -10100,9 +10105,11 @@ static void resolve_callback(AvahiServiceResolver *r, - strncpy(ifname, "Unknown", sizeof(ifname) - 1); - } - -+ if (FrequentNetifUpdate) -+ update_netifs(NULL); -+ - /* Ignore local queues of the cupsd we are serving for, identifying them - via UUID */ -- update_netifs(NULL); - if ((flags & AVAHI_LOOKUP_RESULT_LOCAL) || !strcasecmp(ifname, "lo") || - is_local_hostname(host_name)) { - update_local_printers (); -@@ -11967,6 +11974,13 @@ read_configuration (const char *filename) - else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || - !strcasecmp(value, "off") || !strcasecmp(value, "0")) - AutoClustering = 0; -+ } else if (!strcasecmp(line, "FrequentNetifUpdate") && value) { -+ if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || -+ !strcasecmp(value, "on") || !strcasecmp(value, "1")) -+ FrequentNetifUpdate = 1; -+ else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || -+ !strcasecmp(value, "off") || !strcasecmp(value, "0")) -+ FrequentNetifUpdate = 0; - } else if (!strcasecmp(line, "Cluster") && value) { - ptr = value; - ptr2 = NULL; -diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 -index 7e6ee3b..7f60168 100644 ---- a/utils/cups-browsed.conf.5 -+++ b/utils/cups-browsed.conf.5 -@@ -1005,6 +1005,18 @@ and doing specific actions when a D-BUS notification comes. - NotifLeaseDuration 86400 - .fam T - .fi -+FrequentNetifUpdate turns on/off the network interface update routines -+which happen for each found entry, which can slow up cups-browsed significantly -+if we are on a network with many shared printers or if we use BrowsePoll to a server -+with many queues. Network interface updates after receiving D-BUS notification -+from NetworkManager won't be turned off with the directive. The default value -+is 'Yes'. -+.PP -+.nf -+.fam C -+ FrequentNetifUpdate Yes -+.fam T -+.fi - .SH SEE ALSO - - \fBcups-browsed\fP(8) -diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in -index ee2f5bf..6866918 100644 ---- a/utils/cups-browsed.conf.in -+++ b/utils/cups-browsed.conf.in -@@ -774,3 +774,12 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ - # and doing specific actions when a D-BUS notification comes. - - # NotifLeaseDuration 86400 -+ -+# FrequentNetifUpdate turns on/off the network interface update routines -+# which happen for each found entry, which can slow up cups-browsed significantly -+# if we are on a network with many shared printers or if we use BrowsePoll to a server -+# with many queues. Network interface updates after receiving D-BUS notification -+# from NetworkManager won't be turned off with the directive. The default value -+# is 'Yes'. -+# -+# FrequentNetifUpdate Yes diff --git a/cups-filters.spec b/cups-filters.spec index ead46e9..c35aedc 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -1,170 +1,78 @@ -# build braille subpackage on Fedora, don't do it on CentOS Stream 9 or older -%if 0%{?fedora} || 0%{?rhel} > 9 +%if 0%{?fedora} +%bcond_without mdns %bcond_without braille %else +%bcond_with mdns %bcond_with braille %endif # we build CUPS also with relro %global _hardened_build 1 -Summary: OpenPrinting CUPS filters and backends + +Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters -Version: 1.28.16 -Release: 7%{?dist} +Version: 2.0b3 +Release: 1%{?dist} -# For a breakdown of the licensing, see COPYING file -# GPLv2: filters: commandto*, imagetoraster, pdftops, rasterto*, -# imagetopdf, pstopdf, texttopdf -# backends: parallel, serial -# GPLv2+: filters: gstopxl, textonly, texttops, imagetops, foomatic-rip -# GPLv3: filters: bannertopdf -# GPLv3+: filters: urftopdf, rastertopdf -# LGPLv2+: utils: cups-browsed -# MIT: filters: gstoraster, pdftoijs, pdftoopvp, pdftopdf, pdftoraster -License: GPLv2 and GPLv2+ and GPLv3 and GPLv3+ and LGPLv2+ and MIT and BSD with advertising +# the CUPS exception text is the same as LLVM exception, so using that name with +# agreement from legal team +# https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/message/A7GFSD6M3GYGSI32L2FC5KB22DUAEQI3/ +License: Apache-2.0 WITH LLVM-exception -Url: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters -Source0: http://www.openprinting.org/download/cups-filters/cups-filters-%{version}.tar.xz +URL: https://github.com/OpenPrinting/cups-filters +Source0: %{URL}/archive/%{version}/%{name}-%{version}.tar.gz -# backported from upstream -Patch0001: browsed-updatenetif.patch -%if %{with braille} -# due moving texttobrf and textbrftoindexv3 to cups-filters-braille -# remove after F38 goes EOL and CentOS Stream 10 is released -Conflicts: cups-filters-braille < 1.28.16-3 -%endif +# Patches +# https://github.com/OpenPrinting/cups-filters/pull/504 +Patch0001: 0001-configure.ac-C-not-needed.patch +# https://github.com/OpenPrinting/cups-filters/pull/510 +Patch0002: 0001-Coverity-fixes.patch + # autogen.sh BuildRequires: autoconf +# autogen.sh BuildRequires: automake -BuildRequires: gettext-devel -BuildRequires: libtool - -# build requirements for build system: -# gcc for backends (implicitclass, parallel, serial, backend error handling) -# cupsfilters (colord, color manager...), filter (banners, -# commandto*, braille, foomatic-rip, imagetoraster, imagetopdf, gstoraster e.g.), -# fontembed, cups-browsed +# filter binaries and backends are written in C BuildRequires: gcc -# gcc-c++ for pdftoopvp, pdftopdf -BuildRequires: gcc-c++ +# autogen.sh +BuildRequires: gettext-devel # for autosetup BuildRequires: git-core +# autogen.sh +BuildRequires: libtool # uses make for compiling BuildRequires: make # we use pkgconfig to get a proper devel packages # proper CFLAGS and LDFLAGS BuildRequires: pkgconf-pkg-config - -# uses CUPS API functions - arrays, ipp functions -BuildRequires: cups-devel - -# pdftopdf -BuildRequires: pkgconfig(libqpdf) - -# pdftops -BuildRequires: poppler-utils - -# pdftoraster, gstoraster -BuildRequires: ghostscript -BuildRequires: libjpeg-turbo-devel -BuildRequires: libtiff-devel -BuildRequires: pkgconfig(dbus-1) -BuildRequires: pkgconfig(fontconfig) -BuildRequires: pkgconfig(freetype2) -BuildRequires: pkgconfig(lcms2) -# used for getting image resolution from images - they have -# EXIF data in them and library accesses it -BuildRequires: pkgconfig(libexif) -BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(poppler-cpp) -BuildRequires: pkgconfig(zlib) - -# cups-browsed -BuildRequires: avahi-devel -BuildRequires: pkgconfig(avahi-glib) -BuildRequires: pkgconfig(glib-2.0) -BuildRequires: systemd - +# uses CUPS API +BuildRequires: pkgconfig(cups) >= 2.2.2 +# uses cupsfilters API +BuildRequires: pkgconfig(libcupsfilters) >= 2.0b3 +# uses PPD API +BuildRequires: pkgconfig(libppd) >= 2.0b3 # Make sure we get postscriptdriver tags. BuildRequires: python3-cups -# Testing font for test scripts. -BuildRequires: dejavu-sans-fonts - -# needed for systemd rpm macros in scriptlets -BuildRequires: systemd-rpm-macros - +%if %{with braille} +Recommends: braille-printer-app +%endif +# ippfind is used in driverless backend, not needed classic PPD based print queue +Recommends: cups-ipptool # cups-browsed needs systemd-resolved or nss-mdns for resolving .local addresses of remote print queues # let's not require a specific package and let the user decide what he wants to use. # just recommend nss-mdns for Fedora for now to have working default, but # don't hardwire it for resolved users -%if 0%{?fedora} +%if %{with mdns} Recommends: nss-mdns %endif -# Avahi is needed for device discovery for newer (2012+) devices and its sharing - make it recommended -Recommends: avahi -# ippfind is used in driverless backend, not needed classic PPD based print queue -Recommends: cups-ipptool -%if %{with braille} -# braille filters and backend -Recommends: %{name}-braille%{?_isa} = %{version}-%{release} -%endif - -# pstopdf -Requires: bc grep sed which -# for getting ICC profiles for filters (dbus must run) -Requires: colord +# needs cups dirs Requires: cups-filesystem -# have the same libs for the package -Requires: cups-filters-libs%{?_isa} = %{version}-%{release} -# several filters calls 'gs' binary during filtering -Requires: ghostscript -# texttopdf -Requires: liberation-mono-fonts -# if --with-pdftops is set to hybrid, we use poppler filters for several printers -# and for printing banners, for other printers we need gs - ghostscript -Requires: poppler-utils -# cups-browsed -# cups-browsed needs to have cups.service to run -Requires: cups -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd - - -%package libs -Summary: OpenPrinting CUPS filters and backends - cupsfilters and fontembed libraries -# LGPLv2: libcupsfilters -# MIT: libfontembed -License: LGPLv2 and MIT - -%package devel -Summary: OpenPrinting CUPS filters and backends - development environment -License: LGPLv2 and MIT -Requires: cups-filters-libs%{?_isa} = %{version}-%{release} - -%if %{with braille} -%package braille -Summary: OpenPrinting CUPS filters and backends - braille filters and backend -License: GPLv2+ and MIT -BuildRequires: liblouis-devel -# due moving texttobrf and textbrftoindexv3 to cups-filters-braille -# remove after F38 goes EOL and CentOS Stream 10 is released -Conflicts: cups-filters < 1.28.16-3 -# we need classic pdftopdf and other filters as well -Requires: cups-filters%{?_isa} = %{version}-%{release} -# one of lou_translate (from liblouis-utils package) and -# file2brl (from liblouisutdml-utils package) is used for file conversions: -# => prefer lou_translate from liblouis-utils because liblouis-utils are in -# CentOS Stream -# liblouis-utils for lou_translate -Requires: liblouis-utils -%endif %description Contains backends, filters, and other software that was @@ -173,16 +81,6 @@ Apple Inc. In addition it contains additional filters developed independently of Apple, especially filters for the PDF-centric printing workflow introduced by OpenPrinting. -%description libs -This package provides cupsfilters and fontembed libraries. - -%description devel -This is the development package for OpenPrinting CUPS filters and backends. - -%if %{with braille} -%description braille -The package provides filters and cups-brf backend needed for braille printing. -%endif %prep %autosetup -S git @@ -191,114 +89,51 @@ The package provides filters and cups-brf backend needed for braille printing. # work-around Rpath ./autogen.sh -# --with-pdftops=hybrid - use Poppler's pdftops instead of Ghostscript for -# Brother, Minolta, and Konica Minolta to work around -# bugs in the printer's PS interpreters -# --with-rcdir=no - don't install SysV init script -# --enable-driverless - enable PPD generator for driverless printing in -# /usr/lib/cups/driver, it is for manual setup of -# driverless printers with printer setup tool -# --disable-static - do not build static libraries (becuase of Fedora Packaging -# Guidelines) -# --enable-dbus - enable DBus Connection Manager's code -# --disable-silent-rules - verbose build output -# --disable-mutool - mupdf is retired in Fedora, use qpdf -# --enable-pclm - support for pclm language -# --with-remote-cups-local-queue-naming=RemoteName - name created local queues, which point to -# remote CUPS queue, by its name from the server -# --disable-frequent-netif-update - cups-browsed can update its network interface data after every found printer, -# which slows down the printer creation - this disables it and leave the network -# interface update only after notification from NetworkManager - -%configure --disable-static \ - --disable-silent-rules \ - --with-pdftops=hybrid \ - --enable-dbus \ - --with-rcdir=no \ +%configure --enable-driverless \ + --enable-universal-cups-filter \ --disable-mutool \ - --enable-driverless \ - --enable-pclm \ - --with-apple-raster-filter=rastertopdf \ - --with-remote-cups-local-queue-naming=RemoteName \ -%if %{with braille} - --enable-braille \ -%else - --disable-braille \ -%endif - --disable-frequent-netif-update + --disable-rpath \ + --disable-silent-rules \ + --disable-static %make_build %install %make_install -# Don't ship libtool la files. -rm -f %{buildroot}%{_libdir}/lib*.la - -# Not sure what is this good for. -rm -f %{buildroot}%{_bindir}/ttfread - -rm -f %{buildroot}%{_pkgdocdir}/INSTALL -mkdir -p %{buildroot}%{_pkgdocdir}/fontembed/ -cp -p fontembed/README %{buildroot}%{_pkgdocdir}/fontembed/ - -# systemd unit file -mkdir -p %{buildroot}%{_unitdir} -install -p -m 644 utils/cups-browsed.service %{buildroot}%{_unitdir} - # LSB3.2 requires /usr/bin/foomatic-rip, # create it temporarily as a relative symlink -ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip +# (2.0b3) try using universal filter, it should have foomatic-rip functionality +#ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip +ln -sf %{_cups_serverbin}/filter/universal %{buildroot}%{_bindir}/foomatic-rip + +# remove license files which are in %%pkgdocdir +rm -f %{buildroot}%{_pkgdocdir}/{COPYING,NOTICE,LICENSE} + +# remove INSTALL since it is unnecessary +rm -f %{buildroot}%{_pkgdocdir}/INSTALL + +# remove CHANGES-1.x.md, since it is carried by a dependency +rm -f %{buildroot}%{_pkgdocdir}/CHANGES-1.x.md + +# escp.h is not needed for runtime and nothing %check make check -%post -%systemd_post cups-browsed.service - -# put UpdateCUPSQueuesMaxPerCall and PauseBetweenCUPSQueueUpdates into cups-browsed.conf -# for making cups-browsed work more stable for environments with many print queues -# remove this after 1-2 releases -for directive in "UpdateCUPSQueuesMaxPerCall" "PauseBetweenCUPSQueueUpdates" -do - found=`%{_bindir}/grep "^[[:blank:]]*$directive" %{_sysconfdir}/cups/cups-browsed.conf` - if [ -z "$found" ] - then - if [ "x$directive" == "xUpdateCUPSQueuesMaxPerCall" ] - then - %{_bindir}/echo "UpdateCUPSQueuesMaxPerCall 20" >> %{_sysconfdir}/cups/cups-browsed.conf - else - %{_bindir}/echo "PauseBetweenCUPSQueueUpdates 5" >> %{_sysconfdir}/cups/cups-browsed.conf - fi - fi -done - -%preun -%systemd_preun cups-browsed.service - -%postun -%systemd_postun_with_restart cups-browsed.service - -%ldconfig_scriptlets libs - %files -%{_pkgdocdir}/README -%{_pkgdocdir}/ABOUT-NLS -%{_pkgdocdir}/AUTHORS -%{_pkgdocdir}/NEWS +%license COPYING LICENSE NOTICE +%doc AUTHORS ABOUT-NLS CHANGES.md CONTRIBUTING.md DEVELOPING.md README.md %{_bindir}/foomatic-rip %{_bindir}/driverless %{_bindir}/driverless-fax -%{_sbindir}/cups-browsed -%attr(0700,root,root) %{_cups_serverbin}/backend/beh -# implicitclass backend must be run as root -%attr(0700,root,root) %{_cups_serverbin}/backend/implicitclass +%attr(0744,root,root) %{_cups_serverbin}/backend/beh # all backends needs to be run only as root because of kerberos -%attr(0700,root,root) %{_cups_serverbin}/backend/parallel +%attr(0744,root,root) %{_cups_serverbin}/backend/parallel # Serial backend needs to run as root (bug #212577#c4). -%attr(0700,root,root) %{_cups_serverbin}/backend/serial +%attr(0744,root,root) %{_cups_serverbin}/backend/serial %{_cups_serverbin}/backend/driverless %{_cups_serverbin}/backend/driverless-fax %attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf @@ -311,101 +146,41 @@ done %attr(0755,root,root) %{_cups_serverbin}/filter/imagetopdf %attr(0755,root,root) %{_cups_serverbin}/filter/imagetops %attr(0755,root,root) %{_cups_serverbin}/filter/imagetoraster +%attr(0755,root,root) %{_cups_serverbin}/filter/pclmtoraster %attr(0755,root,root) %{_cups_serverbin}/filter/pdftopdf %attr(0755,root,root) %{_cups_serverbin}/filter/pdftops %attr(0755,root,root) %{_cups_serverbin}/filter/pdftoraster +%attr(0755,root,root) %{_cups_serverbin}/filter/pwgtopclm +%attr(0755,root,root) %{_cups_serverbin}/filter/pwgtopdf +%attr(0755,root,root) %{_cups_serverbin}/filter/pwgtoraster %attr(0755,root,root) %{_cups_serverbin}/filter/rastertoescpx -%attr(0755,root,root) %{_cups_serverbin}/filter/rastertopclm %attr(0755,root,root) %{_cups_serverbin}/filter/rastertopclx -%attr(0755,root,root) %{_cups_serverbin}/filter/rastertopdf %attr(0755,root,root) %{_cups_serverbin}/filter/rastertops -%attr(0755,root,root) %{_cups_serverbin}/filter/sys5ippprinter %attr(0755,root,root) %{_cups_serverbin}/filter/texttopdf %attr(0755,root,root) %{_cups_serverbin}/filter/texttops %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext +%attr(0755,root,root) %{_cups_serverbin}/filter/universal %{_cups_serverbin}/driver/driverless %{_cups_serverbin}/driver/driverless-fax -%{_datadir}/cups/banners -%{_datadir}/cups/charsets -%{_datadir}/cups/data/* %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/mime/cupsfilters.types %{_datadir}/cups/mime/cupsfilters.convs -%{_datadir}/cups/mime/cupsfilters-ghostscript.convs -%{_datadir}/cups/mime/cupsfilters-poppler.convs +%{_datadir}/cups/mime/cupsfilters-universal-postscript.convs +%{_datadir}/cups/mime/cupsfilters-universal.convs %{_datadir}/ppd/cupsfilters -# this needs to be in the main package because of cupsfilters.drv -%{_datadir}/cups/ppdc/pcl.h +# escp.h and pcl.h are required during runtime, because +# CUPS PPD compiler (ppdc) uses them for generating drivers +# per request from cupsfilters.drv file +%{_datadir}/ppdc/escp.h +%{_datadir}/ppdc/pcl.h %{_mandir}/man1/foomatic-rip.1.gz %{_mandir}/man1/driverless.1.gz -%{_mandir}/man5/cups-browsed.conf.5.gz -%{_mandir}/man8/cups-browsed.8.gz -# 2123809 - rpm -Va reports changes due %post scriptlet (remove the verify part once we remove -# cups-browsed.conf update from %post) -%config(noreplace) %verify(not size filedigest mtime) %{_sysconfdir}/cups/cups-browsed.conf -%{_unitdir}/cups-browsed.service -%files libs -%dir %{_pkgdocdir}/ -%{_pkgdocdir}/COPYING -%dir %{_pkgdocdir}/fontembed -%{_pkgdocdir}/fontembed/README -%{_libdir}/libcupsfilters.so.1* -%{_libdir}/libfontembed.so.1* - -%files devel -%{_datadir}/cups/ppdc/escp.h -%{_includedir}/cupsfilters -%{_includedir}/fontembed -%{_libdir}/libcupsfilters.so -%{_libdir}/libfontembed.so -%{_libdir}/pkgconfig/libcupsfilters.pc -%{_libdir}/pkgconfig/libfontembed.pc - -%if %{with braille} -%files braille -# cups-brf needs to be run as root, otherwise it leaves error messages -# in journal -%attr(0700,root,root) %{_cups_serverbin}/backend/cups-brf -%attr(0755,root,root) %{_cups_serverbin}/filter/brftoembosser -%attr(0755,root,root) %{_cups_serverbin}/filter/brftopagedbrf -%attr(0755,root,root) %{_cups_serverbin}/filter/imagetobrf -%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv3 -%attr(0755,root,root) %{_cups_serverbin}/filter/imageubrltoindexv4 -%attr(0755,root,root) %{_cups_serverbin}/filter/musicxmltobrf -%attr(0755,root,root) %{_cups_serverbin}/filter/textbrftoindexv3 -%attr(0755,root,root) %{_cups_serverbin}/filter/texttobrf -%attr(0755,root,root) %{_cups_serverbin}/filter/vectortobrf -%attr(0755,root,root) %{_cups_serverbin}/filter/vectortopdf -%{_cups_serverbin}/filter/cgmtopdf -%{_cups_serverbin}/filter/cmxtopdf -%{_cups_serverbin}/filter/emftopdf -%{_cups_serverbin}/filter/imagetoubrl -%{_cups_serverbin}/filter/svgtopdf -%{_cups_serverbin}/filter/textbrftoindexv4 -%{_cups_serverbin}/filter/vectortoubrl -%{_cups_serverbin}/filter/xfigtopdf -%{_cups_serverbin}/filter/wmftopdf -%{_datadir}/cups/braille -%{_datadir}/cups/drv/generic-brf.drv -%{_datadir}/cups/drv/generic-ubrl.drv -%{_datadir}/cups/drv/indexv3.drv -%{_datadir}/cups/drv/indexv4.drv -%{_datadir}/cups/ppdc/braille.defs -%{_datadir}/cups/ppdc/fr-braille.po -%{_datadir}/cups/ppdc/imagemagick.defs -%{_datadir}/cups/ppdc/index.defs -%{_datadir}/cups/ppdc/liblouis.defs -%{_datadir}/cups/ppdc/liblouis1.defs -%{_datadir}/cups/ppdc/liblouis2.defs -%{_datadir}/cups/ppdc/liblouis3.defs -%{_datadir}/cups/ppdc/liblouis4.defs -%{_datadir}/cups/ppdc/media-braille.defs -%{_datadir}/cups/mime/braille.convs -%{_datadir}/cups/mime/braille.types -%endif %changelog +* Mon Feb 20 2023 Zdenek Dohnal <zdohnal@redhat.com> - 2.0b3-1 +- 2170538 - rebase to 2.0b3 + * Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.28.16-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index 43ca9d6..13c8471 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-1.28.16.tar.xz) = 0369f96a8ae5e33bf75c8765947d5ad7285b3532e9d9b0ded7e206798834c9ade3a2ac3f1d16e0fdd43346f2bc7852c541130e935cbb20f9c1239a53118d1239 +SHA512 (cups-filters-2.0b3.tar.gz) = a3667a05bcef3321b5901e08e6ff34a1f5366d5f2cf40a6767f7f5a66414baa724d82b36e58a2ea044a7b600af5798bdb265e012b8c86311318d052dd8fc6e8a From 7b818ff3e940d64ead42b09f98681dbd071b806f Mon Sep 17 00:00:00 2001 From: pdancak <pdancak@redhat.com> Date: Thu, 23 Feb 2023 14:08:20 +0100 Subject: [PATCH 153/197] Adding fmf plan to discover tests --- .fmf/version | 1 + plans/all.fmf | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 .fmf/version create mode 100644 plans/all.fmf diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/all.fmf b/plans/all.fmf new file mode 100644 index 0000000..1326c8f --- /dev/null +++ b/plans/all.fmf @@ -0,0 +1,6 @@ +summary: Test plan with all Fedora tests +discover: + how: fmf + url: https://src.fedoraproject.org/tests/cups-filters.git +execute: + how: tmt From ba20eaa5fa4bb7414abb3ba910a51b4a447815ad Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 1 Mar 2023 16:49:49 +0100 Subject: [PATCH 154/197] use epoch to ensure clean upgrade path, because I didn't read FPG carefully --- cups-filters.spec | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index c35aedc..c41f9fd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -9,11 +9,13 @@ # we build CUPS also with relro %global _hardened_build 1 +%global upstream_version 2.0b3 Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters -Version: 2.0b3 -Release: 1%{?dist} +Epoch: 1 +Version: 2.0~b3 +Release: 2%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -21,7 +23,7 @@ Release: 1%{?dist} License: Apache-2.0 WITH LLVM-exception URL: https://github.com/OpenPrinting/cups-filters -Source0: %{URL}/archive/%{version}/%{name}-%{version}.tar.gz +Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version}.tar.gz # Patches @@ -83,7 +85,7 @@ workflow introduced by OpenPrinting. %prep -%autosetup -S git +%autosetup -n %{name}-%{upstream_version} -S git %build # work-around Rpath @@ -178,6 +180,9 @@ make check %changelog +* Wed Mar 01 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~b3-2 +- use epoch to ensure clean upgrade path, because I didn't read FPG carefully + * Mon Feb 20 2023 Zdenek Dohnal <zdohnal@redhat.com> - 2.0b3-1 - 2170538 - rebase to 2.0b3 From 6ac942088c47bcc46398694a33115b1b40343a40 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 13 Apr 2023 13:25:13 +0200 Subject: [PATCH 155/197] Add FMF files --- ci.fmf | 1 + gating.yaml | 28 ++++++++++++++++++++++++++++ plans/all.fmf | 6 ------ plans/public.fmf | 6 ++++++ plans/tier1-internal.fmf | 12 ++++++++++++ 5 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 ci.fmf create mode 100644 gating.yaml delete mode 100644 plans/all.fmf create mode 100644 plans/public.fmf create mode 100644 plans/tier1-internal.fmf diff --git a/ci.fmf b/ci.fmf new file mode 100644 index 0000000..c5aa0e0 --- /dev/null +++ b/ci.fmf @@ -0,0 +1 @@ +resultsdb-testcase: separate diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..daad873 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,28 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} + +#Rawhide +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} + +#gating rhel +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tedude.validation} + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/public.functional} diff --git a/plans/all.fmf b/plans/all.fmf deleted file mode 100644 index 1326c8f..0000000 --- a/plans/all.fmf +++ /dev/null @@ -1,6 +0,0 @@ -summary: Test plan with all Fedora tests -discover: - how: fmf - url: https://src.fedoraproject.org/tests/cups-filters.git -execute: - how: tmt diff --git a/plans/public.fmf b/plans/public.fmf new file mode 100644 index 0000000..99e363b --- /dev/null +++ b/plans/public.fmf @@ -0,0 +1,6 @@ +summary: Test plan that runs all tests from cups tests repo. +discover: + how: fmf + url: https://src.fedoraproject.org/tests/cups-filters.git +execute: + how: tmt diff --git a/plans/tier1-internal.fmf b/plans/tier1-internal.fmf new file mode 100644 index 0000000..9cdcdef --- /dev/null +++ b/plans/tier1-internal.fmf @@ -0,0 +1,12 @@ +summary: CI plan, picks internal Tier1 tests, runs in beakerlib. +discover: + - name: rhel + how: fmf + filter: 'tier: 1' + url: git://pkgs.devel.redhat.com/tests/cups-filters +execute: + how: tmt +adjust: + enabled: false + when: distro == centos-stream or distro == fedora + because: They don't have access to internal repos. From ad798b5ac0ccc135de1f3dd13a19efc663093267 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 14 Apr 2023 08:35:24 +0200 Subject: [PATCH 156/197] Remove baseos-ci tier1 gating --- gating.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/gating.yaml b/gating.yaml index daad873..d4bbffa 100644 --- a/gating.yaml +++ b/gating.yaml @@ -21,7 +21,6 @@ product_versions: - rhel-* decision_context: osci_compose_gate rules: - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tedude.validation} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} From 91d4f55012ebc1f71c2e870c8a8930bae62e479c Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 14 Apr 2023 09:06:55 +0200 Subject: [PATCH 157/197] Revert "Remove baseos-ci tier1 gating" This reverts commit ad798b5ac0ccc135de1f3dd13a19efc663093267. --- gating.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/gating.yaml b/gating.yaml index d4bbffa..daad873 100644 --- a/gating.yaml +++ b/gating.yaml @@ -21,6 +21,7 @@ product_versions: - rhel-* decision_context: osci_compose_gate rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tedude.validation} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} From 177ffd57f42a26af97765336232a1b938dd1e38b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 27 Apr 2023 14:44:17 +0200 Subject: [PATCH 158/197] 2.0rc1 --- .gitignore | 1 + 0001-Coverity-fixes.patch | 146 --------------------------- 0001-configure.ac-C-not-needed.patch | 56 ---------- cups-filters.spec | 13 ++- sources | 2 +- 5 files changed, 8 insertions(+), 210 deletions(-) delete mode 100644 0001-Coverity-fixes.patch delete mode 100644 0001-configure.ac-C-not-needed.patch diff --git a/.gitignore b/.gitignore index c141a01..b326ea6 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,4 @@ /cups-filters-1.28.15.tar.xz /cups-filters-1.28.16.tar.xz /cups-filters-2.0b3.tar.gz +/cups-filters-2.0rc1.tar.gz diff --git a/0001-Coverity-fixes.patch b/0001-Coverity-fixes.patch deleted file mode 100644 index c51e4fb..0000000 --- a/0001-Coverity-fixes.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 9ca26d04f170626a66a23cde3eac29dac7e89260 Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Thu, 16 Feb 2023 15:49:10 +0100 -Subject: [PATCH] Coverity fixes 2 - ---- - filter/foomatic-rip/foomaticrip.c | 4 +++- - filter/foomatic-rip/options.c | 7 ++----- - filter/foomatic-rip/postscript.c | 11 +++++++---- - filter/rastertoescpx.c | 3 +++ - utils/driverless.c | 3 ++- - 5 files changed, 17 insertions(+), 11 deletions(-) - -diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c -index b6abe4d33..036d6138b 100644 ---- a/filter/foomatic-rip/foomaticrip.c -+++ b/filter/foomatic-rip/foomaticrip.c -@@ -639,7 +639,7 @@ int - print_file(const char *filename, - int convert) - { -- FILE *file; -+ FILE *file = NULL; - char buf[8192]; - char tmpfilename[PATH_MAX] = ""; - int type; -@@ -664,6 +664,8 @@ print_file(const char *filename, - n = fread_or_die(buf, 1, sizeof(buf) - 1, file); - if (!n) { - _log("Input is empty, outputting empty file.\n"); -+ if (strcasecmp(filename, "<STDIN>")) -+ fclose(file); - return (1); - } - buf[n] = '\0'; -diff --git a/filter/foomatic-rip/options.c b/filter/foomatic-rip/options.c -index ae5bac2ed..bad833bc1 100644 ---- a/filter/foomatic-rip/options.c -+++ b/filter/foomatic-rip/options.c -@@ -1255,8 +1255,6 @@ option_has_choice(option_t *opt, - const char * - option_text(option_t *opt) - { -- if (isempty(opt->text)) -- return (opt->text); - return (opt->text); - } - -@@ -2263,9 +2261,8 @@ ppd_supports_pdf() - // line - if (startswith(cmd, "gs")) - { -- strncpy(cmd_pdf, cmd, 4096); -- if (strlen(cmd) > 4095) -- cmd_pdf[4095] = '\0'; -+ strncpy(cmd_pdf, cmd, 4095); -+ cmd_pdf[4095] = '\0'; - return (1); - } - -diff --git a/filter/foomatic-rip/postscript.c b/filter/foomatic-rip/postscript.c -index b09c5b8ff..e6fbd2ac0 100644 ---- a/filter/foomatic-rip/postscript.c -+++ b/filter/foomatic-rip/postscript.c -@@ -178,17 +178,14 @@ print_ps(FILE *file, - const char *filename) - { - stream_t stream; -- char gscommand[65536]; - int pagefound = 0; - FILE *in, *out; - pid_t pid; -- char buf[4096]; - struct pollfd pfd; - size_t bytes, bytes_sent; - char *pos; - int pres; -- dstr_t *line = create_dstr(); -- dstr_t *data_read = create_dstr(); -+ dstr_t *line = NULL, *data_read = NULL; - - - // Define input data stream for reading -@@ -228,6 +225,11 @@ print_ps(FILE *file, - // lines, we only need the boolean answer whether there are pages or - // not - // -+ -+ char buf[4096]; -+ char gscommand[65536]; -+ line = create_dstr(); -+ data_read = create_dstr(); - - snprintf(gscommand, 65536, "%s -q -dNOPAUSE -dBATCH -sDEVICE=bbox -dDEVICEWIDTHPOINTS=1 -dDEVICEHEIGHTPOINTS=1 -_ 2>&1", - CUPS_GHOSTSCRIPT); -@@ -313,6 +315,7 @@ print_ps(FILE *file, - _log("No pages left, outputting empty file.\n"); - - free_dstr(data_read); -+ free_dstr(line); - } - - return (1); -diff --git a/filter/rastertoescpx.c b/filter/rastertoescpx.c -index ccd599ea5..f060db0b3 100644 ---- a/filter/rastertoescpx.c -+++ b/filter/rastertoescpx.c -@@ -335,6 +335,9 @@ StartPage(ppd_file_t *ppd, // I - PPD file - DitherLuts[6] = ppdLutLoad(ppd, colormodel, header->MediaType, - resolution, "LightBlack", logfunc, ld); - break; -+ default : // ERROR -+ fputs("ERROR: Unexpected number of channels\n", stderr); -+ exit(1); - } - - for (plane = 0; plane < PrinterPlanes; plane ++) -diff --git a/utils/driverless.c b/utils/driverless.c -index 8af843333..7c67cbe19 100644 ---- a/utils/driverless.c -+++ b/utils/driverless.c -@@ -495,19 +495,20 @@ list_printers (int mode, int reg_type_no, int isFax) - if (fp) { - while ((bytes = cupsFileGetLine(fp, buffer, sizeof(buffer))) > 0 || - (bytes < 0 && (errno == EAGAIN || errno == EINTR))) { -- ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); - ptr = buffer; - while (ptr && !isalnum(*ptr & 255)) ptr ++; - if ((!strncasecmp(ptr, "ipps", 4) && ptr[4] == '\t')) { - ptr += 4; - *ptr = '\0'; - ptr ++; -+ ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); - snprintf(ippfind_output, MAX_OUTPUT_LEN, "%s", ptr); - cupsArrayAdd(service_uri_list_ipps, ippfind_output); - } else if ((!strncasecmp(ptr, "ipp", 3) && ptr[3] == '\t')) { - ptr += 3; - *ptr = '\0'; - ptr ++; -+ ippfind_output = (char *)malloc(MAX_OUTPUT_LEN*(sizeof(char))); - snprintf(ippfind_output, MAX_OUTPUT_LEN, "%s", ptr); - cupsArrayAdd(service_uri_list_ipp, ippfind_output); - } else --- -2.39.2 - diff --git a/0001-configure.ac-C-not-needed.patch b/0001-configure.ac-C-not-needed.patch deleted file mode 100644 index c955a46..0000000 --- a/0001-configure.ac-C-not-needed.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 6872a5bf03a8001169af2348cb97de9557eee4e7 Mon Sep 17 00:00:00 2001 -From: Zdenek Dohnal <zdohnal@redhat.com> -Date: Thu, 2 Feb 2023 16:42:28 +0100 -Subject: [PATCH] configure.ac: C++ not needed - ---- - INSTALL | 7 +++---- - configure.ac | 5 +---- - 2 files changed, 4 insertions(+), 8 deletions(-) - -diff --git a/INSTALL b/INSTALL -index dd377fe54..f836bfa61 100644 ---- a/INSTALL -+++ b/INSTALL -@@ -16,10 +16,9 @@ found in "CHANGES.md". - - BEFORE YOU BEGIN - -- You'll need ANSI-compliant C and C++ compilers, plus a make program and -- POSIX-compliant shell (/bin/sh). The GNU compiler tools and Bash work well -- and we have tested the current CUPS code against several versions of GCC -- with excellent results. -+ You'll need ANSI-compliant C, plus a make program and POSIX-compliant shell -+ (/bin/sh). The GNU compiler tools and Bash work well and we have tested -+ the current CUPS code against several versions of GCC with excellent results. - - The Makefiles used by the project should work with most versions of make. - We've tested them with GNU make as well as the make programs shipped by -diff --git a/configure.ac b/configure.ac -index a3606c30f..affe7008d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -19,7 +19,7 @@ m4_include([m4/ax_compare_version.m4]) - m4_include([m4/basic-directories.m4]) - AM_INIT_AUTOMAKE([1.11 gnu dist-xz dist-bzip2 subdir-objects foreign]) - AM_SILENT_RULES([yes]) --AC_LANG([C++]) -+AC_LANG([C]) - AC_CONFIG_HEADERS([config.h]) - # Extra defines for the config.h - AH_BOTTOM([ -@@ -50,11 +50,8 @@ AH_BOTTOM([ - # Find required base packages - # =========================== - AC_PROG_CC --AC_PROG_CXX --AX_CXX_COMPILE_STDCXX([11],[noext],[mandatory]) - AM_PROG_CC_C_O - AM_ICONV --AC_PROG_CPP - AC_PROG_INSTALL - AC_PROG_LN_S - AS_LN_SRF_PREPARE --- -2.39.1 - diff --git a/cups-filters.spec b/cups-filters.spec index c41f9fd..e998aeb 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -9,13 +9,13 @@ # we build CUPS also with relro %global _hardened_build 1 -%global upstream_version 2.0b3 +%global upstream_version 2.0rc1 Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 -Version: 2.0~b3 -Release: 2%{?dist} +Version: 2.0~rc1 +Release: 1%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -27,10 +27,6 @@ Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version # Patches -# https://github.com/OpenPrinting/cups-filters/pull/504 -Patch0001: 0001-configure.ac-C-not-needed.patch -# https://github.com/OpenPrinting/cups-filters/pull/510 -Patch0002: 0001-Coverity-fixes.patch # autogen.sh @@ -180,6 +176,9 @@ make check %changelog +* Thu Apr 27 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc1-1 +- 2.0rc1 + * Wed Mar 01 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~b3-2 - use epoch to ensure clean upgrade path, because I didn't read FPG carefully diff --git a/sources b/sources index 13c8471..d3abd65 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-2.0b3.tar.gz) = a3667a05bcef3321b5901e08e6ff34a1f5366d5f2cf40a6767f7f5a66414baa724d82b36e58a2ea044a7b600af5798bdb265e012b8c86311318d052dd8fc6e8a +SHA512 (cups-filters-2.0rc1.tar.gz) = e42c0f6d77ccd9269f238876792f8c7695c025e0e717b16c7b32d5884b1aab5acc6eea38a9002f88ee48c5e9c13fdc2f1f6cac71e325e95461fbd44661661172 From d3304142ee3c9c6e21fd05f98e62d4f9fbbcdefa Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 17 May 2023 15:53:15 +0200 Subject: [PATCH 159/197] 2207970 - CVE-2023-24805 cups-filters: remote code execution in cups-filters, beh CUPS backend --- ...ull-request-from-GHSA-gpxc-v2m8-fr3x.patch | 215 ++++++++++++++++++ cups-filters.spec | 6 +- 2 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch diff --git a/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch b/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch new file mode 100644 index 0000000..7d42aad --- /dev/null +++ b/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch @@ -0,0 +1,215 @@ +From 8f274035756c04efeb77eb654e9d4c4447287d65 Mon Sep 17 00:00:00 2001 +From: Till Kamppeter <till.kamppeter@gmail.com> +Date: Wed, 17 May 2023 11:12:37 +0200 +Subject: [PATCH] Merge pull request from GHSA-gpxc-v2m8-fr3x + +* beh backend: Use execv() instead of system() - CVE-2023-24805 + +With execv() command line arguments are passed as separate strings and +not the full command line in a single string. This prevents arbitrary +command execution by escaping the quoting of the arguments in a job +with forged job title. + +* beh backend: Extra checks against odd/forged input - CVE-2023-24805 + +- Do not allow '/' in the scheme of the URI (= backend executable + name), to assure that only backends inside /usr/lib/cups/backend/ + are used. + +- Pre-define scheme buffer to empty string, to be defined for case of + uri being NULL. + +- URI must have ':', to split off scheme, otherwise error. + +- Check return value of snprintf() to create call path for backend, to + error out on truncation of a too long scheme or on complete failure + due to a completely odd scheme. + +* beh backend: Further improvements - CVE-2023-24805 + +- Use strncat() instead of strncpy() for getting scheme from URI, the latter + does not require setting terminating zero byte in case of truncation. + +- Also exclude "." or ".." as scheme, as directories are not valid CUPS + backends. + +- Do not use fprintf() in sigterm_handler(), to not interfere with a + fprintf() which could be running in the main process when + sigterm_handler() is triggered. + +- Use "static volatile int" for global variable job_canceled. +--- + backend/beh.c | 109 ++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 84 insertions(+), 25 deletions(-) + +diff --git a/backend/beh.c b/backend/beh.c +index 7e588c2e3..121e64905 100644 +--- a/backend/beh.c ++++ b/backend/beh.c +@@ -26,13 +26,14 @@ + #include <signal.h> + #include <string.h> + #include <errno.h> ++#include <sys/wait.h> + + + // + // Local globals... + // + +-static int job_canceled = 0; // Set to 1 on SIGTERM ++static volatile int job_canceled = 0; // Set to 1 on SIGTERM + + + // +@@ -237,21 +238,44 @@ call_backend(char *uri, // I - URI of final destination + char *filename) // I - File name of input data + { + const char *cups_serverbin; // Location of programs ++ char *backend_argv[8]; // Arguments for called CUPS backend + char scheme[1024], // Scheme from URI + *ptr, // Pointer into scheme +- cmdline[65536]; // Backend command line +- int retval; ++ backend_path[2048]; // Backend path ++ int pid, ++ wait_pid, ++ wait_status, ++ retval = 0; ++ int bytes; ++ + + // + // Build the backend command line... + // + +- strncpy(scheme, uri, sizeof(scheme) - 1); +- if (strlen(uri) > 1023) +- scheme[1023] = '\0'; ++ scheme[0] = '\0'; ++ strncat(scheme, uri, sizeof(scheme) - 1); + if ((ptr = strchr(scheme, ':')) != NULL) + *ptr = '\0'; +- ++ else ++ { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, no colon (':') to mark end of scheme part.\n"); ++ exit (CUPS_BACKEND_FAILED); ++ } ++ if (strchr(scheme, '/')) ++ { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, scheme contains a slash ('/').\n"); ++ exit (CUPS_BACKEND_FAILED); ++ } ++ if (!strcmp(scheme, ".") || !strcmp(scheme, "..")) ++ { ++ fprintf(stderr, ++ "ERROR: beh: Invalid URI, scheme (\"%s\") is a directory.\n", ++ scheme); ++ exit (CUPS_BACKEND_FAILED); ++ } + if ((cups_serverbin = getenv("CUPS_SERVERBIN")) == NULL) + cups_serverbin = CUPS_SERVERBIN; + +@@ -261,16 +285,25 @@ call_backend(char *uri, // I - URI of final destination + "ERROR: beh: Direct output into a file not supported.\n"); + exit (CUPS_BACKEND_FAILED); + } +- else +- snprintf(cmdline, sizeof(cmdline), +- "%s/backend/%s '%s' '%s' '%s' '%s' '%s' %s", +- cups_serverbin, scheme, argv[1], argv[2], argv[3], +- // Apply number of copies only if beh was called with a +- // file name and not with the print data in stdin, as +- // backends should handle copies only if they are called +- // with a file name +- (argc == 6 ? "1" : argv[4]), +- argv[5], filename); ++ ++ backend_argv[0] = uri; ++ backend_argv[1] = argv[1]; ++ backend_argv[2] = argv[2]; ++ backend_argv[3] = argv[3]; ++ backend_argv[4] = (argc == 6 ? "1" : argv[4]); ++ backend_argv[5] = argv[5]; ++ backend_argv[6] = filename; ++ backend_argv[7] = NULL; ++ ++ bytes = snprintf(backend_path, sizeof(backend_path), ++ "%s/backend/%s", cups_serverbin, scheme); ++ if (bytes < 0 || bytes >= sizeof(backend_path)) ++ { ++ fprintf(stderr, ++ "ERROR: beh: Invalid scheme (\"%s\"), could not determing backend path.\n", ++ scheme); ++ exit (CUPS_BACKEND_FAILED); ++ } + + // + // Overwrite the device URI and run the actual backend... +@@ -279,17 +312,41 @@ call_backend(char *uri, // I - URI of final destination + setenv("DEVICE_URI", uri, 1); + + fprintf(stderr, +- "DEBUG: beh: Executing backend command line \"%s\"...\n", +- cmdline); ++ "DEBUG: beh: Executing backend command line \"%s '%s' '%s' '%s' '%s' '%s'%s%s\"...\n", ++ backend_path, backend_argv[1], backend_argv[2], backend_argv[3], ++ backend_argv[4], backend_argv[5], ++ (backend_argv[6] && backend_argv[6][0] ? " " : ""), ++ (backend_argv[6] && backend_argv[6][0] ? backend_argv[6] : "")); + fprintf(stderr, + "DEBUG: beh: Using device URI: %s\n", + uri); + +- retval = system(cmdline) >> 8; ++ if ((pid = fork()) == 0) ++ { ++ retval = execv(backend_path, backend_argv); + +- if (retval == -1) +- fprintf(stderr, "ERROR: Unable to execute backend command line: %s\n", +- strerror(errno)); ++ if (retval == -1) ++ fprintf(stderr, "ERROR: Unable to execute backend: %s\n", ++ strerror(errno)); ++ exit (CUPS_BACKEND_FAILED); ++ } ++ else if (pid < 0) ++ { ++ fprintf(stderr, "ERROR: Unable to fork for backend\n"); ++ return (CUPS_BACKEND_FAILED); ++ } ++ ++ while ((wait_pid = wait(&wait_status)) < 0 && errno == EINTR); ++ ++ if (wait_pid >= 0 && wait_status) ++ { ++ if (WIFEXITED(wait_status)) ++ retval = WEXITSTATUS(wait_status); ++ else if (WTERMSIG(wait_status) != SIGTERM) ++ retval = WTERMSIG(wait_status); ++ else ++ retval = 0; ++ } + + return (retval); + } +@@ -304,8 +361,10 @@ sigterm_handler(int sig) // I - Signal number (unused) + { + (void)sig; + +- fprintf(stderr, +- "DEBUG: beh: Job canceled.\n"); ++ const char * const msg = "DEBUG: beh: Job canceled.\n"; ++ // The if() is to eliminate the return value and silence the warning ++ // about an unused return value. ++ if (write(2, msg, strlen(msg))); + + if (job_canceled) + _exit(CUPS_BACKEND_OK); +-- +2.40.1 + diff --git a/cups-filters.spec b/cups-filters.spec index e998aeb..7358fde 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -15,7 +15,7 @@ Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0~rc1 -Release: 1%{?dist} +Release: 2%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -27,6 +27,7 @@ Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version # Patches +Patch0001: 0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch # autogen.sh @@ -176,6 +177,9 @@ make check %changelog +* Wed May 17 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc1-2 +- 2207970 - CVE-2023-24805 cups-filters: remote code execution in cups-filters, beh CUPS backend + * Thu Apr 27 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc1-1 - 2.0rc1 From 2b31ce337d3084e21a2402923f051ea96814f45a Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 28 Jun 2023 17:16:14 +0200 Subject: [PATCH 160/197] 2.0rc2 --- .gitignore | 1 + ...ull-request-from-GHSA-gpxc-v2m8-fr3x.patch | 215 ------------------ cups-filters.spec | 10 +- sources | 2 +- 4 files changed, 8 insertions(+), 220 deletions(-) delete mode 100644 0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch diff --git a/.gitignore b/.gitignore index b326ea6..a897302 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,4 @@ /cups-filters-1.28.16.tar.xz /cups-filters-2.0b3.tar.gz /cups-filters-2.0rc1.tar.gz +/cups-filters-2.0rc2.tar.gz diff --git a/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch b/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch deleted file mode 100644 index 7d42aad..0000000 --- a/0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch +++ /dev/null @@ -1,215 +0,0 @@ -From 8f274035756c04efeb77eb654e9d4c4447287d65 Mon Sep 17 00:00:00 2001 -From: Till Kamppeter <till.kamppeter@gmail.com> -Date: Wed, 17 May 2023 11:12:37 +0200 -Subject: [PATCH] Merge pull request from GHSA-gpxc-v2m8-fr3x - -* beh backend: Use execv() instead of system() - CVE-2023-24805 - -With execv() command line arguments are passed as separate strings and -not the full command line in a single string. This prevents arbitrary -command execution by escaping the quoting of the arguments in a job -with forged job title. - -* beh backend: Extra checks against odd/forged input - CVE-2023-24805 - -- Do not allow '/' in the scheme of the URI (= backend executable - name), to assure that only backends inside /usr/lib/cups/backend/ - are used. - -- Pre-define scheme buffer to empty string, to be defined for case of - uri being NULL. - -- URI must have ':', to split off scheme, otherwise error. - -- Check return value of snprintf() to create call path for backend, to - error out on truncation of a too long scheme or on complete failure - due to a completely odd scheme. - -* beh backend: Further improvements - CVE-2023-24805 - -- Use strncat() instead of strncpy() for getting scheme from URI, the latter - does not require setting terminating zero byte in case of truncation. - -- Also exclude "." or ".." as scheme, as directories are not valid CUPS - backends. - -- Do not use fprintf() in sigterm_handler(), to not interfere with a - fprintf() which could be running in the main process when - sigterm_handler() is triggered. - -- Use "static volatile int" for global variable job_canceled. ---- - backend/beh.c | 109 ++++++++++++++++++++++++++++++++++++++------------ - 1 file changed, 84 insertions(+), 25 deletions(-) - -diff --git a/backend/beh.c b/backend/beh.c -index 7e588c2e3..121e64905 100644 ---- a/backend/beh.c -+++ b/backend/beh.c -@@ -26,13 +26,14 @@ - #include <signal.h> - #include <string.h> - #include <errno.h> -+#include <sys/wait.h> - - - // - // Local globals... - // - --static int job_canceled = 0; // Set to 1 on SIGTERM -+static volatile int job_canceled = 0; // Set to 1 on SIGTERM - - - // -@@ -237,21 +238,44 @@ call_backend(char *uri, // I - URI of final destination - char *filename) // I - File name of input data - { - const char *cups_serverbin; // Location of programs -+ char *backend_argv[8]; // Arguments for called CUPS backend - char scheme[1024], // Scheme from URI - *ptr, // Pointer into scheme -- cmdline[65536]; // Backend command line -- int retval; -+ backend_path[2048]; // Backend path -+ int pid, -+ wait_pid, -+ wait_status, -+ retval = 0; -+ int bytes; -+ - - // - // Build the backend command line... - // - -- strncpy(scheme, uri, sizeof(scheme) - 1); -- if (strlen(uri) > 1023) -- scheme[1023] = '\0'; -+ scheme[0] = '\0'; -+ strncat(scheme, uri, sizeof(scheme) - 1); - if ((ptr = strchr(scheme, ':')) != NULL) - *ptr = '\0'; -- -+ else -+ { -+ fprintf(stderr, -+ "ERROR: beh: Invalid URI, no colon (':') to mark end of scheme part.\n"); -+ exit (CUPS_BACKEND_FAILED); -+ } -+ if (strchr(scheme, '/')) -+ { -+ fprintf(stderr, -+ "ERROR: beh: Invalid URI, scheme contains a slash ('/').\n"); -+ exit (CUPS_BACKEND_FAILED); -+ } -+ if (!strcmp(scheme, ".") || !strcmp(scheme, "..")) -+ { -+ fprintf(stderr, -+ "ERROR: beh: Invalid URI, scheme (\"%s\") is a directory.\n", -+ scheme); -+ exit (CUPS_BACKEND_FAILED); -+ } - if ((cups_serverbin = getenv("CUPS_SERVERBIN")) == NULL) - cups_serverbin = CUPS_SERVERBIN; - -@@ -261,16 +285,25 @@ call_backend(char *uri, // I - URI of final destination - "ERROR: beh: Direct output into a file not supported.\n"); - exit (CUPS_BACKEND_FAILED); - } -- else -- snprintf(cmdline, sizeof(cmdline), -- "%s/backend/%s '%s' '%s' '%s' '%s' '%s' %s", -- cups_serverbin, scheme, argv[1], argv[2], argv[3], -- // Apply number of copies only if beh was called with a -- // file name and not with the print data in stdin, as -- // backends should handle copies only if they are called -- // with a file name -- (argc == 6 ? "1" : argv[4]), -- argv[5], filename); -+ -+ backend_argv[0] = uri; -+ backend_argv[1] = argv[1]; -+ backend_argv[2] = argv[2]; -+ backend_argv[3] = argv[3]; -+ backend_argv[4] = (argc == 6 ? "1" : argv[4]); -+ backend_argv[5] = argv[5]; -+ backend_argv[6] = filename; -+ backend_argv[7] = NULL; -+ -+ bytes = snprintf(backend_path, sizeof(backend_path), -+ "%s/backend/%s", cups_serverbin, scheme); -+ if (bytes < 0 || bytes >= sizeof(backend_path)) -+ { -+ fprintf(stderr, -+ "ERROR: beh: Invalid scheme (\"%s\"), could not determing backend path.\n", -+ scheme); -+ exit (CUPS_BACKEND_FAILED); -+ } - - // - // Overwrite the device URI and run the actual backend... -@@ -279,17 +312,41 @@ call_backend(char *uri, // I - URI of final destination - setenv("DEVICE_URI", uri, 1); - - fprintf(stderr, -- "DEBUG: beh: Executing backend command line \"%s\"...\n", -- cmdline); -+ "DEBUG: beh: Executing backend command line \"%s '%s' '%s' '%s' '%s' '%s'%s%s\"...\n", -+ backend_path, backend_argv[1], backend_argv[2], backend_argv[3], -+ backend_argv[4], backend_argv[5], -+ (backend_argv[6] && backend_argv[6][0] ? " " : ""), -+ (backend_argv[6] && backend_argv[6][0] ? backend_argv[6] : "")); - fprintf(stderr, - "DEBUG: beh: Using device URI: %s\n", - uri); - -- retval = system(cmdline) >> 8; -+ if ((pid = fork()) == 0) -+ { -+ retval = execv(backend_path, backend_argv); - -- if (retval == -1) -- fprintf(stderr, "ERROR: Unable to execute backend command line: %s\n", -- strerror(errno)); -+ if (retval == -1) -+ fprintf(stderr, "ERROR: Unable to execute backend: %s\n", -+ strerror(errno)); -+ exit (CUPS_BACKEND_FAILED); -+ } -+ else if (pid < 0) -+ { -+ fprintf(stderr, "ERROR: Unable to fork for backend\n"); -+ return (CUPS_BACKEND_FAILED); -+ } -+ -+ while ((wait_pid = wait(&wait_status)) < 0 && errno == EINTR); -+ -+ if (wait_pid >= 0 && wait_status) -+ { -+ if (WIFEXITED(wait_status)) -+ retval = WEXITSTATUS(wait_status); -+ else if (WTERMSIG(wait_status) != SIGTERM) -+ retval = WTERMSIG(wait_status); -+ else -+ retval = 0; -+ } - - return (retval); - } -@@ -304,8 +361,10 @@ sigterm_handler(int sig) // I - Signal number (unused) - { - (void)sig; - -- fprintf(stderr, -- "DEBUG: beh: Job canceled.\n"); -+ const char * const msg = "DEBUG: beh: Job canceled.\n"; -+ // The if() is to eliminate the return value and silence the warning -+ // about an unused return value. -+ if (write(2, msg, strlen(msg))); - - if (job_canceled) - _exit(CUPS_BACKEND_OK); --- -2.40.1 - diff --git a/cups-filters.spec b/cups-filters.spec index 7358fde..324e56c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -9,13 +9,13 @@ # we build CUPS also with relro %global _hardened_build 1 -%global upstream_version 2.0rc1 +%global upstream_version 2.0rc2 Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 -Version: 2.0~rc1 -Release: 2%{?dist} +Version: 2.0~rc2 +Release: 1%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -27,7 +27,6 @@ Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version # Patches -Patch0001: 0001-Merge-pull-request-from-GHSA-gpxc-v2m8-fr3x.patch # autogen.sh @@ -177,6 +176,9 @@ make check %changelog +* Wed Jun 28 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc2-1 +- 2.0rc2 + * Wed May 17 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc1-2 - 2207970 - CVE-2023-24805 cups-filters: remote code execution in cups-filters, beh CUPS backend diff --git a/sources b/sources index d3abd65..0fccec0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-2.0rc1.tar.gz) = e42c0f6d77ccd9269f238876792f8c7695c025e0e717b16c7b32d5884b1aab5acc6eea38a9002f88ee48c5e9c13fdc2f1f6cac71e325e95461fbd44661661172 +SHA512 (cups-filters-2.0rc2.tar.gz) = 4d9a8a1333c3df729dada8a571e40ab821848aea7160c85c13cd64fec4f036d95d8888e290fc0f5b027af19211c204cf62fe0347e4e48094deeb7faee639183e From efb7d03fdcd09523b6e4edcd1e5828e6029d5e1c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 19 Jul 2023 16:47:46 +0000 Subject: [PATCH 161/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org> --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 324e56c..7bdff67 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -15,7 +15,7 @@ Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0~rc2 -Release: 1%{?dist} +Release: 2%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -176,6 +176,9 @@ make check %changelog +* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0~rc2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Wed Jun 28 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc2-1 - 2.0rc2 From 5e7f4508873232cfee3020cbcf5b2220740a9c69 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 26 Jul 2023 14:53:22 +0200 Subject: [PATCH 162/197] Clean the dangling comment --- cups-filters.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 7bdff67..5a39f9e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -114,8 +114,6 @@ rm -f %{buildroot}%{_pkgdocdir}/INSTALL # remove CHANGES-1.x.md, since it is carried by a dependency rm -f %{buildroot}%{_pkgdocdir}/CHANGES-1.x.md -# escp.h is not needed for runtime and nothing - %check make check From 45d85af8c2936202004a60c6ddc0749c91e637f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 8 Aug 2023 08:14:23 +0200 Subject: [PATCH 163/197] 2229776 - Add textonly driver back as lftocrlf driver --- cups-filters.spec | 13 ++++- lftocrlf | 124 ++++++++++++++++++++++++++++++++++++++++++++++ lftocrlf.ppd | 47 ++++++++++++++++++ 3 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 lftocrlf create mode 100644 lftocrlf.ppd diff --git a/cups-filters.spec b/cups-filters.spec index 5a39f9e..409d8bd 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -15,7 +15,7 @@ Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0~rc2 -Release: 2%{?dist} +Release: 3%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -24,6 +24,8 @@ License: Apache-2.0 WITH LLVM-exception URL: https://github.com/OpenPrinting/cups-filters Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version}.tar.gz +Source1: lftocrlf.ppd +Source2: lftocrlf # Patches @@ -99,6 +101,10 @@ workflow introduced by OpenPrinting. %install %make_install +# 2229776 - Add textonly driver back, but as lftocrlf +install -p -m 0755 %{SOURCE2} %{buildroot}%{_cups_serverbin}/filter/lftocrlf +install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.ppd + # LSB3.2 requires /usr/bin/foomatic-rip, # create it temporarily as a relative symlink # (2.0b3) try using universal filter, it should have foomatic-rip functionality @@ -142,6 +148,8 @@ make check %attr(0755,root,root) %{_cups_serverbin}/filter/imagetopdf %attr(0755,root,root) %{_cups_serverbin}/filter/imagetops %attr(0755,root,root) %{_cups_serverbin}/filter/imagetoraster +# 2229776 - Add textonly driver back, but as lftocrlf +%attr(0755,root,root) %{_cups_serverbin}/filter/lftocrlf %attr(0755,root,root) %{_cups_serverbin}/filter/pclmtoraster %attr(0755,root,root) %{_cups_serverbin}/filter/pdftopdf %attr(0755,root,root) %{_cups_serverbin}/filter/pdftops @@ -174,6 +182,9 @@ make check %changelog +* Mon Aug 07 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc2-3 +- 2229776 - Add textonly driver back as lftocrlf driver + * Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0~rc2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/lftocrlf b/lftocrlf new file mode 100644 index 0000000..ee6e54e --- /dev/null +++ b/lftocrlf @@ -0,0 +1,124 @@ +#!/bin/bash +## Copyright (C) 2003-2006 Red Hat, Inc. +## Copyright (C) 2003-2006 Tim Waugh <twaugh@redhat.com> +## Changed on 2007/05/17, Opher Shachar, LADPC Ltd. +## Added support for page-ranges option. +## Added page accounting. + +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License +## as published by the Free Software Foundation; either version 2 +## of the License, or (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +if [ $# == 0 ]; then + echo >&2 "ERROR: $0 job-id user title copies options [file]" + exit 1 +fi + +# Extract the papersize +SENDFF=`grep '^\*DefaultSendFF' "$PPD" | cut -d\ -f2` +COPIES=1 +if [ $# -ge 4 ]; then + COPIES="$4" +fi + +if [ $# -lt 6 ]; then + unset TMPFILE + trap -- 'rm -f "$TMPFILE"' EXIT + TMPFILE=$(mktemp ${TMPDIR:-/tmp}/lftocrlf.XXXXXX) + cat > "$TMPFILE" +else + TMPFILE="$6" +fi + +PR=${5#*page-ranges=} +# Do options specify page-ranges? +if [[ "$PR" != "$5" ]]; then + PR=${PR%% *} +else + #unset PR + PR=1-999999 +fi + +if [[ "$PR" ]]; then + TMPFILE2=$(mktemp ${TMPDIR:-/tmp}/lftocrlf2.XXXXXX) + pagenum=0 + EOF= + { + while [[ "$PR" ]]; do + pl=${PR%%,*} ;# take first subrange + PR=${PR#$pl};PR=${PR#,} ;# remove from range list + pu=${pl#*-} ;# extract upper and lower + pl=${pl%-*} ;# pages of subrange + # Allows interpreting 0-5,3-10 as 1-5,6-10 rejects 5-1 or 1- + (( pagenum >= pl )) && pl=$(( pagenum + 1 )) + (( pl > pu )) && continue + + # Loop reading pages until at or over lower page of subrange. + while read -d `echo -ne '\f'` -r; do + (( pagenum++ )) + (( pagenum == pl )) && break + done + # Did we reach lower page of subrange or EOF? + if (( pagenum < pl )); then + [[ ! "$REPLY" ]] && break ;# empty last page - we're done. + (( pagenum++ )) + EOF=y + fi + # Output page and report to page log + if (( pagenum == pl )); then + echo -n "${REPLY}" >>"$TMPFILE2" + # If EOF then page has no final FF + [[ ! "$EOF" ]] && echo -ne '\f' >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + fi + [[ "$EOF" ]] && break + # Is the current subrange a single page? + (( pagenum == pu )) && continue + while read -d `echo -ne '\f'` -r; do + (( pagenum++ )) + echo -ne "${REPLY}\f" >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + (( pagenum == pu )) && break + done + # Could be that we reached EOF before page boundry + if (( pagenum < pu )); then + if [[ "$REPLY" ]]; then + (( pagenum++ )) + echo -n "${REPLY}" >>"$TMPFILE2" + echo "PAGE: $pagenum $COPIES" >&2 + fi + break + fi + done + } <"$TMPFILE" +else + TMPFILE2="$TMPFILE" + pc=$(grep -co `echo -ne '\f'` "$TMPFILE2") + pc=$(( pc * $COPIES )) + echo "PAGE: $pc" >&2 +fi + +while [ "$COPIES" -gt 0 ]; do + # Just translate LF->CRLF at the moment, until the PPD has options added. + sed -e 's/$/'`echo -ne '\r'`'/g' "$TMPFILE2" + + if [ "$SENDFF" == "True" ] + then + echo -ne \\014 + fi + + COPIES=$(($COPIES - 1)) +done +# Cleanup +[[ "$TMPFILE" != "$TMPFILE2" ]] && rm -f "$TMPFILE2" +exit 0 diff --git a/lftocrlf.ppd b/lftocrlf.ppd new file mode 100644 index 0000000..db89448 --- /dev/null +++ b/lftocrlf.ppd @@ -0,0 +1,47 @@ +*PPD-Adobe: "4.3" +*% +*% Text-only printer definition +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "LFTOCRLF.PPD" +*Manufacturer: "Generic" +*Product: "(Generic)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "text/plain 0 lftocrlf" +*ModelName: "Generic LF-to-CRLF printer" +*ShortNickName: "Generic LF-to-CRLF printer" +*NickName: "Generic LF-to-CRLF printer" +*PSVersion: "(2017.000) 0" +*LanguageLevel: "2" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Plus90 +*VariablePaperSize: False +*TTRasterizer: Type42 +*DefaultImageableArea: Letter +*ImageableArea Letter/US Letter: "18 36 594 756" +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice" +*CloseUI: *PageRegion + +*OpenUI *SendFF: Boolean +*DefaultSendFF: False +*SendFF True/True: "" +*SendFF False/False: "" +*CloseUI: *SendFF From e6af6aa3383f6f9603dfd30ec8ac9788d2940ee2 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 19 Oct 2023 13:58:41 +0200 Subject: [PATCH 164/197] rebase to 2.0.0 --- .gitignore | 1 + cups-filters.spec | 13 +++++++------ sources | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index a897302..3efe9af 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,4 @@ /cups-filters-2.0b3.tar.gz /cups-filters-2.0rc1.tar.gz /cups-filters-2.0rc2.tar.gz +/cups-filters-2.0.0.tar.gz diff --git a/cups-filters.spec b/cups-filters.spec index 409d8bd..08b598b 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -9,13 +9,11 @@ # we build CUPS also with relro %global _hardened_build 1 -%global upstream_version 2.0rc2 - Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 -Version: 2.0~rc2 -Release: 3%{?dist} +Version: 2.0.0 +Release: 1%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -23,7 +21,7 @@ Release: 3%{?dist} License: Apache-2.0 WITH LLVM-exception URL: https://github.com/OpenPrinting/cups-filters -Source0: %{URL}/releases/download/%{upstream_version}/%{name}-%{upstream_version}.tar.gz +Source0: %{URL}/releases/download/%{version}/%{name}-%{version}.tar.gz Source1: lftocrlf.ppd Source2: lftocrlf @@ -83,7 +81,7 @@ workflow introduced by OpenPrinting. %prep -%autosetup -n %{name}-%{upstream_version} -S git +%autosetup -S git %build # work-around Rpath @@ -182,6 +180,9 @@ make check %changelog +* Thu Oct 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-1 +- rebase to 2.0.0 + * Mon Aug 07 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0~rc2-3 - 2229776 - Add textonly driver back as lftocrlf driver diff --git a/sources b/sources index 0fccec0..1d2e13b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-2.0rc2.tar.gz) = 4d9a8a1333c3df729dada8a571e40ab821848aea7160c85c13cd64fec4f036d95d8888e290fc0f5b027af19211c204cf62fe0347e4e48094deeb7faee639183e +SHA512 (cups-filters-2.0.0.tar.gz) = f91abaedcc34c2ae668478a3133c7559f58f33a84831f60cb9832f5a19762884685c67f63aef59ab42f69e78c1149205296d5f71c251e9f9f3c00a0f5428d979 From 8f9f9c570a208988b70a916cdbed20ee856e8201 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 19 Dec 2023 13:56:50 +0100 Subject: [PATCH 165/197] use exact foomatic-rip filter to comply with LSB --- cups-filters.spec | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 08b598b..a52f0d3 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters and backends for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 1%{?dist} +Release: 2%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -105,9 +105,10 @@ install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.p # LSB3.2 requires /usr/bin/foomatic-rip, # create it temporarily as a relative symlink -# (2.0b3) try using universal filter, it should have foomatic-rip functionality -#ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip -ln -sf %{_cups_serverbin}/filter/universal %{buildroot}%{_bindir}/foomatic-rip +# we may use symlink to universal filter, but LSB is about guaranteed compatibility set +# among distibutions, so rather have the strict foomatic-rip filter... +ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip +#ln -sf %{_cups_serverbin}/filter/universal %{buildroot}%{_bindir}/foomatic-rip # remove license files which are in %%pkgdocdir rm -f %{buildroot}%{_pkgdocdir}/{COPYING,NOTICE,LICENSE} @@ -180,6 +181,9 @@ make check %changelog +* Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-2 +- use exact foomatic-rip filter to comply with LSB + * Thu Oct 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-1 - rebase to 2.0.0 From f0c5de2a54228ebcc87ebeac9db4afc023808cbf Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 19 Dec 2023 16:14:54 +0100 Subject: [PATCH 166/197] introduce cups-filters-driverless to strip avahi dependency for filters --- cups-filters.spec | 63 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index a52f0d3..8e0acdb 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -9,11 +9,11 @@ # we build CUPS also with relro %global _hardened_build 1 -Summary: OpenPrinting CUPS filters and backends for CUPS 2.X +Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 2%{?dist} +Release: 3%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -29,6 +29,11 @@ Source2: lftocrlf # Patches +# driverless backend/driver was moved into a separate package to +# remove avahi dependency for filters +# remove once C10S is released and F40 is EOL +Conflicts: cups-filters-driverless < 2.0.0-3 + # autogen.sh BuildRequires: autoconf # autogen.sh @@ -58,6 +63,28 @@ BuildRequires: python3-cups %if %{with braille} Recommends: braille-printer-app %endif +# needs cups dirs +Requires: cups-filesystem + + +%description +Contains backends, filters, and other software that was +once part of the core CUPS distribution but is no longer maintained by +Apple Inc. In addition it contains additional filters developed +independently of Apple, especially filters for the PDF-centric printing +workflow introduced by OpenPrinting. + +%package driverless +Summary: OpenPrinting driverless backends and drivers for CUPS 2.X +License: Apache-2.0 WITH LLVM-exception + +# backends and drivers has been moved from the main package to subpackage +# to remove the avahi/mdns dependency needed for driverless +# remove after F40 is EOL and C10S is released +Conflicts: cups-filters < 2.0.0-3 + +# finding device via driverless depends on running avahi-daemon +Recommends: avahi # ippfind is used in driverless backend, not needed classic PPD based print queue Recommends: cups-ipptool # cups-browsed needs systemd-resolved or nss-mdns for resolving .local addresses of remote print queues @@ -71,14 +98,12 @@ Recommends: nss-mdns # needs cups dirs Requires: cups-filesystem - -%description -Contains backends, filters, and other software that was -once part of the core CUPS distribution but is no longer maintained by -Apple Inc. In addition it contains additional filters developed -independently of Apple, especially filters for the PDF-centric printing -workflow introduced by OpenPrinting. - +%description driverless +Contains backends and drivers for driverless implementation for cups-filters, +which makes driverless printers to be seen when listing printers nearby and gives +a specific generated driver for driverless printer in the local network. They are +tools for backward compatibility with applications which don't handle CUPS temporary +queues. %prep %autosetup -S git @@ -128,15 +153,11 @@ make check %license COPYING LICENSE NOTICE %doc AUTHORS ABOUT-NLS CHANGES.md CONTRIBUTING.md DEVELOPING.md README.md %{_bindir}/foomatic-rip -%{_bindir}/driverless -%{_bindir}/driverless-fax %attr(0744,root,root) %{_cups_serverbin}/backend/beh # all backends needs to be run only as root because of kerberos %attr(0744,root,root) %{_cups_serverbin}/backend/parallel # Serial backend needs to run as root (bug #212577#c4). %attr(0744,root,root) %{_cups_serverbin}/backend/serial -%{_cups_serverbin}/backend/driverless -%{_cups_serverbin}/backend/driverless-fax %attr(0755,root,root) %{_cups_serverbin}/filter/bannertopdf %attr(0755,root,root) %{_cups_serverbin}/filter/commandtoescpx %attr(0755,root,root) %{_cups_serverbin}/filter/commandtopclx @@ -163,8 +184,6 @@ make check %attr(0755,root,root) %{_cups_serverbin}/filter/texttops %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext %attr(0755,root,root) %{_cups_serverbin}/filter/universal -%{_cups_serverbin}/driver/driverless -%{_cups_serverbin}/driver/driverless-fax %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/mime/cupsfilters.types %{_datadir}/cups/mime/cupsfilters.convs @@ -177,10 +196,22 @@ make check %{_datadir}/ppdc/escp.h %{_datadir}/ppdc/pcl.h %{_mandir}/man1/foomatic-rip.1.gz + +%files driverless +%license COPYING LICENSE NOTICE +%{_bindir}/driverless +%{_bindir}/driverless-fax +%{_cups_serverbin}/backend/driverless +%{_cups_serverbin}/backend/driverless-fax +%{_cups_serverbin}/driver/driverless +%{_cups_serverbin}/driver/driverless-fax %{_mandir}/man1/driverless.1.gz %changelog +* Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-3 +- introduce cups-filters-driverless to strip avahi dependency for filters + * Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-2 - use exact foomatic-rip filter to comply with LSB From 7883e3153a47291e24ffe29947503ef0b36ec6f4 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 19 Dec 2023 17:04:28 +0100 Subject: [PATCH 167/197] make driverless subpackage require avahi and ipptool - they don't work without them --- cups-filters.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 8e0acdb..2e34573 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 3%{?dist} +Release: 4%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -84,9 +84,9 @@ License: Apache-2.0 WITH LLVM-exception Conflicts: cups-filters < 2.0.0-3 # finding device via driverless depends on running avahi-daemon -Recommends: avahi +Requires: avahi # ippfind is used in driverless backend, not needed classic PPD based print queue -Recommends: cups-ipptool +Requires: cups-ipptool # cups-browsed needs systemd-resolved or nss-mdns for resolving .local addresses of remote print queues # let's not require a specific package and let the user decide what he wants to use. # just recommend nss-mdns for Fedora for now to have working default, but @@ -209,6 +209,10 @@ make check %changelog +* Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-4 +- make driverless subpackage require avahi and ipptool - they don't + work without them + * Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-3 - introduce cups-filters-driverless to strip avahi dependency for filters From a5ecb63adad13958d5d0ab5019fc4e9e754d3d59 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Fri, 19 Jan 2024 16:31:18 +0000 Subject: [PATCH 168/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 2e34573..b0c23b5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 4%{?dist} +Release: 5%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -209,6 +209,9 @@ make check %changelog +* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Tue Dec 19 2023 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-4 - make driverless subpackage require avahi and ipptool - they don't work without them From 55868662046b07e7bf6232da8a98ab547275f297 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 24 Jan 2024 08:42:21 +0000 Subject: [PATCH 169/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index b0c23b5..3abe2a6 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 5%{?dist} +Release: 6%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -209,6 +209,9 @@ make check %changelog +* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From f3cae0b36d9b23975f4a58a7576183de8359f731 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 21 Mar 2024 15:23:03 +0100 Subject: [PATCH 170/197] Update gating.yaml --- gating.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/gating.yaml b/gating.yaml index daad873..674cafa 100644 --- a/gating.yaml +++ b/gating.yaml @@ -22,7 +22,6 @@ product_versions: decision_context: osci_compose_gate rules: - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tedude.validation} - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/public.functional} From 7ae4e25c3209d15b13644be5e2e95b4069fc43e7 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 15 Apr 2024 15:07:55 +0200 Subject: [PATCH 171/197] Update gating.yaml --- gating.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/gating.yaml b/gating.yaml index 674cafa..3c35f7d 100644 --- a/gating.yaml +++ b/gating.yaml @@ -21,7 +21,5 @@ product_versions: - rhel-* decision_context: osci_compose_gate rules: - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.acceptance-tier.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/public.functional} From 67255d297e20eb959259048f895d81fe52ad0d51 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 23 May 2024 13:18:48 +0200 Subject: [PATCH 172/197] plans: fix url --- plans/tier1-internal.fmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plans/tier1-internal.fmf b/plans/tier1-internal.fmf index 9cdcdef..c63f688 100644 --- a/plans/tier1-internal.fmf +++ b/plans/tier1-internal.fmf @@ -3,7 +3,7 @@ discover: - name: rhel how: fmf filter: 'tier: 1' - url: git://pkgs.devel.redhat.com/tests/cups-filters + url: https://pkgs.devel.redhat.com/git/tests/cups-filters execute: how: tmt adjust: From 8b92a1c707cb089c7aa152020d72222b9cda9dd1 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 28 May 2024 20:53:55 +0200 Subject: [PATCH 173/197] 2283295 - The directory /usr/share/ppdc/ is not in the RPM database. --- cups-filters.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 3abe2a6..b51228e 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 6%{?dist} +Release: 7%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -190,6 +190,7 @@ make check %{_datadir}/cups/mime/cupsfilters-universal-postscript.convs %{_datadir}/cups/mime/cupsfilters-universal.convs %{_datadir}/ppd/cupsfilters +%dir %{_datadir}/ppdc # escp.h and pcl.h are required during runtime, because # CUPS PPD compiler (ppdc) uses them for generating drivers # per request from cupsfilters.drv file @@ -209,6 +210,9 @@ make check %changelog +* Tue May 28 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-7 +- 2283295 - The directory /usr/share/ppdc/ is not in the RPM database. + * Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 87de6c1b71fe85dc5db3cb353ad48d11d291d52b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 17 Jul 2024 20:22:22 +0000 Subject: [PATCH 174/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index b51228e..58a0cc8 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 7%{?dist} +Release: 8%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -210,6 +210,9 @@ make check %changelog +* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue May 28 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-7 - 2283295 - The directory /usr/share/ppdc/ is not in the RPM database. From 1c4f6516ea59e8b3bebc935a67ea013df4dfe54f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 19 Jul 2024 10:24:57 +0200 Subject: [PATCH 175/197] Fix missing epoch in conflicts --- cups-filters.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 58a0cc8..da32fe4 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.0 -Release: 8%{?dist} +Release: 9%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -32,7 +32,7 @@ Source2: lftocrlf # driverless backend/driver was moved into a separate package to # remove avahi dependency for filters # remove once C10S is released and F40 is EOL -Conflicts: cups-filters-driverless < 2.0.0-3 +Conflicts: cups-filters-driverless < 1:2.0.0-3 # autogen.sh BuildRequires: autoconf @@ -81,7 +81,7 @@ License: Apache-2.0 WITH LLVM-exception # backends and drivers has been moved from the main package to subpackage # to remove the avahi/mdns dependency needed for driverless # remove after F40 is EOL and C10S is released -Conflicts: cups-filters < 2.0.0-3 +Conflicts: cups-filters < 1:2.0.0-3 # finding device via driverless depends on running avahi-daemon Requires: avahi @@ -210,6 +210,9 @@ make check %changelog +* Fri Jul 19 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-9 +- fix missing epochs in conflicts + * Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 393fd69e1d7e8fe212e325a36f4487037f6d8e40 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Thu, 15 Aug 2024 14:59:58 +0200 Subject: [PATCH 176/197] 2.0.1 --- .gitignore | 118 +--------------------------------------------- cups-filters.spec | 7 ++- sources | 2 +- 3 files changed, 7 insertions(+), 120 deletions(-) diff --git a/.gitignore b/.gitignore index 3efe9af..a7e11d4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,117 +1 @@ -/cups-filters-1.0.20.tar.xz -/cups-filters-1.0.22.tar.xz -/cups-filters-1.0.23.tar.xz -/cups-filters-1.0.24.tar.xz -/cups-filters-1.0.25.tar.xz -/cups-filters-1.0.28.tar.xz -/cups-filters-1.0.29.tar.xz -/cups-filters-1.0.30.tar.xz -/cups-filters-1.0.31.tar.xz -/cups-filters-1.0.32.tar.xz -/cups-filters-1.0.33.tar.xz -/cups-filters-1.0.34.tar.xz -/cups-filters-1.0.35.tar.xz -/cups-filters-1.0.36.tar.xz -/cups-filters-1.0.37.tar.xz -/cups-filters-1.0.38.tar.xz -/cups-filters-1.0.39.tar.xz -/cups-filters-1.0.40.tar.xz -/cups-filters-1.0.41.tar.xz -/cups-filters-1.0.42.tar.xz -/cups-filters-1.0.43.tar.xz -/cups-filters-1.0.44.tar.xz -/cups-filters-1.0.45.tar.xz -/cups-filters-1.0.46.tar.xz -/cups-filters-1.0.47.tar.xz -/cups-filters-1.0.48.tar.xz -/cups-filters-1.0.49.tar.xz -/cups-filters-1.0.50.tar.xz -/cups-filters-1.0.51.tar.xz -/cups-filters-1.0.52.tar.xz -/cups-filters-1.0.53.tar.xz -/cups-filters-1.0.54.tar.xz -/cups-filters-1.0.55.tar.xz -/cups-filters-1.0.58.tar.xz -/cups-filters-1.0.59.tar.xz -/cups-filters-1.0.60.tar.xz -/cups-filters-1.0.61.tar.xz -/cups-filters-1.0.65.tar.xz -/cups-filters-1.0.66.tar.xz -/cups-filters-1.0.67.tar.xz -/cups-filters-1.0.68.tar.xz -/cups-filters-1.0.69.tar.xz -/cups-filters-1.0.70.tar.xz -/cups-filters-1.0.71.tar.xz -/cups-filters-1.0.73.tar.xz -/cups-filters-1.0.74.tar.xz -/cups-filters-1.0.75.tar.xz -/cups-filters-1.0.76.tar.xz -/cups-filters-1.1.0.tar.xz -/cups-filters-1.2.0.tar.xz -/cups-filters-1.3.0.tar.xz -/cups-filters-1.4.0.tar.xz -/cups-filters-1.5.0.tar.xz -/cups-filters-1.6.0.tar.xz -/cups-filters-1.7.0.tar.xz -/cups-filters-1.8.0.tar.xz -/cups-filters-1.8.1.tar.xz -/cups-filters-1.8.2.tar.xz -/cups-filters-1.8.3.tar.xz -/cups-filters-1.9.0.tar.xz -/cups-filters-1.10.0.tar.xz -/cups-filters-1.11.2.tar.xz -/cups-filters-1.11.3.tar.xz -/cups-filters-1.11.4.tar.xz -/cups-filters-1.11.5.tar.xz -/cups-filters-1.11.6.tar.xz -/cups-filters-1.12.0.tar.xz -/cups-filters-1.13.0.tar.xz -/cups-filters-1.13.1.tar.xz -/cups-filters-1.13.2.tar.xz -/cups-filters-1.13.3.tar.xz -/cups-filters-1.13.4.tar.xz -/cups-filters-1.13.5.tar.xz -/cups-filters-1.14.0.tar.xz -/cups-filters-1.14.1.tar.xz -/cups-filters-1.16.0.tar.xz -/cups-filters-1.16.1.tar.xz -/cups-filters-1.16.3.tar.xz -/cups-filters-1.17.2.tar.xz -/cups-filters-1.17.7.tar.xz -/cups-filters-1.17.8.tar.xz -/cups-filters-1.17.9.tar.xz -/cups-filters-1.19.0.tar.xz -/cups-filters-1.20.0.tar.xz -/cups-filters-1.20.1.tar.xz -/cups-filters-1.20.2.tar.xz -/cups-filters-1.20.3.tar.xz -/cups-filters-1.21.2.tar.xz -/cups-filters-1.21.5.tar.xz -/cups-filters-1.21.6.tar.xz -/cups-filters-1.22.0.tar.xz -/cups-filters-1.22.3.tar.xz -/cups-filters-1.22.5.tar.xz -/cups-filters-1.26.0.tar.xz -/cups-filters-1.27.0.tar.xz -/cups-filters-1.27.1.tar.xz -/cups-filters-1.27.2.tar.xz -/cups-filters-1.27.3.tar.xz -/cups-filters-1.27.4.tar.xz -/cups-filters-1.27.5.tar.xz -/cups-filters-1.28.1.tar.xz -/cups-filters-1.28.2.tar.xz -/cups-filters-1.28.5.tar.xz -/cups-filters-1.28.6.tar.xz -/cups-filters-1.28.7.tar.xz -/cups-filters-1.28.8.tar.xz -/cups-filters-1.28.9.tar.xz -/cups-filters-1.28.10.tar.xz -/cups-filters-1.28.11.tar.xz -/cups-filters-1.28.12.tar.xz -/cups-filters-1.28.14.tar.xz -/cups-filters-1.28.15.tar.xz -/cups-filters-1.28.16.tar.xz -/cups-filters-2.0b3.tar.gz -/cups-filters-2.0rc1.tar.gz -/cups-filters-2.0rc2.tar.gz -/cups-filters-2.0.0.tar.gz +/cups-filters-*.tar.gz diff --git a/cups-filters.spec b/cups-filters.spec index da32fe4..4798ff5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -12,8 +12,8 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 -Version: 2.0.0 -Release: 9%{?dist} +Version: 2.0.1 +Release: 1%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -210,6 +210,9 @@ make check %changelog +* Thu Aug 15 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-1 +- 2.0.1 + * Fri Jul 19 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.0-9 - fix missing epochs in conflicts diff --git a/sources b/sources index 1d2e13b..c8fefe9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cups-filters-2.0.0.tar.gz) = f91abaedcc34c2ae668478a3133c7559f58f33a84831f60cb9832f5a19762884685c67f63aef59ab42f69e78c1149205296d5f71c251e9f9f3c00a0f5428d979 +SHA512 (cups-filters-2.0.1.tar.gz) = b5d7b8f5a89a6a6bba0e861dd3c3263195be75996d22129d123f325f6bff74fbabf22f2ee2d953908ffb8294d825af5568af6695896c76ef4082ae98cd19c42c From ccbeab52d9c274fce46fa91a31d3bec509e2d1de Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Thu, 16 Jan 2025 15:03:58 +0000 Subject: [PATCH 177/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 4798ff5..340151a 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -13,7 +13,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 1%{?dist} +Release: 2%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -210,6 +210,9 @@ make check %changelog +* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Aug 15 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-1 - 2.0.1 From fdab9d0e8ff57fbc3601a538e6598d4747c49d46 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 24 Jan 2025 09:49:55 +0100 Subject: [PATCH 178/197] fix FTBFS (fedora#2340017) --- ...uild-failure-with-GCC-15-and-std-c23.patch | 27 +++++++++++++++++++ cups-filters.spec | 5 ++++ 2 files changed, 32 insertions(+) create mode 100644 0001-Fix-build-failure-with-GCC-15-and-std-c23.patch diff --git a/0001-Fix-build-failure-with-GCC-15-and-std-c23.patch b/0001-Fix-build-failure-with-GCC-15-and-std-c23.patch new file mode 100644 index 0000000..1a18671 --- /dev/null +++ b/0001-Fix-build-failure-with-GCC-15-and-std-c23.patch @@ -0,0 +1,27 @@ +From 44f59a1aa74c48515d8feba5a61b7ea3aaa592c4 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Fri, 24 Jan 2025 09:44:58 +0100 +Subject: [PATCH] Fix build failure with GCC 15 and -std=c23 + +The newest standard has more strict data type checks, function pointers +in function prototypes have to declare data types of its arguments. +--- + filter/foomatic-rip/process.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/filter/foomatic-rip/process.h b/filter/foomatic-rip/process.h +index f6e15f65c..54a42923a 100644 +--- a/filter/foomatic-rip/process.h ++++ b/filter/foomatic-rip/process.h +@@ -18,7 +18,7 @@ + #include <sys/wait.h> + + +-pid_t start_process(const char *name, int (*proc_func)(), void *user_arg, ++pid_t start_process(const char *name, int (*proc_func)(FILE*, FILE*, void*), void *user_arg, + FILE **fdin, FILE **fdout); + pid_t start_system_process(const char *name, const char *command, FILE **fdin, + FILE **fdout); +-- +2.48.1 + diff --git a/cups-filters.spec b/cups-filters.spec index 340151a..e118a9d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -27,6 +27,8 @@ Source2: lftocrlf # Patches +# https://github.com/OpenPrinting/cups-filters/pull/618 +Patch001: 0001-Fix-build-failure-with-GCC-15-and-std-c23.patch # driverless backend/driver was moved into a separate package to @@ -210,6 +212,9 @@ make check %changelog +* Fri Jan 24 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-2 +- fix FTBFS (fedora#2340017) + * Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 4e647ff37f42fb7138366a46850ff4a4bdb258a3 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 11 Mar 2025 16:59:07 +0100 Subject: [PATCH 179/197] textonly driver was missing (fedora#2351389) --- cups-filters.spec | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index e118a9d..142545d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -6,6 +6,10 @@ %bcond_with braille %endif +# currently we use CUPS PPD compiler which will be removed +# in CUPS 3.0, then we will use PPD compiler from libppd-tools +%bcond_without cups_ppdc + # we build CUPS also with relro %global _hardened_build 1 @@ -13,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 2%{?dist} +Release: 3%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -137,6 +141,12 @@ install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.p ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip #ln -sf %{_cups_serverbin}/filter/universal %{buildroot}%{_bindir}/foomatic-rip +%if %{with cups_ppdc} +mkdir -p %{buildroot}%{_datadir}/cups/ppdc +mv %{buildroot}%{_datadir}/{ppdc/pcl.h,cups/ppdc/pcl.h} +mv %{buildroot}%{_datadir}/{ppdc/escp.h,cups/ppdc/escp.h} +%endif + # remove license files which are in %%pkgdocdir rm -f %{buildroot}%{_pkgdocdir}/{COPYING,NOTICE,LICENSE} @@ -151,6 +161,15 @@ rm -f %{buildroot}%{_pkgdocdir}/CHANGES-1.x.md make check +%post +# remove PPD cache to make bz#2351389 fix work right away +# remove after F43 EOL +if [ $1 -gt 1 ] +then + rm -f /var/cache/cups/ppds.dat || : +fi + + %files %license COPYING LICENSE NOTICE %doc AUTHORS ABOUT-NLS CHANGES.md CONTRIBUTING.md DEVELOPING.md README.md @@ -192,12 +211,17 @@ make check %{_datadir}/cups/mime/cupsfilters-universal-postscript.convs %{_datadir}/cups/mime/cupsfilters-universal.convs %{_datadir}/ppd/cupsfilters -%dir %{_datadir}/ppdc +%if %{with cups_ppdc} # escp.h and pcl.h are required during runtime, because # CUPS PPD compiler (ppdc) uses them for generating drivers # per request from cupsfilters.drv file +%{_datadir}/cups/ppdc/escp.h +%{_datadir}/cups/ppdc/pcl.h +%else +%dir %{_datadir}/ppdc %{_datadir}/ppdc/escp.h %{_datadir}/ppdc/pcl.h +%endif %{_mandir}/man1/foomatic-rip.1.gz %files driverless @@ -212,6 +236,9 @@ make check %changelog +* Tue Mar 11 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-3 +- textonly driver was missing (fedora#2351389) + * Fri Jan 24 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-2 - fix FTBFS (fedora#2340017) From 519dbe7090d97898bbbcda47e53471e31f61f8e2 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 2 Jun 2025 10:45:20 +0200 Subject: [PATCH 180/197] disable universal filter for now - some 3rd party drivers did not work with it --- cups-filters.spec | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 142545d..1727278 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 3%{?dist} +Release: 4%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -119,7 +119,7 @@ queues. ./autogen.sh %configure --enable-driverless \ - --enable-universal-cups-filter \ + --disable-universal-cups-filter \ --disable-mutool \ --disable-rpath \ --disable-silent-rules \ @@ -139,7 +139,6 @@ install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.p # we may use symlink to universal filter, but LSB is about guaranteed compatibility set # among distibutions, so rather have the strict foomatic-rip filter... ln -sf %{_cups_serverbin}/filter/foomatic-rip %{buildroot}%{_bindir}/foomatic-rip -#ln -sf %{_cups_serverbin}/filter/universal %{buildroot}%{_bindir}/foomatic-rip %if %{with cups_ppdc} mkdir -p %{buildroot}%{_datadir}/cups/ppdc @@ -204,12 +203,9 @@ fi %attr(0755,root,root) %{_cups_serverbin}/filter/texttopdf %attr(0755,root,root) %{_cups_serverbin}/filter/texttops %attr(0755,root,root) %{_cups_serverbin}/filter/texttotext -%attr(0755,root,root) %{_cups_serverbin}/filter/universal %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/mime/cupsfilters.types %{_datadir}/cups/mime/cupsfilters.convs -%{_datadir}/cups/mime/cupsfilters-universal-postscript.convs -%{_datadir}/cups/mime/cupsfilters-universal.convs %{_datadir}/ppd/cupsfilters %if %{with cups_ppdc} # escp.h and pcl.h are required during runtime, because @@ -236,6 +232,9 @@ fi %changelog +* Mon Jun 02 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-4 +- disable universal filter for now - some 3rd party drivers did not work with it + * Tue Mar 11 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-3 - textonly driver was missing (fedora#2351389) From 03fb9b0bd1f4205e45fd517105c8780482bd84d5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 2 Jun 2025 15:24:12 +0200 Subject: [PATCH 181/197] individual filters have to explicitly enabled --- cups-filters.spec | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 1727278..125d66c 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 4%{?dist} +Release: 5%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -119,6 +119,7 @@ queues. ./autogen.sh %configure --enable-driverless \ + --enable-individual-cups-filters \ --disable-universal-cups-filter \ --disable-mutool \ --disable-rpath \ @@ -166,6 +167,14 @@ make check if [ $1 -gt 1 ] then rm -f /var/cache/cups/ppds.dat || : + + # since we moved to individual filters, we have to restart cups + # to load new conversion tables if it is running + # remove by F43 EOL + if systemctl is-active cups &> /dev/null + then + systemctl restart cups || : + fi fi @@ -206,6 +215,9 @@ fi %{_datadir}/cups/drv/cupsfilters.drv %{_datadir}/cups/mime/cupsfilters.types %{_datadir}/cups/mime/cupsfilters.convs +%{_datadir}/cups/mime/cupsfilters-ghostscript.convs +%{_datadir}/cups/mime/cupsfilters-individual.convs +%{_datadir}/cups/mime/cupsfilters-poppler.convs %{_datadir}/ppd/cupsfilters %if %{with cups_ppdc} # escp.h and pcl.h are required during runtime, because @@ -232,6 +244,9 @@ fi %changelog +* Mon Jun 02 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-5 +- individual filters have to explicitly enabled + * Mon Jun 02 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-4 - disable universal filter for now - some 3rd party drivers did not work with it From 2b363dc37563b6218dd29ae9ad7f6da918d10aff Mon Sep 17 00:00:00 2001 From: pdancak <pdancak@redhat.com> Date: Mon, 2 Jun 2025 16:38:38 +0200 Subject: [PATCH 182/197] Reworked plans --- gating.yaml | 7 +++-- plans.fmf | 59 ++++++++++++++++++++++++++++++++++++++++ plans/tier1-internal.fmf | 12 -------- 3 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 plans.fmf delete mode 100644 plans/tier1-internal.fmf diff --git a/gating.yaml b/gating.yaml index 3c35f7d..b702afe 100644 --- a/gating.yaml +++ b/gating.yaml @@ -5,7 +5,7 @@ decision_context: bodhi_update_push_testing subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} - + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} #Rawhide --- !Policy product_versions: @@ -14,6 +14,7 @@ decision_context: bodhi_update_push_stable subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} #gating rhel --- !Policy @@ -21,5 +22,7 @@ product_versions: - rhel-* decision_context: osci_compose_gate rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} - - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/public.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/cups-tier1-public.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/cups-tier1-internal.functional} diff --git a/plans.fmf b/plans.fmf new file mode 100644 index 0000000..6f8d33d --- /dev/null +++ b/plans.fmf @@ -0,0 +1,59 @@ +/tier1-internal: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/tier1/internal + +/tier1-public: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/tier1/public + +/tier2-tier3-internal: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/tier2-tier3/internal + +/tier2-tier3-public: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/tier2-tier3/public + +/others-internal: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/others/internal + +/others-public: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/others/public + +/multihost: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/multihost/multihost + +/fips-internal: + plan: + import: + url: https://src.fedoraproject.org/tests/cups-filters.git + name: /plans/others/fips + +/cups-tier1-internal + plan: + import: + url: https://src.fedoraproject.org/tests/cups.git + name: /plans/tier1/internal + +/cups-tier1-internal + plan: + import: + url: https://src.fedoraproject.org/tests/cups.git + name: /plans/tier1/public diff --git a/plans/tier1-internal.fmf b/plans/tier1-internal.fmf deleted file mode 100644 index c63f688..0000000 --- a/plans/tier1-internal.fmf +++ /dev/null @@ -1,12 +0,0 @@ -summary: CI plan, picks internal Tier1 tests, runs in beakerlib. -discover: - - name: rhel - how: fmf - filter: 'tier: 1' - url: https://pkgs.devel.redhat.com/git/tests/cups-filters -execute: - how: tmt -adjust: - enabled: false - when: distro == centos-stream or distro == fedora - because: They don't have access to internal repos. From c6632c6f3dca183e5636191a51c8dc519db023f1 Mon Sep 17 00:00:00 2001 From: pdancak <pdancak@redhat.com> Date: Mon, 2 Jun 2025 16:45:02 +0200 Subject: [PATCH 183/197] Typo in plan name --- plans.fmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plans.fmf b/plans.fmf index 6f8d33d..df292d1 100644 --- a/plans.fmf +++ b/plans.fmf @@ -52,7 +52,7 @@ url: https://src.fedoraproject.org/tests/cups.git name: /plans/tier1/internal -/cups-tier1-internal +/cups-tier1-public plan: import: url: https://src.fedoraproject.org/tests/cups.git From c869cf5c9bdc7db8001aec91137b238951b86d50 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 3 Jun 2025 08:05:34 +0200 Subject: [PATCH 184/197] Switch tests to Centos Stream --- plans.fmf | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plans.fmf b/plans.fmf index df292d1..d2fb0f7 100644 --- a/plans.fmf +++ b/plans.fmf @@ -1,59 +1,59 @@ /tier1-internal: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/tier1/internal /tier1-public: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/tier1/public /tier2-tier3-internal: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/tier2-tier3/internal /tier2-tier3-public: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/tier2-tier3/public /others-internal: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/others/internal /others-public: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/others/public /multihost: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/multihost/multihost /fips-internal: plan: import: - url: https://src.fedoraproject.org/tests/cups-filters.git + url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/others/fips /cups-tier1-internal plan: import: - url: https://src.fedoraproject.org/tests/cups.git + url: https://gitlab.com/redhat/centos-stream/tests/cups.git name: /plans/tier1/internal /cups-tier1-public plan: import: - url: https://src.fedoraproject.org/tests/cups.git + url: https://gitlab.com/redhat/centos-stream/tests/cups.git name: /plans/tier1/public From 076e45cca687b623ad42041f8353fb89d31418a6 Mon Sep 17 00:00:00 2001 From: pdancak <pdancak@redhat.com> Date: Tue, 3 Jun 2025 11:01:56 +0200 Subject: [PATCH 185/197] Plans failed on missing ':' --- gating.yaml | 2 ++ plans.fmf | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gating.yaml b/gating.yaml index b702afe..ba0cbf9 100644 --- a/gating.yaml +++ b/gating.yaml @@ -5,6 +5,7 @@ decision_context: bodhi_update_push_testing subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} #Rawhide --- !Policy @@ -14,6 +15,7 @@ decision_context: bodhi_update_push_stable subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} #gating rhel diff --git a/plans.fmf b/plans.fmf index d2fb0f7..5a59da2 100644 --- a/plans.fmf +++ b/plans.fmf @@ -46,13 +46,13 @@ url: https://gitlab.com/redhat/centos-stream/tests/cups-filters.git name: /plans/others/fips -/cups-tier1-internal +/cups-tier1-internal: plan: import: url: https://gitlab.com/redhat/centos-stream/tests/cups.git name: /plans/tier1/internal -/cups-tier1-public +/cups-tier1-public: plan: import: url: https://gitlab.com/redhat/centos-stream/tests/cups.git From e1f2a903970cf53bd7880a92a159168738f1715e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 9 Jun 2025 15:15:44 +0200 Subject: [PATCH 186/197] CUPS restart has to happen after universal filter is gone for good (in posttrans) (fedora#2370978) --- cups-filters.spec | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index 125d66c..5766ee4 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 5%{?dist} +Release: 6%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -167,10 +167,14 @@ make check if [ $1 -gt 1 ] then rm -f /var/cache/cups/ppds.dat || : +fi +%posttrans +if [ $1 -gt 1 ] +then # since we moved to individual filters, we have to restart cups # to load new conversion tables if it is running - # remove by F43 EOL + # remove by F43 EOL and C11S release if systemctl is-active cups &> /dev/null then systemctl restart cups || : @@ -244,6 +248,9 @@ fi %changelog +* Mon Jun 09 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-6 +- CUPS restart has to happen after universal filter is gone for good (in posttrans) (fedora#2370978) + * Mon Jun 02 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-5 - individual filters have to explicitly enabled From 1b3fda0c3a850f98b6ac88ad332648904d42ea28 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering <releng@fedoraproject.org> Date: Wed, 23 Jul 2025 18:55:59 +0000 Subject: [PATCH 187/197] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- cups-filters.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 5766ee4..d2feb9f 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 6%{?dist} +Release: 7%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -248,6 +248,9 @@ fi %changelog +* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Mon Jun 09 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-6 - CUPS restart has to happen after universal filter is gone for good (in posttrans) (fedora#2370978) From dbeabdf33347d378f2137cdb62b4a133e48c57ee Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 30 Jul 2025 12:07:15 +0200 Subject: [PATCH 188/197] Introduce foomatic-hash, but not rejecting values in foomatic-rip --- ...ic-hash-and-reject-unauthorized-valu.patch | 1485 +++++++++++++++++ cups-filters.spec | 13 +- 2 files changed, 1497 insertions(+), 1 deletion(-) create mode 100644 0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch diff --git a/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch b/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch new file mode 100644 index 0000000..21d59cb --- /dev/null +++ b/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch @@ -0,0 +1,1485 @@ +From 41c5f2f6139e4d3693c2483ee4281202a80ae451 Mon Sep 17 00:00:00 2001 +From: zdohnal <zdohnal@redhat.com> +Date: Tue, 22 Jul 2025 15:12:19 +0200 +Subject: [PATCH] Introduce foomatic-hash and reject unauthorized values in + foomatic-rip (#648) + +The change provides a way for users to have control over what values are +allowed for the foomatic-rip-related PPD keywords FoomaticRIPCommandLine, +FoomaticRIPCommandLinePDF, and FoomaticRIPOptionSetting. Since the +values can be later used when constructing a shell command, the filter +foomatic-rip was a target of several exploits (caused by issues at +different places in CUPS or in different projects of the printing stack) to +do arbitrary code execution when the filter is used. + +By default the filter is run by user lp, so the issue is mitigated, but +this PR gives admin complete control over what can be run in +foomatic-rip and reject anything injected into system via different +ways. + +First, the new tool - foomatic-hash - can be called on a PPD file or +directory with drivers/PPDs, with scan output and file with hexadecimal +representation of hashed values. Once the scan output is reviewed by +admin, admin can decide to put the resulting hashes into +/etc/foomatic/hashes.d and allow them for the filter. +--- + Makefile.am | 44 ++- + README.md | 23 ++ + configure.ac | 2 +- + filter/foomatic-rip/foomatic-hash.1 | 66 ++++ + filter/foomatic-rip/foomatic-hash.c | 549 ++++++++++++++++++++++++++ + filter/foomatic-rip/foomatic-rip.1.in | 16 + + filter/foomatic-rip/foomaticrip.c | 75 ---- + filter/foomatic-rip/foomaticrip.h | 40 -- + filter/foomatic-rip/options.c | 67 ++++ + filter/foomatic-rip/process.c | 9 + + filter/foomatic-rip/process.h | 3 + + filter/foomatic-rip/util.c | 341 +++++++++++++++- + filter/foomatic-rip/util.h | 67 ++++ + 13 files changed, 1178 insertions(+), 124 deletions(-) + create mode 100644 filter/foomatic-rip/foomatic-hash.1 + create mode 100644 filter/foomatic-rip/foomatic-hash.c + +diff --git a/Makefile.am b/Makefile.am +index f4ff7a1a3..fff4d06f7 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -188,6 +188,8 @@ endif + if ENABLE_FOOMATIC + pkgfilter_PROGRAMS += \ + foomatic-rip ++bin_PROGRAMS = \ ++ foomatic-hash + endif + if ENABLE_UNIVERSAL_CUPS_FILTER + pkgfilter_PROGRAMS += \ +@@ -278,6 +280,19 @@ commandtopclx_LDADD = \ + $(LIBPPD_LIBS) \ + $(CUPS_LIBS) + ++noinst_LTLIBRARIES = libfoomatic-util.la ++libfoomatic_util_la_SOURCES = \ ++ filter/foomatic-rip/util.c \ ++ filter/foomatic-rip/util.h \ ++ filter/foomatic-rip/process.c \ ++ filter/foomatic-rip/process.h ++libfoomatic_util_la_CFLAGS = \ ++ -DSYS_HASH_PATH='"$(datadir)/foomatic/hashes.d"' \ ++ -DUSR_HASH_PATH='"$(sysconfdir)/foomatic/hashes.d"' \ ++ $(CUPS_CFLAGS) ++libfoomatic_util_la_LIBADD = \ ++ $(CUPS_LIBS) ++ + foomatic_rip_SOURCES = \ + filter/foomatic-rip/foomaticrip.c \ + filter/foomatic-rip/foomaticrip.h \ +@@ -287,24 +302,34 @@ foomatic_rip_SOURCES = \ + filter/foomatic-rip/pdf.h \ + filter/foomatic-rip/postscript.c \ + filter/foomatic-rip/postscript.h \ +- filter/foomatic-rip/process.c \ +- filter/foomatic-rip/process.h \ + filter/foomatic-rip/renderer.c \ + filter/foomatic-rip/renderer.h \ + filter/foomatic-rip/spooler.c \ +- filter/foomatic-rip/spooler.h \ +- filter/foomatic-rip/util.c \ +- filter/foomatic-rip/util.h ++ filter/foomatic-rip/spooler.h + foomatic_rip_CFLAGS = \ + -DCONFIG_PATH='"$(sysconfdir)/foomatic"' \ + $(CUPS_CFLAGS) \ + $(LIBCUPSFILTERS_CFLAGS) \ +- $(LIBPPD_CFLAGS) ++ $(LIBPPD_CFLAGS) \ ++ -I/$(srcdir)/filter/foomatic-rip/ + foomatic_rip_LDADD = \ + $(CUPS_LIBS) \ + -lm \ + $(LIBCUPSFILTERS_LIBS) \ +- $(LIBPPD_LIBS) ++ $(LIBPPD_LIBS) \ ++ libfoomatic-util.la ++ ++foomatic_hash_SOURCES = \ ++ filter/foomatic-rip/foomatic-hash.c ++foomatic_hash_CFLAGS = \ ++ $(CUPS_CFLAGS) \ ++ $(LIBPPD_CFLAGS) \ ++ -I/$(srcdir)/filter/foomatic-rip/ ++foomatic_hash_LDADD = \ ++ $(CUPS_LIBS) \ ++ -lm \ ++ $(LIBPPD_LIBS) \ ++ libfoomatic-util.la + + gstoraster_SOURCES = \ + filter/gstoraster.c +@@ -576,6 +601,7 @@ man_MANS += $(driverlessmanpages) + endif + + foomaticmanpages = \ ++ filter/foomatic-rip/foomatic-hash.1 \ + filter/foomatic-rip/foomatic-rip.1 + if ENABLE_FOOMATIC + man_MANS += $(foomaticmanpages) +@@ -615,6 +641,8 @@ install-exec-hook: + $(INSTALL) -d -m 755 $(DESTDIR)$(pkgbackenddir) + if ENABLE_FOOMATIC + $(LN_SRF) $(DESTDIR)$(pkgfilterdir)/foomatic-rip $(DESTDIR)$(bindir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/foomatic/hashes.d ++ $(INSTALL) -d -m 755 $(DESTDIR)$(sysconfdir)/foomatic/hashes.d + endif + if ENABLE_DRIVERLESS + $(LN_SRF) $(DESTDIR)$(pkgppdgendir)/driverless $(DESTDIR)$(bindir) +@@ -626,6 +654,8 @@ endif + uninstall-hook: + if ENABLE_FOOMATIC + $(RM) $(DESTDIR)$(bindir)/foomatic-rip ++ $(RMDIR) $(DESTDIR)$(datadir)/foomatic/hashes.d ++ $(RMDIR) $(DESTDIR)$(sysconfdir)/foomatic/hashes.d + endif + if ENABLE_DRIVERLESS + $(RM) $(DESTDIR)$(bindir)/driverless +diff --git a/README.md b/README.md +index 10e66aee5..ce521bcb0 100644 +--- a/README.md ++++ b/README.md +@@ -263,6 +263,29 @@ this filter are the same as for texttopdf (see below) as the texttops + filter calls the texttopdf filter plus Ghostscript's pdf2ps. + + ++### Tool FOOMATIC-HASH and allowing values for foomatic-rip filter ++ ++Several CVEs for printing stack exploited a different security issue ++to craft a PPD which would call the filter foomatic-rip, and provided ++malicious values for PPD options FoomaticRIPCommandLine, FoomaticRIPCommandLinePDF, ++and FoomaticRIPOptionSetting, because the filter constructs a command ++out of the values and runs it in shell under user lp. ++ ++To mitigate the issue, foomatic-rip now allows only values which are allowed ++by admin, and the tool foomatic-hash was invented. The tool scans PPD file or ++a path for drivers with affected values, and generates two files - the first ++with found values for admin to review, and the second with hashes of unique ++values present in the scanned file or path. If admin reviews the found values ++and finds them correct, the found values will be allowed once the file with ++hashes is moved into the directory /etc/foomatic/hashes.d. ++ ++The filter foomatic-rip reads files with allowed hashes from two directories - ++/etc/foomatic/hashes.d and /usr/share/foomatic/hashes.d. The former is meant ++for hashes allowed by the local admin, the latter is for printer driver projects ++to put there files with hashes of values which are present in their project ++after the values are reviewed. ++ ++ + ### Filters + + +diff --git a/configure.ac b/configure.ac +index 3fed334bc..2d4b147e2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -120,7 +120,7 @@ PKG_CHECK_MODULES([LIBCUPSFILTERS], [libcupsfilters]) + # ================ + # Check for libppd + # ================ +-PKG_CHECK_MODULES([LIBPPD], [libppd]) ++PKG_CHECK_MODULES([LIBPPD], [libppd], [AC_DEFINE(HAVE_LIBPPD, 1, [Have LIBPPD?])], [AC_MSG_RESULT([not found])]) + + # ====================== + # Check system functions +diff --git a/filter/foomatic-rip/foomatic-hash.1 b/filter/foomatic-rip/foomatic-hash.1 +new file mode 100644 +index 000000000..d53919838 +--- /dev/null ++++ b/filter/foomatic-rip/foomatic-hash.1 +@@ -0,0 +1,66 @@ ++.\" ++.\" foomatic-hash man page. ++.\" ++.\" Copyright @ 2025 by Zdenek Dohnal. ++.\" ++.\" Licensed under Apache License v2.0. See the file "LICENSE" for more ++.\" information. ++.\" ++ ++ ++.TH "foomatic-hash" "1" "2025-06-18" "User Commands" ++ ++.SH "NAME" ++ ++foomatic-hash - tool for scanning provided drivers for problematic PPD options and hash them using SHA-256 ++ ++.SH "SYNOPSIS" ++ ++.BI \fBfoomatic-hash\fR\ \fB--ppd\fR\ \fI<ppdfile>\fR\ \fI<scanoutput>\fR\ \fI<hashes_file>\fR ++ ++.BI \fBfoomatic-hash\fR\ \fB--ppd-paths\fR\ \fI<path1,path2..pathN>\fR\ \fI<scanoutput>\fR\ \fI<hashes_file>\fR ++ ++ ++.SH "DESCRIPTION" ++ ++The tool scans the provided drivers for values of PPD keywords \fBFoomaticRIPCommandLine\fR, \fBFoomaticRIPCommandLinePDF\fR, and \fBFoomaticRIPOptionSetting\fR, puts the found values into a file for review, and prints out values hashes in hexadecimal format. The hashes are required for allowing the filter \fBfoomatic-rip\fR to process those values. ++ ++ ++.SH "OPTIONS" ++ ++The tool \fBfoomatic-hash\fR supports two options: ++ ++.TP 10 ++.BI \fB--ppd\fR\ \fI<ppdfile>\fR ++The tool scans the specific PPD file. ++ ++.TP 10 ++.BI \fB--ppd-paths\fR\ \fI<path1,path2..pathN>\fR ++The tool scans directories \fIpath1\fR, \fIpath2\fR until \fIpathN\fR for values of desired PPD keyword. Paths are absolute, symlinks are ignored. Each path is divided by comma. LibPPD support is required for the functionality. ++ ++.SH "EXAMPLES" ++Scans PPD file \fBtest.ppd\fR, prints found values into \fBfound_values\fR, hash them and save them into \fBhashed_values\fR. ++.nf ++ ++ foomatic-hash --ppd test.ppd found_values hashed_values ++ ++.fi ++ ++Scans path \fB/etc/cups/ppd\fR for drivers, finds values if any, puts them into \fBfound_values\fR, and hashes them into \fBhashed_values\fR. ++.nf ++ ++ sudo foomatic-hash --ppd-paths /etc/cups/ppd found_value hashed_values ++.fi ++ ++.SH "EXIT STATUS" ++ ++Returns zero if scan happens successfully, non-zero return value for any error during the process. ++ ++ ++.SH "SEE ALSO" ++ ++.BR foomatic-rip (1) ++ ++ ++.BR ++.EL +diff --git a/filter/foomatic-rip/foomatic-hash.c b/filter/foomatic-rip/foomatic-hash.c +new file mode 100644 +index 000000000..6e563870f +--- /dev/null ++++ b/filter/foomatic-rip/foomatic-hash.c +@@ -0,0 +1,549 @@ ++// ++// foomatic-hash.c ++// ++// Copyright (C) 2024-2025 Zdenek Dohnal <zdohnal@redhat.com> ++// Copyright (C) 2008 Till Kamppeter <till.kamppeter@gmail.com> ++// Copyright (C) 2008 Lars Karlitski (formerly Uebernickel) <lars@karlitski.net> ++// ++// This file implements the tool foomatic-hash, which scans presented drivers ++// for FoomaticRIP* option values which are used during composing shell command, prints ++// them into a file for review, hashes the found values and puts them into a separate file. ++// The options in question: ++// - FoomaticRIPCommandLine, ++// - FoomaticRIPCommandLinePDF, ++// - FoomaticRIPOptionSetting. ++// ++// Licensed under Apache License v2.0. See the file "LICENSE" for more ++// information. ++// ++ ++#include "util.h" ++#include <ctype.h> ++#include <cups/array.h> ++#include <cups/cups.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include <sys/stat.h> ++ ++#if defined(HAVE_LIBPPD) ++#include <ppd/ppd.h> ++#endif // HAVE_LIBPPD ++ ++ ++void write_array(cups_array_t *ar, char *filename); ++ ++ ++// ++// `write_array()` - Writes the CUPS array content into file, line by line... ++// ++ ++void ++write_array(cups_array_t *ar, // I - CUPS array with contents to write ++ char *filename) // I - Path to file where to put data in ++{ ++ cups_file_t *f = NULL; // CUPS file pointer ++ ++ if (cupsArrayCount(ar) == 0) ++ return; ++ ++ if ((f = cupsFileOpen(filename, "w")) == NULL) ++ { ++ fprintf(stderr, "Cannot open file \"%s\" for write.\n", filename); ++ return; ++ } ++ ++ for (char *s = (char*)cupsArrayGetFirst(ar); s; s = (char*)cupsArrayGetNext(ar)) ++ cupsFilePrintf(f, "%s\n", s); ++ ++ cupsFileClose(f); ++} ++ ++ ++// ++// 'generate_hash_file()' - Generate file with unique hashes. ++// ++ ++int // O - 0 - success/ 1 - error ++generate_hash_file(cups_array_t *values, // I - File with values to hash ++ char *output) // I - File where to save new file ++{ ++ cups_array_t *syshashes = NULL, // Already existing hashes on system ++ *hashes = NULL; // Hashed values from input ++ char *data = NULL, // Pointer for storing string from array of values ++ comment[16], // Array for storing comment ++ hash_string[65]; // Array for hexadecimal representation of hashed value ++ ++ ++ // ++ // Load existing hashes from system... ++ // ++ ++ if (load_system_hashes(&syshashes)) ++ return (1); ++ ++ // ++ // Load hashes from previous runs if any... ++ // ++ ++ if (load_array(&hashes, output)) ++ return (1); ++ ++ // ++ // Now do the hashing, save the hexadecimal string if it is ++ // unique - if the hash is not on system or in the loaded hash ++ // file from previous runs... ++ // ++ ++ for (data = (char*)cupsArrayGetFirst(values); data; data = (char*)cupsArrayGetNext(values)) ++ { ++ if (hash_data((unsigned char*)data, strlen(data), hash_string, sizeof(hash_string))) ++ return (1); ++ ++ if (!cupsArrayFind(syshashes, hash_string) && !cupsArrayFind(hashes, hash_string)) ++ cupsArrayAdd(hashes, hash_string); ++ } ++ ++ if (cupsArrayCount(hashes)) ++ { ++ // ++ // Add comment mentioning the used hash algorithm ++ // ++ ++ snprintf(comment, sizeof(comment), "# %s", hash_alg); ++ ++ if (!cupsArrayFind(hashes, comment)) ++ cupsArrayAdd(hashes, comment); ++ ++ // ++ // Create a new hash file... ++ // ++ ++ write_array(hashes, output); ++ } ++ ++ cupsArrayDelete(syshashes); ++ cupsArrayDelete(hashes); ++ ++ return (0); ++} ++ ++ ++// ++// `find_foomaticrip_keywords()` - reads PPD file, find FoomaticRIPCommandLine, ++// FoomaticRIPCommandLinePDF and FoomaticRIPOptionSetting, save their values ++// into CUPS array. ++// ++ ++void ++find_foomaticrip_keywords(cups_array_t *data, // O - Array with values of FoomaticRIP* PPD keywords ++ cups_file_t *file) // I - File descriptor opened via CUPS API ++{ ++ char *p; // Helper pointer ++ char key[128], // PPD keyword ++ line[256], // PPD line length is max 255 (excl. \0) ++ name[64], // PPD option name ++ text[64]; // PPD option human-readable text ++ ++ // ++ // Allocate struct for saving value data dynamically, ++ // it can span over multiplelines... ++ // ++ ++ dstr_t *value = create_dstr(); ++ ++ dstrassure(value, 256); ++ ++ // ++ // Going through the PPD file... ++ // ++ ++ while (cupsFileGets(file, line, 256) != NULL) ++ { ++ // ++ // Ignore commmented lines and whatever not starting with '*' ++ // to get the closest keyword ++ // ++ ++ if (line[0] != '*' || startswith(line, "*%")) ++ continue; ++ ++ // ++ // Get the PPD keyword ++ // Structure of PPD line: ++ // *keyword [option_name/option_text]: value1 [value2 value3...] ++ // ++ ++ key[0] = name[0] = text[0] = '\0'; ++ ++ if ((p = strchr(line, ':')) == NULL) ++ continue; ++ ++ *p = '\0'; ++ ++ sscanf(line, "*%127s%*[ \t]%63[^ \t/=)]%*1[/=]%63[^\n]", key, name, text); ++ ++ // ++ // Get the value... ++ // ++ ++ dstrclear(value); ++ sscanf(p + 1, " %255[^\r\n]", value->data); ++ value->len = strlen(value->data); ++ ++ // ++ // If the value is multiline (the current line ends with && or does not end with \"), ++ // continue saving it, and handle quotes if the value is quoted... ++ // ++ ++ while (1) ++ { ++ if (dstrendswith(value, "&&")) ++ { ++ // ++ // "&&" is the continue-on-next-line marker ++ // ++ ++ value->len -= 2; ++ value->data[value->len] = '\0'; ++ } ++ else if (value->data[0] == '\"' && !strchr(value->data +1, '\"')) ++ { ++ // ++ // Quoted but quotes are not yet closed - typically value blocks ++ // ended by keyword *End - append LF for the next line... ++ // ++ ++ dstrcat(value, "\n"); // keep newlines in quoted string ++ } ++ // Quotes already closed, we have the whole value... ++ else ++ break; ++ ++ // ++ // We read the next line if the value was not complete... ++ // ++ ++ if (cupsFileGets(file, line, 256) == NULL) ++ break; ++ ++ dstrcat(value, line); ++ dstrremovenewline(value); ++ ++ // ++ // 2047 characters to read for value sounds reasonable, ++ // break if we have more and crop the string... ++ // ++ ++ if (strlen(value->data) > 2047) ++ { ++ value->data[2047] = '\0'; ++ value->len = 2047; ++ break; ++ } ++ } ++ ++ // ++ // Skip if the key is not what we look for... ++ // ++ ++ if (strcmp(key, "FoomaticRIPCommandLine") && strcmp(key, "FoomaticRIPCommandLinePDF") && strcmp(key, "FoomaticRIPOptionSetting")) ++ continue; ++ ++ // ++ // Remove quotes... ++ // ++ ++ if (value->data[0] == '\"') ++ { ++ memmove(value->data, value->data +1, value->len +1); ++ p = strrchr(value->data, '\"'); ++ if (!p) ++ { ++ fprintf(stderr, "Invalid line: \"%s: ...\"\n", key); ++ continue; ++ } ++ *p = '\0'; ++ } ++ ++ // ++ // Remove last newline and last whitespace... ++ // ++ ++ dstrremovenewline(value); ++ ++ dstrtrim_right(value); ++ ++ // ++ // Skip empty values if there are any... ++ // ++ ++ if (!value->data || !value->data[0]) ++ continue; ++ ++ // ++ // Save data value ++ // ++ ++ if (!cupsArrayFind(data, value->data)) ++ cupsArrayAdd(data, value->data); ++ } ++ ++ free_dstr(value); ++} ++ ++ ++// ++// `get_values_from_ppd()` - Open the PPD file and get values of ++// desired FoomaticRIP PPD keywords... ++// ++ ++int // O - Return value, 0 - success, 1 - error ++get_values_from_ppd(cups_array_t *data, // O - Array of found FoomaticRIP* values ++ char *filename) // I - Path to the file ++{ ++ cups_file_t *file = NULL; // File descriptor ++ int ret = 0; // Return value ++ ++ if (!is_valid_path(filename, IS_FILE)) ++ return (1); ++ ++ if ((file = cupsFileOpen(filename, "r")) == NULL) ++ { ++ fprintf(stderr, "Cannot open \"%s\" for reading.\n", filename); ++ return (1); ++ } ++ ++ find_foomaticrip_keywords(data, file); ++ ++ cupsFileClose(file); ++ ++ return (ret); ++} ++ ++ ++#if defined(HAVE_LIBPPD) ++// ++// `copy_col()` - Allocation function for collection struct. ++// ++ ++ppd_collection_t * // O - Dynamically allocated PPD collection struct ++copy_col(char *path) // I - Directory with drivers ++{ ++ ppd_collection_t *col = NULL; ++ ++ if ((col = (ppd_collection_t*)calloc(1, sizeof(ppd_collection_t))) == NULL) ++ { ++ fprintf(stderr, "Cannot allocate memory for PPD collection.\n"); ++ return (NULL); ++ } ++ ++ if ((col->path = (char*)calloc(strlen(path) + 1, sizeof(char))) == NULL) ++ { ++ fprintf(stderr, "Cannot allocate memory for PPD path.\n"); ++ free(col); ++ return (NULL); ++ } ++ ++ snprintf(col->path, strlen(path) + 1, "%s", path); ++ ++ return (col); ++} ++ ++ ++// ++// `free_col()` - Free function for PPD collection. ++// ++ ++void ++free_col(ppd_collection_t *col) // I - PPD collection ++{ ++ free(col->path); ++ free(col); ++} ++ ++ ++// ++// `compare_col()` - Comparing function for PPD collection. ++// ++ ++int // O - Result of comparison, 0 - the same, 1 - differs ++compare_col(char *a, // I - PPD collection ++ ppd_collection_t *b) // I - PPD collection ++{ ++ if(!strcmp(a, b->path)) ++ return (0); ++ ++ return (1); ++} ++#endif // HAVE_LIBPPD ++ ++ ++// ++// `get_values_from_ppdpaths()` - Goes via sent list of directories, gets ++// PPDs and gets value strings for FoomaticRIP related PPD keywords. ++// ++ ++int // O - Return value, 0 - success, 1 - error ++get_values_from_ppdpaths(cups_array_t *data, // O - Array of found values ++ char *ppdpaths) // I - List of directories with drivers, comma separated ++{ ++#if defined(HAVE_LIBPPD) ++ char *path = NULL, // Directory path ++ *start = NULL, // Helper pointer to start of string ++ *end = NULL; // Helper pointer to end of string ++ cups_array_t *ppd_collections = NULL, // Directories with drivers ++ *ppds = NULL; // PPD URIs ++ cups_file_t *ppdfile = NULL; // PPD file descriptor ++ int ret = 0; // Return value ++ ppd_info_t *ppd = NULL; // In-memory record of PPD ++ ++ ++ if ((ppd_collections = cupsArrayNew3((cups_array_func_t)compare_col, NULL, NULL, 0, (cups_acopy_func_t)copy_col, (cups_afree_func_t)free_col)) == NULL) ++ { ++ fprintf(stderr, "Could not allocate PPD collection array.\n"); ++ return (1); ++ } ++ ++ // ++ // Go through input directory list, validate each record, ++ // and add them into array... ++ // ++ ++ if ((path = strchr(ppdpaths, ',')) == NULL) ++ { ++ if (is_valid_path(ppdpaths, IS_DIR)) ++ cupsArrayAdd(ppd_collections, ppdpaths); ++ } ++ else ++ { ++ for (start = end = ppdpaths; *end; start = end) ++ { ++ if ((end = strchr(start, ',')) != NULL) ++ *end++ = '\0'; ++ else ++ end = start + strlen(start); ++ ++ if (is_valid_path(start, IS_DIR) && !cupsArrayFind(ppd_collections, start)) ++ cupsArrayAdd(ppd_collections, start); ++ } ++ } ++ ++ // ++ // Get array of in-memory PPD records, later used for generating the PPDs themselves... ++ // ++ ++ if ((ppds = ppdCollectionListPPDs(ppd_collections, 0, 0, NULL, NULL, NULL)) == NULL) ++ goto end; ++ ++ // ++ // Go through in-memory PPD records, generate a PPD and search for FoomaticRIP* keywords... ++ // ++ ++ for (ppd = (ppd_info_t*)cupsArrayGetFirst(ppds); ppd; ppd = (ppd_info_t*)cupsArrayGetNext(ppds)) ++ { ++ if ((ppdfile = ppdCollectionGetPPD(ppd->record.name, ppd_collections, NULL, NULL)) == NULL) ++ continue; ++ ++ find_foomaticrip_keywords(data, ppdfile); ++ ++ cupsFileClose(ppdfile); ++ } ++ ++ ++end: ++ for (ppd = (ppd_info_t*)cupsArrayGetFirst(ppds); ppd; ppd = (ppd_info_t*)cupsArrayGetNext(ppds)) ++ free(ppd); ++ ++ cupsArrayDelete(ppds); ++ ++ cupsArrayDelete(ppd_collections); ++ ++ return (ret); ++#else ++ fprintf(stdout, "foomatic-hash is not compiled with LIBPPD support.\n"); ++ ++ return (0); ++#endif // HAVE_LIBPPD ++} ++ ++ ++void ++help() ++{ ++ printf("Usage:\n" ++ "foomatic-hash --ppd <ppdfile> <scanoutput> <hashes_file>\n" ++ "foomatic-hash --ppd-paths <path1,path2...pathN> <scanoutput> <hashes_file>\n" ++ "\n" ++ "Finds values of FoomaticRIPCommandLine, FoomaticRIPPDFCommandLine\n" ++ "and FoomaticRIPOptionSetting from the specified PPDs, appends them\n" ++ "into the specified scan output for review, and hashes the found values.\n" ++ "\n" ++ "--ppd <ppdfile> - PPD file to read\n" ++ "--ppd-paths <path1,path2...pathN> - Paths to look for PPDs, available only with libppd\n" ++ "<scanoutput> - Found required values from drivers\n" ++ "<hashes_file> - Output file with hashes\n"); ++} ++ ++ ++int ++main(int argc, ++ char** argv) ++{ ++ cups_array_t *data = NULL; // Found FoomaticRIP* PPD keyword values ++ int ret = 1; ++ ++ ++ if (argc != 5) ++ { ++ help(); ++ return (0); ++ } ++ ++ // ++ // End up early if we can't write into paths provided as arguments ++ // ++ ++ if (!is_valid_path(argv[3], IS_FILE) || ++ ((data = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free)) == NULL) || ++ !is_valid_path(argv[4], IS_FILE)) ++ return (1); ++ ++ // ++ // We scan single PPD file, or from directory (if libppd support is present) ++ // ++ ++ if (!strcmp(argv[1], "--ppd")) ++ { ++ if (get_values_from_ppd(data, argv[2])) ++ return (1); ++ } ++ else if (!strcmp(argv[1], "--ppd-paths")) ++ { ++ if (get_values_from_ppdpaths(data, argv[2])) ++ return (1); ++ } ++ else ++ { ++ fprintf(stderr, "Unsupported argument.\n"); ++ return (1); ++ } ++ ++ // ++ // Write found values of FoomaticRIPCommandLine, FoomaticRIPPDFCommandLine and FoomaticRIPOptionSetting ++ // PPD keywords... ++ // ++ ++ write_array(data, argv[3]); ++ ++ // ++ // Hash the found values.. ++ // ++ ++ ret = generate_hash_file(data, argv[4]); ++ ++ cupsArrayDelete(data); ++ ++ ++ return (ret); ++} +diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c +index 036d6138b..2e892cb80 100644 +--- a/filter/foomatic-rip/foomaticrip.c ++++ b/filter/foomatic-rip/foomaticrip.c +@@ -35,72 +35,6 @@ + #include <cupsfilters/filter.h> + + +-// Logging +-FILE* logh = NULL; +- +- +-void +-_logv(const char *msg, +- va_list ap) +-{ +- if (!logh) +- return; +- vfprintf(logh, msg, ap); +- fflush(logh); +-} +- +- +-void +-_log(const char* msg, +- ...) +-{ +- va_list ap; +- va_start(ap, msg); +- _logv(msg, ap); +- va_end(ap); +-} +- +- +-void +-close_log() +-{ +- if (logh && logh != stderr) +- fclose(logh); +-} +- +- +-int +-redirect_log_to_stderr() +-{ +- if (dup2(fileno(logh), fileno(stderr)) < 0) +- { +- _log("Could not dup logh to stderr\n"); +- return (0); +- } +- return (1); +-} +- +- +-void +-rip_die(int status, +- const char *msg, +- ...) +-{ +- va_list ap; +- +- _log("Process is dying with \""); +- va_start(ap, msg); +- _logv(msg, ap); +- va_end(ap); +- _log("\", exit stat %d\n", status); +- +- _log("Cleaning up...\n"); +- kill_all_processes(); +- +- exit(status); +-} +- +- + jobparams_t *job = NULL; + + +@@ -186,8 +120,6 @@ char cupsfilterpath[PATH_MAX] = "/usr/local/lib/cups/filter:" + "/opt/cups/filter:" + "/usr/lib/cups/filter"; + +-char modern_shell[] = SHELL; +- + + void + config_set_option(const char *key, +@@ -239,13 +171,6 @@ config_from_file(const char *filename) + } + + +-const char * +-get_modern_shell() +-{ +- return (modern_shell); +-} +- +- + // returns position in 'str' after the option + char * + extract_next_option(char *str, +diff --git a/filter/foomatic-rip/foomaticrip.h b/filter/foomatic-rip/foomaticrip.h +index 5c9ecfaf0..60d4059c6 100644 +--- a/filter/foomatic-rip/foomaticrip.h ++++ b/filter/foomatic-rip/foomaticrip.h +@@ -32,36 +32,6 @@ + #define LOG_FILE "/tmp/foomatic-rip" + #endif + +- +-// Constants used by this filter +-// +-// Error codes, as some spoolers behave different depending on the reason why +-// the RIP failed, we return an error code. +- +-#define EXIT_PRINTED 0 // file was printed normally +-#define EXIT_PRNERR 1 // printer error occured +-#define EXIT_PRNERR_NORETRY 2 // printer error with no hope +- // of retry +-#define EXIT_JOBERR 3 // job is defective +-#define EXIT_SIGNAL 4 // terminated after catching +- // signal +-#define EXIT_ENGAGED 5 // printer is otherwise engaged +- // (connection refused) +-#define EXIT_STARVED 6 // starved for system resources +-#define EXIT_PRNERR_NORETRY_ACCESS_DENIED 7 // bad password? bad port +- // permissions? +-#define EXIT_PRNERR_NOT_RESPONDING 8 // just doesn't answer at all +- // (turned off?) +-#define EXIT_PRNERR_NORETRY_BAD_SETTINGS 9 // interface settings are +- // invalid +-#define EXIT_PRNERR_NO_SUCH_ADDRESS 10 // address lookup failed, may +- // be transient +-#define EXIT_PRNERR_NORETRY_NO_SUCH_ADDRESS 11 // address lookup failed, not +- // transient +-#define EXIT_INCAPABLE 50 // printer wants (lacks) +- // features or resources +- +- + // Supported spoolers are currently: + // + // cups - CUPS - Common Unix Printing System +@@ -73,11 +43,6 @@ + // The spooler from which foomatic-rip was called. set in main() + extern int spooler; + +-#ifndef PATH_MAX +-#define PATH_MAX 4096 +-#endif +-#define CMDLINE_MAX 65536 +- + typedef struct + { + char printer[256]; +@@ -95,11 +60,6 @@ typedef struct + + jobparams_t *get_current_job(); + +-void _log(const char* msg, ...); +-int redirect_log_to_stderr(); +-void rip_die(int status, const char *msg, ...); +- +-const char *get_modern_shell(); + FILE *open_postpipe(); + + extern struct dstr *currentcmd; +diff --git a/filter/foomatic-rip/process.c b/filter/foomatic-rip/process.c +index 51bf57571..fc8e81cc7 100644 +--- a/filter/foomatic-rip/process.c ++++ b/filter/foomatic-rip/process.c +@@ -22,6 +22,8 @@ + + int kidgeneration = 0; + ++char modern_shell[] = SHELL; ++ + struct process + { + char name[64]; +@@ -39,6 +41,13 @@ struct process procs[MAX_CHILDS] = + }; + + ++const char * ++get_modern_shell() ++{ ++ return (modern_shell); ++} ++ ++ + void + add_process(const char *name, + int pid, +diff --git a/filter/foomatic-rip/process.h b/filter/foomatic-rip/process.h +index 54a42923a..db597bcef 100644 +--- a/filter/foomatic-rip/process.h ++++ b/filter/foomatic-rip/process.h +@@ -18,11 +18,14 @@ + #include <sys/wait.h> + + ++extern char modern_shell[]; ++ + pid_t start_process(const char *name, int (*proc_func)(FILE*, FILE*, void*), void *user_arg, + FILE **fdin, FILE **fdout); + pid_t start_system_process(const char *name, const char *command, FILE **fdin, + FILE **fdout); + ++const char *get_modern_shell(); + // returns command's return status (see waitpid(2)) + int run_system_process(const char *name, const char *command); + +diff --git a/filter/foomatic-rip/util.c b/filter/foomatic-rip/util.c +index 78ca5212c..508bc0958 100644 +--- a/filter/foomatic-rip/util.c ++++ b/filter/foomatic-rip/util.c +@@ -11,7 +11,9 @@ + // + + #include "util.h" +-#include "foomaticrip.h" ++#include "process.h" ++#include <cups/cups.h> ++#include <cups/dir.h> + #include <ctype.h> + #include <stdlib.h> + #include <stdio.h> +@@ -20,7 +22,71 @@ + #include <errno.h> + + ++const char *hash_alg = "sha2-256"; // Used hash algorithm + const char *shellescapes = "|;<>&!$\'\"`#*?()[]{}"; ++FILE* logh = NULL; ++ ++// Logging ++void ++_logv(const char *msg, ++ va_list ap) ++{ ++ if (!logh) ++ return; ++ vfprintf(logh, msg, ap); ++ fflush(logh); ++} ++ ++ ++void ++_log(const char* msg, ++ ...) ++{ ++ va_list ap; ++ va_start(ap, msg); ++ _logv(msg, ap); ++ va_end(ap); ++} ++ ++ ++void ++close_log() ++{ ++ if (logh && logh != stderr) ++ fclose(logh); ++} ++ ++ ++int ++redirect_log_to_stderr() ++{ ++ if (dup2(fileno(logh), fileno(stderr)) < 0) ++ { ++ _log("Could not dup logh to stderr\n"); ++ return (0); ++ } ++ return (1); ++} ++ ++ ++void ++rip_die(int status, ++ const char *msg, ++ ...) ++{ ++ va_list ap; ++ ++ _log("Process is dying with \""); ++ va_start(ap, msg); ++ _logv(msg, ap); ++ va_end(ap); ++ _log("\", exit stat %d\n", status); ++ ++ _log("Cleaning up...\n"); ++ kill_all_processes(); ++ ++ exit(status); ++} + + + const char * +@@ -1449,3 +1515,276 @@ copy_file(FILE *dest, + + return (!ferror(src) && !ferror(dest)); + } ++ ++ ++// ++// 'hash_data()' - Hash presented data with CUPS API hash function. ++// ++ ++int // O - success 0/error 1 ++hash_data(unsigned char *data, // I - Data to hash ++ size_t datalen, // I - Length of data ++ char *hash_string, // O - Hexadecimal hashed string ++ size_t string_len) // I - Length of hexadecimal hashed string ++{ ++ unsigned char hash[32]; // Array for saving hash ++ ++ ++ if ((cupsHashData(hash_alg, data, datalen, hash, sizeof(hash))) == -1) ++ { ++ fprintf(stderr, "\"%s\" - Error when hashing\n", data); ++ return (1); ++ } ++ ++ if ((cupsHashString(hash, sizeof(hash), hash_string, string_len)) == NULL) ++ { ++ fprintf(stderr, "Error when encoding hash to hexadecimal\n"); ++ return (1); ++ } ++ ++ return (0); ++} ++ ++ ++// ++// 'load_system_hashes()' - Load hashes from system. ++// ++ ++int // O - success 0 / error 1 ++load_system_hashes(cups_array_t **hashes) // O - Array of existing hashes ++{ ++ char filename[1024]; // Absolute path to file ++ cups_dir_t *dir = NULL; // CUPS struct representing dir ++ cups_dentry_t *dent = NULL; // CUPS struct representing an object in directory ++ int i = 0; // Array index ++ ++ // ++ // System directories to load system hashes from (defined in Makefile.am) ++ // ++ // SYS_HASH_PATH - /usr/share/foomatic/hashes.d by default ++ // USR_HASH_PATH - /etc/foomatic/hashes.d by default ++ // ++ ++ const char *dirs[] = { ++ SYS_HASH_PATH, ++ USR_HASH_PATH, ++ NULL ++ }; ++ ++ if (!hashes) ++ return (1); ++ ++ if ((*hashes = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free)) == NULL) ++ { ++ fprintf(stderr, "Could not allocate array for hashes.\n"); ++ return (1); ++ } ++ ++ // ++ // Go through files in directories and load hashes... ++ // ++ ++ while (dirs[i] != NULL) ++ { ++ if ((dir = cupsDirOpen(dirs[i])) == NULL) ++ { ++ fprintf(stderr, "Could not open the directory \"%s\" - ignoring...\n", dirs[i++]); ++ continue; ++ } ++ ++ while ((dent = cupsDirRead(dir)) != NULL) ++ { ++ // Ignore any unsafe files - dirs, symlinks, hidden files, non-root writable files... ++ ++ if (!strncmp(dent->filename, "../", 3) || ++ dent->fileinfo.st_uid || ++ (dent->fileinfo.st_mode & S_IWGRP) || ++ (dent->fileinfo.st_mode & S_ISUID) || ++ (dent->fileinfo.st_mode & S_IWOTH)) ++ continue; ++ ++ snprintf(filename, sizeof(filename), "%s/%s", dirs[i], dent->filename); ++ ++ if (!is_valid_path(filename, IS_FILE)) ++ continue; ++ ++ if (load_array(hashes, filename)) ++ continue; ++ } ++ ++ cupsDirClose(dir); ++ ++ i++; ++ } ++ ++ return (0); ++} ++ ++ ++// ++// `load_array()` - Loads data from file into CUPS array... ++// ++ ++int // O - Return value, 0 - success, 1 - error ++load_array(cups_array_t **ar, // O - CUPS array to fill up - NULL/pointer - caller is responsible for freeing memory ++ char *filename) // I - Path to a file ++{ ++ char line[2048]; // Input array for line reading ++ cups_file_t *fp = NULL; // File with data ++ ++ ++ // ++ // Make sure the file is valid and the pointer is not NULL... ++ // ++ ++ if (!is_valid_path(filename, IS_FILE) || !ar) ++ return (1); ++ ++ memset(line, 0, sizeof(line)); ++ ++ if (!*ar) ++ { ++ if((*ar = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free)) == NULL) ++ { ++ fprintf(stderr, "Cannot allocate array.\n"); ++ *ar = NULL; ++ return (1); ++ } ++ } ++ ++ // ++ // Has to be accessible, but it is possible the file does not exist ++ // and will be created in the end... ++ // ++ ++ if (access(filename, F_OK)) ++ { ++ // ++ // It is fine for the file has not existed yet - it will be created in the end... ++ // ++ ++ if (errno == ENOENT) ++ return (0); ++ else ++ { ++ fprintf(stderr, "File \"%s\" is not accessible.\n", filename); ++ return (1); ++ } ++ } ++ ++ // ++ // Read the file line by line... ++ // ++ ++ if ((fp = cupsFileOpen(filename, "r")) == NULL) ++ { ++ fprintf(stderr, "Cannot open file \"%s\" for read.\n", filename); ++ return (1); ++ } ++ ++ while (cupsFileGets(fp, line, sizeof(line))) ++ { ++ if (!cupsArrayFind(*ar, line)) ++ cupsArrayAdd(*ar, line); ++ ++ memset(line, 0, sizeof(line)); ++ } ++ ++ cupsFileClose(fp); ++ ++ return (0); ++} ++ ++ ++// ++// `is_valid_path()` - Checks whether the input path is valid ++// - correct length, file type, correct characters... ++// ++ ++int // O - Boolean value, 0 - invalid/1 - valid ++is_valid_path(char *path, // I - Path ++ enum filetype type) // I - Desired file type - file/dir ++{ ++ char *filename = NULL; // Filename stripped of possible path ++ struct stat fileinfo; // For checking whether file is symlink/dir ++ size_t len = strlen(path); // Path len ++ ++ // ++ // Check whether the whole path is not too long... ++ // ++ ++ if (len > PATH_MAX || len == 0) ++ return (0); ++ ++ // ++ // Be sure we can access the file, is of the correct filetype and is not symlink... ++ // Non-existing file is okay at the moment. ++ // ++ ++ if (stat(path, &fileinfo)) ++ { ++ if (errno != ENOENT) ++ { ++ fprintf(stderr, "The provided filename \"%s\" is not an acceptable file - %s.\n", path, strerror(errno)); ++ return (0); ++ } ++ } ++ else ++ { ++ if ((type & IS_FILE) && S_ISDIR(fileinfo.st_mode)) ++ { ++ fprintf(stderr, "The provided filename \"%s\" is not a file.\n", path); ++ return (0); ++ } ++ ++ if ((type & IS_DIR) && !S_ISDIR(fileinfo.st_mode)) ++ { ++ fprintf(stderr, "The provided filename \"%s\" is not a directory.\n", path); ++ return (0); ++ } ++ ++ if (S_ISLNK(fileinfo.st_mode)) ++ { ++ fprintf(stderr, "The provided filename \"%s\" is a symlink, which is not allowed.\n", path); ++ return (0); ++ } ++ } ++ ++ // ++ // We accept paths only with alphanumeric characters, dots, dashes, underscores, slashes... ++ // ++ ++ for (int i = 0; i < len - 1; i++) ++ { ++ if (!isalnum(path[i]) && path[i] != '.' && ++ path[i] != '-' && path[i] != '_' && ++ path[i] != '/') ++ { ++ fprintf(stderr, "The provided path contain non-ASCII characters.\n"); ++ return (0); ++ } ++ } ++ ++ // ++ // Get the filename itself... ++ // ++ ++ if ((filename = strrchr(path, '/')) == NULL) ++ filename = path; ++ else ++ filename++; ++ ++ if (strlen(filename) > NAME_MAX) ++ { ++ fprintf(stderr, "The filename is too long.\n"); ++ return (0); ++ } ++ ++ if (filename[0] == '.') ++ { ++ fprintf(stderr, "No hidden files.\n"); ++ return (0); ++ } ++ ++ return (1); ++} +diff --git a/filter/foomatic-rip/util.h b/filter/foomatic-rip/util.h +index e071e8151..ef275e411 100644 +--- a/filter/foomatic-rip/util.h ++++ b/filter/foomatic-rip/util.h +@@ -18,11 +18,70 @@ + #endif + + #include "config.h" ++#include <cups/cups.h> + #include <string.h> + #include <stdio.h> + ++#if CUPS_VERSION_MAJOR <= 2 && CUPS_VERSION_MINOR < 5 ++# define cupsArrayGetFirst(ar) cupsArrayFirst(ar) ++# define cupsArrayGetNext(ar) cupsArrayNext(ar) ++#endif ++ ++// Constants used by this filter ++// ++// Error codes, as some spoolers behave different depending on the reason why ++// the RIP failed, we return an error code. ++ ++#define EXIT_PRINTED 0 // file was printed normally ++#define EXIT_PRNERR 1 // printer error occured ++#define EXIT_PRNERR_NORETRY 2 // printer error with no hope ++ // of retry ++#define EXIT_JOBERR 3 // job is defective ++#define EXIT_SIGNAL 4 // terminated after catching ++ // signal ++#define EXIT_ENGAGED 5 // printer is otherwise engaged ++ // (connection refused) ++#define EXIT_STARVED 6 // starved for system resources ++#define EXIT_PRNERR_NORETRY_ACCESS_DENIED 7 // bad password? bad port ++ // permissions? ++#define EXIT_PRNERR_NOT_RESPONDING 8 // just doesn't answer at all ++ // (turned off?) ++#define EXIT_PRNERR_NORETRY_BAD_SETTINGS 9 // interface settings are ++ // invalid ++#define EXIT_PRNERR_NO_SUCH_ADDRESS 10 // address lookup failed, may ++ // be transient ++#define EXIT_PRNERR_NORETRY_NO_SUCH_ADDRESS 11 // address lookup failed, not ++ // transient ++#define EXIT_PRNERR_NOTALLOWED 12 // the value is not allowed on the system ++#define EXIT_INCAPABLE 50 // printer wants (lacks) ++ // features or resources ++ ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif ++ ++#define CMDLINE_MAX 65536 ++ ++#ifndef NAME_MAX ++#define NAME_MAX 255 ++#endif ++ + ++extern const char *hash_alg; + extern const char* shellescapes; ++extern FILE* logh; ++ ++// used for path validation - parameter --ppd supports files, --ppd-paths directories ++enum filetype { ++ IS_FILE, ++ IS_DIR ++}; ++ ++// logging and exiting... ++void _log(const char* msg, ...); ++void rip_die(int status, const char *msg, ...); ++int redirect_log_to_stderr(); ++void close_log(); + + int isempty(const char *string); + const char * temp_dir(); +@@ -132,6 +191,14 @@ int contains_command(const char *cmdline, const char *cmd); + int copy_file(FILE *dest, FILE *src, const char *alreadyread, + size_t alreadyread_len); + ++// File related functions with CUPS arrays ++int load_array(cups_array_t **ar, char *filename); ++int is_valid_path(char *path, enum filetype type); ++ ++// Hash functions ++int hash_data(unsigned char* data, size_t datalen, char *hash_string, size_t string_len); ++int load_system_hashes(cups_array_t **hashes); ++ + // Dynamic string + typedef struct dstr + { +-- +2.50.1 + diff --git a/cups-filters.spec b/cups-filters.spec index d2feb9f..24288ba 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 7%{?dist} +Release: 8%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -33,6 +33,9 @@ Source2: lftocrlf # Patches # https://github.com/OpenPrinting/cups-filters/pull/618 Patch001: 0001-Fix-build-failure-with-GCC-15-and-std-c23.patch +# introducing foomatic-hash, but without rejecting values in foomatic-rip +# https://github.com/OpenPrinting/cups-filters/pull/648 +Patch002: 0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch # driverless backend/driver was moved into a separate package to @@ -185,6 +188,7 @@ fi %files %license COPYING LICENSE NOTICE %doc AUTHORS ABOUT-NLS CHANGES.md CONTRIBUTING.md DEVELOPING.md README.md +%{_bindir}/foomatic-hash %{_bindir}/foomatic-rip %attr(0744,root,root) %{_cups_serverbin}/backend/beh # all backends needs to be run only as root because of kerberos @@ -222,6 +226,8 @@ fi %{_datadir}/cups/mime/cupsfilters-ghostscript.convs %{_datadir}/cups/mime/cupsfilters-individual.convs %{_datadir}/cups/mime/cupsfilters-poppler.convs +%dir %{_datadir}/foomatic +%dir %{_datadir}/foomatic/hashes.d %{_datadir}/ppd/cupsfilters %if %{with cups_ppdc} # escp.h and pcl.h are required during runtime, because @@ -234,7 +240,9 @@ fi %{_datadir}/ppdc/escp.h %{_datadir}/ppdc/pcl.h %endif +%{_mandir}/man1/foomatic-hash.1.gz %{_mandir}/man1/foomatic-rip.1.gz +%config(noreplace) %{_sysconfdir}/foomatic %files driverless %license COPYING LICENSE NOTICE @@ -248,6 +256,9 @@ fi %changelog +* Wed Jul 30 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-8 +- Introduce foomatic-hash, but not rejecting values in foomatic-rip + * Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:2.0.1-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From b7ff25e58f6c7e642d4eaf1b53c99fd90c88ebfa Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 5 Aug 2025 15:11:58 +0200 Subject: [PATCH 189/197] Foomatic-rip rejects unknown values (fedora#2386892) See https://fedoraproject.org/wiki/Changes/FoomaticRipRejectsUnknownValues for more information. --- cups-filters.spec | 95 +++++++++++- foomatic-ripdie-error.patch | 13 ++ foomaticrip-reject-unknown-values.patch | 188 ++++++++++++++++++++++++ 3 files changed, 294 insertions(+), 2 deletions(-) create mode 100644 foomatic-ripdie-error.patch create mode 100644 foomaticrip-reject-unknown-values.patch diff --git a/cups-filters.spec b/cups-filters.spec index 24288ba..9f19100 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 8%{?dist} +Release: 9%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -36,6 +36,12 @@ Patch001: 0001-Fix-build-failure-with-GCC-15-and-std-c23.patch # introducing foomatic-hash, but without rejecting values in foomatic-rip # https://github.com/OpenPrinting/cups-filters/pull/648 Patch002: 0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch +# make sure errors from foomatic-rip are propagated +# https://github.com/OpenPrinting/cups-filters/pull/649 +Patch003: foomatic-ripdie-error.patch +# rejecting the unknown values in foomatic-rip +# https://github.com/OpenPrinting/cups-filters/pull/648 +Patch004: foomaticrip-reject-unknown-values.patch # driverless backend/driver was moved into a separate package to @@ -68,6 +74,8 @@ BuildRequires: pkgconfig(libcupsfilters) >= 2.0b3 BuildRequires: pkgconfig(libppd) >= 2.0b3 # Make sure we get postscriptdriver tags. BuildRequires: python3-cups +# for systemd unit for upgrade +BuildRequires: systemd-rpm-macros %if %{with braille} Recommends: braille-printer-app @@ -83,6 +91,7 @@ Apple Inc. In addition it contains additional filters developed independently of Apple, especially filters for the PDF-centric printing workflow introduced by OpenPrinting. + %package driverless Summary: OpenPrinting driverless backends and drivers for CUPS 2.X License: Apache-2.0 WITH LLVM-exception @@ -107,6 +116,7 @@ Recommends: nss-mdns # needs cups dirs Requires: cups-filesystem + %description driverless Contains backends and drivers for driverless implementation for cups-filters, which makes driverless printers to be seen when listing printers nearby and gives @@ -114,8 +124,16 @@ a specific generated driver for driverless printer in the local network. They ar tools for backward compatibility with applications which don't handle CUPS temporary queues. + %prep -%autosetup -S git +%autosetup -S git -N + +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 +%autopatch +%else +%autopatch -M 3 +%endif + %build # work-around Rpath @@ -131,6 +149,7 @@ queues. %make_build + %install %make_install @@ -138,6 +157,56 @@ queues. install -p -m 0755 %{SOURCE2} %{buildroot}%{_cups_serverbin}/filter/lftocrlf install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.ppd +mkdir -p %{buildroot}%{_libexecdir}/%{name} + +cat > %{buildroot}%{_libexecdir}/%{name}/posttrans.sh << EOF +#!/usr/bin/bash + +if \$(grep -q -R 'FoomaticRIPCommandLine\|FoomaticRipOptionSetting' %{_sysconfdir}/cups/ppd) +then + tmpfile=\$(mktemp -p /var/tmp foomatic-scan.XXXXXXXX) + + for ppd in %{_sysconfdir}/cups/ppd/*.ppd + do + foomatic-hash --ppd \$ppd \$tmpfile %{_sysconfdir}/foomatic/hashes.d/hashes.upgrade || : + done + + if test -f %{_sysconfdir}/foomatic/hashes.d/hashes.upgrade + then + echo "Foomatic-rip values which can inject code found - review findings in \$tmpfile. Read release notes for instructions." || : + fi +else + touch %{_sysconfdir}/foomatic/hashes.d/hashes.new +fi + +exit 0 +EOF + +mkdir -p %{buildroot}%{_unitdir} + +cat > %{buildroot}%{_unitdir}/foomaticrip-upgrade.service << EOF +[Unit] +Description=Allowing already installed printers for foomatic-rip +ConditionPathIsDirectory=%{_sysconfdir}/foomatic/hashes.d +ConditionDirectoryNotEmpty=!%{_sysconfdir}/foomatic/hashes.d + +[Service] +Type=oneshot +ExecStart=bash -c %{_libexecdir}/%{name}/posttrans.sh + +[Install] +WantedBy=multi-user.target +EOF + +mkdir -p %{buildroot}%{_unitdir}/cups.service.d + +cat > %{buildroot}%{_unitdir}/cups.service.d/10-foomaticrip-upgrade.conf << EOF +[Unit] +After=foomaticrip-upgrade.service +Wants=foomaticrip-upgrade.service +EOF + + # LSB3.2 requires /usr/bin/foomatic-rip, # create it temporarily as a relative symlink # we may use symlink to universal filter, but LSB is about guaranteed compatibility set @@ -171,8 +240,19 @@ if [ $1 -gt 1 ] then rm -f /var/cache/cups/ppds.dat || : fi +%systemd_post foomaticrip-upgrade.service + + +%preun +%systemd_preun foomaticrip-upgrade.service + + +%postun +%systemd_postun foomaticrip-upgrade.service + %posttrans +%systemd_posttrans_with_reload foomaticrip-upgrade.service if [ $1 -gt 1 ] then # since we moved to individual filters, we have to restart cups @@ -182,6 +262,8 @@ then then systemctl restart cups || : fi + + systemctl start foomaticrip-upgrade.service || : fi @@ -240,9 +322,15 @@ fi %{_datadir}/ppdc/escp.h %{_datadir}/ppdc/pcl.h %endif +%dir %{_libexecdir}/%{name} +%attr(0744,root,root) %{_libexecdir}/%{name}/posttrans.sh %{_mandir}/man1/foomatic-hash.1.gz %{_mandir}/man1/foomatic-rip.1.gz %config(noreplace) %{_sysconfdir}/foomatic +%ghost %{_sysconfdir}/foomatic/hashes.d/hashes.new +%dir %{_unitdir}/cups.service.d +%{_unitdir}/cups.service.d/10-foomaticrip-upgrade.conf +%{_unitdir}/foomaticrip-upgrade.service %files driverless %license COPYING LICENSE NOTICE @@ -256,6 +344,9 @@ fi %changelog +* Thu Jul 31 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-9 +- Reject unknown values in foomatic-rip + * Wed Jul 30 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-8 - Introduce foomatic-hash, but not rejecting values in foomatic-rip diff --git a/foomatic-ripdie-error.patch b/foomatic-ripdie-error.patch new file mode 100644 index 0000000..2ef0166 --- /dev/null +++ b/foomatic-ripdie-error.patch @@ -0,0 +1,13 @@ +diff --git a/filter/foomatic-rip/util.c b/filter/foomatic-rip/util.c +index 508bc09..ad79fbf 100644 +--- a/filter/foomatic-rip/util.c ++++ b/filter/foomatic-rip/util.c +@@ -76,7 +76,7 @@ rip_die(int status, + { + va_list ap; + +- _log("Process is dying with \""); ++ _log("ERROR: Process is dying with \""); + va_start(ap, msg); + _logv(msg, ap); + va_end(ap); diff --git a/foomaticrip-reject-unknown-values.patch b/foomaticrip-reject-unknown-values.patch new file mode 100644 index 0000000..3a90e74 --- /dev/null +++ b/foomaticrip-reject-unknown-values.patch @@ -0,0 +1,188 @@ +From 41c5f2f6139e4d3693c2483ee4281202a80ae451 Mon Sep 17 00:00:00 2001 +From: zdohnal <zdohnal@redhat.com> +Date: Tue, 22 Jul 2025 15:12:19 +0200 +Subject: [PATCH] Introduce foomatic-hash and reject unauthorized values in + foomatic-rip (#648) + +The change provides a way for users to have control over what values are +allowed for the foomatic-rip-related PPD keywords FoomaticRIPCommandLine, +FoomaticRIPCommandLinePDF, and FoomaticRIPOptionSetting. Since the +values can be later used when constructing a shell command, the filter +foomatic-rip was a target of several exploits (caused by issues at +different places in CUPS or in different projects of the printing stack) to +do arbitrary code execution when the filter is used. + +By default the filter is run by user lp, so the issue is mitigated, but +this PR gives admin complete control over what can be run in +foomatic-rip and reject anything injected into system via different +ways. + +First, the new tool - foomatic-hash - can be called on a PPD file or +directory with drivers/PPDs, with scan output and file with hexadecimal +representation of hashed values. Once the scan output is reviewed by +admin, admin can decide to put the resulting hashes into +/etc/foomatic/hashes.d and allow them for the filter. +--- + Makefile.am | 44 ++- + README.md | 23 ++ + configure.ac | 2 +- + filter/foomatic-rip/foomatic-hash.1 | 66 ++++ + filter/foomatic-rip/foomatic-hash.c | 549 ++++++++++++++++++++++++++ + filter/foomatic-rip/foomatic-rip.1.in | 16 + + filter/foomatic-rip/foomaticrip.c | 75 ---- + filter/foomatic-rip/foomaticrip.h | 40 -- + filter/foomatic-rip/options.c | 67 ++++ + filter/foomatic-rip/process.c | 9 + + filter/foomatic-rip/process.h | 3 + + filter/foomatic-rip/util.c | 341 +++++++++++++++- + filter/foomatic-rip/util.h | 67 ++++ + 13 files changed, 1178 insertions(+), 124 deletions(-) + create mode 100644 filter/foomatic-rip/foomatic-hash.1 + create mode 100644 filter/foomatic-rip/foomatic-hash.c + +diff --git a/filter/foomatic-rip/foomatic-rip.1.in b/filter/foomatic-rip/foomatic-rip.1.in +index 9685a95f5..3dff5215f 100644 +--- a/filter/foomatic-rip/foomatic-rip.1.in ++++ b/filter/foomatic-rip/foomatic-rip.1.in +@@ -193,6 +193,15 @@ friends. Several PPD files use shell constructs that require a more + modern shell like \fBbash\fR, \fBzsh\fR, or \fBksh\fR. + + ++.SH PPD OPTION VALUE RESTRICTIONS AND EXCEPTIONS ++ ++The values of PPD options \fBFoomaticRIPCommandLine\fR, \fBFoomaticRIPCommandLinePDF\fR and \fBFoomaticRIPOptionSetting\fR ++are rejected in the default configuration because of security implications. Users can use the tool \fBfoomatic-hash(1)\fR, which provides ++values of affected PPD options from found drivers and hashes of those values in hexadecimal format. User is expected to review the found values, ++and if there is nothing suspicious in the output, copy the file with hashes into into the directory \fB@sysconfdir@/foomatic/hashes.d\fR ++to allow the exceptions for found values. ++ ++ + .SH FILES + .PD 0 + .TP 0 +@@ -209,6 +218,13 @@ The PPD files of the currently defined printers + + Configuration file for foomatic-rip + ++.TP 0 ++@sysconfdir@/foomatic/hashes.d ++.TP 0 ++@datadir@/foomatic/hashes.d ++ ++Directories with hashes of allowed values ++ + .PD 0 + + .\".SH SEE ALSO +diff --git a/filter/foomatic-rip/options.c b/filter/foomatic-rip/options.c +index bad833bc1..032fe9ec3 100644 +--- a/filter/foomatic-rip/options.c ++++ b/filter/foomatic-rip/options.c +@@ -102,6 +102,42 @@ get_icc_profile_for_qualifier(const char **qualifier) + } + + ++// ++// 'is_allowed_value' - Check if the option value is allowed. ++// ++ ++int // O - Boolean value - true 1 / false 0 ++is_allowed_value(cups_array_t *ar, // I - Array of already known hashes from system ++ char *value, // I - Scanned value from PPD file ++ size_t value_len) // I - Value length ++{ ++ char hash_string[65]; // Help array to store hexadecimal hashed string ++ ++ // ++ // Empty string is allowed... ++ // ++ ++ if (!value_len) ++ return (1); ++ ++ // ++ // Hash the value and get hexadecimal string for it... ++ // ++ ++ if (hash_data((unsigned char*)value, value_len, hash_string, sizeof(hash_string))) ++ return (0); ++ ++ // ++ // Check if the found hexadecimal hashed string is in the array -> allowed on the system... ++ // ++ ++ if (cupsArrayFind(ar, hash_string)) ++ return (1); ++ ++ return (0); ++} ++ ++ + // a selector is a general tri-dotted specification. + // The 2nd and 3rd elements of the qualifier are optionally modified by + // cupsICCQualifier2 and cupsICCQualifier3: +@@ -1866,12 +1902,19 @@ read_ppd_file(const char *filename) + option_t *opt, *current_opt = NULL; + param_t *param; + icc_mapping_entry_t *entry; ++ cups_array_t *known_hashes = NULL; + + fh = fopen(filename, "r"); + if (!fh) + rip_die(EXIT_PRNERR_NORETRY_BAD_SETTINGS, "Unable to open PPD file %s\n", filename); + _log("Parsing PPD file ...\n"); + ++ if (load_system_hashes(&known_hashes)) ++ { ++ fclose(fh); ++ rip_die(EXIT_PRNERR_NORETRY, "Not enough memory for array allocation\n."); ++ } ++ + dstrassure(value, 256); + + qualifier_data = list_create(); +@@ -1955,10 +1998,26 @@ read_ppd_file(const char *filename) + } + else if (strcmp(key, "FoomaticRIPCommandLine") == 0) + { ++ if (!is_allowed_value(known_hashes, value->data, strlen(value->data))) ++ { ++ cupsArrayDelete(known_hashes); ++ fclose(fh); ++ ++ rip_die(EXIT_PRNERR_NOTALLOWED, "ERROR: The value of the key %s is not among the allowed values - see foomatic-rip man page for more instructions.\n", key); ++ } ++ + unhtmlify(cmd, 4096, value->data); + } + else if (strcmp(key, "FoomaticRIPCommandLinePDF") == 0) + { ++ if (!is_allowed_value(known_hashes, value->data, strlen(value->data))) ++ { ++ cupsArrayDelete(known_hashes); ++ fclose(fh); ++ ++ rip_die(EXIT_PRNERR_NOTALLOWED, "ERROR: The value of the key %s is not among the allowed values - see foomatic-rip man page for more instructions.\n", key); ++ } ++ + unhtmlify(cmd_pdf, 4096, value->data); + } + else if (!strcmp(key, "cupsFilter")) +@@ -2097,6 +2156,14 @@ read_ppd_file(const char *filename) + } + else if (!strcmp(key, "FoomaticRIPOptionSetting")) + { ++ if (!is_allowed_value(known_hashes, value->data, strlen(value->data))) ++ { ++ cupsArrayDelete(known_hashes); ++ fclose(fh); ++ ++ rip_die(EXIT_PRNERR_NOTALLOWED, "ERROR: The value of the key %s is not among the allowed values - see foomatic-rip man page for more instructions.\n", key); ++ } ++ + // "*FoomaticRIPOptionSetting <option>[=<choice>]: <code> + // For boolean options <choice> is not given + option_set_choice(assure_option(name), +-- +2.50.1 + From c1695f504f2c656728b1f094353eacd18de289b5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 26 Aug 2025 08:52:05 +0200 Subject: [PATCH 190/197] plans dir was substituted by plans.fmf --- plans/public.fmf | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 plans/public.fmf diff --git a/plans/public.fmf b/plans/public.fmf deleted file mode 100644 index 99e363b..0000000 --- a/plans/public.fmf +++ /dev/null @@ -1,6 +0,0 @@ -summary: Test plan that runs all tests from cups tests repo. -discover: - how: fmf - url: https://src.fedoraproject.org/tests/cups-filters.git -execute: - how: tmt From 66a0dd1a216ade595d6a4377ea95974bc39a0f5d Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 26 Aug 2025 12:27:05 +0200 Subject: [PATCH 191/197] Mention the change being for F43+ --- cups-filters.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 9f19100..f0f970d 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -345,7 +345,7 @@ fi %changelog * Thu Jul 31 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-9 -- Reject unknown values in foomatic-rip +- Reject unknown values in foomatic-rip in F43+ * Wed Jul 30 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-8 - Introduce foomatic-hash, but not rejecting values in foomatic-rip From 480a0f03256abdd6b04f651b3fb0248d4242070b Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 26 Aug 2025 12:47:04 +0200 Subject: [PATCH 192/197] Remove old public target from gating --- gating.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/gating.yaml b/gating.yaml index ba0cbf9..e808fd9 100644 --- a/gating.yaml +++ b/gating.yaml @@ -4,7 +4,6 @@ product_versions: decision_context: bodhi_update_push_testing subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} #Rawhide @@ -14,7 +13,6 @@ product_versions: decision_context: bodhi_update_push_stable subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/cups-tier1-public.functional} From 398b8d5a287cadc06409cd5555da5c657279fca7 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Wed, 1 Oct 2025 16:35:21 +0200 Subject: [PATCH 193/197] protect older Fedoras from F43+ changes, fix installability report about hashes.new --- cups-filters.spec | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/cups-filters.spec b/cups-filters.spec index f0f970d..3ad8c25 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 9%{?dist} +Release: 10%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -157,6 +157,8 @@ queues. install -p -m 0755 %{SOURCE2} %{buildroot}%{_cups_serverbin}/filter/lftocrlf install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.ppd +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + mkdir -p %{buildroot}%{_libexecdir}/%{name} cat > %{buildroot}%{_libexecdir}/%{name}/posttrans.sh << EOF @@ -206,6 +208,8 @@ After=foomaticrip-upgrade.service Wants=foomaticrip-upgrade.service EOF +%endif + # LSB3.2 requires /usr/bin/foomatic-rip, # create it temporarily as a relative symlink @@ -240,19 +244,29 @@ if [ $1 -gt 1 ] then rm -f /var/cache/cups/ppds.dat || : fi -%systemd_post foomaticrip-upgrade.service + +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + %systemd_post foomaticrip-upgrade.service +%endif %preun -%systemd_preun foomaticrip-upgrade.service +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + %systemd_preun foomaticrip-upgrade.service +%endif %postun -%systemd_postun foomaticrip-upgrade.service +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + %systemd_postun foomaticrip-upgrade.service +%endif %posttrans -%systemd_posttrans_with_reload foomaticrip-upgrade.service +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + %systemd_posttrans_with_reload foomaticrip-upgrade.service +%endif + if [ $1 -gt 1 ] then # since we moved to individual filters, we have to restart cups @@ -263,7 +277,9 @@ then systemctl restart cups || : fi - systemctl start foomaticrip-upgrade.service || : + %if 0%{?fedora} >= 43 || 0%{?rhel} >=9 + systemctl start foomaticrip-upgrade.service || : + %endif fi @@ -322,15 +338,17 @@ fi %{_datadir}/ppdc/escp.h %{_datadir}/ppdc/pcl.h %endif -%dir %{_libexecdir}/%{name} -%attr(0744,root,root) %{_libexecdir}/%{name}/posttrans.sh %{_mandir}/man1/foomatic-hash.1.gz %{_mandir}/man1/foomatic-rip.1.gz %config(noreplace) %{_sysconfdir}/foomatic -%ghost %{_sysconfdir}/foomatic/hashes.d/hashes.new +%if 0%{?fedora} >= 43 || 0%{?rhel} >=9 +%dir %{_libexecdir}/%{name} +%attr(0744,root,root) %{_libexecdir}/%{name}/posttrans.sh +%ghost %attr(0644,root,root) %{_sysconfdir}/foomatic/hashes.d/hashes.new %dir %{_unitdir}/cups.service.d %{_unitdir}/cups.service.d/10-foomaticrip-upgrade.conf %{_unitdir}/foomaticrip-upgrade.service +%endif %files driverless %license COPYING LICENSE NOTICE @@ -344,6 +362,9 @@ fi %changelog +* Wed Oct 01 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-10 +- protect older Fedoras from F43+ changes, fix installability report about hashes.new + * Thu Jul 31 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-9 - Reject unknown values in foomatic-rip in F43+ From 18de77feb8399793a8cb6a9cf9bb2ca779df613f Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon, 10 Nov 2025 13:45:43 +0100 Subject: [PATCH 194/197] change return value of foomatic-hash if built without libppd --- ...ntroduce-foomatic-hash-and-reject-unauthorized-valu.patch | 2 +- cups-filters.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch b/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch index 21d59cb..a40fc5e 100644 --- a/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch +++ b/0001-Introduce-foomatic-hash-and-reject-unauthorized-valu.patch @@ -731,7 +731,7 @@ index 000000000..6e563870f +#else + fprintf(stdout, "foomatic-hash is not compiled with LIBPPD support.\n"); + -+ return (0); ++ return (1); +#endif // HAVE_LIBPPD +} + diff --git a/cups-filters.spec b/cups-filters.spec index 3ad8c25..21f6669 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 10%{?dist} +Release: 11%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -362,6 +362,9 @@ fi %changelog +* Mon Nov 10 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-11 +- change return value of foomatic-hash if built without libppd + * Wed Oct 01 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-10 - protect older Fedoras from F43+ changes, fix installability report about hashes.new From a8ee5f8620292a7fa9e1fa97b1f4a57402c5ab30 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 28 Nov 2025 07:59:14 +0100 Subject: [PATCH 195/197] fix CVE-2025-64524 --- cups-filters.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cups-filters.spec b/cups-filters.spec index 21f6669..5b900f5 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -17,7 +17,7 @@ Summary: OpenPrinting CUPS filters for CUPS 2.X Name: cups-filters Epoch: 1 Version: 2.0.1 -Release: 11%{?dist} +Release: 12%{?dist} # the CUPS exception text is the same as LLVM exception, so using that name with # agreement from legal team @@ -42,6 +42,8 @@ Patch003: foomatic-ripdie-error.patch # rejecting the unknown values in foomatic-rip # https://github.com/OpenPrinting/cups-filters/pull/648 Patch004: foomaticrip-reject-unknown-values.patch +# CVE-2025-64524 fix +Patch005: 0001-rastertopclx.c-Fix-infinite-loop-caused-by-crafted-f.patch # driverless backend/driver was moved into a separate package to @@ -362,6 +364,9 @@ fi %changelog +* Fri Nov 28 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-12 +- fix CVE-2025-64524 + * Mon Nov 10 2025 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.0.1-11 - change return value of foomatic-hash if built without libppd From a7475c5579051f178543c8d4c814b1f519309453 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Fri, 28 Nov 2025 07:59:14 +0100 Subject: [PATCH 196/197] fix CVE-2025-64524 - add patch --- ...ix-infinite-loop-caused-by-crafted-f.patch | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 0001-rastertopclx.c-Fix-infinite-loop-caused-by-crafted-f.patch diff --git a/0001-rastertopclx.c-Fix-infinite-loop-caused-by-crafted-f.patch b/0001-rastertopclx.c-Fix-infinite-loop-caused-by-crafted-f.patch new file mode 100644 index 0000000..b5a334c --- /dev/null +++ b/0001-rastertopclx.c-Fix-infinite-loop-caused-by-crafted-f.patch @@ -0,0 +1,79 @@ +From 0fe46c511e81062575b05936f804eb18c9f0a011 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal <zdohnal@redhat.com> +Date: Wed, 12 Nov 2025 15:47:24 +0100 +Subject: [PATCH] rastertopclx.c: Fix infinite loop caused by crafted file + +Infinite loop happened because of crafted input raster file, which led +into heap buffer overflow of `CompressBuf` array. + +Based on comments there should be always some `count` when compressing +the data, and processing of crafted file ended with offset and count +being 0. + +Fixes CVE-2025-64524 +--- + filter/rastertopclx.c | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +diff --git a/filter/rastertopclx.c b/filter/rastertopclx.c +index ded86f114..39cb378bf 100644 +--- a/filter/rastertopclx.c ++++ b/filter/rastertopclx.c +@@ -825,10 +825,10 @@ StartPage(cf_filter_data_t *data, // I - filter data + } + + if (header->cupsCompression) +- CompBuffer = malloc(DotBufferSize * 4); ++ CompBuffer = calloc(DotBufferSize * 4, sizeof(unsigned char)); + + if (header->cupsCompression >= 3) +- SeedBuffer = malloc(DotBufferSize); ++ SeedBuffer = calloc(DotBufferSize, sizeof(unsigned char)); + + SeedInvalid = 1; + +@@ -1159,6 +1159,13 @@ CompressData(unsigned char *line, // I - Data to compress + seed ++; + count ++; + } ++ ++ // ++ // Bail out if we don't have count to compress ++ // ++ ++ if (count == 0) ++ break; + } + + // +@@ -1252,6 +1259,13 @@ CompressData(unsigned char *line, // I - Data to compress + + count = line_ptr - start; + ++ // ++ // Bail out if we don't have count to compress ++ // ++ ++ if (count == 0) ++ break; ++ + #if 0 + fprintf(stderr, + "DEBUG: offset=%d, count=%d, comp_ptr=%p(%d of %d)...\n", +@@ -1424,6 +1438,13 @@ CompressData(unsigned char *line, // I - Data to compress + + count = (line_ptr - start) / 3; + ++ // ++ // Bail out if we don't have count to compress ++ // ++ ++ if (count == 0) ++ break; ++ + // + // Place mode 10 compression data in the buffer; each sequence + // starts with a command byte that looks like: +-- +2.51.1 + From 41507f739ce5cb2199f968d5960da76d71cd4dcc Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal <zdohnal@redhat.com> Date: Tue, 2 Dec 2025 08:05:03 +0100 Subject: [PATCH 197/197] spec: mention when to remove the upgrade script --- cups-filters.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/cups-filters.spec b/cups-filters.spec index 5b900f5..8d236ce 100644 --- a/cups-filters.spec +++ b/cups-filters.spec @@ -159,6 +159,7 @@ queues. install -p -m 0755 %{SOURCE2} %{buildroot}%{_cups_serverbin}/filter/lftocrlf install -p -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/ppd/cupsfilters/lftocrlf.ppd +# remove this once F43 is EOL %if 0%{?fedora} >= 43 || 0%{?rhel} >=9 mkdir -p %{buildroot}%{_libexecdir}/%{name}