| 81 | } |
| 82 | |
| 83 | static void web_buf_append(web_buf *b, const char *s, size_t n) { |
| 84 | if (!n) return; |
| 85 | if (b->len + n + 1 > b->cap) { |
| 86 | size_t cap = b->cap ? b->cap * 2 : 4096; |
| 87 | while (cap < b->len + n + 1) cap *= 2; |
| 88 | char *p = realloc(b->ptr, cap); |
| 89 | if (!p) { |
| 90 | perror("ds4_web: realloc"); |
| 91 | exit(1); |
| 92 | } |
| 93 | b->ptr = p; |
| 94 | b->cap = cap; |
| 95 | } |
| 96 | memcpy(b->ptr + b->len, s, n); |
| 97 | b->len += n; |
| 98 | b->ptr[b->len] = '\0'; |
| 99 | } |
| 100 | |
| 101 | static void web_buf_puts(web_buf *b, const char *s) { |
| 102 | web_buf_append(b, s, strlen(s)); |
no outgoing calls
no test coverage detected