void gram_trace2(void *garbage, char *s, ...) { va_list ap; string_ty *buffer; char *cp; static char line[1024]; va_start(ap, s); buffer = str_vformat(s, ap); va_end(ap); cp = line + strlen(line); cp = strendcpy(cp, buffer->str_text, line + sizeof(line)); str_free(buffer); if (cp > line && cp[-1] == '\n') { --cp; *cp = 0; trace_printf ( "%s: %ld: %s\n", input_filename(input)->str_text, line_number, line ); line[0] = 0; } }
std::string str_format( const char* format, ... ) { va_list ap; va_start( ap, format ); return str_vformat( format, ap ); }