Exemplo n.º 1
0
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 );
}
Exemplo n.º 2
0
Arquivo: string.c Projeto: Exim/exim
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);
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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;
}