Initial revision


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/vg_messages.c b/vg_messages.c
new file mode 100644
index 0000000..343a859
--- /dev/null
+++ b/vg_messages.c
@@ -0,0 +1,105 @@
+
+/*--------------------------------------------------------------------*/
+/*--- For sending error/informative messages.                      ---*/
+/*---                                                 vg_message.c ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, an x86 protected-mode emulator 
+   designed for debugging and profiling binaries on x86-Unixes.
+
+   Copyright (C) 2000-2002 Julian Seward 
+      jseward@acm.org
+      Julian_Seward@muraroa.demon.co.uk
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307, USA.
+
+   The GNU General Public License is contained in the file LICENSE.
+*/
+
+
+#include "vg_include.h"
+
+
+static char vg_mbuf[M_VG_MSGBUF];
+static int vg_n_mbuf;
+
+static void add_to_buf ( Char c )
+{
+  if (vg_n_mbuf >= (M_VG_MSGBUF-1)) return;
+  vg_mbuf[vg_n_mbuf++] = c;
+  vg_mbuf[vg_n_mbuf]   = 0;
+}
+
+
+/* Publically visible from here onwards. */
+
+void
+VG_(add_to_msg) ( Char *format, ... )
+{
+   va_list vargs;
+   va_start(vargs,format);
+   VG_(vprintf) ( add_to_buf, format, vargs );
+   va_end(vargs);
+}
+
+/* Send a simple single-part message. */
+void VG_(message) ( VgMsgKind kind, Char* format, ... )
+{
+   va_list vargs;
+   va_start(vargs,format);
+   VG_(start_msg) ( kind );
+   VG_(vprintf) ( add_to_buf, format, vargs );
+   va_end(vargs);
+   VG_(end_msg)();
+}
+
+void VG_(start_msg) ( VgMsgKind kind )
+{
+   Char c;
+   vg_n_mbuf = 0;
+   vg_mbuf[vg_n_mbuf] = 0;
+   switch (kind) {
+      case Vg_UserMsg:       c = '='; break;
+      case Vg_DebugMsg:      c = '-'; break;
+      case Vg_DebugExtraMsg: c = '+'; break;
+      default:               c = '?'; break;
+   }
+   VG_(add_to_msg)( "%c%c%d%c%c ", 
+                    c,c, VG_(getpid)(), c,c );
+}
+
+
+void VG_(end_msg) ( void )
+{
+   if (VG_(clo_logfile_fd) >= 0) {
+      add_to_buf('\n');
+      VG_(write)(VG_(clo_logfile_fd), vg_mbuf, VG_(strlen)(vg_mbuf));
+   }
+}
+
+
+void VG_(startup_logging) ( void )
+{
+}
+
+void VG_(shutdown_logging) ( void )
+{
+}
+
+/*--------------------------------------------------------------------*/
+/*--- end                                             vg_message.c ---*/
+/*--------------------------------------------------------------------*/