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 + -
显示快捷键?