| 583 | /* acl_vstring_memcat - append buffer of limited length */ |
| 584 | |
| 585 | ACL_VSTRING *acl_vstring_memcat(ACL_VSTRING *vp, const char *src, size_t len) |
| 586 | { |
| 587 | if (len > 0) { |
| 588 | ssize_t n; |
| 589 | |
| 590 | if (len >= 100000000) { |
| 591 | acl_msg_warn("%s(%d): len=%ld maybe too large", |
| 592 | __FUNCTION__, __LINE__, (long) len); |
| 593 | } |
| 594 | |
| 595 | ACL_VSTRING_SPACE(vp, (ssize_t) len); |
| 596 | n = acl_vstring_avail(vp); |
| 597 | |
| 598 | if ((size_t) n >= len) { |
| 599 | n = (ssize_t) len; |
| 600 | } else { |
| 601 | acl_msg_warn("%s(%d): space not enough, avail: %ld, " |
| 602 | "len: %ld", __FUNCTION__, __LINE__, |
| 603 | (long) n, (long) len); |
| 604 | } |
| 605 | |
| 606 | if (n > 0 ) { |
| 607 | memcpy(acl_vstring_end(vp), src, n); |
| 608 | n += (ssize_t) ACL_VSTRING_LEN(vp); |
| 609 | ACL_VSTRING_AT_OFFSET(vp, n); |
| 610 | } else { |
| 611 | acl_msg_warn("%s(%d): no space, avail: 0, len: %ld", |
| 612 | __FUNCTION__, __LINE__, (long) len); |
| 613 | } |
| 614 | } |
| 615 | |
| 616 | ACL_VSTRING_TERMINATE(vp); |
| 617 | return vp; |
| 618 | } |
| 619 | |
| 620 | /* acl_vstring_memchr - locate byte in buffer */ |
| 621 |
no test coverage detected
searching dependent graphs…