cups_collection_contains(ipp_t *test, /* I - Collection to test */
ipp_t *match) /* I - Matching values */
{
- int i, /* Looping var */
- count; /* Number of test values */
+ int i, j, /* Looping vars */
+ mcount, /* Number of match values */
+ tcount; /* Number of test values */
ipp_attribute_t *tattr, /* Testing attribute */
*mattr; /* Matching attribute */
const char *tval; /* Testing string value */
if ((tattr = ippFindAttribute(test, ippGetName(mattr), IPP_TAG_ZERO)) == NULL)
return (0);
- count = ippGetCount(tattr);
+ tcount = ippGetCount(tattr);
switch (ippGetValueTag(mattr))
{
if (ippGetValueTag(tattr) != ippGetValueTag(mattr))
return (0);
- for (i = 0; i < count; i ++)
+ for (i = 0; i < tcount; i ++)
{
if (!ippContainsInteger(mattr, ippGetInteger(tattr, i)))
return (0);
if (ippGetValueTag(tattr) != IPP_TAG_INTEGER)
return (0);
- for (i = 0; i < count; i ++)
+ for (i = 0; i < tcount; i ++)
{
if (!ippContainsInteger(mattr, ippGetInteger(tattr, i)))
return (0);
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
- for (i = 0; i < count; i ++)
+ for (i = 0; i < tcount; i ++)
{
if ((tval = ippGetString(tattr, i, NULL)) == NULL || !ippContainsString(mattr, tval))
return (0);
}
break;
+ case IPP_TAG_BEGIN_COLLECTION :
+ for (i = 0; i < tcount; i ++)
+ {
+ ipp_t *tcol = ippGetCollection(tattr, i);
+ /* Testing collection */
+
+ for (j = 0, mcount = ippGetCount(mattr); j < mcount; j ++)
+ if (!cups_collection_contains(tcol, ippGetCollection(mattr, j)))
+ return (0);
+ }
+ break;
+
default :
return (0);
}