From: John Ralls Date: Sun, 19 Feb 2012 21:29:11 +0000 (-0800) Subject: Extract Function cups_create_printer X-Git-Url: http://pileus.org/git/?p=~andy%2Fgtk;a=commitdiff_plain;h=58ca84584a4d811591428111fe5b5a335c49f075 Extract Function cups_create_printer --- diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c index 9efd79a43..115912577 100644 --- a/modules/printbackends/cups/gtkprintbackendcups.c +++ b/modules/printbackends/cups/gtkprintbackendcups.c @@ -1,5 +1,5 @@ /* GTK - The GIMP Toolkit - * gtkprintbackendcups.h: Default implementation of GtkPrintBackend + * gtkprintbackendcups.h: Default implementation of GtkPrintBackend * for the Common Unix Print System (CUPS) * Copyright (C) 2006, 2007 Red Hat, Inc. * @@ -69,7 +69,7 @@ typedef struct _GtkPrintBackendCupsClass GtkPrintBackendCupsClass; #define GTK_IS_PRINT_BACKEND_CUPS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PRINT_BACKEND_CUPS)) #define GTK_PRINT_BACKEND_CUPS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PRINT_BACKEND_CUPS, GtkPrintBackendCupsClass)) -#define _CUPS_MAX_ATTEMPTS 10 +#define _CUPS_MAX_ATTEMPTS 10 #define _CUPS_MAX_CHUNK_SIZE 8192 /* define this to see warnings about ignored ppd options */ @@ -81,10 +81,10 @@ typedef struct _GtkPrintBackendCupsClass GtkPrintBackendCupsClass; static GType print_backend_cups_type = 0; typedef void (* GtkPrintCupsResponseCallbackFunc) (GtkPrintBackend *print_backend, - GtkCupsResult *result, + GtkCupsResult *result, gpointer user_data); -typedef enum +typedef enum { DISPATCH_SETUP, DISPATCH_REQUEST, @@ -94,7 +94,7 @@ typedef enum DISPATCH_ERROR } GtkPrintCupsDispatchState; -typedef struct +typedef struct { GSource source; @@ -118,7 +118,7 @@ struct _GtkPrintBackendCups GtkPrintBackend parent_instance; char *default_printer; - + guint list_printers_poll; guint list_printers_pending : 1; gint list_printers_attempts; @@ -195,7 +195,7 @@ static cairo_surface_t * cups_printer_create_cairo_surface (GtkPrinter gdouble height, GIOChannel *cache_io); -static void gtk_print_backend_cups_set_password (GtkPrintBackend *backend, +static void gtk_print_backend_cups_set_password (GtkPrintBackend *backend, gchar **auth_info_required, gchar **auth_info); @@ -225,23 +225,23 @@ gtk_print_backend_cups_register_type (GTypeModule *module) &print_backend_cups_info, 0); } -G_MODULE_EXPORT void +G_MODULE_EXPORT void pb_module_init (GTypeModule *module) { GTK_NOTE (PRINTING, - g_print ("CUPS Backend: Initializing the CUPS print backend module\n")); + g_print ("CUPS Backend: Initializing the CUPS print backend module\n")); gtk_print_backend_cups_register_type (module); gtk_printer_cups_register_type (module); } -G_MODULE_EXPORT void +G_MODULE_EXPORT void pb_module_exit (void) { } - -G_MODULE_EXPORT GtkPrintBackend * + +G_MODULE_EXPORT GtkPrintBackend * pb_module_create (void) { return gtk_print_backend_cups_new (); @@ -300,7 +300,7 @@ gtk_print_backend_cups_class_init (GtkPrintBackendCupsClass *class) gobject_class->finalize = gtk_print_backend_cups_finalize; gobject_class->dispose = gtk_print_backend_cups_dispose; - backend_class->request_printer_list = cups_get_printer_list; + backend_class->request_printer_list = cups_get_printer_list; backend_class->print_stream = gtk_print_backend_cups_print_stream; backend_class->printer_request_details = cups_printer_request_details; backend_class->printer_create_cairo_surface = cups_printer_create_cairo_surface; @@ -329,19 +329,19 @@ _cairo_write_to_cups (void *closure, GTK_NOTE (PRINTING, g_print ("CUPS Backend: Writing %i byte chunk to temp file\n", length)); - while (length > 0) + while (length > 0) { g_io_channel_write_chars (io, (gchar *)data, length, &written, &error); if (error != NULL) { GTK_NOTE (PRINTING, - g_print ("CUPS Backend: Error writing to temp file, %s\n", + g_print ("CUPS Backend: Error writing to temp file, %s\n", error->message)); g_error_free (error); return CAIRO_STATUS_WRITE_ERROR; - } + } GTK_NOTE (PRINTING, g_print ("CUPS Backend: Wrote %"G_GSIZE_FORMAT" bytes to temp file\n", written)); @@ -356,7 +356,7 @@ _cairo_write_to_cups (void *closure, static cairo_surface_t * cups_printer_create_cairo_surface (GtkPrinter *printer, GtkPrintSettings *settings, - gdouble width, + gdouble width, gdouble height, GIOChannel *cache_io) { @@ -472,7 +472,7 @@ cups_print_cb (GtkPrintBackendCups *print_backend, GDK_THREADS_ENTER (); GTK_NOTE (PRINTING, - g_print ("CUPS Backend: %s\n", G_STRFUNC)); + g_print ("CUPS Backend: %s\n", G_STRFUNC)); if (gtk_cups_result_is_error (result)) error = g_error_new_literal (gtk_print_error_quark (), @@ -498,15 +498,15 @@ cups_print_cb (GtkPrintBackendCups *print_backend, gtk_print_job_set_status (ps->job, GTK_PRINT_STATUS_PENDING); cups_begin_polling_info (print_backend, ps->job, job_id); } - } + } else gtk_print_job_set_status (ps->job, GTK_PRINT_STATUS_FINISHED_ABORTED); - + if (error) g_error_free (error); - GDK_THREADS_LEAVE (); + GDK_THREADS_LEAVE (); } typedef struct { @@ -590,7 +590,7 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend, char printer_absolute_uri[HTTP_MAX_URI]; GTK_NOTE (PRINTING, - g_print ("CUPS Backend: %s\n", G_STRFUNC)); + g_print ("CUPS Backend: %s\n", G_STRFUNC)); cups_printer = GTK_PRINTER_CUPS (gtk_print_job_get_printer (job)); settings = gtk_print_job_get_settings (job); @@ -621,14 +621,14 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend, gtk_printer_get_name (gtk_print_job_get_printer (job))); #endif - gtk_cups_request_ipp_add_string (request, IPP_TAG_OPERATION, + gtk_cups_request_ipp_add_string (request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, printer_absolute_uri); title = gtk_print_job_get_title (job); if (title) - gtk_cups_request_ipp_add_string (request, IPP_TAG_OPERATION, - IPP_TAG_NAME, "job-name", + gtk_cups_request_ipp_add_string (request, IPP_TAG_OPERATION, + IPP_TAG_NAME, "job-name", NULL, title); options_data = g_new0 (CupsOptionsData, 1); @@ -667,8 +667,8 @@ void overwrite_and_free (gpointer data) static void gtk_print_backend_cups_init (GtkPrintBackendCups *backend_cups) { - backend_cups->list_printers_poll = FALSE; - backend_cups->got_default_printer = FALSE; + backend_cups->list_printers_poll = FALSE; + backend_cups->got_default_printer = FALSE; backend_cups->list_printers_pending = FALSE; backend_cups->list_printers_attempts = 0; backend_cups->reading_ppds = 0; @@ -696,7 +696,7 @@ static void gtk_print_backend_cups_finalize (GObject *object) { GtkPrintBackendCups *backend_cups; - + GTK_NOTE (PRINTING, g_print ("CUPS Backend: finalizing CUPS backend module\n")); @@ -736,7 +736,7 @@ gtk_print_backend_cups_dispose (GObject *object) g_source_remove (backend_cups->list_printers_poll); backend_cups->list_printers_poll = 0; backend_cups->list_printers_attempts = 0; - + if (backend_cups->default_printer_poll > 0) g_source_remove (backend_cups->default_printer_poll); backend_cups->default_printer_poll = 0; @@ -936,7 +936,7 @@ request_password (gpointer data) g_free (printer_name); - g_signal_emit_by_name (dispatch->backend, "request-password", + g_signal_emit_by_name (dispatch->backend, "request-password", auth_info_required, auth_info_default, auth_info_display, auth_info_visible, prompt); g_free (prompt); @@ -1143,16 +1143,16 @@ cups_dispatch_watch_check (GSource *source) gboolean result; GTK_NOTE (PRINTING, - g_print ("CUPS Backend: %s \n", G_STRFUNC, source)); + g_print ("CUPS Backend: %s \n", G_STRFUNC, source)); dispatch = (GtkPrintCupsDispatchWatch *) source; poll_state = gtk_cups_request_get_poll_state (dispatch->request); if (poll_state != GTK_CUPS_HTTP_IDLE && !dispatch->request->need_password) - if (!(dispatch->data_poll->revents & dispatch->data_poll->events)) + if (!(dispatch->data_poll->revents & dispatch->data_poll->events)) return FALSE; - + result = gtk_cups_request_read_write (dispatch->request, FALSE); if (result && dispatch->data_poll != NULL) { @@ -1167,7 +1167,7 @@ cups_dispatch_watch_check (GSource *source) g_idle_add (request_password, dispatch); result = FALSE; } - + return result; } @@ -1198,13 +1198,13 @@ cups_dispatch_watch_dispatch (GSource *source, gpointer user_data) { GtkPrintCupsDispatchWatch *dispatch; - GtkPrintCupsResponseCallbackFunc ep_callback; + GtkPrintCupsResponseCallbackFunc ep_callback; GtkCupsResult *result; - + g_assert (callback != NULL); ep_callback = (GtkPrintCupsResponseCallbackFunc) callback; - + dispatch = (GtkPrintCupsDispatchWatch *) source; result = gtk_cups_request_get_result (dispatch->request); @@ -1214,8 +1214,8 @@ cups_dispatch_watch_dispatch (GSource *source, if (gtk_cups_result_is_error (result)) { - GTK_NOTE (PRINTING, - g_print("Error result: %s (type %i, status %i, code %i)\n", + GTK_NOTE (PRINTING, + g_print("Error result: %s (type %i, status %i, code %i)\n", gtk_cups_result_get_error_string (result), gtk_cups_result_get_error_type (result), gtk_cups_result_get_error_status (result), @@ -1223,7 +1223,7 @@ cups_dispatch_watch_dispatch (GSource *source, } ep_callback (GTK_PRINT_BACKEND (dispatch->backend), result, user_data); - + return FALSE; } @@ -1244,7 +1244,7 @@ cups_dispatch_watch_finalize (GSource *source) const gchar *username; gchar hostname[HTTP_MAX_URI]; gchar *key; - + httpGetHostname (dispatch->request->http, hostname, sizeof (hostname)); if (is_address_local (hostname)) strcpy (hostname, "localhost"); @@ -1259,7 +1259,7 @@ cups_dispatch_watch_finalize (GSource *source) g_print ("CUPS backend: removing stored password for %s\n", key)); g_hash_table_remove (dispatch->backend->auth, key); g_free (key); - + if (dispatch->backend) dispatch->backend->authentication_lock = FALSE; } @@ -1280,7 +1280,7 @@ cups_dispatch_watch_finalize (GSource *source) dispatch->backend->requests = g_list_remove (dispatch->backend->requests, dispatch); - + g_object_unref (dispatch->backend); dispatch->backend = NULL; } @@ -1310,7 +1310,7 @@ cups_request_execute (GtkPrintBackendCups *print_backend, { GtkPrintCupsDispatchWatch *dispatch; - dispatch = (GtkPrintCupsDispatchWatch *) g_source_new (&_cups_dispatch_watch_funcs, + dispatch = (GtkPrintCupsDispatchWatch *) g_source_new (&_cups_dispatch_watch_funcs, sizeof (GtkPrintCupsDispatchWatch)); g_source_set_name (&dispatch->source, "GTK+ CUPS backend"); @@ -1356,7 +1356,7 @@ cups_request_printer_info_cb (GtkPrintBackendCups *backend, gchar *desc; gchar *state_msg; int job_count; - gboolean status_changed; + gboolean status_changed; g_assert (GTK_IS_PRINT_BACKEND_CUPS (backend)); @@ -1375,7 +1375,7 @@ cups_request_printer_info_cb (GtkPrintBackendCups *backend, } cups_printer = GTK_PRINTER_CUPS (printer); - + if (gtk_cups_result_is_error (result)) { if (gtk_printer_is_new (printer)) @@ -1392,12 +1392,12 @@ cups_request_printer_info_cb (GtkPrintBackendCups *backend, /* TODO: determine printer type and use correct icon */ gtk_printer_set_icon_name (printer, "printer"); - + state_msg = ""; loc = ""; desc = ""; job_count = 0; - for (attr = response->attrs; attr != NULL; attr = attr->next) + for (attr = response->attrs; attr != NULL; attr = attr->next) { if (!attr->name) continue; @@ -1410,14 +1410,14 @@ cups_request_printer_info_cb (GtkPrintBackendCups *backend, } status_changed = gtk_printer_set_job_count (printer, job_count); - + status_changed |= gtk_printer_set_location (printer, loc); status_changed |= gtk_printer_set_description (printer, desc); status_changed |= gtk_printer_set_state_message (printer, state_msg); if (status_changed) g_signal_emit_by_name (GTK_PRINT_BACKEND (backend), - "printer-status-changed", printer); + "printer-status-changed", printer); } static void @@ -1458,7 +1458,7 @@ cups_request_printer_info (GtkPrintBackendCups *print_backend, gtk_cups_request_ipp_add_strings (request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", G_N_ELEMENTS (pattrs), NULL, pattrs); - + cups_request_execute (print_backend, request, (GtkPrintCupsResponseCallbackFunc) cups_request_printer_info_cb, @@ -1487,7 +1487,7 @@ cups_job_poll_data_free (CupsJobPollData *data) { if (data->job) g_object_weak_unref (G_OBJECT (data->job), job_object_died, data); - + g_free (data); } @@ -1520,11 +1520,11 @@ cups_request_job_info_cb (GtkPrintBackendCups *print_backend, attr = ippFindAttribute (response, "job-state", IPP_TAG_INTEGER); state = ippGetInteger (attr, 0); #else - for (attr = response->attrs; attr != NULL; attr = attr->next) + for (attr = response->attrs; attr != NULL; attr = attr->next) { if (!attr->name) continue; - + _CUPS_MAP_ATTR_INT (attr, state, "job-state"); } #endif @@ -1567,11 +1567,11 @@ cups_request_job_info_cb (GtkPrintBackendCups *print_backend, timeout = 500; else timeout = 1000; - + g_timeout_add (timeout, cups_job_info_poll_timeout, data); } else - cups_job_poll_data_free (data); + cups_job_poll_data_free (data); done: GDK_THREADS_LEAVE (); @@ -1607,12 +1607,12 @@ static gboolean cups_job_info_poll_timeout (gpointer user_data) { CupsJobPollData *data = user_data; - + if (data->job == NULL) cups_job_poll_data_free (data); else cups_request_job_info (data); - + return G_SOURCE_REMOVE; } @@ -1636,7 +1636,7 @@ cups_begin_polling_info (GtkPrintBackendCups *print_backend, } static void -mark_printer_inactive (GtkPrinter *printer, +mark_printer_inactive (GtkPrinter *printer, GtkPrintBackend *backend) { gtk_printer_set_is_active (printer, FALSE); @@ -1644,7 +1644,7 @@ mark_printer_inactive (GtkPrinter *printer, } static gint -find_printer (GtkPrinter *printer, +find_printer (GtkPrinter *printer, const gchar *find_name) { const gchar *printer_name; @@ -1854,6 +1854,111 @@ cups_printer_handle_attribute (GtkPrintBackendCups *cups_backend, } } +static GtkPrinter* +cups_create_printer (GtkPrintBackendCups *cups_backend, + PrinterSetupInfo *info) +{ + GtkPrinterCups *cups_printer; + GtkPrinter *printer; + GtkPrintBackend *backend = GTK_PRINT_BACKEND (cups_backend); + char uri[HTTP_MAX_URI]; /* Printer URI */ + char method[HTTP_MAX_URI]; /* Method/scheme name */ + char username[HTTP_MAX_URI]; /* Username:password */ + char hostname[HTTP_MAX_URI]; /* Hostname */ + char resource[HTTP_MAX_URI]; /* Resource name */ + int port; /* Port number */ + char *cups_server; /* CUPS server */ + +#ifdef HAVE_COLORD + cups_printer = gtk_printer_cups_new (info->printer_name, + backend, + cups_backend->colord_client); +#else + cups_printer = gtk_printer_cups_new (info->printer_name, backend, NULL); +#endif + + cups_printer->device_uri = g_strdup_printf ("/printers/%s", + info->printer_name); + + /* Check to see if we are looking at a class */ + if (info->member_uris) + { + cups_printer->printer_uri = g_strdup (info->member_uris); + /* TODO if member_uris is a class we need to recursivly find a printer */ + GTK_NOTE (PRINTING, + g_print ("CUPS Backend: Found class with printer %s\n", + info->member_uris)); + } + else + { + cups_printer->printer_uri = g_strdup (info->printer_uri); + GTK_NOTE (PRINTING, + g_print ("CUPS Backend: Found printer %s\n", + info->printer_uri)); + } + +#if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2) || CUPS_VERSION_MAJOR > 1 + httpSeparateURI (HTTP_URI_CODING_ALL, cups_printer->printer_uri, + method, sizeof (method), + username, sizeof (username), + hostname, sizeof (hostname), + &port, + resource, sizeof (resource)); + +#else + httpSeparate (cups_printer->printer_uri, + method, + username, + hostname, + &port, + resource); +#endif + + if (strncmp (resource, "/printers/", 10) == 0) + { + cups_printer->ppd_name = g_strdup (resource + 10); + GTK_NOTE (PRINTING, + g_print ("CUPS Backend: Setting ppd name '%s' for printer/class '%s'\n", cups_printer->ppd_name, printer_name)); + } + + 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->default_cover_before = g_strdup (info->default_cover_before); + cups_printer->default_cover_after = g_strdup (info->default_cover_after); + + cups_printer->default_number_up = info->default_number_up; + + cups_printer->hostname = g_strdup (hostname); + cups_printer->port = port; + + cups_printer->auth_info_required = g_strdupv (info->auth_info_required); + g_strfreev (info->auth_info_required); + + printer = GTK_PRINTER (cups_printer); + + if (cups_backend->default_printer != NULL && + strcmp (cups_backend->default_printer, gtk_printer_get_name (printer)) == 0) + gtk_printer_set_is_default (printer, TRUE); + + + gtk_print_backend_add_printer (backend, printer); + return printer; +} + + static void cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, GtkCupsResult *result, @@ -1877,8 +1982,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, if (gtk_cups_result_is_error (result)) { - GTK_NOTE (PRINTING, - g_warning ("CUPS Backend: Error getting printer list: %s %d %d", + GTK_NOTE (PRINTING, + g_warning ("CUPS Backend: Error getting printer list: %s %d %d", gtk_cups_result_get_error_string (result), gtk_cups_result_get_error_type (result), gtk_cups_result_get_error_code (result))); @@ -1895,12 +2000,12 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, goto done; } - + /* Gather the names of the printers in the current queue - * so we may check to see if they were removed + * so we may check to see if they were removed */ removed_printer_checklist = gtk_print_backend_get_printer_list (backend); - + response = gtk_cups_result_get_response (result); for (attr = response->attrs; attr != NULL; attr = attr->next) @@ -1908,7 +2013,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, GtkPrinter *printer; gboolean status_changed = FALSE; GList *node; - gint i,j; + gint i; gchar *reason_msg_desc = NULL; gchar *tmp_msg = NULL; gchar *tmp_msg2 = NULL; @@ -1967,104 +2072,14 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, (GCompareFunc) find_printer); removed_printer_checklist = g_list_delete_link (removed_printer_checklist, node); - + printer = gtk_print_backend_find_printer (backend, info->printer_name); if (!printer) - { - GtkPrinterCups *cups_printer; - char uri[HTTP_MAX_URI]; /* Printer URI */ - char method[HTTP_MAX_URI]; /* Method/scheme name */ - char username[HTTP_MAX_URI]; /* Username:password */ - 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; -#ifdef HAVE_COLORD - cups_printer = gtk_printer_cups_new (printer_name, - backend, - cups_backend->colord_client); -#else - cups_printer = gtk_printer_cups_new (printer_name, backend, NULL); -#endif - - cups_printer->device_uri = g_strdup_printf ("/printers/%s", printer_name); - - /* Check to see if we are looking at a class */ - if (member_uris) - { - cups_printer->printer_uri = g_strdup (member_uris); - /* TODO if member_uris is a class we need to recursivly find a printer */ - GTK_NOTE (PRINTING, - g_print ("CUPS Backend: Found class with printer %s\n", member_uris)); - } - else - { - cups_printer->printer_uri = g_strdup (printer_uri); - GTK_NOTE (PRINTING, - g_print ("CUPS Backend: Found printer %s\n", printer_uri)); - } - -#if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2) || CUPS_VERSION_MAJOR > 1 - httpSeparateURI (HTTP_URI_CODING_ALL, cups_printer->printer_uri, - method, sizeof (method), - username, sizeof (username), - hostname, sizeof (hostname), - &port, - resource, sizeof (resource)); - -#else - httpSeparate (cups_printer->printer_uri, - method, - username, - hostname, - &port, - resource); -#endif - - if (strncmp (resource, "/printers/", 10) == 0) - { - cups_printer->ppd_name = g_strdup (resource + 10); - GTK_NOTE (PRINTING, - g_print ("CUPS Backend: Setting ppd name '%s' for printer/class '%s'\n", cups_printer->ppd_name, printer_name)); - } - - 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->default_cover_before = g_strdup (default_cover_before); - cups_printer->default_cover_after = g_strdup (default_cover_after); - - cups_printer->default_number_up = default_number_up; - - cups_printer->hostname = g_strdup (hostname); - cups_printer->port = port; - - cups_printer->auth_info_required = g_strdupv (auth_info_required); - g_strfreev (auth_info_required); - - printer = GTK_PRINTER (cups_printer); - - if (cups_backend->default_printer != NULL && - strcmp (cups_backend->default_printer, gtk_printer_get_name (printer)) == 0) - gtk_printer_set_is_default (printer, TRUE); + { + printer = cups_create_printer (cups_backend, info); + list_has_changed = TRUE; + } - - gtk_print_backend_add_printer (backend, printer); - } else g_object_ref (printer); @@ -2188,11 +2203,11 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, g_list_free_full (removed_printer_checklist, (GDestroyNotify) mark_printer_inactive); list_has_changed = TRUE; } - + done: if (list_has_changed) g_signal_emit_by_name (backend, "printer-list-changed"); - + gtk_print_backend_set_list_done (backend); if (!cups_backend->got_default_printer && remote_default_printer != NULL) @@ -2368,8 +2383,8 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend, { gtk_printer_set_has_details (printer, TRUE); success = TRUE; - } - + } + g_signal_emit_by_name (printer, "details-acquired", success); goto done; } @@ -2382,7 +2397,7 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend, #endif ppdMarkDefaults (data->printer->ppd_file); - + gtk_printer_set_has_details (printer, TRUE); g_signal_emit_by_name (printer, "details-acquired", TRUE); @@ -2445,17 +2460,17 @@ cups_request_ppd (GtkPrinter *printer) } } - http = httpConnectEncrypt (cups_printer->hostname, + http = httpConnectEncrypt (cups_printer->hostname, cups_printer->port, cupsEncryption ()); - + data = g_new0 (GetPPDData, 1); - fd = g_file_open_tmp ("gtkprint_ppd_XXXXXX", - &ppd_filename, + fd = g_file_open_tmp ("gtkprint_ppd_XXXXXX", + &ppd_filename, &error); -#ifdef G_ENABLE_DEBUG +#ifdef G_ENABLE_DEBUG /* If we are debugging printing don't delete the tmp files */ if (!(gtk_get_debug_flags () & GTK_DEBUG_PRINTING)) unlink (ppd_filename); @@ -2465,8 +2480,8 @@ cups_request_ppd (GtkPrinter *printer) if (error != NULL) { - GTK_NOTE (PRINTING, - g_warning ("CUPS Backend: Failed to create temp file, %s\n", + GTK_NOTE (PRINTING, + g_warning ("CUPS Backend: Failed to create temp file, %s\n", error->message)); g_error_free (error); httpClose (http); @@ -2476,7 +2491,7 @@ cups_request_ppd (GtkPrinter *printer) g_signal_emit_by_name (printer, "details-acquired", FALSE); return FALSE; } - + data->http = http; fchmod (fd, S_IRUSR | S_IWUSR); data->ppd_io = g_io_channel_unix_new (fd); @@ -2485,7 +2500,7 @@ cups_request_ppd (GtkPrinter *printer) data->printer = g_object_ref (printer); - resource = g_strdup_printf ("/printers/%s.ppd", + resource = g_strdup_printf ("/printers/%s.ppd", gtk_printer_cups_get_ppd_name (GTK_PRINTER_CUPS (printer))); print_backend = gtk_printer_get_backend (printer); @@ -2520,7 +2535,7 @@ cups_request_ppd (GtkPrinter *printer) /* Ordering matters for default preference */ static const char *lpoptions_locations[] = { "/etc/cups/lpoptions", - ".lpoptions", + ".lpoptions", ".cups/lpoptions" }; @@ -2530,7 +2545,7 @@ cups_parse_user_default_printer (const char *filename, { FILE *fp; char line[1024], *lineptr, *defname = NULL; - + if ((fp = g_fopen (filename, "r")) == NULL) return; @@ -2573,11 +2588,11 @@ cups_get_user_default_printer (char **printer_name) cups_parse_user_default_printer (lpoptions_locations[i], printer_name); } - else + else { char *filename; - filename = g_build_filename (g_get_home_dir (), + filename = g_build_filename (g_get_home_dir (), lpoptions_locations[i], NULL); cups_parse_user_default_printer (filename, printer_name); g_free (filename); @@ -2649,7 +2664,7 @@ cups_get_user_options (const char *printer_name, for (i = 0; i < G_N_ELEMENTS (lpoptions_locations); i++) { if (g_path_is_absolute (lpoptions_locations[i])) - { + { num_options = cups_parse_user_options (lpoptions_locations[i], printer_name, num_options, @@ -2659,7 +2674,7 @@ cups_get_user_options (const char *printer_name, { char *filename; - filename = g_build_filename (g_get_home_dir (), + filename = g_build_filename (g_get_home_dir (), lpoptions_locations[i], NULL); num_options = cups_parse_user_options (filename, printer_name, num_options, options); @@ -2713,8 +2728,8 @@ cups_get_local_default_printer (GtkPrintBackendCups *backend) backend->got_default_printer = TRUE; return; } - - /* Figure out user setting for default printer */ + + /* Figure out user setting for default printer */ cups_get_user_default_printer (&name); if (name != NULL) { @@ -2750,7 +2765,7 @@ cups_request_default_printer_cb (GtkPrintBackendCups *print_backend, } response = gtk_cups_result_get_response (result); - + if ((attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME)) != NULL) print_backend->default_printer = g_strdup (ippGetString (attr, 0, NULL)); @@ -2766,8 +2781,8 @@ cups_request_default_printer_cb (GtkPrintBackendCups *print_backend, } } - /* Make sure to kick off get_printers if we are polling it, - * as we could have blocked this reading the default printer + /* Make sure to kick off get_printers if we are polling it, + * as we could have blocked this reading the default printer */ if (print_backend->list_printers_poll != 0) cups_request_printer_list (print_backend); @@ -2794,7 +2809,7 @@ cups_request_default_printer (GtkPrintBackendCups *print_backend) NULL, NULL, print_backend->username); - + cups_request_execute (print_backend, request, (GtkPrintCupsResponseCallbackFunc) cups_request_default_printer_cb, @@ -2810,7 +2825,7 @@ cups_printer_request_details (GtkPrinter *printer) GtkPrinterCups *cups_printer; cups_printer = GTK_PRINTER_CUPS (printer); - if (!cups_printer->reading_ppd && + if (!cups_printer->reading_ppd && gtk_printer_cups_get_ppd (cups_printer) == NULL) { if (cups_printer->remote) @@ -2831,12 +2846,12 @@ cups_printer_request_details (GtkPrinter *printer) } static char * -ppd_text_to_utf8 (ppd_file_t *ppd_file, +ppd_text_to_utf8 (ppd_file_t *ppd_file, const char *text) { const char *encoding = NULL; char *res; - + if (g_ascii_strcasecmp (ppd_file->lang_encoding, "UTF-8") == 0) { return g_strdup (text); @@ -2865,7 +2880,7 @@ ppd_text_to_utf8 (ppd_file_t *ppd_file, { encoding = "WINDOWS-1252"; } - else + else { /* Fallback, try iso-8859-1... */ encoding = "ISO-8859-1"; @@ -2879,7 +2894,7 @@ ppd_text_to_utf8 (ppd_file_t *ppd_file, g_warning ("CUPS Backend: Unable to convert PPD text\n")); res = g_strdup ("???"); } - + return res; } @@ -2991,7 +3006,7 @@ static const char *color_group_whitelist[] = { "FPColorWise5", "HPColorOptionsPanel", }; - + /* keep sorted when changing */ static const char *image_quality_option_whitelist[] = { "BRDocument", @@ -3061,19 +3076,19 @@ static const char *finishing_group_whitelist[] = { /* keep sorted when changing */ static const char *cups_option_blacklist[] = { "Collate", - "Copies", + "Copies", "OutputOrder", "PageRegion", "PageSize", }; static char * -get_option_text (ppd_file_t *ppd_file, +get_option_text (ppd_file_t *ppd_file, ppd_option_t *option) { int i; char *utf8; - + for (i = 0; i < G_N_ELEMENTS (cups_option_translations); i++) { if (strcmp (cups_option_translations[i].keyword, option->keyword) == 0) @@ -3084,18 +3099,18 @@ get_option_text (ppd_file_t *ppd_file, /* Some ppd files have spaces in the text before the colon */ g_strchomp (utf8); - + return utf8; } static char * -get_choice_text (ppd_file_t *ppd_file, +get_choice_text (ppd_file_t *ppd_file, ppd_choice_t *choice) { int i; ppd_option_t *option = choice->option; const char *keyword = option->keyword; - + for (i = 0; i < G_N_ELEMENTS (cups_choice_translations); i++) { if (strcmp (cups_choice_translations[i].keyword, keyword) == 0 && @@ -3106,18 +3121,18 @@ get_choice_text (ppd_file_t *ppd_file, } static gboolean -group_has_option (ppd_group_t *group, +group_has_option (ppd_group_t *group, ppd_option_t *option) { int i; if (group == NULL) return FALSE; - + if (group->num_options > 0 && option >= group->options && option < group->options + group->num_options) return TRUE; - + for (i = 0; i < group->num_subgroups; i++) { if (group_has_option (&group->subgroups[i],option)) @@ -3147,7 +3162,7 @@ value_is_off (const char *value) static char * ppd_group_name (ppd_group_t *group) { -#if CUPS_VERSION_MAJOR > 1 || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR > 1) || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR == 1 && CUPS_VERSION_PATCH >= 18) +#if CUPS_VERSION_MAJOR > 1 || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR > 1) || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR == 1 && CUPS_VERSION_PATCH >= 18) return group->name; #else return group->text; @@ -3179,7 +3194,7 @@ available_choices (ppd_file_t *ppd, installed_options = NULL; for (i = 0; i < ppd->num_groups; i++) { - char *name; + char *name; name = ppd_group_name (&ppd->groups[i]); if (strcmp (name, "InstallableOptions") == 0) @@ -3301,7 +3316,7 @@ available_choices (ppd_file_t *ppd, if (!found_auto) add_auto = 1; } - + if (available) { *available = g_new (ppd_choice_t *, option->num_choices - num_conflicts + add_auto); @@ -3313,12 +3328,12 @@ available_choices (ppd_file_t *ppd, (*available)[i++] = &option->choices[j]; } - if (add_auto) + if (add_auto) (*available)[i++] = NULL; } g_free (conflicts); - + return option->num_choices - num_conflicts + add_auto; } @@ -3335,14 +3350,14 @@ create_pickone_option (ppd_file_t *ppd_file, ppd_coption_t *coption; g_assert (ppd_option->ui == PPD_UI_PICKONE); - + option = NULL; n_choices = available_choices (ppd_file, ppd_option, &available, g_str_has_prefix (gtk_name, "gtk-")); if (n_choices > 0) { - - /* right now only support one parameter per custom option + + /* right now only support one parameter per custom option * if more than one print warning and only offer the default choices */ @@ -3381,17 +3396,17 @@ create_pickone_option (ppd_file_t *ppd_file, GTK_PRINTER_OPTION_TYPE_PICKONE_STRING); break; #ifdef PRINT_IGNORED_OPTIONS - case PPD_CUSTOM_POINTS: + case PPD_CUSTOM_POINTS: g_warning ("CUPS Backend: PPD Custom Points Option not supported"); break; case PPD_CUSTOM_CURVE: g_warning ("CUPS Backend: PPD Custom Curve Option not supported"); break; - case PPD_CUSTOM_INVCURVE: + case PPD_CUSTOM_INVCURVE: g_warning ("CUPS Backend: PPD Custom Inverse Curve Option not supported"); break; #endif - default: + default: break; } } @@ -3405,7 +3420,7 @@ create_pickone_option (ppd_file_t *ppd_file, option = gtk_printer_option_new (gtk_name, label, GTK_PRINTER_OPTION_TYPE_PICKONE); g_free (label); - + gtk_printer_option_allocate_choices (option, n_choices); for (i = 0; i < n_choices; i++) { @@ -3454,7 +3469,7 @@ create_boolean_option (ppd_file_t *ppd_file, int n_choices; g_assert (ppd_option->ui == PPD_UI_BOOLEAN); - + option = NULL; n_choices = available_choices (ppd_file, ppd_option, &available, g_str_has_prefix (gtk_name, "gtk-")); @@ -3464,13 +3479,13 @@ create_boolean_option (ppd_file_t *ppd_file, option = gtk_printer_option_new (gtk_name, label, GTK_PRINTER_OPTION_TYPE_BOOLEAN); g_free (label); - + gtk_printer_option_allocate_choices (option, 2); option->choices[0] = g_strdup ("True"); option->choices_display[0] = g_strdup ("True"); option->choices[1] = g_strdup ("False"); option->choices_display[1] = g_strdup ("False"); - + gtk_printer_option_set (option, ppd_option->defchoice); } #ifdef PRINT_IGNORED_OPTIONS @@ -3511,7 +3526,7 @@ get_lpoption_name (const gchar *lpoption) } static int -strptr_cmp (const void *a, +strptr_cmp (const void *a, const void *b) { char **aa = (char **)a; @@ -3521,8 +3536,8 @@ strptr_cmp (const void *a, static gboolean -string_in_table (gchar *str, - const gchar *table[], +string_in_table (gchar *str, + const gchar *table[], gint table_len) { return bsearch (&str, table, table_len, sizeof (char *), (void *)strptr_cmp) != NULL; @@ -3558,8 +3573,8 @@ handle_option (GtkPrinterOptionSet *set, #ifdef PRINT_IGNORED_OPTIONS else g_warning ("CUPS Backend: Ignoring pickmany setting %s\n", ppd_option->text); -#endif - +#endif + if (option) { char *name; @@ -3602,10 +3617,10 @@ handle_option (GtkPrinterOptionSet *set, } set_option_from_settings (option, settings); - + gtk_printer_option_set_add (set, option); } - + g_free (name); } @@ -3618,12 +3633,12 @@ handle_group (GtkPrinterOptionSet *set, { gint i; gchar *name; - + /* Ignore installable options */ name = ppd_group_name (toplevel_group); if (strcmp (name, "InstallableOptions") == 0) return; - + for (i = 0; i < group->num_options; i++) handle_option (set, ppd_file, &group->options[i], toplevel_group, settings); @@ -3662,7 +3677,7 @@ cups_printer_get_options (GtkPrinter *printer, char *print_at[] = { "now", "at", "on-hold" }; char *n_up[] = {"1", "2", "4", "6", "9", "16" }; char *prio[] = {"100", "80", "50", "30" }; - /* Translators: These strings name the possible values of the + /* Translators: These strings name the possible values of the * job priority option in the print dialog */ char *prio_display[] = {N_("Urgent"), N_("High"), N_("Medium"), N_("Low") }; @@ -3670,9 +3685,9 @@ cups_printer_get_options (GtkPrinter *printer, /* Translators: These strings name the possible arrangements of * multiple pages on a sheet when printing */ - char *n_up_layout_display[] = { N_("Left to right, top to bottom"), N_("Left to right, bottom to top"), - N_("Right to left, top to bottom"), N_("Right to left, bottom to top"), - N_("Top to bottom, left to right"), N_("Top to bottom, right to left"), + char *n_up_layout_display[] = { N_("Left to right, top to bottom"), N_("Left to right, bottom to top"), + N_("Right to left, top to bottom"), N_("Right to left, bottom to top"), + N_("Top to bottom, left to right"), N_("Top to bottom, right to left"), N_("Bottom to top, left to right"), N_("Bottom to top, right to left") }; char *name; int num_opts; @@ -3691,9 +3706,9 @@ cups_printer_get_options (GtkPrinter *printer, for (i = 0; i < G_N_ELEMENTS(prio_display); i++) prio_display[i] = _(prio_display[i]); - - /* Translators, this string is used to label the job priority option - * in the print dialog + + /* Translators, this string is used to label the job priority option + * in the print dialog */ option = gtk_printer_option_new ("gtk-job-prio", _("Job Priority"), GTK_PRINTER_OPTION_TYPE_PICKONE); gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (prio), @@ -3704,7 +3719,7 @@ cups_printer_get_options (GtkPrinter *printer, g_object_unref (option); /* Translators, this string is used to label the billing info entry - * in the print dialog + * in the print dialog */ option = gtk_printer_option_new ("gtk-billing-info", _("Billing Info"), GTK_PRINTER_OPTION_TYPE_STRING); gtk_printer_option_set (option, ""); @@ -3718,7 +3733,7 @@ cups_printer_get_options (GtkPrinter *printer, if (backend != NULL && printer != NULL) { char *cover_default[] = {"none", "classified", "confidential", "secret", "standard", "topsecret", "unclassified" }; - /* Translators, these strings are names for various 'standard' cover + /* Translators, these strings are names for various 'standard' cover * pages that the printing system may support. */ char *cover_display_default[] = {N_("None"), N_("Classified"), N_("Confidential"), N_("Secret"), N_("Standard"), N_("Top Secret"), N_("Unclassified"),}; @@ -3729,8 +3744,8 @@ cups_printer_get_options (GtkPrinter *printer, gpointer value; gint j; - /* Translators, this string is used to label the pages-per-sheet option - * in the print dialog + /* Translators, this string is used to label the pages-per-sheet option + * in the print dialog */ option = gtk_printer_option_new ("gtk-n-up", _("Pages per Sheet"), GTK_PRINTER_OPTION_TYPE_PICKONE); gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (n_up), @@ -3747,8 +3762,8 @@ cups_printer_get_options (GtkPrinter *printer, for (i = 0; i < G_N_ELEMENTS (n_up_layout_display); i++) n_up_layout_display[i] = _(n_up_layout_display[i]); - /* Translators, this string is used to label the option in the print - * dialog that controls in what order multiple pages are arranged + /* Translators, this string is used to label the option in the print + * dialog that controls in what order multiple pages are arranged */ option = gtk_printer_option_new ("gtk-n-up-layout", _("Page Ordering"), GTK_PRINTER_OPTION_TYPE_PICKONE); gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (n_up_layout), @@ -3788,8 +3803,8 @@ cups_printer_get_options (GtkPrinter *printer, for (i = 0; i < num_of_covers; i++) cover_display_translated[i] = _(cover_display[i]); - - /* Translators, this is the label used for the option in the print + + /* Translators, this is the label used for the option in the print * dialog that controls the front cover page. */ option = gtk_printer_option_new ("gtk-cover-before", _("Before"), GTK_PRINTER_OPTION_TYPE_PICKONE); @@ -3804,7 +3819,7 @@ cups_printer_get_options (GtkPrinter *printer, gtk_printer_option_set_add (set, option); g_object_unref (option); - /* Translators, this is the label used for the option in the print + /* Translators, this is the label used for the option in the print * dialog that controls the back cover page. */ option = gtk_printer_option_new ("gtk-cover-after", _("After"), GTK_PRINTER_OPTION_TYPE_PICKONE); @@ -3834,7 +3849,7 @@ cups_printer_get_options (GtkPrinter *printer, set_option_from_settings (option, settings); gtk_printer_option_set_add (set, option); g_object_unref (option); - + /* Translators: this is the name of the option that allows the user * to specify a time when a print job will be printed. */ @@ -3843,7 +3858,7 @@ cups_printer_get_options (GtkPrinter *printer, set_option_from_settings (option, settings); gtk_printer_option_set_add (set, option); g_object_unref (option); - + /* Printer (ppd) specific settings */ ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer)); if (ppd_file) @@ -3858,7 +3873,7 @@ cups_printer_get_options (GtkPrinter *printer, option = ppdFindOption (ppd_file, "PageSize"); ppd_name = gtk_paper_size_get_ppd_name (paper_size); - + if (ppd_name) strncpy (option->defchoice, ppd_name, PPD_MAX_NAME); else @@ -3895,7 +3910,7 @@ cups_printer_get_options (GtkPrinter *printer, { gchar **values; gint num_values; - + values = g_strsplit (opts[i].value, ",", 2); num_values = g_strv_length (values); @@ -3999,7 +4014,7 @@ mark_option_from_set (GtkPrinterOptionSet *set, if (option) ppdMarkOption (ppd_file, ppd_option->keyword, option->value); - + g_free (name); } @@ -4037,7 +4052,7 @@ set_conflicts_from_option (GtkPrinterOptionSet *set, else g_warning ("CUPS Backend: Ignoring conflict for option %s", ppd_option->keyword); #endif - + g_free (name); } } @@ -4063,7 +4078,7 @@ cups_printer_mark_conflicts (GtkPrinter *printer, ppd_file_t *ppd_file; int num_conflicts; int i; - + ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer)); if (ppd_file == NULL) @@ -4081,7 +4096,7 @@ cups_printer_mark_conflicts (GtkPrinter *printer, for (i = 0; i < ppd_file->num_groups; i++) set_conflicts_from_group (options, ppd_file, &ppd_file->groups[i]); } - + return num_conflicts > 0; } @@ -4114,8 +4129,8 @@ map_settings_to_option (GtkPrinterOption *option, name = g_strdup_printf ("cups-%s", cups_name); cups_value = gtk_print_settings_get (settings, name); g_free (name); - - if (cups_value != NULL) + + if (cups_value != NULL) { gtk_printer_option_set (option, cups_value); return; @@ -4243,7 +4258,7 @@ set_option_from_settings (GtkPrinterOption *option, { const char *cups_value; char *value; - + if (settings == NULL) return; @@ -4308,43 +4323,43 @@ set_option_from_settings (GtkPrinterOption *option, cups_value = gtk_print_settings_get (settings, "cups-job-billing"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (strcmp (option->name, "gtk-job-prio") == 0) { cups_value = gtk_print_settings_get (settings, "cups-job-priority"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (strcmp (option->name, "gtk-cover-before") == 0) { cups_value = gtk_print_settings_get (settings, "cover-before"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (strcmp (option->name, "gtk-cover-after") == 0) { cups_value = gtk_print_settings_get (settings, "cover-after"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (strcmp (option->name, "gtk-print-time") == 0) { cups_value = gtk_print_settings_get (settings, "print-at"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (strcmp (option->name, "gtk-print-time-text") == 0) { cups_value = gtk_print_settings_get (settings, "print-at-time"); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } else if (g_str_has_prefix (option->name, "cups-")) { cups_value = gtk_print_settings_get (settings, option->name); if (cups_value) gtk_printer_option_set (option, cups_value); - } + } } static void @@ -4504,11 +4519,11 @@ cups_printer_get_settings_from_options (GtkPrinter *printer, data.options = options; data.settings = settings; data.ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer)); - + if (data.ppd_file != NULL) { GtkPrinterOption *cover_before, *cover_after; - + gtk_printer_option_set_foreach (options, foreach_option_get_settings, &data); cover_before = gtk_printer_option_set_lookup (options, "gtk-cover-before"); @@ -4526,7 +4541,7 @@ cups_printer_get_settings_from_options (GtkPrinter *printer, if (strcmp (print_at, "at") == 0) { gchar *utc_time = NULL; - + utc_time = localtime_to_utctime (print_at_time); if (utc_time != NULL) @@ -4666,7 +4681,7 @@ create_page_setup (ppd_file_t *ppd_file, if (display_name == NULL) display_name = g_strdup (size->name); - + page_setup = gtk_page_setup_new (); paper_size = gtk_paper_size_new_from_ppd (size->name, display_name, @@ -4674,12 +4689,12 @@ create_page_setup (ppd_file_t *ppd_file, size->length); gtk_page_setup_set_paper_size (page_setup, paper_size); gtk_paper_size_free (paper_size); - + gtk_page_setup_set_top_margin (page_setup, size->length - size->top, GTK_UNIT_POINTS); gtk_page_setup_set_bottom_margin (page_setup, size->bottom, GTK_UNIT_POINTS); gtk_page_setup_set_left_margin (page_setup, size->left, GTK_UNIT_POINTS); gtk_page_setup_set_right_margin (page_setup, size->width - size->right, GTK_UNIT_POINTS); - + g_free (display_name); return page_setup; @@ -4699,10 +4714,10 @@ cups_printer_list_papers (GtkPrinter *printer) return NULL; l = NULL; - + for (i = 0; i < ppd_file->num_sizes; i++) { - size = &ppd_file->sizes[i]; + size = &ppd_file->sizes[i]; page_setup = create_page_setup (ppd_file, size); @@ -4728,7 +4743,7 @@ cups_printer_get_default_page_size (GtkPrinter *printer) if (option == NULL) return NULL; - size = ppdPageSize (ppd_file, option->defchoice); + size = ppdPageSize (ppd_file, option->defchoice); if (size == NULL) return NULL;