diff options
Diffstat (limited to 'src/main/printers.c')
-rw-r--r-- | src/main/printers.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/main/printers.c b/src/main/printers.c index 8df5ea9..af2a670 100644 --- a/src/main/printers.c +++ b/src/main/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c,v 1.85 2008/06/03 11:40:39 rlk Exp $" + * "$Id: printers.c,v 1.86 2009/10/05 12:37:30 rlk Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -65,6 +65,7 @@ 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 */ int model; /* Model number */ int vars_initialized; const stp_printfuncs_t *printfuncs; @@ -187,6 +188,12 @@ stpi_printer_long_namefunc(const void *item) } const char * +stp_printer_get_device_id(const stp_printer_t *printer) +{ + return printer->device_id; +} + +const char * stp_printer_get_family(const stp_printer_t *printer) { return printer->family; @@ -243,6 +250,30 @@ stp_get_printer_by_driver(const char *driver) return (const stp_printer_t *) stp_list_item_get_data(printer_item); } +const stp_printer_t * +stp_get_printer_by_device_id(const char *device_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 (! device_id || strcmp(device_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)), + device_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) { @@ -1054,6 +1085,9 @@ stp_printer_create_from_xmltree(stp_mxml_node_t *printer, /* The printer node */ outprinter->manufacturer = stp_strdup(stp_mxmlElementGetAttr(printer, "manufacturer")); outprinter->model = stp_xmlstrtol(stp_mxmlElementGetAttr(printer, "model")); outprinter->family = stp_strdup((const char *) family); + stmp = stp_mxmlElementGetAttr(printer, "deviceid"); + if (stmp) + outprinter->device_id = stp_strdup(stmp); if (stp_get_driver(outprinter->printvars)) driver = 1; |