43
|
1
|
|
2
|
|
3 #include <ctype.h>
|
|
4 #include <errno.h>
|
|
5 #include <malloc.h>
|
|
6 #include <signal.h>
|
|
7 #include <stdarg.h>
|
|
8 #include <stdio.h>
|
|
9 #include <stdlib.h>
|
|
10 #include <string.h>
|
|
11 #include "generic.h"
|
|
12
|
|
13 #ifdef WITH_DMALLOC
|
|
14 #include <dmalloc.h>
|
|
15 #endif
|
|
16
|
|
17
|
|
18
|
|
19
|
|
20 void pDIE( char *fmt, ... )
|
|
21 {
|
|
22 va_list ap;
|
|
23 va_start( ap, fmt );
|
|
24 //fprintf( stderr, "Fatal error (will segfault): ");
|
|
25 vfprintf( stderr, fmt, ap );
|
|
26 fprintf( stderr, "\n" );
|
|
27 va_end(ap);
|
|
28 raise( SIGSEGV );
|
|
29 }
|
|
30
|
|
31 void pWARN( char *fmt, ... )
|
|
32 {
|
|
33 va_list ap;
|
|
34 va_start( ap, fmt );
|
|
35 fprintf( stderr, "WARNING: ");
|
|
36 vfprintf( stderr, fmt, ap );
|
|
37 fprintf( stderr, "\n" );
|
|
38 va_end(ap);
|
|
39 }
|
|
40
|
|
41 void *F_MALLOC( size_t size )
|
|
42 {
|
|
43 void *result;
|
|
44
|
|
45 result = malloc( size );
|
|
46 ASSERT( NULL != result, "malloc() failure." );
|
|
47
|
|
48 return result;
|
|
49 }
|
|
50
|
|
51 void *F_REALLOC( void *p, size_t size )
|
|
52 {
|
|
53 void *result;
|
|
54
|
|
55 //if( NULL != p ) hexdump((char*)p - 128, 0, 128, 1 );
|
|
56 if(!p) {
|
|
57 ASSERT( NULL != ( result = malloc( size ) ), "malloc() failure." );
|
|
58 }
|
|
59 else {
|
|
60 ASSERT( NULL != ( result = realloc( p, size ) ), "realloc() failure." );
|
|
61 }
|
|
62
|
|
63 //hexdump((char*)result - 128, 0, 128, 1 );
|
|
64 fflush(stderr);
|
|
65 return result;
|
|
66 }
|
|
67
|
|
68
|
|
69
|
|
70 int DEBUG_LEVEL = DB_INFO;
|
|
71
|
|
72 void db_default( char *file, int line, int level, char *fmt, ... )
|
|
73 {
|
|
74 va_list ap;
|
|
75 if( level <= DEBUG_LEVEL ) {
|
|
76 switch( level ) {
|
|
77 case DB_CRASH:
|
|
78 fprintf(stderr, "CRASH");
|
|
79 break;
|
|
80 case DB_ERR:
|
|
81 fprintf(stderr, "ERROR");
|
|
82 break;
|
|
83 case DB_WARN:
|
|
84 fprintf(stderr, "WARNING");
|
|
85 break;
|
|
86 case DB_INFO:
|
|
87 case DB_VERB:
|
|
88 break;
|
|
89 default:
|
|
90 fprintf(stderr, "DEBUG(%d)", level );
|
|
91 }
|
|
92
|
|
93 if( level <= DB_WARN )
|
|
94 fprintf(stderr, " (%s:%d)", file, line );
|
|
95
|
|
96 if( DB_INFO != level && DB_VERB != level )
|
|
97 fprintf(stderr, ": ");
|
|
98
|
|
99 va_start( ap, fmt );
|
|
100 vfprintf(stderr, fmt, ap );
|
|
101 fprintf(stderr, "\n" );
|
|
102 va_end( ap );
|
|
103 }
|
|
104 }
|
|
105
|
|
106 void (*dbfunc)(char *file, int line, int level, char *fmt, ...) = &db_default;
|
|
107
|
|
108
|
|
109
|
|
110
|