Skip to content

Commit

Permalink
Add WITH-DISTINCT-VALUES support for collections.
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelrsweet committed Apr 21, 2021
1 parent 14a5268 commit 9a13f25
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 5 deletions.
3 changes: 0 additions & 3 deletions doc/help/man-cupsd.conf.html
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,6 @@ <h3><a name="TOP_LEVEL_DIRECTIVES">Top-level Directives</a></h3>
<dd style="margin-left: 5.0em"><dt><b>KeepAlive No</b>
<dd style="margin-left: 5.0em">Specifies whether to support HTTP keep-alive connections.
The default is "Yes".
<dt><a name="KeepAliveTimeout"></a><b>KeepAliveTimeout </b><i>seconds</i>
<dd style="margin-left: 5.0em">Specifies how long an idle client connection remains open.
The default is "30".
<dt><a name="LimitIPP"></a><b>&lt;Limit </b><i>operation </i>...<b>> </b>... <b>&lt;/Limit></b>
<dd style="margin-left: 5.0em">Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATION NAMES".
<dt><a name="Limit"></a><b>&lt;Limit </b><i>method </i>...<b>> </b>... <b>&lt;/Limit></b>
Expand Down
2 changes: 1 addition & 1 deletion doc/help/man-ipptoolfile.html
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ <h3><a name="EXPECT_PREDICATES">Expect Predicates</a></h3>
<dt><b>WITH-DISTINCT-VALUES</b>
<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute are unique.
Comparisons are case-sensitive.
Only charset, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
<dt><b>WITH-HOSTNAME "</b><i>literal string</i><b>"</b>
<dd style="margin-left: 5.0em"><dt><b>WITH-HOSTNAME "/</b><i>regular expression</i><b>/"</b>
<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching hostname.
Expand Down
2 changes: 1 addition & 1 deletion man/ipptoolfile.5
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ Comparisons are case-sensitive.
\fBWITH\-DISTINCT\-VALUES\fR
Requires that all values of the \fBEXPECT\fR attribute are unique.
Comparisons are case-sensitive.
Only charset, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
.TP 5
\fBWITH\-HOSTNAME "\fIliteral string\fB"\fR
.TP 5
Expand Down
24 changes: 24 additions & 0 deletions tools/ipptool.c
Original file line number Diff line number Diff line change
Expand Up @@ -5279,6 +5279,7 @@ with_distinct_values(
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
case IPP_TAG_BEGIN_COLLECTION :
break;

default :
Expand Down Expand Up @@ -5327,6 +5328,29 @@ with_distinct_values(
case IPP_TAG_MIMETYPE :
value = ippGetString(attr, i, NULL);
break;
case IPP_TAG_BEGIN_COLLECTION :
{
ipp_t *col = ippGetCollection(attr, i);
// Collection value
ipp_attribute_t *member; // Member attribute
char *bufptr, // Pointer into buffer
*bufend, // End of buffer
prefix; // Prefix character

for (prefix = '{', bufptr = buffer, bufend = buffer + sizeof(buffer) - 2, member = ippFirstAttribute(col); member && bufptr < bufend; member = ippNextAttribute(col))
{
*bufptr++ = prefix;
prefix = ' ';

ippAttributeString(member, bufptr, (size_t)(bufend - bufptr));
bufptr += strlen(bufptr);
}

*bufptr++ = '}';
*bufptr = '\0';
value = buffer;
}
break;
default : // Should never happen
value = "unsupported";
break;
Expand Down

0 comments on commit 9a13f25

Please sign in to comment.