#include "driver.h"
#include <cups/string-private.h>
ppd_attr_t *
cupsFindAttr(ppd_file_t *ppd,
const char *name,
const char *colormodel,
const char *media,
const char *resolution,
char *spec,
int specsize)
{
ppd_attr_t *attr;
if (!ppd || !name || !colormodel || !media || !resolution || !spec ||
specsize < PPD_MAX_NAME)
return (NULL);
snprintf(spec, specsize, "%s.%s.%s", colormodel, media, resolution);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
snprintf(spec, specsize, "%s.%s", colormodel, resolution);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
strlcpy(spec, colormodel, specsize);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
snprintf(spec, specsize, "%s.%s", media, resolution);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
strlcpy(spec, media, specsize);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
strlcpy(spec, resolution, specsize);
fprintf(stderr, "DEBUG2: Looking for \"*%s %s\"...\n", name, spec);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
spec[0] = '\0';
fprintf(stderr, "DEBUG2: Looking for \"*%s\"...\n", name);
if ((attr = ppdFindAttr(ppd, name, spec)) != NULL && attr->value != NULL)
return (attr);
fprintf(stderr, "DEBUG2: No instance of \"*%s\" found...\n", name);
return (NULL);
}