13 static GHashTable *debug_hash;
15 static void sigsegv(int sig)
19 printf("segmentation fault received\n");
20 f=fopen("crash.txt","a");
21 setvbuf(f, NULL, _IONBF, 0);
22 fprintf(f,"segmentation fault received\n");
24 fprintf(f,"Time: %s", ctime(&t));
26 fprintf(f,"dumping core\n");
35 signal(SIGSEGV, sigsegv);
37 debug_hash=g_hash_table_new(g_str_hash, g_str_equal);
42 debug_update_level(gpointer key, gpointer value, gpointer user_data)
44 if (debug_level < (int) value)
45 debug_level=(int) value;
49 debug_level_set(char *name, int level)
52 g_hash_table_insert(debug_hash, name, (gpointer) level);
53 g_hash_table_foreach(debug_hash, debug_update_level, NULL);
54 debug_level_get(name);
58 debug_level_get(const char *name)
60 return (int)(g_hash_table_lookup(debug_hash, name));
64 debug_print(int level, const char *module, const char *function, const char *fmt, ...)
67 int module_len=strlen(module);
68 int function_len=strlen(function);
69 char buffer[module_len+function_len+3];
71 strcpy(buffer, module);
72 buffer[module_len]=':';
73 strcpy(buffer+module_len+1, function);
75 if (debug_level_get(module) >= level || debug_level_get(buffer) >= level) {
76 strcpy(buffer+module_len+function_len+1, ":");