static void
StdLoggerLog(const gchar *domain,
             GLogLevelFlags level,
             const gchar *message,
             gpointer data)
{
   gchar *local;
   FILE *dest = (level < G_LOG_LEVEL_MESSAGE) ? stderr : stdout;

#if defined(_WIN32)
   StdLogger *sdata = data;

   if (!sdata->attached) {
      g_static_mutex_lock(&gConsoleLock);
      if (gRefCount != 0 || GlibUtils_AttachConsole()) {
         gRefCount++;
         sdata->attached = TRUE;
      }
      g_static_mutex_unlock(&gConsoleLock);
   }

   if (!sdata->attached) {
      return;
   }
#endif

   local = g_locale_from_utf8(message, -1, NULL, NULL, NULL);
   if (local != NULL) {
      fputs(local, dest);
      g_free(local);
   } else {
      fputs(message, dest);
   }
}
Exemple #2
0
gboolean
VMTools_AttachConsole(void)
{
   return GlibUtils_AttachConsole();
}