/*
* Internet Printing Protocol functions for CUPS.
*
- * Copyright © 2007-2018 by Apple Inc.
+ * Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* Range check input...
*/
- if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_DATE ||
- element < 0 || element > (*attr)->num_values || !datevalue)
+ if (!ipp || !attr || !*attr || ((*attr)->value_tag != IPP_TAG_DATE && (*attr)->value_tag != IPP_TAG_NOVALUE && (*attr)->value_tag != IPP_TAG_UNKNOWN) || element < 0 || element > (*attr)->num_values || !datevalue)
return (0);
/*
* Range check input...
*/
- if (!ipp || !attr || !*attr ||
- ((*attr)->value_tag != IPP_TAG_INTEGER && (*attr)->value_tag != IPP_TAG_ENUM) ||
- element < 0 || element > (*attr)->num_values)
+ if (!ipp || !attr || !*attr || ((*attr)->value_tag != IPP_TAG_INTEGER && (*attr)->value_tag != IPP_TAG_ENUM && (*attr)->value_tag != IPP_TAG_NOVALUE && (*attr)->value_tag != IPP_TAG_UNKNOWN) || element < 0 || element > (*attr)->num_values)
return (0);
/*
*/
if ((value = ipp_set_value(ipp, attr, element)) != NULL)
+ {
+ if ((*attr)->value_tag != IPP_TAG_ENUM)
+ (*attr)->value_tag = IPP_TAG_INTEGER;
+
value->integer = intvalue;
+ }
return (value != NULL);
}
* Range check input...
*/
- if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_STRING ||
- element < 0 || element > (*attr)->num_values ||
- datalen < 0 || datalen > IPP_MAX_LENGTH)
+ if (!ipp || !attr || !*attr || ((*attr)->value_tag != IPP_TAG_STRING && (*attr)->value_tag != IPP_TAG_NOVALUE && (*attr)->value_tag != IPP_TAG_UNKNOWN) || element < 0 || element > (*attr)->num_values || datalen < 0 || datalen > IPP_MAX_LENGTH)
return (0);
/*
* Copy the data...
*/
+ (*attr)->value_tag = IPP_TAG_STRING;
+
if (value->unknown.data)
{
/*
* Range check input...
*/
- if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_RANGE ||
- element < 0 || element > (*attr)->num_values || lowervalue > uppervalue)
+ if (!ipp || !attr || !*attr || ((*attr)->value_tag != IPP_TAG_RANGE && (*attr)->value_tag != IPP_TAG_NOVALUE && (*attr)->value_tag != IPP_TAG_UNKNOWN) || element < 0 || element > (*attr)->num_values || lowervalue > uppervalue)
return (0);
/*
if ((value = ipp_set_value(ipp, attr, element)) != NULL)
{
+ (*attr)->value_tag = IPP_TAG_RANGE;
value->range.lower = lowervalue;
value->range.upper = uppervalue;
}
* Range check input...
*/
- if (!ipp || !attr || !*attr || (*attr)->value_tag != IPP_TAG_RESOLUTION ||
- element < 0 || element > (*attr)->num_values || xresvalue <= 0 || yresvalue <= 0 ||
- unitsvalue < IPP_RES_PER_INCH || unitsvalue > IPP_RES_PER_CM)
+ if (!ipp || !attr || !*attr || ((*attr)->value_tag != IPP_TAG_RESOLUTION && (*attr)->value_tag != IPP_TAG_NOVALUE && (*attr)->value_tag != IPP_TAG_UNKNOWN) || element < 0 || element > (*attr)->num_values || xresvalue <= 0 || yresvalue <= 0 || unitsvalue < IPP_RES_PER_INCH || unitsvalue > IPP_RES_PER_CM)
return (0);
/*
if ((value = ipp_set_value(ipp, attr, element)) != NULL)
{
+ (*attr)->value_tag = IPP_TAG_RESOLUTION;
value->resolution.units = unitsvalue;
value->resolution.xres = xresvalue;
value->resolution.yres = yresvalue;
else
value_tag = IPP_TAG_ZERO;
- if (!ipp || !attr || !*attr ||
- (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
- value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
- element < 0 || element > (*attr)->num_values || !strvalue)
+ if (!ipp || !attr || !*attr || (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG && value_tag != IPP_TAG_NAMELANG && value_tag != IPP_TAG_NOVALUE && value_tag != IPP_TAG_UNKNOWN) || value_tag > IPP_TAG_MIMETYPE || element < 0 || element > (*attr)->num_values || !strvalue)
return (0);
/*
if ((value = ipp_set_value(ipp, attr, element)) != NULL)
{
+ if (value_tag == IPP_TAG_NOVALUE || value_tag == IPP_TAG_UNKNOWN)
+ (*attr)->value_tag = IPP_TAG_KEYWORD;
+
if (element > 0)
value->string.language = (*attr)->values[0].string.language;
else
value_tag = IPP_TAG_ZERO;
- if (!ipp || !attr || !*attr ||
- (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG &&
- value_tag != IPP_TAG_NAMELANG) || value_tag > IPP_TAG_MIMETYPE ||
- !format)
+ if (!ipp || !attr || !*attr || (value_tag < IPP_TAG_TEXT && value_tag != IPP_TAG_TEXTLANG && value_tag != IPP_TAG_NAMELANG && value_tag != IPP_TAG_NOVALUE && value_tag != IPP_TAG_UNKNOWN) || value_tag > IPP_TAG_MIMETYPE || !format)
return (0);
/*
max_bytes = IPP_MAX_CHARSET;
break;
+ case IPP_TAG_NOVALUE :
+ case IPP_TAG_UNKNOWN :
case IPP_TAG_KEYWORD :
max_bytes = IPP_MAX_KEYWORD;
break;