00001 #include <stdio.h>
00002 #include <stdarg.h>
00003 #include "xmem.h"
00004
00005
00006 static int fprintf_wrap(const char *fmt, ...);
00007 static int printf_wrap(const char *fmt, ...);
00008
00009
00010 int (*printk)(const char *fmt, ...) = printf_wrap;
00011 int (*printkerr)(const char *fmt, ...) = fprintf_wrap;
00012
00013
00014
00015 void printk_set(int (*std)(const char *fmt, ...),
00016 int (*err)(const char *fmt, ...))
00017 {
00018 printk = std;
00019 printkerr = err;
00020 }
00021
00022
00023 static int fprintf_wrap(const char *fmt, ...)
00024 {
00025 int val;
00026 va_list args;
00027
00028 va_start(args,fmt);
00029 val = vfprintf(stderr,fmt,args);
00030 va_end(args);
00031 return val;
00032 }
00033
00034
00035 static int printf_wrap(const char *fmt, ...)
00036 {
00037 int val;
00038 va_list args;
00039
00040 va_start(args,fmt);
00041 val = vprintf(fmt,args);
00042 va_end(args);
00043 return val;
00044 }