From 65bebeac765e0aab4cf2eae77d1d2b49e3b896dd Mon Sep 17 00:00:00 2001 From: Michael Sweet Date: Mon, 12 Jun 2017 09:05:40 -0400 Subject: [PATCH] Save work on documentation. --- cups/cups-private.h | 4 +- cups/cupspm.md | 18 +++ cups/ipp-support.c | 6 +- cups/ipp.c | 160 +++++++++++------------ cups/ipp.h | 17 +-- doc/help/cupspm.epub | Bin 216855 -> 216695 bytes doc/help/cupspm.html | 187 ++++++++++++--------------- xcode/CUPS.xcodeproj/project.pbxproj | 2 +- 8 files changed, 194 insertions(+), 200 deletions(-) diff --git a/cups/cups-private.h b/cups/cups-private.h index 264fd01c8..6fd66a9ce 100644 --- a/cups/cups-private.h +++ b/cups/cups-private.h @@ -1,7 +1,7 @@ /* * Private definitions for CUPS. * - * Copyright 2007-2015 by Apple Inc. + * Copyright 2007-2017 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -105,7 +105,7 @@ typedef struct _cups_globals_s /**** CUPS global state data ****/ int need_res_init; /* Need to reinitialize resolver? */ /* ipp.c */ - ipp_uchar_t ipp_date[11]; /* RFC-1903 date/time data */ + ipp_uchar_t ipp_date[11]; /* RFC-2579 date/time data */ _cups_buffer_t *cups_buffers; /* Buffer list */ /* ipp-support.c */ diff --git a/cups/cupspm.md b/cups/cupspm.md index c7f86d87d..35b5a7532 100644 --- a/cups/cupspm.md +++ b/cups/cupspm.md @@ -729,3 +729,21 @@ created: } fclose(fp); + + +# Sending IPP Requests + +## Connecting to the Scheduler or Printer + +cupsDestConnect and httpConnect2 + +httpGetTrust, etc. + + +## Creating an IPP Request + +## Sending the IPP Request + +## Getting the IPP Response + +## Authentication diff --git a/cups/ipp-support.c b/cups/ipp-support.c index b49ac0d2f..675e5f380 100644 --- a/cups/ipp-support.c +++ b/cups/ipp-support.c @@ -1,7 +1,7 @@ /* * Internet Printing Protocol support functions for CUPS. * - * Copyright 2007-2014 by Apple Inc. + * Copyright 2007-2017 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -2243,7 +2243,7 @@ ippStateString(ipp_state_t state) /* I - State value */ /* * '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/macOS 10.6@ */ @@ -2263,7 +2263,7 @@ ippTagString(ipp_tag_t tag) /* I - Tag value */ /* * '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/macOS 10.6@ */ diff --git a/cups/ipp.c b/cups/ipp.c index 817c9d5fa..429a05eaf 100644 --- a/cups/ipp.c +++ b/cups/ipp.c @@ -316,7 +316,7 @@ ippAddCollections( /* - * 'ippAddDate()' - Add a date attribute to an IPP message. + * 'ippAddDate()' - Add a dateTime attribute to an IPP message. * * The @code ipp@ parameter refers to an IPP message previously created using * the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions. @@ -1380,7 +1380,7 @@ ippContainsInteger( * specified string value. * * Returns non-zero when the attribute contains a matching charset, keyword, - * language, mimeMediaType, name, text, URI, or URI scheme value. + * naturalLanguage, mimeMediaType, name, text, uri, or uriScheme value. * * @since CUPS 1.7/macOS 10.9@ */ @@ -1759,12 +1759,12 @@ ippCopyAttributes( /* - * 'ippDateToTime()' - Convert from RFC 1903 Date/Time format to UNIX time - * in seconds. + * 'ippDateToTime()' - Convert from RFC 2579 Date/Time format to time in + * seconds. */ time_t /* O - UNIX time value */ -ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */ +ippDateToTime(const ipp_uchar_t *date) /* I - RFC 2579 date info */ { struct tm unixdate; /* UNIX date/time info */ time_t t; /* Computed time */ @@ -1776,7 +1776,7 @@ ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */ memset(&unixdate, 0, sizeof(unixdate)); /* - * RFC-1903 date/time format is: + * RFC-2579 date/time format is: * * Byte(s) Description * ------- ----------- @@ -2152,7 +2152,7 @@ ippFirstAttribute(ipp_t *ipp) /* I - IPP message */ * 'ippGetBoolean()' - Get a boolean value for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2181,7 +2181,7 @@ ippGetBoolean(ipp_attribute_t *attr, /* I - IPP attribute */ * 'ippGetCollection()' - Get a collection value for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2232,15 +2232,15 @@ ippGetCount(ipp_attribute_t *attr) /* I - IPP attribute */ /* - * 'ippGetDate()' - Get a date value for an attribute. + * 'ippGetDate()' - Get a dateTime value for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ -const ipp_uchar_t * /* O - Date value or @code NULL@ */ +const ipp_uchar_t * /* O - dateTime value or @code NULL@ */ ippGetDate(ipp_attribute_t *attr, /* I - IPP attribute */ int element) /* I - Value number (0-based) */ { @@ -2288,7 +2288,7 @@ ippGetGroupTag(ipp_attribute_t *attr) /* I - IPP attribute */ * 'ippGetInteger()' - Get the integer/enum value for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2341,7 +2341,7 @@ ippGetName(ipp_attribute_t *attr) /* I - IPP attribute */ * 'ippGetOctetString()' - Get an octetString value from an IPP attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.7/macOS 10.9@ */ @@ -2404,7 +2404,7 @@ ippGetOperation(ipp_t *ipp) /* I - IPP request message */ * 'ippGetRange()' - Get a rangeOfInteger value from an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2466,7 +2466,7 @@ ippGetRequestId(ipp_t *ipp) /* I - IPP message */ * 'ippGetResolution()' - Get a resolution value for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2560,7 +2560,7 @@ ippGetStatusCode(ipp_t *ipp) /* I - IPP response or event message */ * 'ippGetString()' - Get the string and optionally the language code for an attribute. * * The @code element@ parameter specifies which value to get from 0 to - * @link ippGetCount(attr)@ - 1. + * @code ippGetCount(attr)@ - 1. * * @since CUPS 1.6/macOS 10.8@ */ @@ -2625,7 +2625,7 @@ ippGetValueTag(ipp_attribute_t *attr) /* I - IPP attribute */ int /* O - Major version number or 0 on error */ ippGetVersion(ipp_t *ipp, /* I - IPP message */ - int *minor) /* O - Minor version number or @code NULL@ */ + int *minor) /* O - Minor version number or @code NULL@ for don't care */ { /* * Range check input... @@ -2722,9 +2722,9 @@ ippNew(void) /* * 'ippNewRequest()' - Allocate a new IPP request message. * - * The new request message is initialized with the attributes-charset and - * attributes-natural-language attributes added. The - * attributes-natural-language value is derived from the current locale. + * The new request message is initialized with the "attributes-charset" and + * "attributes-natural-language" attributes added. The + * "attributes-natural-language" value is derived from the current locale. * * @since CUPS 1.2/macOS 10.5@ */ @@ -2786,11 +2786,11 @@ ippNewRequest(ipp_op_t op) /* I - Operation code */ /* * 'ippNewResponse()' - Allocate a new IPP response message. * - * The new response message is initialized with the same version-number, - * request-id, attributes-charset, and attributes-natural-language as the - * provided request message. If the attributes-charset or - * attributes-natural-language attributes are missing from the request, - * "utf-8" and a value derived from the current locale are substituted, + * The new response message is initialized with the same "version-number", + * "request-id", "attributes-charset", and "attributes-natural-language" as the + * provided request message. If the "attributes-charset" or + * "attributes-natural-language" attributes are missing from the request, + * 'utf-8' and a value derived from the current locale are substituted, * respectively. * * @since CUPS 1.7/macOS 10.9@ @@ -3706,7 +3706,7 @@ ippReadIO(void *src, /* I - Data source */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -3748,7 +3748,7 @@ ippSetBoolean(ipp_t *ipp, /* I - IPP message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -3789,7 +3789,7 @@ ippSetCollection( /* - * 'ippSetDate()' - Set a date value in an attribute. + * 'ippSetDate()' - Set a dateTime value in an attribute. * * The @code ipp@ parameter refers to an IPP message previously created using * the @link ippNew@, @link ippNewRequest@, or @link ippNewResponse@ functions. @@ -3797,7 +3797,7 @@ ippSetCollection( * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -3806,7 +3806,7 @@ 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) */ - const ipp_uchar_t *datevalue)/* I - Date value */ + const ipp_uchar_t *datevalue)/* I - dateTime value */ { _ipp_value_t *value; /* Current value */ @@ -3854,7 +3854,7 @@ ippSetGroupTag( ipp_tag_t group_tag) /* I - Group tag */ { /* - * Range check input - group tag must be 0x01 to 0x0F, per RFC 2911... + * Range check input - group tag must be 0x01 to 0x0F, per RFC 8011... */ if (!ipp || !attr || !*attr || @@ -3881,7 +3881,7 @@ ippSetGroupTag( * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -3966,7 +3966,7 @@ ippSetName(ipp_t *ipp, /* I - IPP message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.7/macOS 10.9@ */ @@ -4084,7 +4084,7 @@ ippSetOperation(ipp_t *ipp, /* I - IPP request message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -4164,7 +4164,7 @@ ippSetRequestId(ipp_t *ipp, /* I - IPP message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -4272,7 +4272,7 @@ ippSetStatusCode(ipp_t *ipp, /* I - IPP response or event message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * @since CUPS 1.6/macOS 10.8@ */ @@ -4334,7 +4334,7 @@ ippSetString(ipp_t *ipp, /* I - IPP message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * The @code format@ parameter uses formatting characters compatible with the * printf family of standard functions. Additional arguments follow it as @@ -4372,7 +4372,7 @@ ippSetStringf(ipp_t *ipp, /* I - IPP message */ * The @code attr@ parameter may be modified as a result of setting the value. * * The @code element@ parameter specifies which value to set from 0 to - * @link ippGetCount(attr)@. + * @code ippGetCount(attr)@. * * The @code format@ parameter uses formatting characters compatible with the * printf family of standard functions. Additional arguments follow it as @@ -4715,19 +4715,19 @@ ippSetVersion(ipp_t *ipp, /* I - IPP message */ /* - * 'ippTimeToDate()' - Convert from UNIX time to RFC 1903 format. + * 'ippTimeToDate()' - Convert from time in seconds to RFC 2579 format. */ -const ipp_uchar_t * /* O - RFC-1903 date/time data */ -ippTimeToDate(time_t t) /* I - UNIX time value */ +const ipp_uchar_t * /* O - RFC-2579 date/time data */ +ippTimeToDate(time_t t) /* I - Time in seconds */ { struct tm *unixdate; /* UNIX unixdate/time info */ ipp_uchar_t *date = _cupsGlobals()->ipp_date; - /* RFC-1903 date/time data */ + /* RFC-2579 date/time data */ /* - * RFC-1903 date/time format is: + * RFC-2579 date/time format is: * * Byte(s) Description * ------- ----------- @@ -4767,7 +4767,7 @@ ippTimeToDate(time_t t) /* I - UNIX time value */ * * 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 - * failure, cupsLastErrorString() is set to a human-readable message. + * failure, @link cupsLastErrorString@ is set to a human-readable message. * * @since CUPS 1.7/macOS 10.9@ */ @@ -4823,7 +4823,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad attribute name - invalid character " - "(RFC 2911 section 4.1.3)."), attr->name); + "(RFC 8011 section 5.1.4)."), attr->name); return (0); } @@ -4831,7 +4831,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad attribute name - bad length %d " - "(RFC 2911 section 4.1.3)."), attr->name, + "(RFC 8011 section 5.1.4)."), attr->name, (int)(ptr - attr->name)); return (0); } @@ -4849,7 +4849,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad boolen value %d " - "(RFC 2911 section 4.1.11)."), attr->name, + "(RFC 8011 section 5.1.21)."), attr->name, attr->values[i].boolean); return (0); } @@ -4863,7 +4863,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad enum value %d - out of range " - "(RFC 2911 section 4.1.4)."), attr->name, + "(RFC 8011 section 5.1.5)."), attr->name, attr->values[i].integer); return (0); } @@ -4877,7 +4877,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad octetString value - bad length %d " - "(RFC 2911 section 4.1.10)."), attr->name, + "(RFC 8011 section 5.1.20)."), attr->name, attr->values[i].unknown.length); return (0); } @@ -4893,7 +4893,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime month %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[2]); + "(RFC 8011 section 5.1.15)."), attr->name, date[2]); return (0); } @@ -4901,7 +4901,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime day %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[3]); + "(RFC 8011 section 5.1.15)."), attr->name, date[3]); return (0); } @@ -4909,7 +4909,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime hours %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[4]); + "(RFC 8011 section 5.1.15)."), attr->name, date[4]); return (0); } @@ -4917,7 +4917,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime minutes %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[5]); + "(RFC 8011 section 5.1.15)."), attr->name, date[5]); return (0); } @@ -4925,7 +4925,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime seconds %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[6]); + "(RFC 8011 section 5.1.15)."), attr->name, date[6]); return (0); } @@ -4933,7 +4933,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime deciseconds %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[7]); + "(RFC 8011 section 5.1.15)."), attr->name, date[7]); return (0); } @@ -4941,7 +4941,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime UTC sign '%c' " - "(RFC 2911 section 4.1.14)."), attr->name, date[8]); + "(RFC 8011 section 5.1.15)."), attr->name, date[8]); return (0); } @@ -4949,7 +4949,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime UTC hours %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[9]); + "(RFC 8011 section 5.1.15)."), attr->name, date[9]); return (0); } @@ -4957,7 +4957,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad dateTime UTC minutes %u " - "(RFC 2911 section 4.1.14)."), attr->name, date[10]); + "(RFC 8011 section 5.1.15)."), attr->name, date[10]); return (0); } } @@ -4971,7 +4971,7 @@ ippValidateAttribute( ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad resolution value %dx%d%s - cross " "feed resolution must be positive " - "(RFC 2911 section 4.1.15)."), attr->name, + "(RFC 8011 section 5.1.16)."), attr->name, attr->values[i].resolution.xres, attr->values[i].resolution.yres, attr->values[i].resolution.units == @@ -4986,7 +4986,7 @@ ippValidateAttribute( ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad resolution value %dx%d%s - feed " "resolution must be positive " - "(RFC 2911 section 4.1.15)."), attr->name, + "(RFC 8011 section 5.1.16)."), attr->name, attr->values[i].resolution.xres, attr->values[i].resolution.yres, attr->values[i].resolution.units == @@ -5001,7 +5001,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad resolution value %dx%d%s - bad " - "units value (RFC 2911 section 4.1.15)."), + "units value (RFC 8011 section 5.1.16)."), attr->name, attr->values[i].resolution.xres, attr->values[i].resolution.yres, attr->values[i].resolution.units == @@ -5020,7 +5020,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad rangeOfInteger value %d-%d - lower " - "greater than upper (RFC 2911 section 4.1.13)."), + "greater than upper (RFC 8011 section 5.1.14)."), attr->name, attr->values[i].range.lower, attr->values[i].range.upper); return (0); @@ -5082,7 +5082,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad UTF-8 " - "sequence (RFC 2911 section 4.1.1)."), attr->name, + "sequence (RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text); return (0); } @@ -5091,7 +5091,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad length %d " - "(RFC 2911 section 4.1.1)."), attr->name, + "(RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text, (int)(ptr - attr->values[i].string.text)); return (0); @@ -5140,7 +5140,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad UTF-8 " - "sequence (RFC 2911 section 4.1.2)."), attr->name, + "sequence (RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text); return (0); } @@ -5149,7 +5149,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad length %d " - "(RFC 2911 section 4.1.2)."), attr->name, + "(RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text, (int)(ptr - attr->values[i].string.text)); return (0); @@ -5169,7 +5169,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad keyword value \"%s\" - invalid " - "character (RFC 2911 section 4.1.3)."), + "character (RFC 8011 section 5.1.4)."), attr->name, attr->values[i].string.text); return (0); } @@ -5178,7 +5178,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad keyword value \"%s\" - bad " - "length %d (RFC 2911 section 4.1.3)."), + "length %d (RFC 8011 section 5.1.4)."), attr->name, attr->values[i].string.text, (int)(ptr - attr->values[i].string.text)); return (0); @@ -5200,7 +5200,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad URI value \"%s\" - %s " - "(RFC 2911 section 4.1.5)."), attr->name, + "(RFC 8011 section 5.1.6)."), attr->name, attr->values[i].string.text, uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]); @@ -5211,7 +5211,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad URI value \"%s\" - bad length %d " - "(RFC 2911 section 4.1.5)."), attr->name, + "(RFC 8011 section 5.1.6)."), attr->name, attr->values[i].string.text, (int)strlen(attr->values[i].string.text)); } @@ -5234,7 +5234,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad uriScheme value \"%s\" - bad " - "characters (RFC 2911 section 4.1.6)."), + "characters (RFC 8011 section 5.1.7)."), attr->name, attr->values[i].string.text); return (0); } @@ -5243,7 +5243,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad uriScheme value \"%s\" - bad " - "length %d (RFC 2911 section 4.1.6)."), + "length %d (RFC 8011 section 5.1.7)."), attr->name, attr->values[i].string.text, (int)(ptr - attr->values[i].string.text)); return (0); @@ -5263,7 +5263,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad charset value \"%s\" - bad " - "characters (RFC 2911 section 4.1.7)."), + "characters (RFC 8011 section 5.1.8)."), attr->name, attr->values[i].string.text); return (0); } @@ -5272,7 +5272,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad charset value \"%s\" - bad " - "length %d (RFC 2911 section 4.1.7)."), + "length %d (RFC 8011 section 5.1.8)."), attr->name, attr->values[i].string.text, (int)(ptr - attr->values[i].string.text)); return (0); @@ -5318,7 +5318,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad naturalLanguage value \"%s\" - bad " - "characters (RFC 2911 section 4.1.8)."), + "characters (RFC 8011 section 5.1.9)."), attr->name, attr->values[i].string.text); regfree(&re); return (0); @@ -5328,7 +5328,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad naturalLanguage value \"%s\" - bad " - "length %d (RFC 2911 section 4.1.8)."), + "length %d (RFC 8011 section 5.1.9)."), attr->name, attr->values[i].string.text, (int)strlen(attr->values[i].string.text)); regfree(&re); @@ -5372,7 +5372,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad mimeMediaType value \"%s\" - bad " - "characters (RFC 2911 section 4.1.9)."), + "characters (RFC 8011 section 5.1.10)."), attr->name, attr->values[i].string.text); regfree(&re); return (0); @@ -5382,7 +5382,7 @@ ippValidateAttribute( { ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad mimeMediaType value \"%s\" - bad " - "length %d (RFC 2911 section 4.1.9)."), + "length %d (RFC 8011 section 5.1.10)."), attr->name, attr->values[i].string.text, (int)strlen(attr->values[i].string.text)); regfree(&re); @@ -5405,8 +5405,8 @@ ippValidateAttribute( * 'ippValidateAttributes()' - Validate all attributes in an IPP message. * * This function validates the contents of the IPP message, including each - * attribute. Like @link ippValidateAttribute@, cupsLastErrorString() is set - * to a human-readable message on failure. + * attribute. Like @link ippValidateAttribute@, @link cupsLastErrorString@ is + * set to a human-readable message on failure. * * @since CUPS 1.7/macOS 10.9@ */ diff --git a/cups/ipp.h b/cups/ipp.h index feea0899f..2a4f546c7 100644 --- a/cups/ipp.h +++ b/cups/ipp.h @@ -276,7 +276,7 @@ typedef enum ipp_op_e /**** IPP operations ****/ IPP_OP_GET_NOTIFICATIONS, /* Get-Notifications: Get notification events @since CUPS 1.2/macOS 10.5@ */ IPP_OP_SEND_NOTIFICATIONS, /* Send-Notifications: Send notification events @private@ */ IPP_OP_GET_RESOURCE_ATTRIBUTES, /* Get-Resource-Attributes: Get resource information @private@ */ - IPP_OP_GET_RESOURCE_DATA, /* Get-Resource-Data: Get resource data @private@ */ + IPP_OP_GET_RESOURCE_DATA, /* Get-Resource-Data: Get resource data @private@ @deprecated@ */ IPP_OP_GET_RESOURCES, /* Get-Resources: Get list of resources @private@ */ IPP_OP_GET_PRINT_SUPPORT_FILES, /* Get-Printer-Support-Files: Get printer support files @private@ */ IPP_OP_ENABLE_PRINTER, /* Enable-Printer: Accept new jobs for a printer */ @@ -442,7 +442,7 @@ typedef enum ipp_orient_e /**** Orientation values ****/ # endif /* !_CUPS_NO_DEPRECATED */ } ipp_orient_t; -typedef enum ipp_pstate_e /**** Printer states ****/ +typedef enum ipp_pstate_e /**** Printer state values ****/ { IPP_PSTATE_IDLE = 3, /* Printer is idle */ IPP_PSTATE_PROCESSING, /* Printer is working */ @@ -455,7 +455,7 @@ typedef enum ipp_pstate_e /**** Printer states ****/ # endif /* _CUPS_NO_DEPRECATED */ } ipp_pstate_t; -typedef enum ipp_quality_e /**** Qualities ****/ +typedef enum ipp_quality_e /**** Print quality values ****/ { IPP_QUALITY_DRAFT = 3, /* Draft quality */ IPP_QUALITY_NORMAL, /* Normal quality */ @@ -468,7 +468,7 @@ typedef enum ipp_res_e /**** Resolution units ****/ IPP_RES_PER_CM /* Pixels per centimeter */ } ipp_res_t; -typedef enum ipp_state_e /**** IPP states ****/ +typedef enum ipp_state_e /**** ipp_t state values ****/ { IPP_STATE_ERROR = -1, /* An error occurred */ IPP_STATE_IDLE, /* Nothing is happening/request completed */ @@ -485,7 +485,7 @@ typedef enum ipp_state_e /**** IPP states ****/ # endif /* !_CUPS_NO_DEPRECATED */ } ipp_state_t; -typedef enum ipp_status_e /**** IPP status codes ****/ +typedef enum ipp_status_e /**** IPP status code values ****/ { IPP_STATUS_CUPS_INVALID = -1, /* Invalid status name for @link ippErrorValue@ */ IPP_STATUS_OK = 0x0000, /* successful-ok */ @@ -636,7 +636,7 @@ typedef enum ipp_status_e /**** IPP status codes ****/ # endif /* _CUPS_NO_DEPRECATED */ } ipp_status_t; -typedef enum ipp_tag_e /**** Format tags for attributes ****/ +typedef enum ipp_tag_e /**** Value and group tag values for attributes ****/ { IPP_TAG_CUPS_INVALID = -1, /* Invalid tag name for @link ippTagValue@ */ IPP_TAG_ZERO = 0x00, /* Zero tag - used for separators */ @@ -695,10 +695,11 @@ typedef struct _ipp_attribute_s ipp_attribute_t; /**** New in CUPS 1.2/macOS 10.5 ****/ typedef ssize_t (*ipp_iocb_t)(void *context, ipp_uchar_t *buffer, size_t bytes); - /**** IPP IO Callback Function @since CUPS 1.2/macOS 10.5@ ****/ + /**** ippReadIO/ippWriteIO callback function @since CUPS 1.2/macOS 10.5@ ****/ /**** New in CUPS 1.6/macOS 10.8 ****/ typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr); + /**** ippCopyAttributes callback function @since CUPS 1.6/macOS 10.8 ****/ /* @@ -805,7 +806,7 @@ typedef union _ipp_value_u /**** Attribute Value ****/ } _ipp_value_t; typedef _ipp_value_t ipp_value_t; /**** Convenience typedef that will be removed @private@ ****/ -struct _ipp_attribute_s /**** Attribute ****/ +struct _ipp_attribute_s /**** IPP attribute ****/ { ipp_attribute_t *next; /* Next attribute in list */ ipp_tag_t group_tag, /* Job/Printer/Operation group tag */ diff --git a/doc/help/cupspm.epub b/doc/help/cupspm.epub index 6a35cb7e15460b744de0a7c5a00767543bdb5c3a..ef8ac473ac3fedf30e54c2e37ea4f091f62d10e6 100644 GIT binary patch delta 43159 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

