summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2008-09-12 04:23:29 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-09-12 04:23:29 +0000
commitfd46b9d477cce27da5eeda4bf467cbfea33b2895 (patch)
treee2a2fabacc48e31b052d63a1e84f650e57fc79cd
parent596bf1c6ad7079af82bce7656bc56f17eb1e4c91 (diff)
downloadgtk+-fd46b9d477cce27da5eeda4bf467cbfea33b2895.tar.gz
Bug 551378 - Print dialog: should try UDS when fetching PPD for
localhost * modules/printbackends/cups/gtkprintbackendcups.c: Add ability to get PPD file from CUPS through Unix domain socket. Patch by Marek Kasik svn path=/branches/gtk-2-12/; revision=21368
-rw-r--r--ChangeLog11
-rw-r--r--modules/printbackends/cups/gtkprintbackendcups.c12
2 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 096c43090b..2fe897923a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,17 @@
Merged from trunk:
+ Bug 551378 - Print dialog: should try UDS when fetching PPD for
+ localhost
+
+ * modules/printbackends/cups/gtkprintbackendcups.c: Add ability
+ to get PPD file from CUPS through Unix domain socket.
+ Patch by Marek Kasik
+
+2008-09-11 Matthias Clasen <mclasen@redhat.com>
+
+ Merged from trunk:
+
Bug 551567 – DND mark broken
* gtk/gtktextbtree.c (redisplay_mark): invalidate mark properly
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c
index 20528cbff7..2bec58bb8e 100644
--- a/modules/printbackends/cups/gtkprintbackendcups.c
+++ b/modules/printbackends/cups/gtkprintbackendcups.c
@@ -1097,6 +1097,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
char hostname[HTTP_MAX_URI]; /* Hostname */
char resource[HTTP_MAX_URI]; /* Resource name */
int port; /* Port number */
+ char *cups_server; /* CUPS server */
list_has_changed = TRUE;
cups_printer = gtk_printer_cups_new (printer_name, backend);
@@ -1143,9 +1144,20 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
}
gethostname (uri, sizeof (uri));
+ cups_server = g_strdup (cupsServer());
+
if (strcasecmp (uri, hostname) == 0)
strcpy (hostname, "localhost");
+ /* if the cups server is local and listening at a unix domain socket
+ * then use the socket connection
+ */
+ if ((strstr (hostname, "localhost") != NULL) &&
+ (cups_server[0] == '/'))
+ strcpy (hostname, cups_server);
+
+ g_free (cups_server);
+
cups_printer->hostname = g_strdup (hostname);
cups_printer->port = port;