26 #include "qoferror-p.h"
27 #include "qofsession-p.h"
33 const gchar * filename;
39 static GHashTable * error_table = NULL;
40 static gint32 count = 0;
46 error_table = g_hash_table_new (g_direct_hash, g_direct_equal);
54 g_free (error->message);
60 clear_table (gpointer key, gpointer value, gpointer user_data)
66 qof_error_close (
void)
68 g_hash_table_foreach (error_table, clear_table, NULL);
69 g_hash_table_destroy (error_table);
85 spec = g_strrstr (err_message,
"%s");
86 use_file = (spec) ? TRUE : FALSE;
88 qerr->use_file = use_file;
89 qerr->message = g_strdup (err_message);
90 g_hash_table_insert (error_table, GINT_TO_POINTER(qerr->id), qerr);
102 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(
id));
103 qof_error_free (qerr);
104 result = g_hash_table_remove (error_table,
105 GINT_TO_POINTER(
id));
107 LEAVE (
"unable to remove registered error.");
116 g_return_if_fail (session);
119 DEBUG (
" passed success, not error.");
122 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(error));
125 DEBUG (
" failed hash table lookup");
133 qof_session_get_url (session));
136 if (!session->backend)
141 set->message = g_strdup_printf (qerr->message,
144 set->message = g_strdup (qerr->message);
147 session->backend->error_stack =
148 g_list_prepend (session->backend->error_stack, set);
156 g_return_if_fail (be);
159 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(error));
165 set->message = g_strdup_printf (qerr->message, be->
fullpath);
167 set->message = g_strdup (qerr->message);
170 be->error_stack = g_list_prepend (be->error_stack,
176 clear_list (gpointer value, gpointer user_data)
184 g_return_if_fail (session);
185 if (!session->backend)
187 g_list_foreach (session->backend->error_stack, clear_list, NULL);
188 g_list_free (session->backend->error_stack);
189 session->backend->error_stack = NULL;
199 g_return_val_if_fail (session,
QOF_FATAL);
211 if (g_list_length (be->error_stack) == 0)
213 first = g_list_first (be->error_stack);
226 if (g_list_length(be->error_stack) == 0)
228 first = g_list_first (be->error_stack);
244 g_return_val_if_fail (session,
QOF_FATAL);
250 qerr = g_hash_table_lookup (error_table,
251 GINT_TO_POINTER(
id));
254 DEBUG (
" empty QofError value");
273 if (g_list_length (be->error_stack) == 0)
275 first = g_list_first (be->error_stack);
280 g_list_remove (be->error_stack, qerr);
289 g_return_val_if_fail (session, NULL);
290 if (!session->backend)
293 DEBUG (
" msg_1=%s", msg);
303 g_return_val_if_fail (be, NULL);
304 if (g_list_length (be->error_stack) == 0)
306 DEBUG (
" empty error stack");
309 first = g_list_first (be->error_stack);
313 DEBUG (
" empty QofError value");
316 DEBUG (
" qerr->message=%s", qerr->message);
318 g_list_remove (be->error_stack, qerr);
319 return qerr->message;