B}7aK*Ff- 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 delta 43355 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 Z?eV`U{`(ZYNSd-DfDDF8;ok)i{|6PkHjV%Q diff --git a/doc/help/cupspm.html b/doc/help/cupspm.html index 45610d1bf..7ece8f0cf 100644 --- a/doc/help/cupspm.html +++ b/doc/help/cupspm.html @@ -160,7 +160,6 @@ table.list td { padding: 5px 2px 5px 10px; text-align: left; vertical-align: top; - width: 80%; } h1.title { } @@ -303,7 +302,6 @@ h3.title {

  • httpGetExpect
  • httpGetFd
  • httpGetField
  • -
  • httpGetHostByName
  • httpGetHostname
  • httpGetKeepAlive
  • httpGetLength2
  • @@ -342,7 +340,6 @@ h3.title {
  • httpShutdown
  • httpStateString
  • httpStatus
  • -
  • httpTrace
  • httpURIStatusString
  • httpUpdate
  • httpWait
  • @@ -2696,7 +2693,7 @@ int httpCompareCredentials(cups_array_t *cred1, cups_array_t *cred2);

    port Port number addrlist - List of addresses or NULL to lookup + List of addresses or NULL to lookup family Address family to use or AF_UNSPEC for any encryption @@ -2793,7 +2790,7 @@ char *httpDecode64_2(char *out, int *outlen, const char *in);

    Decoded string

    Discussion

    The caller must initialize "outlen" to the maximum size of the decoded -string before calling @httpDecode64_2@. On return "outlen" contains the +string before calling httpDecode64_2. On return "outlen" contains the decoded length of the string.

    @@ -2864,7 +2861,7 @@ name.

    Return Value

    Field index

    httpFlush

    -

    Flush data from a HTTP connection.

    +

    Flush data read from a HTTP connection.

    void httpFlush(http_t *http);

    Parameters

    @@ -2873,7 +2870,7 @@ void httpFlush(http_t *http);

    HTTP connection

     CUPS 1.2/macOS 10.5 httpFlushWrite

    -

    Flush data in write buffer.

    +

    Flush data written to a HTTP connection.

    int httpFlushWrite(http_t *http);

    Parameters

    @@ -2917,7 +2914,7 @@ time_t httpGetActivity(http_t *http);

    Return Value

    Time of last read or write

    Discussion

    -

    The return value is the UNIX time of the last read or write. +

    The return value is the time in seconds of the last read or write.

     CUPS 2.0/OS 10.10 httpGetAddress

    @@ -2932,7 +2929,11 @@ time_t httpGetActivity(http_t *http);

    Return Value

    Connected address or NULL

    Discussion

    -

    Returns NULL if the socket is currently unconnected. +

    For connections created with httpConnect2, the address is for the +server. For connections created with httpAccept, the address is for +the client.
    +
    +Returns NULL if the socket is currently unconnected.

     CUPS 1.3/macOS 10.5 httpGetAuthString

    @@ -2947,10 +2948,10 @@ char *httpGetAuthString(http_t *http);

    Return Value

    Authorization string

    Discussion

    -

    The authorization string is set by cupsDoAuthentication() and -httpSetAuthString(). Use httpGetAuthString() to retrieve the -string to use with httpSetField() for the HTTP_FIELD_AUTHORIZATION -value. +

    The authorization string is set by cupsDoAuthentication and +httpSetAuthString. Use httpGetAuthString to retrieve the +string to use with httpSetField for the +HTTP_FIELD_AUTHORIZATION value.

     CUPS 1.2/macOS 10.5 httpGetBlocking

    @@ -2995,7 +2996,7 @@ const char *httpGetCookie(http_t *http);

    HTTP connection

    Return Value

    -

    Cookie data or NULL

    +

    Cookie data or NULL

     CUPS 1.2/macOS 10.5 httpGetDateString2

    Get a formatted date/time string from a time value.

    @@ -3003,7 +3004,7 @@ const char *httpGetDateString2(time_t t, char *s, int slen);

    Parameters

    - + @@ -3021,7 +3022,7 @@ time_t httpGetDateTime(const char *s);

    tUNIX time
    Time in seconds
    s String buffer
    slen Date/time string

    Return Value

    -

    UNIX time

    +

    Time in seconds

     CUPS 2.0/OS 10.10 httpGetEncryption

    Get the current encryption mode of a connection.

    @@ -3079,18 +3080,6 @@ const char *httpGetField(http_t *http, Return Value

    Field value

    -

     DEPRECATED httpGetHostByName

    -

    Lookup a hostname or IPv4 address, and return -address records for the specified name.

    -

    -struct hostent *httpGetHostByName(const char *name);

    -

    Parameters

    - - - -
    nameHostname or IP address
    -

    Return Value

    -

    Host entry

     CUPS 1.2/macOS 10.5 httpGetHostname

    Get the FQDN for the connection or local system.

    @@ -3221,7 +3210,7 @@ char *httpGetSubField2(http_t *http, Size of value buffer

    Return Value

    -

    Value or NULL

    +

    Value or NULL

    httpGetVersion

    Get the HTTP version at the other end.

    @@ -3247,7 +3236,7 @@ char *httpGets(char *line, int length, http_t *http);

    HTTP connection

    Return Value

    -

    Line or NULL

    +

    Line or NULL

    httpHead

    Send a HEAD request to the server.

    @@ -3343,7 +3332,7 @@ ssize_t httpPeek(http_t *http, char *buffer, size_t length

    Discussion

    This function copies available data from the given HTTP connection, reading a buffer as needed. The data is still available for reading using -httpRead or httpRead2.
    +httpRead2.

    For non-blocking connections the usual timeouts apply. @@ -3498,9 +3487,10 @@ void httpSetAuthString(http_t *http, const char *scheme, c

    Discussion

    This function just stores a copy of the current authorization string in -the HTTP connection object. You must still call httpSetField() to set -HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using httpGet(), -httpHead(), httpOptions(), httpPost, or httpPut(). +the HTTP connection object. You must still call httpSetField to set +HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using +httpGet, httpHead, httpOptions, httpPost, or +httpPut.

     CUPS 1.1.19/macOS 10.3 httpSetCookie

    @@ -3610,7 +3600,7 @@ void httpSetTimeout(http_t *http, double timeout, Number of seconds for timeout, must be greater than 0 cb - Callback function or NULL + Callback function or NULL user_data User data pointer @@ -3652,20 +3642,7 @@ const char *httpStatus(http_status_t status);

    Localized status string

    Discussion

    The returned string is localized to the current POSIX locale and is based -on the status strings defined in RFC 2616.

    -

    httpTrace

    -

    Send an TRACE request to the server.

    -

    -int httpTrace(http_t *http, const char *uri);

    -

    Parameters

    - - - - - -
    httpHTTP connection
    uriURI for trace
    -

    Return Value

    -

    Status of call (0 = success)

    +on the status strings defined in RFC 7231.

     CUPS 2.0/OS 10.10 httpURIStatusString

    Return a string describing a URI status code.

    @@ -3842,7 +3819,7 @@ event notification (IPP_TAG_EVENT_NOTIFICATION), operation

    ippAddDate

    -

    Add a date attribute to an IPP message.

    +

    Add a dateTime attribute to an IPP message.

    ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group, const char *name, const ipp_uchar_t *value);

    Parameters

    @@ -4372,7 +4349,7 @@ int ippContainsString(ipp_attribute_t *attr, cons

    1 on a match, 0 on no match

    Discussion

    Returns non-zero when the attribute contains a matching charset, keyword, -language, mimeMediaType, name, text, URI, or URI scheme value. +naturalLanguage, mimeMediaType, name, text, uri, or uriScheme value.

     CUPS 1.6/macOS 10.8 ippCopyAttribute

    @@ -4456,14 +4433,14 @@ using the cupsArrayDelete function.

    ippDateToTime

    -

    Convert from RFC 1903 Date/Time format to UNIX time -in seconds.

    +

    Convert from RFC 2579 Date/Time format to time in +seconds.

    time_t ippDateToTime(const ipp_uchar_t *date);

    Parameters

    - +
    dateRFC 1903 date info
    RFC 2579 date info

    Return Value

    UNIX time value

    @@ -4625,7 +4602,7 @@ int ippGetBoolean(ipp_attribute_t *attr, int elem

    Boolean value or 0 on error

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetCollection

    @@ -4643,7 +4620,7 @@ int ippGetBoolean(ipp_attribute_t *attr, int elem

    Collection value or NULL on error

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetCount

    @@ -4658,7 +4635,7 @@ int ippGetCount(ipp_attribute_t *attr);

    Return Value

    Number of values or 0 on error

     CUPS 1.6/macOS 10.8 ippGetDate

    -

    Get a date value for an attribute.

    +

    Get a dateTime value for an attribute.

    const ipp_uchar_t *ippGetDate(ipp_attribute_t *attr, int element);

    Parameters

    @@ -4669,10 +4646,10 @@ const ipp_uchar_t *ippGetDate(Value number (0-based)

    Return Value

    -

    Date value or NULL

    +

    dateTime value or NULL

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetGroupTag

    @@ -4701,7 +4678,7 @@ int ippGetInteger(ipp_attribute_t *attr, int elem

    Value or 0 on error

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetName

    @@ -4732,7 +4709,7 @@ void *ippGetOctetString(ipp_attribute_t *attr, in

    Pointer to octetString data

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetOperation

    @@ -4763,7 +4740,7 @@ int ippGetRange(ipp_attribute_t *attr, int elemen

    Lower value of range or 0

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetRequestId

    @@ -4796,7 +4773,7 @@ int ippGetResolution(ipp_attribute_t *attr, int e

    Horizontal/cross feed resolution or 0

    Discussion

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetState

    @@ -4837,7 +4814,7 @@ const char *ippGetString(ipp_attribute_t *attr, i

    Return Value

    Get the string and optionally the language code for an attribute.

    The element parameter specifies which value to get from 0 to -ippGetCount(attr) - 1. +ippGetCount(attr) - 1.

     CUPS 1.6/macOS 10.8 ippGetValueTag

    @@ -4860,7 +4837,7 @@ int ippGetVersion(ipp_t *ipp, int *minor);

    ipp IPP message minor - Minor version number or NULL + Minor version number or NULL for don't care

    Return Value

    Major version number or 0 on error

    @@ -4893,9 +4870,9 @@ size_t ippLength(ipp_t *ipp);

    Return Value

    IPP request message

    Discussion

    -

    The new request message is initialized with the attributes-charset and -attributes-natural-language attributes added. The -attributes-natural-language value is derived from the current locale. +

    The new request message is initialized with the "attributes-charset" and +"attributes-natural-language" attributes added. The +"attributes-natural-language" value is derived from the current locale.

     CUPS 1.7/macOS 10.9 ippNewResponse

    @@ -4910,11 +4887,11 @@ attributes-natural-language value is derived from the current locale.

    Return Value

    IPP response message

    Discussion

    -

    The new response message is initialized with the same version-number, -request-id, attributes-charset, and attributes-natural-language as the -provided request message. If the attributes-charset or -attributes-natural-language attributes are missing from the request, -"utf-8" and a value derived from the current locale are substituted, +

    The new response message is initialized with the same "version-number", +"request-id", "attributes-charset", and "attributes-natural-language" as the +provided request message. If the "attributes-charset" or +"attributes-natural-language" attributes are missing from the request, +'utf-8' and a value derived from the current locale are substituted, respectively.

    @@ -5026,7 +5003,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetCollection

    @@ -5053,11 +5030,11 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetDate

    -

    Set a date value in an attribute.

    +

    Set a dateTime value in an attribute.

    int ippSetDate(ipp_t *ipp, ipp_attribute_t **attr, int element, const ipp_uchar_t *datevalue);

    Parameters

    @@ -5069,7 +5046,7 @@ int ippSetDate(ipp_t *ipp, ipp_a element Value number (0-based) datevalue - Date value + dateTime value

    Return Value

    1 on success, 0 on failure

    @@ -5080,7 +5057,7 @@ the
    ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetGroupTag

    @@ -5135,7 +5112,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetName

    @@ -5186,7 +5163,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetOperation

    @@ -5242,7 +5219,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetRequestId

    @@ -5293,7 +5270,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.6/macOS 10.8 ippSetState

    @@ -5351,7 +5328,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr). +ippGetCount(attr).

     CUPS 1.7/macOS 10.9 ippSetStringf

    @@ -5380,7 +5357,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr).
    +ippGetCount(attr).

    The format parameter uses formatting characters compatible with the printf family of standard functions. Additional arguments follow it as @@ -5414,7 +5391,7 @@ the ippNew, ip The attr parameter may be modified as a result of setting the value.

    The element parameter specifies which value to set from 0 to -
    ippGetCount(attr).
    +ippGetCount(attr).

    The format parameter uses formatting characters compatible with the printf family of standard functions. Additional arguments follow it as @@ -5501,7 +5478,7 @@ const char *ippTagString(ipp_tag_t tag);

    Return Value

    Tag name

    Discussion

    -

    The returned names are defined in RFC 2911 and 3382. +

    The returned names are defined in RFC 8011 and the IANA IPP Registry.

     CUPS 1.4/macOS 10.6 ippTagValue

    @@ -5516,20 +5493,20 @@ ipp_tag_t ippTagValue(const char *name);

    Return Value

    Tag value

    Discussion

    -

    The tag names are defined in RFC 2911 and 3382. +

    The tag names are defined in RFC 8011 and the IANA IPP Registry.

    ippTimeToDate

    -

    Convert from UNIX time to RFC 1903 format.

    +

    Convert from time in seconds to RFC 2579 format.

    const ipp_uchar_t *ippTimeToDate(time_t t);

    Parameters

    - +
    tUNIX time value
    Time in seconds

    Return Value

    -

    RFC-1903 date/time data

    +

    RFC-2579 date/time data

     CUPS 1.7/macOS 10.9 ippValidateAttribute

    Validate the contents of an attribute.

    @@ -5544,7 +5521,7 @@ int ippValidateAttribute(ipp_attribute_t *attr);<

    Discussion

    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 -failure, cupsLastErrorString() is set to a human-readable message. +failure, cupsLastErrorString is set to a human-readable message.

     CUPS 1.7/macOS 10.9 ippValidateAttributes

    @@ -5560,8 +5537,8 @@ int ippValidateAttributes(ipp_t *ipp);

    1 if valid, 0 otherwise

    Discussion

    This function validates the contents of the IPP message, including each -attribute. Like ippValidateAttribute, cupsLastErrorString() is set -to a human-readable message on failure. +attribute. Like ippValidateAttribute, cupsLastErrorString is +set to a human-readable message on failure.

    ippWrite

    @@ -5729,15 +5706,13 @@ typedef enum http_uri_status_e http_uri_status_

    typedef struct _ipp_attribute_s ipp_attribute_t;

    -

    ipp_copycb_t

    -

    The following structures are PRIVATE starting with CUPS 1.6/macOS 10.8. -Please use the new accessor functions available in CUPS 1.6 and later, as -these definitions will be moved to a private header file in a future release.

    +

     CUPS 1.6/macOS 10.8 ipp_copycb_t

    +

    ippCopyAttributes callback function

    typedef int(*)(void *context, ipp_t *dst, ipp_attribute_t *attr)ipp_copycb_t;

     CUPS 1.2/macOS 10.5 ipp_iocb_t

    -

    IPP IO Callback Function

    +

    ippReadIO/ippWriteIO callback function

    typedef ssize_t(*)(void *context, ipp_uchar_t *buffer, size_t bytes) ipp_iocb_t;

    @@ -5747,12 +5722,12 @@ typedef ssize_t(*)(void *context, ipp_uchar_t *buffer, size_t bytes) ipp_iocb_t; typedef enum ipp_orient_e ipp_orient_t;

    ipp_pstate_t

    -

    Printer states

    +

    Printer state values

    typedef enum ipp_pstate_e ipp_pstate_t;

    ipp_quality_t

    -

    Qualities

    +

    Print quality values

    typedef enum ipp_quality_e ipp_quality_t;

    @@ -5762,7 +5737,7 @@ typedef enum ipp_quality_e ipp_quality_t; typedef enum ipp_res_e ipp_res_t;

    ipp_state_t

    -

    IPP states

    +

    ipp_t state values

    typedef enum ipp_state_e ipp_state_t;

    @@ -6221,7 +6196,7 @@ are server-oriented...

    IPP_ORIENT_REVERSE_PORTRAIT 180 degrees

    ipp_pstate_e

    -

    Printer states

    +

    Printer state values

    Constants

    @@ -6229,7 +6204,7 @@ are server-oriented...

    IPP_PSTATE_IDLE Printer is idle
    IPP_PSTATE_STOPPED Printer is stopped

    ipp_quality_e

    -

    Qualities

    +

    Print quality values

    Constants

    @@ -6244,7 +6219,7 @@ are server-oriented...

    IPP_QUALITY_DRAFT Draft quality
    IPP_RES_PER_INCH Pixels per inch

    ipp_state_e

    -

    IPP states

    +

    ipp_t state values

    Constants

    @@ -6254,7 +6229,7 @@ are server-oriented...

    IPP_STATE_ATTRIBUTE One or more attributes need to be sent/received
    IPP_STATE_IDLE Nothing is happening/request completed

    ipp_status_e

    -

    IPP status codes

    +

    IPP status code values

    Constants

    @@ -6317,7 +6292,7 @@ are server-oriented...

    IPP_STATUS_CUPS_INVALID Invalid status name for ippErrorValue
    IPP_STATUS_OK_TOO_MANY_EVENTS successful-ok-too-many-events

    ipp_tag_e

    -

    Format tags for attributes

    +

    Value and group tag values for attributes

    Constants

    diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj index 6629a73c3..2edef8343 100644 --- a/xcode/CUPS.xcodeproj/project.pbxproj +++ b/xcode/CUPS.xcodeproj/project.pbxproj @@ -4897,8 +4897,8 @@ 72220EDE133305BB00FCA411 /* http-addr.c */, 72220EDF133305BB00FCA411 /* http-addrlist.c */, 72220EE1133305BB00FCA411 /* http-support.c */, - 72220EE5133305BB00FCA411 /* ipp-support.c */, 72220EE6133305BB00FCA411 /* ipp.c */, + 72220EE5133305BB00FCA411 /* ipp-support.c */, 72220EE8133305BB00FCA411 /* langprintf.c */, 72220EEA133305BB00FCA411 /* language.c */, 72220EEF133305BB00FCA411 /* md5.c */, -- 2.39.5
    IPP_TAG_ADMINDEFINE Admin-defined value