void stream_write_format( stream_t* stream, const char* format, ... ) { va_list list; char* buffer; FOUNDATION_ASSERT( format ); va_start( list, format ); buffer = string_vformat( format, list ); va_end( list ); stream_write_string( stream, buffer ); string_deallocate( buffer ); }
uschar * string_sprintf(const char *format, ...) { va_list ap; uschar buffer[STRING_SPRINTF_BUFFER_SIZE]; va_start(ap, format); if (!string_vformat(buffer, sizeof(buffer), format, ap)) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "string_sprintf expansion was longer than " SIZE_T_FMT "; format string was (%s)\nexpansion started '%.32s'", sizeof(buffer), format, buffer); va_end(ap); return string_copy(buffer); }
int assert_report_formatted(hash_t context, const char* condition, size_t cond_length, const char* file, size_t file_length, unsigned int line, const char* msg, size_t msg_length, ...) { if (msg) { string_t buffer = { _assert_buffer, sizeof(_assert_buffer) }; va_list ap; va_start(ap, msg_length); buffer = string_vformat(STRING_ARGS(buffer), msg, msg_length, ap); va_end(ap); msg = buffer.str; msg_length = buffer.length; } return assert_report(context, condition, cond_length, file, file_length, line, msg, msg_length); }
static int exim_gssapi_error_defer(uschar *store_reset_point, OM_uint32 major, OM_uint32 minor, const char *format, ...) { va_list ap; uschar buffer[STRING_SPRINTF_BUFFER_SIZE]; OM_uint32 maj_stat, min_stat; OM_uint32 msgcontext = 0; gss_buffer_desc status_string; va_start(ap, format); if (!string_vformat(buffer, sizeof(buffer), format, ap)) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "exim_gssapi_error_defer expansion larger than %lu", sizeof(buffer)); va_end(ap); auth_defer_msg = NULL; do { maj_stat = gss_display_status(&min_stat, major, GSS_C_GSS_CODE, GSS_C_NO_OID, &msgcontext, &status_string); if (auth_defer_msg == NULL) { auth_defer_msg = string_copy(US status_string.value); } HDEBUG(D_auth) debug_printf("heimdal %s: %.*s\n", buffer, (int)status_string.length, CS status_string.value); gss_release_buffer(&min_stat, &status_string); } while (msgcontext != 0); if (store_reset_point) store_reset(store_reset_point); return DEFER; }