AvahiLookupResultFlags flags,
void *context);
# endif /* HAVE_DNSSD */
-static void cups_dnssd_queue_name(char *name, const char *serviceName, size_t namesize);
static const char *cups_dnssd_resolve(cups_dest_t *dest, const char *uri,
int msec, int *cancel,
cups_dest_cb_t cb, void *user_data);
int num_dests, cups_dest_t **dests);
static char *cups_make_string(ipp_attribute_t *attr, char *buffer,
size_t bufsize);
+static void cups_queue_name(char *name, const char *serviceName, size_t namesize);
/*
hostname[256], /* Hostname from URI */
resource[1024], /* Resource path from URI */
*ptr; /* Pointer into string */
+ const char *info; /* printer-info string */
int port; /* Port number from URI */
return (NULL);
}
- if (!name)
+ if (name)
+ {
+ info = name;
+ }
+ else
{
/*
* Create the name from the URI...
* Use the service instance name...
*/
- if ((ptr = strchr(hostname, '.')) != NULL)
+ if ((ptr = strstr(hostname, "._")) != NULL)
*ptr = '\0';
- name = hostname;
+ cups_queue_name(temp, hostname, sizeof(temp));
+ name = temp;
+ info = hostname;
}
else if (!strncmp(resource, "/classes/", 9))
{
snprintf(temp, sizeof(temp), "%s @ %s", resource + 9, hostname);
- name = temp;
+ name = resource + 9;
+ info = temp;
}
else if (!strncmp(resource, "/printers/", 10))
{
snprintf(temp, sizeof(temp), "%s @ %s", resource + 10, hostname);
- name = temp;
+ name = resource + 10;
+ info = temp;
}
else
{
name = hostname;
+ info = hostname;
}
}
dest->name = _cupsStrAlloc(name);
dest->num_options = cupsAddOption("device-uri", uri, dest->num_options, &(dest->options));
- dest->num_options = cupsAddOption("printer-info", name, dest->num_options, &(dest->options));
+ dest->num_options = cupsAddOption("printer-info", info, dest->num_options, &(dest->options));
return (dest);
}
* See if this is an existing device...
*/
- cups_dnssd_queue_name(name, serviceName, sizeof(name));
+ cups_queue_name(name, serviceName, sizeof(name));
key.dest.name = name;
if ((ptr = strstr(serviceName, "._")) != NULL)
*ptr = '\0';
- cups_dnssd_queue_name(name, serviceName, sizeof(name));
+ cups_queue_name(name, serviceName, sizeof(name));
dkey.dest.name = name;
* Save the printer-xxx values...
*/
- device->dest.num_options = cupsAddOption("printer-info", name, device->dest.num_options, &device->dest.options);
-
if (make_and_model[0])
{
strlcat(make_and_model, " ", sizeof(make_and_model));
#endif /* HAVE_DNSSD */
-#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-/*
- * 'cups_dnssd_queue_name()' - Create a local queue name based on the service name.
- */
-
-static void
-cups_dnssd_queue_name(
- char *name, /* I - Name buffer */
- const char *serviceName, /* I - Service name */
- size_t namesize) /* I - Size of name buffer */
-{
- const char *ptr; /* Pointer into serviceName */
- char *nameptr; /* Pointer into name */
-
-
- for (nameptr = name, ptr = serviceName; *ptr && nameptr < (name + namesize - 1); ptr ++)
- {
- /*
- * Sanitize the printer name...
- */
-
- if (_cups_isalnum(*ptr))
- *nameptr++ = *ptr;
- else if (nameptr == name || nameptr[-1] != '_')
- *nameptr++ = '_';
- }
-
- *nameptr = '\0';
-}
-#endif /* HAVE_DNSSD || HAVE_AVAHI */
-
-
/*
* 'cups_elapsed()' - Return the elapsed time in milliseconds.
*/
return (buffer);
}
+
+
+/*
+ * 'cups_queue_name()' - Create a local queue name based on the service name.
+ */
+
+static void
+cups_queue_name(
+ char *name, /* I - Name buffer */
+ const char *serviceName, /* I - Service name */
+ size_t namesize) /* I - Size of name buffer */
+{
+ const char *ptr; /* Pointer into serviceName */
+ char *nameptr; /* Pointer into name */
+
+
+ for (nameptr = name, ptr = serviceName; *ptr && nameptr < (name + namesize - 1); ptr ++)
+ {
+ /*
+ * Sanitize the printer name...
+ */
+
+ if (_cups_isalnum(*ptr))
+ *nameptr++ = *ptr;
+ else if (nameptr == name || nameptr[-1] != '_')
+ *nameptr++ = '_';
+ }
+
+ *nameptr = '\0';
+}