buf_add
void buf_add(buffer *, const char *);
buf_add(buf, num);
buf_add(buf, "(");
buf_add(buf, "void");
buf_add(buf, sep), sep = ", ";
buf_add(buf, type_name(param->s_type));
buf_add(buf, "void");
buf_add(buf, sep), sep = ", ";
buf_add(buf, type_name(*argtype));
buf_add(buf, sep);
buf_add(buf, "...");
buf_add(buf, ") returning ");
buf_add(buf, type_name(tp->t_subt));
buf_add(buf, " ");
buf_add(buf, "typedef ");
buf_add(buf, tp->u.sou->sou_first_typedef->s_name);
buf_add(buf, tp->u.sou->sou_tag->s_name);
buf_add(buf, tp->t_isuniqpos ? "*anonymous*" : tp->t_tag->h_name);
buf_add(buf, " ");
buf_add(buf, "typedef ");
buf_add(buf, tp->u.enumer->en_first_typedef->s_name);
buf_add(buf, tp->u.enumer->en_tag->s_name);
buf_add(buf, tp->t_isuniqpos ? "*anonymous*" : tp->t_tag->h_name);
buf_add(buf, "[");
buf_add(buf, "unknown_size");
buf_add(buf, "]");
buf_add(buf, " of ");
buf_add(buf, type_name(tp->t_subt));
buf_add(&buf, "const ");
buf_add(&buf, "volatile ");
buf_add(&buf, "noreturn ");
buf_add(&buf, "incomplete ");
buf_add(&buf, tspec_name(t));
buf_add(&buf, ":");
buf_add(&buf, " to ");
buf_add(&buf, type_name(tp->t_subt));
buf_add(&buf, tp_name);
buf_add(&buf, " promoted from ");
buf_add(&buf, otp_name);
buf_add(&pp_line, text);
buf_add(&pp_line, text);
buf_add(&pp_line, buf.data);
buf_add(&pp_line, buf.data);
buf_add(&pp_line, text);