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);
47 #ifndef QOF_DISABLE_DEPRECATED
48 set_deprecated_errors ();
57 g_free (error->message);
63 clear_table (gpointer key, gpointer value, gpointer user_data)
69 qof_error_close (
void)
71 g_hash_table_foreach (error_table, clear_table, NULL);
72 g_hash_table_destroy (error_table);
75 #ifndef QOF_DISABLE_DEPRECATED
77 deprecated_support (
QofErrorId id,
const gchar * err_message)
85 qerr->message = g_strdup (err_message);
86 g_hash_table_insert (error_table, GINT_TO_POINTER(
id), qerr);
98 #ifndef QOF_DISABLE_DEPRECATED
106 spec = g_strrstr (err_message,
"%s");
107 use_file = (spec) ? TRUE : FALSE;
109 qerr->use_file = use_file;
110 qerr->message = g_strdup (err_message);
111 g_hash_table_insert (error_table, GINT_TO_POINTER(qerr->id), qerr);
123 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(
id));
124 qof_error_free (qerr);
125 result = g_hash_table_remove (error_table,
126 GINT_TO_POINTER(
id));
128 LEAVE (
"unable to remove registered error.");
137 g_return_if_fail (session);
140 DEBUG (
" passed success, not error.");
143 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(error));
146 DEBUG (
" failed hash table lookup");
154 qof_session_get_url (session));
157 if (!session->backend)
162 set->message = g_strdup_printf (qerr->message,
165 set->message = g_strdup (qerr->message);
168 session->backend->error_stack =
169 g_list_prepend (session->backend->error_stack,
set);
170 #ifndef QOF_DISABLE_DEPRECATED
180 g_return_if_fail (be);
183 qerr = g_hash_table_lookup (error_table, GINT_TO_POINTER(error));
189 set->message = g_strdup_printf (qerr->message, be->
fullpath);
191 set->message = g_strdup (qerr->message);
194 be->error_stack = g_list_prepend (be->error_stack,
196 #ifndef QOF_DISABLE_DEPRECATED
203 clear_list (gpointer value, gpointer user_data)
211 g_return_if_fail (session);
212 if (!session->backend)
214 g_list_foreach (session->backend->error_stack, clear_list, NULL);
215 g_list_free (session->backend->error_stack);
216 session->backend->error_stack = NULL;
221 #ifndef QOF_DISABLE_DEPRECATED
229 g_return_val_if_fail (session,
QOF_FATAL);
241 if (g_list_length (be->error_stack) == 0)
243 first = g_list_first (be->error_stack);
256 if (g_list_length(be->error_stack) == 0)
258 first = g_list_first (be->error_stack);
269 #ifndef QOF_DISABLE_DEPRECATED
278 if (g_list_length(be->error_stack) == 0)
280 pop = g_list_last (be->error_stack);
292 g_return_val_if_fail (session,
QOF_FATAL);
298 qerr = g_hash_table_lookup (error_table,
299 GINT_TO_POINTER(
id));
302 DEBUG (
" empty QofError value");
321 if (g_list_length (be->error_stack) == 0)
323 first = g_list_first (be->error_stack);
328 g_list_remove (be->error_stack, qerr);
329 #ifndef QOF_DISABLE_DEPRECATED
330 set_previous_error (be);
340 g_return_val_if_fail (session, NULL);
341 if (!session->backend)
344 DEBUG (
" msg_1=%s", msg);
345 #ifndef QOF_DISABLE_DEPRECATED
349 qerr = g_hash_table_lookup (error_table,
350 GINT_TO_POINTER(session->backend->
last_err));
369 g_return_val_if_fail (be, NULL);
370 if (g_list_length (be->error_stack) == 0)
372 DEBUG (
" empty error stack");
375 first = g_list_first (be->error_stack);
379 DEBUG (
" empty QofError value");
382 DEBUG (
" qerr->message=%s", qerr->message);
384 g_list_remove (be->error_stack, qerr);
385 #ifndef QOF_DISABLE_DEPRECATED
387 set_previous_error (be);
389 return qerr->message;