Skip to content

Commit cf105fd

Browse files
authored
Merge pull request #1093 from Unity-Technologies/unity-master-add-unity-vprintf-redirect
Add ability to redirect mono stdout logging to unity's vprintf function.
2 parents 381e029 + 3d155e1 commit cf105fd

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

mono/eglib/goutput.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ static GLogLevelFlags fatal = G_LOG_LEVEL_ERROR;
3636
static GLogFunc default_log_func;
3737
static gpointer default_log_func_user_data;
3838
static GPrintFunc stdout_handler, stderr_handler;
39+
typedef void (*vprintf_func)(const char* msg, va_list args);
40+
static vprintf_func our_vprintf = vprintf;
3941

4042
static void default_stdout_handler (const gchar *string);
4143
static void default_stderr_handler (const gchar *string);
@@ -274,3 +276,31 @@ g_set_printerr_handler (GPrintFunc func)
274276
return old;
275277
}
276278

279+
void wrap_our_vprintf(const gchar *format, ...)
280+
{
281+
va_list args;
282+
va_start (args, format);
283+
our_vprintf (format, args);
284+
va_end (args);
285+
}
286+
287+
static void
288+
unity_vprintf_GPrintFunc_adapter (const gchar *string)
289+
{
290+
wrap_our_vprintf ("%s", string);
291+
}
292+
293+
static void
294+
unity_vprintf_GLogFunc_adapter (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
295+
{
296+
wrap_our_vprintf ("%s", message);
297+
}
298+
299+
// Redirect all stdout output to unity vprintf function
300+
void set_vprintf_func(vprintf_func func)
301+
{
302+
our_vprintf = func;
303+
g_set_print_handler (unity_vprintf_GPrintFunc_adapter);
304+
g_log_set_default_handler (unity_vprintf_GLogFunc_adapter, NULL);
305+
}
306+

mono/metadata/unity-utils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ mono_unity_socket_security_enabled_set (gboolean enabled)
8282

8383
void mono_unity_set_vprintf_func (vprintf_func func)
8484
{
85-
//set_vprintf_func (func);
85+
set_vprintf_func (func);
8686
}
8787

8888
MONO_API gboolean

0 commit comments

Comments
 (0)