void log_panicf( uint64_t context, error_t err, const char* format, ... ) { char prefix[32]; va_list list; log_error_context( context, ERRORLEVEL_PANIC ); if( err < ERROR_LAST_BUILTIN ) string_format_buffer( prefix, 32, "PANIC [%s]: ", _log_error_name[err] ); else string_format_buffer( prefix, 32, "PANIC [%d]: ", err ); va_start( list, format ); _log_outputf( context, ERRORLEVEL_PANIC, prefix, format, list, stderr ); va_end( list ); error_report( ERRORLEVEL_PANIC, err ); }
void log_warnf( uint64_t context, warning_t warn, const char* format, ... ) { char prefix[32]; va_list list; if( log_suppress( context ) >= ERRORLEVEL_WARNING ) return; log_error_context( context, ERRORLEVEL_WARNING ); if( warn < WARNING_LAST_BUILTIN ) string_format_buffer( prefix, 32, "WARNING [%s]: ", _log_warning_name[warn] ); else string_format_buffer( prefix, 32, "WARNING [%d]: ", warn ); va_start( list, format ); _log_outputf( context, ERRORLEVEL_WARNING, prefix, format, list, stdout ); va_end( list ); }
void log_errorf( uint64_t context, error_t err, const char* format, ... ) { char prefix[32]; va_list list; if( log_suppress( context ) >= ERRORLEVEL_ERROR ) return; log_error_context( context, ERRORLEVEL_ERROR ); if( err < ERROR_LAST_BUILTIN ) string_format_buffer( prefix, 32, "ERROR [%s]: ", _log_error_name[err] ); else string_format_buffer( prefix, 32, "ERROR [%d]: ", err ); va_start( list, format ); _log_outputf( context, ERRORLEVEL_ERROR, prefix, format, list, stderr ); va_end( list ); error_report( ERRORLEVEL_ERROR, err ); }
DECLARE_TEST( uuid, generate ) { int iloop; uuid_t uuid, uuid_ref; char name_str[] = "com.rampantpixels.foundation.uuid.000000"; uuid = uuid_null(); uuid_ref = uuid_null(); EXPECT_TRUE( uuid_is_null( uuid ) ); EXPECT_TRUE( uuid_is_null( uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid, uuid_ref ) ); //Random based uuid = uuid_generate_random(); uuid_ref = uuid_null(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_TRUE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_generate_random(); uuid_ref = uuid_generate_random(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_ref; EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid, uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); for( iloop = 0; iloop < 64000; ++iloop ) { uuid_ref = uuid; uuid = uuid_generate_random(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); } //Time based uuid = uuid_generate_time(); uuid_ref = uuid_null(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_TRUE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_generate_time(); uuid_ref = uuid_generate_time(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_ref; EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid, uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); for( iloop = 0; iloop < 64000; ++iloop ) { uuid_ref = uuid; uuid = uuid_generate_time(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); } //Name based uuid = uuid_generate_name( UUID_DNS, "com.rampantpixels.foundation.uuid" ); uuid_ref = uuid_null(); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_TRUE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_generate_name( UUID_DNS, "com.rampantpixels.foundation.uuid.1" ); uuid_ref = uuid_generate_name( UUID_DNS, "com.rampantpixels.foundation.uuid.2" ); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); uuid = uuid_generate_name( UUID_DNS, "com.rampantpixels.foundation.uuid.2" ); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid, uuid_ref ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); for( iloop = 0; iloop < 10000; ++iloop ) { string_format_buffer( name_str, 40, "com.rampantpixels.foundation.uuid.%05u", iloop ); uuid_ref = uuid; uuid = uuid_generate_name( UUID_DNS, name_str ); EXPECT_FALSE( uuid_is_null( uuid ) ); EXPECT_FALSE( uuid_is_null( uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid, uuid_ref ) ); EXPECT_FALSE( uuid_equal( uuid_ref, uuid ) ); EXPECT_TRUE( uuid_equal( uuid, uuid ) ); EXPECT_TRUE( uuid_equal( uuid_ref, uuid_ref ) ); } return 0; }