summaryrefslogtreecommitdiffstats
path: root/abs/extra/cups/cups-dbus-utf8.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/cups/cups-dbus-utf8.patch')
-rw-r--r--abs/extra/cups/cups-dbus-utf8.patch106
1 files changed, 0 insertions, 106 deletions
diff --git a/abs/extra/cups/cups-dbus-utf8.patch b/abs/extra/cups/cups-dbus-utf8.patch
deleted file mode 100644
index 0bcd4a1..0000000
--- a/abs/extra/cups/cups-dbus-utf8.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-diff -up cups-1.6.1/notifier/dbus.c.dbus-utf8 cups-1.6.1/notifier/dbus.c
---- cups-1.6.1/notifier/dbus.c.dbus-utf8 2012-01-20 19:00:32.000000000 +0000
-+++ cups-1.6.1/notifier/dbus.c 2012-10-31 11:04:47.686973616 +0000
-@@ -31,6 +31,9 @@
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <unistd.h>
-+#include <assert.h>
-+#include <locale.h>
-+#include <wchar.h>
-
- #ifdef HAVE_DBUS
- # include <dbus/dbus.h>
-@@ -157,10 +160,82 @@ enum
- * Local functions...
- */
-
--static int acquire_lock(int *fd, char *lockfile, size_t locksize);
-+static int acquire_lock(int *fd, char *lockfile, size_t locksize);
-+static const char *validate_utf8(const char *str);
-
-
- /*
-+ * 'validate_utf8()' - Convert to valid UTF-8
-+ */
-+
-+static const char *
-+validate_utf8 (const char *str)
-+{
-+ static char *buffer = NULL;
-+ static size_t buflen = 0;
-+ char *p;
-+ size_t str_len;
-+ unsigned int i;
-+ mbstate_t instate, outstate;
-+
-+ if (str == NULL)
-+ {
-+ free (buffer);
-+ return (NULL);
-+ }
-+
-+ /* Is it already valid? */
-+ if (mbstowcs (NULL, str, 0) != (size_t) -1)
-+ return str;
-+
-+ /* Make sure our buffer is at least as large as the input string */
-+ str_len = strlen (str);
-+ if (str_len > buflen)
-+ {
-+ if (buffer == NULL)
-+ /* Set encoding type to UTF-8 the first time we need to */
-+ setlocale (LC_CTYPE, "en_US.UTF-8");
-+
-+ buflen = str_len + 1;
-+ buffer = realloc (buffer, buflen);
-+ }
-+
-+ memset (&instate, '\0', sizeof (mbstate_t));
-+ memset (&outstate, '\0', sizeof (mbstate_t));
-+ p = buffer;
-+ i = 0;
-+ while (i < str_len)
-+ {
-+ wchar_t wc;
-+ size_t used, written;
-+ mbstate_t orig_instate = instate;
-+ used = mbrtowc (&wc, str + i, str_len - i, &instate);
-+ switch (used)
-+ {
-+ case (size_t) -2:
-+ case (size_t) -1:
-+ wc = L'?'; /* so replacement is never longer than original char */
-+ instate = orig_instate;
-+ /* fallthru */
-+ case 0:
-+ used = 1;
-+ }
-+
-+ written = wcrtomb (p, wc, &outstate);
-+ if (written != -1)
-+ {
-+ p += written;
-+ assert (p - buffer < buflen);
-+ }
-+
-+ i += used;
-+ }
-+
-+ *p = '\0';
-+ return buffer;
-+}
-+
-+/*
- * 'main()' - Read events and send DBUS notifications.
- */
-
-@@ -366,7 +441,7 @@ main(int argc, /* I - Number of comm
- attr = ippFindAttribute(msg, "notify-text", IPP_TAG_TEXT);
- if (attr)
- {
-- const char *val = ippGetString(attr, 0, NULL);
-+ const char *val = validate_utf8 (ippGetString(attr, 0, NULL));
- if (!dbus_message_iter_append_string(&iter, &val))
- goto bail;
- }