/* Copyright (C) 2008 The Android Open Source Project ** ** This software is licensed under the terms of the GNU General Public ** License version 2, as published by the Free Software Foundation, and ** may be copied, distributed, and modified under those terms. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. */ #include "android/utils/panic.h" #include #include static void __attribute__((noreturn)) _android_panic_defaultHandler( const char* fmt, va_list args ) { fprintf(stderr, "PANIC: "); vfprintf(stderr, fmt, args); exit(1); } static APanicHandlerFunc _panicHandler = _android_panic_defaultHandler; void android_panic( const char* fmt, ... ) { va_list args; va_start(args, fmt); android_vpanic(fmt, args); va_end(args); } /* Variant of android_vpanic which take va_list formating arguments */ void android_vpanic( const char* fmt, va_list args ) { _panicHandler(fmt, args); } void android_panic_registerHandler( APanicHandlerFunc handler ) { if (handler == NULL) android_panic("Passing NULL to %s", __FUNCTION__); _panicHandler = handler; }