00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00026 #include "ks_config.h"
00027 #include "ks_common.h"
00028
00029 #ifdef STDC_HEADERS
00030 # include <stdlib.h>
00031 # include <stdarg.h>
00032 # include <stdio.h>
00033 #endif
00034
00035 #ifdef HAVE_STRING_H
00036 #include <string.h>
00037 #endif
00038
00039 #ifdef HAVE_STDIO_H
00040 #include <stdio.h>
00041 #endif
00042
00043 #define KS_ERRTAG "libkarmaclient: "
00044 #define KS_ERRBUFSIZ 1024
00045
00049 static ks_error_handler_t ks_error_handler = NULL;
00050
00057 void
00058 ks_error_handler_set(ks_error_handler_t handler)
00059 {
00060 ks_error_handler = handler;
00061 }
00062
00063
00071 void
00072 ks_error(const char *format, ...)
00073 {
00074 char buffer[KS_ERRBUFSIZ];
00075 va_list ap;
00076
00077 strcpy(buffer, KS_ERRTAG);
00078
00079 va_start(ap, format);
00080 vsnprintf(&(buffer[strlen(KS_ERRTAG)]),
00081 sizeof(buffer) - strlen(KS_ERRTAG),
00082 format, ap);
00083 va_end(ap);
00084 buffer[sizeof(buffer) - 1] = '\0';
00085
00086 if (ks_error_handler) {
00087 ks_error_handler(buffer);
00088 }
00089 else {
00090 fputs(buffer, stderr);
00091 putc('\n', stderr);
00092 }
00093 }