void str_printfa(string_t *str, const char *fmt, ...) { va_list args; va_start(args, fmt); str_vprintfa(str, fmt, args); va_end(args); }
static inline void ATTR_FORMAT(4, 0) _sieve_runtime_trace_vprintf (const struct sieve_runtime_env *renv, sieve_size_t address, unsigned int cmd_line, const char *fmt, va_list args) { string_t *trline = _trace_line_new(renv, address, cmd_line); str_vprintfa(trline, fmt, args); _trace_line_print(trline, renv); }
void _sieve_runtime_trace_error (const struct sieve_runtime_env *renv, const char *fmt, va_list args) { string_t *trline = _trace_line_new(renv, renv->pc, 0); str_printfa(trline, "%s: #ERROR#: ", sieve_operation_mnemonic(renv->oprtn)); str_vprintfa(trline, fmt, args); _trace_line_print(trline, renv); }
void _sieve_runtime_trace_operand_error (const struct sieve_runtime_env *renv, const struct sieve_operand *oprnd, const char *fmt, va_list args) { string_t *trline = _trace_line_new(renv, oprnd->address, sieve_runtime_get_source_location(renv, oprnd->address)); str_printfa(trline, "%s: #ERROR#: ", sieve_operation_mnemonic(renv->oprtn)); if ( oprnd->field_name != NULL ) str_printfa(trline, "%s: ", oprnd->field_name); str_vprintfa(trline, fmt, args); _trace_line_print(trline, renv); }
client_send_line(struct client *client, const char *fmt, ...) { va_list va; ssize_t ret; if (client->output->closed) return; va_start(va, fmt); T_BEGIN { string_t *str; str = t_str_new(256); str_vprintfa(str, fmt, va); str_append(str, "\n"); ret = o_stream_send(client->output, str_data(str), str_len(str)); i_assert(ret < 0 || (size_t)ret == str_len(str)); } T_END; va_end(va); }