diff -up cups-1.4.3/backend/dnssd.c.dnssd-deviceid.patch cups-1.4.3/backend/dnssd.c --- cups-1.4.3/backend/dnssd.c.dnssd-deviceid.patch 2010-04-16 19:36:12.226148774 +0100 +++ cups-1.4.3/backend/dnssd.c 2010-04-16 19:39:53.314148240 +0100 @@ -1192,15 +1192,22 @@ find_device (cups_array_t *devices, if (device->device_id) free(device->device_id); + if (device_id[0]) + { + /* Mark this as the real device ID. */ + ptr = device_id + strlen(device_id); + snprintf(ptr, sizeof(device_id) - (ptr - device_id), "FZY:0;"); + } + if (!device_id[0] && strcmp(model, "Unknown")) { if (make_and_model[0]) - snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;", + snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;FZY:1;", make_and_model, model); else if (!strncasecmp(model, "designjet ", 10)) - snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s", model + 10); + snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s;FZY:1;", model + 10); else if (!strncasecmp(model, "stylus ", 7)) - snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s", model + 7); + snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s;FZY:1;", model + 7); else if ((ptr = strchr(model, ' ')) != NULL) { /* @@ -1210,7 +1217,7 @@ find_device (cups_array_t *devices, memcpy(make_and_model, model, ptr - model); make_and_model[ptr - model] = '\0'; - snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s", + snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;FZY:1;", make_and_model, ptr + 1); } }