applied patch from Andreas Persenius <ndap@swipnet.se> that updates the
[platform/upstream/glib.git] / gmessages.c
index 5f60218..390885f 100644 (file)
@@ -2,23 +2,23 @@
  * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
 
 /*
- * Modified by the GLib Team and others 1997-1999.  See the AUTHORS
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
  * GLib at ftp://ftp.gtk.org/pub/gtk/. 
@@ -92,6 +92,9 @@ static GPrivate* g_log_depth = NULL;
 #  define STRICT
 #  include <windows.h>
 #  include <process.h>          /* For _getpid() */
+
+static gboolean alloc_console_called = FALSE;
+
 /* Just use stdio. If we're out of memory, we're hosed anyway. */
 #undef write
 static inline int
@@ -100,6 +103,7 @@ write (FILE       *fd,
        int         len)
 {
   fwrite (buf, len, 1, fd);
+  fflush (fd);
 
   return len;
 }
@@ -108,12 +112,16 @@ ensure_stdout_valid (void)
 {
   HANDLE handle;
 
-  handle = GetStdHandle (STD_OUTPUT_HANDLE);
-  
-  if (handle == INVALID_HANDLE_VALUE)
+  if (!alloc_console_called)
     {
-      AllocConsole ();
-      freopen ("CONOUT$", "w", stdout);
+      handle = GetStdHandle (STD_OUTPUT_HANDLE);
+  
+      if (handle == INVALID_HANDLE_VALUE)
+       {
+         AllocConsole ();
+         alloc_console_called = TRUE;
+         freopen ("CONOUT$", "w", stdout);
+       }
     }
 }
 #else