diff options
Diffstat (limited to 'src/main/printers.c')
-rw-r--r-- | src/main/printers.c | 54 |
1 files changed, 37 insertions, 17 deletions
diff --git a/src/main/printers.c b/src/main/printers.c index af2a670..0fa08da 100644 --- a/src/main/printers.c +++ b/src/main/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c,v 1.86 2009/10/05 12:37:30 rlk Exp $" + * "$Id: printers.c,v 1.89 2010/08/07 02:30:38 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -65,7 +65,8 @@ struct stp_printer char *long_name; /* Long name for UI */ char *family; /* Printer family */ char *manufacturer; /* Printer manufacturer */ - char *device_id; /* IEEE 1284 device ID */ + char *device_id; /* IEEE 1284 device ID */ + char *foomatic_id; /* Foomatic printer ID */ int model; /* Model number */ int vars_initialized; const stp_printfuncs_t *printfuncs; @@ -109,20 +110,6 @@ stp_printer_model_count(void) return stp_list_get_length(printer_list); } -static void -null_printer(void) -{ - stp_erprintf("Null stp_printer_t! Please report this bug.\n"); - stp_abort(); -} - -static inline void -check_printer(const stp_printer_t *p) -{ - if (p == NULL) - null_printer(); -} - const stp_printer_t * stp_get_printer_by_index(int idx) { @@ -205,6 +192,12 @@ stp_printer_get_manufacturer(const stp_printer_t *printer) return printer->manufacturer; } +const char * +stp_printer_get_foomatic_id(const stp_printer_t *printer) +{ + return printer->foomatic_id; +} + int stp_printer_get_model(const stp_printer_t *printer) { @@ -266,7 +259,7 @@ stp_get_printer_by_device_id(const char *device_id) printer_item = stp_list_get_start(printer_list); while (printer_item) { - if (strcmp(((const stp_printer_t *) stp_list_item_get_data(printer_item)), + if (strcmp(((const stp_printer_t *) stp_list_item_get_data(printer_item))->device_id, device_id) == 0) return ((const stp_printer_t *) stp_list_item_get_data(printer_item)); printer_item = stp_list_item_next(printer_item); @@ -274,6 +267,30 @@ stp_get_printer_by_device_id(const char *device_id) return NULL; } +const stp_printer_t * +stp_get_printer_by_foomatic_id(const char *foomatic_id) +{ + stp_list_item_t *printer_item; + if (printer_list == NULL) + { + stp_erprintf("No printer drivers found: " + "are STP_DATA_PATH and STP_MODULE_PATH correct?\n"); + stpi_init_printer_list(); + } + if (! foomatic_id || strcmp(foomatic_id, "") == 0) + return NULL; + + printer_item = stp_list_get_start(printer_list); + while (printer_item) + { + if (strcmp(((const stp_printer_t *) stp_list_item_get_data(printer_item))->foomatic_id, + foomatic_id) == 0) + return ((const stp_printer_t *) stp_list_item_get_data(printer_item)); + printer_item = stp_list_item_next(printer_item); + } + return NULL; +} + int stp_get_printer_index_by_driver(const char *driver) { @@ -1088,6 +1105,9 @@ stp_printer_create_from_xmltree(stp_mxml_node_t *printer, /* The printer node */ stmp = stp_mxmlElementGetAttr(printer, "deviceid"); if (stmp) outprinter->device_id = stp_strdup(stmp); + stmp = stp_mxmlElementGetAttr(printer, "foomaticid"); + if (stmp) + outprinter->foomatic_id = stp_strdup(stmp); if (stp_get_driver(outprinter->printvars)) driver = 1; |