[cups] Updated colord patch with fixes to DeleteDevice. Resolves https://bugzilla.redhat.com/show_bug.cgi?i
Richard Hughes
rhughes at fedoraproject.org
Mon Oct 3 11:31:37 UTC 2011
commit 4c3d853b67809e5f15dce7774413de17cf322300
Author: Richard Hughes <richard at hughsie.com>
Date: Mon Oct 3 12:30:59 2011 +0100
Updated colord patch with fixes to DeleteDevice.
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=741697
cups-icc.patch | 183 ++++++++++++++++++++++++++++++++++++++++++++++----------
cups.spec | 6 ++-
2 files changed, 157 insertions(+), 32 deletions(-)
---
diff --git a/cups-icc.patch b/cups-icc.patch
index ffcb4da..db4ae22 100644
--- a/cups-icc.patch
+++ b/cups-icc.patch
@@ -1,4 +1,4 @@
-From 7a8aceb1e8585410e3fca17c2e349877915dfdac Mon Sep 17 00:00:00 2001
+From db29c24e3ff75938775aa1f4072e346aeb7f6a9c Mon Sep 17 00:00:00 2001
From: Richard Hughes <richard at hughsie.com>
Date: Tue, 1 Mar 2011 16:05:48 +0000
Subject: [PATCH] Add colord support to CUPS which allows Linux printers to be
@@ -7,12 +7,12 @@ Subject: [PATCH] Add colord support to CUPS which allows Linux printers to be
This functionality is possible because of lots of help from Tim Waugh -- thanks!
---
scheduler/Makefile | 1 +
- scheduler/colord.c | 682 ++++++++++++++++++++++++++++++++++++++++++++++++++
- scheduler/colord.h | 22 ++
- scheduler/ipp.c | 18 ++-
+ scheduler/colord.c | 784 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ scheduler/colord.h | 41 +++
+ scheduler/ipp.c | 18 +-
scheduler/printers.c | 69 +++++
scheduler/printers.h | 4 +
- 6 files changed, 793 insertions(+), 3 deletions(-)
+ 6 files changed, 914 insertions(+), 3 deletions(-)
create mode 100644 scheduler/colord.c
create mode 100644 scheduler/colord.h
@@ -30,22 +30,40 @@ index 3c7da8e..b9c47d3 100644
log.o \
diff --git a/scheduler/colord.c b/scheduler/colord.c
new file mode 100644
-index 0000000..e420a6d
+index 0000000..bd06e1c
--- /dev/null
+++ b/scheduler/colord.c
-@@ -0,0 +1,682 @@
+@@ -0,0 +1,784 @@
+/*
+ * "$Id$"
+ *
+ * colord integration for the CUPS scheduler.
+ *
-+ * Copyright 2011, Red Hat.
++ * Copyright 2011 Red Hat, Inc.
+ *
-+ * These coded instructions, statements, and computer programs are the
-+ * property of Apple Inc. and are protected by Federal copyright
-+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
-+ * which should have been included with this file. If this file is
-+ * file is missing or damaged, see the license at "http://www.cups.org/".
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Contents:
+ *
@@ -302,6 +320,7 @@ index 0000000..e420a6d
+ ppd_file_t *ppd, /* I - PPD file */
+ cups_array_t *profiles, /* I - Profiles array */
+ const char *colorspace, /* I - Device colorspace, e.g. 'rgb' */
++ char **format, /* I - Device qualifier format */
+ const char *relation, /* I - Profile relation, either 'soft' or 'hard' */
+ const char *scope) /* I - The scope of the device, e.g.
+ 'normal', 'temp' or 'disk' */
@@ -316,6 +335,7 @@ index 0000000..e420a6d
+ char *default_profile_path = NULL;
+ /* Default profile path */
+ char device_id[1024]; /* Device ID as understood by colord */
++ char format_str[1024]; /* Qualifier format as a string */
+
+ /*
+ * Create the device...
@@ -333,6 +353,12 @@ index 0000000..e420a6d
+ dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &device_path);
+ dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &scope);
+
++ /* mush the qualifier format into a simple string */
++ snprintf(format_str, sizeof(format_str), "%s.%s.%s",
++ format[0],
++ format[1],
++ format[2]);
++
+ /* set initial properties */
+ dbus_message_iter_open_container(&args,
+ DBUS_TYPE_ARRAY,
@@ -346,6 +372,7 @@ index 0000000..e420a6d
+ message_dict_add_strings(&dict, "Model", ppd->modelname);
+ if (p->sanitized_device_uri != NULL)
+ message_dict_add_strings(&dict, "Serial", p->sanitized_device_uri);
++ message_dict_add_strings(&dict, "Format", format_str);
+ message_dict_add_strings(&dict, "Kind", COLORD_KIND_PRINTER);
+ dbus_message_iter_close_container(&args, &dict);
+
@@ -396,6 +423,64 @@ index 0000000..e420a6d
+}
+
+/*
++ * 'colordFindDeviceById()' - Finds a device
++ */
++
++static char *
++colordFindDeviceById (const char *device_id) /* I - Device ID string */
++{
++ DBusMessage *message = NULL; /* D-Bus request */
++ DBusMessage *reply = NULL; /* D-Bus reply */
++ DBusMessageIter args; /* D-Bus method arguments */
++ DBusError error; /* D-Bus error */
++ const char *device_path_tmp; /* Device object path */
++ char *device_path = NULL; /* Device object path */
++
++ message = dbus_message_new_method_call("org.freedesktop.ColorManager",
++ "/org/freedesktop/ColorManager",
++ "org.freedesktop.ColorManager",
++ "FindDeviceById");
++
++ dbus_message_iter_init_append(message, &args);
++ dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &device_id);
++
++ /* send syncronous */
++ dbus_error_init(&error);
++ cupsdLogMessage(CUPSD_LOG_DEBUG, "Calling FindDeviceById(%s)", device_id);
++ reply = dbus_connection_send_with_reply_and_block(con,
++ message,
++ COLORD_DBUS_TIMEOUT,
++ &error);
++ if (reply == NULL)
++ {
++ /* this can happen normally on start-up */
++ cupsdLogMessage(CUPSD_LOG_DEBUG,
++ "failed to DeleteDevice: %s:%s",
++ error.name, error.message);
++ dbus_error_free(&error);
++ goto out;
++ }
++
++ /* get reply data */
++ dbus_message_iter_init(reply, &args);
++ if (dbus_message_iter_get_arg_type(&args) != DBUS_TYPE_OBJECT_PATH)
++ {
++ cupsdLogMessage(CUPSD_LOG_WARN,
++ "incorrect reply type");
++ goto out;
++ }
++ dbus_message_iter_get_basic(&args, &device_path_tmp);
++ if (device_path_tmp != NULL)
++ device_path = strdup (device_path_tmp);
++out:
++ if (message != NULL)
++ dbus_message_unref(message);
++ if (reply != NULL)
++ dbus_message_unref(reply);
++ return device_path;
++}
++
++/*
+ * 'colordDeleteDevice()' - Delete a device
+ */
+
@@ -406,9 +491,24 @@ index 0000000..e420a6d
+ DBusMessage *reply = NULL; /* D-Bus reply */
+ DBusMessageIter args; /* D-Bus method arguments */
+ DBusError error; /* D-Bus error */
++ char *device_path; /* Device object path */
+
+ /*
-+ * Create the device...
++ * Find the device...
++ */
++
++ device_path = colordFindDeviceById (device_id);
++ if (device_path == NULL)
++ {
++ /* this can happen normally on start-up */
++ cupsdLogMessage(CUPSD_LOG_WARN,
++ "failed to find device: %s",
++ device_id);
++ goto out;
++ }
++
++ /*
++ * Delete the device...
+ */
+
+ message = dbus_message_new_method_call("org.freedesktop.ColorManager",
@@ -436,6 +536,7 @@ index 0000000..e420a6d
+ goto out;
+ }
+out:
++ free (device_path);
+ if (message != NULL)
+ dbus_message_unref(message);
+ if (reply != NULL)
@@ -671,6 +772,7 @@ index 0000000..e420a6d
+ ppd,
+ profiles,
+ device_colorspace,
++ format,
+ COLORD_RELATION_SOFT,
+ COLORD_SCOPE_TEMP);
+
@@ -718,22 +820,41 @@ index 0000000..e420a6d
+ */
diff --git a/scheduler/colord.h b/scheduler/colord.h
new file mode 100644
-index 0000000..262b695
+index 0000000..75bdd3b
--- /dev/null
+++ b/scheduler/colord.h
-@@ -0,0 +1,22 @@
+@@ -0,0 +1,41 @@
+/*
+ * "$Id$"
+ *
+ * colord integration for the CUPS scheduler.
+ *
-+ * Copyright 2011, Red Hat.
++ * Copyright 2011 Red Hat, Inc.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
-+ * These coded instructions, statements, and computer programs are the
-+ * property of Apple Inc. and are protected by Federal copyright
-+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
-+ * which should have been included with this file. If this file is
-+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ */
+
+void colordRegisterPrinter(cupsd_printer_t *p);
@@ -745,10 +866,10 @@ index 0000000..262b695
+ * End of "$Id$".
+ */
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
-index 2b91319..e470c32 100644
+index b9903d1..b5af36f 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
-@@ -2925,17 +2925,23 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
+@@ -2921,17 +2921,23 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
cupsdSetPrinterReasons(printer, "none");
@@ -774,7 +895,7 @@ index 2b91319..e470c32 100644
}
/*
-@@ -7032,11 +7038,17 @@ delete_printer(cupsd_client_t *con, /* I - Client connection */
+@@ -7028,11 +7034,17 @@ delete_printer(cupsd_client_t *con, /* I - Client connection */
snprintf(filename, sizeof(filename), "%s/%s.data", CacheDir, printer->name);
unlink(filename);
@@ -794,7 +915,7 @@ index 2b91319..e470c32 100644
#endif /* __APPLE__ */
diff --git a/scheduler/printers.c b/scheduler/printers.c
-index 9b876e3..cfb0db3 100644
+index 6920801..e830499 100644
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -80,6 +80,9 @@
@@ -807,7 +928,7 @@ index 9b876e3..cfb0db3 100644
/*
* Local functions...
-@@ -708,6 +711,53 @@ cupsdDeleteAllPrinters(void)
+@@ -712,6 +715,53 @@ cupsdDeleteAllPrinters(void)
}
}
@@ -861,7 +982,7 @@ index 9b876e3..cfb0db3 100644
/*
* 'cupsdDeletePrinter()' - Delete a printer from the system.
-@@ -748,6 +798,12 @@ cupsdDeletePrinter(
+@@ -752,6 +802,12 @@ cupsdDeletePrinter(
"Job stopped.");
/*
@@ -874,7 +995,7 @@ index 9b876e3..cfb0db3 100644
* If this printer is the next for browsing, point to the next one...
*/
-@@ -1414,6 +1470,12 @@ cupsdRenamePrinter(
+@@ -1418,6 +1474,12 @@ cupsdRenamePrinter(
}
/*
@@ -887,7 +1008,7 @@ index 9b876e3..cfb0db3 100644
* Rename the printer...
*/
-@@ -2640,6 +2702,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
+@@ -2644,6 +2706,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
#endif /* __sgi */
/*
@@ -917,5 +1038,5 @@ index 1751578..3820428 100644
/*
--
-1.7.5.2
+1.7.6.2
diff --git a/cups.spec b/cups.spec
index 2c1750d..b0f6941 100644
--- a/cups.spec
+++ b/cups.spec
@@ -13,7 +13,7 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.5.0
-Release: 10%{?dist}
+Release: 11%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
@@ -642,6 +642,10 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/ipptool.1.gz
%changelog
+* Mon Oct 03 2011 Richard Hughes <rhughes at redhat.com> 1:1.5.0-11
+- Updated colord patch with fixes to DeleteDevice.
+- Resolves https://bugzilla.redhat.com/show_bug.cgi?id=741697
+
* Wed Sep 28 2011 Tim Waugh <twaugh at redhat.com> 1:1.5.0-10
- Fixed string manipulation in the dbus notifier (STR #3947, bug #741833).
More information about the scm-commits
mailing list