MCPcopy Create free account
hub / github.com/acl-dev/acl / get_buf

Function get_buf

lib_acl/src/stdlib/acl_mylog.c:709–760  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

707#ifdef ACL_UNIX
708
709static char *get_buf(const char *prefix, const char *fmt, va_list ap,
710 const char *suffix, size_t *len)
711{
712 va_list ap_tmp;
713 char *buf, *ptr;
714 size_t prefix_len = strlen(prefix);
715 size_t suffix_len = suffix ? strlen(suffix) : 0;
716 size_t total_len, left_len;
717 int ret;
718
719 total_len = prefix_len + 1024;
720 buf = (char*) malloc(total_len);
721 acl_assert(buf);
722
723 strcpy(buf, prefix);
724 ptr = buf + prefix_len;
725 left_len = total_len - prefix_len;
726 va_copy(ap_tmp, ap);
727 ret = vsnprintf(ptr, left_len, fmt, ap_tmp);
728 acl_assert(ret > 0);
729
730 *len = prefix_len + ret;
731
732 if (ret >= (int) left_len) {
733 total_len = prefix_len + ret + 1;
734 buf = (char*) realloc(buf, total_len);
735 acl_assert(buf);
736
737 ptr = buf + prefix_len;
738 left_len = total_len - prefix_len;
739 va_copy(ap_tmp, ap);
740 ret = vsnprintf(ptr, left_len, fmt, ap_tmp);
741 acl_assert(ret > 0 && ret < (int) left_len);
742 }
743
744 if (suffix_len == 0) {
745 return buf;
746 }
747
748 *len = *len + suffix_len;
749 if (*len >= total_len) {
750 total_len = *len + 1;
751 buf = (char*) realloc(buf, total_len);
752 acl_assert(buf);
753 }
754
755 ptr = buf + prefix_len + ret;
756 memcpy(ptr, suffix, suffix_len);
757 ptr[suffix_len] = 0;
758
759 return buf;
760}
761
762#else
763

Callers 4

file_vsyslogFunction · 0.85
net_vsyslogFunction · 0.85
getMethod · 0.85
string.cppFile · 0.85

Calls 3

mallocFunction · 0.85
reallocFunction · 0.85
memcpyFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…