Example #1
0
void string_appendf(String *s, char *fmt, ...) {
  va_list args;
  for (;;) {
    int avail = s->nalloc - s->len;
    va_start(args, fmt);
    int written = vsnprintf(s->body + s->len, avail, fmt, args);
    va_end(args);
    if (avail <= written) {
      realloc_body(s);
      continue;
    }
    s->len += written;
    return;
  }
}
Example #2
0
void buf_printf(Buffer *b, char *fmt, ...) {
    va_list args;
    for (;;) {
        int avail = b->nalloc - b->len;
        va_start(args, fmt);
        int written = vsnprintf(b->body + b->len, avail, fmt, args);
        va_end(args);
        if (avail <= written) {
            realloc_body(b);
            continue;
        }
        b->len += written;
        return;
    }
}
Example #3
0
char *vformat(char *fmt, va_list ap) {
    Buffer *b = make_buffer();
    va_list aq;
    for (;;) {
        int avail = b->nalloc - b->len;
        va_copy(aq, ap);
        int written = vsnprintf(b->body + b->len, avail, fmt, aq);
        va_end(aq);
        if (avail <= written) {
            realloc_body(b);
            continue;
        }
        b->len += written;
        return buf_body(b);
    }
}
Example #4
0
void string_append(String *s, char c) {
  if (s->nalloc == (s->len + 1))
    realloc_body(s);
  s->body[s->len++] = c;
  s->body[s->len] = '\0';
}
Example #5
0
void buf_write(Buffer *b, char c) {
    if (b->nalloc == (b->len + 1))
        realloc_body(b);
    b->body[b->len++] = c;
}