1*5e7646d2SAndroid Build Coastguard Worker /*
2*5e7646d2SAndroid Build Coastguard Worker * Internet Printing Protocol support functions for CUPS.
3*5e7646d2SAndroid Build Coastguard Worker *
4*5e7646d2SAndroid Build Coastguard Worker * Copyright © 2007-2018 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
6*5e7646d2SAndroid Build Coastguard Worker *
7*5e7646d2SAndroid Build Coastguard Worker * Licensed under Apache License v2.0. See the file "LICENSE" for more
8*5e7646d2SAndroid Build Coastguard Worker * information.
9*5e7646d2SAndroid Build Coastguard Worker */
10*5e7646d2SAndroid Build Coastguard Worker
11*5e7646d2SAndroid Build Coastguard Worker /*
12*5e7646d2SAndroid Build Coastguard Worker * Include necessary headers...
13*5e7646d2SAndroid Build Coastguard Worker */
14*5e7646d2SAndroid Build Coastguard Worker
15*5e7646d2SAndroid Build Coastguard Worker #include "cups-private.h"
16*5e7646d2SAndroid Build Coastguard Worker #include "debug-internal.h"
17*5e7646d2SAndroid Build Coastguard Worker
18*5e7646d2SAndroid Build Coastguard Worker
19*5e7646d2SAndroid Build Coastguard Worker /*
20*5e7646d2SAndroid Build Coastguard Worker * Local globals...
21*5e7646d2SAndroid Build Coastguard Worker */
22*5e7646d2SAndroid Build Coastguard Worker
23*5e7646d2SAndroid Build Coastguard Worker static const char * const ipp_states[] =
24*5e7646d2SAndroid Build Coastguard Worker {
25*5e7646d2SAndroid Build Coastguard Worker "IPP_STATE_ERROR",
26*5e7646d2SAndroid Build Coastguard Worker "IPP_STATE_IDLE",
27*5e7646d2SAndroid Build Coastguard Worker "IPP_STATE_HEADER",
28*5e7646d2SAndroid Build Coastguard Worker "IPP_STATE_ATTRIBUTE",
29*5e7646d2SAndroid Build Coastguard Worker "IPP_STATE_DATA"
30*5e7646d2SAndroid Build Coastguard Worker };
31*5e7646d2SAndroid Build Coastguard Worker static const char * const ipp_status_oks[] = /* "OK" status codes */
32*5e7646d2SAndroid Build Coastguard Worker { /* (name) = abandoned standard value */
33*5e7646d2SAndroid Build Coastguard Worker "successful-ok",
34*5e7646d2SAndroid Build Coastguard Worker "successful-ok-ignored-or-substituted-attributes",
35*5e7646d2SAndroid Build Coastguard Worker "successful-ok-conflicting-attributes",
36*5e7646d2SAndroid Build Coastguard Worker "successful-ok-ignored-subscriptions",
37*5e7646d2SAndroid Build Coastguard Worker "(successful-ok-ignored-notifications)",
38*5e7646d2SAndroid Build Coastguard Worker "successful-ok-too-many-events",
39*5e7646d2SAndroid Build Coastguard Worker "(successful-ok-but-cancel-subscription)",
40*5e7646d2SAndroid Build Coastguard Worker "successful-ok-events-complete"
41*5e7646d2SAndroid Build Coastguard Worker },
42*5e7646d2SAndroid Build Coastguard Worker * const ipp_status_400s[] = /* Client errors */
43*5e7646d2SAndroid Build Coastguard Worker { /* (name) = abandoned standard value */
44*5e7646d2SAndroid Build Coastguard Worker "client-error-bad-request",
45*5e7646d2SAndroid Build Coastguard Worker "client-error-forbidden",
46*5e7646d2SAndroid Build Coastguard Worker "client-error-not-authenticated",
47*5e7646d2SAndroid Build Coastguard Worker "client-error-not-authorized",
48*5e7646d2SAndroid Build Coastguard Worker "client-error-not-possible",
49*5e7646d2SAndroid Build Coastguard Worker "client-error-timeout",
50*5e7646d2SAndroid Build Coastguard Worker "client-error-not-found",
51*5e7646d2SAndroid Build Coastguard Worker "client-error-gone",
52*5e7646d2SAndroid Build Coastguard Worker "client-error-request-entity-too-large",
53*5e7646d2SAndroid Build Coastguard Worker "client-error-request-value-too-long",
54*5e7646d2SAndroid Build Coastguard Worker "client-error-document-format-not-supported",
55*5e7646d2SAndroid Build Coastguard Worker "client-error-attributes-or-values-not-supported",
56*5e7646d2SAndroid Build Coastguard Worker "client-error-uri-scheme-not-supported",
57*5e7646d2SAndroid Build Coastguard Worker "client-error-charset-not-supported",
58*5e7646d2SAndroid Build Coastguard Worker "client-error-conflicting-attributes",
59*5e7646d2SAndroid Build Coastguard Worker "client-error-compression-not-supported",
60*5e7646d2SAndroid Build Coastguard Worker "client-error-compression-error",
61*5e7646d2SAndroid Build Coastguard Worker "client-error-document-format-error",
62*5e7646d2SAndroid Build Coastguard Worker "client-error-document-access-error",
63*5e7646d2SAndroid Build Coastguard Worker "client-error-attributes-not-settable",
64*5e7646d2SAndroid Build Coastguard Worker "client-error-ignored-all-subscriptions",
65*5e7646d2SAndroid Build Coastguard Worker "client-error-too-many-subscriptions",
66*5e7646d2SAndroid Build Coastguard Worker "(client-error-ignored-all-notifications)",
67*5e7646d2SAndroid Build Coastguard Worker "(client-error-client-print-support-file-not-found)",
68*5e7646d2SAndroid Build Coastguard Worker "client-error-document-password-error",
69*5e7646d2SAndroid Build Coastguard Worker "client-error-document-permission-error",
70*5e7646d2SAndroid Build Coastguard Worker "client-error-document-security-error",
71*5e7646d2SAndroid Build Coastguard Worker "client-error-document-unprintable-error",
72*5e7646d2SAndroid Build Coastguard Worker "client-error-account-info-needed",
73*5e7646d2SAndroid Build Coastguard Worker "client-error-account-closed",
74*5e7646d2SAndroid Build Coastguard Worker "client-error-account-limit-reached",
75*5e7646d2SAndroid Build Coastguard Worker "client-error-account-authorization-failed",
76*5e7646d2SAndroid Build Coastguard Worker "client-error-not-fetchable"
77*5e7646d2SAndroid Build Coastguard Worker },
78*5e7646d2SAndroid Build Coastguard Worker * const ipp_status_480s[] = /* Vendor client errors */
79*5e7646d2SAndroid Build Coastguard Worker {
80*5e7646d2SAndroid Build Coastguard Worker /* 0x0480 - 0x048F */
81*5e7646d2SAndroid Build Coastguard Worker "0x0480",
82*5e7646d2SAndroid Build Coastguard Worker "0x0481",
83*5e7646d2SAndroid Build Coastguard Worker "0x0482",
84*5e7646d2SAndroid Build Coastguard Worker "0x0483",
85*5e7646d2SAndroid Build Coastguard Worker "0x0484",
86*5e7646d2SAndroid Build Coastguard Worker "0x0485",
87*5e7646d2SAndroid Build Coastguard Worker "0x0486",
88*5e7646d2SAndroid Build Coastguard Worker "0x0487",
89*5e7646d2SAndroid Build Coastguard Worker "0x0488",
90*5e7646d2SAndroid Build Coastguard Worker "0x0489",
91*5e7646d2SAndroid Build Coastguard Worker "0x048A",
92*5e7646d2SAndroid Build Coastguard Worker "0x048B",
93*5e7646d2SAndroid Build Coastguard Worker "0x048C",
94*5e7646d2SAndroid Build Coastguard Worker "0x048D",
95*5e7646d2SAndroid Build Coastguard Worker "0x048E",
96*5e7646d2SAndroid Build Coastguard Worker "0x048F",
97*5e7646d2SAndroid Build Coastguard Worker /* 0x0490 - 0x049F */
98*5e7646d2SAndroid Build Coastguard Worker "0x0490",
99*5e7646d2SAndroid Build Coastguard Worker "0x0491",
100*5e7646d2SAndroid Build Coastguard Worker "0x0492",
101*5e7646d2SAndroid Build Coastguard Worker "0x0493",
102*5e7646d2SAndroid Build Coastguard Worker "0x0494",
103*5e7646d2SAndroid Build Coastguard Worker "0x0495",
104*5e7646d2SAndroid Build Coastguard Worker "0x0496",
105*5e7646d2SAndroid Build Coastguard Worker "0x0497",
106*5e7646d2SAndroid Build Coastguard Worker "0x0498",
107*5e7646d2SAndroid Build Coastguard Worker "0x0499",
108*5e7646d2SAndroid Build Coastguard Worker "0x049A",
109*5e7646d2SAndroid Build Coastguard Worker "0x049B",
110*5e7646d2SAndroid Build Coastguard Worker "cups-error-account-info-needed",
111*5e7646d2SAndroid Build Coastguard Worker "cups-error-account-closed",
112*5e7646d2SAndroid Build Coastguard Worker "cups-error-account-limit-reached",
113*5e7646d2SAndroid Build Coastguard Worker "cups-error-account-authorization-failed"
114*5e7646d2SAndroid Build Coastguard Worker },
115*5e7646d2SAndroid Build Coastguard Worker * const ipp_status_500s[] = /* Server errors */
116*5e7646d2SAndroid Build Coastguard Worker {
117*5e7646d2SAndroid Build Coastguard Worker "server-error-internal-error",
118*5e7646d2SAndroid Build Coastguard Worker "server-error-operation-not-supported",
119*5e7646d2SAndroid Build Coastguard Worker "server-error-service-unavailable",
120*5e7646d2SAndroid Build Coastguard Worker "server-error-version-not-supported",
121*5e7646d2SAndroid Build Coastguard Worker "server-error-device-error",
122*5e7646d2SAndroid Build Coastguard Worker "server-error-temporary-error",
123*5e7646d2SAndroid Build Coastguard Worker "server-error-not-accepting-jobs",
124*5e7646d2SAndroid Build Coastguard Worker "server-error-busy",
125*5e7646d2SAndroid Build Coastguard Worker "server-error-job-canceled",
126*5e7646d2SAndroid Build Coastguard Worker "server-error-multiple-document-jobs-not-supported",
127*5e7646d2SAndroid Build Coastguard Worker "server-error-printer-is-deactivated",
128*5e7646d2SAndroid Build Coastguard Worker "server-error-too-many-jobs",
129*5e7646d2SAndroid Build Coastguard Worker "server-error-too-many-documents"
130*5e7646d2SAndroid Build Coastguard Worker },
131*5e7646d2SAndroid Build Coastguard Worker * const ipp_status_1000s[] = /* CUPS internal */
132*5e7646d2SAndroid Build Coastguard Worker {
133*5e7646d2SAndroid Build Coastguard Worker "cups-authentication-canceled",
134*5e7646d2SAndroid Build Coastguard Worker "cups-pki-error",
135*5e7646d2SAndroid Build Coastguard Worker "cups-upgrade-required"
136*5e7646d2SAndroid Build Coastguard Worker };
137*5e7646d2SAndroid Build Coastguard Worker static const char * const ipp_std_ops[] =
138*5e7646d2SAndroid Build Coastguard Worker {
139*5e7646d2SAndroid Build Coastguard Worker /* 0x0000 - 0x000f */
140*5e7646d2SAndroid Build Coastguard Worker "0x0000",
141*5e7646d2SAndroid Build Coastguard Worker "0x0001",
142*5e7646d2SAndroid Build Coastguard Worker "Print-Job", /* RFC 8011 */
143*5e7646d2SAndroid Build Coastguard Worker "Print-URI", /* RFC 8011 */
144*5e7646d2SAndroid Build Coastguard Worker "Validate-Job", /* RFC 8011 */
145*5e7646d2SAndroid Build Coastguard Worker "Create-Job", /* RFC 8011 */
146*5e7646d2SAndroid Build Coastguard Worker "Send-Document", /* RFC 8011 */
147*5e7646d2SAndroid Build Coastguard Worker "Send-URI", /* RFC 8011 */
148*5e7646d2SAndroid Build Coastguard Worker "Cancel-Job", /* RFC 8011 */
149*5e7646d2SAndroid Build Coastguard Worker "Get-Job-Attributes", /* RFC 8011 */
150*5e7646d2SAndroid Build Coastguard Worker "Get-Jobs", /* RFC 8011 */
151*5e7646d2SAndroid Build Coastguard Worker "Get-Printer-Attributes", /* RFC 8011 */
152*5e7646d2SAndroid Build Coastguard Worker "Hold-Job", /* RFC 8011 */
153*5e7646d2SAndroid Build Coastguard Worker "Release-Job", /* RFC 8011 */
154*5e7646d2SAndroid Build Coastguard Worker "Restart-Job", /* RFC 8011 */
155*5e7646d2SAndroid Build Coastguard Worker "0x000f",
156*5e7646d2SAndroid Build Coastguard Worker
157*5e7646d2SAndroid Build Coastguard Worker /* 0x0010 - 0x001f */
158*5e7646d2SAndroid Build Coastguard Worker "Pause-Printer", /* RFC 8011 */
159*5e7646d2SAndroid Build Coastguard Worker "Resume-Printer", /* RFC 8011 */
160*5e7646d2SAndroid Build Coastguard Worker "Purge-Jobs", /* RFC 8011 */
161*5e7646d2SAndroid Build Coastguard Worker "Set-Printer-Attributes", /* RFC 3380 */
162*5e7646d2SAndroid Build Coastguard Worker "Set-Job-Attributes", /* RFC 3380 */
163*5e7646d2SAndroid Build Coastguard Worker "Get-Printer-Supported-Values", /* RFC 3380 */
164*5e7646d2SAndroid Build Coastguard Worker "Create-Printer-Subscriptions", /* RFC 3995 */
165*5e7646d2SAndroid Build Coastguard Worker "Create-Job-Subscriptions", /* RFC 3995 */
166*5e7646d2SAndroid Build Coastguard Worker "Get-Subscription-Attributes", /* RFC 3995 */
167*5e7646d2SAndroid Build Coastguard Worker "Get-Subscriptions", /* RFC 3995 */
168*5e7646d2SAndroid Build Coastguard Worker "Renew-Subscription", /* RFC 3995 */
169*5e7646d2SAndroid Build Coastguard Worker "Cancel-Subscription", /* RFC 3995 */
170*5e7646d2SAndroid Build Coastguard Worker "Get-Notifications", /* RFC 3996 */
171*5e7646d2SAndroid Build Coastguard Worker "(Send-Notifications)",
172*5e7646d2SAndroid Build Coastguard Worker "Get-Resource-Attributes", /* IPP System */
173*5e7646d2SAndroid Build Coastguard Worker "(Get-Resource-Data)",
174*5e7646d2SAndroid Build Coastguard Worker
175*5e7646d2SAndroid Build Coastguard Worker /* 0x0020 - 0x002f */
176*5e7646d2SAndroid Build Coastguard Worker "Get-Resources", /* IPP System */
177*5e7646d2SAndroid Build Coastguard Worker "(Get-Printer-Support-Files)",
178*5e7646d2SAndroid Build Coastguard Worker "Enable-Printer", /* RFC 3998 */
179*5e7646d2SAndroid Build Coastguard Worker "Disable-Printer", /* RFC 3998 */
180*5e7646d2SAndroid Build Coastguard Worker "Pause-Printer-After-Current-Job", /* RFC 3998 */
181*5e7646d2SAndroid Build Coastguard Worker "Hold-New-Jobs", /* RFC 3998 */
182*5e7646d2SAndroid Build Coastguard Worker "Release-Held-New-Jobs", /* RFC 3998 */
183*5e7646d2SAndroid Build Coastguard Worker "Deactivate-Printer", /* RFC 3998 */
184*5e7646d2SAndroid Build Coastguard Worker "Activate-Printer", /* RFC 3998 */
185*5e7646d2SAndroid Build Coastguard Worker "Restart-Printer", /* RFC 3998 */
186*5e7646d2SAndroid Build Coastguard Worker "Shutdown-Printer", /* RFC 3998 */
187*5e7646d2SAndroid Build Coastguard Worker "Startup-Printer", /* RFC 3998 */
188*5e7646d2SAndroid Build Coastguard Worker "Reprocess-Job", /* RFC 3998 */
189*5e7646d2SAndroid Build Coastguard Worker "Cancel-Current-Job", /* RFC 3998 */
190*5e7646d2SAndroid Build Coastguard Worker "Suspend-Current-Job", /* RFC 3998 */
191*5e7646d2SAndroid Build Coastguard Worker "Resume-Job", /* RFC 3998 */
192*5e7646d2SAndroid Build Coastguard Worker
193*5e7646d2SAndroid Build Coastguard Worker /* 0x0030 - 0x003f */
194*5e7646d2SAndroid Build Coastguard Worker "Promote-Job", /* RFC 3998 */
195*5e7646d2SAndroid Build Coastguard Worker "Schedule-Job-After", /* RFC 3998 */
196*5e7646d2SAndroid Build Coastguard Worker "0x0032",
197*5e7646d2SAndroid Build Coastguard Worker "Cancel-Document", /* IPP DocObject */
198*5e7646d2SAndroid Build Coastguard Worker "Get-Document-Attributes", /* IPP DocObject */
199*5e7646d2SAndroid Build Coastguard Worker "Get-Documents", /* IPP DocObject */
200*5e7646d2SAndroid Build Coastguard Worker "Delete-Document", /* IPP DocObject */
201*5e7646d2SAndroid Build Coastguard Worker "Set-Document-Attributes", /* IPP DocObject */
202*5e7646d2SAndroid Build Coastguard Worker "Cancel-Jobs", /* IPP JPS2 */
203*5e7646d2SAndroid Build Coastguard Worker "Cancel-My-Jobs", /* IPP JPS2 */
204*5e7646d2SAndroid Build Coastguard Worker "Resubmit-Job", /* IPP JPS2 */
205*5e7646d2SAndroid Build Coastguard Worker "Close-Job", /* IPP JPS2 */
206*5e7646d2SAndroid Build Coastguard Worker "Identify-Printer", /* IPP JPS3 */
207*5e7646d2SAndroid Build Coastguard Worker "Validate-Document", /* IPP JPS3 */
208*5e7646d2SAndroid Build Coastguard Worker "Add-Document-Images", /* IPP Scan */
209*5e7646d2SAndroid Build Coastguard Worker "Acknowledge-Document", /* IPP INFRA */
210*5e7646d2SAndroid Build Coastguard Worker
211*5e7646d2SAndroid Build Coastguard Worker /* 0x0040 - 0x004f */
212*5e7646d2SAndroid Build Coastguard Worker "Acknowledge-Identify-Printer", /* IPP INFRA */
213*5e7646d2SAndroid Build Coastguard Worker "Acknowledge-Job", /* IPP INFRA */
214*5e7646d2SAndroid Build Coastguard Worker "Fetch-Document", /* IPP INFRA */
215*5e7646d2SAndroid Build Coastguard Worker "Fetch-Job", /* IPP INFRA */
216*5e7646d2SAndroid Build Coastguard Worker "Get-Output-Device-Attributes", /* IPP INFRA */
217*5e7646d2SAndroid Build Coastguard Worker "Update-Active-Jobs", /* IPP INFRA */
218*5e7646d2SAndroid Build Coastguard Worker "Deregister-Output-Device", /* IPP INFRA */
219*5e7646d2SAndroid Build Coastguard Worker "Update-Document-Status", /* IPP INFRA */
220*5e7646d2SAndroid Build Coastguard Worker "Update-Job-Status", /* IPP INFRA */
221*5e7646d2SAndroid Build Coastguard Worker "Update-Output-Device-Attributes", /* IPP INFRA */
222*5e7646d2SAndroid Build Coastguard Worker "Get-Next-Document-Data", /* IPP Scan */
223*5e7646d2SAndroid Build Coastguard Worker "Allocate-Printer-Resources", /* IPP System */
224*5e7646d2SAndroid Build Coastguard Worker "Create-Printer", /* IPP System */
225*5e7646d2SAndroid Build Coastguard Worker "Deallocate-Printer-Resources", /* IPP System */
226*5e7646d2SAndroid Build Coastguard Worker "Delete-Printer", /* IPP System */
227*5e7646d2SAndroid Build Coastguard Worker "Get-Printers", /* IPP System */
228*5e7646d2SAndroid Build Coastguard Worker
229*5e7646d2SAndroid Build Coastguard Worker /* 0x0050 - 0x005f */
230*5e7646d2SAndroid Build Coastguard Worker "Shutdown-One-Printer", /* IPP System */
231*5e7646d2SAndroid Build Coastguard Worker "Startup-One-Printer", /* IPP System */
232*5e7646d2SAndroid Build Coastguard Worker "Cancel-Resource", /* IPP System */
233*5e7646d2SAndroid Build Coastguard Worker "Create-Resource", /* IPP System */
234*5e7646d2SAndroid Build Coastguard Worker "Install-Resource", /* IPP System */
235*5e7646d2SAndroid Build Coastguard Worker "Send-Resource-Data", /* IPP System */
236*5e7646d2SAndroid Build Coastguard Worker "Set-Resource-Attributes", /* IPP System */
237*5e7646d2SAndroid Build Coastguard Worker "Create-Resource-Subscriptions", /* IPP System */
238*5e7646d2SAndroid Build Coastguard Worker "Create-System-Subscriptions", /* IPP System */
239*5e7646d2SAndroid Build Coastguard Worker "Disable-All-Printers", /* IPP System */
240*5e7646d2SAndroid Build Coastguard Worker "Enable-All-Printers", /* IPP System */
241*5e7646d2SAndroid Build Coastguard Worker "Get-System-Attributes", /* IPP System */
242*5e7646d2SAndroid Build Coastguard Worker "Get-System-Supported-Values", /* IPP System */
243*5e7646d2SAndroid Build Coastguard Worker "Pause-All-Printers", /* IPP System */
244*5e7646d2SAndroid Build Coastguard Worker "Pause-All-Printers-After-Current-Job", /* IPP System */
245*5e7646d2SAndroid Build Coastguard Worker "Register-Output-Device", /* IPP System */
246*5e7646d2SAndroid Build Coastguard Worker
247*5e7646d2SAndroid Build Coastguard Worker /* 0x0060 - 0x0064 */
248*5e7646d2SAndroid Build Coastguard Worker "Restart-System", /* IPP System */
249*5e7646d2SAndroid Build Coastguard Worker "Resume-All-Printers", /* IPP System */
250*5e7646d2SAndroid Build Coastguard Worker "Set-System-Attributes", /* IPP System */
251*5e7646d2SAndroid Build Coastguard Worker "Shutdown-All-Printers", /* IPP System */
252*5e7646d2SAndroid Build Coastguard Worker "Startup-All-Printers" /* IPP System */
253*5e7646d2SAndroid Build Coastguard Worker },
254*5e7646d2SAndroid Build Coastguard Worker * const ipp_cups_ops[] =
255*5e7646d2SAndroid Build Coastguard Worker {
256*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-Default",
257*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-Printers",
258*5e7646d2SAndroid Build Coastguard Worker "CUPS-Add-Modify-Printer",
259*5e7646d2SAndroid Build Coastguard Worker "CUPS-Delete-Printer",
260*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-Classes",
261*5e7646d2SAndroid Build Coastguard Worker "CUPS-Add-Modify-Class",
262*5e7646d2SAndroid Build Coastguard Worker "CUPS-Delete-Class",
263*5e7646d2SAndroid Build Coastguard Worker "CUPS-Accept-Jobs",
264*5e7646d2SAndroid Build Coastguard Worker "CUPS-Reject-Jobs",
265*5e7646d2SAndroid Build Coastguard Worker "CUPS-Set-Default",
266*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-Devices",
267*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-PPDs",
268*5e7646d2SAndroid Build Coastguard Worker "CUPS-Move-Job",
269*5e7646d2SAndroid Build Coastguard Worker "CUPS-Authenticate-Job",
270*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-PPD"
271*5e7646d2SAndroid Build Coastguard Worker },
272*5e7646d2SAndroid Build Coastguard Worker * const ipp_cups_ops2[] =
273*5e7646d2SAndroid Build Coastguard Worker {
274*5e7646d2SAndroid Build Coastguard Worker "CUPS-Get-Document",
275*5e7646d2SAndroid Build Coastguard Worker "CUPS-Create-Local-Printer"
276*5e7646d2SAndroid Build Coastguard Worker },
277*5e7646d2SAndroid Build Coastguard Worker * const ipp_tag_names[] =
278*5e7646d2SAndroid Build Coastguard Worker { /* Value/group tag names */
279*5e7646d2SAndroid Build Coastguard Worker "zero", /* 0x00 */
280*5e7646d2SAndroid Build Coastguard Worker "operation-attributes-tag",
281*5e7646d2SAndroid Build Coastguard Worker /* 0x01 */
282*5e7646d2SAndroid Build Coastguard Worker "job-attributes-tag", /* 0x02 */
283*5e7646d2SAndroid Build Coastguard Worker "end-of-attributes-tag",
284*5e7646d2SAndroid Build Coastguard Worker /* 0x03 */
285*5e7646d2SAndroid Build Coastguard Worker "printer-attributes-tag",
286*5e7646d2SAndroid Build Coastguard Worker /* 0x04 */
287*5e7646d2SAndroid Build Coastguard Worker "unsupported-attributes-tag",
288*5e7646d2SAndroid Build Coastguard Worker /* 0x05 */
289*5e7646d2SAndroid Build Coastguard Worker "subscription-attributes-tag",
290*5e7646d2SAndroid Build Coastguard Worker /* 0x06 - RFC 3995 */
291*5e7646d2SAndroid Build Coastguard Worker "event-notification-attributes-tag",
292*5e7646d2SAndroid Build Coastguard Worker /* 0x07 - RFC 3995 */
293*5e7646d2SAndroid Build Coastguard Worker "resource-attributes-tag",
294*5e7646d2SAndroid Build Coastguard Worker /* 0x08 - IPP System */
295*5e7646d2SAndroid Build Coastguard Worker "document-attributes-tag",
296*5e7646d2SAndroid Build Coastguard Worker /* 0x09 - IPP DocObject */
297*5e7646d2SAndroid Build Coastguard Worker "system-attributes-tag",
298*5e7646d2SAndroid Build Coastguard Worker /* 0x0a - IPP System */
299*5e7646d2SAndroid Build Coastguard Worker "0x0b", /* 0x0b */
300*5e7646d2SAndroid Build Coastguard Worker "0x0c", /* 0x0c */
301*5e7646d2SAndroid Build Coastguard Worker "0x0d", /* 0x0d */
302*5e7646d2SAndroid Build Coastguard Worker "0x0e", /* 0x0e */
303*5e7646d2SAndroid Build Coastguard Worker "0x0f", /* 0x0f */
304*5e7646d2SAndroid Build Coastguard Worker "unsupported", /* 0x10 */
305*5e7646d2SAndroid Build Coastguard Worker "default", /* 0x11 */
306*5e7646d2SAndroid Build Coastguard Worker "unknown", /* 0x12 */
307*5e7646d2SAndroid Build Coastguard Worker "no-value", /* 0x13 */
308*5e7646d2SAndroid Build Coastguard Worker "0x14", /* 0x14 */
309*5e7646d2SAndroid Build Coastguard Worker "not-settable", /* 0x15 - RFC 3380 */
310*5e7646d2SAndroid Build Coastguard Worker "delete-attribute", /* 0x16 - RFC 3380 */
311*5e7646d2SAndroid Build Coastguard Worker "admin-define", /* 0x17 - RFC 3380 */
312*5e7646d2SAndroid Build Coastguard Worker "0x18", /* 0x18 */
313*5e7646d2SAndroid Build Coastguard Worker "0x19", /* 0x19 */
314*5e7646d2SAndroid Build Coastguard Worker "0x1a", /* 0x1a */
315*5e7646d2SAndroid Build Coastguard Worker "0x1b", /* 0x1b */
316*5e7646d2SAndroid Build Coastguard Worker "0x1c", /* 0x1c */
317*5e7646d2SAndroid Build Coastguard Worker "0x1d", /* 0x1d */
318*5e7646d2SAndroid Build Coastguard Worker "0x1e", /* 0x1e */
319*5e7646d2SAndroid Build Coastguard Worker "0x1f", /* 0x1f */
320*5e7646d2SAndroid Build Coastguard Worker "0x20", /* 0x20 */
321*5e7646d2SAndroid Build Coastguard Worker "integer", /* 0x21 */
322*5e7646d2SAndroid Build Coastguard Worker "boolean", /* 0x22 */
323*5e7646d2SAndroid Build Coastguard Worker "enum", /* 0x23 */
324*5e7646d2SAndroid Build Coastguard Worker "0x24", /* 0x24 */
325*5e7646d2SAndroid Build Coastguard Worker "0x25", /* 0x25 */
326*5e7646d2SAndroid Build Coastguard Worker "0x26", /* 0x26 */
327*5e7646d2SAndroid Build Coastguard Worker "0x27", /* 0x27 */
328*5e7646d2SAndroid Build Coastguard Worker "0x28", /* 0x28 */
329*5e7646d2SAndroid Build Coastguard Worker "0x29", /* 0x29 */
330*5e7646d2SAndroid Build Coastguard Worker "0x2a", /* 0x2a */
331*5e7646d2SAndroid Build Coastguard Worker "0x2b", /* 0x2b */
332*5e7646d2SAndroid Build Coastguard Worker "0x2c", /* 0x2c */
333*5e7646d2SAndroid Build Coastguard Worker "0x2d", /* 0x2d */
334*5e7646d2SAndroid Build Coastguard Worker "0x2e", /* 0x2e */
335*5e7646d2SAndroid Build Coastguard Worker "0x2f", /* 0x2f */
336*5e7646d2SAndroid Build Coastguard Worker "octetString", /* 0x30 */
337*5e7646d2SAndroid Build Coastguard Worker "dateTime", /* 0x31 */
338*5e7646d2SAndroid Build Coastguard Worker "resolution", /* 0x32 */
339*5e7646d2SAndroid Build Coastguard Worker "rangeOfInteger", /* 0x33 */
340*5e7646d2SAndroid Build Coastguard Worker "collection", /* 0x34 */
341*5e7646d2SAndroid Build Coastguard Worker "textWithLanguage", /* 0x35 */
342*5e7646d2SAndroid Build Coastguard Worker "nameWithLanguage", /* 0x36 */
343*5e7646d2SAndroid Build Coastguard Worker "endCollection", /* 0x37 */
344*5e7646d2SAndroid Build Coastguard Worker "0x38", /* 0x38 */
345*5e7646d2SAndroid Build Coastguard Worker "0x39", /* 0x39 */
346*5e7646d2SAndroid Build Coastguard Worker "0x3a", /* 0x3a */
347*5e7646d2SAndroid Build Coastguard Worker "0x3b", /* 0x3b */
348*5e7646d2SAndroid Build Coastguard Worker "0x3c", /* 0x3c */
349*5e7646d2SAndroid Build Coastguard Worker "0x3d", /* 0x3d */
350*5e7646d2SAndroid Build Coastguard Worker "0x3e", /* 0x3e */
351*5e7646d2SAndroid Build Coastguard Worker "0x3f", /* 0x3f */
352*5e7646d2SAndroid Build Coastguard Worker "0x40", /* 0x40 */
353*5e7646d2SAndroid Build Coastguard Worker "textWithoutLanguage",/* 0x41 */
354*5e7646d2SAndroid Build Coastguard Worker "nameWithoutLanguage",/* 0x42 */
355*5e7646d2SAndroid Build Coastguard Worker "0x43", /* 0x43 */
356*5e7646d2SAndroid Build Coastguard Worker "keyword", /* 0x44 */
357*5e7646d2SAndroid Build Coastguard Worker "uri", /* 0x45 */
358*5e7646d2SAndroid Build Coastguard Worker "uriScheme", /* 0x46 */
359*5e7646d2SAndroid Build Coastguard Worker "charset", /* 0x47 */
360*5e7646d2SAndroid Build Coastguard Worker "naturalLanguage", /* 0x48 */
361*5e7646d2SAndroid Build Coastguard Worker "mimeMediaType", /* 0x49 */
362*5e7646d2SAndroid Build Coastguard Worker "memberAttrName" /* 0x4a */
363*5e7646d2SAndroid Build Coastguard Worker };
364*5e7646d2SAndroid Build Coastguard Worker static const char * const ipp_document_states[] =
365*5e7646d2SAndroid Build Coastguard Worker { /* document-state-enums */
366*5e7646d2SAndroid Build Coastguard Worker "pending",
367*5e7646d2SAndroid Build Coastguard Worker "4",
368*5e7646d2SAndroid Build Coastguard Worker "processing",
369*5e7646d2SAndroid Build Coastguard Worker "processing-stopped", /* IPP INFRA */
370*5e7646d2SAndroid Build Coastguard Worker "canceled",
371*5e7646d2SAndroid Build Coastguard Worker "aborted",
372*5e7646d2SAndroid Build Coastguard Worker "completed"
373*5e7646d2SAndroid Build Coastguard Worker },
374*5e7646d2SAndroid Build Coastguard Worker * const ipp_finishings[] =
375*5e7646d2SAndroid Build Coastguard Worker { /* finishings enums */
376*5e7646d2SAndroid Build Coastguard Worker "none",
377*5e7646d2SAndroid Build Coastguard Worker "staple",
378*5e7646d2SAndroid Build Coastguard Worker "punch",
379*5e7646d2SAndroid Build Coastguard Worker "cover",
380*5e7646d2SAndroid Build Coastguard Worker "bind",
381*5e7646d2SAndroid Build Coastguard Worker "saddle-stitch",
382*5e7646d2SAndroid Build Coastguard Worker "edge-stitch",
383*5e7646d2SAndroid Build Coastguard Worker "fold",
384*5e7646d2SAndroid Build Coastguard Worker "trim",
385*5e7646d2SAndroid Build Coastguard Worker "bale",
386*5e7646d2SAndroid Build Coastguard Worker "booklet-maker",
387*5e7646d2SAndroid Build Coastguard Worker "jog-offset",
388*5e7646d2SAndroid Build Coastguard Worker "coat", /* IPP Finishings 2.0 */
389*5e7646d2SAndroid Build Coastguard Worker "laminate", /* IPP Finishings 2.0 */
390*5e7646d2SAndroid Build Coastguard Worker "17",
391*5e7646d2SAndroid Build Coastguard Worker "18",
392*5e7646d2SAndroid Build Coastguard Worker "19",
393*5e7646d2SAndroid Build Coastguard Worker "staple-top-left",
394*5e7646d2SAndroid Build Coastguard Worker "staple-bottom-left",
395*5e7646d2SAndroid Build Coastguard Worker "staple-top-right",
396*5e7646d2SAndroid Build Coastguard Worker "staple-bottom-right",
397*5e7646d2SAndroid Build Coastguard Worker "edge-stitch-left",
398*5e7646d2SAndroid Build Coastguard Worker "edge-stitch-top",
399*5e7646d2SAndroid Build Coastguard Worker "edge-stitch-right",
400*5e7646d2SAndroid Build Coastguard Worker "edge-stitch-bottom",
401*5e7646d2SAndroid Build Coastguard Worker "staple-dual-left",
402*5e7646d2SAndroid Build Coastguard Worker "staple-dual-top",
403*5e7646d2SAndroid Build Coastguard Worker "staple-dual-right",
404*5e7646d2SAndroid Build Coastguard Worker "staple-dual-bottom",
405*5e7646d2SAndroid Build Coastguard Worker "staple-triple-left", /* IPP Finishings 2.0 */
406*5e7646d2SAndroid Build Coastguard Worker "staple-triple-top", /* IPP Finishings 2.0 */
407*5e7646d2SAndroid Build Coastguard Worker "staple-triple-right",/* IPP Finishings 2.0 */
408*5e7646d2SAndroid Build Coastguard Worker "staple-triple-bottom",/* IPP Finishings 2.0 */
409*5e7646d2SAndroid Build Coastguard Worker "36",
410*5e7646d2SAndroid Build Coastguard Worker "37",
411*5e7646d2SAndroid Build Coastguard Worker "38",
412*5e7646d2SAndroid Build Coastguard Worker "39",
413*5e7646d2SAndroid Build Coastguard Worker "40",
414*5e7646d2SAndroid Build Coastguard Worker "41",
415*5e7646d2SAndroid Build Coastguard Worker "42",
416*5e7646d2SAndroid Build Coastguard Worker "43",
417*5e7646d2SAndroid Build Coastguard Worker "44",
418*5e7646d2SAndroid Build Coastguard Worker "45",
419*5e7646d2SAndroid Build Coastguard Worker "46",
420*5e7646d2SAndroid Build Coastguard Worker "47",
421*5e7646d2SAndroid Build Coastguard Worker "48",
422*5e7646d2SAndroid Build Coastguard Worker "49",
423*5e7646d2SAndroid Build Coastguard Worker "bind-left",
424*5e7646d2SAndroid Build Coastguard Worker "bind-top",
425*5e7646d2SAndroid Build Coastguard Worker "bind-right",
426*5e7646d2SAndroid Build Coastguard Worker "bind-bottom",
427*5e7646d2SAndroid Build Coastguard Worker "54",
428*5e7646d2SAndroid Build Coastguard Worker "55",
429*5e7646d2SAndroid Build Coastguard Worker "56",
430*5e7646d2SAndroid Build Coastguard Worker "57",
431*5e7646d2SAndroid Build Coastguard Worker "58",
432*5e7646d2SAndroid Build Coastguard Worker "59",
433*5e7646d2SAndroid Build Coastguard Worker "trim-after-pages",
434*5e7646d2SAndroid Build Coastguard Worker "trim-after-documents",
435*5e7646d2SAndroid Build Coastguard Worker "trim-after-copies",
436*5e7646d2SAndroid Build Coastguard Worker "trim-after-job",
437*5e7646d2SAndroid Build Coastguard Worker "64",
438*5e7646d2SAndroid Build Coastguard Worker "65",
439*5e7646d2SAndroid Build Coastguard Worker "66",
440*5e7646d2SAndroid Build Coastguard Worker "67",
441*5e7646d2SAndroid Build Coastguard Worker "68",
442*5e7646d2SAndroid Build Coastguard Worker "69",
443*5e7646d2SAndroid Build Coastguard Worker "punch-top-left", /* IPP Finishings 2.0 */
444*5e7646d2SAndroid Build Coastguard Worker "punch-bottom-left", /* IPP Finishings 2.0 */
445*5e7646d2SAndroid Build Coastguard Worker "punch-top-right", /* IPP Finishings 2.0 */
446*5e7646d2SAndroid Build Coastguard Worker "punch-bottom-right", /* IPP Finishings 2.0 */
447*5e7646d2SAndroid Build Coastguard Worker "punch-dual-left", /* IPP Finishings 2.0 */
448*5e7646d2SAndroid Build Coastguard Worker "punch-dual-top", /* IPP Finishings 2.0 */
449*5e7646d2SAndroid Build Coastguard Worker "punch-dual-right", /* IPP Finishings 2.0 */
450*5e7646d2SAndroid Build Coastguard Worker "punch-dual-bottom", /* IPP Finishings 2.0 */
451*5e7646d2SAndroid Build Coastguard Worker "punch-triple-left", /* IPP Finishings 2.0 */
452*5e7646d2SAndroid Build Coastguard Worker "punch-triple-top", /* IPP Finishings 2.0 */
453*5e7646d2SAndroid Build Coastguard Worker "punch-triple-right", /* IPP Finishings 2.0 */
454*5e7646d2SAndroid Build Coastguard Worker "punch-triple-bottom",/* IPP Finishings 2.0 */
455*5e7646d2SAndroid Build Coastguard Worker "punch-quad-left", /* IPP Finishings 2.0 */
456*5e7646d2SAndroid Build Coastguard Worker "punch-quad-top", /* IPP Finishings 2.0 */
457*5e7646d2SAndroid Build Coastguard Worker "punch-quad-right", /* IPP Finishings 2.0 */
458*5e7646d2SAndroid Build Coastguard Worker "punch-quad-bottom", /* IPP Finishings 2.0 */
459*5e7646d2SAndroid Build Coastguard Worker "punch-multiple-left",/* IPP Finishings 2.1/Canon */
460*5e7646d2SAndroid Build Coastguard Worker "punch-multiple-top", /* IPP Finishings 2.1/Canon */
461*5e7646d2SAndroid Build Coastguard Worker "punch-multiple-right",/* IPP Finishings 2.1/Canon */
462*5e7646d2SAndroid Build Coastguard Worker "punch-multiple-bottom",/* IPP Finishings 2.1/Canon */
463*5e7646d2SAndroid Build Coastguard Worker "fold-accordion", /* IPP Finishings 2.0 */
464*5e7646d2SAndroid Build Coastguard Worker "fold-double-gate", /* IPP Finishings 2.0 */
465*5e7646d2SAndroid Build Coastguard Worker "fold-gate", /* IPP Finishings 2.0 */
466*5e7646d2SAndroid Build Coastguard Worker "fold-half", /* IPP Finishings 2.0 */
467*5e7646d2SAndroid Build Coastguard Worker "fold-half-z", /* IPP Finishings 2.0 */
468*5e7646d2SAndroid Build Coastguard Worker "fold-left-gate", /* IPP Finishings 2.0 */
469*5e7646d2SAndroid Build Coastguard Worker "fold-letter", /* IPP Finishings 2.0 */
470*5e7646d2SAndroid Build Coastguard Worker "fold-parallel", /* IPP Finishings 2.0 */
471*5e7646d2SAndroid Build Coastguard Worker "fold-poster", /* IPP Finishings 2.0 */
472*5e7646d2SAndroid Build Coastguard Worker "fold-right-gate", /* IPP Finishings 2.0 */
473*5e7646d2SAndroid Build Coastguard Worker "fold-z", /* IPP Finishings 2.0 */
474*5e7646d2SAndroid Build Coastguard Worker "fold-engineering-z" /* IPP Finishings 2.1 */
475*5e7646d2SAndroid Build Coastguard Worker },
476*5e7646d2SAndroid Build Coastguard Worker * const ipp_finishings_vendor[] =
477*5e7646d2SAndroid Build Coastguard Worker {
478*5e7646d2SAndroid Build Coastguard Worker /* 0x40000000 to 0x4000000F */
479*5e7646d2SAndroid Build Coastguard Worker "0x40000000",
480*5e7646d2SAndroid Build Coastguard Worker "0x40000001",
481*5e7646d2SAndroid Build Coastguard Worker "0x40000002",
482*5e7646d2SAndroid Build Coastguard Worker "0x40000003",
483*5e7646d2SAndroid Build Coastguard Worker "0x40000004",
484*5e7646d2SAndroid Build Coastguard Worker "0x40000005",
485*5e7646d2SAndroid Build Coastguard Worker "0x40000006",
486*5e7646d2SAndroid Build Coastguard Worker "0x40000007",
487*5e7646d2SAndroid Build Coastguard Worker "0x40000008",
488*5e7646d2SAndroid Build Coastguard Worker "0x40000009",
489*5e7646d2SAndroid Build Coastguard Worker "0x4000000A",
490*5e7646d2SAndroid Build Coastguard Worker "0x4000000B",
491*5e7646d2SAndroid Build Coastguard Worker "0x4000000C",
492*5e7646d2SAndroid Build Coastguard Worker "0x4000000D",
493*5e7646d2SAndroid Build Coastguard Worker "0x4000000E",
494*5e7646d2SAndroid Build Coastguard Worker "0x4000000F",
495*5e7646d2SAndroid Build Coastguard Worker /* 0x40000010 to 0x4000001F */
496*5e7646d2SAndroid Build Coastguard Worker "0x40000010",
497*5e7646d2SAndroid Build Coastguard Worker "0x40000011",
498*5e7646d2SAndroid Build Coastguard Worker "0x40000012",
499*5e7646d2SAndroid Build Coastguard Worker "0x40000013",
500*5e7646d2SAndroid Build Coastguard Worker "0x40000014",
501*5e7646d2SAndroid Build Coastguard Worker "0x40000015",
502*5e7646d2SAndroid Build Coastguard Worker "0x40000016",
503*5e7646d2SAndroid Build Coastguard Worker "0x40000017",
504*5e7646d2SAndroid Build Coastguard Worker "0x40000018",
505*5e7646d2SAndroid Build Coastguard Worker "0x40000019",
506*5e7646d2SAndroid Build Coastguard Worker "0x4000001A",
507*5e7646d2SAndroid Build Coastguard Worker "0x4000001B",
508*5e7646d2SAndroid Build Coastguard Worker "0x4000001C",
509*5e7646d2SAndroid Build Coastguard Worker "0x4000001D",
510*5e7646d2SAndroid Build Coastguard Worker "0x4000001E",
511*5e7646d2SAndroid Build Coastguard Worker "0x4000001F",
512*5e7646d2SAndroid Build Coastguard Worker /* 0x40000020 to 0x4000002F */
513*5e7646d2SAndroid Build Coastguard Worker "0x40000020",
514*5e7646d2SAndroid Build Coastguard Worker "0x40000021",
515*5e7646d2SAndroid Build Coastguard Worker "0x40000022",
516*5e7646d2SAndroid Build Coastguard Worker "0x40000023",
517*5e7646d2SAndroid Build Coastguard Worker "0x40000024",
518*5e7646d2SAndroid Build Coastguard Worker "0x40000025",
519*5e7646d2SAndroid Build Coastguard Worker "0x40000026",
520*5e7646d2SAndroid Build Coastguard Worker "0x40000027",
521*5e7646d2SAndroid Build Coastguard Worker "0x40000028",
522*5e7646d2SAndroid Build Coastguard Worker "0x40000029",
523*5e7646d2SAndroid Build Coastguard Worker "0x4000002A",
524*5e7646d2SAndroid Build Coastguard Worker "0x4000002B",
525*5e7646d2SAndroid Build Coastguard Worker "0x4000002C",
526*5e7646d2SAndroid Build Coastguard Worker "0x4000002D",
527*5e7646d2SAndroid Build Coastguard Worker "0x4000002E",
528*5e7646d2SAndroid Build Coastguard Worker "0x4000002F",
529*5e7646d2SAndroid Build Coastguard Worker /* 0x40000030 to 0x4000003F */
530*5e7646d2SAndroid Build Coastguard Worker "0x40000030",
531*5e7646d2SAndroid Build Coastguard Worker "0x40000031",
532*5e7646d2SAndroid Build Coastguard Worker "0x40000032",
533*5e7646d2SAndroid Build Coastguard Worker "0x40000033",
534*5e7646d2SAndroid Build Coastguard Worker "0x40000034",
535*5e7646d2SAndroid Build Coastguard Worker "0x40000035",
536*5e7646d2SAndroid Build Coastguard Worker "0x40000036",
537*5e7646d2SAndroid Build Coastguard Worker "0x40000037",
538*5e7646d2SAndroid Build Coastguard Worker "0x40000038",
539*5e7646d2SAndroid Build Coastguard Worker "0x40000039",
540*5e7646d2SAndroid Build Coastguard Worker "0x4000003A",
541*5e7646d2SAndroid Build Coastguard Worker "0x4000003B",
542*5e7646d2SAndroid Build Coastguard Worker "0x4000003C",
543*5e7646d2SAndroid Build Coastguard Worker "0x4000003D",
544*5e7646d2SAndroid Build Coastguard Worker "0x4000003E",
545*5e7646d2SAndroid Build Coastguard Worker "0x4000003F",
546*5e7646d2SAndroid Build Coastguard Worker /* 0x40000040 - 0x4000004F */
547*5e7646d2SAndroid Build Coastguard Worker "0x40000040",
548*5e7646d2SAndroid Build Coastguard Worker "0x40000041",
549*5e7646d2SAndroid Build Coastguard Worker "0x40000042",
550*5e7646d2SAndroid Build Coastguard Worker "0x40000043",
551*5e7646d2SAndroid Build Coastguard Worker "0x40000044",
552*5e7646d2SAndroid Build Coastguard Worker "0x40000045",
553*5e7646d2SAndroid Build Coastguard Worker "cups-punch-top-left",
554*5e7646d2SAndroid Build Coastguard Worker "cups-punch-bottom-left",
555*5e7646d2SAndroid Build Coastguard Worker "cups-punch-top-right",
556*5e7646d2SAndroid Build Coastguard Worker "cups-punch-bottom-right",
557*5e7646d2SAndroid Build Coastguard Worker "cups-punch-dual-left",
558*5e7646d2SAndroid Build Coastguard Worker "cups-punch-dual-top",
559*5e7646d2SAndroid Build Coastguard Worker "cups-punch-dual-right",
560*5e7646d2SAndroid Build Coastguard Worker "cups-punch-dual-bottom",
561*5e7646d2SAndroid Build Coastguard Worker "cups-punch-triple-left",
562*5e7646d2SAndroid Build Coastguard Worker "cups-punch-triple-top",
563*5e7646d2SAndroid Build Coastguard Worker /* 0x40000050 - 0x4000005F */
564*5e7646d2SAndroid Build Coastguard Worker "cups-punch-triple-right",
565*5e7646d2SAndroid Build Coastguard Worker "cups-punch-triple-bottom",
566*5e7646d2SAndroid Build Coastguard Worker "cups-punch-quad-left",
567*5e7646d2SAndroid Build Coastguard Worker "cups-punch-quad-top",
568*5e7646d2SAndroid Build Coastguard Worker "cups-punch-quad-right",
569*5e7646d2SAndroid Build Coastguard Worker "cups-punch-quad-bottom",
570*5e7646d2SAndroid Build Coastguard Worker "0x40000056",
571*5e7646d2SAndroid Build Coastguard Worker "0x40000057",
572*5e7646d2SAndroid Build Coastguard Worker "0x40000058",
573*5e7646d2SAndroid Build Coastguard Worker "0x40000059",
574*5e7646d2SAndroid Build Coastguard Worker "cups-fold-accordion",
575*5e7646d2SAndroid Build Coastguard Worker "cups-fold-double-gate",
576*5e7646d2SAndroid Build Coastguard Worker "cups-fold-gate",
577*5e7646d2SAndroid Build Coastguard Worker "cups-fold-half",
578*5e7646d2SAndroid Build Coastguard Worker "cups-fold-half-z",
579*5e7646d2SAndroid Build Coastguard Worker "cups-fold-left-gate",
580*5e7646d2SAndroid Build Coastguard Worker /* 0x40000060 - 0x40000064 */
581*5e7646d2SAndroid Build Coastguard Worker "cups-fold-letter",
582*5e7646d2SAndroid Build Coastguard Worker "cups-fold-parallel",
583*5e7646d2SAndroid Build Coastguard Worker "cups-fold-poster",
584*5e7646d2SAndroid Build Coastguard Worker "cups-fold-right-gate",
585*5e7646d2SAndroid Build Coastguard Worker "cups-fold-z"
586*5e7646d2SAndroid Build Coastguard Worker },
587*5e7646d2SAndroid Build Coastguard Worker * const ipp_job_collation_types[] =
588*5e7646d2SAndroid Build Coastguard Worker { /* job-collation-type enums */
589*5e7646d2SAndroid Build Coastguard Worker "uncollated-sheets",
590*5e7646d2SAndroid Build Coastguard Worker "collated-documents",
591*5e7646d2SAndroid Build Coastguard Worker "uncollated-documents"
592*5e7646d2SAndroid Build Coastguard Worker },
593*5e7646d2SAndroid Build Coastguard Worker * const ipp_job_states[] =
594*5e7646d2SAndroid Build Coastguard Worker { /* job-state enums */
595*5e7646d2SAndroid Build Coastguard Worker "pending",
596*5e7646d2SAndroid Build Coastguard Worker "pending-held",
597*5e7646d2SAndroid Build Coastguard Worker "processing",
598*5e7646d2SAndroid Build Coastguard Worker "processing-stopped",
599*5e7646d2SAndroid Build Coastguard Worker "canceled",
600*5e7646d2SAndroid Build Coastguard Worker "aborted",
601*5e7646d2SAndroid Build Coastguard Worker "completed"
602*5e7646d2SAndroid Build Coastguard Worker },
603*5e7646d2SAndroid Build Coastguard Worker * const ipp_orientation_requesteds[] =
604*5e7646d2SAndroid Build Coastguard Worker { /* orientation-requested enums */
605*5e7646d2SAndroid Build Coastguard Worker "portrait",
606*5e7646d2SAndroid Build Coastguard Worker "landscape",
607*5e7646d2SAndroid Build Coastguard Worker "reverse-landscape",
608*5e7646d2SAndroid Build Coastguard Worker "reverse-portrait",
609*5e7646d2SAndroid Build Coastguard Worker "none"
610*5e7646d2SAndroid Build Coastguard Worker },
611*5e7646d2SAndroid Build Coastguard Worker * const ipp_print_qualities[] =
612*5e7646d2SAndroid Build Coastguard Worker { /* print-quality enums */
613*5e7646d2SAndroid Build Coastguard Worker "draft",
614*5e7646d2SAndroid Build Coastguard Worker "normal",
615*5e7646d2SAndroid Build Coastguard Worker "high"
616*5e7646d2SAndroid Build Coastguard Worker },
617*5e7646d2SAndroid Build Coastguard Worker * const ipp_printer_states[] =
618*5e7646d2SAndroid Build Coastguard Worker { /* printer-state enums */
619*5e7646d2SAndroid Build Coastguard Worker "idle",
620*5e7646d2SAndroid Build Coastguard Worker "processing",
621*5e7646d2SAndroid Build Coastguard Worker "stopped"
622*5e7646d2SAndroid Build Coastguard Worker },
623*5e7646d2SAndroid Build Coastguard Worker * const ipp_resource_states[] =
624*5e7646d2SAndroid Build Coastguard Worker { /* resource-state enums */
625*5e7646d2SAndroid Build Coastguard Worker "pending",
626*5e7646d2SAndroid Build Coastguard Worker "available",
627*5e7646d2SAndroid Build Coastguard Worker "installed",
628*5e7646d2SAndroid Build Coastguard Worker "canceled",
629*5e7646d2SAndroid Build Coastguard Worker "aborted"
630*5e7646d2SAndroid Build Coastguard Worker },
631*5e7646d2SAndroid Build Coastguard Worker * const ipp_system_states[] =
632*5e7646d2SAndroid Build Coastguard Worker { /* system-state enums */
633*5e7646d2SAndroid Build Coastguard Worker "idle",
634*5e7646d2SAndroid Build Coastguard Worker "processing",
635*5e7646d2SAndroid Build Coastguard Worker "stopped"
636*5e7646d2SAndroid Build Coastguard Worker };
637*5e7646d2SAndroid Build Coastguard Worker
638*5e7646d2SAndroid Build Coastguard Worker
639*5e7646d2SAndroid Build Coastguard Worker /*
640*5e7646d2SAndroid Build Coastguard Worker * Local functions...
641*5e7646d2SAndroid Build Coastguard Worker */
642*5e7646d2SAndroid Build Coastguard Worker
643*5e7646d2SAndroid Build Coastguard Worker static size_t ipp_col_string(ipp_t *col, char *buffer, size_t bufsize);
644*5e7646d2SAndroid Build Coastguard Worker
645*5e7646d2SAndroid Build Coastguard Worker
646*5e7646d2SAndroid Build Coastguard Worker /*
647*5e7646d2SAndroid Build Coastguard Worker * 'ippAttributeString()' - Convert the attribute's value to a string.
648*5e7646d2SAndroid Build Coastguard Worker *
649*5e7646d2SAndroid Build Coastguard Worker * Returns the number of bytes that would be written, not including the
650*5e7646d2SAndroid Build Coastguard Worker * trailing nul. The buffer pointer can be NULL to get the required length,
651*5e7646d2SAndroid Build Coastguard Worker * just like (v)snprintf.
652*5e7646d2SAndroid Build Coastguard Worker *
653*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.6/macOS 10.8@
654*5e7646d2SAndroid Build Coastguard Worker */
655*5e7646d2SAndroid Build Coastguard Worker
656*5e7646d2SAndroid Build Coastguard Worker size_t /* O - Number of bytes less nul */
ippAttributeString(ipp_attribute_t * attr,char * buffer,size_t bufsize)657*5e7646d2SAndroid Build Coastguard Worker ippAttributeString(
658*5e7646d2SAndroid Build Coastguard Worker ipp_attribute_t *attr, /* I - Attribute */
659*5e7646d2SAndroid Build Coastguard Worker char *buffer, /* I - String buffer or NULL */
660*5e7646d2SAndroid Build Coastguard Worker size_t bufsize) /* I - Size of string buffer */
661*5e7646d2SAndroid Build Coastguard Worker {
662*5e7646d2SAndroid Build Coastguard Worker int i; /* Looping var */
663*5e7646d2SAndroid Build Coastguard Worker char *bufptr, /* Pointer into buffer */
664*5e7646d2SAndroid Build Coastguard Worker *bufend, /* End of buffer */
665*5e7646d2SAndroid Build Coastguard Worker temp[256]; /* Temporary string */
666*5e7646d2SAndroid Build Coastguard Worker const char *ptr, /* Pointer into string */
667*5e7646d2SAndroid Build Coastguard Worker *end; /* Pointer to end of string */
668*5e7646d2SAndroid Build Coastguard Worker _ipp_value_t *val; /* Current value */
669*5e7646d2SAndroid Build Coastguard Worker
670*5e7646d2SAndroid Build Coastguard Worker
671*5e7646d2SAndroid Build Coastguard Worker if (!attr || !attr->name)
672*5e7646d2SAndroid Build Coastguard Worker {
673*5e7646d2SAndroid Build Coastguard Worker if (buffer)
674*5e7646d2SAndroid Build Coastguard Worker *buffer = '\0';
675*5e7646d2SAndroid Build Coastguard Worker
676*5e7646d2SAndroid Build Coastguard Worker return (0);
677*5e7646d2SAndroid Build Coastguard Worker }
678*5e7646d2SAndroid Build Coastguard Worker
679*5e7646d2SAndroid Build Coastguard Worker bufptr = buffer;
680*5e7646d2SAndroid Build Coastguard Worker if (buffer)
681*5e7646d2SAndroid Build Coastguard Worker bufend = buffer + bufsize - 1;
682*5e7646d2SAndroid Build Coastguard Worker else
683*5e7646d2SAndroid Build Coastguard Worker bufend = NULL;
684*5e7646d2SAndroid Build Coastguard Worker
685*5e7646d2SAndroid Build Coastguard Worker for (i = attr->num_values, val = attr->values; i > 0; i --, val ++)
686*5e7646d2SAndroid Build Coastguard Worker {
687*5e7646d2SAndroid Build Coastguard Worker if (val > attr->values)
688*5e7646d2SAndroid Build Coastguard Worker {
689*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
690*5e7646d2SAndroid Build Coastguard Worker *bufptr++ = ',';
691*5e7646d2SAndroid Build Coastguard Worker else
692*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
693*5e7646d2SAndroid Build Coastguard Worker }
694*5e7646d2SAndroid Build Coastguard Worker
695*5e7646d2SAndroid Build Coastguard Worker switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
696*5e7646d2SAndroid Build Coastguard Worker {
697*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_ENUM :
698*5e7646d2SAndroid Build Coastguard Worker ptr = ippEnumString(attr->name, val->integer);
699*5e7646d2SAndroid Build Coastguard Worker
700*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
701*5e7646d2SAndroid Build Coastguard Worker strlcpy(bufptr, ptr, (size_t)(bufend - bufptr + 1));
702*5e7646d2SAndroid Build Coastguard Worker
703*5e7646d2SAndroid Build Coastguard Worker bufptr += strlen(ptr);
704*5e7646d2SAndroid Build Coastguard Worker break;
705*5e7646d2SAndroid Build Coastguard Worker
706*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_INTEGER :
707*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
708*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d", val->integer);
709*5e7646d2SAndroid Build Coastguard Worker else
710*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(temp, sizeof(temp), "%d", val->integer);
711*5e7646d2SAndroid Build Coastguard Worker break;
712*5e7646d2SAndroid Build Coastguard Worker
713*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_BOOLEAN :
714*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
715*5e7646d2SAndroid Build Coastguard Worker strlcpy(bufptr, val->boolean ? "true" : "false", (size_t)(bufend - bufptr + 1));
716*5e7646d2SAndroid Build Coastguard Worker
717*5e7646d2SAndroid Build Coastguard Worker bufptr += val->boolean ? 4 : 5;
718*5e7646d2SAndroid Build Coastguard Worker break;
719*5e7646d2SAndroid Build Coastguard Worker
720*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_RANGE :
721*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
722*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d-%d", val->range.lower, val->range.upper);
723*5e7646d2SAndroid Build Coastguard Worker else
724*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(temp, sizeof(temp), "%d-%d", val->range.lower, val->range.upper);
725*5e7646d2SAndroid Build Coastguard Worker break;
726*5e7646d2SAndroid Build Coastguard Worker
727*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_RESOLUTION :
728*5e7646d2SAndroid Build Coastguard Worker if (val->resolution.xres == val->resolution.yres)
729*5e7646d2SAndroid Build Coastguard Worker {
730*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
731*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d%s", val->resolution.xres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
732*5e7646d2SAndroid Build Coastguard Worker else
733*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(temp, sizeof(temp), "%d%s", val->resolution.xres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
734*5e7646d2SAndroid Build Coastguard Worker }
735*5e7646d2SAndroid Build Coastguard Worker else if (buffer && bufptr < bufend)
736*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%dx%d%s", val->resolution.xres, val->resolution.yres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
737*5e7646d2SAndroid Build Coastguard Worker else
738*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(temp, sizeof(temp), "%dx%d%s", val->resolution.xres, val->resolution.yres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
739*5e7646d2SAndroid Build Coastguard Worker break;
740*5e7646d2SAndroid Build Coastguard Worker
741*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_DATE :
742*5e7646d2SAndroid Build Coastguard Worker {
743*5e7646d2SAndroid Build Coastguard Worker unsigned year; /* Year */
744*5e7646d2SAndroid Build Coastguard Worker
745*5e7646d2SAndroid Build Coastguard Worker year = ((unsigned)val->date[0] << 8) + (unsigned)val->date[1];
746*5e7646d2SAndroid Build Coastguard Worker
747*5e7646d2SAndroid Build Coastguard Worker if (val->date[9] == 0 && val->date[10] == 0)
748*5e7646d2SAndroid Build Coastguard Worker snprintf(temp, sizeof(temp), "%04u-%02u-%02uT%02u:%02u:%02uZ",
749*5e7646d2SAndroid Build Coastguard Worker year, val->date[2], val->date[3], val->date[4],
750*5e7646d2SAndroid Build Coastguard Worker val->date[5], val->date[6]);
751*5e7646d2SAndroid Build Coastguard Worker else
752*5e7646d2SAndroid Build Coastguard Worker snprintf(temp, sizeof(temp),
753*5e7646d2SAndroid Build Coastguard Worker "%04u-%02u-%02uT%02u:%02u:%02u%c%02u%02u",
754*5e7646d2SAndroid Build Coastguard Worker year, val->date[2], val->date[3], val->date[4],
755*5e7646d2SAndroid Build Coastguard Worker val->date[5], val->date[6], val->date[8], val->date[9],
756*5e7646d2SAndroid Build Coastguard Worker val->date[10]);
757*5e7646d2SAndroid Build Coastguard Worker
758*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
759*5e7646d2SAndroid Build Coastguard Worker strlcpy(bufptr, temp, (size_t)(bufend - bufptr + 1));
760*5e7646d2SAndroid Build Coastguard Worker
761*5e7646d2SAndroid Build Coastguard Worker bufptr += strlen(temp);
762*5e7646d2SAndroid Build Coastguard Worker }
763*5e7646d2SAndroid Build Coastguard Worker break;
764*5e7646d2SAndroid Build Coastguard Worker
765*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_TEXT :
766*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_NAME :
767*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_KEYWORD :
768*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_CHARSET :
769*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_URI :
770*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_URISCHEME :
771*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_MIMETYPE :
772*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_LANGUAGE :
773*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_TEXTLANG :
774*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_NAMELANG :
775*5e7646d2SAndroid Build Coastguard Worker if (!val->string.text)
776*5e7646d2SAndroid Build Coastguard Worker break;
777*5e7646d2SAndroid Build Coastguard Worker
778*5e7646d2SAndroid Build Coastguard Worker for (ptr = val->string.text; *ptr; ptr ++)
779*5e7646d2SAndroid Build Coastguard Worker {
780*5e7646d2SAndroid Build Coastguard Worker if (*ptr == '\\' || *ptr == '\"' || *ptr == '[')
781*5e7646d2SAndroid Build Coastguard Worker {
782*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
783*5e7646d2SAndroid Build Coastguard Worker *bufptr = '\\';
784*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
785*5e7646d2SAndroid Build Coastguard Worker }
786*5e7646d2SAndroid Build Coastguard Worker
787*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
788*5e7646d2SAndroid Build Coastguard Worker *bufptr = *ptr;
789*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
790*5e7646d2SAndroid Build Coastguard Worker }
791*5e7646d2SAndroid Build Coastguard Worker
792*5e7646d2SAndroid Build Coastguard Worker if (val->string.language)
793*5e7646d2SAndroid Build Coastguard Worker {
794*5e7646d2SAndroid Build Coastguard Worker /*
795*5e7646d2SAndroid Build Coastguard Worker * Add "[language]" to end of string...
796*5e7646d2SAndroid Build Coastguard Worker */
797*5e7646d2SAndroid Build Coastguard Worker
798*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
799*5e7646d2SAndroid Build Coastguard Worker *bufptr = '[';
800*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
801*5e7646d2SAndroid Build Coastguard Worker
802*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
803*5e7646d2SAndroid Build Coastguard Worker strlcpy(bufptr, val->string.language, (size_t)(bufend - bufptr));
804*5e7646d2SAndroid Build Coastguard Worker bufptr += strlen(val->string.language);
805*5e7646d2SAndroid Build Coastguard Worker
806*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
807*5e7646d2SAndroid Build Coastguard Worker *bufptr = ']';
808*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
809*5e7646d2SAndroid Build Coastguard Worker }
810*5e7646d2SAndroid Build Coastguard Worker break;
811*5e7646d2SAndroid Build Coastguard Worker
812*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_BEGIN_COLLECTION :
813*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
814*5e7646d2SAndroid Build Coastguard Worker bufptr += ipp_col_string(val->collection, bufptr, (size_t)(bufend - bufptr + 1));
815*5e7646d2SAndroid Build Coastguard Worker else
816*5e7646d2SAndroid Build Coastguard Worker bufptr += ipp_col_string(val->collection, NULL, 0);
817*5e7646d2SAndroid Build Coastguard Worker break;
818*5e7646d2SAndroid Build Coastguard Worker
819*5e7646d2SAndroid Build Coastguard Worker case IPP_TAG_STRING :
820*5e7646d2SAndroid Build Coastguard Worker for (ptr = val->unknown.data, end = ptr + val->unknown.length;
821*5e7646d2SAndroid Build Coastguard Worker ptr < end; ptr ++)
822*5e7646d2SAndroid Build Coastguard Worker {
823*5e7646d2SAndroid Build Coastguard Worker if (*ptr == '\\' || _cups_isspace(*ptr))
824*5e7646d2SAndroid Build Coastguard Worker {
825*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
826*5e7646d2SAndroid Build Coastguard Worker *bufptr = '\\';
827*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
828*5e7646d2SAndroid Build Coastguard Worker
829*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
830*5e7646d2SAndroid Build Coastguard Worker *bufptr = *ptr;
831*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
832*5e7646d2SAndroid Build Coastguard Worker }
833*5e7646d2SAndroid Build Coastguard Worker else if (!isprint(*ptr & 255))
834*5e7646d2SAndroid Build Coastguard Worker {
835*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
836*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "\\%03o", *ptr & 255);
837*5e7646d2SAndroid Build Coastguard Worker else
838*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(temp, sizeof(temp), "\\%03o", *ptr & 255);
839*5e7646d2SAndroid Build Coastguard Worker }
840*5e7646d2SAndroid Build Coastguard Worker else
841*5e7646d2SAndroid Build Coastguard Worker {
842*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
843*5e7646d2SAndroid Build Coastguard Worker *bufptr = *ptr;
844*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
845*5e7646d2SAndroid Build Coastguard Worker }
846*5e7646d2SAndroid Build Coastguard Worker }
847*5e7646d2SAndroid Build Coastguard Worker break;
848*5e7646d2SAndroid Build Coastguard Worker
849*5e7646d2SAndroid Build Coastguard Worker default :
850*5e7646d2SAndroid Build Coastguard Worker ptr = ippTagString(attr->value_tag);
851*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
852*5e7646d2SAndroid Build Coastguard Worker strlcpy(bufptr, ptr, (size_t)(bufend - bufptr + 1));
853*5e7646d2SAndroid Build Coastguard Worker bufptr += strlen(ptr);
854*5e7646d2SAndroid Build Coastguard Worker break;
855*5e7646d2SAndroid Build Coastguard Worker }
856*5e7646d2SAndroid Build Coastguard Worker }
857*5e7646d2SAndroid Build Coastguard Worker
858*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
859*5e7646d2SAndroid Build Coastguard Worker *bufptr = '\0';
860*5e7646d2SAndroid Build Coastguard Worker else if (bufend)
861*5e7646d2SAndroid Build Coastguard Worker *bufend = '\0';
862*5e7646d2SAndroid Build Coastguard Worker
863*5e7646d2SAndroid Build Coastguard Worker return ((size_t)(bufptr - buffer));
864*5e7646d2SAndroid Build Coastguard Worker }
865*5e7646d2SAndroid Build Coastguard Worker
866*5e7646d2SAndroid Build Coastguard Worker
867*5e7646d2SAndroid Build Coastguard Worker /*
868*5e7646d2SAndroid Build Coastguard Worker * 'ippCreateRequestedArray()' - Create a CUPS array of attribute names from the
869*5e7646d2SAndroid Build Coastguard Worker * given requested-attributes attribute.
870*5e7646d2SAndroid Build Coastguard Worker *
871*5e7646d2SAndroid Build Coastguard Worker * This function creates a (sorted) CUPS array of attribute names matching the
872*5e7646d2SAndroid Build Coastguard Worker * list of "requested-attribute" values supplied in an IPP request. All IANA-
873*5e7646d2SAndroid Build Coastguard Worker * registered values are supported in addition to the CUPS IPP extension
874*5e7646d2SAndroid Build Coastguard Worker * attributes.
875*5e7646d2SAndroid Build Coastguard Worker *
876*5e7646d2SAndroid Build Coastguard Worker * The @code request@ parameter specifies the request message that was read from
877*5e7646d2SAndroid Build Coastguard Worker * the client.
878*5e7646d2SAndroid Build Coastguard Worker *
879*5e7646d2SAndroid Build Coastguard Worker * @code NULL@ is returned if all attributes should be returned. Otherwise, the
880*5e7646d2SAndroid Build Coastguard Worker * result is a sorted array of attribute names, where @code cupsArrayFind(array,
881*5e7646d2SAndroid Build Coastguard Worker * "attribute-name")@ will return a non-NULL pointer. The array must be freed
882*5e7646d2SAndroid Build Coastguard Worker * using the @code cupsArrayDelete@ function.
883*5e7646d2SAndroid Build Coastguard Worker *
884*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.7/macOS 10.9@
885*5e7646d2SAndroid Build Coastguard Worker */
886*5e7646d2SAndroid Build Coastguard Worker
887*5e7646d2SAndroid Build Coastguard Worker cups_array_t * /* O - CUPS array or @code NULL@ if all */
ippCreateRequestedArray(ipp_t * request)888*5e7646d2SAndroid Build Coastguard Worker ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
889*5e7646d2SAndroid Build Coastguard Worker {
890*5e7646d2SAndroid Build Coastguard Worker int i, j, /* Looping vars */
891*5e7646d2SAndroid Build Coastguard Worker count, /* Number of values */
892*5e7646d2SAndroid Build Coastguard Worker added; /* Was name added? */
893*5e7646d2SAndroid Build Coastguard Worker ipp_op_t op; /* IPP operation code */
894*5e7646d2SAndroid Build Coastguard Worker ipp_attribute_t *requested; /* requested-attributes attribute */
895*5e7646d2SAndroid Build Coastguard Worker cups_array_t *ra; /* Requested attributes array */
896*5e7646d2SAndroid Build Coastguard Worker const char *value; /* Current value */
897*5e7646d2SAndroid Build Coastguard Worker /* The following lists come from the current IANA IPP registry of attributes */
898*5e7646d2SAndroid Build Coastguard Worker static const char * const document_description[] =
899*5e7646d2SAndroid Build Coastguard Worker { /* document-description group */
900*5e7646d2SAndroid Build Coastguard Worker "compression",
901*5e7646d2SAndroid Build Coastguard Worker "copies-actual",
902*5e7646d2SAndroid Build Coastguard Worker "cover-back-actual",
903*5e7646d2SAndroid Build Coastguard Worker "cover-front-actual",
904*5e7646d2SAndroid Build Coastguard Worker "current-page-order",
905*5e7646d2SAndroid Build Coastguard Worker "date-time-at-completed",
906*5e7646d2SAndroid Build Coastguard Worker "date-time-at-creation",
907*5e7646d2SAndroid Build Coastguard Worker "date-time-at-processing",
908*5e7646d2SAndroid Build Coastguard Worker "detailed-status-messages",
909*5e7646d2SAndroid Build Coastguard Worker "document-access-errors",
910*5e7646d2SAndroid Build Coastguard Worker "document-charset",
911*5e7646d2SAndroid Build Coastguard Worker "document-digital-signature",
912*5e7646d2SAndroid Build Coastguard Worker "document-format",
913*5e7646d2SAndroid Build Coastguard Worker "document-format-details",
914*5e7646d2SAndroid Build Coastguard Worker "document-format-detected",
915*5e7646d2SAndroid Build Coastguard Worker "document-format-version",
916*5e7646d2SAndroid Build Coastguard Worker "document-format-version-detected",
917*5e7646d2SAndroid Build Coastguard Worker "document-job-id",
918*5e7646d2SAndroid Build Coastguard Worker "document-job-uri",
919*5e7646d2SAndroid Build Coastguard Worker "document-message",
920*5e7646d2SAndroid Build Coastguard Worker "document-metadata",
921*5e7646d2SAndroid Build Coastguard Worker "document-name",
922*5e7646d2SAndroid Build Coastguard Worker "document-natural-language",
923*5e7646d2SAndroid Build Coastguard Worker "document-number",
924*5e7646d2SAndroid Build Coastguard Worker "document-printer-uri",
925*5e7646d2SAndroid Build Coastguard Worker "document-state",
926*5e7646d2SAndroid Build Coastguard Worker "document-state-message",
927*5e7646d2SAndroid Build Coastguard Worker "document-state-reasons",
928*5e7646d2SAndroid Build Coastguard Worker "document-uri",
929*5e7646d2SAndroid Build Coastguard Worker "document-uuid", /* IPP JPS3 */
930*5e7646d2SAndroid Build Coastguard Worker "errors-count",
931*5e7646d2SAndroid Build Coastguard Worker "finishings-actual",
932*5e7646d2SAndroid Build Coastguard Worker "finishings-col-actual",
933*5e7646d2SAndroid Build Coastguard Worker "force-front-side-actual",
934*5e7646d2SAndroid Build Coastguard Worker "imposition-template-actual",
935*5e7646d2SAndroid Build Coastguard Worker "impressions",
936*5e7646d2SAndroid Build Coastguard Worker "impressions-col",
937*5e7646d2SAndroid Build Coastguard Worker "impressions-completed",
938*5e7646d2SAndroid Build Coastguard Worker "impressions-completed-col",
939*5e7646d2SAndroid Build Coastguard Worker "impressions-completed-current-copy",
940*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-actual",
941*5e7646d2SAndroid Build Coastguard Worker "k-octets",
942*5e7646d2SAndroid Build Coastguard Worker "k-octets-processed",
943*5e7646d2SAndroid Build Coastguard Worker "last-document",
944*5e7646d2SAndroid Build Coastguard Worker "materials-col-actual", /* IPP 3D */
945*5e7646d2SAndroid Build Coastguard Worker "media-actual",
946*5e7646d2SAndroid Build Coastguard Worker "media-col-actual",
947*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check-actual",
948*5e7646d2SAndroid Build Coastguard Worker "media-sheets",
949*5e7646d2SAndroid Build Coastguard Worker "media-sheets-col",
950*5e7646d2SAndroid Build Coastguard Worker "media-sheets-completed",
951*5e7646d2SAndroid Build Coastguard Worker "media-sheets-completed-col",
952*5e7646d2SAndroid Build Coastguard Worker "more-info",
953*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-actual", /* IPP 3D */
954*5e7646d2SAndroid Build Coastguard Worker "number-up-actual",
955*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-actual",
956*5e7646d2SAndroid Build Coastguard Worker "output-bin-actual",
957*5e7646d2SAndroid Build Coastguard Worker "output-device-assigned",
958*5e7646d2SAndroid Build Coastguard Worker "overrides-actual",
959*5e7646d2SAndroid Build Coastguard Worker "page-delivery-actual",
960*5e7646d2SAndroid Build Coastguard Worker "page-order-received-actual",
961*5e7646d2SAndroid Build Coastguard Worker "page-ranges-actual",
962*5e7646d2SAndroid Build Coastguard Worker "pages",
963*5e7646d2SAndroid Build Coastguard Worker "pages-col",
964*5e7646d2SAndroid Build Coastguard Worker "pages-completed",
965*5e7646d2SAndroid Build Coastguard Worker "pages-completed-col",
966*5e7646d2SAndroid Build Coastguard Worker "pages-completed-current-copy",
967*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-actual", /* IPP 3D */
968*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-actual",
969*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-actual", /* IPP 3D */
970*5e7646d2SAndroid Build Coastguard Worker "print-base-actual", /* IPP 3D */
971*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-actual",
972*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-actual",
973*5e7646d2SAndroid Build Coastguard Worker "print-objects-actual", /* IPP 3D */
974*5e7646d2SAndroid Build Coastguard Worker "print-quality-actual",
975*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-actual",
976*5e7646d2SAndroid Build Coastguard Worker "print-scaling-actual", /* IPP Paid Printing */
977*5e7646d2SAndroid Build Coastguard Worker "print-supports-actual", /* IPP 3D */
978*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-actual",
979*5e7646d2SAndroid Build Coastguard Worker "printer-up-time",
980*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-actual",
981*5e7646d2SAndroid Build Coastguard Worker "sheet-completed-copy-number",
982*5e7646d2SAndroid Build Coastguard Worker "sides-actual",
983*5e7646d2SAndroid Build Coastguard Worker "time-at-completed",
984*5e7646d2SAndroid Build Coastguard Worker "time-at-creation",
985*5e7646d2SAndroid Build Coastguard Worker "time-at-processing",
986*5e7646d2SAndroid Build Coastguard Worker "x-image-position-actual",
987*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-actual",
988*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-actual",
989*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-actual",
990*5e7646d2SAndroid Build Coastguard Worker "y-image-position-actual",
991*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-actual",
992*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-actual",
993*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-actual"
994*5e7646d2SAndroid Build Coastguard Worker };
995*5e7646d2SAndroid Build Coastguard Worker static const char * const document_template[] =
996*5e7646d2SAndroid Build Coastguard Worker { /* document-template group */
997*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity", /* IPP 3D */
998*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-default", /* IPP 3D */
999*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-supported", /* IPP 3D */
1000*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature", /* IPP 3D */
1001*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-default", /* IPP 3D */
1002*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-supported", /* IPP 3D */
1003*5e7646d2SAndroid Build Coastguard Worker "copies",
1004*5e7646d2SAndroid Build Coastguard Worker "copies-default",
1005*5e7646d2SAndroid Build Coastguard Worker "copies-supported",
1006*5e7646d2SAndroid Build Coastguard Worker "cover-back",
1007*5e7646d2SAndroid Build Coastguard Worker "cover-back-default",
1008*5e7646d2SAndroid Build Coastguard Worker "cover-back-supported",
1009*5e7646d2SAndroid Build Coastguard Worker "cover-front",
1010*5e7646d2SAndroid Build Coastguard Worker "cover-front-default",
1011*5e7646d2SAndroid Build Coastguard Worker "cover-front-supported",
1012*5e7646d2SAndroid Build Coastguard Worker "feed-orientation",
1013*5e7646d2SAndroid Build Coastguard Worker "feed-orientation-default",
1014*5e7646d2SAndroid Build Coastguard Worker "feed-orientation-supported",
1015*5e7646d2SAndroid Build Coastguard Worker "finishings",
1016*5e7646d2SAndroid Build Coastguard Worker "finishings-col",
1017*5e7646d2SAndroid Build Coastguard Worker "finishings-col-database",
1018*5e7646d2SAndroid Build Coastguard Worker "finishings-col-default",
1019*5e7646d2SAndroid Build Coastguard Worker "finishings-col-ready",
1020*5e7646d2SAndroid Build Coastguard Worker "finishings-col-supported",
1021*5e7646d2SAndroid Build Coastguard Worker "finishings-default",
1022*5e7646d2SAndroid Build Coastguard Worker "finishings-ready",
1023*5e7646d2SAndroid Build Coastguard Worker "finishings-supported",
1024*5e7646d2SAndroid Build Coastguard Worker "font-name-requested",
1025*5e7646d2SAndroid Build Coastguard Worker "font-name-requested-default",
1026*5e7646d2SAndroid Build Coastguard Worker "font-name-requested-supported",
1027*5e7646d2SAndroid Build Coastguard Worker "font-size-requested",
1028*5e7646d2SAndroid Build Coastguard Worker "font-size-requested-default",
1029*5e7646d2SAndroid Build Coastguard Worker "font-size-requested-supported",
1030*5e7646d2SAndroid Build Coastguard Worker "force-front-side",
1031*5e7646d2SAndroid Build Coastguard Worker "force-front-side-default",
1032*5e7646d2SAndroid Build Coastguard Worker "force-front-side-supported",
1033*5e7646d2SAndroid Build Coastguard Worker "imposition-template",
1034*5e7646d2SAndroid Build Coastguard Worker "imposition-template-default",
1035*5e7646d2SAndroid Build Coastguard Worker "imposition-template-supported",
1036*5e7646d2SAndroid Build Coastguard Worker "insert-after-page-number-supported",
1037*5e7646d2SAndroid Build Coastguard Worker "insert-count-supported",
1038*5e7646d2SAndroid Build Coastguard Worker "insert-sheet",
1039*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-default",
1040*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-supported",
1041*5e7646d2SAndroid Build Coastguard Worker "material-amount-units-supported", /* IPP 3D */
1042*5e7646d2SAndroid Build Coastguard Worker "material-diameter-supported", /* IPP 3D */
1043*5e7646d2SAndroid Build Coastguard Worker "material-purpose-supported", /* IPP 3D */
1044*5e7646d2SAndroid Build Coastguard Worker "material-rate-supported", /* IPP 3D */
1045*5e7646d2SAndroid Build Coastguard Worker "material-rate-units-supported", /* IPP 3D */
1046*5e7646d2SAndroid Build Coastguard Worker "material-shell-thickness-supported",/* IPP 3D */
1047*5e7646d2SAndroid Build Coastguard Worker "material-temperature-supported", /* IPP 3D */
1048*5e7646d2SAndroid Build Coastguard Worker "material-type-supported", /* IPP 3D */
1049*5e7646d2SAndroid Build Coastguard Worker "materials-col", /* IPP 3D */
1050*5e7646d2SAndroid Build Coastguard Worker "materials-col-database", /* IPP 3D */
1051*5e7646d2SAndroid Build Coastguard Worker "materials-col-default", /* IPP 3D */
1052*5e7646d2SAndroid Build Coastguard Worker "materials-col-ready", /* IPP 3D */
1053*5e7646d2SAndroid Build Coastguard Worker "materials-col-supported", /* IPP 3D */
1054*5e7646d2SAndroid Build Coastguard Worker "max-materials-col-supported", /* IPP 3D */
1055*5e7646d2SAndroid Build Coastguard Worker "max-stitching-locations-supported",
1056*5e7646d2SAndroid Build Coastguard Worker "media",
1057*5e7646d2SAndroid Build Coastguard Worker "media-back-coating-supported",
1058*5e7646d2SAndroid Build Coastguard Worker "media-bottom-margin-supported",
1059*5e7646d2SAndroid Build Coastguard Worker "media-col",
1060*5e7646d2SAndroid Build Coastguard Worker "media-col-default",
1061*5e7646d2SAndroid Build Coastguard Worker "media-col-ready",
1062*5e7646d2SAndroid Build Coastguard Worker "media-col-supported",
1063*5e7646d2SAndroid Build Coastguard Worker "media-color-supported",
1064*5e7646d2SAndroid Build Coastguard Worker "media-default",
1065*5e7646d2SAndroid Build Coastguard Worker "media-front-coating-supported",
1066*5e7646d2SAndroid Build Coastguard Worker "media-grain-supported",
1067*5e7646d2SAndroid Build Coastguard Worker "media-hole-count-supported",
1068*5e7646d2SAndroid Build Coastguard Worker "media-info-supported",
1069*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check",
1070*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check-default",
1071*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check-supported",
1072*5e7646d2SAndroid Build Coastguard Worker "media-key-supported",
1073*5e7646d2SAndroid Build Coastguard Worker "media-left-margin-supported",
1074*5e7646d2SAndroid Build Coastguard Worker "media-order-count-supported",
1075*5e7646d2SAndroid Build Coastguard Worker "media-pre-printed-supported",
1076*5e7646d2SAndroid Build Coastguard Worker "media-ready",
1077*5e7646d2SAndroid Build Coastguard Worker "media-recycled-supported",
1078*5e7646d2SAndroid Build Coastguard Worker "media-right-margin-supported",
1079*5e7646d2SAndroid Build Coastguard Worker "media-size-supported",
1080*5e7646d2SAndroid Build Coastguard Worker "media-source-supported",
1081*5e7646d2SAndroid Build Coastguard Worker "media-supported",
1082*5e7646d2SAndroid Build Coastguard Worker "media-thickness-supported",
1083*5e7646d2SAndroid Build Coastguard Worker "media-top-margin-supported",
1084*5e7646d2SAndroid Build Coastguard Worker "media-type-supported",
1085*5e7646d2SAndroid Build Coastguard Worker "media-weight-metric-supported",
1086*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling",
1087*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling-default",
1088*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling-supported",
1089*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling", /* IPP 3D */
1090*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-default", /* IPP 3D */
1091*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-supported",/* IPP 3D */
1092*5e7646d2SAndroid Build Coastguard Worker "number-up",
1093*5e7646d2SAndroid Build Coastguard Worker "number-up-default",
1094*5e7646d2SAndroid Build Coastguard Worker "number-up-supported",
1095*5e7646d2SAndroid Build Coastguard Worker "orientation-requested",
1096*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-default",
1097*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-supported",
1098*5e7646d2SAndroid Build Coastguard Worker "output-mode", /* CUPS extension */
1099*5e7646d2SAndroid Build Coastguard Worker "output-mode-default", /* CUPS extension */
1100*5e7646d2SAndroid Build Coastguard Worker "output-mode-supported", /* CUPS extension */
1101*5e7646d2SAndroid Build Coastguard Worker "overrides",
1102*5e7646d2SAndroid Build Coastguard Worker "overrides-supported",
1103*5e7646d2SAndroid Build Coastguard Worker "page-delivery",
1104*5e7646d2SAndroid Build Coastguard Worker "page-delivery-default",
1105*5e7646d2SAndroid Build Coastguard Worker "page-delivery-supported",
1106*5e7646d2SAndroid Build Coastguard Worker "page-order-received",
1107*5e7646d2SAndroid Build Coastguard Worker "page-order-received-default",
1108*5e7646d2SAndroid Build Coastguard Worker "page-order-received-supported",
1109*5e7646d2SAndroid Build Coastguard Worker "page-ranges",
1110*5e7646d2SAndroid Build Coastguard Worker "page-ranges-supported",
1111*5e7646d2SAndroid Build Coastguard Worker "pages-per-subset",
1112*5e7646d2SAndroid Build Coastguard Worker "pages-per-subset-supported",
1113*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file",
1114*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-default",
1115*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-entry-supported",
1116*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-location-supported",
1117*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-name-subdirectory-supported",
1118*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-name-supported",
1119*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-supported",
1120*5e7646d2SAndroid Build Coastguard Worker "platform-temperature", /* IPP 3D */
1121*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-default", /* IPP 3D */
1122*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-supported", /* IPP 3D */
1123*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up",
1124*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-default",
1125*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-supported",
1126*5e7646d2SAndroid Build Coastguard Worker "print-accuracy", /* IPP 3D */
1127*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-default", /* IPP 3D */
1128*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-supported", /* IPP 3D */
1129*5e7646d2SAndroid Build Coastguard Worker "print-base", /* IPP 3D */
1130*5e7646d2SAndroid Build Coastguard Worker "print-base-default", /* IPP 3D */
1131*5e7646d2SAndroid Build Coastguard Worker "print-base-supported", /* IPP 3D */
1132*5e7646d2SAndroid Build Coastguard Worker "print-color-mode",
1133*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-default",
1134*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-supported",
1135*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize",
1136*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-default",
1137*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-supported",
1138*5e7646d2SAndroid Build Coastguard Worker "print-objects", /* IPP 3D */
1139*5e7646d2SAndroid Build Coastguard Worker "print-objects-default", /* IPP 3D */
1140*5e7646d2SAndroid Build Coastguard Worker "print-objects-supported", /* IPP 3D */
1141*5e7646d2SAndroid Build Coastguard Worker "print-quality",
1142*5e7646d2SAndroid Build Coastguard Worker "print-quality-default",
1143*5e7646d2SAndroid Build Coastguard Worker "print-quality-supported",
1144*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent",
1145*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-default",
1146*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-supported",
1147*5e7646d2SAndroid Build Coastguard Worker "print-scaling", /* IPP Paid Printing */
1148*5e7646d2SAndroid Build Coastguard Worker "print-scaling-default", /* IPP Paid Printing */
1149*5e7646d2SAndroid Build Coastguard Worker "print-scaling-supported", /* IPP Paid Printing */
1150*5e7646d2SAndroid Build Coastguard Worker "print-supports", /* IPP 3D */
1151*5e7646d2SAndroid Build Coastguard Worker "print-supports-default", /* IPP 3D */
1152*5e7646d2SAndroid Build Coastguard Worker "print-supports-supported", /* IPP 3D */
1153*5e7646d2SAndroid Build Coastguard Worker "printer-resolution",
1154*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-default",
1155*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-supported",
1156*5e7646d2SAndroid Build Coastguard Worker "separator-sheets",
1157*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-default",
1158*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-supported",
1159*5e7646d2SAndroid Build Coastguard Worker "sheet-collate",
1160*5e7646d2SAndroid Build Coastguard Worker "sheet-collate-default",
1161*5e7646d2SAndroid Build Coastguard Worker "sheet-collate-supported",
1162*5e7646d2SAndroid Build Coastguard Worker "sides",
1163*5e7646d2SAndroid Build Coastguard Worker "sides-default",
1164*5e7646d2SAndroid Build Coastguard Worker "sides-supported",
1165*5e7646d2SAndroid Build Coastguard Worker "stitching-locations-supported",
1166*5e7646d2SAndroid Build Coastguard Worker "stitching-offset-supported",
1167*5e7646d2SAndroid Build Coastguard Worker "x-image-position",
1168*5e7646d2SAndroid Build Coastguard Worker "x-image-position-default",
1169*5e7646d2SAndroid Build Coastguard Worker "x-image-position-supported",
1170*5e7646d2SAndroid Build Coastguard Worker "x-image-shift",
1171*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-default",
1172*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-supported",
1173*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift",
1174*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-default",
1175*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-supported",
1176*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift",
1177*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-default",
1178*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-supported",
1179*5e7646d2SAndroid Build Coastguard Worker "y-image-position",
1180*5e7646d2SAndroid Build Coastguard Worker "y-image-position-default",
1181*5e7646d2SAndroid Build Coastguard Worker "y-image-position-supported",
1182*5e7646d2SAndroid Build Coastguard Worker "y-image-shift",
1183*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-default",
1184*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-supported",
1185*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift",
1186*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-default",
1187*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-supported",
1188*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift",
1189*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-default",
1190*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-supported"
1191*5e7646d2SAndroid Build Coastguard Worker };
1192*5e7646d2SAndroid Build Coastguard Worker static const char * const job_description[] =
1193*5e7646d2SAndroid Build Coastguard Worker { /* job-description group */
1194*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-actual", /* IPP 3D */
1195*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-actual", /* IPP 3D */
1196*5e7646d2SAndroid Build Coastguard Worker "compression-supplied",
1197*5e7646d2SAndroid Build Coastguard Worker "copies-actual",
1198*5e7646d2SAndroid Build Coastguard Worker "cover-back-actual",
1199*5e7646d2SAndroid Build Coastguard Worker "cover-front-actual",
1200*5e7646d2SAndroid Build Coastguard Worker "current-page-order",
1201*5e7646d2SAndroid Build Coastguard Worker "date-time-at-completed",
1202*5e7646d2SAndroid Build Coastguard Worker "date-time-at-creation",
1203*5e7646d2SAndroid Build Coastguard Worker "date-time-at-processing",
1204*5e7646d2SAndroid Build Coastguard Worker "destination-statuses",
1205*5e7646d2SAndroid Build Coastguard Worker "document-charset-supplied",
1206*5e7646d2SAndroid Build Coastguard Worker "document-digital-signature-supplied",
1207*5e7646d2SAndroid Build Coastguard Worker "document-format-details-supplied",
1208*5e7646d2SAndroid Build Coastguard Worker "document-format-supplied",
1209*5e7646d2SAndroid Build Coastguard Worker "document-message-supplied",
1210*5e7646d2SAndroid Build Coastguard Worker "document-metadata",
1211*5e7646d2SAndroid Build Coastguard Worker "document-name-supplied",
1212*5e7646d2SAndroid Build Coastguard Worker "document-natural-language-supplied",
1213*5e7646d2SAndroid Build Coastguard Worker "document-overrides-actual",
1214*5e7646d2SAndroid Build Coastguard Worker "errors-count",
1215*5e7646d2SAndroid Build Coastguard Worker "finishings-actual",
1216*5e7646d2SAndroid Build Coastguard Worker "finishings-col-actual",
1217*5e7646d2SAndroid Build Coastguard Worker "force-front-side-actual",
1218*5e7646d2SAndroid Build Coastguard Worker "imposition-template-actual",
1219*5e7646d2SAndroid Build Coastguard Worker "impressions-completed-current-copy",
1220*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-actual",
1221*5e7646d2SAndroid Build Coastguard Worker "job-account-id-actual",
1222*5e7646d2SAndroid Build Coastguard Worker "job-accounting-sheets-actual",
1223*5e7646d2SAndroid Build Coastguard Worker "job-accounting-user-id-actual",
1224*5e7646d2SAndroid Build Coastguard Worker "job-attribute-fidelity",
1225*5e7646d2SAndroid Build Coastguard Worker "job-charge-info", /* CUPS extension */
1226*5e7646d2SAndroid Build Coastguard Worker "job-collation-type",
1227*5e7646d2SAndroid Build Coastguard Worker "job-collation-type-actual",
1228*5e7646d2SAndroid Build Coastguard Worker "job-copies-actual",
1229*5e7646d2SAndroid Build Coastguard Worker "job-cover-back-actual",
1230*5e7646d2SAndroid Build Coastguard Worker "job-cover-front-actual",
1231*5e7646d2SAndroid Build Coastguard Worker "job-detailed-status-message",
1232*5e7646d2SAndroid Build Coastguard Worker "job-document-access-errors",
1233*5e7646d2SAndroid Build Coastguard Worker "job-error-sheet-actual",
1234*5e7646d2SAndroid Build Coastguard Worker "job-finishings-actual",
1235*5e7646d2SAndroid Build Coastguard Worker "job-finishings-col-actual",
1236*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-actual",
1237*5e7646d2SAndroid Build Coastguard Worker "job-id",
1238*5e7646d2SAndroid Build Coastguard Worker "job-impressions",
1239*5e7646d2SAndroid Build Coastguard Worker "job-impressions-col",
1240*5e7646d2SAndroid Build Coastguard Worker "job-impressions-completed",
1241*5e7646d2SAndroid Build Coastguard Worker "job-impressions-completed-col",
1242*5e7646d2SAndroid Build Coastguard Worker "job-k-octets",
1243*5e7646d2SAndroid Build Coastguard Worker "job-k-octets-processed",
1244*5e7646d2SAndroid Build Coastguard Worker "job-mandatory-attributes",
1245*5e7646d2SAndroid Build Coastguard Worker "job-media-progress", /* CUPS extension */
1246*5e7646d2SAndroid Build Coastguard Worker "job-media-sheets",
1247*5e7646d2SAndroid Build Coastguard Worker "job-media-sheets-col",
1248*5e7646d2SAndroid Build Coastguard Worker "job-media-sheets-completed",
1249*5e7646d2SAndroid Build Coastguard Worker "job-media-sheets-completed-col",
1250*5e7646d2SAndroid Build Coastguard Worker "job-message-from-operator",
1251*5e7646d2SAndroid Build Coastguard Worker "job-more-info",
1252*5e7646d2SAndroid Build Coastguard Worker "job-name",
1253*5e7646d2SAndroid Build Coastguard Worker "job-originating-host-name", /* CUPS extension */
1254*5e7646d2SAndroid Build Coastguard Worker "job-originating-user-name",
1255*5e7646d2SAndroid Build Coastguard Worker "job-originating-user-uri", /* IPP JPS3 */
1256*5e7646d2SAndroid Build Coastguard Worker "job-pages",
1257*5e7646d2SAndroid Build Coastguard Worker "job-pages-col",
1258*5e7646d2SAndroid Build Coastguard Worker "job-pages-completed",
1259*5e7646d2SAndroid Build Coastguard Worker "job-pages-completed-col",
1260*5e7646d2SAndroid Build Coastguard Worker "job-pages-completed-current-copy",
1261*5e7646d2SAndroid Build Coastguard Worker "job-printer-state-message", /* CUPS extension */
1262*5e7646d2SAndroid Build Coastguard Worker "job-printer-state-reasons", /* CUPS extension */
1263*5e7646d2SAndroid Build Coastguard Worker "job-printer-up-time",
1264*5e7646d2SAndroid Build Coastguard Worker "job-printer-uri",
1265*5e7646d2SAndroid Build Coastguard Worker "job-priority-actual",
1266*5e7646d2SAndroid Build Coastguard Worker "job-resource-ids", /* IPP System */
1267*5e7646d2SAndroid Build Coastguard Worker "job-save-printer-make-and-model",
1268*5e7646d2SAndroid Build Coastguard Worker "job-sheet-message-actual",
1269*5e7646d2SAndroid Build Coastguard Worker "job-sheets-actual",
1270*5e7646d2SAndroid Build Coastguard Worker "job-sheets-col-actual",
1271*5e7646d2SAndroid Build Coastguard Worker "job-state",
1272*5e7646d2SAndroid Build Coastguard Worker "job-state-message",
1273*5e7646d2SAndroid Build Coastguard Worker "job-state-reasons",
1274*5e7646d2SAndroid Build Coastguard Worker "job-uri",
1275*5e7646d2SAndroid Build Coastguard Worker "job-uuid", /* IPP JPS3 */
1276*5e7646d2SAndroid Build Coastguard Worker "materials-col-actual", /* IPP 3D */
1277*5e7646d2SAndroid Build Coastguard Worker "media-actual",
1278*5e7646d2SAndroid Build Coastguard Worker "media-col-actual",
1279*5e7646d2SAndroid Build Coastguard Worker "media-check-input-tray-actual",
1280*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling-actual",
1281*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-actual", /* IPP 3D */
1282*5e7646d2SAndroid Build Coastguard Worker "number-of-documents",
1283*5e7646d2SAndroid Build Coastguard Worker "number-of-intervening-jobs",
1284*5e7646d2SAndroid Build Coastguard Worker "number-up-actual",
1285*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-actual",
1286*5e7646d2SAndroid Build Coastguard Worker "original-requesting-user-name",
1287*5e7646d2SAndroid Build Coastguard Worker "output-bin-actual",
1288*5e7646d2SAndroid Build Coastguard Worker "output-device-assigned",
1289*5e7646d2SAndroid Build Coastguard Worker "output-device-job-state", /* IPP INFRA */
1290*5e7646d2SAndroid Build Coastguard Worker "output-device-job-state-message", /* IPP INFRA */
1291*5e7646d2SAndroid Build Coastguard Worker "output-device-job-state-reasons", /* IPP INFRA */
1292*5e7646d2SAndroid Build Coastguard Worker "output-device-uuid-assigned", /* IPP INFRA */
1293*5e7646d2SAndroid Build Coastguard Worker "overrides-actual",
1294*5e7646d2SAndroid Build Coastguard Worker "page-delivery-actual",
1295*5e7646d2SAndroid Build Coastguard Worker "page-order-received-actual",
1296*5e7646d2SAndroid Build Coastguard Worker "page-ranges-actual",
1297*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-actual", /* IPP 3D */
1298*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-actual",
1299*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-actual", /* IPP 3D */
1300*5e7646d2SAndroid Build Coastguard Worker "print-base-actual", /* IPP 3D */
1301*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-actual",
1302*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-actual",
1303*5e7646d2SAndroid Build Coastguard Worker "print-objects-actual", /* IPP 3D */
1304*5e7646d2SAndroid Build Coastguard Worker "print-quality-actual",
1305*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-actual",
1306*5e7646d2SAndroid Build Coastguard Worker "print-scaling-actual", /* IPP Paid Printing */
1307*5e7646d2SAndroid Build Coastguard Worker "print-supports-actual", /* IPP 3D */
1308*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-actual",
1309*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-actual",
1310*5e7646d2SAndroid Build Coastguard Worker "sheet-collate-actual",
1311*5e7646d2SAndroid Build Coastguard Worker "sheet-completed-copy-number",
1312*5e7646d2SAndroid Build Coastguard Worker "sheet-completed-document-number",
1313*5e7646d2SAndroid Build Coastguard Worker "sides-actual",
1314*5e7646d2SAndroid Build Coastguard Worker "time-at-completed",
1315*5e7646d2SAndroid Build Coastguard Worker "time-at-creation",
1316*5e7646d2SAndroid Build Coastguard Worker "time-at-processing",
1317*5e7646d2SAndroid Build Coastguard Worker "warnings-count",
1318*5e7646d2SAndroid Build Coastguard Worker "x-image-position-actual",
1319*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-actual",
1320*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-actual",
1321*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-actual",
1322*5e7646d2SAndroid Build Coastguard Worker "y-image-position-actual",
1323*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-actual",
1324*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-actual",
1325*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-actual"
1326*5e7646d2SAndroid Build Coastguard Worker };
1327*5e7646d2SAndroid Build Coastguard Worker static const char * const job_template[] =
1328*5e7646d2SAndroid Build Coastguard Worker { /* job-template group */
1329*5e7646d2SAndroid Build Coastguard Worker "accuracy-units-supported", /* IPP 3D */
1330*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity", /* IPP 3D */
1331*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-default", /* IPP 3D */
1332*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-supported", /* IPP 3D */
1333*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature", /* IPP 3D */
1334*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-default", /* IPP 3D */
1335*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-supported", /* IPP 3D */
1336*5e7646d2SAndroid Build Coastguard Worker "confirmation-sheet-print", /* IPP FaxOut */
1337*5e7646d2SAndroid Build Coastguard Worker "confirmation-sheet-print-default",
1338*5e7646d2SAndroid Build Coastguard Worker "copies",
1339*5e7646d2SAndroid Build Coastguard Worker "copies-default",
1340*5e7646d2SAndroid Build Coastguard Worker "copies-supported",
1341*5e7646d2SAndroid Build Coastguard Worker "cover-back",
1342*5e7646d2SAndroid Build Coastguard Worker "cover-back-default",
1343*5e7646d2SAndroid Build Coastguard Worker "cover-back-supported",
1344*5e7646d2SAndroid Build Coastguard Worker "cover-front",
1345*5e7646d2SAndroid Build Coastguard Worker "cover-front-default",
1346*5e7646d2SAndroid Build Coastguard Worker "cover-front-supported",
1347*5e7646d2SAndroid Build Coastguard Worker "cover-sheet-info", /* IPP FaxOut */
1348*5e7646d2SAndroid Build Coastguard Worker "cover-sheet-info-default",
1349*5e7646d2SAndroid Build Coastguard Worker "cover-sheet-info-supported",
1350*5e7646d2SAndroid Build Coastguard Worker "destination-uri-schemes-supported",/* IPP FaxOut */
1351*5e7646d2SAndroid Build Coastguard Worker "destination-uris", /* IPP FaxOut */
1352*5e7646d2SAndroid Build Coastguard Worker "destination-uris-supported",
1353*5e7646d2SAndroid Build Coastguard Worker "feed-orientation",
1354*5e7646d2SAndroid Build Coastguard Worker "feed-orientation-default",
1355*5e7646d2SAndroid Build Coastguard Worker "feed-orientation-supported",
1356*5e7646d2SAndroid Build Coastguard Worker "finishings",
1357*5e7646d2SAndroid Build Coastguard Worker "finishings-col",
1358*5e7646d2SAndroid Build Coastguard Worker "finishings-col-database",
1359*5e7646d2SAndroid Build Coastguard Worker "finishings-col-default",
1360*5e7646d2SAndroid Build Coastguard Worker "finishings-col-ready",
1361*5e7646d2SAndroid Build Coastguard Worker "finishings-col-supported",
1362*5e7646d2SAndroid Build Coastguard Worker "finishings-default",
1363*5e7646d2SAndroid Build Coastguard Worker "finishings-ready",
1364*5e7646d2SAndroid Build Coastguard Worker "finishings-supported",
1365*5e7646d2SAndroid Build Coastguard Worker "font-name-requested",
1366*5e7646d2SAndroid Build Coastguard Worker "font-name-requested-default",
1367*5e7646d2SAndroid Build Coastguard Worker "font-name-requested-supported",
1368*5e7646d2SAndroid Build Coastguard Worker "font-size-requested",
1369*5e7646d2SAndroid Build Coastguard Worker "font-size-requested-default",
1370*5e7646d2SAndroid Build Coastguard Worker "font-size-requested-supported",
1371*5e7646d2SAndroid Build Coastguard Worker "force-front-side",
1372*5e7646d2SAndroid Build Coastguard Worker "force-front-side-default",
1373*5e7646d2SAndroid Build Coastguard Worker "force-front-side-supported",
1374*5e7646d2SAndroid Build Coastguard Worker "imposition-template",
1375*5e7646d2SAndroid Build Coastguard Worker "imposition-template-default",
1376*5e7646d2SAndroid Build Coastguard Worker "imposition-template-supported",
1377*5e7646d2SAndroid Build Coastguard Worker "insert-after-page-number-supported",
1378*5e7646d2SAndroid Build Coastguard Worker "insert-count-supported",
1379*5e7646d2SAndroid Build Coastguard Worker "insert-sheet",
1380*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-default",
1381*5e7646d2SAndroid Build Coastguard Worker "insert-sheet-supported",
1382*5e7646d2SAndroid Build Coastguard Worker "job-account-id",
1383*5e7646d2SAndroid Build Coastguard Worker "job-account-id-default",
1384*5e7646d2SAndroid Build Coastguard Worker "job-account-id-supported",
1385*5e7646d2SAndroid Build Coastguard Worker "job-accounting-sheets"
1386*5e7646d2SAndroid Build Coastguard Worker "job-accounting-sheets-default"
1387*5e7646d2SAndroid Build Coastguard Worker "job-accounting-sheets-supported"
1388*5e7646d2SAndroid Build Coastguard Worker "job-accounting-user-id",
1389*5e7646d2SAndroid Build Coastguard Worker "job-accounting-user-id-default",
1390*5e7646d2SAndroid Build Coastguard Worker "job-accounting-user-id-supported",
1391*5e7646d2SAndroid Build Coastguard Worker "job-copies",
1392*5e7646d2SAndroid Build Coastguard Worker "job-copies-default",
1393*5e7646d2SAndroid Build Coastguard Worker "job-copies-supported",
1394*5e7646d2SAndroid Build Coastguard Worker "job-cover-back",
1395*5e7646d2SAndroid Build Coastguard Worker "job-cover-back-default",
1396*5e7646d2SAndroid Build Coastguard Worker "job-cover-back-supported",
1397*5e7646d2SAndroid Build Coastguard Worker "job-cover-front",
1398*5e7646d2SAndroid Build Coastguard Worker "job-cover-front-default",
1399*5e7646d2SAndroid Build Coastguard Worker "job-cover-front-supported",
1400*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until",
1401*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until-default",
1402*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until-supported",
1403*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until-time",
1404*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until-time-default",
1405*5e7646d2SAndroid Build Coastguard Worker "job-delay-output-until-time-supported",
1406*5e7646d2SAndroid Build Coastguard Worker "job-error-action",
1407*5e7646d2SAndroid Build Coastguard Worker "job-error-action-default",
1408*5e7646d2SAndroid Build Coastguard Worker "job-error-action-supported",
1409*5e7646d2SAndroid Build Coastguard Worker "job-error-sheet",
1410*5e7646d2SAndroid Build Coastguard Worker "job-error-sheet-default",
1411*5e7646d2SAndroid Build Coastguard Worker "job-error-sheet-supported",
1412*5e7646d2SAndroid Build Coastguard Worker "job-finishings",
1413*5e7646d2SAndroid Build Coastguard Worker "job-finishings-col",
1414*5e7646d2SAndroid Build Coastguard Worker "job-finishings-col-default",
1415*5e7646d2SAndroid Build Coastguard Worker "job-finishings-col-supported",
1416*5e7646d2SAndroid Build Coastguard Worker "job-finishings-default",
1417*5e7646d2SAndroid Build Coastguard Worker "job-finishings-supported",
1418*5e7646d2SAndroid Build Coastguard Worker "job-hold-until",
1419*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-default",
1420*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-supported",
1421*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-time",
1422*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-time-default",
1423*5e7646d2SAndroid Build Coastguard Worker "job-hold-until-time-supported",
1424*5e7646d2SAndroid Build Coastguard Worker "job-message-to-operator",
1425*5e7646d2SAndroid Build Coastguard Worker "job-message-to-operator-default",
1426*5e7646d2SAndroid Build Coastguard Worker "job-message-to-operator-supported",
1427*5e7646d2SAndroid Build Coastguard Worker "job-phone-number",
1428*5e7646d2SAndroid Build Coastguard Worker "job-phone-number-default",
1429*5e7646d2SAndroid Build Coastguard Worker "job-phone-number-supported",
1430*5e7646d2SAndroid Build Coastguard Worker "job-priority",
1431*5e7646d2SAndroid Build Coastguard Worker "job-priority-default",
1432*5e7646d2SAndroid Build Coastguard Worker "job-priority-supported",
1433*5e7646d2SAndroid Build Coastguard Worker "job-recipient-name",
1434*5e7646d2SAndroid Build Coastguard Worker "job-recipient-name-default",
1435*5e7646d2SAndroid Build Coastguard Worker "job-recipient-name-supported",
1436*5e7646d2SAndroid Build Coastguard Worker "job-save-disposition",
1437*5e7646d2SAndroid Build Coastguard Worker "job-save-disposition-default",
1438*5e7646d2SAndroid Build Coastguard Worker "job-save-disposition-supported",
1439*5e7646d2SAndroid Build Coastguard Worker "job-sheets",
1440*5e7646d2SAndroid Build Coastguard Worker "job-sheets-col",
1441*5e7646d2SAndroid Build Coastguard Worker "job-sheets-col-default",
1442*5e7646d2SAndroid Build Coastguard Worker "job-sheets-col-supported",
1443*5e7646d2SAndroid Build Coastguard Worker "job-sheets-default",
1444*5e7646d2SAndroid Build Coastguard Worker "job-sheets-supported",
1445*5e7646d2SAndroid Build Coastguard Worker "logo-uri-schemes-supported",
1446*5e7646d2SAndroid Build Coastguard Worker "material-amount-units-supported", /* IPP 3D */
1447*5e7646d2SAndroid Build Coastguard Worker "material-diameter-supported", /* IPP 3D */
1448*5e7646d2SAndroid Build Coastguard Worker "material-purpose-supported", /* IPP 3D */
1449*5e7646d2SAndroid Build Coastguard Worker "material-rate-supported", /* IPP 3D */
1450*5e7646d2SAndroid Build Coastguard Worker "material-rate-units-supported", /* IPP 3D */
1451*5e7646d2SAndroid Build Coastguard Worker "material-shell-thickness-supported",/* IPP 3D */
1452*5e7646d2SAndroid Build Coastguard Worker "material-temperature-supported", /* IPP 3D */
1453*5e7646d2SAndroid Build Coastguard Worker "material-type-supported", /* IPP 3D */
1454*5e7646d2SAndroid Build Coastguard Worker "materials-col", /* IPP 3D */
1455*5e7646d2SAndroid Build Coastguard Worker "materials-col-database", /* IPP 3D */
1456*5e7646d2SAndroid Build Coastguard Worker "materials-col-default", /* IPP 3D */
1457*5e7646d2SAndroid Build Coastguard Worker "materials-col-ready", /* IPP 3D */
1458*5e7646d2SAndroid Build Coastguard Worker "materials-col-supported", /* IPP 3D */
1459*5e7646d2SAndroid Build Coastguard Worker "max-materials-col-supported", /* IPP 3D */
1460*5e7646d2SAndroid Build Coastguard Worker "max-save-info-supported",
1461*5e7646d2SAndroid Build Coastguard Worker "max-stitching-locations-supported",
1462*5e7646d2SAndroid Build Coastguard Worker "media",
1463*5e7646d2SAndroid Build Coastguard Worker "media-back-coating-supported",
1464*5e7646d2SAndroid Build Coastguard Worker "media-bottom-margin-supported",
1465*5e7646d2SAndroid Build Coastguard Worker "media-col",
1466*5e7646d2SAndroid Build Coastguard Worker "media-col-default",
1467*5e7646d2SAndroid Build Coastguard Worker "media-col-ready",
1468*5e7646d2SAndroid Build Coastguard Worker "media-col-supported",
1469*5e7646d2SAndroid Build Coastguard Worker "media-color-supported",
1470*5e7646d2SAndroid Build Coastguard Worker "media-default",
1471*5e7646d2SAndroid Build Coastguard Worker "media-front-coating-supported",
1472*5e7646d2SAndroid Build Coastguard Worker "media-grain-supported",
1473*5e7646d2SAndroid Build Coastguard Worker "media-hole-count-supported",
1474*5e7646d2SAndroid Build Coastguard Worker "media-info-supported",
1475*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check",
1476*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check-default",
1477*5e7646d2SAndroid Build Coastguard Worker "media-input-tray-check-supported",
1478*5e7646d2SAndroid Build Coastguard Worker "media-key-supported",
1479*5e7646d2SAndroid Build Coastguard Worker "media-left-margin-supported",
1480*5e7646d2SAndroid Build Coastguard Worker "media-order-count-supported",
1481*5e7646d2SAndroid Build Coastguard Worker "media-pre-printed-supported",
1482*5e7646d2SAndroid Build Coastguard Worker "media-ready",
1483*5e7646d2SAndroid Build Coastguard Worker "media-recycled-supported",
1484*5e7646d2SAndroid Build Coastguard Worker "media-right-margin-supported",
1485*5e7646d2SAndroid Build Coastguard Worker "media-size-supported",
1486*5e7646d2SAndroid Build Coastguard Worker "media-source-supported",
1487*5e7646d2SAndroid Build Coastguard Worker "media-supported",
1488*5e7646d2SAndroid Build Coastguard Worker "media-thickness-supported",
1489*5e7646d2SAndroid Build Coastguard Worker "media-top-margin-supported",
1490*5e7646d2SAndroid Build Coastguard Worker "media-type-supported",
1491*5e7646d2SAndroid Build Coastguard Worker "media-weight-metric-supported",
1492*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling",
1493*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling-default",
1494*5e7646d2SAndroid Build Coastguard Worker "multiple-document-handling-supported",
1495*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling", /* IPP 3D */
1496*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-default", /* IPP 3D */
1497*5e7646d2SAndroid Build Coastguard Worker "multiple-object-handling-supported",/* IPP 3D */
1498*5e7646d2SAndroid Build Coastguard Worker "number-of-retries", /* IPP FaxOut */
1499*5e7646d2SAndroid Build Coastguard Worker "number-of-retries-default",
1500*5e7646d2SAndroid Build Coastguard Worker "number-of-retries-supported",
1501*5e7646d2SAndroid Build Coastguard Worker "number-up",
1502*5e7646d2SAndroid Build Coastguard Worker "number-up-default",
1503*5e7646d2SAndroid Build Coastguard Worker "number-up-supported",
1504*5e7646d2SAndroid Build Coastguard Worker "orientation-requested",
1505*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-default",
1506*5e7646d2SAndroid Build Coastguard Worker "orientation-requested-supported",
1507*5e7646d2SAndroid Build Coastguard Worker "output-bin",
1508*5e7646d2SAndroid Build Coastguard Worker "output-bin-default",
1509*5e7646d2SAndroid Build Coastguard Worker "output-bin-supported",
1510*5e7646d2SAndroid Build Coastguard Worker "output-device",
1511*5e7646d2SAndroid Build Coastguard Worker "output-device-supported",
1512*5e7646d2SAndroid Build Coastguard Worker "output-device-uuid-supported", /* IPP INFRA */
1513*5e7646d2SAndroid Build Coastguard Worker "output-mode", /* CUPS extension */
1514*5e7646d2SAndroid Build Coastguard Worker "output-mode-default", /* CUPS extension */
1515*5e7646d2SAndroid Build Coastguard Worker "output-mode-supported", /* CUPS extension */
1516*5e7646d2SAndroid Build Coastguard Worker "overrides",
1517*5e7646d2SAndroid Build Coastguard Worker "overrides-supported",
1518*5e7646d2SAndroid Build Coastguard Worker "page-delivery",
1519*5e7646d2SAndroid Build Coastguard Worker "page-delivery-default",
1520*5e7646d2SAndroid Build Coastguard Worker "page-delivery-supported",
1521*5e7646d2SAndroid Build Coastguard Worker "page-order-received",
1522*5e7646d2SAndroid Build Coastguard Worker "page-order-received-default",
1523*5e7646d2SAndroid Build Coastguard Worker "page-order-received-supported",
1524*5e7646d2SAndroid Build Coastguard Worker "page-ranges",
1525*5e7646d2SAndroid Build Coastguard Worker "page-ranges-supported",
1526*5e7646d2SAndroid Build Coastguard Worker "pages-per-subset",
1527*5e7646d2SAndroid Build Coastguard Worker "pages-per-subset-supported",
1528*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file",
1529*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-default",
1530*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-entry-supported",
1531*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-location-supported",
1532*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-name-subdirectory-supported",
1533*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-name-supported",
1534*5e7646d2SAndroid Build Coastguard Worker "pdl-init-file-supported",
1535*5e7646d2SAndroid Build Coastguard Worker "platform-temperature", /* IPP 3D */
1536*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-default", /* IPP 3D */
1537*5e7646d2SAndroid Build Coastguard Worker "platform-temperature-supported", /* IPP 3D */
1538*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up",
1539*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-default",
1540*5e7646d2SAndroid Build Coastguard Worker "presentation-direction-number-up-supported",
1541*5e7646d2SAndroid Build Coastguard Worker "print-accuracy", /* IPP 3D */
1542*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-default", /* IPP 3D */
1543*5e7646d2SAndroid Build Coastguard Worker "print-accuracy-supported", /* IPP 3D */
1544*5e7646d2SAndroid Build Coastguard Worker "print-base", /* IPP 3D */
1545*5e7646d2SAndroid Build Coastguard Worker "print-base-default", /* IPP 3D */
1546*5e7646d2SAndroid Build Coastguard Worker "print-base-supported", /* IPP 3D */
1547*5e7646d2SAndroid Build Coastguard Worker "print-color-mode",
1548*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-default",
1549*5e7646d2SAndroid Build Coastguard Worker "print-color-mode-supported",
1550*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize",
1551*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-default",
1552*5e7646d2SAndroid Build Coastguard Worker "print-content-optimize-supported",
1553*5e7646d2SAndroid Build Coastguard Worker "print-objects", /* IPP 3D */
1554*5e7646d2SAndroid Build Coastguard Worker "print-objects-default", /* IPP 3D */
1555*5e7646d2SAndroid Build Coastguard Worker "print-objects-supported", /* IPP 3D */
1556*5e7646d2SAndroid Build Coastguard Worker "print-quality",
1557*5e7646d2SAndroid Build Coastguard Worker "print-quality-default",
1558*5e7646d2SAndroid Build Coastguard Worker "print-quality-supported",
1559*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent",
1560*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-default",
1561*5e7646d2SAndroid Build Coastguard Worker "print-rendering-intent-supported",
1562*5e7646d2SAndroid Build Coastguard Worker "print-scaling", /* IPP Paid Printing */
1563*5e7646d2SAndroid Build Coastguard Worker "print-scaling-default", /* IPP Paid Printing */
1564*5e7646d2SAndroid Build Coastguard Worker "print-scaling-supported", /* IPP Paid Printing */
1565*5e7646d2SAndroid Build Coastguard Worker "print-supports", /* IPP 3D */
1566*5e7646d2SAndroid Build Coastguard Worker "print-supports-default", /* IPP 3D */
1567*5e7646d2SAndroid Build Coastguard Worker "print-supports-supported", /* IPP 3D */
1568*5e7646d2SAndroid Build Coastguard Worker "printer-resolution",
1569*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-default",
1570*5e7646d2SAndroid Build Coastguard Worker "printer-resolution-supported",
1571*5e7646d2SAndroid Build Coastguard Worker "proof-print",
1572*5e7646d2SAndroid Build Coastguard Worker "proof-print-default",
1573*5e7646d2SAndroid Build Coastguard Worker "proof-print-supported",
1574*5e7646d2SAndroid Build Coastguard Worker "retry-interval", /* IPP FaxOut */
1575*5e7646d2SAndroid Build Coastguard Worker "retry-interval-default",
1576*5e7646d2SAndroid Build Coastguard Worker "retry-interval-supported",
1577*5e7646d2SAndroid Build Coastguard Worker "retry-timeout", /* IPP FaxOut */
1578*5e7646d2SAndroid Build Coastguard Worker "retry-timeout-default",
1579*5e7646d2SAndroid Build Coastguard Worker "retry-timeout-supported",
1580*5e7646d2SAndroid Build Coastguard Worker "save-disposition-supported",
1581*5e7646d2SAndroid Build Coastguard Worker "save-document-format-default",
1582*5e7646d2SAndroid Build Coastguard Worker "save-document-format-supported",
1583*5e7646d2SAndroid Build Coastguard Worker "save-location-default",
1584*5e7646d2SAndroid Build Coastguard Worker "save-location-supported",
1585*5e7646d2SAndroid Build Coastguard Worker "save-name-subdirectory-supported",
1586*5e7646d2SAndroid Build Coastguard Worker "save-name-supported",
1587*5e7646d2SAndroid Build Coastguard Worker "separator-sheets",
1588*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-default",
1589*5e7646d2SAndroid Build Coastguard Worker "separator-sheets-supported",
1590*5e7646d2SAndroid Build Coastguard Worker "sheet-collate",
1591*5e7646d2SAndroid Build Coastguard Worker "sheet-collate-default",
1592*5e7646d2SAndroid Build Coastguard Worker "sheet-collate-supported",
1593*5e7646d2SAndroid Build Coastguard Worker "sides",
1594*5e7646d2SAndroid Build Coastguard Worker "sides-default",
1595*5e7646d2SAndroid Build Coastguard Worker "sides-supported",
1596*5e7646d2SAndroid Build Coastguard Worker "stitching-locations-supported",
1597*5e7646d2SAndroid Build Coastguard Worker "stitching-offset-supported",
1598*5e7646d2SAndroid Build Coastguard Worker "x-image-position",
1599*5e7646d2SAndroid Build Coastguard Worker "x-image-position-default",
1600*5e7646d2SAndroid Build Coastguard Worker "x-image-position-supported",
1601*5e7646d2SAndroid Build Coastguard Worker "x-image-shift",
1602*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-default",
1603*5e7646d2SAndroid Build Coastguard Worker "x-image-shift-supported",
1604*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift",
1605*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-default",
1606*5e7646d2SAndroid Build Coastguard Worker "x-side1-image-shift-supported",
1607*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift",
1608*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-default",
1609*5e7646d2SAndroid Build Coastguard Worker "x-side2-image-shift-supported",
1610*5e7646d2SAndroid Build Coastguard Worker "y-image-position",
1611*5e7646d2SAndroid Build Coastguard Worker "y-image-position-default",
1612*5e7646d2SAndroid Build Coastguard Worker "y-image-position-supported",
1613*5e7646d2SAndroid Build Coastguard Worker "y-image-shift",
1614*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-default",
1615*5e7646d2SAndroid Build Coastguard Worker "y-image-shift-supported",
1616*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift",
1617*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-default",
1618*5e7646d2SAndroid Build Coastguard Worker "y-side1-image-shift-supported",
1619*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift",
1620*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-default",
1621*5e7646d2SAndroid Build Coastguard Worker "y-side2-image-shift-supported"
1622*5e7646d2SAndroid Build Coastguard Worker };
1623*5e7646d2SAndroid Build Coastguard Worker static const char * const printer_description[] =
1624*5e7646d2SAndroid Build Coastguard Worker { /* printer-description group */
1625*5e7646d2SAndroid Build Coastguard Worker "auth-info-required", /* CUPS extension */
1626*5e7646d2SAndroid Build Coastguard Worker "chamber-humidity-current", /* IPP 3D */
1627*5e7646d2SAndroid Build Coastguard Worker "chamber-temperature-current", /* IPP 3D */
1628*5e7646d2SAndroid Build Coastguard Worker "charset-configured",
1629*5e7646d2SAndroid Build Coastguard Worker "charset-supported",
1630*5e7646d2SAndroid Build Coastguard Worker "color-supported",
1631*5e7646d2SAndroid Build Coastguard Worker "compression-supported",
1632*5e7646d2SAndroid Build Coastguard Worker "device-service-count",
1633*5e7646d2SAndroid Build Coastguard Worker "device-uri", /* CUPS extension */
1634*5e7646d2SAndroid Build Coastguard Worker "device-uuid",
1635*5e7646d2SAndroid Build Coastguard Worker "document-charset-default",
1636*5e7646d2SAndroid Build Coastguard Worker "document-charset-supported",
1637*5e7646d2SAndroid Build Coastguard Worker "document-creation-attributes-supported",
1638*5e7646d2SAndroid Build Coastguard Worker "document-digital-signature-default",
1639*5e7646d2SAndroid Build Coastguard Worker "document-digital-signature-supported",
1640*5e7646d2SAndroid Build Coastguard Worker "document-format-default",
1641*5e7646d2SAndroid Build Coastguard Worker "document-format-details-default",
1642*5e7646d2SAndroid Build Coastguard Worker "document-format-details-supported",
1643*5e7646d2SAndroid Build Coastguard Worker "document-format-supported",
1644*5e7646d2SAndroid Build Coastguard Worker "document-format-varying-attributes",
1645*5e7646d2SAndroid Build Coastguard Worker "document-format-version-default",
1646*5e7646d2SAndroid Build Coastguard Worker "document-format-version-supported",
1647*5e7646d2SAndroid Build Coastguard Worker "document-natural-language-default",
1648*5e7646d2SAndroid Build Coastguard Worker "document-natural-language-supported",
1649*5e7646d2SAndroid Build Coastguard Worker "document-password-supported",
1650*5e7646d2SAndroid Build Coastguard Worker "document-privacy-attributes", /* IPP Privacy Attributes */
1651*5e7646d2SAndroid Build Coastguard Worker "document-privacy-scope", /* IPP Privacy Attributes */
1652*5e7646d2SAndroid Build Coastguard Worker "generated-natural-language-supported",
1653*5e7646d2SAndroid Build Coastguard Worker "identify-actions-default",
1654*5e7646d2SAndroid Build Coastguard Worker "identify-actions-supported",
1655*5e7646d2SAndroid Build Coastguard Worker "input-source-supported",
1656*5e7646d2SAndroid Build Coastguard Worker "ipp-features-supported",
1657*5e7646d2SAndroid Build Coastguard Worker "ipp-versions-supported",
1658*5e7646d2SAndroid Build Coastguard Worker "ippget-event-life",
1659*5e7646d2SAndroid Build Coastguard Worker "job-authorization-uri-supported", /* CUPS extension */
1660*5e7646d2SAndroid Build Coastguard Worker "job-constraints-supported",
1661*5e7646d2SAndroid Build Coastguard Worker "job-creation-attributes-supported",
1662*5e7646d2SAndroid Build Coastguard Worker "job-finishings-col-ready",
1663*5e7646d2SAndroid Build Coastguard Worker "job-finishings-ready",
1664*5e7646d2SAndroid Build Coastguard Worker "job-ids-supported",
1665*5e7646d2SAndroid Build Coastguard Worker "job-impressions-supported",
1666*5e7646d2SAndroid Build Coastguard Worker "job-k-limit", /* CUPS extension */
1667*5e7646d2SAndroid Build Coastguard Worker "job-k-octets-supported",
1668*5e7646d2SAndroid Build Coastguard Worker "job-media-sheets-supported",
1669*5e7646d2SAndroid Build Coastguard Worker "job-page-limit", /* CUPS extension */
1670*5e7646d2SAndroid Build Coastguard Worker "job-password-encryption-supported",
1671*5e7646d2SAndroid Build Coastguard Worker "job-password-supported",
1672*5e7646d2SAndroid Build Coastguard Worker "job-presets-supported", /* IPP Presets */
1673*5e7646d2SAndroid Build Coastguard Worker "job-privacy-attributes", /* IPP Privacy Attributes */
1674*5e7646d2SAndroid Build Coastguard Worker "job-privacy-scope", /* IPP Privacy Attributes */
1675*5e7646d2SAndroid Build Coastguard Worker "job-quota-period", /* CUPS extension */
1676*5e7646d2SAndroid Build Coastguard Worker "job-resolvers-supported",
1677*5e7646d2SAndroid Build Coastguard Worker "job-settable-attributes-supported",
1678*5e7646d2SAndroid Build Coastguard Worker "job-spooling-supported",
1679*5e7646d2SAndroid Build Coastguard Worker "job-triggers-supported", /* IPP Presets */
1680*5e7646d2SAndroid Build Coastguard Worker "jpeg-k-octets-supported", /* CUPS extension */
1681*5e7646d2SAndroid Build Coastguard Worker "jpeg-x-dimension-supported", /* CUPS extension */
1682*5e7646d2SAndroid Build Coastguard Worker "jpeg-y-dimension-supported", /* CUPS extension */
1683*5e7646d2SAndroid Build Coastguard Worker "landscape-orientation-requested-preferred",
1684*5e7646d2SAndroid Build Coastguard Worker /* CUPS extension */
1685*5e7646d2SAndroid Build Coastguard Worker "marker-change-time", /* CUPS extension */
1686*5e7646d2SAndroid Build Coastguard Worker "marker-colors", /* CUPS extension */
1687*5e7646d2SAndroid Build Coastguard Worker "marker-high-levels", /* CUPS extension */
1688*5e7646d2SAndroid Build Coastguard Worker "marker-levels", /* CUPS extension */
1689*5e7646d2SAndroid Build Coastguard Worker "marker-low-levels", /* CUPS extension */
1690*5e7646d2SAndroid Build Coastguard Worker "marker-message", /* CUPS extension */
1691*5e7646d2SAndroid Build Coastguard Worker "marker-names", /* CUPS extension */
1692*5e7646d2SAndroid Build Coastguard Worker "marker-types", /* CUPS extension */
1693*5e7646d2SAndroid Build Coastguard Worker "member-names", /* CUPS extension */
1694*5e7646d2SAndroid Build Coastguard Worker "member-uris", /* CUPS extension */
1695*5e7646d2SAndroid Build Coastguard Worker "multiple-destination-uris-supported",/* IPP FaxOut */
1696*5e7646d2SAndroid Build Coastguard Worker "multiple-document-jobs-supported",
1697*5e7646d2SAndroid Build Coastguard Worker "multiple-operation-time-out",
1698*5e7646d2SAndroid Build Coastguard Worker "multiple-operation-time-out-action",
1699*5e7646d2SAndroid Build Coastguard Worker "natural-language-configured",
1700*5e7646d2SAndroid Build Coastguard Worker "operations-supported",
1701*5e7646d2SAndroid Build Coastguard Worker "pages-per-minute",
1702*5e7646d2SAndroid Build Coastguard Worker "pages-per-minute-color",
1703*5e7646d2SAndroid Build Coastguard Worker "pdf-k-octets-supported", /* CUPS extension */
1704*5e7646d2SAndroid Build Coastguard Worker "pdf-features-supported", /* IPP 3D */
1705*5e7646d2SAndroid Build Coastguard Worker "pdf-versions-supported", /* CUPS extension */
1706*5e7646d2SAndroid Build Coastguard Worker "pdl-override-supported",
1707*5e7646d2SAndroid Build Coastguard Worker "platform-shape", /* IPP 3D */
1708*5e7646d2SAndroid Build Coastguard Worker "port-monitor", /* CUPS extension */
1709*5e7646d2SAndroid Build Coastguard Worker "port-monitor-supported", /* CUPS extension */
1710*5e7646d2SAndroid Build Coastguard Worker "preferred-attributes-supported",
1711*5e7646d2SAndroid Build Coastguard Worker "printer-alert",
1712*5e7646d2SAndroid Build Coastguard Worker "printer-alert-description",
1713*5e7646d2SAndroid Build Coastguard Worker "printer-camera-image-uri", /* IPP 3D */
1714*5e7646d2SAndroid Build Coastguard Worker "printer-charge-info",
1715*5e7646d2SAndroid Build Coastguard Worker "printer-charge-info-uri",
1716*5e7646d2SAndroid Build Coastguard Worker "printer-commands", /* CUPS extension */
1717*5e7646d2SAndroid Build Coastguard Worker "printer-config-change-date-time",
1718*5e7646d2SAndroid Build Coastguard Worker "printer-config-change-time",
1719*5e7646d2SAndroid Build Coastguard Worker "printer-config-changes", /* IPP System */
1720*5e7646d2SAndroid Build Coastguard Worker "printer-contact-col", /* IPP System */
1721*5e7646d2SAndroid Build Coastguard Worker "printer-current-time",
1722*5e7646d2SAndroid Build Coastguard Worker "printer-detailed-status-messages",
1723*5e7646d2SAndroid Build Coastguard Worker "printer-device-id",
1724*5e7646d2SAndroid Build Coastguard Worker "printer-dns-sd-name", /* CUPS extension */
1725*5e7646d2SAndroid Build Coastguard Worker "printer-driver-installer",
1726*5e7646d2SAndroid Build Coastguard Worker "printer-fax-log-uri", /* IPP FaxOut */
1727*5e7646d2SAndroid Build Coastguard Worker "printer-fax-modem-info", /* IPP FaxOut */
1728*5e7646d2SAndroid Build Coastguard Worker "printer-fax-modem-name", /* IPP FaxOut */
1729*5e7646d2SAndroid Build Coastguard Worker "printer-fax-modem-number", /* IPP FaxOut */
1730*5e7646d2SAndroid Build Coastguard Worker "printer-firmware-name", /* PWG 5110.1 */
1731*5e7646d2SAndroid Build Coastguard Worker "printer-firmware-patches", /* PWG 5110.1 */
1732*5e7646d2SAndroid Build Coastguard Worker "printer-firmware-string-version", /* PWG 5110.1 */
1733*5e7646d2SAndroid Build Coastguard Worker "printer-firmware-version", /* PWG 5110.1 */
1734*5e7646d2SAndroid Build Coastguard Worker "printer-geo-location",
1735*5e7646d2SAndroid Build Coastguard Worker "printer-get-attributes-supported",
1736*5e7646d2SAndroid Build Coastguard Worker "printer-icc-profiles",
1737*5e7646d2SAndroid Build Coastguard Worker "printer-icons",
1738*5e7646d2SAndroid Build Coastguard Worker "printer-id", /* IPP System */
1739*5e7646d2SAndroid Build Coastguard Worker "printer-info",
1740*5e7646d2SAndroid Build Coastguard Worker "printer-input-tray", /* IPP JPS3 */
1741*5e7646d2SAndroid Build Coastguard Worker "printer-is-accepting-jobs",
1742*5e7646d2SAndroid Build Coastguard Worker "printer-is-shared", /* CUPS extension */
1743*5e7646d2SAndroid Build Coastguard Worker "printer-is-temporary", /* CUPS extension */
1744*5e7646d2SAndroid Build Coastguard Worker "printer-kind", /* IPP Paid Printing */
1745*5e7646d2SAndroid Build Coastguard Worker "printer-location",
1746*5e7646d2SAndroid Build Coastguard Worker "printer-make-and-model",
1747*5e7646d2SAndroid Build Coastguard Worker "printer-mandatory-job-attributes",
1748*5e7646d2SAndroid Build Coastguard Worker "printer-message-date-time",
1749*5e7646d2SAndroid Build Coastguard Worker "printer-message-from-operator",
1750*5e7646d2SAndroid Build Coastguard Worker "printer-message-time",
1751*5e7646d2SAndroid Build Coastguard Worker "printer-more-info",
1752*5e7646d2SAndroid Build Coastguard Worker "printer-more-info-manufacturer",
1753*5e7646d2SAndroid Build Coastguard Worker "printer-name",
1754*5e7646d2SAndroid Build Coastguard Worker "printer-native-formats",
1755*5e7646d2SAndroid Build Coastguard Worker "printer-organization",
1756*5e7646d2SAndroid Build Coastguard Worker "printer-organizational-unit",
1757*5e7646d2SAndroid Build Coastguard Worker "printer-output-tray", /* IPP JPS3 */
1758*5e7646d2SAndroid Build Coastguard Worker "printer-service-type", /* IPP System */
1759*5e7646d2SAndroid Build Coastguard Worker "printer-settable-attributes-supported",
1760*5e7646d2SAndroid Build Coastguard Worker "printer-state",
1761*5e7646d2SAndroid Build Coastguard Worker "printer-state-change-date-time",
1762*5e7646d2SAndroid Build Coastguard Worker "printer-state-change-time",
1763*5e7646d2SAndroid Build Coastguard Worker "printer-state-message",
1764*5e7646d2SAndroid Build Coastguard Worker "printer-state-reasons",
1765*5e7646d2SAndroid Build Coastguard Worker "printer-supply",
1766*5e7646d2SAndroid Build Coastguard Worker "printer-supply-description",
1767*5e7646d2SAndroid Build Coastguard Worker "printer-supply-info-uri",
1768*5e7646d2SAndroid Build Coastguard Worker "printer-type", /* CUPS extension */
1769*5e7646d2SAndroid Build Coastguard Worker "printer-up-time",
1770*5e7646d2SAndroid Build Coastguard Worker "printer-uri-supported",
1771*5e7646d2SAndroid Build Coastguard Worker "printer-uuid",
1772*5e7646d2SAndroid Build Coastguard Worker "printer-xri-supported",
1773*5e7646d2SAndroid Build Coastguard Worker "pwg-raster-document-resolution-supported",
1774*5e7646d2SAndroid Build Coastguard Worker "pwg-raster-document-sheet-back",
1775*5e7646d2SAndroid Build Coastguard Worker "pwg-raster-document-type-supported",
1776*5e7646d2SAndroid Build Coastguard Worker "queued-job-count",
1777*5e7646d2SAndroid Build Coastguard Worker "reference-uri-schemes-supported",
1778*5e7646d2SAndroid Build Coastguard Worker "repertoire-supported",
1779*5e7646d2SAndroid Build Coastguard Worker "requesting-user-name-allowed", /* CUPS extension */
1780*5e7646d2SAndroid Build Coastguard Worker "requesting-user-name-denied", /* CUPS extension */
1781*5e7646d2SAndroid Build Coastguard Worker "requesting-user-uri-supported",
1782*5e7646d2SAndroid Build Coastguard Worker "smi2699-auth-print-group", /* PWG ippserver extension */
1783*5e7646d2SAndroid Build Coastguard Worker "smi2699-auth-proxy-group", /* PWG ippserver extension */
1784*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-command", /* PWG ippserver extension */
1785*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-format", /* PWG ippserver extension */
1786*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-name", /* PWG ippserver extension */
1787*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-uri", /* PWG ippserver extension */
1788*5e7646d2SAndroid Build Coastguard Worker "subordinate-printers-supported",
1789*5e7646d2SAndroid Build Coastguard Worker "subscription-privacy-attributes", /* IPP Privacy Attributes */
1790*5e7646d2SAndroid Build Coastguard Worker "subscription-privacy-scope", /* IPP Privacy Attributes */
1791*5e7646d2SAndroid Build Coastguard Worker "urf-supported", /* CUPS extension */
1792*5e7646d2SAndroid Build Coastguard Worker "uri-authentication-supported",
1793*5e7646d2SAndroid Build Coastguard Worker "uri-security-supported",
1794*5e7646d2SAndroid Build Coastguard Worker "user-defined-value-supported",
1795*5e7646d2SAndroid Build Coastguard Worker "which-jobs-supported",
1796*5e7646d2SAndroid Build Coastguard Worker "xri-authentication-supported",
1797*5e7646d2SAndroid Build Coastguard Worker "xri-security-supported",
1798*5e7646d2SAndroid Build Coastguard Worker "xri-uri-scheme-supported"
1799*5e7646d2SAndroid Build Coastguard Worker };
1800*5e7646d2SAndroid Build Coastguard Worker static const char * const resource_description[] =
1801*5e7646d2SAndroid Build Coastguard Worker { /* resource-description group - IPP System */
1802*5e7646d2SAndroid Build Coastguard Worker "resource-info",
1803*5e7646d2SAndroid Build Coastguard Worker "resource-name"
1804*5e7646d2SAndroid Build Coastguard Worker };
1805*5e7646d2SAndroid Build Coastguard Worker static const char * const resource_status[] =
1806*5e7646d2SAndroid Build Coastguard Worker { /* resource-status group - IPP System */
1807*5e7646d2SAndroid Build Coastguard Worker "date-time-at-canceled",
1808*5e7646d2SAndroid Build Coastguard Worker "date-time-at-creation",
1809*5e7646d2SAndroid Build Coastguard Worker "date-time-at-installed",
1810*5e7646d2SAndroid Build Coastguard Worker "resource-data-uri",
1811*5e7646d2SAndroid Build Coastguard Worker "resource-format",
1812*5e7646d2SAndroid Build Coastguard Worker "resource-id",
1813*5e7646d2SAndroid Build Coastguard Worker "resource-k-octets",
1814*5e7646d2SAndroid Build Coastguard Worker "resource-state",
1815*5e7646d2SAndroid Build Coastguard Worker "resource-state-message",
1816*5e7646d2SAndroid Build Coastguard Worker "resource-state-reasons",
1817*5e7646d2SAndroid Build Coastguard Worker "resource-string-version",
1818*5e7646d2SAndroid Build Coastguard Worker "resource-type",
1819*5e7646d2SAndroid Build Coastguard Worker "resource-use-count",
1820*5e7646d2SAndroid Build Coastguard Worker "resource-uuid",
1821*5e7646d2SAndroid Build Coastguard Worker "resource-version",
1822*5e7646d2SAndroid Build Coastguard Worker "time-at-canceled",
1823*5e7646d2SAndroid Build Coastguard Worker "time-at-creation",
1824*5e7646d2SAndroid Build Coastguard Worker "time-at-installed"
1825*5e7646d2SAndroid Build Coastguard Worker };
1826*5e7646d2SAndroid Build Coastguard Worker static const char * const resource_template[] =
1827*5e7646d2SAndroid Build Coastguard Worker { /* resource-template group - IPP System */
1828*5e7646d2SAndroid Build Coastguard Worker "resource-format",
1829*5e7646d2SAndroid Build Coastguard Worker "resource-format-supported",
1830*5e7646d2SAndroid Build Coastguard Worker "resource-info",
1831*5e7646d2SAndroid Build Coastguard Worker "resource-name",
1832*5e7646d2SAndroid Build Coastguard Worker "resource-type",
1833*5e7646d2SAndroid Build Coastguard Worker "resource-type-supported"
1834*5e7646d2SAndroid Build Coastguard Worker };
1835*5e7646d2SAndroid Build Coastguard Worker static const char * const subscription_description[] =
1836*5e7646d2SAndroid Build Coastguard Worker { /* subscription-description group */
1837*5e7646d2SAndroid Build Coastguard Worker "notify-job-id",
1838*5e7646d2SAndroid Build Coastguard Worker "notify-lease-expiration-time",
1839*5e7646d2SAndroid Build Coastguard Worker "notify-printer-up-time",
1840*5e7646d2SAndroid Build Coastguard Worker "notify-printer-uri",
1841*5e7646d2SAndroid Build Coastguard Worker "notify-resource-id", /* IPP System */
1842*5e7646d2SAndroid Build Coastguard Worker "notify-system-uri", /* IPP System */
1843*5e7646d2SAndroid Build Coastguard Worker "notify-sequence-number",
1844*5e7646d2SAndroid Build Coastguard Worker "notify-subscriber-user-name",
1845*5e7646d2SAndroid Build Coastguard Worker "notify-subscriber-user-uri",
1846*5e7646d2SAndroid Build Coastguard Worker "notify-subscription-id",
1847*5e7646d2SAndroid Build Coastguard Worker "notify-subscription-uuid" /* IPP JPS3 */
1848*5e7646d2SAndroid Build Coastguard Worker };
1849*5e7646d2SAndroid Build Coastguard Worker static const char * const subscription_template[] =
1850*5e7646d2SAndroid Build Coastguard Worker { /* subscription-template group */
1851*5e7646d2SAndroid Build Coastguard Worker "notify-attributes",
1852*5e7646d2SAndroid Build Coastguard Worker "notify-attributes-supported",
1853*5e7646d2SAndroid Build Coastguard Worker "notify-charset",
1854*5e7646d2SAndroid Build Coastguard Worker "notify-events",
1855*5e7646d2SAndroid Build Coastguard Worker "notify-events-default",
1856*5e7646d2SAndroid Build Coastguard Worker "notify-events-supported",
1857*5e7646d2SAndroid Build Coastguard Worker "notify-lease-duration",
1858*5e7646d2SAndroid Build Coastguard Worker "notify-lease-duration-default",
1859*5e7646d2SAndroid Build Coastguard Worker "notify-lease-duration-supported",
1860*5e7646d2SAndroid Build Coastguard Worker "notify-max-events-supported",
1861*5e7646d2SAndroid Build Coastguard Worker "notify-natural-language",
1862*5e7646d2SAndroid Build Coastguard Worker "notify-pull-method",
1863*5e7646d2SAndroid Build Coastguard Worker "notify-pull-method-supported",
1864*5e7646d2SAndroid Build Coastguard Worker "notify-recipient-uri",
1865*5e7646d2SAndroid Build Coastguard Worker "notify-schemes-supported",
1866*5e7646d2SAndroid Build Coastguard Worker "notify-time-interval",
1867*5e7646d2SAndroid Build Coastguard Worker "notify-user-data"
1868*5e7646d2SAndroid Build Coastguard Worker };
1869*5e7646d2SAndroid Build Coastguard Worker static const char * const system_description[] =
1870*5e7646d2SAndroid Build Coastguard Worker { /* system-description group - IPP System */
1871*5e7646d2SAndroid Build Coastguard Worker "charset-configured",
1872*5e7646d2SAndroid Build Coastguard Worker "charset-supported",
1873*5e7646d2SAndroid Build Coastguard Worker "generated-natural-language-supported",
1874*5e7646d2SAndroid Build Coastguard Worker "ipp-features-supported",
1875*5e7646d2SAndroid Build Coastguard Worker "ipp-versions-supported",
1876*5e7646d2SAndroid Build Coastguard Worker "natural-language-configured",
1877*5e7646d2SAndroid Build Coastguard Worker "operations-supported",
1878*5e7646d2SAndroid Build Coastguard Worker "power-calendar-policy-col",
1879*5e7646d2SAndroid Build Coastguard Worker "power-event-policy-col",
1880*5e7646d2SAndroid Build Coastguard Worker "power-timeout-policy-col",
1881*5e7646d2SAndroid Build Coastguard Worker "printer-creation-attributes-supported",
1882*5e7646d2SAndroid Build Coastguard Worker "resource-settable-attributes-supported",
1883*5e7646d2SAndroid Build Coastguard Worker "smi2699-auth-group-supported", /* PWG ippserver extension */
1884*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-command-supported", /* PWG ippserver extension */
1885*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-format-format", /* PWG ippserver extension */
1886*5e7646d2SAndroid Build Coastguard Worker "smi2699-device-uri-schemes-supported",
1887*5e7646d2SAndroid Build Coastguard Worker /* PWG ippserver extension */
1888*5e7646d2SAndroid Build Coastguard Worker "system-contact-col",
1889*5e7646d2SAndroid Build Coastguard Worker "system-current-time",
1890*5e7646d2SAndroid Build Coastguard Worker "system-default-printer-id",
1891*5e7646d2SAndroid Build Coastguard Worker "system-device-id",
1892*5e7646d2SAndroid Build Coastguard Worker "system-geo-location",
1893*5e7646d2SAndroid Build Coastguard Worker "system-info",
1894*5e7646d2SAndroid Build Coastguard Worker "system-location",
1895*5e7646d2SAndroid Build Coastguard Worker "system-mandatory-printer-attributes",
1896*5e7646d2SAndroid Build Coastguard Worker "system-make-and-model",
1897*5e7646d2SAndroid Build Coastguard Worker "system-message-from-operator",
1898*5e7646d2SAndroid Build Coastguard Worker "system-name",
1899*5e7646d2SAndroid Build Coastguard Worker "system-settable-attributes-supported",
1900*5e7646d2SAndroid Build Coastguard Worker "system-strings-languages-supported",
1901*5e7646d2SAndroid Build Coastguard Worker "system-strings-uri",
1902*5e7646d2SAndroid Build Coastguard Worker "system-xri-supported"
1903*5e7646d2SAndroid Build Coastguard Worker };
1904*5e7646d2SAndroid Build Coastguard Worker static const char * const system_status[] =
1905*5e7646d2SAndroid Build Coastguard Worker { /* system-status group - IPP System */
1906*5e7646d2SAndroid Build Coastguard Worker "power-log-col",
1907*5e7646d2SAndroid Build Coastguard Worker "power-state-capabilities-col",
1908*5e7646d2SAndroid Build Coastguard Worker "power-state-counters-col",
1909*5e7646d2SAndroid Build Coastguard Worker "power-state-monitor-col",
1910*5e7646d2SAndroid Build Coastguard Worker "power-state-transitions-col",
1911*5e7646d2SAndroid Build Coastguard Worker "system-config-change-date-time",
1912*5e7646d2SAndroid Build Coastguard Worker "system-config-change-time",
1913*5e7646d2SAndroid Build Coastguard Worker "system-config-changes",
1914*5e7646d2SAndroid Build Coastguard Worker "system-configured-printers",
1915*5e7646d2SAndroid Build Coastguard Worker "system-configured-resources",
1916*5e7646d2SAndroid Build Coastguard Worker "system-serial-number",
1917*5e7646d2SAndroid Build Coastguard Worker "system-state",
1918*5e7646d2SAndroid Build Coastguard Worker "system-state-change-date-time",
1919*5e7646d2SAndroid Build Coastguard Worker "system-state-change-time",
1920*5e7646d2SAndroid Build Coastguard Worker "system-state-message",
1921*5e7646d2SAndroid Build Coastguard Worker "system-state-reasons",
1922*5e7646d2SAndroid Build Coastguard Worker "system-up-time",
1923*5e7646d2SAndroid Build Coastguard Worker "system-uuid"
1924*5e7646d2SAndroid Build Coastguard Worker };
1925*5e7646d2SAndroid Build Coastguard Worker
1926*5e7646d2SAndroid Build Coastguard Worker
1927*5e7646d2SAndroid Build Coastguard Worker /*
1928*5e7646d2SAndroid Build Coastguard Worker * Get the requested-attributes attribute...
1929*5e7646d2SAndroid Build Coastguard Worker */
1930*5e7646d2SAndroid Build Coastguard Worker
1931*5e7646d2SAndroid Build Coastguard Worker op = ippGetOperation(request);
1932*5e7646d2SAndroid Build Coastguard Worker
1933*5e7646d2SAndroid Build Coastguard Worker if ((requested = ippFindAttribute(request, "requested-attributes", IPP_TAG_KEYWORD)) == NULL)
1934*5e7646d2SAndroid Build Coastguard Worker {
1935*5e7646d2SAndroid Build Coastguard Worker /*
1936*5e7646d2SAndroid Build Coastguard Worker * The Get-Jobs operation defaults to "job-id" and "job-uri", all others
1937*5e7646d2SAndroid Build Coastguard Worker * default to "all"...
1938*5e7646d2SAndroid Build Coastguard Worker */
1939*5e7646d2SAndroid Build Coastguard Worker
1940*5e7646d2SAndroid Build Coastguard Worker if (op == IPP_OP_GET_JOBS)
1941*5e7646d2SAndroid Build Coastguard Worker {
1942*5e7646d2SAndroid Build Coastguard Worker ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
1943*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, "job-id");
1944*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, "job-uri");
1945*5e7646d2SAndroid Build Coastguard Worker
1946*5e7646d2SAndroid Build Coastguard Worker return (ra);
1947*5e7646d2SAndroid Build Coastguard Worker }
1948*5e7646d2SAndroid Build Coastguard Worker else
1949*5e7646d2SAndroid Build Coastguard Worker return (NULL);
1950*5e7646d2SAndroid Build Coastguard Worker }
1951*5e7646d2SAndroid Build Coastguard Worker
1952*5e7646d2SAndroid Build Coastguard Worker /*
1953*5e7646d2SAndroid Build Coastguard Worker * If the attribute contains a single "all" keyword, return NULL...
1954*5e7646d2SAndroid Build Coastguard Worker */
1955*5e7646d2SAndroid Build Coastguard Worker
1956*5e7646d2SAndroid Build Coastguard Worker count = ippGetCount(requested);
1957*5e7646d2SAndroid Build Coastguard Worker if (count == 1 && !strcmp(ippGetString(requested, 0, NULL), "all"))
1958*5e7646d2SAndroid Build Coastguard Worker return (NULL);
1959*5e7646d2SAndroid Build Coastguard Worker
1960*5e7646d2SAndroid Build Coastguard Worker /*
1961*5e7646d2SAndroid Build Coastguard Worker * Create an array using "strcmp" as the comparison function...
1962*5e7646d2SAndroid Build Coastguard Worker */
1963*5e7646d2SAndroid Build Coastguard Worker
1964*5e7646d2SAndroid Build Coastguard Worker ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
1965*5e7646d2SAndroid Build Coastguard Worker
1966*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < count; i ++)
1967*5e7646d2SAndroid Build Coastguard Worker {
1968*5e7646d2SAndroid Build Coastguard Worker added = 0;
1969*5e7646d2SAndroid Build Coastguard Worker value = ippGetString(requested, i, NULL);
1970*5e7646d2SAndroid Build Coastguard Worker
1971*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "document-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_JOB_ATTRIBUTES || op == IPP_OP_GET_JOBS || op == IPP_OP_GET_DOCUMENT_ATTRIBUTES || op == IPP_OP_GET_DOCUMENTS)))
1972*5e7646d2SAndroid Build Coastguard Worker {
1973*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(document_description) / sizeof(document_description[0])); j ++)
1974*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)document_description[j]);
1975*5e7646d2SAndroid Build Coastguard Worker
1976*5e7646d2SAndroid Build Coastguard Worker added = 1;
1977*5e7646d2SAndroid Build Coastguard Worker }
1978*5e7646d2SAndroid Build Coastguard Worker
1979*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "document-template") || !strcmp(value, "all"))
1980*5e7646d2SAndroid Build Coastguard Worker {
1981*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(document_template) / sizeof(document_template[0])); j ++)
1982*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)document_template[j]);
1983*5e7646d2SAndroid Build Coastguard Worker
1984*5e7646d2SAndroid Build Coastguard Worker added = 1;
1985*5e7646d2SAndroid Build Coastguard Worker }
1986*5e7646d2SAndroid Build Coastguard Worker
1987*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "job-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_JOB_ATTRIBUTES || op == IPP_OP_GET_JOBS)))
1988*5e7646d2SAndroid Build Coastguard Worker {
1989*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(job_description) / sizeof(job_description[0])); j ++)
1990*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)job_description[j]);
1991*5e7646d2SAndroid Build Coastguard Worker
1992*5e7646d2SAndroid Build Coastguard Worker added = 1;
1993*5e7646d2SAndroid Build Coastguard Worker }
1994*5e7646d2SAndroid Build Coastguard Worker
1995*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "job-template") || (!strcmp(value, "all") && (op == IPP_OP_GET_JOB_ATTRIBUTES || op == IPP_OP_GET_JOBS || op == IPP_OP_GET_PRINTER_ATTRIBUTES)))
1996*5e7646d2SAndroid Build Coastguard Worker {
1997*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(job_template) / sizeof(job_template[0])); j ++)
1998*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)job_template[j]);
1999*5e7646d2SAndroid Build Coastguard Worker
2000*5e7646d2SAndroid Build Coastguard Worker added = 1;
2001*5e7646d2SAndroid Build Coastguard Worker }
2002*5e7646d2SAndroid Build Coastguard Worker
2003*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "printer-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_PRINTER_ATTRIBUTES || op == IPP_OP_GET_PRINTERS || op == IPP_OP_CUPS_GET_DEFAULT || op == IPP_OP_CUPS_GET_PRINTERS || op == IPP_OP_CUPS_GET_CLASSES)))
2004*5e7646d2SAndroid Build Coastguard Worker {
2005*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(printer_description) / sizeof(printer_description[0])); j ++)
2006*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)printer_description[j]);
2007*5e7646d2SAndroid Build Coastguard Worker
2008*5e7646d2SAndroid Build Coastguard Worker added = 1;
2009*5e7646d2SAndroid Build Coastguard Worker }
2010*5e7646d2SAndroid Build Coastguard Worker
2011*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "resource-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_RESOURCE_ATTRIBUTES || op == IPP_OP_GET_RESOURCES)))
2012*5e7646d2SAndroid Build Coastguard Worker {
2013*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(resource_description) / sizeof(resource_description[0])); j ++)
2014*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)resource_description[j]);
2015*5e7646d2SAndroid Build Coastguard Worker
2016*5e7646d2SAndroid Build Coastguard Worker added = 1;
2017*5e7646d2SAndroid Build Coastguard Worker }
2018*5e7646d2SAndroid Build Coastguard Worker
2019*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "resource-status") || (!strcmp(value, "all") && (op == IPP_OP_GET_RESOURCE_ATTRIBUTES || op == IPP_OP_GET_RESOURCES)))
2020*5e7646d2SAndroid Build Coastguard Worker {
2021*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(resource_status) / sizeof(resource_status[0])); j ++)
2022*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)resource_status[j]);
2023*5e7646d2SAndroid Build Coastguard Worker
2024*5e7646d2SAndroid Build Coastguard Worker added = 1;
2025*5e7646d2SAndroid Build Coastguard Worker }
2026*5e7646d2SAndroid Build Coastguard Worker
2027*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "resource-template") || (!strcmp(value, "all") && (op == IPP_OP_GET_RESOURCE_ATTRIBUTES || op == IPP_OP_GET_RESOURCES || op == IPP_OP_GET_SYSTEM_ATTRIBUTES)))
2028*5e7646d2SAndroid Build Coastguard Worker {
2029*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(resource_template) / sizeof(resource_template[0])); j ++)
2030*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)resource_template[j]);
2031*5e7646d2SAndroid Build Coastguard Worker
2032*5e7646d2SAndroid Build Coastguard Worker added = 1;
2033*5e7646d2SAndroid Build Coastguard Worker }
2034*5e7646d2SAndroid Build Coastguard Worker
2035*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "subscription-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES || op == IPP_OP_GET_SUBSCRIPTIONS)))
2036*5e7646d2SAndroid Build Coastguard Worker {
2037*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(subscription_description) / sizeof(subscription_description[0])); j ++)
2038*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)subscription_description[j]);
2039*5e7646d2SAndroid Build Coastguard Worker
2040*5e7646d2SAndroid Build Coastguard Worker added = 1;
2041*5e7646d2SAndroid Build Coastguard Worker }
2042*5e7646d2SAndroid Build Coastguard Worker
2043*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "subscription-template") || (!strcmp(value, "all") && (op == IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES || op == IPP_OP_GET_SUBSCRIPTIONS)))
2044*5e7646d2SAndroid Build Coastguard Worker {
2045*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(subscription_template) / sizeof(subscription_template[0])); j ++)
2046*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)subscription_template[j]);
2047*5e7646d2SAndroid Build Coastguard Worker
2048*5e7646d2SAndroid Build Coastguard Worker added = 1;
2049*5e7646d2SAndroid Build Coastguard Worker }
2050*5e7646d2SAndroid Build Coastguard Worker
2051*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "system-description") || (!strcmp(value, "all") && op == IPP_OP_GET_SYSTEM_ATTRIBUTES))
2052*5e7646d2SAndroid Build Coastguard Worker {
2053*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(system_description) / sizeof(system_description[0])); j ++)
2054*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)system_description[j]);
2055*5e7646d2SAndroid Build Coastguard Worker
2056*5e7646d2SAndroid Build Coastguard Worker added = 1;
2057*5e7646d2SAndroid Build Coastguard Worker }
2058*5e7646d2SAndroid Build Coastguard Worker
2059*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(value, "system-status") || (!strcmp(value, "all") && op == IPP_OP_GET_SYSTEM_ATTRIBUTES))
2060*5e7646d2SAndroid Build Coastguard Worker {
2061*5e7646d2SAndroid Build Coastguard Worker for (j = 0; j < (int)(sizeof(system_status) / sizeof(system_status[0])); j ++)
2062*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)system_status[j]);
2063*5e7646d2SAndroid Build Coastguard Worker
2064*5e7646d2SAndroid Build Coastguard Worker added = 1;
2065*5e7646d2SAndroid Build Coastguard Worker }
2066*5e7646d2SAndroid Build Coastguard Worker
2067*5e7646d2SAndroid Build Coastguard Worker if (!added)
2068*5e7646d2SAndroid Build Coastguard Worker cupsArrayAdd(ra, (void *)value);
2069*5e7646d2SAndroid Build Coastguard Worker }
2070*5e7646d2SAndroid Build Coastguard Worker
2071*5e7646d2SAndroid Build Coastguard Worker return (ra);
2072*5e7646d2SAndroid Build Coastguard Worker }
2073*5e7646d2SAndroid Build Coastguard Worker
2074*5e7646d2SAndroid Build Coastguard Worker
2075*5e7646d2SAndroid Build Coastguard Worker /*
2076*5e7646d2SAndroid Build Coastguard Worker * 'ippEnumString()' - Return a string corresponding to the enum value.
2077*5e7646d2SAndroid Build Coastguard Worker */
2078*5e7646d2SAndroid Build Coastguard Worker
2079*5e7646d2SAndroid Build Coastguard Worker const char * /* O - Enum string */
ippEnumString(const char * attrname,int enumvalue)2080*5e7646d2SAndroid Build Coastguard Worker ippEnumString(const char *attrname, /* I - Attribute name */
2081*5e7646d2SAndroid Build Coastguard Worker int enumvalue) /* I - Enum value */
2082*5e7646d2SAndroid Build Coastguard Worker {
2083*5e7646d2SAndroid Build Coastguard Worker _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
2084*5e7646d2SAndroid Build Coastguard Worker
2085*5e7646d2SAndroid Build Coastguard Worker
2086*5e7646d2SAndroid Build Coastguard Worker /*
2087*5e7646d2SAndroid Build Coastguard Worker * Check for standard enum values...
2088*5e7646d2SAndroid Build Coastguard Worker */
2089*5e7646d2SAndroid Build Coastguard Worker
2090*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(attrname, "document-state") && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]))))
2091*5e7646d2SAndroid Build Coastguard Worker return (ipp_document_states[enumvalue - 3]);
2092*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "finishings") || !strcmp(attrname, "finishings-actual") || !strcmp(attrname, "finishings-default") || !strcmp(attrname, "finishings-ready") || !strcmp(attrname, "finishings-supported") || !strcmp(attrname, "job-finishings") || !strcmp(attrname, "job-finishings-default") || !strcmp(attrname, "job-finishings-supported"))
2093*5e7646d2SAndroid Build Coastguard Worker {
2094*5e7646d2SAndroid Build Coastguard Worker if (enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]))))
2095*5e7646d2SAndroid Build Coastguard Worker return (ipp_finishings[enumvalue - 3]);
2096*5e7646d2SAndroid Build Coastguard Worker else if (enumvalue >= 0x40000000 && enumvalue < (0x40000000 + (int)(sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0]))))
2097*5e7646d2SAndroid Build Coastguard Worker return (ipp_finishings_vendor[enumvalue - 0x40000000]);
2098*5e7646d2SAndroid Build Coastguard Worker }
2099*5e7646d2SAndroid Build Coastguard Worker else if ((!strcmp(attrname, "job-collation-type") || !strcmp(attrname, "job-collation-type-actual")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_job_collation_types) / sizeof(ipp_job_collation_types[0]))))
2100*5e7646d2SAndroid Build Coastguard Worker return (ipp_job_collation_types[enumvalue - 3]);
2101*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "job-state") && enumvalue >= IPP_JSTATE_PENDING && enumvalue <= IPP_JSTATE_COMPLETED)
2102*5e7646d2SAndroid Build Coastguard Worker return (ipp_job_states[enumvalue - IPP_JSTATE_PENDING]);
2103*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "operations-supported"))
2104*5e7646d2SAndroid Build Coastguard Worker return (ippOpString((ipp_op_t)enumvalue));
2105*5e7646d2SAndroid Build Coastguard Worker else if ((!strcmp(attrname, "orientation-requested") || !strcmp(attrname, "orientation-requested-actual") || !strcmp(attrname, "orientation-requested-default") || !strcmp(attrname, "orientation-requested-supported")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_orientation_requesteds) / sizeof(ipp_orientation_requesteds[0]))))
2106*5e7646d2SAndroid Build Coastguard Worker return (ipp_orientation_requesteds[enumvalue - 3]);
2107*5e7646d2SAndroid Build Coastguard Worker else if ((!strcmp(attrname, "print-quality") || !strcmp(attrname, "print-quality-actual") || !strcmp(attrname, "print-quality-default") || !strcmp(attrname, "print-quality-supported")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]))))
2108*5e7646d2SAndroid Build Coastguard Worker return (ipp_print_qualities[enumvalue - 3]);
2109*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "printer-state") && enumvalue >= IPP_PSTATE_IDLE && enumvalue <= IPP_PSTATE_STOPPED)
2110*5e7646d2SAndroid Build Coastguard Worker return (ipp_printer_states[enumvalue - IPP_PSTATE_IDLE]);
2111*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "resource-state") && enumvalue >= IPP_RSTATE_PENDING && enumvalue <= IPP_RSTATE_ABORTED)
2112*5e7646d2SAndroid Build Coastguard Worker return (ipp_resource_states[enumvalue - IPP_RSTATE_PENDING]);
2113*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "system-state") && enumvalue >= IPP_SSTATE_IDLE && enumvalue <= IPP_SSTATE_STOPPED)
2114*5e7646d2SAndroid Build Coastguard Worker return (ipp_system_states[enumvalue - IPP_SSTATE_IDLE]);
2115*5e7646d2SAndroid Build Coastguard Worker
2116*5e7646d2SAndroid Build Coastguard Worker /*
2117*5e7646d2SAndroid Build Coastguard Worker * Not a standard enum value, just return the decimal equivalent...
2118*5e7646d2SAndroid Build Coastguard Worker */
2119*5e7646d2SAndroid Build Coastguard Worker
2120*5e7646d2SAndroid Build Coastguard Worker snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "%d", enumvalue);
2121*5e7646d2SAndroid Build Coastguard Worker return (cg->ipp_unknown);
2122*5e7646d2SAndroid Build Coastguard Worker }
2123*5e7646d2SAndroid Build Coastguard Worker
2124*5e7646d2SAndroid Build Coastguard Worker
2125*5e7646d2SAndroid Build Coastguard Worker /*
2126*5e7646d2SAndroid Build Coastguard Worker * 'ippEnumValue()' - Return the value associated with a given enum string.
2127*5e7646d2SAndroid Build Coastguard Worker */
2128*5e7646d2SAndroid Build Coastguard Worker
2129*5e7646d2SAndroid Build Coastguard Worker int /* O - Enum value or -1 if unknown */
ippEnumValue(const char * attrname,const char * enumstring)2130*5e7646d2SAndroid Build Coastguard Worker ippEnumValue(const char *attrname, /* I - Attribute name */
2131*5e7646d2SAndroid Build Coastguard Worker const char *enumstring) /* I - Enum string */
2132*5e7646d2SAndroid Build Coastguard Worker {
2133*5e7646d2SAndroid Build Coastguard Worker int i, /* Looping var */
2134*5e7646d2SAndroid Build Coastguard Worker num_strings; /* Number of strings to compare */
2135*5e7646d2SAndroid Build Coastguard Worker const char * const *strings; /* Strings to compare */
2136*5e7646d2SAndroid Build Coastguard Worker
2137*5e7646d2SAndroid Build Coastguard Worker
2138*5e7646d2SAndroid Build Coastguard Worker /*
2139*5e7646d2SAndroid Build Coastguard Worker * If the string is just a number, return it...
2140*5e7646d2SAndroid Build Coastguard Worker */
2141*5e7646d2SAndroid Build Coastguard Worker
2142*5e7646d2SAndroid Build Coastguard Worker if (isdigit(*enumstring & 255))
2143*5e7646d2SAndroid Build Coastguard Worker return ((int)strtol(enumstring, NULL, 0));
2144*5e7646d2SAndroid Build Coastguard Worker
2145*5e7646d2SAndroid Build Coastguard Worker /*
2146*5e7646d2SAndroid Build Coastguard Worker * Otherwise look up the string...
2147*5e7646d2SAndroid Build Coastguard Worker */
2148*5e7646d2SAndroid Build Coastguard Worker
2149*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(attrname, "document-state"))
2150*5e7646d2SAndroid Build Coastguard Worker {
2151*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]));
2152*5e7646d2SAndroid Build Coastguard Worker strings = ipp_document_states;
2153*5e7646d2SAndroid Build Coastguard Worker }
2154*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "finishings") ||
2155*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "finishings-actual") ||
2156*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "finishings-default") ||
2157*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "finishings-ready") ||
2158*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "finishings-supported"))
2159*5e7646d2SAndroid Build Coastguard Worker {
2160*5e7646d2SAndroid Build Coastguard Worker for (i = 0;
2161*5e7646d2SAndroid Build Coastguard Worker i < (int)(sizeof(ipp_finishings_vendor) /
2162*5e7646d2SAndroid Build Coastguard Worker sizeof(ipp_finishings_vendor[0]));
2163*5e7646d2SAndroid Build Coastguard Worker i ++)
2164*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(enumstring, ipp_finishings_vendor[i]))
2165*5e7646d2SAndroid Build Coastguard Worker return (i + 0x40000000);
2166*5e7646d2SAndroid Build Coastguard Worker
2167*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]));
2168*5e7646d2SAndroid Build Coastguard Worker strings = ipp_finishings;
2169*5e7646d2SAndroid Build Coastguard Worker }
2170*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "job-collation-type") ||
2171*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "job-collation-type-actual"))
2172*5e7646d2SAndroid Build Coastguard Worker {
2173*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_job_collation_types) /
2174*5e7646d2SAndroid Build Coastguard Worker sizeof(ipp_job_collation_types[0]));
2175*5e7646d2SAndroid Build Coastguard Worker strings = ipp_job_collation_types;
2176*5e7646d2SAndroid Build Coastguard Worker }
2177*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "job-state"))
2178*5e7646d2SAndroid Build Coastguard Worker {
2179*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_job_states) / sizeof(ipp_job_states[0]));
2180*5e7646d2SAndroid Build Coastguard Worker strings = ipp_job_states;
2181*5e7646d2SAndroid Build Coastguard Worker }
2182*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "operations-supported"))
2183*5e7646d2SAndroid Build Coastguard Worker return (ippOpValue(enumstring));
2184*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "orientation-requested") ||
2185*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "orientation-requested-actual") ||
2186*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "orientation-requested-default") ||
2187*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "orientation-requested-supported"))
2188*5e7646d2SAndroid Build Coastguard Worker {
2189*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_orientation_requesteds) /
2190*5e7646d2SAndroid Build Coastguard Worker sizeof(ipp_orientation_requesteds[0]));
2191*5e7646d2SAndroid Build Coastguard Worker strings = ipp_orientation_requesteds;
2192*5e7646d2SAndroid Build Coastguard Worker }
2193*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "print-quality") ||
2194*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "print-quality-actual") ||
2195*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "print-quality-default") ||
2196*5e7646d2SAndroid Build Coastguard Worker !strcmp(attrname, "print-quality-supported"))
2197*5e7646d2SAndroid Build Coastguard Worker {
2198*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]));
2199*5e7646d2SAndroid Build Coastguard Worker strings = ipp_print_qualities;
2200*5e7646d2SAndroid Build Coastguard Worker }
2201*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "printer-state"))
2202*5e7646d2SAndroid Build Coastguard Worker {
2203*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_printer_states) / sizeof(ipp_printer_states[0]));
2204*5e7646d2SAndroid Build Coastguard Worker strings = ipp_printer_states;
2205*5e7646d2SAndroid Build Coastguard Worker }
2206*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "resource-state"))
2207*5e7646d2SAndroid Build Coastguard Worker {
2208*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_resource_states) / sizeof(ipp_resource_states[0]));
2209*5e7646d2SAndroid Build Coastguard Worker strings = ipp_resource_states;
2210*5e7646d2SAndroid Build Coastguard Worker }
2211*5e7646d2SAndroid Build Coastguard Worker else if (!strcmp(attrname, "system-state"))
2212*5e7646d2SAndroid Build Coastguard Worker {
2213*5e7646d2SAndroid Build Coastguard Worker num_strings = (int)(sizeof(ipp_system_states) / sizeof(ipp_system_states[0]));
2214*5e7646d2SAndroid Build Coastguard Worker strings = ipp_system_states;
2215*5e7646d2SAndroid Build Coastguard Worker }
2216*5e7646d2SAndroid Build Coastguard Worker else
2217*5e7646d2SAndroid Build Coastguard Worker return (-1);
2218*5e7646d2SAndroid Build Coastguard Worker
2219*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < num_strings; i ++)
2220*5e7646d2SAndroid Build Coastguard Worker if (!strcmp(enumstring, strings[i]))
2221*5e7646d2SAndroid Build Coastguard Worker return (i + 3);
2222*5e7646d2SAndroid Build Coastguard Worker
2223*5e7646d2SAndroid Build Coastguard Worker return (-1);
2224*5e7646d2SAndroid Build Coastguard Worker }
2225*5e7646d2SAndroid Build Coastguard Worker
2226*5e7646d2SAndroid Build Coastguard Worker
2227*5e7646d2SAndroid Build Coastguard Worker /*
2228*5e7646d2SAndroid Build Coastguard Worker * 'ippErrorString()' - Return a name for the given status code.
2229*5e7646d2SAndroid Build Coastguard Worker */
2230*5e7646d2SAndroid Build Coastguard Worker
2231*5e7646d2SAndroid Build Coastguard Worker const char * /* O - Text string */
ippErrorString(ipp_status_t error)2232*5e7646d2SAndroid Build Coastguard Worker ippErrorString(ipp_status_t error) /* I - Error status */
2233*5e7646d2SAndroid Build Coastguard Worker {
2234*5e7646d2SAndroid Build Coastguard Worker _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
2235*5e7646d2SAndroid Build Coastguard Worker
2236*5e7646d2SAndroid Build Coastguard Worker
2237*5e7646d2SAndroid Build Coastguard Worker /*
2238*5e7646d2SAndroid Build Coastguard Worker * See if the error code is a known value...
2239*5e7646d2SAndroid Build Coastguard Worker */
2240*5e7646d2SAndroid Build Coastguard Worker
2241*5e7646d2SAndroid Build Coastguard Worker if (error >= IPP_STATUS_OK && error <= IPP_STATUS_OK_EVENTS_COMPLETE)
2242*5e7646d2SAndroid Build Coastguard Worker return (ipp_status_oks[error]);
2243*5e7646d2SAndroid Build Coastguard Worker else if (error == IPP_STATUS_REDIRECTION_OTHER_SITE)
2244*5e7646d2SAndroid Build Coastguard Worker return ("redirection-other-site");
2245*5e7646d2SAndroid Build Coastguard Worker else if (error == IPP_STATUS_CUPS_SEE_OTHER)
2246*5e7646d2SAndroid Build Coastguard Worker return ("cups-see-other");
2247*5e7646d2SAndroid Build Coastguard Worker else if (error >= IPP_STATUS_ERROR_BAD_REQUEST &&
2248*5e7646d2SAndroid Build Coastguard Worker error <= IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED)
2249*5e7646d2SAndroid Build Coastguard Worker return (ipp_status_400s[error - IPP_STATUS_ERROR_BAD_REQUEST]);
2250*5e7646d2SAndroid Build Coastguard Worker else if (error >= 0x480 &&
2251*5e7646d2SAndroid Build Coastguard Worker error <= IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
2252*5e7646d2SAndroid Build Coastguard Worker return (ipp_status_480s[error - 0x0480]);
2253*5e7646d2SAndroid Build Coastguard Worker else if (error >= IPP_STATUS_ERROR_INTERNAL &&
2254*5e7646d2SAndroid Build Coastguard Worker error <= IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS)
2255*5e7646d2SAndroid Build Coastguard Worker return (ipp_status_500s[error - IPP_STATUS_ERROR_INTERNAL]);
2256*5e7646d2SAndroid Build Coastguard Worker else if (error >= IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED &&
2257*5e7646d2SAndroid Build Coastguard Worker error <= IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED)
2258*5e7646d2SAndroid Build Coastguard Worker return (ipp_status_1000s[error -
2259*5e7646d2SAndroid Build Coastguard Worker IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED]);
2260*5e7646d2SAndroid Build Coastguard Worker
2261*5e7646d2SAndroid Build Coastguard Worker /*
2262*5e7646d2SAndroid Build Coastguard Worker * No, build an "0xxxxx" error string...
2263*5e7646d2SAndroid Build Coastguard Worker */
2264*5e7646d2SAndroid Build Coastguard Worker
2265*5e7646d2SAndroid Build Coastguard Worker snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", error);
2266*5e7646d2SAndroid Build Coastguard Worker
2267*5e7646d2SAndroid Build Coastguard Worker return (cg->ipp_unknown);
2268*5e7646d2SAndroid Build Coastguard Worker }
2269*5e7646d2SAndroid Build Coastguard Worker
2270*5e7646d2SAndroid Build Coastguard Worker
2271*5e7646d2SAndroid Build Coastguard Worker /*
2272*5e7646d2SAndroid Build Coastguard Worker * 'ippErrorValue()' - Return a status code for the given name.
2273*5e7646d2SAndroid Build Coastguard Worker *
2274*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.2/macOS 10.5@
2275*5e7646d2SAndroid Build Coastguard Worker */
2276*5e7646d2SAndroid Build Coastguard Worker
2277*5e7646d2SAndroid Build Coastguard Worker ipp_status_t /* O - IPP status code */
ippErrorValue(const char * name)2278*5e7646d2SAndroid Build Coastguard Worker ippErrorValue(const char *name) /* I - Name */
2279*5e7646d2SAndroid Build Coastguard Worker {
2280*5e7646d2SAndroid Build Coastguard Worker size_t i; /* Looping var */
2281*5e7646d2SAndroid Build Coastguard Worker
2282*5e7646d2SAndroid Build Coastguard Worker
2283*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_status_oks) / sizeof(ipp_status_oks[0])); i ++)
2284*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_status_oks[i]))
2285*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)i);
2286*5e7646d2SAndroid Build Coastguard Worker
2287*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "redirection-other-site"))
2288*5e7646d2SAndroid Build Coastguard Worker return (IPP_STATUS_REDIRECTION_OTHER_SITE);
2289*5e7646d2SAndroid Build Coastguard Worker
2290*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "cups-see-other"))
2291*5e7646d2SAndroid Build Coastguard Worker return (IPP_STATUS_CUPS_SEE_OTHER);
2292*5e7646d2SAndroid Build Coastguard Worker
2293*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_status_400s) / sizeof(ipp_status_400s[0])); i ++)
2294*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_status_400s[i]))
2295*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)(i + 0x400));
2296*5e7646d2SAndroid Build Coastguard Worker
2297*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_status_480s) / sizeof(ipp_status_480s[0])); i ++)
2298*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_status_480s[i]))
2299*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)(i + 0x480));
2300*5e7646d2SAndroid Build Coastguard Worker
2301*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_status_500s) / sizeof(ipp_status_500s[0])); i ++)
2302*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_status_500s[i]))
2303*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)(i + 0x500));
2304*5e7646d2SAndroid Build Coastguard Worker
2305*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_status_1000s) / sizeof(ipp_status_1000s[0])); i ++)
2306*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_status_1000s[i]))
2307*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)(i + 0x1000));
2308*5e7646d2SAndroid Build Coastguard Worker
2309*5e7646d2SAndroid Build Coastguard Worker return ((ipp_status_t)-1);
2310*5e7646d2SAndroid Build Coastguard Worker }
2311*5e7646d2SAndroid Build Coastguard Worker
2312*5e7646d2SAndroid Build Coastguard Worker
2313*5e7646d2SAndroid Build Coastguard Worker /*
2314*5e7646d2SAndroid Build Coastguard Worker * 'ippOpString()' - Return a name for the given operation id.
2315*5e7646d2SAndroid Build Coastguard Worker *
2316*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.2/macOS 10.5@
2317*5e7646d2SAndroid Build Coastguard Worker */
2318*5e7646d2SAndroid Build Coastguard Worker
2319*5e7646d2SAndroid Build Coastguard Worker const char * /* O - Name */
ippOpString(ipp_op_t op)2320*5e7646d2SAndroid Build Coastguard Worker ippOpString(ipp_op_t op) /* I - Operation ID */
2321*5e7646d2SAndroid Build Coastguard Worker {
2322*5e7646d2SAndroid Build Coastguard Worker _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
2323*5e7646d2SAndroid Build Coastguard Worker
2324*5e7646d2SAndroid Build Coastguard Worker
2325*5e7646d2SAndroid Build Coastguard Worker /*
2326*5e7646d2SAndroid Build Coastguard Worker * See if the operation ID is a known value...
2327*5e7646d2SAndroid Build Coastguard Worker */
2328*5e7646d2SAndroid Build Coastguard Worker
2329*5e7646d2SAndroid Build Coastguard Worker if (op >= IPP_OP_PRINT_JOB && op < (ipp_op_t)(sizeof(ipp_std_ops) / sizeof(ipp_std_ops[0])))
2330*5e7646d2SAndroid Build Coastguard Worker return (ipp_std_ops[op]);
2331*5e7646d2SAndroid Build Coastguard Worker else if (op == IPP_OP_PRIVATE)
2332*5e7646d2SAndroid Build Coastguard Worker return ("windows-ext");
2333*5e7646d2SAndroid Build Coastguard Worker else if (op >= IPP_OP_CUPS_GET_DEFAULT && op <= IPP_OP_CUPS_GET_PPD)
2334*5e7646d2SAndroid Build Coastguard Worker return (ipp_cups_ops[op - IPP_OP_CUPS_GET_DEFAULT]);
2335*5e7646d2SAndroid Build Coastguard Worker else if (op >= IPP_OP_CUPS_GET_DOCUMENT && op <= IPP_OP_CUPS_CREATE_LOCAL_PRINTER)
2336*5e7646d2SAndroid Build Coastguard Worker return (ipp_cups_ops2[op - IPP_OP_CUPS_GET_DOCUMENT]);
2337*5e7646d2SAndroid Build Coastguard Worker
2338*5e7646d2SAndroid Build Coastguard Worker /*
2339*5e7646d2SAndroid Build Coastguard Worker * No, build an "0xxxxx" operation string...
2340*5e7646d2SAndroid Build Coastguard Worker */
2341*5e7646d2SAndroid Build Coastguard Worker
2342*5e7646d2SAndroid Build Coastguard Worker snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", op);
2343*5e7646d2SAndroid Build Coastguard Worker
2344*5e7646d2SAndroid Build Coastguard Worker return (cg->ipp_unknown);
2345*5e7646d2SAndroid Build Coastguard Worker }
2346*5e7646d2SAndroid Build Coastguard Worker
2347*5e7646d2SAndroid Build Coastguard Worker
2348*5e7646d2SAndroid Build Coastguard Worker /*
2349*5e7646d2SAndroid Build Coastguard Worker * 'ippOpValue()' - Return an operation id for the given name.
2350*5e7646d2SAndroid Build Coastguard Worker *
2351*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.2/macOS 10.5@
2352*5e7646d2SAndroid Build Coastguard Worker */
2353*5e7646d2SAndroid Build Coastguard Worker
2354*5e7646d2SAndroid Build Coastguard Worker ipp_op_t /* O - Operation ID */
ippOpValue(const char * name)2355*5e7646d2SAndroid Build Coastguard Worker ippOpValue(const char *name) /* I - Textual name */
2356*5e7646d2SAndroid Build Coastguard Worker {
2357*5e7646d2SAndroid Build Coastguard Worker size_t i; /* Looping var */
2358*5e7646d2SAndroid Build Coastguard Worker
2359*5e7646d2SAndroid Build Coastguard Worker
2360*5e7646d2SAndroid Build Coastguard Worker if (!strncmp(name, "0x", 2))
2361*5e7646d2SAndroid Build Coastguard Worker return ((ipp_op_t)strtol(name + 2, NULL, 16));
2362*5e7646d2SAndroid Build Coastguard Worker
2363*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_std_ops) / sizeof(ipp_std_ops[0])); i ++)
2364*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_std_ops[i]))
2365*5e7646d2SAndroid Build Coastguard Worker return ((ipp_op_t)i);
2366*5e7646d2SAndroid Build Coastguard Worker
2367*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "windows-ext"))
2368*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_PRIVATE);
2369*5e7646d2SAndroid Build Coastguard Worker
2370*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_cups_ops) / sizeof(ipp_cups_ops[0])); i ++)
2371*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_cups_ops[i]))
2372*5e7646d2SAndroid Build Coastguard Worker return ((ipp_op_t)(i + 0x4001));
2373*5e7646d2SAndroid Build Coastguard Worker
2374*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_cups_ops2) / sizeof(ipp_cups_ops2[0])); i ++)
2375*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_cups_ops2[i]))
2376*5e7646d2SAndroid Build Coastguard Worker return ((ipp_op_t)(i + 0x4027));
2377*5e7646d2SAndroid Build Coastguard Worker
2378*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "Create-Job-Subscription"))
2379*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_CREATE_JOB_SUBSCRIPTIONS);
2380*5e7646d2SAndroid Build Coastguard Worker
2381*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "Create-Printer-Subscription"))
2382*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS);
2383*5e7646d2SAndroid Build Coastguard Worker
2384*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "CUPS-Add-Class"))
2385*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_CUPS_ADD_MODIFY_CLASS);
2386*5e7646d2SAndroid Build Coastguard Worker
2387*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "CUPS-Add-Printer"))
2388*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_CUPS_ADD_MODIFY_PRINTER);
2389*5e7646d2SAndroid Build Coastguard Worker
2390*5e7646d2SAndroid Build Coastguard Worker return (IPP_OP_CUPS_INVALID);
2391*5e7646d2SAndroid Build Coastguard Worker }
2392*5e7646d2SAndroid Build Coastguard Worker
2393*5e7646d2SAndroid Build Coastguard Worker
2394*5e7646d2SAndroid Build Coastguard Worker /*
2395*5e7646d2SAndroid Build Coastguard Worker * 'ippPort()' - Return the default IPP port number.
2396*5e7646d2SAndroid Build Coastguard Worker */
2397*5e7646d2SAndroid Build Coastguard Worker
2398*5e7646d2SAndroid Build Coastguard Worker int /* O - Port number */
ippPort(void)2399*5e7646d2SAndroid Build Coastguard Worker ippPort(void)
2400*5e7646d2SAndroid Build Coastguard Worker {
2401*5e7646d2SAndroid Build Coastguard Worker _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
2402*5e7646d2SAndroid Build Coastguard Worker
2403*5e7646d2SAndroid Build Coastguard Worker
2404*5e7646d2SAndroid Build Coastguard Worker DEBUG_puts("ippPort()");
2405*5e7646d2SAndroid Build Coastguard Worker
2406*5e7646d2SAndroid Build Coastguard Worker if (!cg->ipp_port)
2407*5e7646d2SAndroid Build Coastguard Worker _cupsSetDefaults();
2408*5e7646d2SAndroid Build Coastguard Worker
2409*5e7646d2SAndroid Build Coastguard Worker DEBUG_printf(("1ippPort: Returning %d...", cg->ipp_port));
2410*5e7646d2SAndroid Build Coastguard Worker
2411*5e7646d2SAndroid Build Coastguard Worker return (cg->ipp_port);
2412*5e7646d2SAndroid Build Coastguard Worker }
2413*5e7646d2SAndroid Build Coastguard Worker
2414*5e7646d2SAndroid Build Coastguard Worker
2415*5e7646d2SAndroid Build Coastguard Worker /*
2416*5e7646d2SAndroid Build Coastguard Worker * 'ippSetPort()' - Set the default port number.
2417*5e7646d2SAndroid Build Coastguard Worker */
2418*5e7646d2SAndroid Build Coastguard Worker
2419*5e7646d2SAndroid Build Coastguard Worker void
ippSetPort(int p)2420*5e7646d2SAndroid Build Coastguard Worker ippSetPort(int p) /* I - Port number to use */
2421*5e7646d2SAndroid Build Coastguard Worker {
2422*5e7646d2SAndroid Build Coastguard Worker DEBUG_printf(("ippSetPort(p=%d)", p));
2423*5e7646d2SAndroid Build Coastguard Worker
2424*5e7646d2SAndroid Build Coastguard Worker _cupsGlobals()->ipp_port = p;
2425*5e7646d2SAndroid Build Coastguard Worker }
2426*5e7646d2SAndroid Build Coastguard Worker
2427*5e7646d2SAndroid Build Coastguard Worker
2428*5e7646d2SAndroid Build Coastguard Worker /*
2429*5e7646d2SAndroid Build Coastguard Worker * 'ippStateString()' - Return the name corresponding to a state value.
2430*5e7646d2SAndroid Build Coastguard Worker *
2431*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 2.0/OS 10.10@
2432*5e7646d2SAndroid Build Coastguard Worker */
2433*5e7646d2SAndroid Build Coastguard Worker
2434*5e7646d2SAndroid Build Coastguard Worker const char * /* O - State name */
ippStateString(ipp_state_t state)2435*5e7646d2SAndroid Build Coastguard Worker ippStateString(ipp_state_t state) /* I - State value */
2436*5e7646d2SAndroid Build Coastguard Worker {
2437*5e7646d2SAndroid Build Coastguard Worker if (state >= IPP_STATE_ERROR && state <= IPP_STATE_DATA)
2438*5e7646d2SAndroid Build Coastguard Worker return (ipp_states[state - IPP_STATE_ERROR]);
2439*5e7646d2SAndroid Build Coastguard Worker else
2440*5e7646d2SAndroid Build Coastguard Worker return ("UNKNOWN");
2441*5e7646d2SAndroid Build Coastguard Worker }
2442*5e7646d2SAndroid Build Coastguard Worker
2443*5e7646d2SAndroid Build Coastguard Worker
2444*5e7646d2SAndroid Build Coastguard Worker /*
2445*5e7646d2SAndroid Build Coastguard Worker * 'ippTagString()' - Return the tag name corresponding to a tag value.
2446*5e7646d2SAndroid Build Coastguard Worker *
2447*5e7646d2SAndroid Build Coastguard Worker * The returned names are defined in RFC 8011 and the IANA IPP Registry.
2448*5e7646d2SAndroid Build Coastguard Worker *
2449*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.4/macOS 10.6@
2450*5e7646d2SAndroid Build Coastguard Worker */
2451*5e7646d2SAndroid Build Coastguard Worker
2452*5e7646d2SAndroid Build Coastguard Worker const char * /* O - Tag name */
ippTagString(ipp_tag_t tag)2453*5e7646d2SAndroid Build Coastguard Worker ippTagString(ipp_tag_t tag) /* I - Tag value */
2454*5e7646d2SAndroid Build Coastguard Worker {
2455*5e7646d2SAndroid Build Coastguard Worker tag &= IPP_TAG_CUPS_MASK;
2456*5e7646d2SAndroid Build Coastguard Worker
2457*5e7646d2SAndroid Build Coastguard Worker if (tag < (ipp_tag_t)(sizeof(ipp_tag_names) / sizeof(ipp_tag_names[0])))
2458*5e7646d2SAndroid Build Coastguard Worker return (ipp_tag_names[tag]);
2459*5e7646d2SAndroid Build Coastguard Worker else
2460*5e7646d2SAndroid Build Coastguard Worker return ("UNKNOWN");
2461*5e7646d2SAndroid Build Coastguard Worker }
2462*5e7646d2SAndroid Build Coastguard Worker
2463*5e7646d2SAndroid Build Coastguard Worker
2464*5e7646d2SAndroid Build Coastguard Worker /*
2465*5e7646d2SAndroid Build Coastguard Worker * 'ippTagValue()' - Return the tag value corresponding to a tag name.
2466*5e7646d2SAndroid Build Coastguard Worker *
2467*5e7646d2SAndroid Build Coastguard Worker * The tag names are defined in RFC 8011 and the IANA IPP Registry.
2468*5e7646d2SAndroid Build Coastguard Worker *
2469*5e7646d2SAndroid Build Coastguard Worker * @since CUPS 1.4/macOS 10.6@
2470*5e7646d2SAndroid Build Coastguard Worker */
2471*5e7646d2SAndroid Build Coastguard Worker
2472*5e7646d2SAndroid Build Coastguard Worker ipp_tag_t /* O - Tag value */
ippTagValue(const char * name)2473*5e7646d2SAndroid Build Coastguard Worker ippTagValue(const char *name) /* I - Tag name */
2474*5e7646d2SAndroid Build Coastguard Worker {
2475*5e7646d2SAndroid Build Coastguard Worker size_t i; /* Looping var */
2476*5e7646d2SAndroid Build Coastguard Worker
2477*5e7646d2SAndroid Build Coastguard Worker
2478*5e7646d2SAndroid Build Coastguard Worker for (i = 0; i < (sizeof(ipp_tag_names) / sizeof(ipp_tag_names[0])); i ++)
2479*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, ipp_tag_names[i]))
2480*5e7646d2SAndroid Build Coastguard Worker return ((ipp_tag_t)i);
2481*5e7646d2SAndroid Build Coastguard Worker
2482*5e7646d2SAndroid Build Coastguard Worker if (!_cups_strcasecmp(name, "operation"))
2483*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_OPERATION);
2484*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "job"))
2485*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_JOB);
2486*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "printer"))
2487*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_PRINTER);
2488*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "unsupported"))
2489*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_UNSUPPORTED_GROUP);
2490*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "subscription"))
2491*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_SUBSCRIPTION);
2492*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "event"))
2493*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_EVENT_NOTIFICATION);
2494*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "language"))
2495*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_LANGUAGE);
2496*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "mimetype"))
2497*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_MIMETYPE);
2498*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "name"))
2499*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_NAME);
2500*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "text"))
2501*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_TEXT);
2502*5e7646d2SAndroid Build Coastguard Worker else if (!_cups_strcasecmp(name, "begCollection"))
2503*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_BEGIN_COLLECTION);
2504*5e7646d2SAndroid Build Coastguard Worker else
2505*5e7646d2SAndroid Build Coastguard Worker return (IPP_TAG_ZERO);
2506*5e7646d2SAndroid Build Coastguard Worker }
2507*5e7646d2SAndroid Build Coastguard Worker
2508*5e7646d2SAndroid Build Coastguard Worker
2509*5e7646d2SAndroid Build Coastguard Worker /*
2510*5e7646d2SAndroid Build Coastguard Worker * 'ipp_col_string()' - Convert a collection to a string.
2511*5e7646d2SAndroid Build Coastguard Worker */
2512*5e7646d2SAndroid Build Coastguard Worker
2513*5e7646d2SAndroid Build Coastguard Worker static size_t /* O - Number of bytes */
ipp_col_string(ipp_t * col,char * buffer,size_t bufsize)2514*5e7646d2SAndroid Build Coastguard Worker ipp_col_string(ipp_t *col, /* I - Collection attribute */
2515*5e7646d2SAndroid Build Coastguard Worker char *buffer, /* I - Buffer or NULL */
2516*5e7646d2SAndroid Build Coastguard Worker size_t bufsize) /* I - Size of buffer */
2517*5e7646d2SAndroid Build Coastguard Worker {
2518*5e7646d2SAndroid Build Coastguard Worker char *bufptr, /* Position in buffer */
2519*5e7646d2SAndroid Build Coastguard Worker *bufend, /* End of buffer */
2520*5e7646d2SAndroid Build Coastguard Worker prefix = '{', /* Prefix character */
2521*5e7646d2SAndroid Build Coastguard Worker temp[256]; /* Temporary string */
2522*5e7646d2SAndroid Build Coastguard Worker ipp_attribute_t *attr; /* Current member attribute */
2523*5e7646d2SAndroid Build Coastguard Worker
2524*5e7646d2SAndroid Build Coastguard Worker
2525*5e7646d2SAndroid Build Coastguard Worker if (!col)
2526*5e7646d2SAndroid Build Coastguard Worker {
2527*5e7646d2SAndroid Build Coastguard Worker if (buffer)
2528*5e7646d2SAndroid Build Coastguard Worker *buffer = '\0';
2529*5e7646d2SAndroid Build Coastguard Worker
2530*5e7646d2SAndroid Build Coastguard Worker return (0);
2531*5e7646d2SAndroid Build Coastguard Worker }
2532*5e7646d2SAndroid Build Coastguard Worker
2533*5e7646d2SAndroid Build Coastguard Worker bufptr = buffer;
2534*5e7646d2SAndroid Build Coastguard Worker bufend = buffer + bufsize - 1;
2535*5e7646d2SAndroid Build Coastguard Worker
2536*5e7646d2SAndroid Build Coastguard Worker for (attr = col->attrs; attr; attr = attr->next)
2537*5e7646d2SAndroid Build Coastguard Worker {
2538*5e7646d2SAndroid Build Coastguard Worker if (!attr->name)
2539*5e7646d2SAndroid Build Coastguard Worker continue;
2540*5e7646d2SAndroid Build Coastguard Worker
2541*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
2542*5e7646d2SAndroid Build Coastguard Worker *bufptr = prefix;
2543*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
2544*5e7646d2SAndroid Build Coastguard Worker prefix = ' ';
2545*5e7646d2SAndroid Build Coastguard Worker
2546*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
2547*5e7646d2SAndroid Build Coastguard Worker bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%s=", attr->name);
2548*5e7646d2SAndroid Build Coastguard Worker else
2549*5e7646d2SAndroid Build Coastguard Worker bufptr += strlen(attr->name) + 1;
2550*5e7646d2SAndroid Build Coastguard Worker
2551*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
2552*5e7646d2SAndroid Build Coastguard Worker bufptr += ippAttributeString(attr, bufptr, (size_t)(bufend - bufptr + 1));
2553*5e7646d2SAndroid Build Coastguard Worker else
2554*5e7646d2SAndroid Build Coastguard Worker bufptr += ippAttributeString(attr, temp, sizeof(temp));
2555*5e7646d2SAndroid Build Coastguard Worker }
2556*5e7646d2SAndroid Build Coastguard Worker
2557*5e7646d2SAndroid Build Coastguard Worker if (prefix == '{')
2558*5e7646d2SAndroid Build Coastguard Worker {
2559*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
2560*5e7646d2SAndroid Build Coastguard Worker *bufptr = prefix;
2561*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
2562*5e7646d2SAndroid Build Coastguard Worker }
2563*5e7646d2SAndroid Build Coastguard Worker
2564*5e7646d2SAndroid Build Coastguard Worker if (buffer && bufptr < bufend)
2565*5e7646d2SAndroid Build Coastguard Worker *bufptr = '}';
2566*5e7646d2SAndroid Build Coastguard Worker bufptr ++;
2567*5e7646d2SAndroid Build Coastguard Worker
2568*5e7646d2SAndroid Build Coastguard Worker return ((size_t)(bufptr - buffer));
2569*5e7646d2SAndroid Build Coastguard Worker }
2570