/*
- * "$Id$"
- *
* Internet Printing Protocol support functions for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law. Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file. If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
+ * Copyright © 2007-2018 by Apple Inc.
+ * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
- * This file is subject to the Apple OS-Developed Software exception.
+ * Licensed under Apache License v2.0. See the file "LICENSE" for more
+ * information.
*/
/*
"client-error-account-info-needed",
"client-error-account-closed",
"client-error-account-limit-reached",
- "client-error-account-authorization-failed"
+ "client-error-account-authorization-failed",
+ "client-error-not-fetchable"
},
* const ipp_status_480s[] = /* Vendor client errors */
{
"Suspend-Current-Job",
"Resume-Job",
- /* 0x0030 - 0x003e */
+ /* 0x0030 - 0x003f */
"Promote-Job",
"Schedule-Job-After",
"0x0032",
"Close-Job",
"Identify-Printer",
"Validate-Document",
- "Send-Hardcopy-Document"
+ "Add-Document-Images",
+ "Acknowledge-Document",
+
+ /* 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",
+
+ /* 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",
+
+ /* 0x0060 - 0x0064 */
+ "Restart-System",
+ "Resume-All-Printers",
+ "Set-System-Attributes",
+ "Shutdown-All-Printers",
+ "Startup-All-Printers"
},
* const ipp_cups_ops[] =
{
},
* const ipp_cups_ops2[] =
{
- "CUPS-Get-Document"
+ "CUPS-Get-Document",
+ "CUPS-Create-Local-Printer"
},
* const ipp_tag_names[] =
{ /* Value/group tag names */
"punch-quad-top", /* Finishings 2.0 */
"punch-quad-right", /* Finishings 2.0 */
"punch-quad-bottom", /* Finishings 2.0 */
- "86",
- "87",
- "88",
- "89",
+ "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-parallel", /* Finishings 2.0 */
"fold-poster", /* Finishings 2.0 */
"fold-right-gate", /* Finishings 2.0 */
- "fold-z" /* Finishings 2.0 */
+ "fold-z", /* Finishings 2.0 */
+ "fold-engineering-z" /* Finishings 2.1 */
},
* const ipp_finishings_vendor[] =
{
* trailing nul. The buffer pointer can be NULL to get the required length,
* just like (v)snprintf.
*
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
*/
size_t /* O - Number of bytes less nul */
* "attribute-name")@ will return a non-NULL pointer. The array must be freed
* using the @code cupsArrayDelete@ function.
*
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
*/
cups_array_t * /* O - CUPS array or @code NULL@ if all */
"force-front-side-actual",
"imposition-template-actual",
"impressions",
+ "impressions-col",
"impressions-completed",
+ "impressions-completed-col",
"impressions-completed-current-copy",
"insert-sheet-actual",
"k-octets",
"k-octets-processed",
"last-document",
+ "materials-col-actual", /* IPP 3D */
"media-actual",
"media-col-actual",
"media-input-tray-check-actual",
"media-sheets",
+ "media-sheets-col",
"media-sheets-completed",
+ "media-sheets-completed-col",
"more-info",
+ "multiple-object-handling-actual", /* IPP 3D */
"number-up-actual",
"orientation-requested-actual",
"output-bin-actual",
"page-order-received-actual",
"page-ranges-actual",
"pages",
+ "pages-col",
"pages-completed",
+ "pages-completed-col",
"pages-completed-current-copy",
+ "platform-temperature-actual", /* IPP 3D */
"presentation-direction-number-up-actual",
+ "print-accuracy-actual", /* IPP 3D */
+ "print-base-actual", /* IPP 3D */
"print-color-mode-actual",
"print-content-optimize-actual",
+ "print-objects-actual", /* IPP 3D */
"print-quality-actual",
"print-rendering-intent-actual",
"print-scaling-actual", /* IPP Paid Printing */
+ "print-supports-actual", /* IPP 3D */
"printer-resolution-actual",
"printer-up-time",
"separator-sheets-actual",
"feed-orientation-supported",
"finishings",
"finishings-col",
+ "finishings-col-database",
"finishings-col-default",
+ "finishings-col-ready",
"finishings-col-supported",
"finishings-default",
+ "finishings-ready",
"finishings-supported",
"font-name-requested",
"font-name-requested-default",
"insert-sheet",
"insert-sheet-default",
"insert-sheet-supported",
+ "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-temperature-supported", /* IPP 3D */
+ "material-type-supported", /* IPP 3D */
+ "materials-col", /* IPP 3D */
+ "materials-col-database", /* IPP 3D */
+ "materials-col-default", /* IPP 3D */
+ "materials-col-ready", /* IPP 3D */
+ "materials-col-supported", /* IPP 3D */
+ "max-materials-col-supported", /* IPP 3D */
"max-stitching-locations-supported",
"media",
"media-back-coating-supported",
"media-bottom-margin-supported",
"media-col",
"media-col-default",
+ "media-col-ready",
"media-col-supported",
"media-color-supported",
"media-default",
"media-left-margin-supported",
"media-order-count-supported",
"media-pre-printed-supported",
+ "media-ready",
"media-recycled-supported",
"media-right-margin-supported",
"media-size-supported",
"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 */
"number-up",
"number-up-default",
"number-up-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",
"presentation-direction-number-up-default",
"presentation-direction-number-up-supported",
+ "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-objects", /* IPP 3D */
+ "print-objects-default", /* IPP 3D */
+ "print-objects-supported", /* IPP 3D */
"print-quality",
"print-quality-default",
"print-quality-supported",
"print-scaling", /* IPP Paid Printing */
"print-scaling-default", /* IPP Paid Printing */
"print-scaling-supported", /* IPP Paid Printing */
+ "print-supports", /* IPP 3D */
+ "print-supports-default", /* IPP 3D */
+ "print-supports-supported", /* IPP 3D */
"printer-resolution",
"printer-resolution-default",
"printer-resolution-supported",
"job-hold-until-actual",
"job-id",
"job-impressions",
+ "job-impressions-col",
"job-impressions-completed",
+ "job-impressions-completed-col",
"job-k-octets",
"job-k-octets-processed",
"job-mandatory-attributes",
"job-media-progress", /* CUPS extension */
"job-media-sheets",
+ "job-media-sheets-col",
"job-media-sheets-completed",
+ "job-media-sheets-completed-col",
"job-message-from-operator",
"job-more-info",
"job-name",
"job-originating-user-name",
"job-originating-user-uri",
"job-pages",
+ "job-pages-col",
"job-pages-completed",
+ "job-pages-completed-col",
"job-pages-completed-current-copy",
"job-printer-state-message", /* CUPS extension */
"job-printer-state-reasons", /* CUPS extension */
"job-state-reasons",
"job-uri",
"job-uuid",
+ "materials-col-actual", /* IPP 3D */
"media-actual",
"media-col-actual",
"media-check-input-tray-actual",
"multiple-document-handling-actual",
+ "multiple-object-handling-actual", /* IPP 3D */
"number-of-documents",
"number-of-intervening-jobs",
"number-up-actual",
"page-delivery-actual",
"page-order-received-actual",
"page-ranges-actual",
+ "platform-temperature-actual", /* IPP 3D */
"presentation-direction-number-up-actual",
+ "print-accuracy-actual", /* IPP 3D */
+ "print-base-actual", /* IPP 3D */
"print-color-mode-actual",
"print-content-optimize-actual",
+ "print-objects-actual", /* IPP 3D */
"print-quality-actual",
"print-rendering-intent-actual",
"print-scaling-actual", /* IPP Paid Printing */
+ "print-supports-actual", /* IPP 3D */
"printer-resolution-actual",
"separator-sheets-actual",
"sheet-collate-actual",
};
static const char * const job_template[] =
{ /* job-template group */
+ "accuracy-units-supported", /* IPP 3D */
"confirmation-sheet-print", /* IPP FaxOut */
"confirmation-sheet-print-default",
"copies",
"feed-orientation-supported",
"finishings",
"finishings-col",
+ "finishings-col-database",
"finishings-col-default",
+ "finishings-col-ready",
"finishings-col-supported",
"finishings-default",
+ "finishings-ready",
"finishings-supported",
"font-name-requested",
"font-name-requested-default",
"job-sheets-default",
"job-sheets-supported",
"logo-uri-schemes-supported",
+ "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-temperature-supported", /* IPP 3D */
+ "material-type-supported", /* IPP 3D */
+ "materials-col", /* IPP 3D */
+ "materials-col-database", /* IPP 3D */
+ "materials-col-default", /* 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",
"media",
"media-bottom-margin-supported",
"media-col",
"media-col-default",
+ "media-col-ready",
"media-col-supported",
"media-color-supported",
"media-default",
"media-left-margin-supported",
"media-order-count-supported",
"media-pre-printed-supported",
+ "media-ready",
"media-recycled-supported",
"media-right-margin-supported",
"media-size-supported",
"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 */
"number-of-retries", /* IPP FaxOut */
"number-of-retries-default",
"number-of-retries-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",
"presentation-direction-number-up-default",
"presentation-direction-number-up-supported",
+ "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-objects", /* IPP 3D */
+ "print-objects-default", /* IPP 3D */
+ "print-objects-supported", /* IPP 3D */
"print-quality",
"print-quality-default",
"print-quality-supported",
"print-scaling", /* IPP Paid Printing */
"print-scaling-default", /* IPP Paid Printing */
"print-scaling-supported", /* IPP Paid Printing */
+ "print-supports", /* IPP 3D */
+ "print-supports-default", /* IPP 3D */
+ "print-supports-supported", /* IPP 3D */
"printer-resolution",
"printer-resolution-default",
"printer-resolution-supported",
"job-page-limit", /* CUPS extension */
"job-password-encryption-supported",
"job-password-supported",
+ "job-presets-supported", /* IPP Presets */
"job-quota-period", /* CUPS extension */
"job-resolvers-supported",
"job-settable-attributes-supported",
"job-spooling-supported",
+ "job-triggers-supported", /* IPP Presets */
"jpeg-k-octets-supported", /* CUPS extension */
"jpeg-x-dimension-supported", /* CUPS extension */
"jpeg-y-dimension-supported", /* CUPS extension */
"marker-message", /* CUPS extension */
"marker-names", /* CUPS extension */
"marker-types", /* CUPS extension */
- "media-col-ready",
- "media-ready",
"member-names", /* CUPS extension */
"member-uris", /* CUPS extension */
"multiple-destination-uris-supported",/* IPP FaxOut */
"pages-per-minute",
"pages-per-minute-color",
"pdf-k-octets-supported", /* CUPS extension */
+ "pdf-features-supported", /* IPP 3D */
"pdf-versions-supported", /* CUPS extension */
"pdl-override-supported",
"port-monitor", /* CUPS extension */
"printer-charge-info",
"printer-charge-info-uri",
"printer-commands", /* CUPS extension */
+ "printer-config-change-date-time",
+ "printer-config-change-time",
"printer-current-time",
"printer-detailed-status-messages",
"printer-device-id",
"printer-get-attributes-supported",
"printer-icc-profiles",
"printer-icons",
+ "printer-id", /* CUPS extension */
"printer-info",
"printer-input-tray", /* IPP JPS3 */
"printer-is-accepting-jobs",
"printer-is-shared", /* CUPS extension */
+ "printer-is-temporary", /* CUPS extension */
"printer-kind", /* IPP Paid Printing */
"printer-location",
"printer-make-and-model",
"printer-organization",
"printer-organizational-unit",
"printer-output-tray", /* IPP JPS3 */
+ "printer-queue-id", /* CUPS extension */
"printer-settable-attributes-supported",
"printer-state",
"printer-state-change-date-time",
"notify-subscriber-user-name",
"notify-subscriber-user-uri",
"notify-subscription-id",
- "subscriptions-uuid"
+ "notify-subscription-uuid"
};
static const char * const subscription_template[] =
{ /* subscription-template group */
/*
* 'ippErrorValue()' - Return a status code for the given name.
*
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
*/
ipp_status_t /* O - IPP status code */
/*
* 'ippOpString()' - Return a name for the given operation id.
*
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
*/
const char * /* O - Name */
* See if the operation ID is a known value...
*/
- if (op >= IPP_OP_PRINT_JOB && op <= IPP_OP_VALIDATE_DOCUMENT)
+ 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)
return ("windows-ext");
else if (op >= IPP_OP_CUPS_GET_DEFAULT && op <= IPP_OP_CUPS_GET_PPD)
return (ipp_cups_ops[op - IPP_OP_CUPS_GET_DEFAULT]);
- else if (op == IPP_OP_CUPS_GET_DOCUMENT)
- return (ipp_cups_ops2[0]);
+ 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...
/*
* 'ippOpValue()' - Return an operation id for the given name.
*
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
*/
ipp_op_t /* O - Operation ID */
/*
* 'ippTagString()' - Return the tag name corresponding to a tag value.
*
- * The returned names are defined in RFC 2911 and 3382.
+ * The returned names are defined in RFC 8011 and the IANA IPP Registry.
*
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
*/
const char * /* O - Tag name */
/*
* 'ippTagValue()' - Return the tag value corresponding to a tag name.
*
- * The tag names are defined in RFC 2911 and 3382.
+ * The tag names are defined in RFC 8011 and the IANA IPP Registry.
*
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
*/
ipp_tag_t /* O - Tag value */
ipp_attribute_t *attr; /* Current member attribute */
+ if (!col)
+ {
+ if (buffer)
+ *buffer = '\0';
+
+ return (0);
+ }
+
bufptr = buffer;
bufend = buffer + bufsize - 1;
return ((size_t)(bufptr - buffer));
}
-
-
-/*
- * End of "$Id$".
- */