[system-config-printer/f19] Fixes for UTF-8 encoding issues (bug #957444, bug #961882, bug #962207, bug #964673, bug #965578).
Tim Waugh
twaugh at fedoraproject.org
Tue May 21 16:46:07 UTC 2013
commit cfad2ffd71bab67f4cf0070e1dd87c56e51725af
Author: Tim Waugh <twaugh at redhat.com>
Date: Tue May 21 17:27:13 2013 +0100
Fixes for UTF-8 encoding issues (bug #957444, bug #961882, bug #962207, bug #964673, bug #965578).
system-config-printer-utf8-961882.patch | 25 ++++++++++++
system-config-printer-utf8-962207.patch | 62 +++++++++++++++++++++++++++++++
system-config-printer-utf8-964673.patch | 30 +++++++++++++++
system-config-printer-utf8-965578.patch | 32 ++++++++++++++++
system-config-printer.spec | 17 ++++++++-
5 files changed, 165 insertions(+), 1 deletions(-)
---
diff --git a/system-config-printer-utf8-961882.patch b/system-config-printer-utf8-961882.patch
new file mode 100644
index 0000000..540e6a7
--- /dev/null
+++ b/system-config-printer-utf8-961882.patch
@@ -0,0 +1,25 @@
+diff -up system-config-printer-1.4.1/cupshelpers/cupshelpers.py.utf8-961882 system-config-printer-1.4.1/cupshelpers/cupshelpers.py
+--- system-config-printer-1.4.1/cupshelpers/cupshelpers.py.utf8-961882 2013-05-09 12:10:43.000000000 +0100
++++ system-config-printer-1.4.1/cupshelpers/cupshelpers.py 2013-05-21 17:19:30.156816163 +0100
+@@ -526,6 +526,11 @@ class Device:
+ self.id = kw.get('device-id', '')
+ self.location = kw.get('device-location', '')
+
++ if type (self.info) == unicode:
++ # Convert unicode objects to UTF-8 encoding so they can be
++ # compared with other UTF-8 encoded strings (bug #957444).
++ self.info = self.info.encode ('utf-8')
++
+ uri_pieces = uri.split(":")
+ self.type = uri_pieces[0]
+ self.is_class = len(uri_pieces)==1
+@@ -610,8 +615,7 @@ class Device:
+ return -1
+ result = cmp(bool(self.id), bool(other.id))
+ if not result:
+- result = cmp(self.info.encode ('utf-8'),
+- other.info.encode ('utf-8'))
++ result = cmp(self.info, other.info)
+
+ return result
+
diff --git a/system-config-printer-utf8-962207.patch b/system-config-printer-utf8-962207.patch
new file mode 100644
index 0000000..2865d83
--- /dev/null
+++ b/system-config-printer-utf8-962207.patch
@@ -0,0 +1,62 @@
+diff -up system-config-printer-1.4.1/newprinter.py.utf8-962207 system-config-printer-1.4.1/newprinter.py
+--- system-config-printer-1.4.1/newprinter.py.utf8-962207 2013-05-09 12:10:43.000000000 +0100
++++ system-config-printer-1.4.1/newprinter.py 2013-05-21 17:20:20.852036184 +0100
+@@ -1632,7 +1632,7 @@ class NewPrinterGUI(GtkGUI):
+
+ def on_entNPName_changed(self, widget):
+ # restrict
+- text = unicode (widget.get_text())
++ text = unicode (widget.get_text(), locale.getpreferredencoding ())
+ new_text = text
+ new_text = new_text.replace("/", "")
+ new_text = new_text.replace("#", "")
+@@ -2516,7 +2516,7 @@ class NewPrinterGUI(GtkGUI):
+ allowed_chars = unicode (allowed_chars, locale.getpreferredencoding())
+ except UnicodeDecodeError:
+ allowed_chars = unicode (allowed_chars)
+- origtext = unicode (entry.get_text())
++ origtext = unicode (entry.get_text(). locale.getpreferredencoding ())
+ new_text = origtext
+ for char in origtext:
+ if char not in allowed_chars:
+@@ -3881,9 +3881,10 @@ class NewPrinterGUI(GtkGUI):
+ self.dec_spinner_task ()
+
+ if self.dialog_mode in ("class", "printer", "printer_with_uri"):
+- name = unicode (self.entNPName.get_text())
+- location = unicode (self.entNPLocation.get_text())
+- info = unicode (self.entNPDescription.get_text())
++ enc = locale.getpreferredencoding ()
++ name = unicode (self.entNPName.get_text(), enc)
++ location = unicode (self.entNPLocation.get_text(), enc)
++ info = unicode (self.entNPDescription.get_text(), enc)
+ else:
+ name = self._name
+
+diff -up system-config-printer-1.4.1/printerproperties.py.utf8-962207 system-config-printer-1.4.1/printerproperties.py
+--- system-config-printer-1.4.1/printerproperties.py.utf8-962207 2013-05-09 12:10:45.000000000 +0100
++++ system-config-printer-1.4.1/printerproperties.py 2013-05-21 17:20:20.853036185 +0100
+@@ -683,6 +683,9 @@ class PrinterPropertiesDialog(GtkGUI):
+
+ old_value = old_values[widget]
+
++ if type (old_value) == unicode:
++ old_value = old_value.encode (locale.getpreferredencoding ())
++
+ if old_value == value:
+ self.changed.discard(widget)
+ else:
+@@ -1034,9 +1037,10 @@ class PrinterPropertiesDialog(GtkGUI):
+ for member in old_members:
+ self.cups.deletePrinterFromClass(member, name)
+
+- location = self.entPLocation.get_text()
+- info = self.entPDescription.get_text()
+- device_uri = self.entPDevice.get_text()
++ enc = locale.getpreferredencoding ()
++ location = self.entPLocation.get_text().decode (enc)
++ info = self.entPDescription.get_text().decode (enc)
++ device_uri = self.entPDevice.get_text().decode (enc)
+
+ enabled = self.chkPEnabled.get_active()
+ accepting = self.chkPAccepting.get_active()
diff --git a/system-config-printer-utf8-964673.patch b/system-config-printer-utf8-964673.patch
new file mode 100644
index 0000000..3b18bca
--- /dev/null
+++ b/system-config-printer-utf8-964673.patch
@@ -0,0 +1,30 @@
+diff -up system-config-printer-1.4.1/statereason.py.utf8-964673 system-config-printer-1.4.1/statereason.py
+--- system-config-printer-1.4.1/statereason.py.utf8-964673 2013-02-19 16:18:36.000000000 +0000
++++ system-config-printer-1.4.1/statereason.py 2013-05-21 17:20:50.123163282 +0100
+@@ -1,6 +1,6 @@
+ #!/usr/bin/python
+
+-## Copyright (C) 2007, 2008, 2009, 2010, 2012 Red Hat, Inc.
++## Copyright (C) 2007, 2008, 2009, 2010, 2012, 2013 Red Hat, Inc.
+ ## Authors:
+ ## Tim Waugh <twaugh at redhat.com>
+ ## Jiri Popelka <jpopelka at redhat.com>
+@@ -121,7 +121,7 @@ class StateReason:
+ try:
+ (title, text) = messages[self.get_reason ()]
+ try:
+- text = text % self.get_printer ()
++ text = text.decode ('utf-8') % self.get_printer ()
+ except TypeError:
+ # Probably an incorrect translation, missing a '%s'.
+ pass
+@@ -148,7 +148,8 @@ class StateReason:
+ except RuntimeError:
+ pass
+
+- text = _("Printer '%s': '%s'.") % (self.get_printer (), reason)
++ text = (_("Printer '%s': '%s'.").decode ('utf-8') %
++ (self.get_printer (), reason))
+ return (title, text)
+
+ def get_tuple (self):
diff --git a/system-config-printer-utf8-965578.patch b/system-config-printer-utf8-965578.patch
new file mode 100644
index 0000000..8cf6bac
--- /dev/null
+++ b/system-config-printer-utf8-965578.patch
@@ -0,0 +1,32 @@
+diff -up system-config-printer-1.4.1/printerproperties.py.utf8-965578 system-config-printer-1.4.1/printerproperties.py
+--- system-config-printer-1.4.1/printerproperties.py.utf8-965578 2013-05-21 17:20:20.853036185 +0100
++++ system-config-printer-1.4.1/printerproperties.py 2013-05-21 17:21:56.763452869 +0100
+@@ -65,10 +65,14 @@ class PrinterPropertiesDialog(GtkGUI):
+ 'dialog-closed': ( GObject.SIGNAL_RUN_LAST, None, ()),
+ }
+
+- printer_states = { cups.IPP_PRINTER_IDLE: _("Idle"),
+- cups.IPP_PRINTER_PROCESSING: _("Processing"),
+- cups.IPP_PRINTER_BUSY: _("Busy"),
+- cups.IPP_PRINTER_STOPPED: _("Stopped") }
++ printer_states = { cups.IPP_PRINTER_IDLE:
++ _("Idle").decode ('utf-8'),
++ cups.IPP_PRINTER_PROCESSING:
++ _("Processing").decode ('utf-8'),
++ cups.IPP_PRINTER_BUSY:
++ _("Busy").decode ('utf-8'),
++ cups.IPP_PRINTER_STOPPED:
++ _("Stopped").decode ('utf-8') }
+
+ def __init__(self):
+ GObject.GObject.__init__ (self)
+@@ -1635,7 +1639,8 @@ class PrinterPropertiesDialog(GtkGUI):
+ debugprint ("update printer properties")
+ printer = self.printer
+ self.entPMakeModel.set_text(printer.make_and_model)
+- state = self.printer_states.get (printer.state, _("Unknown"))
++ state = self.printer_states.get (printer.state,
++ _("Unknown").decode ('utf-8'))
+ reason = printer.other_attributes.get ('printer-state-message', '')
+ if len (reason) > 0:
+ state += ' - ' + reason
diff --git a/system-config-printer.spec b/system-config-printer.spec
index 164b97f..4935ace 100644
--- a/system-config-printer.spec
+++ b/system-config-printer.spec
@@ -1,12 +1,16 @@
Summary: A printer administration tool
Name: system-config-printer
Version: 1.4.1
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
URL: http://cyberelk.net/tim/software/system-config-printer/
Group: System Environment/Base
Source0: http://cyberelk.net/tim/data/system-config-printer/1.3/%{name}-%{version}.tar.xz
Patch1: system-config-printer-no-applet-in-gnome.patch
+Patch2: system-config-printer-utf8-961882.patch
+Patch3: system-config-printer-utf8-962207.patch
+Patch4: system-config-printer-utf8-964673.patch
+Patch5: system-config-printer-utf8-965578.patch
BuildRequires: cups-devel >= 1.2
BuildRequires: desktop-file-utils >= 0.2.92
@@ -68,6 +72,13 @@ printers.
# Don't start the applet in GNOME.
%patch1 -p1 -b .no-applet-in-gnome
+# Fixes for UTF-8 encoding issues (bug #957444, bug #961882,
+# bug #962207, bug #964673, bug #965578).
+%patch2 -p1 -b .utf8-961882
+%patch3 -p1 -b .utf8-962207
+%patch4 -p1 -b .utf8-964673
+%patch5 -p1 -b .utf8-965578
+
%build
%configure --with-udev-rules
@@ -167,6 +178,10 @@ touch %buildroot%{_localstatedir}/run/udev-configure-printer/usb-uris
exit 0
%changelog
+* Tue May 21 2013 Tim Waugh <twaugh at redhat.com> 1.4.1-2
+- Fixes for UTF-8 encoding issues (bug #957444, bug #961882,
+ bug #962207, bug #964673, bug #965578).
+
* Thu May 9 2013 Tim Waugh <twaugh at redhat.com> 1.4.1-1
- 1.4.1:
- Don't call into Gtk directly from scp-dbus-service (bug #951710).
More information about the scm-commits
mailing list