// Local globals...
//
-static const char * const ipp_states[] =
- {
- "IPP_STATE_ERROR",
- "IPP_STATE_IDLE",
- "IPP_STATE_HEADER",
- "IPP_STATE_ATTRIBUTE",
- "IPP_STATE_DATA"
- };
-static const char * const ipp_status_oks[] = // "OK" status codes
- { // (name) = abandoned standard value
- "successful-ok",
- "successful-ok-ignored-or-substituted-attributes",
- "successful-ok-conflicting-attributes",
- "successful-ok-ignored-subscriptions",
- "(successful-ok-ignored-notifications)",
- "successful-ok-too-many-events",
- "(successful-ok-but-cancel-subscription)",
- "successful-ok-events-complete"
- },
- * const ipp_status_400s[] = // Client errors
- { // (name) = abandoned standard value
- "client-error-bad-request",
- "client-error-forbidden",
- "client-error-not-authenticated",
- "client-error-not-authorized",
- "client-error-not-possible",
- "client-error-timeout",
- "client-error-not-found",
- "client-error-gone",
- "client-error-request-entity-too-large",
- "client-error-request-value-too-long",
- "client-error-document-format-not-supported",
- "client-error-attributes-or-values-not-supported",
- "client-error-uri-scheme-not-supported",
- "client-error-charset-not-supported",
- "client-error-conflicting-attributes",
- "client-error-compression-not-supported",
- "client-error-compression-error",
- "client-error-document-format-error",
- "client-error-document-access-error",
- "client-error-attributes-not-settable",
- "client-error-ignored-all-subscriptions",
- "client-error-too-many-subscriptions",
- "(client-error-ignored-all-notifications)",
- "(client-error-client-print-support-file-not-found)",
- "client-error-document-password-error",
- "client-error-document-permission-error",
- "client-error-document-security-error",
- "client-error-document-unprintable-error",
- "client-error-account-info-needed",
- "client-error-account-closed",
- "client-error-account-limit-reached",
- "client-error-account-authorization-failed",
- "client-error-not-fetchable"
- },
- * const ipp_status_480s[] = // Vendor client errors
- {
- // 0x0480 - 0x048F
- "0x0480",
- "0x0481",
- "0x0482",
- "0x0483",
- "0x0484",
- "0x0485",
- "0x0486",
- "0x0487",
- "0x0488",
- "0x0489",
- "0x048A",
- "0x048B",
- "0x048C",
- "0x048D",
- "0x048E",
- "0x048F",
- // 0x0490 - 0x049F
- "0x0490",
- "0x0491",
- "0x0492",
- "0x0493",
- "0x0494",
- "0x0495",
- "0x0496",
- "0x0497",
- "0x0498",
- "0x0499",
- "0x049A",
- "0x049B",
- "cups-error-account-info-needed",
- "cups-error-account-closed",
- "cups-error-account-limit-reached",
- "cups-error-account-authorization-failed"
- },
- * const ipp_status_500s[] = // Server errors
- {
- "server-error-internal-error",
- "server-error-operation-not-supported",
- "server-error-service-unavailable",
- "server-error-version-not-supported",
- "server-error-device-error",
- "server-error-temporary-error",
- "server-error-not-accepting-jobs",
- "server-error-busy",
- "server-error-job-canceled",
- "server-error-multiple-document-jobs-not-supported",
- "server-error-printer-is-deactivated",
- "server-error-too-many-jobs",
- "server-error-too-many-documents"
- },
- * const ipp_status_1000s[] = // CUPS internal
- {
- "cups-authentication-canceled",
- "cups-pki-error",
- "cups-upgrade-required",
- "cups-oauth"
- };
+static const char * const ipp_states[] =// ipp_state_t strings
+{
+ "IPP_STATE_ERROR",
+ "IPP_STATE_IDLE",
+ "IPP_STATE_HEADER",
+ "IPP_STATE_ATTRIBUTE",
+ "IPP_STATE_DATA"
+};
+static const char * const ipp_status_oks[] =
+{ // "OK" status codes; (name) = abandoned
+ "successful-ok",
+ "successful-ok-ignored-or-substituted-attributes",
+ "successful-ok-conflicting-attributes",
+ "successful-ok-ignored-subscriptions",
+ "(successful-ok-ignored-notifications)",
+ "successful-ok-too-many-events",
+ "(successful-ok-but-cancel-subscription)",
+ "successful-ok-events-complete"
+};
+static const char * const ipp_status_400s[] =
+{ // Client errors; (name) = abandoned
+ "client-error-bad-request",
+ "client-error-forbidden",
+ "client-error-not-authenticated",
+ "client-error-not-authorized",
+ "client-error-not-possible",
+ "client-error-timeout",
+ "client-error-not-found",
+ "client-error-gone",
+ "client-error-request-entity-too-large",
+ "client-error-request-value-too-long",
+ "client-error-document-format-not-supported",
+ "client-error-attributes-or-values-not-supported",
+ "client-error-uri-scheme-not-supported",
+ "client-error-charset-not-supported",
+ "client-error-conflicting-attributes",
+ "client-error-compression-not-supported",
+ "client-error-compression-error",
+ "client-error-document-format-error",
+ "client-error-document-access-error",
+ "client-error-attributes-not-settable",
+ "client-error-ignored-all-subscriptions",
+ "client-error-too-many-subscriptions",
+ "(client-error-ignored-all-notifications)",
+ "(client-error-client-print-support-file-not-found)",
+ "client-error-document-password-error",
+ "client-error-document-permission-error",
+ "client-error-document-security-error",
+ "client-error-document-unprintable-error",
+ "client-error-account-info-needed",
+ "client-error-account-closed",
+ "client-error-account-limit-reached",
+ "client-error-account-authorization-failed",
+ "client-error-not-fetchable"
+};
+static const char * const ipp_status_500s[] =
+{ // Server errors
+ "server-error-internal-error",
+ "server-error-operation-not-supported",
+ "server-error-service-unavailable",
+ "server-error-version-not-supported",
+ "server-error-device-error",
+ "server-error-temporary-error",
+ "server-error-not-accepting-jobs",
+ "server-error-busy",
+ "server-error-job-canceled",
+ "server-error-multiple-document-jobs-not-supported",
+ "server-error-printer-is-deactivated",
+ "server-error-too-many-jobs",
+ "server-error-too-many-documents"
+};
+static const char * const ipp_status_1000s[] =
+{ // CUPS internal errors
+ "cups-authentication-canceled",
+ "cups-pki-error",
+ "cups-upgrade-required",
+ "cups-oauth"
+};
static const char * const ipp_std_ops[] =
- {
- // 0x0000 - 0x000f
- "0x0000",
- "0x0001",
- "Print-Job", // RFC 8011
- "Print-URI", // RFC 8011
- "Validate-Job", // RFC 8011
- "Create-Job", // RFC 8011
- "Send-Document", // RFC 8011
- "Send-URI", // RFC 8011
- "Cancel-Job", // RFC 8011
- "Get-Job-Attributes", // RFC 8011
- "Get-Jobs", // RFC 8011
- "Get-Printer-Attributes", // RFC 8011
- "Hold-Job", // RFC 8011
- "Release-Job", // RFC 8011
- "Restart-Job", // RFC 8011
- "0x000f",
-
- // 0x0010 - 0x001f
- "Pause-Printer", // RFC 8011
- "Resume-Printer", // RFC 8011
- "Purge-Jobs", // RFC 8011
- "Set-Printer-Attributes", // RFC 3380
- "Set-Job-Attributes", // RFC 3380
- "Get-Printer-Supported-Values",// RFC 3380
- "Create-Printer-Subscriptions",// RFC 3995
- "Create-Job-Subscriptions", // RFC 3995
- "Get-Subscription-Attributes",// RFC 3995
- "Get-Subscriptions", // RFC 3995
- "Renew-Subscription", // RFC 3995
- "Cancel-Subscription", // RFC 3995
- "Get-Notifications", // RFC 3996
- "(Send-Notifications)",
- "Get-Resource-Attributes", // IPP System
- "(Get-Resource-Data)",
-
- // 0x0020 - 0x002f
- "Get-Resources", // IPP System
- "(Get-Printer-Support-Files)",
- "Enable-Printer", // RFC 3998
- "Disable-Printer", // RFC 3998
- "Pause-Printer-After-Current-Job",// RFC 3998
- "Hold-New-Jobs", // RFC 3998
- "Release-Held-New-Jobs", // RFC 3998
- "Deactivate-Printer", // RFC 3998
- "Activate-Printer", // RFC 3998
- "Restart-Printer", // RFC 3998
- "Shutdown-Printer", // RFC 3998
- "Startup-Printer", // RFC 3998
- "Reprocess-Job", // RFC 3998
- "Cancel-Current-Job", // RFC 3998
- "Suspend-Current-Job", // RFC 3998
- "Resume-Job", // RFC 3998
-
- // 0x0030 - 0x003f
- "Promote-Job", // RFC 3998
- "Schedule-Job-After", // RFC 3998
- "0x0032",
- "Cancel-Document", // IPP DocObject
- "Get-Document-Attributes", // IPP DocObject
- "Get-Documents", // IPP DocObject
- "Delete-Document", // IPP DocObject
- "Set-Document-Attributes", // IPP DocObject
- "Cancel-Jobs", // IPP JPS2
- "Cancel-My-Jobs", // IPP JPS2
- "Resubmit-Job", // IPP JPS2
- "Close-Job", // IPP JPS2
- "Identify-Printer", // IPP JPS3
- "Validate-Document", // IPP JPS3
- "Add-Document-Images", // IPP Scan
- "Acknowledge-Document", // IPP INFRA
-
- // 0x0040 - 0x004f
- "Acknowledge-Identify-Printer",// IPP INFRA
- "Acknowledge-Job", // IPP INFRA
- "Fetch-Document", // IPP INFRA
- "Fetch-Job", // IPP INFRA
- "Get-Output-Device-Attributes",// IPP INFRA
- "Update-Active-Jobs", // IPP INFRA
- "Deregister-Output-Device", // IPP INFRA
- "Update-Document-Status", // IPP INFRA
- "Update-Job-Status", // IPP INFRA
- "Update-Output-Device-Attributes",// IPP INFRA
- "Get-Next-Document-Data", // IPP Scan
- "Allocate-Printer-Resources", // IPP System
- "Create-Printer", // IPP System
- "Deallocate-Printer-Resources",// IPP System
- "Delete-Printer", // IPP System
- "Get-Printers", // IPP System
-
- // 0x0050 - 0x005f
- "Shutdown-One-Printer", // IPP System
- "Startup-One-Printer", // IPP System
- "Cancel-Resource", // IPP System
- "Create-Resource", // IPP System
- "Install-Resource", // IPP System
- "Send-Resource-Data", // IPP System
- "Set-Resource-Attributes", // IPP System
- "Create-Resource-Subscriptions",// IPP System
- "Create-System-Subscriptions",// IPP System
- "Disable-All-Printers", // IPP System
- "Enable-All-Printers", // IPP System
- "Get-System-Attributes", // IPP System
- "Get-System-Supported-Values",// IPP System
- "Pause-All-Printers", // IPP System
- "Pause-All-Printers-After-Current-Job",// IPP System
- "Register-Output-Device", // IPP System
-
- // 0x0060 - 0x0064
- "Restart-System", // IPP System
- "Resume-All-Printers", // IPP System
- "Set-System-Attributes", // IPP System
- "Shutdown-All-Printers", // IPP System
- "Startup-All-Printers" // IPP System
- },
- * const ipp_cups_ops[] =
- {
- "CUPS-Get-Default",
- "CUPS-Get-Printers",
- "CUPS-Add-Modify-Printer",
- "CUPS-Delete-Printer",
- "CUPS-Get-Classes",
- "CUPS-Add-Modify-Class",
- "CUPS-Delete-Class",
- "CUPS-Accept-Jobs",
- "CUPS-Reject-Jobs",
- "CUPS-Set-Default",
- "CUPS-Get-Devices",
- "CUPS-Get-PPDs",
- "CUPS-Move-Job",
- "CUPS-Authenticate-Job",
- "CUPS-Get-PPD"
- },
- * const ipp_cups_ops2[] =
- {
- "CUPS-Get-Document",
- "CUPS-Create-Local-Printer"
- },
- * const ipp_tag_names[] =
- { // Value/group tag names
- "zero", // 0x00
- "operation-attributes-tag",
- // 0x01
- "job-attributes-tag", // 0x02
- "end-of-attributes-tag",
- // 0x03
- "printer-attributes-tag",
- // 0x04
- "unsupported-attributes-tag",
- // 0x05
- "subscription-attributes-tag",
- // 0x06 - RFC 3995
- "event-notification-attributes-tag",
- // 0x07 - RFC 3995
- "resource-attributes-tag",
- // 0x08 - IPP System
- "document-attributes-tag",
- // 0x09 - IPP DocObject
- "system-attributes-tag",
- // 0x0a - IPP System
- "0x0b", // 0x0b
- "0x0c", // 0x0c
- "0x0d", // 0x0d
- "0x0e", // 0x0e
- "0x0f", // 0x0f
- "unsupported", // 0x10
- "default", // 0x11
- "unknown", // 0x12
- "no-value", // 0x13
- "0x14", // 0x14
- "not-settable", // 0x15 - RFC 3380
- "delete-attribute", // 0x16 - RFC 3380
- "admin-define", // 0x17 - RFC 3380
- "0x18", // 0x18
- "0x19", // 0x19
- "0x1a", // 0x1a
- "0x1b", // 0x1b
- "0x1c", // 0x1c
- "0x1d", // 0x1d
- "0x1e", // 0x1e
- "0x1f", // 0x1f
- "0x20", // 0x20
- "integer", // 0x21
- "boolean", // 0x22
- "enum", // 0x23
- "0x24", // 0x24
- "0x25", // 0x25
- "0x26", // 0x26
- "0x27", // 0x27
- "0x28", // 0x28
- "0x29", // 0x29
- "0x2a", // 0x2a
- "0x2b", // 0x2b
- "0x2c", // 0x2c
- "0x2d", // 0x2d
- "0x2e", // 0x2e
- "0x2f", // 0x2f
- "octetString", // 0x30
- "dateTime", // 0x31
- "resolution", // 0x32
- "rangeOfInteger", // 0x33
- "collection", // 0x34
- "textWithLanguage", // 0x35
- "nameWithLanguage", // 0x36
- "endCollection", // 0x37
- "0x38", // 0x38
- "0x39", // 0x39
- "0x3a", // 0x3a
- "0x3b", // 0x3b
- "0x3c", // 0x3c
- "0x3d", // 0x3d
- "0x3e", // 0x3e
- "0x3f", // 0x3f
- "0x40", // 0x40
- "textWithoutLanguage",// 0x41
- "nameWithoutLanguage",// 0x42
- "0x43", // 0x43
- "keyword", // 0x44
- "uri", // 0x45
- "uriScheme", // 0x46
- "charset", // 0x47
- "naturalLanguage", // 0x48
- "mimeMediaType", // 0x49
- "memberAttrName" // 0x4a
- };
+{
+ // 0x0000 - 0x000f
+ "0x0000",
+ "0x0001",
+ "Print-Job", // RFC 8011
+ "Print-URI", // RFC 8011
+ "Validate-Job", // RFC 8011
+ "Create-Job", // RFC 8011
+ "Send-Document", // RFC 8011
+ "Send-URI", // RFC 8011
+ "Cancel-Job", // RFC 8011
+ "Get-Job-Attributes", // RFC 8011
+ "Get-Jobs", // RFC 8011
+ "Get-Printer-Attributes", // RFC 8011
+ "Hold-Job", // RFC 8011
+ "Release-Job", // RFC 8011
+ "Restart-Job", // RFC 8011
+ "0x000f",
+
+ // 0x0010 - 0x001f
+ "Pause-Printer", // RFC 8011
+ "Resume-Printer", // RFC 8011
+ "Purge-Jobs", // RFC 8011
+ "Set-Printer-Attributes", // RFC 3380
+ "Set-Job-Attributes", // RFC 3380
+ "Get-Printer-Supported-Values", // RFC 3380
+ "Create-Printer-Subscriptions", // RFC 3995
+ "Create-Job-Subscriptions", // RFC 3995
+ "Get-Subscription-Attributes", // RFC 3995
+ "Get-Subscriptions", // RFC 3995
+ "Renew-Subscription", // RFC 3995
+ "Cancel-Subscription", // RFC 3995
+ "Get-Notifications", // RFC 3996
+ "(Send-Notifications)",
+ "Get-Resource-Attributes", // IPP System
+ "(Get-Resource-Data)",
+
+ // 0x0020 - 0x002f
+ "Get-Resources", // IPP System
+ "(Get-Printer-Support-Files)",
+ "Enable-Printer", // RFC 3998
+ "Disable-Printer", // RFC 3998
+ "Pause-Printer-After-Current-Job", // RFC 3998
+ "Hold-New-Jobs", // RFC 3998
+ "Release-Held-New-Jobs", // RFC 3998
+ "Deactivate-Printer", // RFC 3998
+ "Activate-Printer", // RFC 3998
+ "Restart-Printer", // RFC 3998
+ "Shutdown-Printer", // RFC 3998
+ "Startup-Printer", // RFC 3998
+ "Reprocess-Job", // RFC 3998
+ "Cancel-Current-Job", // RFC 3998
+ "Suspend-Current-Job", // RFC 3998
+ "Resume-Job", // RFC 3998
+
+ // 0x0030 - 0x003f
+ "Promote-Job", // RFC 3998
+ "Schedule-Job-After", // RFC 3998
+ "0x0032",
+ "Cancel-Document", // IPP DocObject
+ "Get-Document-Attributes", // IPP DocObject
+ "Get-Documents", // IPP DocObject
+ "Delete-Document", // IPP DocObject
+ "Set-Document-Attributes", // IPP DocObject
+ "Cancel-Jobs", // IPP JobExt
+ "Cancel-My-Jobs", // IPP JobExt
+ "Resubmit-Job", // IPP JobExt
+ "Close-Job", // IPP JobExt
+ "Identify-Printer", // IPP NODRIVER
+ "Validate-Document", // IPP NODRIVER
+ "Add-Document-Images", // IPP Scan
+ "Acknowledge-Document", // IPP INFRA
+
+ // 0x0040 - 0x004f
+ "Acknowledge-Identify-Printer", // IPP INFRA
+ "Acknowledge-Job", // IPP INFRA
+ "Fetch-Document", // IPP INFRA
+ "Fetch-Job", // IPP INFRA
+ "Get-Output-Device-Attributes", // IPP INFRA
+ "Update-Active-Jobs", // IPP INFRA
+ "Deregister-Output-Device", // IPP INFRA
+ "Update-Document-Status", // IPP INFRA
+ "Update-Job-Status", // IPP INFRA
+ "Update-Output-Device-Attributes", // IPP INFRA
+ "Get-Next-Document-Data", // IPP Scan
+ "Allocate-Printer-Resources", // IPP System
+ "Create-Printer", // IPP System
+ "Deallocate-Printer-Resources", // IPP System
+ "Delete-Printer", // IPP System
+ "Get-Printers", // IPP System
+
+ // 0x0050 - 0x005f
+ "Shutdown-One-Printer", // IPP System
+ "Startup-One-Printer", // IPP System
+ "Cancel-Resource", // IPP System
+ "Create-Resource", // IPP System
+ "Install-Resource", // IPP System
+ "Send-Resource-Data", // IPP System
+ "Set-Resource-Attributes", // IPP System
+ "Create-Resource-Subscriptions", // IPP System
+ "Create-System-Subscriptions", // IPP System
+ "Disable-All-Printers", // IPP System
+ "Enable-All-Printers", // IPP System
+ "Get-System-Attributes", // IPP System
+ "Get-System-Supported-Values", // IPP System
+ "Pause-All-Printers", // IPP System
+ "Pause-All-Printers-After-Current-Job",
+ // IPP System
+ "Register-Output-Device", // IPP System
+
+ // 0x0060 - 0x006a
+ "Restart-System", // IPP System
+ "Resume-All-Printers", // IPP System
+ "Set-System-Attributes", // IPP System
+ "Shutdown-All-Printers", // IPP System
+ "Startup-All-Printers", // IPP System
+ "Get-Printer-Resources", // IPP System
+ "Get-User-Printer-Attributes", // IPP EPX
+ "Restart-One-Printer", // IPP System
+ "Acknowledge-Encrypted-Job-Attributes",
+ // IPP TRUSTNOONE
+ "Fetch-Encrypted-Job-Attributes", // IPP TRUSTNOONE
+ "Get-Encrypted-Job-Attributes" // IPP TRUSTNOONE
+};
+static const char * const ipp_cups_ops[] =
+{
+ "CUPS-Get-Default",
+ "CUPS-Get-Printers",
+ "CUPS-Add-Modify-Printer",
+ "CUPS-Delete-Printer",
+ "CUPS-Get-Classes",
+ "CUPS-Add-Modify-Class",
+ "CUPS-Delete-Class",
+ "CUPS-Accept-Jobs",
+ "CUPS-Reject-Jobs",
+ "CUPS-Set-Default",
+ "CUPS-Get-Devices",
+ "CUPS-Get-PPDs",
+ "CUPS-Move-Job",
+ "CUPS-Authenticate-Job",
+ "CUPS-Get-PPD"
+};
+static const char * const ipp_cups_ops2[] =
+{
+ "CUPS-Get-Document",
+ "CUPS-Create-Local-Printer"
+};
+static const char * const ipp_tag_names[] =
+{ // Value/group tag names
+ "zero", // 0x00
+ "operation-attributes-tag", // 0x01
+ "job-attributes-tag", // 0x02
+ "end-of-attributes-tag", // 0x03
+ "printer-attributes-tag", // 0x04
+ "unsupported-attributes-tag", // 0x05
+ "subscription-attributes-tag", // 0x06 - RFC 3995
+ "event-notification-attributes-tag", // 0x07 - RFC 3995
+ "resource-attributes-tag", // 0x08 - IPP System
+ "document-attributes-tag", // 0x09 - IPP DocObject
+ "system-attributes-tag", // 0x0a - IPP System
+ "0x0b", // 0x0b
+ "0x0c", // 0x0c
+ "0x0d", // 0x0d
+ "0x0e", // 0x0e
+ "0x0f", // 0x0f
+ "unsupported", // 0x10
+ "default", // 0x11
+ "unknown", // 0x12
+ "no-value", // 0x13
+ "0x14", // 0x14
+ "not-settable", // 0x15 - RFC 3380
+ "delete-attribute", // 0x16 - RFC 3380
+ "admin-define", // 0x17 - RFC 3380
+ "0x18", // 0x18
+ "0x19", // 0x19
+ "0x1a", // 0x1a
+ "0x1b", // 0x1b
+ "0x1c", // 0x1c
+ "0x1d", // 0x1d
+ "0x1e", // 0x1e
+ "0x1f", // 0x1f
+ "0x20", // 0x20
+ "integer", // 0x21
+ "boolean", // 0x22
+ "enum", // 0x23
+ "0x24", // 0x24
+ "0x25", // 0x25
+ "0x26", // 0x26
+ "0x27", // 0x27
+ "0x28", // 0x28
+ "0x29", // 0x29
+ "0x2a", // 0x2a
+ "0x2b", // 0x2b
+ "0x2c", // 0x2c
+ "0x2d", // 0x2d
+ "0x2e", // 0x2e
+ "0x2f", // 0x2f
+ "octetString", // 0x30
+ "dateTime", // 0x31
+ "resolution", // 0x32
+ "rangeOfInteger", // 0x33
+ "collection", // 0x34
+ "textWithLanguage", // 0x35
+ "nameWithLanguage", // 0x36
+ "endCollection", // 0x37
+ "0x38", // 0x38
+ "0x39", // 0x39
+ "0x3a", // 0x3a
+ "0x3b", // 0x3b
+ "0x3c", // 0x3c
+ "0x3d", // 0x3d
+ "0x3e", // 0x3e
+ "0x3f", // 0x3f
+ "0x40", // 0x40
+ "textWithoutLanguage", // 0x41
+ "nameWithoutLanguage", // 0x42
+ "0x43", // 0x43
+ "keyword", // 0x44
+ "uri", // 0x45
+ "uriScheme", // 0x46
+ "charset", // 0x47
+ "naturalLanguage", // 0x48
+ "mimeMediaType", // 0x49
+ "memberAttrName" // 0x4a
+};
static const char * const ipp_document_states[] =
- { // document-state-enums
- "pending",
- "4",
- "processing",
- "processing-stopped", // IPP INFRA
- "canceled",
- "aborted",
- "completed"
- },
- * const ipp_finishings[] =
- { // finishings enums
- "none",
- "staple",
- "punch",
- "cover",
- "bind",
- "saddle-stitch",
- "edge-stitch",
- "fold",
- "trim",
- "bale",
- "booklet-maker",
- "jog-offset",
- "coat", // IPP Finishings 2.0
- "laminate", // IPP Finishings 2.0
- "17",
- "18",
- "19",
- "staple-top-left",
- "staple-bottom-left",
- "staple-top-right",
- "staple-bottom-right",
- "edge-stitch-left",
- "edge-stitch-top",
- "edge-stitch-right",
- "edge-stitch-bottom",
- "staple-dual-left",
- "staple-dual-top",
- "staple-dual-right",
- "staple-dual-bottom",
- "staple-triple-left", // IPP Finishings 2.0
- "staple-triple-top", // IPP Finishings 2.0
- "staple-triple-right",// IPP Finishings 2.0
- "staple-triple-bottom",// IPP Finishings 2.0
- "36",
- "37",
- "38",
- "39",
- "40",
- "41",
- "42",
- "43",
- "44",
- "45",
- "46",
- "47",
- "48",
- "49",
- "bind-left",
- "bind-top",
- "bind-right",
- "bind-bottom",
- "54",
- "55",
- "56",
- "57",
- "58",
- "59",
- "trim-after-pages",
- "trim-after-documents",
- "trim-after-copies",
- "trim-after-job",
- "64",
- "65",
- "66",
- "67",
- "68",
- "69",
- "punch-top-left", // IPP Finishings 2.0
- "punch-bottom-left", // IPP Finishings 2.0
- "punch-top-right", // IPP Finishings 2.0
- "punch-bottom-right", // IPP Finishings 2.0
- "punch-dual-left", // IPP Finishings 2.0
- "punch-dual-top", // IPP Finishings 2.0
- "punch-dual-right", // IPP Finishings 2.0
- "punch-dual-bottom", // IPP Finishings 2.0
- "punch-triple-left", // IPP Finishings 2.0
- "punch-triple-top", // IPP Finishings 2.0
- "punch-triple-right", // IPP Finishings 2.0
- "punch-triple-bottom",// IPP Finishings 2.0
- "punch-quad-left", // IPP Finishings 2.0
- "punch-quad-top", // IPP Finishings 2.0
- "punch-quad-right", // IPP Finishings 2.0
- "punch-quad-bottom", // IPP Finishings 2.0
- "punch-multiple-left",// IPP Finishings 2.1/Canon
- "punch-multiple-top", // IPP Finishings 2.1/Canon
- "punch-multiple-right",// IPP Finishings 2.1/Canon
- "punch-multiple-bottom",// IPP Finishings 2.1/Canon
- "fold-accordion", // IPP Finishings 2.0
- "fold-double-gate", // IPP Finishings 2.0
- "fold-gate", // IPP Finishings 2.0
- "fold-half", // IPP Finishings 2.0
- "fold-half-z", // IPP Finishings 2.0
- "fold-left-gate", // IPP Finishings 2.0
- "fold-letter", // IPP Finishings 2.0
- "fold-parallel", // IPP Finishings 2.0
- "fold-poster", // IPP Finishings 2.0
- "fold-right-gate", // IPP Finishings 2.0
- "fold-z", // IPP Finishings 2.0
- "fold-engineering-z" // IPP Finishings 2.1
- },
- * const ipp_finishings_vendor[] =
- {
- // 0x40000000 to 0x4000000F
- "0x40000000",
- "0x40000001",
- "0x40000002",
- "0x40000003",
- "0x40000004",
- "0x40000005",
- "0x40000006",
- "0x40000007",
- "0x40000008",
- "0x40000009",
- "0x4000000A",
- "0x4000000B",
- "0x4000000C",
- "0x4000000D",
- "0x4000000E",
- "0x4000000F",
- // 0x40000010 to 0x4000001F
- "0x40000010",
- "0x40000011",
- "0x40000012",
- "0x40000013",
- "0x40000014",
- "0x40000015",
- "0x40000016",
- "0x40000017",
- "0x40000018",
- "0x40000019",
- "0x4000001A",
- "0x4000001B",
- "0x4000001C",
- "0x4000001D",
- "0x4000001E",
- "0x4000001F",
- // 0x40000020 to 0x4000002F
- "0x40000020",
- "0x40000021",
- "0x40000022",
- "0x40000023",
- "0x40000024",
- "0x40000025",
- "0x40000026",
- "0x40000027",
- "0x40000028",
- "0x40000029",
- "0x4000002A",
- "0x4000002B",
- "0x4000002C",
- "0x4000002D",
- "0x4000002E",
- "0x4000002F",
- // 0x40000030 to 0x4000003F
- "0x40000030",
- "0x40000031",
- "0x40000032",
- "0x40000033",
- "0x40000034",
- "0x40000035",
- "0x40000036",
- "0x40000037",
- "0x40000038",
- "0x40000039",
- "0x4000003A",
- "0x4000003B",
- "0x4000003C",
- "0x4000003D",
- "0x4000003E",
- "0x4000003F",
- // 0x40000040 - 0x4000004F
- "0x40000040",
- "0x40000041",
- "0x40000042",
- "0x40000043",
- "0x40000044",
- "0x40000045",
- "cups-punch-top-left",
- "cups-punch-bottom-left",
- "cups-punch-top-right",
- "cups-punch-bottom-right",
- "cups-punch-dual-left",
- "cups-punch-dual-top",
- "cups-punch-dual-right",
- "cups-punch-dual-bottom",
- "cups-punch-triple-left",
- "cups-punch-triple-top",
- // 0x40000050 - 0x4000005F
- "cups-punch-triple-right",
- "cups-punch-triple-bottom",
- "cups-punch-quad-left",
- "cups-punch-quad-top",
- "cups-punch-quad-right",
- "cups-punch-quad-bottom",
- "0x40000056",
- "0x40000057",
- "0x40000058",
- "0x40000059",
- "cups-fold-accordion",
- "cups-fold-double-gate",
- "cups-fold-gate",
- "cups-fold-half",
- "cups-fold-half-z",
- "cups-fold-left-gate",
- // 0x40000060 - 0x40000064
- "cups-fold-letter",
- "cups-fold-parallel",
- "cups-fold-poster",
- "cups-fold-right-gate",
- "cups-fold-z"
- },
- * const ipp_job_collation_types[] =
- { // job-collation-type enums
- "uncollated-sheets",
- "collated-documents",
- "uncollated-documents"
- },
- * const ipp_job_states[] =
- { // job-state enums
- "pending",
- "pending-held",
- "processing",
- "processing-stopped",
- "canceled",
- "aborted",
- "completed"
- },
- * const ipp_orientation_requesteds[] =
- { // orientation-requested enums
- "portrait",
- "landscape",
- "reverse-landscape",
- "reverse-portrait",
- "none"
- },
- * const ipp_print_qualities[] =
- { // print-quality enums
- "draft",
- "normal",
- "high"
- },
- * const ipp_printer_states[] =
- { // printer-state enums
- "idle",
- "processing",
- "stopped"
- },
- * const ipp_resource_states[] =
- { // resource-state enums
- "pending",
- "available",
- "installed",
- "canceled",
- "aborted"
- },
- * const ipp_system_states[] =
- { // system-state enums
- "idle",
- "processing",
- "stopped"
- };
+{ // document-state-enums
+ "pending",
+ "4",
+ "processing",
+ "processing-stopped", // IPP INFRA
+ "canceled",
+ "aborted",
+ "completed"
+};
+static const char * const ipp_finishings[] =
+{ // finishings enums
+ "none",
+ "staple",
+ "punch",
+ "cover",
+ "bind",
+ "saddle-stitch",
+ "edge-stitch",
+ "fold",
+ "trim",
+ "bale",
+ "booklet-maker",
+ "jog-offset",
+ "coat", // IPP FIN
+ "laminate", // IPP FIN
+ "17",
+ "18",
+ "19",
+ "staple-top-left", // IPP FIN
+ "staple-bottom-left", // IPP FIN
+ "staple-top-right", // IPP FIN
+ "staple-bottom-right", // IPP FIN
+ "edge-stitch-left", // IPP FIN
+ "edge-stitch-top", // IPP FIN
+ "edge-stitch-right", // IPP FIN
+ "edge-stitch-bottom", // IPP FIN
+ "staple-dual-left", // IPP FIN
+ "staple-dual-top", // IPP FIN
+ "staple-dual-right", // IPP FIN
+ "staple-dual-bottom", // IPP FIN
+ "staple-triple-left", // IPP FIN
+ "staple-triple-top", // IPP FIN
+ "staple-triple-right", // IPP FIN
+ "staple-triple-bottom", // IPP FIN
+ "36",
+ "37",
+ "38",
+ "39",
+ "40",
+ "41",
+ "42",
+ "43",
+ "44",
+ "45",
+ "46",
+ "47",
+ "48",
+ "49",
+ "bind-left", // IPP FIN
+ "bind-top", // IPP FIN
+ "bind-right", // IPP FIN
+ "bind-bottom", // IPP FIN
+ "54",
+ "55",
+ "56",
+ "57",
+ "58",
+ "59",
+ "trim-after-pages", // IPP FIN
+ "trim-after-documents", // IPP FIN
+ "trim-after-copies", // IPP FIN
+ "trim-after-job", // IPP FIN
+ "64",
+ "65",
+ "66",
+ "67",
+ "68",
+ "69",
+ "punch-top-left", // IPP FIN
+ "punch-bottom-left", // IPP FIN
+ "punch-top-right", // IPP FIN
+ "punch-bottom-right", // IPP FIN
+ "punch-dual-left", // IPP FIN
+ "punch-dual-top", // IPP FIN
+ "punch-dual-right", // IPP FIN
+ "punch-dual-bottom", // IPP FIN
+ "punch-triple-left", // IPP FIN
+ "punch-triple-top", // IPP FIN
+ "punch-triple-right", // IPP FIN
+ "punch-triple-bottom", // IPP FIN
+ "punch-quad-left", // IPP FIN
+ "punch-quad-top", // IPP FIN
+ "punch-quad-right", // IPP FIN
+ "punch-quad-bottom", // IPP FIN
+ "punch-multiple-left", // IPP FIN
+ "punch-multiple-top", // IPP FIN
+ "punch-multiple-right", // IPP FIN
+ "punch-multiple-bottom", // IPP FIN
+ "fold-accordion", // IPP FIN
+ "fold-double-gate", // IPP FIN
+ "fold-gate", // IPP FIN
+ "fold-half", // IPP FIN
+ "fold-half-z", // IPP FIN
+ "fold-left-gate", // IPP FIN
+ "fold-letter", // IPP FIN
+ "fold-parallel", // IPP FIN
+ "fold-poster", // IPP FIN
+ "fold-right-gate", // IPP FIN
+ "fold-z", // IPP FIN
+ "fold-engineering-z" // IPP FIN
+};
+static const char * const ipp_finishings_vendor[] =
+{
+ // 0x40000000 to 0x4000000F
+ "0x40000000",
+ "0x40000001",
+ "0x40000002",
+ "0x40000003",
+ "0x40000004",
+ "0x40000005",
+ "0x40000006",
+ "0x40000007",
+ "0x40000008",
+ "0x40000009",
+ "0x4000000A",
+ "0x4000000B",
+ "0x4000000C",
+ "0x4000000D",
+ "0x4000000E",
+ "0x4000000F",
+ // 0x40000010 to 0x4000001F
+ "0x40000010",
+ "0x40000011",
+ "0x40000012",
+ "0x40000013",
+ "0x40000014",
+ "0x40000015",
+ "0x40000016",
+ "0x40000017",
+ "0x40000018",
+ "0x40000019",
+ "0x4000001A",
+ "0x4000001B",
+ "0x4000001C",
+ "0x4000001D",
+ "0x4000001E",
+ "0x4000001F",
+ // 0x40000020 to 0x4000002F
+ "0x40000020",
+ "0x40000021",
+ "0x40000022",
+ "0x40000023",
+ "0x40000024",
+ "0x40000025",
+ "0x40000026",
+ "0x40000027",
+ "0x40000028",
+ "0x40000029",
+ "0x4000002A",
+ "0x4000002B",
+ "0x4000002C",
+ "0x4000002D",
+ "0x4000002E",
+ "0x4000002F",
+ // 0x40000030 to 0x4000003F
+ "0x40000030",
+ "0x40000031",
+ "0x40000032",
+ "0x40000033",
+ "0x40000034",
+ "0x40000035",
+ "0x40000036",
+ "0x40000037",
+ "0x40000038",
+ "0x40000039",
+ "0x4000003A",
+ "0x4000003B",
+ "0x4000003C",
+ "0x4000003D",
+ "0x4000003E",
+ "0x4000003F",
+ // 0x40000040 - 0x4000004F
+ "0x40000040",
+ "0x40000041",
+ "0x40000042",
+ "0x40000043",
+ "0x40000044",
+ "0x40000045",
+ "cups-punch-top-left", // AirPrint
+ "cups-punch-bottom-left", // AirPrint
+ "cups-punch-top-right", // AirPrint
+ "cups-punch-bottom-right", // AirPrint
+ "cups-punch-dual-left", // AirPrint
+ "cups-punch-dual-top", // AirPrint
+ "cups-punch-dual-right", // AirPrint
+ "cups-punch-dual-bottom", // AirPrint
+ "cups-punch-triple-left", // AirPrint
+ "cups-punch-triple-top", // AirPrint
+ // 0x40000050 - 0x4000005F
+ "cups-punch-triple-right", // AirPrint
+ "cups-punch-triple-bottom", // AirPrint
+ "cups-punch-quad-left", // AirPrint
+ "cups-punch-quad-top", // AirPrint
+ "cups-punch-quad-right", // AirPrint
+ "cups-punch-quad-bottom", // AirPrint
+ "0x40000056",
+ "0x40000057",
+ "0x40000058",
+ "0x40000059",
+ "cups-fold-accordion", // AirPrint
+ "cups-fold-double-gate", // AirPrint
+ "cups-fold-gate", // AirPrint
+ "cups-fold-half", // AirPrint
+ "cups-fold-half-z", // AirPrint
+ "cups-fold-left-gate", // AirPrint
+ // 0x40000060 - 0x40000064
+ "cups-fold-letter", // AirPrint
+ "cups-fold-parallel", // AirPrint
+ "cups-fold-poster", // AirPrint
+ "cups-fold-right-gate", // AirPrint
+ "cups-fold-z" // AirPrint
+};
+static const char * const ipp_job_states[] =
+{ // job-state enums
+ "pending",
+ "pending-held",
+ "processing",
+ "processing-stopped",
+ "canceled",
+ "aborted",
+ "completed"
+};
+static const char * const ipp_orientation_requesteds[] =
+{ // orientation-requested enums
+ "portrait",
+ "landscape",
+ "reverse-landscape",
+ "reverse-portrait",
+ "none"
+};
+static const char * const ipp_print_qualities[] =
+{ // print-quality enums
+ "draft",
+ "normal",
+ "high"
+};
+static const char * const ipp_printer_states[] =
+{ // printer-state enums
+ "idle",
+ "processing",
+ "stopped"
+};
+static const char * const ipp_resource_states[] =
+{ // resource-state enums
+ "pending",
+ "available",
+ "installed",
+ "canceled",
+ "aborted"
+};
+static const char * const ipp_system_states[] =
+{ // system-state enums
+ "idle",
+ "processing",
+ "stopped"
+};
//
//
// 'ippAttributeString()' - Convert the attribute's value to a string.
//
-// Returns the number of bytes that would be written, not including the
-// trailing nul. The buffer pointer can be NULL to get the required length,
-// just like (v)snprintf.
+// This function converts an attribute's values into a string and returns the
+// number of bytes that would be written, not including the trailing `nul`. The
+// buffer pointer can be NULL to get the required length, just like
+// `(v)snprintf`.
//
// @since CUPS 1.6@
//
-size_t // O - Number of bytes less nul
+size_t // O - Number of bytes less `nul`
ippAttributeString(
ipp_attribute_t *attr, // I - Attribute
- char *buffer, // I - String buffer or NULL
+ char *buffer, // I - String buffer or `NULL`
size_t bufsize) // I - Size of string buffer
{
int i; // Looping var
_ipp_value_t *val; // Current value
+ // Range check input...
if (!attr || !attr->name)
{
if (buffer)
return (0);
}
+ // Setup buffer pointers...
bufptr = buffer;
if (buffer)
bufend = buffer + bufsize - 1;
else
bufend = NULL;
+ // Loop through the values...
for (i = attr->num_values, val = attr->values; i > 0; i --, val ++)
{
if (val > attr->values)
}
}
+ // Nul-terminate and return...
if (buffer && bufptr < bufend)
*bufptr = '\0';
else if (bufend)
// registered values are supported in addition to the CUPS IPP extension
// attributes.
//
-// The @code request@ parameter specifies the request message that was read from
+// The "request" argument specifies the request message that was read from
// the client.
//
-// @code NULL@ is returned if all attributes should be returned. Otherwise, the
-// result is a sorted array of attribute names, where @code cupsArrayFind(array,
-// "attribute-name")@ will return a non-NULL pointer. The array must be freed
-// using the @code cupsArrayDelete@ function.
+// `NULL` is returned if all attributes should be returned. Otherwise, the
+// result is a sorted array of attribute names, where
+// `cupsArrayFind(array, "attribute-name")` will return a non-`NULL` pointer.
+// The array must be freed using @link cupsArrayDelete@.
//
// @since CUPS 1.7@
//
-cups_array_t * // O - CUPS array or @code NULL@ if all
+cups_array_t * // O - CUPS array or `NULL` if all
ippCreateRequestedArray(ipp_t *request) // I - IPP request
{
- int i, j, // Looping vars
- count, // Number of values
- added; // Was name added?
+ size_t i, j, // Looping vars
+ count; // Number of values
+ bool added; // Was name added?
ipp_op_t op; // IPP operation code
ipp_attribute_t *requested; // requested-attributes attribute
cups_array_t *ra; // Requested attributes array
"detailed-status-messages",
"document-access-errors",
"document-charset",
- "document-digital-signature",
"document-format",
- "document-format-details",
- "document-format-detected",
- "document-format-version",
- "document-format-version-detected",
+ "document-format-details", // IPP JobExt
+ "document-format-detected", // IPP JobExt
"document-job-id",
"document-job-uri",
"document-message",
"document-state-message",
"document-state-reasons",
"document-uri",
- "document-uuid", // IPP JPS3
- "errors-count",
+ "document-uuid", // IPP NODRIVER
+ "errors-count", // IPP JobExt
"finishings-actual",
"finishings-col-actual",
"force-front-side-actual",
"print-accuracy-actual", // IPP 3D
"print-base-actual", // IPP 3D
"print-color-mode-actual",
- "print-content-optimize-actual",
+ "print-content-optimize-actual", // IPP JobExt
"print-objects-actual", // IPP 3D
"print-quality-actual",
"print-rendering-intent-actual",
"time-at-completed",
"time-at-creation",
"time-at-processing",
+ "warnings-count", // IPP JobExt
"x-image-position-actual",
"x-image-shift-actual",
"x-side1-image-shift-actual",
};
static const char * const document_template[] =
{ // document-template group
+ "baling-type-supported", // IPP FIN
+ "baling-when-supported", // IPP FIN
+ "binding-reference-edge-supported", // IPP FIN
+ "binding-type-supported", // IPP FIN
"chamber-humidity", // IPP 3D
"chamber-humidity-default", // IPP 3D
"chamber-humidity-supported", // IPP 3D
"chamber-temperature", // IPP 3D
"chamber-temperature-default", // IPP 3D
"chamber-temperature-supported", // IPP 3D
+ "coating-sides-supported", // IPP FIN
+ "coating-type-supported", // IPP FIN
"copies",
"copies-default",
"copies-supported",
- "cover-back",
- "cover-back-default",
- "cover-back-supported",
- "cover-front",
- "cover-front-default",
- "cover-front-supported",
+ "cover-back", // IPP PPX
+ "cover-back-default", // IPP PPX
+ "cover-back-supported", // IPP PPX
+ "cover-front", // IPP PPX
+ "cover-front-default", // IPP PPX
+ "cover-front-supported", // IPP PPX
+ "covering-name-supported", // IPP FIN
"feed-orientation",
"feed-orientation-default",
"feed-orientation-supported",
+ "finishing-template-supported", // IPP FIN
"finishings",
- "finishings-col",
- "finishings-col-database",
- "finishings-col-default",
- "finishings-col-ready",
- "finishings-col-supported",
+ "finishings-col", // IPP FIN
+ "finishings-col-database", // IPP FIN
+ "finishings-col-default", // IPP FIN
+ "finishings-col-ready", // IPP FIN
+ "finishings-col-supported", // IPP FIN
"finishings-default",
"finishings-ready",
"finishings-supported",
- "font-name-requested",
- "font-name-requested-default",
- "font-name-requested-supported",
- "font-size-requested",
- "font-size-requested-default",
- "font-size-requested-supported",
- "force-front-side",
- "force-front-side-default",
- "force-front-side-supported",
- "imposition-template",
- "imposition-template-default",
- "imposition-template-supported",
- "insert-after-page-number-supported",
- "insert-count-supported",
- "insert-sheet",
- "insert-sheet-default",
- "insert-sheet-supported",
+ "folding-direction-supported", // IPP FIN
+ "folding-offset-supported", // IPP FIN
+ "folding-reference-edge-supported", // IPP FIN
+ "force-front-side", // IPP PPX
+ "force-front-side-default", // IPP PPX
+ "force-front-side-supported", // IPP PPX
+ "imposition-template", // IPP PPX
+ "imposition-template-default", // IPP PPX
+ "imposition-template-supported", // IPP PPX
+ "insert-count-supported", // IPP PPX
+ "insert-sheet", // IPP PPX
+ "insert-sheet-default", // IPP PPX
+ "insert-sheet-supported", // IPP PPX
+ "laminating-sides-supported", // IPP FIN
+ "laminating-type-supported", // IPP FIN
"material-amount-units-supported", // IPP 3D
"material-diameter-supported", // IPP 3D
"material-purpose-supported", // IPP 3D
"material-rate-supported", // IPP 3D
"material-rate-units-supported", // IPP 3D
- "material-shell-thickness-supported",// IPP 3D
+ "material-shell-thickness-supported",
+ // IPP 3D
"material-temperature-supported", // IPP 3D
"material-type-supported", // IPP 3D
"materials-col", // IPP 3D
"materials-col-ready", // IPP 3D
"materials-col-supported", // IPP 3D
"max-materials-col-supported", // IPP 3D
- "max-stitching-locations-supported",
+ "max-page-ranges-supported",
+ "max-stitching-locations-supported",// IPP FIN
"media",
- "media-back-coating-supported",
- "media-bottom-margin-supported",
- "media-col",
- "media-col-default",
- "media-col-ready",
- "media-col-supported",
- "media-color-supported",
+ "media-back-coating-supported", // IPP JobExt
+ "media-bottom-margin-supported", // IPP JobExt
+ "media-col", // IPP JobExt
+ "media-col-default", // IPP JobExt
+ "media-col-ready", // IPP JobExt
+ "media-col-supported", // IPP JobExt
+ "media-color-supported", // IPP JobExt
"media-default",
- "media-front-coating-supported",
- "media-grain-supported",
- "media-hole-count-supported",
- "media-info-supported",
- "media-input-tray-check",
- "media-input-tray-check-default",
- "media-input-tray-check-supported",
- "media-key-supported",
- "media-left-margin-supported",
- "media-order-count-supported",
- "media-pre-printed-supported",
+ "media-front-coating-supported", // IPP JobExt
+ "media-grain-supported", // IPP JobExt
+ "media-hole-count-supported", // IPP JobExt
+ "media-info-supported", // IPP JobExt
+ "media-input-tray-check", // IPP PPX
+ "media-input-tray-check-default", // IPP PPX
+ "media-input-tray-check-supported", // IPP PPX
+ "media-key-supported", // IPP JobExt
+ "media-left-margin-supported", // IPP JobExt
+ "media-order-count-supported", // IPP JobExt
+ "media-overprint", // IPP NODRIVER
+ "media-overprint-distance-supported",
+ // IPP NODRIVER
+ "media-overprint-method-supported", // IPP NODRIVER
+ "media-overprint-supported", // IPP NODRIVER
+ "media-pre-printed-supported", // IPP JobExt
"media-ready",
- "media-recycled-supported",
- "media-right-margin-supported",
- "media-size-supported",
- "media-source-supported",
+ "media-recycled-supported", // IPP JobExt
+ "media-right-margin-supported", // IPP JobExt
+ "media-size-supported", // IPP JobExt
+ "media-source-supported", // IPP JobExt
"media-supported",
- "media-thickness-supported",
- "media-top-margin-supported",
- "media-type-supported",
- "media-weight-metric-supported",
+ "media-thickness-supported", // IPP JobExt
+ "media-top-margin-supported", // IPP JobExt
+ "media-type-supported", // IPP JobExt
+ "media-weight-metric-supported", // IPP JobExt
"multiple-document-handling",
"multiple-document-handling-default",
"multiple-document-handling-supported",
"multiple-object-handling", // IPP 3D
"multiple-object-handling-default", // IPP 3D
- "multiple-object-handling-supported",// IPP 3D
+ "multiple-object-handling-supported",
+ // IPP 3D
"number-up",
"number-up-default",
"number-up-supported",
"orientation-requested",
"orientation-requested-default",
"orientation-requested-supported",
+ "output-device", // IPP JobExt
+ "output-device-supported", // IPP JobExt
"output-mode", // CUPS extension
"output-mode-default", // CUPS extension
"output-mode-supported", // CUPS extension
"overrides",
"overrides-supported",
- "page-delivery",
- "page-delivery-default",
- "page-delivery-supported",
- "page-order-received",
- "page-order-received-default",
- "page-order-received-supported",
+ "page-delivery", // IPP PPX
+ "page-delivery-default", // IPP PPX
+ "page-delivery-supported", // IPP PPX
"page-ranges",
"page-ranges-supported",
- "pages-per-subset",
- "pages-per-subset-supported",
- "pdl-init-file",
- "pdl-init-file-default",
- "pdl-init-file-entry-supported",
- "pdl-init-file-location-supported",
- "pdl-init-file-name-subdirectory-supported",
- "pdl-init-file-name-supported",
- "pdl-init-file-supported",
"platform-temperature", // IPP 3D
"platform-temperature-default", // IPP 3D
"platform-temperature-supported", // IPP 3D
- "presentation-direction-number-up",
+ "preferred-attributes-supported", // IPP NODRIVER
+ "presentation-direction-number-up", // IPP PPX
"presentation-direction-number-up-default",
+ // IPP PPX
"presentation-direction-number-up-supported",
+ // IPP PPX
"print-accuracy", // IPP 3D
"print-accuracy-default", // IPP 3D
"print-accuracy-supported", // IPP 3D
"print-base", // IPP 3D
"print-base-default", // IPP 3D
"print-base-supported", // IPP 3D
- "print-color-mode",
- "print-color-mode-default",
- "print-color-mode-supported",
- "print-content-optimize",
- "print-content-optimize-default",
- "print-content-optimize-supported",
+ "print-color-mode", // IPP NODRIVER
+ "print-color-mode-default", // IPP NODRIVER
+ "print-color-mode-supported", // IPP NODRIVER
+ "print-content-optimize", // IPP JobExt
+ "print-content-optimize-default", // IPP JobExt
+ "print-content-optimize-supported", // IPP JobExt
"print-objects", // IPP 3D
"print-objects-default", // IPP 3D
"print-objects-supported", // IPP 3D
+ "print-processing-attributes-supported",
+ // IPP NODRIVER
"print-quality",
"print-quality-default",
"print-quality-supported",
- "print-rendering-intent",
- "print-rendering-intent-default",
- "print-rendering-intent-supported",
- "print-scaling", // IPP Paid Printing
- "print-scaling-default", // IPP Paid Printing
- "print-scaling-supported", // IPP Paid Printing
+ "print-rendering-intent", // IPP NODRIVER
+ "print-rendering-intent-default", // IPP NODRIVER
+ "print-rendering-intent-supported", // IPP NODRIVER
+ "print-scaling", // IPP NODRIVER
+ "print-scaling-default", // IPP NODRIVER
+ "print-scaling-supported", // IPP NODRIVER
"print-supports", // IPP 3D
"print-supports-default", // IPP 3D
"print-supports-supported", // IPP 3D
"printer-resolution",
"printer-resolution-default",
"printer-resolution-supported",
- "separator-sheets",
- "separator-sheets-default",
- "separator-sheets-supported",
- "sheet-collate",
- "sheet-collate-default",
- "sheet-collate-supported",
+ "punching-hole-diameter-configured",// IPP FIN
+ "punching-locations-supported", // IPP FIN
+ "punching-offset-supported", // IPP FIN
+ "punching-reference-edge-supported",// IPP FIN
+ "separator-sheets", // IPP PPX
+ "separator-sheets-default", // IPP PPX
+ "separator-sheets-supported", // IPP PPX
+ "separator-sheets-type-supported", // IPP PPX
"sides",
"sides-default",
"sides-supported",
- "stitching-locations-supported",
- "stitching-offset-supported",
- "x-image-position",
- "x-image-position-default",
- "x-image-position-supported",
- "x-image-shift",
- "x-image-shift-default",
- "x-image-shift-supported",
- "x-side1-image-shift",
- "x-side1-image-shift-default",
- "x-side1-image-shift-supported",
- "x-side2-image-shift",
- "x-side2-image-shift-default",
- "x-side2-image-shift-supported",
- "y-image-position",
- "y-image-position-default",
- "y-image-position-supported",
- "y-image-shift",
- "y-image-shift-default",
- "y-image-shift-supported",
- "y-side1-image-shift",
- "y-side1-image-shift-default",
- "y-side1-image-shift-supported",
- "y-side2-image-shift",
- "y-side2-image-shift-default",
- "y-side2-image-shift-supported"
+ "stitching-angle-supported", // IPP FIN
+ "stitching-locations-supported", // IPP FIN
+ "stitching-method-supported", // IPP FIN
+ "stitching-offset-supported", // IPP FIN
+ "stitching-reference-edge-supported",
+ // IPP FIN
+ "x-image-position", // IPP PPX
+ "x-image-position-default", // IPP PPX
+ "x-image-position-supported", // IPP PPX
+ "x-image-shift", // IPP PPX
+ "x-image-shift-default", // IPP PPX
+ "x-image-shift-supported", // IPP PPX
+ "x-side1-image-shift", // IPP PPX
+ "x-side1-image-shift-default", // IPP PPX
+ "x-side1-image-shift-supported", // IPP PPX
+ "x-side2-image-shift", // IPP PPX
+ "x-side2-image-shift-default", // IPP PPX
+ "x-side2-image-shift-supported", // IPP PPX
+ "y-image-position", // IPP PPX
+ "y-image-position-default", // IPP PPX
+ "y-image-position-supported", // IPP PPX
+ "y-image-shift", // IPP PPX
+ "y-image-shift-default", // IPP PPX
+ "y-image-shift-supported", // IPP PPX
+ "y-side1-image-shift", // IPP PPX
+ "y-side1-image-shift-default", // IPP PPX
+ "y-side1-image-shift-supported", // IPP PPX
+ "y-side2-image-shift", // IPP PPX
+ "y-side2-image-shift-default", // IPP PPX
+ "y-side2-image-shift-supported" // IPP PPX
};
static const char * const job_description[] =
{ // job-description group
"cover-front-actual",
"current-page-order",
"date-time-at-completed",
+ "date-time-at-completed-estimated", // IPP PPX
"date-time-at-creation",
"date-time-at-processing",
+ "date-time-at-processing-estimated",// IPP PPX
"destination-statuses",
"document-charset-supplied",
"document-digital-signature-supplied",
"job-accounting-user-id-actual",
"job-attribute-fidelity",
"job-charge-info", // CUPS extension
- "job-collation-type",
- "job-collation-type-actual",
- "job-copies-actual",
- "job-cover-back-actual",
- "job-cover-front-actual",
"job-detailed-status-message",
"job-document-access-errors",
"job-error-sheet-actual",
- "job-finishings-actual",
- "job-finishings-col-actual",
"job-hold-until-actual",
"job-id",
"job-impressions",
"job-name",
"job-originating-host-name", // CUPS extension
"job-originating-user-name",
- "job-originating-user-uri", // IPP JPS3
+ "job-originating-user-uri", // IPP NODRIVER
"job-pages",
"job-pages-col",
"job-pages-completed",
"job-state",
"job-state-message",
"job-state-reasons",
+ "job-storage", // IPP EPX
"job-uri",
- "job-uuid", // IPP JPS3
+ "job-uuid", // IPP NODRIVER
"materials-col-actual", // IPP 3D
"media-actual",
"media-col-actual",
"page-delivery-actual",
"page-order-received-actual",
"page-ranges-actual",
+ "parent-job-id", // IPP EPX
+ "parent-job-uuid", // IPP EPX
"platform-temperature-actual", // IPP 3D
"presentation-direction-number-up-actual",
"print-accuracy-actual", // IPP 3D
"sheet-completed-document-number",
"sides-actual",
"time-at-completed",
+ "time-at-completed-estimated", // IPP PPX
"time-at-creation",
"time-at-processing",
- "warnings-count",
+ "time-at-processing-estimated", // IPP PPX
+ "warnings-count", // IPP JobExt
"x-image-position-actual",
"x-image-shift-actual",
"x-side1-image-shift-actual",
static const char * const job_template[] =
{ // job-template group
"accuracy-units-supported", // IPP 3D
+ "baling-type-supported", // IPP FIN
+ "baling-when-supported", // IPP FIN
+ "binding-reference-edge-supported", // IPP FIN
+ "binding-type-supported", // IPP FIN
"chamber-humidity", // IPP 3D
"chamber-humidity-default", // IPP 3D
"chamber-humidity-supported", // IPP 3D
"chamber-temperature", // IPP 3D
"chamber-temperature-default", // IPP 3D
"chamber-temperature-supported", // IPP 3D
+ "coating-sides-supported", // IPP FIN
+ "coating-type-supported", // IPP FIN
"confirmation-sheet-print", // IPP FaxOut
"confirmation-sheet-print-default",
"copies",
"copies-default",
"copies-supported",
- "cover-back",
- "cover-back-default",
- "cover-back-supported",
- "cover-front",
- "cover-front-default",
- "cover-front-supported",
+ "cover-back", // IPP PPX
+ "cover-back-default", // IPP PPX
+ "cover-back-supported", // IPP PPX
+ "cover-front", // IPP PPX
+ "cover-front-default", // IPP PPX
+ "cover-front-supported", // IPP PPX
"cover-sheet-info", // IPP FaxOut
- "cover-sheet-info-default",
- "cover-sheet-info-supported",
+ "cover-sheet-info-default", // IPP FaxOut
+ "cover-sheet-info-supported", // IPP FaxOut
+ "covering-name-supported", // IPP FIN
"destination-uri-schemes-supported",// IPP FaxOut
"destination-uris", // IPP FaxOut
"destination-uris-supported",
"feed-orientation-default",
"feed-orientation-supported",
"finishings",
- "finishings-col",
- "finishings-col-database",
- "finishings-col-default",
- "finishings-col-ready",
- "finishings-col-supported",
+ "finishings-col", // IPP FIN
+ "finishings-col-database", // IPP FIN
+ "finishings-col-default", // IPP FIN
+ "finishings-col-ready", // IPP FIN
+ "finishings-col-supported", // IPP FIN
"finishings-default",
"finishings-ready",
"finishings-supported",
- "font-name-requested",
- "font-name-requested-default",
- "font-name-requested-supported",
- "font-size-requested",
- "font-size-requested-default",
- "font-size-requested-supported",
- "force-front-side",
- "force-front-side-default",
- "force-front-side-supported",
- "imposition-template",
- "imposition-template-default",
- "imposition-template-supported",
- "insert-after-page-number-supported",
- "insert-count-supported",
- "insert-sheet",
- "insert-sheet-default",
- "insert-sheet-supported",
- "job-account-id",
- "job-account-id-default",
- "job-account-id-supported",
- "job-accounting-sheets",
- "job-accounting-sheets-default",
- "job-accounting-sheets-supported",
- "job-accounting-user-id",
- "job-accounting-user-id-default",
- "job-accounting-user-id-supported",
- "job-copies",
- "job-copies-default",
- "job-copies-supported",
- "job-cover-back",
- "job-cover-back-default",
- "job-cover-back-supported",
- "job-cover-front",
- "job-cover-front-default",
- "job-cover-front-supported",
- "job-delay-output-until",
- "job-delay-output-until-default",
- "job-delay-output-until-supported",
- "job-delay-output-until-time",
+ "folding-direction-supported", // IPP FIN
+ "folding-offset-supported", // IPP FIN
+ "folding-reference-edge-supported", // IPP FIN
+ "force-front-side", // IPP PPX
+ "force-front-side-default", // IPP PPX
+ "force-front-side-supported", // IPP PPX
+ "imposition-template", // IPP PPX
+ "imposition-template-default", // IPP PPX
+ "imposition-template-supported", // IPP PPX
+ "insert-count-supported", // IPP PPX
+ "insert-sheet", // IPP PPX
+ "insert-sheet-default", // IPP PPX
+ "insert-sheet-supported", // IPP PPX
+ "job-account-id", // IPP JobExt
+ "job-account-id-default", // IPP JobExt
+ "job-account-id-supported", // IPP JobExt
+ "job-accounting-output-bin-supported",
+ // IPP PPX
+ "job-accounting-sheets", // IPP PPX
+ "job-accounting-sheets-default", // IPP PPX
+ "job-accounting-sheets-supported", // IPP PPX
+ "job-accounting-sheets-type-supported",
+ // IPP PPX
+ "job-accounting-user-id", // IPP JobExt
+ "job-accounting-user-id-default", // IPP JobExt
+ "job-accounting-user-id-supported", // IPP JobExt
+ "job-cancel-after", // IPP EPX
+ "job-cancel-after-default", // IPP EPX
+ "job-cancel-after-supported", // IPP EPX
+ "job-complete-before", // IPP PPX
+ "job-complete-before-supported", // IPP PPX
+ "job-complete-before-time", // IPP PPX
+ "job-complete-before-time-supported",
+ // IPP PPX
+ "job-delay-output-until", // IPP JobExt
+ "job-delay-output-until-default", // IPP JobExt
+ "job-delay-output-until-supported", // IPP JobExt
+ "job-delay-output-until-time", // IPP JobExt
"job-delay-output-until-time-default",
+ // IPP JobExt
"job-delay-output-until-time-supported",
- "job-error-action",
- "job-error-action-default",
- "job-error-action-supported",
- "job-error-sheet",
- "job-error-sheet-default",
- "job-error-sheet-supported",
- "job-finishings",
- "job-finishings-col",
- "job-finishings-col-default",
- "job-finishings-col-supported",
- "job-finishings-default",
- "job-finishings-supported",
+ // IPP JobExt
+ "job-error-action", // IPP NODRIVER
+ "job-error-action-default", // IPP NODRIVER
+ "job-error-action-supported", // IPP NODRIVER
+ "job-error-sheet", // IPP PPX
+ "job-error-sheet-default", // IPP PPX
+ "job-error-sheet-supported", // IPP PPX
+ "job-error-sheet-type-supported", // IPP PPX
+ "job-error-sheet-when-supported", // IPP PPX
"job-hold-until",
"job-hold-until-default",
"job-hold-until-supported",
- "job-hold-until-time",
- "job-hold-until-time-default",
- "job-hold-until-time-supported",
- "job-message-to-operator",
- "job-message-to-operator-default",
- "job-message-to-operator-supported",
- "job-phone-number",
- "job-phone-number-default",
- "job-phone-number-supported",
+ "job-hold-until-time", // IPP JobExt
+ "job-hold-until-time-default", // IPP JobExt
+ "job-hold-until-time-supported", // IPP JobExt
+ "job-message-to-operator", // IPP PPX
+ "job-message-to-operator-supported",// IPP PPX
+ "job-phone-number", // IPP PPX
+ "job-phone-number-default", // IPP PPX
+ "job-phone-number-supported", // IPP PPX
"job-priority",
"job-priority-default",
"job-priority-supported",
- "job-recipient-name",
- "job-recipient-name-default",
- "job-recipient-name-supported",
- "job-save-disposition",
- "job-save-disposition-default",
- "job-save-disposition-supported",
+ "job-recipient-name", // IPP PPX
+ "job-recipient-name-supported", // IPP PPX
+ "job-retain-until", // IPP JobExt
+ "job-retain-until-default", // IPP JobExt
+ "job-retain-until-interval", // IPP JobExt
+ "job-retain-until=interval-default",// IPP JobExt
+ "job-retain-until-interval-supported",
+ // IPP JobExt
+ "job-retain-until-supported", // IPP JobExt
+ "job-retain-until-time", // IPP JobExt
+ "job-retain-until-time-supported", // IPP JobExt
+ "job-sheet-message", // IPP PPX
+ "job-sheet-message-supported", // IPP PPX
"job-sheets",
- "job-sheets-col",
- "job-sheets-col-default",
- "job-sheets-col-supported",
+ "job-sheets-col", // IPP JobExt
+ "job-sheets-col-default", // IPP JobExt
+ "job-sheets-col-supported", // IPP JobExt
"job-sheets-default",
"job-sheets-supported",
- "logo-uri-schemes-supported",
+ "laminating-sides-supported", // IPP FIN
+ "laminating-type-supported", // IPP FIN
+ "logo-uri-schemes-supported", // IPP FaxOut
"material-amount-units-supported", // IPP 3D
"material-diameter-supported", // IPP 3D
"material-purpose-supported", // IPP 3D
"material-rate-supported", // IPP 3D
"material-rate-units-supported", // IPP 3D
- "material-shell-thickness-supported",// IPP 3D
+ "material-shell-thickness-supported",
+ // IPP 3D
"material-temperature-supported", // IPP 3D
"material-type-supported", // IPP 3D
"materials-col", // IPP 3D
"materials-col-ready", // IPP 3D
"materials-col-supported", // IPP 3D
"max-materials-col-supported", // IPP 3D
- "max-save-info-supported",
- "max-stitching-locations-supported",
+ "max-page-ranges-supported",
+ "max-stitching-locations-supported",// IPP FIN
"media",
- "media-back-coating-supported",
- "media-bottom-margin-supported",
- "media-col",
- "media-col-default",
- "media-col-ready",
- "media-col-supported",
- "media-color-supported",
+ "media-back-coating-supported", // IPP JobExt
+ "media-bottom-margin-supported", // IPP JobExt
+ "media-col", // IPP JobExt
+ "media-col-default", // IPP JobExt
+ "media-col-ready", // IPP JobExt
+ "media-col-supported", // IPP JobExt
+ "media-color-supported", // IPP JobExt
"media-default",
- "media-front-coating-supported",
- "media-grain-supported",
- "media-hole-count-supported",
- "media-info-supported",
- "media-input-tray-check",
- "media-input-tray-check-default",
- "media-input-tray-check-supported",
- "media-key-supported",
- "media-left-margin-supported",
- "media-order-count-supported",
- "media-pre-printed-supported",
+ "media-front-coating-supported", // IPP JobExt
+ "media-grain-supported", // IPP JobExt
+ "media-hole-count-supported", // IPP JobExt
+ "media-info-supported", // IPP JobExt
+ "media-input-tray-check", // IPP PPX
+ "media-input-tray-check-default", // IPP PPX
+ "media-input-tray-check-supported", // IPP PPX
+ "media-key-supported", // IPP JobExt
+ "media-left-margin-supported", // IPP JobExt
+ "media-order-count-supported", // IPP JobExt
+ "media-overprint", // IPP NODRIVER
+ "media-overprint-distance-supported",
+ // IPP NODRIVER
+ "media-overprint-method-supported", // IPP NODRIVER
+ "media-overprint-supported", // IPP NODRIVER
+ "media-pre-printed-supported", // IPP JobExt
"media-ready",
- "media-recycled-supported",
- "media-right-margin-supported",
- "media-size-supported",
- "media-source-supported",
+ "media-recycled-supported", // IPP JobExt
+ "media-right-margin-supported", // IPP JobExt
+ "media-size-supported", // IPP JobExt
+ "media-source-supported", // IPP JobExt
"media-supported",
- "media-thickness-supported",
- "media-top-margin-supported",
- "media-type-supported",
- "media-weight-metric-supported",
+ "media-thickness-supported", // IPP JobExt
+ "media-top-margin-supported", // IPP JobExt
+ "media-type-supported", // IPP JobExt
+ "media-weight-metric-supported", // IPP JobExt
"multiple-document-handling",
"multiple-document-handling-default",
"multiple-document-handling-supported",
"multiple-object-handling", // IPP 3D
"multiple-object-handling-default", // IPP 3D
- "multiple-object-handling-supported",// IPP 3D
+ "multiple-object-handling-supported",
+ // IPP 3D
"number-of-retries", // IPP FaxOut
"number-of-retries-default",
"number-of-retries-supported",
"output-bin",
"output-bin-default",
"output-bin-supported",
- "output-device",
- "output-device-supported",
- "output-device-uuid-supported", // IPP INFRA
+ "output-device", // IPP JobExt
+ "output-device-supported", // IPP JobExt
"output-mode", // CUPS extension
"output-mode-default", // CUPS extension
"output-mode-supported", // CUPS extension
"overrides",
"overrides-supported",
- "page-delivery",
- "page-delivery-default",
- "page-delivery-supported",
- "page-order-received",
- "page-order-received-default",
- "page-order-received-supported",
+ "page-delivery", // IPP PPX
+ "page-delivery-default", // IPP PPX
+ "page-delivery-supported", // IPP PPX
"page-ranges",
"page-ranges-supported",
- "pages-per-subset",
- "pages-per-subset-supported",
- "pdl-init-file",
- "pdl-init-file-default",
- "pdl-init-file-entry-supported",
- "pdl-init-file-location-supported",
- "pdl-init-file-name-subdirectory-supported",
- "pdl-init-file-name-supported",
- "pdl-init-file-supported",
"platform-temperature", // IPP 3D
"platform-temperature-default", // IPP 3D
"platform-temperature-supported", // IPP 3D
- "presentation-direction-number-up",
+ "preferred-attributes-supported", // IPP NODRIVER
+ "presentation-direction-number-up", // IPP PPX
"presentation-direction-number-up-default",
+ // IPP PPX
"presentation-direction-number-up-supported",
+ // IPP PPX
"print-accuracy", // IPP 3D
"print-accuracy-default", // IPP 3D
"print-accuracy-supported", // IPP 3D
"print-base", // IPP 3D
"print-base-default", // IPP 3D
"print-base-supported", // IPP 3D
- "print-color-mode",
- "print-color-mode-default",
- "print-color-mode-supported",
- "print-content-optimize",
- "print-content-optimize-default",
- "print-content-optimize-supported",
+ "print-color-mode", // IPP NODRIVER
+ "print-color-mode-default", // IPP NODRIVER
+ "print-color-mode-supported", // IPP NODRIVER
+ "print-content-optimize", // IPP JobExt
+ "print-content-optimize-default", // IPP JobExt
+ "print-content-optimize-supported", // IPP JobExt
"print-objects", // IPP 3D
"print-objects-default", // IPP 3D
"print-objects-supported", // IPP 3D
+ "print-processing-attributes-supported",
+ // IPP NODRIVER
"print-quality",
"print-quality-default",
"print-quality-supported",
- "print-rendering-intent",
- "print-rendering-intent-default",
- "print-rendering-intent-supported",
- "print-scaling", // IPP Paid Printing
- "print-scaling-default", // IPP Paid Printing
- "print-scaling-supported", // IPP Paid Printing
+ "print-rendering-intent", // IPP NODRIVER
+ "print-rendering-intent-default", // IPP NODRIVER
+ "print-rendering-intent-supported", // IPP NODRIVER
+ "print-scaling", // IPP NODRIVER
+ "print-scaling-default", // IPP NODRIVER
+ "print-scaling-supported", // IPP NODRIVER
"print-supports", // IPP 3D
"print-supports-default", // IPP 3D
"print-supports-supported", // IPP 3D
"printer-resolution",
"printer-resolution-default",
"printer-resolution-supported",
- "proof-print",
- "proof-print-default",
- "proof-print-supported",
+ "proof-copies", // IPP EPX
+ "proof-copies-supported", // IPP EPX
+ "proof-print", // IPP EPX
+ "proof-print-default", // IPP EPX
+ "proof-print-supported" // IPP EPX
+ "punching-hole-diameter-configured",// IPP FIN
+ "punching-locations-supported", // IPP FIN
+ "punching-offset-supported", // IPP FIN
+ "punching-reference-edge-supported",// IPP FIN
"retry-interval", // IPP FaxOut
"retry-interval-default",
"retry-interval-supported",
"retry-timeout", // IPP FaxOut
"retry-timeout-default",
"retry-timeout-supported",
- "save-disposition-supported",
- "save-document-format-default",
- "save-document-format-supported",
- "save-location-default",
- "save-location-supported",
- "save-name-subdirectory-supported",
- "save-name-supported",
- "separator-sheets",
- "separator-sheets-default",
- "separator-sheets-supported",
- "sheet-collate",
- "sheet-collate-default",
- "sheet-collate-supported",
+ "separator-sheets", // IPP PPX
+ "separator-sheets-default", // IPP PPX
+ "separator-sheets-supported", // IPP PPX
+ "separator-sheets-type-supported", // IPP PPX
"sides",
"sides-default",
"sides-supported",
- "stitching-locations-supported",
- "stitching-offset-supported",
- "x-image-position",
- "x-image-position-default",
- "x-image-position-supported",
- "x-image-shift",
- "x-image-shift-default",
- "x-image-shift-supported",
- "x-side1-image-shift",
- "x-side1-image-shift-default",
- "x-side1-image-shift-supported",
- "x-side2-image-shift",
- "x-side2-image-shift-default",
- "x-side2-image-shift-supported",
- "y-image-position",
- "y-image-position-default",
- "y-image-position-supported",
- "y-image-shift",
- "y-image-shift-default",
- "y-image-shift-supported",
- "y-side1-image-shift",
- "y-side1-image-shift-default",
- "y-side1-image-shift-supported",
- "y-side2-image-shift",
- "y-side2-image-shift-default",
- "y-side2-image-shift-supported"
+ "stitching-angle-supported", // IPP FIN
+ "stitching-locations-supported", // IPP FIN
+ "stitching-method-supported", // IPP FIN
+ "stitching-offset-supported", // IPP FIN
+ "stitching-reference-edge-supported",
+ // IPP FIN
+ "x-image-position", // IPP PPX
+ "x-image-position-default", // IPP PPX
+ "x-image-position-supported", // IPP PPX
+ "x-image-shift", // IPP PPX
+ "x-image-shift-default", // IPP PPX
+ "x-image-shift-supported", // IPP PPX
+ "x-side1-image-shift", // IPP PPX
+ "x-side1-image-shift-default", // IPP PPX
+ "x-side1-image-shift-supported", // IPP PPX
+ "x-side2-image-shift", // IPP PPX
+ "x-side2-image-shift-default", // IPP PPX
+ "x-side2-image-shift-supported", // IPP PPX
+ "y-image-position", // IPP PPX
+ "y-image-position-default", // IPP PPX
+ "y-image-position-supported", // IPP PPX
+ "y-image-shift", // IPP PPX
+ "y-image-shift-default", // IPP PPX
+ "y-image-shift-supported", // IPP PPX
+ "y-side1-image-shift", // IPP PPX
+ "y-side1-image-shift-default", // IPP PPX
+ "y-side1-image-shift-supported", // IPP PPX
+ "y-side2-image-shift", // IPP PPX
+ "y-side2-image-shift-default", // IPP PPX
+ "y-side2-image-shift-supported" // IPP PPX
};
static const char * const printer_description[] =
{ // printer-description group
"device-service-count",
"device-uri", // CUPS extension
"device-uuid",
- "document-charset-default",
- "document-charset-supported",
+ "document-charset-default", // IPP JobExt
+ "document-charset-supported", // IPP JobExt
"document-creation-attributes-supported",
- "document-digital-signature-default",
- "document-digital-signature-supported",
"document-format-default",
- "document-format-details-default",
- "document-format-details-supported",
+ "document-format-details-supported",// IPP JobExt
"document-format-preferred", // AirPrint extension
"document-format-supported",
"document-format-varying-attributes",
- "document-format-version-default",
- "document-format-version-supported",
- "document-natural-language-default",
+ "document-natural-language-default",// IPP JobExt
"document-natural-language-supported",
- "document-password-supported",
+ // IPP JobExt
+ "document-password-supported", // IPP NODRIVER
"document-privacy-attributes", // IPP Privacy Attributes
"document-privacy-scope", // IPP Privacy Attributes
"generated-natural-language-supported",
- "identify-actions-default",
- "identify-actions-supported",
- "input-source-supported",
- "ipp-features-supported",
+ "identify-actions-default", // IPP NODRIVER
+ "identify-actions-supported", // IPP NODRIVER
+ "input-source-supported", // IPP FaxOut
+ "ipp-features-supported", // IPP NODRIVER
"ipp-versions-supported",
- "ippget-event-life",
+ "ippget-event-life", // RFC 3995
"job-authorization-uri-supported", // CUPS extension
- "job-constraints-supported",
- "job-creation-attributes-supported",
- "job-finishings-col-ready",
- "job-finishings-ready",
- "job-ids-supported",
+ "job-constraints-supported", // IPP NODRIVER
+ "job-creation-attributes-supported",// IPP JobExt
+ "job-history-attributes-configured",// IPP JobExt
+ "job-history-attributes-supported", // IPP JobExt
+ "job-ids-supported", // IPP JobExt
"job-impressions-supported",
"job-k-limit", // CUPS extension
"job-k-octets-supported",
+ "job-mandatory-attributes-supported",
+ // IPP JobExt
"job-media-sheets-supported",
"job-page-limit", // CUPS extension
- "job-password-encryption-supported",
- "job-password-supported",
- "job-presets-supported", // IPP Driver Replacement Extensions
+ "job-pages-per-set-supported", // IPP FIN
+ "job-password-encryption-supported",// IPP EPX
+ "job-password-length-supported", // IPP EPX
+ "job-password-repertoire-configured",
+ // IPP EPX
+ "job-password-repertoire-supported",// IPP EPX
+ "job-password-supported", // IPP EPX
+ "job-presets-supported", // IPP NODRIVER
"job-privacy-attributes", // IPP Privacy Attributes
"job-privacy-scope", // IPP Privacy Attributes
"job-quota-period", // CUPS extension
- "job-resolvers-supported", // IPP Driver Replacement Extensions
- "job-settable-attributes-supported",
- "job-spooling-supported",
- "job-triggers-supported", // IPP Driver Replacement Extensions
- "jpeg-k-octets-supported", // CUPS extension
- "jpeg-x-dimension-supported", // CUPS extension
- "jpeg-y-dimension-supported", // CUPS extension
+ "job-release-action-default", // IPP EPX
+ "job-release-action-supported", // IPP EPX
+ "job-resolvers-supported", // IPP NODRIVER
+ "job-settable-attributes-supported",// RFC 3380
+ "job-spooling-supported", // IPP JobExt
+ "job-storage-access-supported", // IPP EPX
+ "job-storage-disposition-supported",// IPP EPX
+ "job-storage-group-supported", // IPP EPX
+ "job-storage-supported", // IPP EPX
+ "job-triggers-supported", // IPP NODRIVER
+ "jpeg-features-supported", // IPP NODRIVER
+ "jpeg-k-octets-supported", // IPP NODRIVER
+ "jpeg-x-dimension-supported", // IPP NODRIVER
+ "jpeg-y-dimension-supported", // IPP NODRIVER
"landscape-orientation-requested-preferred",
- // CUPS extension
+ // AirPrint extension
"marker-change-time", // CUPS extension
"marker-colors", // CUPS extension
"marker-high-levels", // CUPS extension
"member-names", // CUPS extension
"member-uris", // CUPS extension
"mopria-certified", // Mopria extension
- "multiple-destination-uris-supported",// IPP FaxOut
+ "multiple-destination-uris-supported",
+ // IPP FaxOut
"multiple-document-jobs-supported",
"multiple-operation-time-out",
"multiple-operation-time-out-action",
+ // IPP NODRIVER
"natural-language-configured",
"operations-supported",
+ "output-device-uuid-supported", // IPP INFRA
"pages-per-minute",
"pages-per-minute-color",
"pdf-k-octets-supported", // CUPS extension
"pdf-versions-supported", // CUPS extension
"pdl-override-supported",
"platform-shape", // IPP 3D
+ "pkcs7-document-format-supported", // IPP TRUSTNOONE
"port-monitor", // CUPS extension
"port-monitor-supported", // CUPS extension
"preferred-attributes-supported",
"printer-config-changes", // IPP System
"printer-contact-col", // IPP System
"printer-current-time",
- "printer-detailed-status-messages",
+ "printer-detailed-status-messages", // IPP EPX
"printer-device-id",
"printer-dns-sd-name", // CUPS extension
"printer-driver-installer",
"printer-fax-modem-info", // IPP FaxOut
"printer-fax-modem-name", // IPP FaxOut
"printer-fax-modem-number", // IPP FaxOut
+ "printer-finisher", // IPP FIN
+ "printer-finisher-description", // IPP FIN
+ "printer-finisher-supplies", // IPP FIN
+ "printer-finisher-supplies-description",
+ // IPP FIN
"printer-firmware-name", // PWG 5110.1
"printer-firmware-patches", // PWG 5110.1
"printer-firmware-string-version", // PWG 5110.1
"printer-icons",
"printer-id", // IPP System
"printer-info",
- "printer-input-tray", // IPP JPS3
+ "printer-input-tray", // IPP NODRIVER
"printer-is-accepting-jobs",
"printer-is-shared", // CUPS extension
"printer-is-temporary", // CUPS extension
"printer-more-info",
"printer-more-info-manufacturer",
"printer-name",
- "printer-native-formats",
"printer-organization",
"printer-organizational-unit",
- "printer-output-tray", // IPP JPS3
+ "printer-output-tray", // IPP NODRIVER
+ "printer-pkcs7-public-key", // IPP TRUSTNOONE
+ "printer-pkcs7-repertoire-configured",
+ // IPP TRUSTNOONE
+ "printer-pkcs7-repertoire-supported",
+ // IPP TRUSTNOONE
"printer-service-type", // IPP System
"printer-settable-attributes-supported",
+ // RFC 3380
+ "printer-service-contact-col", // IPP EPX
"printer-state",
"printer-state-change-date-time",
"printer-state-change-time",
"printer-state-message",
"printer-state-reasons",
+ "printer-storage", // IPP EPX
+ "printer-storage-description", // IPP EPX
"printer-strings-languages-supported",
- // IPP JPS3
- "printer-strings-uri", // IPP JPS3
+ // IPP NODRIVER
+ "printer-strings-uri", // IPP NODRIVER
"printer-supply",
"printer-supply-description",
"printer-supply-info-uri",
"printer-wifi-ssid", // AirPrint extension
"printer-wifi-state", // AirPrint extension
"printer-xri-supported",
+ "proof-copies-supported", // IPP EPX
+ "proof-print-copies-supported", // IPP EPX
"pwg-raster-document-resolution-supported",
- "pwg-raster-document-sheet-back",
+ // PWG Raster
+ "pwg-raster-document-sheet-back", // PWG Raster
"pwg-raster-document-type-supported",
+ // PWG Raster
"queued-job-count",
"reference-uri-schemes-supported",
"repertoire-supported",
"subordinate-printers-supported",
"subscription-privacy-attributes", // IPP Privacy Attributes
"subscription-privacy-scope", // IPP Privacy Attributes
- "urf-supported", // CUPS extension
+ "trimming-offset-supported", // IPP FIN
+ "trimming-reference-edge-supported",// IPP FIN
+ "trimming-type-supported", // IPP FIN
+ "trimming-when-supported", // IPP FIN
+ "urf-supported", // AirPrint
"uri-authentication-supported",
"uri-security-supported",
- "user-defined-value-supported",
- "which-jobs-supported",
+ "which-jobs-supported", // IPP JobExt
"xri-authentication-supported",
"xri-security-supported",
"xri-uri-scheme-supported"
"notify-subscriber-user-name",
"notify-subscriber-user-uri",
"notify-subscription-id",
- "notify-subscription-uuid" // IPP JPS3
+ "notify-subscription-uuid" // IPP NODRIVER
};
static const char * const subscription_template[] =
{ // subscription-template group
{ // system-description group - IPP System
"charset-configured",
"charset-supported",
+ "document-format-supported",
"generated-natural-language-supported",
"ipp-features-supported",
"ipp-versions-supported",
+ "ippget-event-life",
+ "multiple-document-printers-supported",
"natural-language-configured",
+ "notify-attributes-supported",
+ "notify-events-default",
+ "notify-events-supported",
+ "notify-lease-duration-default",
+ "notify-lease-duration-supported",
+ "notify-max-events-supported",
+ "notify-pull-method-supported",
"operations-supported",
"power-calendar-policy-col",
"power-event-policy-col",
"power-timeout-policy-col",
"printer-creation-attributes-supported",
+ "printer-service-type-supported",
+ "resource-format-supported",
+ "resource-type-supported",
"resource-settable-attributes-supported",
"smi2699-auth-group-supported", // PWG ippserver extension
"smi2699-device-command-supported", // PWG ippserver extension
"system-contact-col",
"system-current-time",
"system-default-printer-id",
- "system-device-id",
"system-geo-location",
"system-info",
"system-location",
"system-make-and-model",
"system-message-from-operator",
"system-name",
+ "system-owner-col",
"system-settable-attributes-supported",
"system-strings-languages-supported",
"system-strings-uri",
"system-config-changes",
"system-configured-printers",
"system-configured-resources",
+ "system-firmware-name",
+ "system-firmware-patches",
+ "system-firmware-string-version",
+ "system-firmware-version",
+ "system-impressions-completed",
+ "system-impressions-completed-col",
+ "system-media-sheets-completed",
+ "system-media-sheets-completed-col",
+ "system-pages-completed",
+ "system-pages-completed-col",
+ "system-resident-application-name",
+ "system-resident-application-patches",
+ "system-resident-application-string-version",
+ "system-resident-application-version",
"system-serial-number",
"system-state",
"system-state-change-date-time",
"system-state-change-time",
"system-state-message",
"system-state-reasons",
+ "system-time-source-configured",
"system-up-time",
- "system-uuid"
+ "system-user-application-name",
+ "system-user-application-patches",
+ "system-user-application-string-version",
+ "system-user-application-version",
+ "system-uuid",
+ "xri-authentication-supported",
+ "xri-security-supported",
+ "xri-uri-scheme-supported"
};
- /*
- * Get the requested-attributes attribute...
- */
-
+ // Get the requested-attributes attribute...
op = ippGetOperation(request);
if ((requested = ippFindAttribute(request, "requested-attributes", IPP_TAG_KEYWORD)) == NULL)
{
- /*
- * The Get-Jobs operation defaults to "job-id" and "job-uri", all others
- * default to "all"...
- */
-
+ // The Get-Jobs operation defaults to "job-id" and "job-uri", and
+ // Get-Documents defaults to "document-number", while all others default to
+ // "all"...
if (op == IPP_OP_GET_JOBS)
{
- ra = cupsArrayNew((cups_array_func_t)_cupsArrayStrcmp, NULL);
+ ra = cupsArrayNew(_cupsArrayStrcmp, NULL);
cupsArrayAdd(ra, "job-id");
cupsArrayAdd(ra, "job-uri");
return (ra);
}
+ else if (op == IPP_OP_GET_DOCUMENTS)
+ {
+ ra = cupsArrayNew(_cupsArrayStrcmp, NULL);
+ cupsArrayAdd(ra, "document-number");
+
+ return (ra);
+ }
else
+ {
return (NULL);
+ }
}
- /*
- * If the attribute contains a single "all" keyword, return NULL...
- */
-
+ // If the attribute contains a single "all" keyword, return NULL...
count = ippGetCount(requested);
if (count == 1 && !strcmp(ippGetString(requested, 0, NULL), "all"))
return (NULL);
- /*
- * Create an array using "strcmp" as the comparison function...
- */
-
- ra = cupsArrayNew((cups_array_func_t)_cupsArrayStrcmp, NULL);
+ // Create an array using "strcmp" as the comparison function...
+ ra = cupsArrayNew(_cupsArrayStrcmp, NULL);
for (i = 0; i < count; i ++)
{
- added = 0;
+ added = false;
value = ippGetString(requested, i, NULL);
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)))
{
- for (j = 0; j < (int)(sizeof(document_description) / sizeof(document_description[0])); j ++)
+ for (j = 0; j < (sizeof(document_description) / sizeof(document_description[0])); j ++)
cupsArrayAdd(ra, (void *)document_description[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "document-template") || !strcmp(value, "all"))
{
- for (j = 0; j < (int)(sizeof(document_template) / sizeof(document_template[0])); j ++)
+ for (j = 0; j < (sizeof(document_template) / sizeof(document_template[0])); j ++)
cupsArrayAdd(ra, (void *)document_template[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "job-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_JOB_ATTRIBUTES || op == IPP_OP_GET_JOBS)))
{
- for (j = 0; j < (int)(sizeof(job_description) / sizeof(job_description[0])); j ++)
+ for (j = 0; j < (sizeof(job_description) / sizeof(job_description[0])); j ++)
cupsArrayAdd(ra, (void *)job_description[j]);
- added = 1;
+ added = true;
}
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 || op == IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES)))
{
- for (j = 0; j < (int)(sizeof(job_template) / sizeof(job_template[0])); j ++)
+ for (j = 0; j < (sizeof(job_template) / sizeof(job_template[0])); j ++)
cupsArrayAdd(ra, (void *)job_template[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "printer-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_PRINTER_ATTRIBUTES || op == IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES || op == IPP_OP_GET_PRINTERS || op == IPP_OP_CUPS_GET_DEFAULT || op == IPP_OP_CUPS_GET_PRINTERS || op == IPP_OP_CUPS_GET_CLASSES)))
{
- for (j = 0; j < (int)(sizeof(printer_description) / sizeof(printer_description[0])); j ++)
+ for (j = 0; j < (sizeof(printer_description) / sizeof(printer_description[0])); j ++)
cupsArrayAdd(ra, (void *)printer_description[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "resource-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_RESOURCE_ATTRIBUTES || op == IPP_OP_GET_RESOURCES)))
{
- for (j = 0; j < (int)(sizeof(resource_description) / sizeof(resource_description[0])); j ++)
+ for (j = 0; j < (sizeof(resource_description) / sizeof(resource_description[0])); j ++)
cupsArrayAdd(ra, (void *)resource_description[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "resource-status") || (!strcmp(value, "all") && (op == IPP_OP_GET_RESOURCE_ATTRIBUTES || op == IPP_OP_GET_RESOURCES)))
{
- for (j = 0; j < (int)(sizeof(resource_status) / sizeof(resource_status[0])); j ++)
+ for (j = 0; j < (sizeof(resource_status) / sizeof(resource_status[0])); j ++)
cupsArrayAdd(ra, (void *)resource_status[j]);
- added = 1;
+ added = true;
}
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)))
{
- for (j = 0; j < (int)(sizeof(resource_template) / sizeof(resource_template[0])); j ++)
+ for (j = 0; j < (sizeof(resource_template) / sizeof(resource_template[0])); j ++)
cupsArrayAdd(ra, (void *)resource_template[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "subscription-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES || op == IPP_OP_GET_SUBSCRIPTIONS)))
{
- for (j = 0; j < (int)(sizeof(subscription_description) / sizeof(subscription_description[0])); j ++)
+ for (j = 0; j < (sizeof(subscription_description) / sizeof(subscription_description[0])); j ++)
cupsArrayAdd(ra, (void *)subscription_description[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "subscription-template") || (!strcmp(value, "all") && (op == IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES || op == IPP_OP_GET_SUBSCRIPTIONS)))
{
- for (j = 0; j < (int)(sizeof(subscription_template) / sizeof(subscription_template[0])); j ++)
+ for (j = 0; j < (sizeof(subscription_template) / sizeof(subscription_template[0])); j ++)
cupsArrayAdd(ra, (void *)subscription_template[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "system-description") || (!strcmp(value, "all") && op == IPP_OP_GET_SYSTEM_ATTRIBUTES))
{
- for (j = 0; j < (int)(sizeof(system_description) / sizeof(system_description[0])); j ++)
+ for (j = 0; j < (sizeof(system_description) / sizeof(system_description[0])); j ++)
cupsArrayAdd(ra, (void *)system_description[j]);
- added = 1;
+ added = true;
}
if (!strcmp(value, "system-status") || (!strcmp(value, "all") && op == IPP_OP_GET_SYSTEM_ATTRIBUTES))
{
- for (j = 0; j < (int)(sizeof(system_status) / sizeof(system_status[0])); j ++)
+ for (j = 0; j < (sizeof(system_status) / sizeof(system_status[0])); j ++)
cupsArrayAdd(ra, (void *)system_status[j]);
- added = 1;
+ added = true;
}
if (!added)
_cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals
- /*
- * Check for standard enum values...
- */
-
+ // Check for standard enum values...
if (!strcmp(attrname, "document-state") && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]))))
return (ipp_document_states[enumvalue - 3]);
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"))
else if (enumvalue >= 0x40000000 && enumvalue < (0x40000000 + (int)(sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0]))))
return (ipp_finishings_vendor[enumvalue - 0x40000000]);
}
- 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]))))
- return (ipp_job_collation_types[enumvalue - 3]);
else if (!strcmp(attrname, "job-state") && enumvalue >= IPP_JSTATE_PENDING && enumvalue <= IPP_JSTATE_COMPLETED)
return (ipp_job_states[enumvalue - IPP_JSTATE_PENDING]);
else if (!strcmp(attrname, "operations-supported"))
else if (!strcmp(attrname, "system-state") && enumvalue >= IPP_SSTATE_IDLE && enumvalue <= IPP_SSTATE_STOPPED)
return (ipp_system_states[enumvalue - IPP_SSTATE_IDLE]);
- /*
- * Not a standard enum value, just return the decimal equivalent...
- */
-
+ // Not a standard enum value, just return the decimal equivalent...
snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "%d", enumvalue);
return (cg->ipp_unknown);
}
// 'ippEnumValue()' - Return the value associated with a given enum string.
//
-int // O - Enum value or -1 if unknown
+int // O - Enum value or `-1` if unknown
ippEnumValue(const char *attrname, // I - Attribute name
const char *enumstring) // I - Enum string
{
- int i, // Looping var
+ size_t i, // Looping var
num_strings; // Number of strings to compare
const char * const *strings; // Strings to compare
- /*
- * If the string is just a number, return it...
- */
-
+ // If the string is just a number, return it...
if (isdigit(*enumstring & 255))
return ((int)strtol(enumstring, NULL, 0));
- /*
- * Otherwise look up the string...
- */
-
+ // Otherwise look up the string...
if (!strcmp(attrname, "document-state"))
{
- num_strings = (int)(sizeof(ipp_document_states) / sizeof(ipp_document_states[0]));
+ num_strings = sizeof(ipp_document_states) / sizeof(ipp_document_states[0]);
strings = ipp_document_states;
}
else if (!strcmp(attrname, "finishings") ||
!strcmp(attrname, "finishings-ready") ||
!strcmp(attrname, "finishings-supported"))
{
- for (i = 0;
- i < (int)(sizeof(ipp_finishings_vendor) /
- sizeof(ipp_finishings_vendor[0]));
- i ++)
+ for (i = 0; i < (sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0])); i ++)
+ {
if (!strcmp(enumstring, ipp_finishings_vendor[i]))
return (i + 0x40000000);
+ }
- num_strings = (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]));
+ num_strings = sizeof(ipp_finishings) / sizeof(ipp_finishings[0]);
strings = ipp_finishings;
}
- else if (!strcmp(attrname, "job-collation-type") ||
- !strcmp(attrname, "job-collation-type-actual"))
- {
- num_strings = (int)(sizeof(ipp_job_collation_types) /
- sizeof(ipp_job_collation_types[0]));
- strings = ipp_job_collation_types;
- }
else if (!strcmp(attrname, "job-state"))
{
- num_strings = (int)(sizeof(ipp_job_states) / sizeof(ipp_job_states[0]));
+ num_strings = sizeof(ipp_job_states) / sizeof(ipp_job_states[0]);
strings = ipp_job_states;
}
else if (!strcmp(attrname, "operations-supported"))
+ {
return (ippOpValue(enumstring));
+ }
else if (!strcmp(attrname, "orientation-requested") ||
!strcmp(attrname, "orientation-requested-actual") ||
!strcmp(attrname, "orientation-requested-default") ||
!strcmp(attrname, "orientation-requested-supported"))
{
- num_strings = (int)(sizeof(ipp_orientation_requesteds) /
- sizeof(ipp_orientation_requesteds[0]));
+ num_strings = sizeof(ipp_orientation_requesteds) / sizeof(ipp_orientation_requesteds[0]);
strings = ipp_orientation_requesteds;
}
else if (!strcmp(attrname, "print-quality") ||
!strcmp(attrname, "print-quality-default") ||
!strcmp(attrname, "print-quality-supported"))
{
- num_strings = (int)(sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]));
+ num_strings = sizeof(ipp_print_qualities) / sizeof(ipp_print_qualities[0]);
strings = ipp_print_qualities;
}
else if (!strcmp(attrname, "printer-state"))
{
- num_strings = (int)(sizeof(ipp_printer_states) / sizeof(ipp_printer_states[0]));
+ num_strings = sizeof(ipp_printer_states) / sizeof(ipp_printer_states[0]);
strings = ipp_printer_states;
}
else if (!strcmp(attrname, "resource-state"))
{
- num_strings = (int)(sizeof(ipp_resource_states) / sizeof(ipp_resource_states[0]));
+ num_strings = sizeof(ipp_resource_states) / sizeof(ipp_resource_states[0]);
strings = ipp_resource_states;
}
else if (!strcmp(attrname, "system-state"))
{
- num_strings = (int)(sizeof(ipp_system_states) / sizeof(ipp_system_states[0]));
+ num_strings = sizeof(ipp_system_states) / sizeof(ipp_system_states[0]);
strings = ipp_system_states;
}
else
+ {
return (-1);
+ }
for (i = 0; i < num_strings; i ++)
+ {
if (!strcmp(enumstring, strings[i]))
return (i + 3);
+ }
return (-1);
}
_cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals
- /*
- * See if the error code is a known value...
- */
-
+ // See if the error code is a known value...
if (error >= IPP_STATUS_OK && error <= IPP_STATUS_OK_EVENTS_COMPLETE)
return (ipp_status_oks[error]);
else if (error == IPP_STATUS_REDIRECTION_OTHER_SITE)
return ("redirection-other-site");
else if (error == IPP_STATUS_CUPS_SEE_OTHER)
return ("cups-see-other");
- else if (error >= IPP_STATUS_ERROR_BAD_REQUEST &&
- error <= IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED)
+ else if (error >= IPP_STATUS_ERROR_BAD_REQUEST && error <= IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED)
return (ipp_status_400s[error - IPP_STATUS_ERROR_BAD_REQUEST]);
- else if (error >= 0x480 &&
- error <= IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
- return (ipp_status_480s[error - 0x0480]);
- else if (error >= IPP_STATUS_ERROR_INTERNAL &&
- error <= IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS)
+ else if (error >= IPP_STATUS_ERROR_INTERNAL && error <= IPP_STATUS_ERROR_TOO_MANY_DOCUMENTS)
return (ipp_status_500s[error - IPP_STATUS_ERROR_INTERNAL]);
- else if (error >= IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED &&
- error <= IPP_STATUS_ERROR_CUPS_OAUTH)
+ else if (error >= IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED && error <= IPP_STATUS_ERROR_CUPS_OAUTH)
return (ipp_status_1000s[error - IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED]);
- /*
- * No, build an "0xxxxx" error string...
- */
-
+ // No, build an "0xxxxx" error string...
snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", error);
return (cg->ipp_unknown);
for (i = 0; i < (sizeof(ipp_status_oks) / sizeof(ipp_status_oks[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_status_oks[i]))
return ((ipp_status_t)i);
+ }
if (!_cups_strcasecmp(name, "redirection-other-site"))
return (IPP_STATUS_REDIRECTION_OTHER_SITE);
return (IPP_STATUS_CUPS_SEE_OTHER);
for (i = 0; i < (sizeof(ipp_status_400s) / sizeof(ipp_status_400s[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_status_400s[i]))
return ((ipp_status_t)(i + 0x400));
-
- for (i = 0; i < (sizeof(ipp_status_480s) / sizeof(ipp_status_480s[0])); i ++)
- if (!_cups_strcasecmp(name, ipp_status_480s[i]))
- return ((ipp_status_t)(i + 0x480));
+ }
for (i = 0; i < (sizeof(ipp_status_500s) / sizeof(ipp_status_500s[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_status_500s[i]))
return ((ipp_status_t)(i + 0x500));
+ }
for (i = 0; i < (sizeof(ipp_status_1000s) / sizeof(ipp_status_1000s[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_status_1000s[i]))
return ((ipp_status_t)(i + 0x1000));
+ }
return ((ipp_status_t)-1);
}
_cups_globals_t *cg = _cupsGlobals(); // Pointer to library globals
- /*
- * See if the operation ID is a known value...
- */
-
+ // See if the operation ID is a known value...
if (op >= IPP_OP_PRINT_JOB && op < (ipp_op_t)(sizeof(ipp_std_ops) / sizeof(ipp_std_ops[0])))
return (ipp_std_ops[op]);
else if (op == IPP_OP_PRIVATE)
else if (op >= IPP_OP_CUPS_GET_DOCUMENT && op <= IPP_OP_CUPS_CREATE_LOCAL_PRINTER)
return (ipp_cups_ops2[op - IPP_OP_CUPS_GET_DOCUMENT]);
- /*
- * No, build an "0xxxxx" operation string...
- */
-
+ // No, build an "0xxxxx" operation string...
snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", op);
return (cg->ipp_unknown);
return ((ipp_op_t)strtol(name + 2, NULL, 16));
for (i = 0; i < (sizeof(ipp_std_ops) / sizeof(ipp_std_ops[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_std_ops[i]))
return ((ipp_op_t)i);
+ }
if (!_cups_strcasecmp(name, "windows-ext"))
return (IPP_OP_PRIVATE);
for (i = 0; i < (sizeof(ipp_cups_ops) / sizeof(ipp_cups_ops[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_cups_ops[i]))
return ((ipp_op_t)(i + 0x4001));
+ }
for (i = 0; i < (sizeof(ipp_cups_ops2) / sizeof(ipp_cups_ops2[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_cups_ops2[i]))
return ((ipp_op_t)(i + 0x4027));
+ }
if (!_cups_strcasecmp(name, "Create-Job-Subscription"))
return (IPP_OP_CREATE_JOB_SUBSCRIPTIONS);
for (i = 0; i < (sizeof(ipp_tag_names) / sizeof(ipp_tag_names[0])); i ++)
+ {
if (!_cups_strcasecmp(name, ipp_tag_names[i]))
return ((ipp_tag_t)i);
+ }
if (!_cups_strcasecmp(name, "operation"))
return (IPP_TAG_OPERATION);
// Local functions...
//
-static ipp_attribute_t *ipp_add_attr(ipp_t *ipp, const char *name, ipp_tag_t group_tag, ipp_tag_t value_tag, int num_values);
+static ipp_attribute_t *ipp_add_attr(ipp_t *ipp, const char *name, ipp_tag_t group_tag, ipp_tag_t value_tag, int num_values);
static void ipp_free_values(ipp_attribute_t *attr, int element, int count);
static char *ipp_get_code(const char *locale, char *buffer, size_t bufsize) _CUPS_NONNULL(1,2);
static char *ipp_lang_code(const char *locale, char *buffer, size_t bufsize) _CUPS_NONNULL(1,2);
//
// 'ippAddBoolean()' - Add a boolean attribute to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddBooleans()' - Add an array of boolean values.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddCollection()' - Add a collection value.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// (`IPP_TAG_SUBSCRIPTION`), or unsupported (`IPP_TAG_UNSUPPORTED_GROUP`).
//
+// The "name" argument specifies the name of the attribute, while the "value"
+// argument provides an IPP message containing the collection member attributes.
+//
+// > **Note:** You must call the @link ippDelete@ function on the "value"
+// > argument to make sure the memory used by the value is released.
+//
// @since CUPS 1.1.19@
//
//
// 'ippAddCollections()' - Add an array of collection values.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// (`IPP_TAG_SUBSCRIPTION`), or unsupported (`IPP_TAG_UNSUPPORTED_GROUP`).
//
+// The "name" argument specifies the name of the attribute, while the
+// "num_values" and "values" arguments provide IPP messages containing the
+// collection member attributes for each value.
+//
+// > **Note:** You must call the @link ippDelete@ function on each of the
+// > "values" arguments to make sure the memory used by the value is released.
+//
// @since CUPS 1.1.19@
//
// This function adds a 1setOf text attribute to an IPP message corresponding to
// the specified credentials string.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddDate()' - Add a dateTime attribute to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// This function adds an integer or enum attribute to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddIntegers()' - Add an array of integer values.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddOctetString()' - Add an octetString value to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddOutOfBand()' - Add an out-of-band value to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddRange()' - Add a range of values to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// (`IPP_TAG_SUBSCRIPTION`), or unsupported (`IPP_TAG_UNSUPPORTED_GROUP`).
//
-// The "lower" parameter must be less than or equal to the "upper" parameter.
+// The "lower" argument must be less than or equal to the "upper" argument.
//
ipp_attribute_t * // O - New attribute
//
// 'ippAddRanges()' - Add ranges of values to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddResolution()' - Add a resolution value to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddResolutions()' - Add resolution values to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
//
// 'ippAddSeparator()' - Add a group separator to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
//
// 'ippAddString()' - Add a language-encoded string to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// (`IPP_TAG_TEXTLANG`), uri (`IPP_TAG_URI`), and uriScheme
// (`IPP_TAG_URISCHEME`).
//
-// The "language" parameter must be non-`NULL` for nameWithLanguage and
+// The "language" argument must be non-`NULL` for nameWithLanguage and
// textWithLanguage string values and must be `NULL` for all other string values.
//
//
// 'ippAddStringf()' - Add a formatted string to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document
// (`IPP_TAG_DOCUMENT`), event notification
// (`IPP_TAG_EVENT_NOTIFICATION`), operation (`IPP_TAG_OPERATION`),
// (`IPP_TAG_TEXTLANG`), uri (`IPP_TAG_URI`), and uriScheme
// (`IPP_TAG_URISCHEME`).
//
-// The "language" parameter must be non-`NULL` for nameWithLanguage
+// The "language" argument must be non-`NULL` for nameWithLanguage
// and textWithLanguage string values and must be `NULL` for all other
// string values.
//
-// The "format" parameter uses formatting characters compatible with the
+// The "format" argument uses formatting characters compatible with the
// printf family of standard functions. Additional arguments follow it as
// needed. The formatted string is truncated as needed to the maximum length of
// the corresponding value type.
//
// 'ippAddStringfv()' - Add a formatted string to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document
// (`IPP_TAG_DOCUMENT`), event notification
// (`IPP_TAG_EVENT_NOTIFICATION`), operation (`IPP_TAG_OPERATION`),
// (`IPP_TAG_TEXTLANG`), uri (`IPP_TAG_URI`), and uriScheme
// (`IPP_TAG_URISCHEME`).
//
-// The "language" parameter must be non-`NULL` for nameWithLanguage
+// The "language" argument must be non-`NULL` for nameWithLanguage
// and textWithLanguage string values and must be `NULL` for all other
// string values.
//
-// The "format" parameter uses formatting characters compatible with the
+// The "format" argument uses formatting characters compatible with the
// printf family of standard functions. Additional arguments are passed in the
// stdarg pointer "ap". The formatted string is truncated as needed to the
// maximum length of the corresponding value type.
//
// 'ippAddStrings()' - Add language-encoded strings to an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// (`IPP_TAG_TEXTLANG`), uri (`IPP_TAG_URI`), and uriScheme
// (`IPP_TAG_URISCHEME`).
//
-// The "language" parameter must be non-`NULL` for nameWithLanguage and
+// The "language" argument must be non-`NULL` for nameWithLanguage and
// textWithLanguage string values and must be `NULL` for all other string values.
//
// 'ippContainsInteger()' - Determine whether an attribute contains the
// specified value or is within the list of ranges.
//
-// Returns non-zero when the attribute contains either a matching integer or
-// enum value, or the value falls within one of the rangeOfInteger values for
-// the attribute.
+// This function returns non-zero when the attribute contains either a matching
+// integer or enum value, or the value falls within one of the rangeOfInteger
+// values for the attribute.
//
// @since CUPS 1.7@
//
// 'ippContainsString()' - Determine whether an attribute contains the
// specified string value.
//
-// Returns non-zero when the attribute contains a matching charset, keyword,
-// naturalLanguage, mimeMediaType, name, text, uri, or uriScheme value.
+// This function returns non-zero when the attribute contains a matching
+// charset, keyword, naturalLanguage, mimeMediaType, name, text, uri, or
+// uriScheme value.
//
// @since CUPS 1.7@
//
return (1);
}
}
+ break;
case IPP_TAG_MIMETYPE :
case IPP_TAG_NAME :
return (1);
}
}
+ break;
default :
break;
//
// 'ippCopyAttribute()' - Copy an attribute.
//
-// The specified attribute, @code attr@, is copied to the destination IPP message.
-// When "quickcopy" is non-zero, a "shallow" reference copy of the attribute is
-// created - this should only be done as long as the original source IPP message will
-// not be freed for the life of the destination.
+// This function copies an attribute to another IPP message. When "quickcopy"
+// is non-zero, a shallow reference copy of the attribute is created - this
+// should only be done as long as the original source IPP message will not be
+// freed for the life of the destination.
//
// @since CUPS 1.6@
//
ippCopyAttribute(
ipp_t *dst, // I - Destination IPP message
ipp_attribute_t *srcattr, // I - Attribute to copy
- int quickcopy) // I - 1 for a referenced copy, 0 for normal
+ int quickcopy) // I - `1` for a referenced copy, `0` for a new copy
{
int i; // Looping var
ipp_tag_t srctag, // Source value tag
//
// 'ippCopyAttributes()' - Copy attributes from one IPP message to another.
//
-// Zero or more attributes are copied from the source IPP message "src" to the
-// destination IPP message "dst". When "quickcopy" is non-zero, a "shallow"
-// reference copy of the attribute is created - this should only be done as long
-// as the original source IPP message will not be freed for the life of the
+// This function copies zero or more attributes from the source to the
+// destination IPP message. When "quickcopy" is non-zero, a shallow reference
+// copy of the attribute is created - this should only be done as long as the
+// original source IPP message will not be freed for the life of the
// destination.
//
-// The "cb" and "context" parameters provide a generic way to "filter" the
-// attributes that are copied - the function must return 1 to copy the attribute or
-// 0 to skip it. The function may also choose to do a partial copy of the source attribute
-// itself.
+// The "cb" and "cb_data" arguments provide a generic way to "filter" the
+// attributes that are copied - the function must return `1` to copy the
+// attribute or `0` to skip it. The function may also choose to do a
+// partial copy of the source attribute itself and return `0` to tell this
+// function to skip it.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on error
+int // O - `1` on success, `0` on error
ippCopyAttributes(
ipp_t *dst, // I - Destination IPP message
ipp_t *src, // I - Source IPP message
- int quickcopy, // I - 1 for a referenced copy, 0 for normal
+ int quickcopy, // I - `1` for a referenced copy, `0` for normal
ipp_copy_cb_t cb, // I - Copy callback or `NULL` for none
- void *context) // I - Context pointer
+ void *cb_data) // I - Callback data pointer
{
ipp_attribute_t *srcattr; // Source attribute
- DEBUG_printf("ippCopyAttributes(dst=%p, src=%p, quickcopy=%d, cb=%p, context=%p)", (void *)dst, (void *)src, quickcopy, (void *)cb, context);
+ DEBUG_printf("ippCopyAttributes(dst=%p, src=%p, quickcopy=%d, cb=%p, cb_data=%p)", (void *)dst, (void *)src, quickcopy, (void *)cb, cb_data);
// Range check input...
if (!dst || !src)
// Loop through source attributes and copy as needed...
for (srcattr = src->attrs; srcattr; srcattr = srcattr->next)
{
- if (!cb || (*cb)(context, dst, srcattr))
+ if (!cb || (*cb)(cb_data, dst, srcattr))
+ {
if (!ippCopyAttribute(dst, srcattr, quickcopy))
return (0);
+ }
}
return (1);
// 'ippDeleteValues()' - Delete values in an attribute.
//
// This function deletes one or more values in an attribute. The "element"
-// parameter specifies the first value to delete, starting at 0. It must be
+// argument specifies the first value to delete, starting at `0`. It must be
// less than the number of values returned by @link ippGetCount@.
//
-// The "attr" parameter may be modified as a result of setting the value,
+// The "attr" argument may be modified as a result of setting the value,
// which will set the variable to `NULL`.
//
// Deleting all values in an attribute deletes the attribute.
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippDeleteValues(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - Attribute
- int element, // I - Index of first value to delete (0-based)
+ int element, // I - Index of first value to delete (`0`-based)
int count) // I - Number of values to delete
{
// Range check input...
//
-// 'ippFindAttribute()' - Find a named attribute in a request.
+// 'ippFindAttribute()' - Find a named attribute in an IPP message.
//
// This function finds the first occurrence of a named attribute in an IPP
// message. The attribute name can contain a hierarchical list of attribute and
//
-// 'ippFindNextAttribute()' - Find the next named attribute in a request.
+// 'ippFindNextAttribute()' - Find the next named attribute in an IPP message.
//
// This function finds the next named attribute in an IPP message. The
// attribute name can contain a hierarchical list of attribute and member names
//
// 'ippGetBoolean()' - Get a boolean value for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
-int // O - Boolean value or 0 on error
+int // O - Boolean value or `0` on error
ippGetBoolean(ipp_attribute_t *attr, // I - IPP attribute
- int element) // I - Value number (0-based)
+ int element) // I - Value number (`0`-based)
{
// Range check input...
if (!attr || attr->value_tag != IPP_TAG_BOOLEAN || element < 0 || element >= attr->num_values)
//
// 'ippGetCollection()' - Get a collection value for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
ipp_t * // O - Collection value or `NULL` on error
ippGetCollection(
ipp_attribute_t *attr, // I - IPP attribute
- int element) // I - Value number (0-based)
+ int element) // I - Value number (`0`-based)
{
// Range check input...
if (!attr || attr->value_tag != IPP_TAG_BEGIN_COLLECTION || element < 0 || element >= attr->num_values)
//
// 'ippGetDate()' - Get a dateTime value for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
const ipp_uchar_t * // O - dateTime value or `NULL`
ippGetDate(ipp_attribute_t *attr, // I - IPP attribute
- int element) // I - Value number (0-based)
+ int element) // I - Value number (`0`-based)
{
// Range check input...
if (!attr || attr->value_tag != IPP_TAG_DATE || element < 0 || element >= attr->num_values)
//
// 'ippGetInteger()' - Get the integer/enum value for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
int // O - Value or 0 on error
ippGetInteger(ipp_attribute_t *attr, // I - IPP attribute
- int element) // I - Value number (0-based)
+ int element) // I - Value number (`0`-based)
{
// Range check input...
if (!attr || (attr->value_tag != IPP_TAG_INTEGER && attr->value_tag != IPP_TAG_ENUM) || element < 0 || element >= attr->num_values)
//
// 'ippGetOctetString()' - Get an octetString value from an IPP attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.7@
//
void * // O - Pointer to octetString data
ippGetOctetString(
ipp_attribute_t *attr, // I - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int *datalen) // O - Length of octetString data
{
// Range check input...
//
// 'ippGetRange()' - Get a rangeOfInteger value from an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
int // O - Lower value of range or 0
ippGetRange(ipp_attribute_t *attr, // I - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int *uppervalue)// O - Upper value of range
{
// Range check input...
//
// 'ippGetResolution()' - Get a resolution value for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
int // O - Horizontal/cross feed resolution or 0
ippGetResolution(
ipp_attribute_t *attr, // I - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int *yres, // O - Vertical/feed resolution
ipp_res_t *units) // O - Units for resolution
{
//
// 'ippGetString()' - Get the string and optionally the language code for an attribute.
//
-// The "element" parameter specifies which value to get from 0 to
-// @code ippGetCount(attr)@ - 1.
+// The "element" argument specifies which value to get from `0` to
+// `ippGetCount(attr) - 1`.
//
// @since CUPS 1.6@
//
const char *
ippGetString(ipp_attribute_t *attr, // I - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const char **language)// O - Language code (`NULL` for don't care)
{
ipp_tag_t tag; // Value tag
//
// 'ippSetBoolean()' - Set a boolean value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetBoolean(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int boolvalue)// I - Boolean value
{
_ipp_value_t *value; // Current value
//
// 'ippSetCollection()' - Set a collection value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetCollection(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
ipp_t *colvalue) // I - Collection value
{
_ipp_value_t *value; // Current value
//
// 'ippSetDate()' - Set a dateTime value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetDate(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const ipp_uchar_t *datevalue)// I - dateTime value
{
_ipp_value_t *value; // Current value
//
// 'ippSetGroupTag()' - Set the group tag of an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "group" parameter specifies the IPP attribute group tag: none
+// The "group" argument specifies the IPP attribute group tag: none
// (`IPP_TAG_ZERO`, for member attributes), document (`IPP_TAG_DOCUMENT`),
// event notification (`IPP_TAG_EVENT_NOTIFICATION`), operation
// (`IPP_TAG_OPERATION`), printer (`IPP_TAG_PRINTER`), subscription
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetGroupTag(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - Attribute
//
// 'ippSetInteger()' - Set an integer or enum value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetInteger(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int intvalue) // I - Integer/enum value
{
_ipp_value_t *value; // Current value
//
// 'ippSetName()' - Set the name of an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetName(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
const char *name) // I - Attribute name
//
// 'ippSetOctetString()' - Set an octetString value in an IPP attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.7@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetOctetString(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const void *data, // I - Pointer to octetString data
int datalen) // I - Length of octetString data
{
//
// 'ippSetOperation()' - Set the operation ID in an IPP request message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetOperation(ipp_t *ipp, // I - IPP request message
ipp_op_t op) // I - Operation ID
{
//
// 'ippSetRange()' - Set a rangeOfInteger value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetRange(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
int lowervalue, // I - Lower bound for range
int uppervalue) // I - Upper bound for range
{
//
// 'ippSetRequestId()' - Set the request ID in an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The @code request_id@ parameter must be greater than 0.
+// The "request_id" argument must be greater than 0.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetRequestId(ipp_t *ipp, // I - IPP message
int request_id) // I - Request ID
{
//
// 'ippSetResolution()' - Set a resolution value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetResolution(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
ipp_res_t unitsvalue, // I - Resolution units
int xresvalue, // I - Horizontal/cross feed resolution
int yresvalue) // I - Vertical/feed resolution
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetState(ipp_t *ipp, // I - IPP message
ipp_state_t state) // I - IPP state value
{
//
// 'ippSetStatusCode()' - Set the status code in an IPP response or event message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetStatusCode(ipp_t *ipp, // I - IPP response or event message
ipp_status_t status) // I - Status code
{
//
// 'ippSetString()' - Set a string value in an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetString(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const char *strvalue) // I - String value
{
char *temp; // Temporary string
//
// 'ippSetStringf()' - Set a formatted string value of an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
-// The "format" parameter uses formatting characters compatible with the
+// The "format" argument uses formatting characters compatible with the
// printf family of standard functions. Additional arguments follow it as
// needed. The formatted string is truncated as needed to the maximum length of
// the corresponding value type.
// @since CUPS 1.7@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetStringf(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const char *format, // I - Printf-style format string
...) // I - Additional arguments as needed
{
//
// 'ippSetStringf()' - Set a formatted string value of an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
-// The "element" parameter specifies which value to set from 0 to
-// @code ippGetCount(attr)@.
+// The "element" argument specifies which value to set from `0` to
+// `ippGetCount(attr)`.
//
-// The "format" parameter uses formatting characters compatible with the
+// The "format" argument uses formatting characters compatible with the
// printf family of standard functions. Additional arguments follow it as
// needed. The formatted string is truncated as needed to the maximum length of
// the corresponding value type.
// @since CUPS 1.7@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetStringfv(ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element, // I - Value number (0-based)
+ int element, // I - Value number (`0`-based)
const char *format, // I - Printf-style format string
va_list ap) // I - Pointer to additional arguments
{
//
// 'ippSetValueTag()' - Set the value tag of an attribute.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
-// The "attr" parameter may be modified as a result of setting the value.
+// The "attr" argument may be modified as a result of setting the value.
//
// Integer (`IPP_TAG_INTEGER`) values can be promoted to rangeOfInteger
// (`IPP_TAG_RANGE`) values, the various string tags can be promoted to name
// out-of-band value tags such as no-value (`IPP_TAG_NOVALUE`). All other
// changes will be rejected.
//
-// Promoting a string attribute to nameWithLanguage or textWithLanguage adds the language
-// code in the "attributes-natural-language" attribute or, if not present, the language
-// code for the current locale.
+// Promoting a string attribute to nameWithLanguage or textWithLanguage adds the
+// language code in the "attributes-natural-language" attribute or, if not
+// present, the language code for the current locale.
//
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetValueTag(
ipp_t *ipp, // I - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
//
// 'ippSetVersion()' - Set the version number in an IPP message.
//
-// The "ipp" parameter refers to an IPP message previously created using
+// The "ipp" argument refers to an IPP message previously created using
// the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions.
//
// The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
// @since CUPS 1.6@
//
-int // O - 1 on success, 0 on failure
+int // O - `1` on success, `0` on failure
ippSetVersion(ipp_t *ipp, // I - IPP message
int major, // I - Major version number (major.minor)
int minor) // I - Minor version number (major.minor)
// 'ippValidateAttribute()' - Validate the contents of an attribute.
//
// This function validates the contents of an attribute based on the name and
-// value tag. 1 is returned if the attribute is valid, 0 otherwise. On
+// value tag. `1` is returned if the attribute is valid, `0` otherwise. On
// failure, @link cupsGetErrorString@ is set to a human-readable message.
//
// @since CUPS 1.7@
//
-int // O - 1 if valid, 0 otherwise
+int // O - `1` if valid, `0` otherwise
ippValidateAttribute(
ipp_attribute_t *attr) // I - Attribute
{
return (0);
}
- switch (attr->value_tag)
+ switch (attr->value_tag & IPP_TAG_CUPS_MASK)
{
case IPP_TAG_INTEGER :
break;
"[-a-zA-Z0-9!#$&.+^_]{1,127}" // type-name
"/"
"[-a-zA-Z0-9!#$&.+^_]{1,127}" // subtype-name
- "(;[-a-zA-Z0-9!#$&.+^_]{1,127}=" // parameter=
+ "(;[-a-zA-Z0-9!#$&.+^_]{1,127}=" // argument=
"([-a-zA-Z0-9!#$&.+^_]{1,127}|\"[^\"]*\"))*"
// value
"$",
// @since CUPS 1.7@
//
-int // O - 1 if valid, 0 otherwise
+int // O - `1` if valid, `0` otherwise
ippValidateAttributes(ipp_t *ipp) // I - IPP message
{
ipp_attribute_t *attr; // Current attribute
DEBUG_printf("1ippWriteIO: %s (%s%s)", attr->name, attr->num_values > 1 ? "1setOf " : "", ippTagString(attr->value_tag));
- // Write the attribute tag and name.
+ // Write the attribute tag and name.
//
// The attribute name length does not include the trailing nul
// character in the source string.
// Collection values (parent != NULL) are written differently...
if (parent == NULL)
{
- // Get the length of the attribute name, and make sure it won't overflow the buffer...
+ // Get the length of the attribute name, and make sure it won't overflow the buffer...
if ((n = (int)strlen(attr->name)) > (IPP_BUF_SIZE - 8))
{
DEBUG_printf("1ippWriteIO: Attribute name too long (%d)", n);
return (IPP_STATE_ERROR);
}
- // Write the value tag, name length, and name string...
+ // Write the value tag, name length, and name string...
DEBUG_printf("2ippWriteIO: writing value tag=%x(%s)", attr->value_tag, ippTagString(attr->value_tag));
DEBUG_printf("2ippWriteIO: writing name=%d,\"%s\"", n, attr->name);
}
else
{
- // Get the length of the attribute name, and make sure it won't overflow the buffer...
+ // Get the length of the attribute name, and make sure it won't overflow the buffer...
if ((n = (int)strlen(attr->name)) > (IPP_BUF_SIZE - 12))
{
DEBUG_printf("1ippWriteIO: Attribute name too long (%d)", n);
return (IPP_STATE_ERROR);
}
- // Write the member name tag, name length, name string, value tag,
+ // Write the member name tag, name length, name string, value tag,
// and empty name for the collection member attribute...
DEBUG_printf("2ippWriteIO: writing value tag=%x(memberName)", IPP_TAG_MEMBERNAME);
DEBUG_printf("2ippWriteIO: writing name=%d,\"%s\"", n, attr->name);
*bufptr++ = 0;
}
- // Now write the attribute value(s)...
+ // Now write the attribute value(s)...
switch (attr->value_tag & ~IPP_TAG_CUPS_CONST)
{
case IPP_TAG_UNSUPPORTED_VALUE :
*bufptr++ = 0;
}
- // Boolean values are 1-byte; 0 = false, 1 = true.
+ // Boolean values are 1-byte; 0 = false, 1 = true.
//
// Put the 2-byte length and 1-byte value into the buffer...
*bufptr++ = 0;
*bufptr++ = 0;
}
- // Date values consist of a 2-byte length and an
+ // Date values consist of a 2-byte length and an
// 11-byte date/time structure defined by RFC 1903.
//
// Put the 2-byte length and 11-byte date/time
*bufptr++ = 0;
}
- // Resolution values consist of a 2-byte length,
+ // Resolution values consist of a 2-byte length,
// 4-byte horizontal resolution value, 4-byte vertical
// resolution value, and a 1-byte units value.
//
*bufptr++ = 0;
}
- // Range values consist of a 2-byte length,
+ // Range values consist of a 2-byte length,
// 4-byte lower value, and 4-byte upper value.
//
// Put the 2-byte length and range value data
*bufptr++ = 0;
}
- // textWithLanguage and nameWithLanguage values consist
+ // textWithLanguage and nameWithLanguage values consist
// of a 2-byte length for both strings and their
// individual lengths, a 2-byte length for the
// character string, the character string without the
bufptr = buffer;
}
- // Length of entire value
+ // Length of entire value
*bufptr++ = (ipp_uchar_t)(n >> 8);
*bufptr++ = (ipp_uchar_t)n;
- // Length of language
+ // Length of language
if (value->string.language != NULL)
n = (int)strlen(value->string.language);
else
*bufptr++ = (ipp_uchar_t)(n >> 8);
*bufptr++ = (ipp_uchar_t)n;
- // Language
+ // Language
if (n > 0)
{
memcpy(bufptr, value->string.language, (size_t)n);
bufptr += n;
}
- // Length of text
+ // Length of text
if (value->string.text != NULL)
n = (int)strlen(value->string.text);
else
*bufptr++ = (ipp_uchar_t)(n >> 8);
*bufptr++ = (ipp_uchar_t)n;
- // Text
+ // Text
if (n > 0)
{
memcpy(bufptr, value->string.text, (size_t)n);
*bufptr++ = 0;
}
- // Write a data length of 0 and flush the buffer...
+ // Write a data length of 0 and flush the buffer...
*bufptr++ = 0;
*bufptr++ = 0;
bufptr = buffer;
- // Then write the collection attribute...
+ // Then write the collection attribute...
value->collection->state = IPP_STATE_IDLE;
if (ippWriteIO(dst, cb, 1, ipp, value->collection) == IPP_STATE_ERROR)
*bufptr++ = 0;
}
- // An unknown value might some new value that a
+ // An unknown value might some new value that a
// vendor has come up with. It consists of a
// 2-byte length and the bytes in the unknown
// value buffer.
bufptr = buffer;
}
- // Length of unknown value
+ // Length of unknown value
*bufptr++ = (ipp_uchar_t)(n >> 8);
*bufptr++ = (ipp_uchar_t)n;
- // Value
+ // Value
if (n > 0)
{
memcpy(bufptr, value->unknown.data, (size_t)n);
break;
}
- // Write the data out...
+ // Write the data out...
if (bufptr > buffer)
{
if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
DEBUG_printf("2ippWriteIO: wrote %d bytes", (int)(bufptr - buffer));
}
- // If blocking is disabled and we aren't at the end of the attribute list, stop here...
+ // If blocking is disabled and we aren't at the end of the attribute
+ // list, stop here...
if (!blocking && ipp->current)
break;
}
if (ipp->current == NULL)
{
- // Done with all of the attributes; add the end-of-attributes tag or end-collection attribute...
+ // Done with all of the attributes; add the end-of-attributes tag or
+ // end-collection attribute...
if (parent == NULL)
{
buffer[0] = IPP_TAG_END;
else
alloc_values = (num_values + IPP_MAX_VALUES - 1) & ~(IPP_MAX_VALUES - 1);
- attr = calloc(1, sizeof(ipp_attribute_t) +
- (size_t)(alloc_values - 1) * sizeof(_ipp_value_t));
+ attr = calloc(1, sizeof(ipp_attribute_t) + (size_t)(alloc_values - 1) * sizeof(_ipp_value_t));
if (attr)
{
// Wait up to 10 seconds for more data on non-blocking sockets...
if (!httpWait(http, 10000))
{
- // Signal no data...
+ // Signal no data...
bytes = -1;
break;
}
// Wait up to timeout seconds for more data on blocking sockets...
if (!httpWait(http, (int)(1000 * http->timeout_value)))
{
- // Signal no data...
+ // Signal no data...
bytes = -1;
break;
}
case IPP_TAG_MEMBERNAME :
// The value the name of the member in the collection, which
// we need to carry over...
- if (n == 0)
+ if (n == 0)
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP memberName value is empty."), 1);
DEBUG_puts("1ipp_read_io: Empty member name value.");
static _ipp_value_t * // O - IPP value element or NULL on error
ipp_set_value(ipp_t *ipp, // IO - IPP message
ipp_attribute_t **attr, // IO - IPP attribute
- int element) // I - Value number (0-based)
+ int element) // I - Value number (`0`-based)
{
ipp_attribute_t *temp, // New attribute pointer
*current, // Current attribute in list
if (temp->num_values <= 1)
alloc_values = 1;
else
- alloc_values = (temp->num_values + IPP_MAX_VALUES - 1) & ~(IPP_MAX_VALUES - 1);
+ alloc_values = (temp->num_values + IPP_MAX_VALUES - 1) & (size_t)~(IPP_MAX_VALUES - 1);
if (element < alloc_values)
{
return (temp->values + element);
}
- // Otherwise re-allocate the attribute - we allocate in groups of IPP_MAX_VALUE values when num_values > 1.
+ // Otherwise re-allocate the attribute - we allocate in groups of
+ // IPP_MAX_VALUE values when num_values > 1.
if (alloc_values < IPP_MAX_VALUES)
alloc_values = IPP_MAX_VALUES;
else
// Reallocate memory...
if ((temp = realloc(temp, sizeof(ipp_attribute_t) + (size_t)(alloc_values - 1) * sizeof(_ipp_value_t))) == NULL)
{
- _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to reallocate IPP attribute value."), 1);
+ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
DEBUG_puts("4ipp_set_value: Unable to resize attribute.");
return (NULL);
}
if (!current)
{
- // This is a serious error!
+ // This is a serious error!
*attr = temp;
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP attribute is not a member of the message."), 1);
DEBUG_puts("4ipp_set_value: Unable to find attribute in message.");