From c3a9caacd99d1a445946b53f0a5b6c17d5782177 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Tue, 12 Jun 2018 17:05:07 -0400 Subject: [PATCH] Add all prototype attributes and values. --- cups/ipp-support.c | 504 +++++++++++++++++++++++++++++---------------- 1 file changed, 321 insertions(+), 183 deletions(-) diff --git a/cups/ipp-support.c b/cups/ipp-support.c index 80633161b3..47a6455028 100644 --- a/cups/ipp-support.c +++ b/cups/ipp-support.c @@ -138,117 +138,117 @@ static const char * const ipp_std_ops[] = /* 0x0000 - 0x000f */ "0x0000", "0x0001", - "Print-Job", - "Print-URI", - "Validate-Job", - "Create-Job", - "Send-Document", - "Send-URI", - "Cancel-Job", - "Get-Job-Attributes", - "Get-Jobs", - "Get-Printer-Attributes", - "Hold-Job", - "Release-Job", - "Restart-Job", + "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", - "Resume-Printer", - "Purge-Jobs", - "Set-Printer-Attributes", - "Set-Job-Attributes", - "Get-Printer-Supported-Values", - "Create-Printer-Subscriptions", - "Create-Job-Subscriptions", - "Get-Subscription-Attributes", - "Get-Subscriptions", - "Renew-Subscription", - "Cancel-Subscription", - "Get-Notifications", + "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)", + "Get-Resource-Attributes", /* IPP System */ "(Get-Resource-Data)", /* 0x0020 - 0x002f */ - "(Get-Resources)", + "Get-Resources", /* IPP System */ "(Get-Printer-Support-Files)", - "Enable-Printer", - "Disable-Printer", - "Pause-Printer-After-Current-Job", - "Hold-New-Jobs", - "Release-Held-New-Jobs", - "Deactivate-Printer", - "Activate-Printer", - "Restart-Printer", - "Shutdown-Printer", - "Startup-Printer", - "Reprocess-Job", - "Cancel-Current-Job", - "Suspend-Current-Job", - "Resume-Job", + "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", - "Schedule-Job-After", + "Promote-Job", /* RFC 3998 */ + "Schedule-Job-After", /* RFC 3998 */ "0x0032", - "Cancel-Document", - "Get-Document-Attributes", - "Get-Documents", - "Delete-Document", - "Set-Document-Attributes", - "Cancel-Jobs", - "Cancel-My-Jobs", - "Resubmit-Job", - "Close-Job", - "Identify-Printer", - "Validate-Document", - "Add-Document-Images", - "Acknowledge-Document", + "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", - "Acknowledge-Job", - "Fetch-Document", - "Fetch-Job", - "Get-Output-Device-Attributes", - "Update-Active-Jobs", - "Deregister-Output-Device", - "Update-Document-Status", - "Update-Job-Status", - "Update-Output-Device-Attributes", - "Get-Next-Document-Data", - "Allocate-Printer-Resources", - "Create-Printer", - "Deallocate-Printer-Resources", - "Delete-Printer", - "Get-Printers", + "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", - "Startup-One-Printer", - "Cancel-Resource", - "Create-Resource", - "Install-Resource", - "Send-Resource-Data", - "Set-Resource-Attributes", - "Create-Resource-Subscriptions", - "Create-System-Subscriptions", - "Disable-All-Printers", - "Enable-All-Printers", - "Get-System-Attributes", - "Get-System-Supported-Values", - "Pause-All-Printers", - "Pause-All-Printers-After-Current-Job", - "Register-Output-Device", + "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", - "Resume-All-Printers", - "Set-System-Attributes", - "Shutdown-All-Printers", - "Startup-All-Printers" + "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[] = { @@ -286,14 +286,15 @@ static const char * const ipp_std_ops[] = "unsupported-attributes-tag", /* 0x05 */ "subscription-attributes-tag", - /* 0x06 */ + /* 0x06 - RFC 3995 */ "event-notification-attributes-tag", - /* 0x07 */ - "(resource-attributes-tag)", - /* 0x08 */ + /* 0x07 - RFC 3995 */ + "resource-attributes-tag", + /* 0x08 - IPP System */ "document-attributes-tag", - /* 0x09 */ - "0x0a", /* 0x0a */ + /* 0x09 - IPP DocObject */ + "system-attributes-tag", + /* 0x0a - IPP System */ "0x0b", /* 0x0b */ "0x0c", /* 0x0c */ "0x0d", /* 0x0d */ @@ -304,9 +305,9 @@ static const char * const ipp_std_ops[] = "unknown", /* 0x12 */ "no-value", /* 0x13 */ "0x14", /* 0x14 */ - "not-settable", /* 0x15 */ - "delete-attribute", /* 0x16 */ - "admin-define", /* 0x17 */ + "not-settable", /* 0x15 - RFC 3380 */ + "delete-attribute", /* 0x16 - RFC 3380 */ + "admin-define", /* 0x17 - RFC 3380 */ "0x18", /* 0x18 */ "0x19", /* 0x19 */ "0x1a", /* 0x1a */ @@ -364,7 +365,7 @@ static const char * const ipp_document_states[] = "pending", "4", "processing", - "processing-stopped", /* IPPSIX */ + "processing-stopped", /* IPP INFRA */ "canceled", "aborted", "completed" @@ -383,8 +384,8 @@ static const char * const ipp_document_states[] = "bale", "booklet-maker", "jog-offset", - "coat", /* Finishings 2.0 */ - "laminate", /* Finishings 2.0 */ + "coat", /* IPP Finishings 2.0 */ + "laminate", /* IPP Finishings 2.0 */ "17", "18", "19", @@ -400,10 +401,10 @@ static const char * const ipp_document_states[] = "staple-dual-top", "staple-dual-right", "staple-dual-bottom", - "staple-triple-left", /* Finishings 2.0 */ - "staple-triple-top", /* Finishings 2.0 */ - "staple-triple-right",/* Finishings 2.0 */ - "staple-triple-bottom",/* Finishings 2.0 */ + "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", @@ -438,38 +439,38 @@ static const char * const ipp_document_states[] = "67", "68", "69", - "punch-top-left", /* Finishings 2.0 */ - "punch-bottom-left", /* Finishings 2.0 */ - "punch-top-right", /* Finishings 2.0 */ - "punch-bottom-right", /* Finishings 2.0 */ - "punch-dual-left", /* Finishings 2.0 */ - "punch-dual-top", /* Finishings 2.0 */ - "punch-dual-right", /* Finishings 2.0 */ - "punch-dual-bottom", /* Finishings 2.0 */ - "punch-triple-left", /* Finishings 2.0 */ - "punch-triple-top", /* Finishings 2.0 */ - "punch-triple-right", /* Finishings 2.0 */ - "punch-triple-bottom",/* Finishings 2.0 */ - "punch-quad-left", /* Finishings 2.0 */ - "punch-quad-top", /* Finishings 2.0 */ - "punch-quad-right", /* Finishings 2.0 */ - "punch-quad-bottom", /* Finishings 2.0 */ - "punch-multiple-left",/* Finishings 2.1/Canon */ - "punch-multiple-top", /* Finishings 2.1/Canon */ - "punch-multiple-right",/* Finishings 2.1/Canon */ - "punch-multiple-bottom",/* Finishings 2.1/Canon */ - "fold-accordian", /* Finishings 2.0 */ - "fold-double-gate", /* Finishings 2.0 */ - "fold-gate", /* Finishings 2.0 */ - "fold-half", /* Finishings 2.0 */ - "fold-half-z", /* Finishings 2.0 */ - "fold-left-gate", /* Finishings 2.0 */ - "fold-letter", /* Finishings 2.0 */ - "fold-parallel", /* Finishings 2.0 */ - "fold-poster", /* Finishings 2.0 */ - "fold-right-gate", /* Finishings 2.0 */ - "fold-z", /* Finishings 2.0 */ - "fold-engineering-z" /* Finishings 2.1 */ + "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-accordian", /* 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[] = { @@ -888,6 +889,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ int i, j, /* Looping vars */ count, /* Number of values */ 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 */ const char *value; /* Current value */ @@ -923,7 +925,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "document-state-message", "document-state-reasons", "document-uri", - "document-uuid", + "document-uuid", /* IPP JPS3 */ "errors-count", "finishings-actual", "finishings-col-actual", @@ -991,6 +993,12 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ }; static const char * const document_template[] = { /* document-template group */ + "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 */ "copies", "copies-default", "copies-supported", @@ -1182,6 +1190,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ }; static const char * const job_description[] = { /* job-description group */ + "chamber-humidity-actual", /* IPP 3D */ + "chamber-temperature-actual", /* IPP 3D */ "compression-supplied", "copies-actual", "cover-back-actual", @@ -1241,7 +1251,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "job-name", "job-originating-host-name", /* CUPS extension */ "job-originating-user-name", - "job-originating-user-uri", + "job-originating-user-uri", /* IPP JPS3 */ "job-pages", "job-pages-col", "job-pages-completed", @@ -1252,6 +1262,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "job-printer-up-time", "job-printer-uri", "job-priority-actual", + "job-resource-ids", /* IPP System */ "job-save-printer-make-and-model", "job-sheet-message-actual", "job-sheets-actual", @@ -1260,7 +1271,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "job-state-message", "job-state-reasons", "job-uri", - "job-uuid", + "job-uuid", /* IPP JPS3 */ "materials-col-actual", /* IPP 3D */ "media-actual", "media-col-actual", @@ -1274,6 +1285,10 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "original-requesting-user-name", "output-bin-actual", "output-device-assigned", + "output-device-job-state", /* IPP INFRA */ + "output-device-job-state-message", /* IPP INFRA */ + "output-device-job-state-reasons", /* IPP INFRA */ + "output-device-uuid-assigned", /* IPP INFRA */ "overrides-actual", "page-delivery-actual", "page-order-received-actual", @@ -1311,6 +1326,12 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ static const char * const job_template[] = { /* job-template group */ "accuracy-units-supported", /* IPP 3D */ + "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 */ "confirmation-sheet-print", /* IPP FaxOut */ "confirmation-sheet-print-default", "copies", @@ -1486,8 +1507,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "output-bin-default", "output-bin-supported", "output-device", - "output-device-default", "output-device-supported", + "output-device-uuid-supported", /* IPP INFRA */ "output-mode", /* CUPS extension */ "output-mode-default", /* CUPS extension */ "output-mode-supported", /* CUPS extension */ @@ -1601,6 +1622,8 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ static const char * const printer_description[] = { /* printer-description group */ "auth-info-required", /* CUPS extension */ + "chamber-humidity-current", /* IPP 3D */ + "chamber-temperature-current", /* IPP 3D */ "charset-configured", "charset-supported", "color-supported", @@ -1680,16 +1703,20 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "pdf-features-supported", /* IPP 3D */ "pdf-versions-supported", /* CUPS extension */ "pdl-override-supported", + "platform-shape", /* IPP 3D */ "port-monitor", /* CUPS extension */ "port-monitor-supported", /* CUPS extension */ "preferred-attributes-supported", "printer-alert", "printer-alert-description", + "printer-camera-image-uri", /* IPP 3D */ "printer-charge-info", "printer-charge-info-uri", "printer-commands", /* CUPS extension */ "printer-config-change-date-time", "printer-config-change-time", + "printer-config-changes", /* IPP System */ + "printer-contact-col", /* IPP System */ "printer-current-time", "printer-detailed-status-messages", "printer-device-id", @@ -1707,7 +1734,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "printer-get-attributes-supported", "printer-icc-profiles", "printer-icons", - "printer-id", /* CUPS extension */ + "printer-id", /* IPP System */ "printer-info", "printer-input-tray", /* IPP JPS3 */ "printer-is-accepting-jobs", @@ -1727,7 +1754,7 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "printer-organization", "printer-organizational-unit", "printer-output-tray", /* IPP JPS3 */ - "printer-queue-id", /* CUPS extension */ + "printer-service-type", /* IPP System */ "printer-settable-attributes-supported", "printer-state", "printer-state-change-date-time", @@ -1763,17 +1790,54 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "xri-security-supported", "xri-uri-scheme-supported" }; + static const char * const resource_description[] = + { /* resource-description group - IPP System */ + "resource-info", + "resource-name" + }; + static const char * const resource_status[] = + { /* resource-status group - IPP System */ + "date-time-at-canceled", + "date-time-at-creation", + "date-time-at-installed", + "resource-data-uri", + "resource-format", + "resource-id", + "resource-k-octets", + "resource-state", + "resource-state-message", + "resource-state-reasons", + "resource-string-version", + "resource-type", + "resource-use-count", + "resource-uuid", + "resource-version", + "time-at-canceled", + "time-at-creation", + "time-at-installed" + }; + static const char * const resource_template[] = + { /* resource-template group - IPP System */ + "resource-format", + "resource-format-supported", + "resource-info", + "resource-name", + "resource-type", + "resource-type-supported" + }; static const char * const subscription_description[] = { /* subscription-description group */ "notify-job-id", "notify-lease-expiration-time", "notify-printer-up-time", "notify-printer-uri", + "notify-resource-id", /* IPP System */ + "notify-system-uri", /* IPP System */ "notify-sequence-number", "notify-subscriber-user-name", "notify-subscriber-user-uri", "notify-subscription-id", - "notify-subscription-uuid" + "notify-subscription-uuid" /* IPP JPS3 */ }; static const char * const subscription_template[] = { /* subscription-template group */ @@ -1795,21 +1859,73 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ "notify-time-interval", "notify-user-data" }; + static const char * const system_description[] = + { /* system-description group - IPP System */ + "charset-configured", + "charset-supported", + "generated-natural-language-supported", + "ipp-features-supported", + "ipp-versions-supported", + "natural-language-configured", + "operations-supported", + "power-calendar-policy-col", + "power-event-policy-col", + "power-timeout-policy-col", + "printer-creation-attributes-supported", + "resource-settable-attributes-supported", + "system-contact-col", + "system-current-time", + "system-default-printer-id", + "system-device-id", + "system-geo-location", + "system-info", + "system-location", + "system-mandatory-printer-attributes", + "system-make-and-model", + "system-message-from-operator", + "system-name", + "system-settable-attributes-supported", + "system-strings-languages-supported", + "system-strings-uri", + "system-xri-supported" + }; + static const char * const system_status[] = + { /* system-status group - IPP System */ + "power-log-col", + "power-state-capabilities-col", + "power-state-counters-col", + "power-state-monitor-col", + "power-state-transitions-col", + "system-config-change-date-time", + "system-config-change-time", + "system-config-changes", + "system-configured-printers", + "system-configured-resources", + "system-serial-number", + "system-state", + "system-state-change-date-time", + "system-state-change-time", + "system-state-message", + "system-state-reasons", + "system-up-time", + "system-uuid" + }; /* * Get the requested-attributes attribute... */ - if ((requested = ippFindAttribute(request, "requested-attributes", - IPP_TAG_KEYWORD)) == NULL) + 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"... */ - if (ippGetOperation(request) == IPP_OP_GET_JOBS) + if (op == IPP_OP_GET_JOBS) { ra = cupsArrayNew((cups_array_func_t)strcmp, NULL); cupsArrayAdd(ra, "job-id"); @@ -1840,12 +1956,9 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ added = 0; value = ippGetString(requested, i, NULL); - if (!strcmp(value, "document-description") || !strcmp(value, "all")) + 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 < (int)(sizeof(document_description) / sizeof(document_description[0])); j ++) cupsArrayAdd(ra, (void *)document_description[j]); added = 1; @@ -1853,67 +1966,92 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */ 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 < (int)(sizeof(document_template) / sizeof(document_template[0])); j ++) cupsArrayAdd(ra, (void *)document_template[j]); added = 1; } - if (!strcmp(value, "job-description") || !strcmp(value, "all")) + 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 < (int)(sizeof(job_description) / sizeof(job_description[0])); j ++) cupsArrayAdd(ra, (void *)job_description[j]); added = 1; } - if (!strcmp(value, "job-template") || !strcmp(value, "all")) + 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))) { - for (j = 0; - j < (int)(sizeof(job_template) / sizeof(job_template[0])); - j ++) + for (j = 0; j < (int)(sizeof(job_template) / sizeof(job_template[0])); j ++) cupsArrayAdd(ra, (void *)job_template[j]); added = 1; } - if (!strcmp(value, "printer-description") || !strcmp(value, "all")) + if (!strcmp(value, "printer-description") || (!strcmp(value, "all") && (op == IPP_OP_GET_PRINTER_ATTRIBUTES || op == IPP_OP_GET_PRINTERS || op == IPP_OP_CUPS_GET_DEFAULT || op == IPP_OP_CUPS_GET_PRINTERS || op == IPP_OP_CUPS_GET_CLASSES))) { - for (j = 0; - j < (int)(sizeof(printer_description) / - sizeof(printer_description[0])); - j ++) + for (j = 0; j < (int)(sizeof(printer_description) / sizeof(printer_description[0])); j ++) cupsArrayAdd(ra, (void *)printer_description[j]); added = 1; } - if (!strcmp(value, "subscription-description") || !strcmp(value, "all")) + 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 ++) + cupsArrayAdd(ra, (void *)resource_description[j]); + + added = 1; + } + + 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(subscription_description) / - sizeof(subscription_description[0])); - j ++) + for (j = 0; j < (int)(sizeof(resource_status) / sizeof(resource_status[0])); j ++) + cupsArrayAdd(ra, (void *)resource_status[j]); + + added = 1; + } + + 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 ++) + cupsArrayAdd(ra, (void *)resource_template[j]); + + added = 1; + } + + 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 ++) cupsArrayAdd(ra, (void *)subscription_description[j]); added = 1; } - if (!strcmp(value, "subscription-template") || !strcmp(value, "all")) + 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 < (int)(sizeof(subscription_template) / sizeof(subscription_template[0])); j ++) cupsArrayAdd(ra, (void *)subscription_template[j]); added = 1; } + 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 ++) + cupsArrayAdd(ra, (void *)system_description[j]); + + added = 1; + } + + 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 ++) + cupsArrayAdd(ra, (void *)system_status[j]); + + added = 1; + } + if (!added) cupsArrayAdd(ra, (void *)value); } -- 2.47.2