MCPcopy Create free account
hub / github.com/OpenPrinting/cups / ippSetOctetString

Function ippSetOctetString

cups/ipp.c:3185–3256  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3183 */
3184
3185int /* O - 1 on success, 0 on failure */
3186ippSetOctetString(
3187 ipp_t *ipp, /* I - IPP message */
3188 ipp_attribute_t **attr, /* IO - IPP attribute */
3189 int element, /* I - Value number (0-based) */
3190 const void *data, /* I - Pointer to octetString data */
3191 int datalen) /* I - Length of octetString data */
3192{
3193 _ipp_value_t *value; /* Current value */
3194
3195
3196 /*
3197 * Range check input...
3198 */
3199
3200 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)
3201 return (0);
3202
3203 /*
3204 * Set the value and return...
3205 */
3206
3207 if ((value = ipp_set_value(ipp, attr, element)) != NULL)
3208 {
3209 if ((int)((*attr)->value_tag) & IPP_TAG_CUPS_CONST)
3210 {
3211 /*
3212 * Just copy the pointer...
3213 */
3214
3215 value->unknown.data = (void *)data;
3216 value->unknown.length = datalen;
3217 }
3218 else
3219 {
3220 /*
3221 * Copy the data...
3222 */
3223
3224 (*attr)->value_tag = IPP_TAG_STRING;
3225
3226 if (value->unknown.data)
3227 {
3228 /*
3229 * Free previous data...
3230 */
3231
3232 free(value->unknown.data);
3233
3234 value->unknown.data = NULL;
3235 value->unknown.length = 0;
3236 }
3237
3238 if (datalen > 0)
3239 {
3240 void *temp; /* Temporary data pointer */
3241
3242 if ((temp = malloc((size_t)datalen)) != NULL)

Callers 7

load_legacy_attributesFunction · 0.85
load_ppd_attributesFunction · 0.85
show_mediaFunction · 0.85
show_suppliesFunction · 0.85
cupsdSetPrinterAttrFunction · 0.85
_cupsEncodeOptionFunction · 0.85
parse_valueFunction · 0.85

Calls 1

ipp_set_valueFunction · 0.85

Tested by

no test coverage detected