error.c
来自「About: hamsterdb is a database engine w」· C语言 代码 · 共 133 行
C
133 行
/** * Copyright (C) 2005-2007 Christoph Rupp (chris@crupp.de). * All rights reserved. See file LICENSE for licence and copyright * information. * */#include <string.h>#include <stdlib.h>#include <stdarg.h>#include <stdio.h>#include <ham/hamsterdb.h>#include "db.h"#include "error.h"#if HAM_OS_POSIXextern int vsnprintf(char *str, size_t size, const char *format, va_list ap);#endifstatic const char *g_file=0;static int g_line=0;static const char *g_expr=0;static intmy_vsnprintf(char *str, size_t size, const char *format, va_list ap){#if HAM_OS_POSIX return vsnprintf(str, size, format, ap);#else (void)size; return vsprintf(str, format, ap);#endif}static intmy_snprintf(char *str, size_t size, const char *format, ...){ int s; va_list ap; va_start(ap, format); s=my_vsnprintf(str, size, format, ap); va_end(ap); return (s);}static voidmy_errhandler(const char *message){ fprintf(stderr, "%s\n", message);}static ham_errhandler_fun g_hand=my_errhandler;voidham_set_errhandler(ham_errhandler_fun f){ if (f) g_hand=f; else g_hand=my_errhandler;}void dbg_lock(void){ /* not yet needed, we do not yet support multithreading */}void dbg_unlock(void){ /* not yet needed, we do not yet support multithreading */}void dbg_prepare(const char *file, int line, const char *expr){ g_file=file; g_line=line; g_expr=expr;}void dbg_log(const char *format, ...){ int s; char buffer[1024*4]; va_list ap; va_start(ap, format); s=my_snprintf(buffer, sizeof(buffer), "%s[%d]: ", g_file, g_line); my_vsnprintf (buffer+s, sizeof(buffer)-s, format, ap); va_end(ap); g_hand(buffer);} void dbg_verify_failed(const char *format, ...){ int s; char buffer[1024*4]; va_list ap; if (!g_expr) g_expr="(none)"; if (!format) format="(none)"; s=my_snprintf(buffer, sizeof(buffer), "ASSERT FAILED in file %s, line %d:\n\t\"%s\"\n", g_file, g_line, g_expr); if (format) { va_start(ap, format); my_vsnprintf(buffer+s, sizeof(buffer)-s, format, ap); va_end(ap); } g_hand(buffer);#ifndef HAM_OS_WINCE abort();#else ExitProcess(-1);#endif}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?