Enlightenment CVS committal
Author : turran
Project : e17
Module : proto/eina
Dir : e17/proto/eina/src/lib
Modified Files:
eina_error.c
Log Message:
Allow user provided functions for printing messages
Make the stdout print mgs function exportable
Add a FILE * print msg function (useful for logging)
===================================================================
RCS file: /cvs/e/e17/proto/eina/src/lib/eina_error.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- eina_error.c 7 Aug 2008 13:09:09 -0000 1.6
+++ eina_error.c 8 Aug 2008 10:39:47 -0000 1.7
@@ -33,6 +33,8 @@
static int _init_count = 0;
static Eina_List *_error_list;
static Eina_Error _err;
+static Eina_Error_Print_Cb _print_cb = eina_error_print_cb_stdout;
+static void *_print_cb_data = NULL;
#define RED "\033[31;1m"
#define GREEN "\033[32;1m"
@@ -55,17 +57,7 @@
[EINA_ERROR_LEVEL_DBG] = GREEN,
};
-static void _error_print(Eina_Error_Level level, const char *file,
- const char *fnc, int line, const char *fmt, va_list args)
-{
- if (level <= _error_level)
- {
- printf("%s", _colors[level]);
- printf("[%s:%d] %s() ", file, line, fnc);
- printf("%s", _colors[EINA_ERROR_LEVEL_INFO]);
- vprintf(fmt, args);
- }
-}
+
/*============================================================================*
* API
*
*============================================================================*/
@@ -141,16 +133,49 @@
return eina_list_nth(_error_list, error - 1);
}
/**
- *
+ *
*/
-EAPI void eina_error_print(Eina_Error_Level level, const char *file,
+EAPI void eina_error_print(Eina_Error_Level level, const char *file,
const char *fnc, int line, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
- _error_print(level, file, fnc, line, fmt, args);
+ if (level <= _error_level)
+ _print_cb(level, file, fnc, line, fmt, _print_cb_data, args);
va_end(args);
+}
+/**
+ *
+ */
+EAPI void eina_error_print_cb_stdout(Eina_Error_Level level, const char *file,
+ const char *fnc, int line, const char *fmt, void *data,
+ va_list args)
+{
+ printf("%s", _colors[level]);
+ printf("[%s:%d] %s() ", file, line, fnc);
+ printf("%s", _colors[EINA_ERROR_LEVEL_INFO]);
+ vprintf(fmt, args);
+}
+/**
+ *
+ */
+EAPI void eina_error_print_cb_file(Eina_Error_Level level, const char *file,
+ const char *fnc, int line, const char *fmt, void *data,
+ va_list args)
+{
+ FILE *f = data;
+
+ fprintf(f, "[%s:%d] %s() ", file, line, fnc);
+ vfprintf(f, fmt, args);
+}
+/**
+ *
+ */
+EAPI void eina_error_print_cb_set(Eina_Error_Print_Cb cb, void *data)
+{
+ _print_cb = cb;
+ _print_cb_data = data;
}
/**
*
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs