]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/warn.cc
* Documentation/user/examples.itely (Module): 2.4.0 -> 2.6.0
[lilypond.git] / flower / warn.cc
index aef1f3833399f36c0ddc26b12d63517c34d4e243..8ac73541b6cf0cc30f2559f32b24c1896ae7424a 100644 (file)
@@ -3,33 +3,54 @@
 
   source file of the Flower Library
 
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include <stdlib.h>
-#include <stdio.h>
-
 #include "warn.hh"
 
+#include <cstdlib>
+#include <cstdio>
+
+/* Is progress indication at NEWLINE?  */
+static bool progress_newline = true;
+
+/* Display user information that is not a full message.  */
+void
+progress_indication (String s)
+{
+  /* Test if all silly progress_indication ("\n") can be dropped now.  */
+  if (s == "\n")
+    return;
+
+  fputs (s.to_str0 (), stderr);
+  fflush (stderr);
+  if (s.length ())
+    progress_newline = s[s.length () - 1] == '\n';
+}
 
+/* Display a single user message.  Always starts on a new line.  */
 void
 message (String s)
 {
-  fputs (s.ch_C (), stderr);
+  if (!progress_newline)
+    fputc ('\n', stderr);
+  progress_indication (s);
 }
 
+/* Display a warning message.  Always starts on a new line.  */
 void
 warning (String s)
 {
-  message (_f ("warning: %s\n", s.ch_C ()));
+  message (_f ("warning: %s", s.to_str0 ()) + "\n");
 }
 
 void
 non_fatal_error (String s)
 {
-  message (_f ("error: %s\n", s.ch_C ()));
+  message (_f ("error: %s", s.to_str0 ()) + "\n");
 }
 
+/* Display an error message.  Always starts on a new line.  */
 void
 error (String s)
 {
@@ -40,7 +61,7 @@ error (String s)
 void
 programming_error (String s)
 {
-  message (_f ("programming error: %s (Continuing; cross thumbs)\n",
-              s.ch_C ()));
+  message (_f ("programming error: %s", s) + "\n");
+  message (_ ("continuing, cross fingers") + "\n");
 }