]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Add WITH-DISTINCT-VALUES support for collections. 5913/head
authorMichael R Sweet <michael.r.sweet@gmail.com>
Wed, 21 Apr 2021 15:39:06 +0000 (11:39 -0400)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Wed, 21 Apr 2021 15:39:06 +0000 (11:39 -0400)
doc/help/man-cupsd.conf.html
doc/help/man-ipptoolfile.html
man/ipptoolfile.5
tools/ipptool.c

index 1668eee8afdaef64d82a191596e85e1ea7df382b..f1e519dab43973a38bfbf1227800686fbce02488 100644 (file)
@@ -145,9 +145,6 @@ The default is "5".
 <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>
index 3154560d05b36f617ba41239f29a9c94c37c96c6..64f800295acf6704c6dd3b50855d67d4ee46c83a 100644 (file)
@@ -269,7 +269,7 @@ Comparisons are case-sensitive.
 <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.
index 0fb894c610aa3efacdd277188f52621fa8443c39..a4ffd635cf1197d1feff3d01c622ccea05bd7529 100644 (file)
@@ -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
index 0ebc016c06cb09de235bd20d59673ece4bd67045..e3692524ca9ea236fb220450ba0b978c19bafa64 100644 (file)
@@ -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 :
@@ -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;