| 1469 | |
| 1470 | |
| 1471 | ipp_attribute_t * /* O - New attribute */ |
| 1472 | ippCopyAttribute( |
| 1473 | ipp_t *dst, /* I - Destination IPP message */ |
| 1474 | ipp_attribute_t *srcattr, /* I - Attribute to copy */ |
| 1475 | int quickcopy) /* I - 1 for a referenced copy, 0 for normal */ |
| 1476 | { |
| 1477 | int i; /* Looping var */ |
| 1478 | ipp_tag_t srctag; /* Source value tag */ |
| 1479 | ipp_attribute_t *dstattr; /* Destination attribute */ |
| 1480 | _ipp_value_t *srcval, /* Source value */ |
| 1481 | *dstval; /* Destination value */ |
| 1482 | |
| 1483 | |
| 1484 | DEBUG_printf(("ippCopyAttribute(dst=%p, srcattr=%p, quickcopy=%d)", (void *)dst, (void *)srcattr, quickcopy)); |
| 1485 | |
| 1486 | /* |
| 1487 | * Range check input... |
| 1488 | */ |
| 1489 | |
| 1490 | if (!dst || !srcattr) |
| 1491 | return (NULL); |
| 1492 | |
| 1493 | /* |
| 1494 | * Copy it... |
| 1495 | */ |
| 1496 | |
| 1497 | quickcopy = (quickcopy && (srcattr->value_tag & IPP_TAG_CUPS_CONST)) ? IPP_TAG_CUPS_CONST : 0; |
| 1498 | srctag = srcattr->value_tag & IPP_TAG_CUPS_MASK; |
| 1499 | |
| 1500 | switch (srctag) |
| 1501 | { |
| 1502 | case IPP_TAG_ZERO : |
| 1503 | dstattr = ippAddSeparator(dst); |
| 1504 | break; |
| 1505 | |
| 1506 | case IPP_TAG_UNSUPPORTED_VALUE : |
| 1507 | case IPP_TAG_DEFAULT : |
| 1508 | case IPP_TAG_UNKNOWN : |
| 1509 | case IPP_TAG_NOVALUE : |
| 1510 | case IPP_TAG_NOTSETTABLE : |
| 1511 | case IPP_TAG_DELETEATTR : |
| 1512 | case IPP_TAG_ADMINDEFINE : |
| 1513 | dstattr = ippAddOutOfBand(dst, srcattr->group_tag, srctag, srcattr->name); |
| 1514 | break; |
| 1515 | |
| 1516 | case IPP_TAG_INTEGER : |
| 1517 | case IPP_TAG_ENUM : |
| 1518 | case IPP_TAG_BOOLEAN : |
| 1519 | case IPP_TAG_DATE : |
| 1520 | case IPP_TAG_RESOLUTION : |
| 1521 | case IPP_TAG_RANGE : |
| 1522 | if ((dstattr = ipp_add_attr(dst, srcattr->name, srcattr->group_tag, srctag, srcattr->num_values)) != NULL) |
| 1523 | memcpy(dstattr->values, srcattr->values, (size_t)srcattr->num_values * sizeof(_ipp_value_t)); |
| 1524 | break; |
| 1525 | |
| 1526 | case IPP_TAG_TEXT : |
| 1527 | case IPP_TAG_NAME : |
| 1528 | case IPP_TAG_RESERVED_STRING : |
no test coverage detected