* diagnostic.c (output_last_position): Define.
authorgdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Sep 2000 21:20:19 +0000 (21:20 +0000)
committergdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 25 Sep 2000 21:20:19 +0000 (21:20 +0000)
(set_real_maximum_length): Tweek.
* diagnostic.h (output_last_position): Declare.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36629 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/diagnostic.c
gcc/diagnostic.h

index f5f2424..0e200f9 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-25  Gabriel Dos Reis  <gdr@codesourcery.com>
+
+       * diagnostic.c (output_last_position): Define.
+       (set_real_maximum_length): Tweek.
+       * diagnostic.h (output_last_position): Declare.
+
 2000-09-25  Kazu Hirata  <kazu@hxi.com>
 
        * config/i386/i386.c: Fix formatting.
index afb25c1..56ed957 100644 (file)
@@ -230,8 +230,12 @@ static void
 set_real_maximum_length (buffer)
      output_buffer *buffer;
 {
-  /* If we're told not to wrap lines then do the obvious thing.  */
-  if (! output_is_line_wrapping (buffer))
+  /* If we're told not to wrap lines then do the obvious thing.  In case
+   we'll emit prefix only once per diagnostic message, it is appropriate
+  not to increase unncessarily the line-length cut-off.  */
+  if (! output_is_line_wrapping (buffer)
+      || prefixing_policy (buffer) == DIAGNOSTICS_SHOW_PREFIX_ONCE
+      || prefixing_policy (buffer) == DIAGNOSTICS_SHOW_PREFIX_NEVER)
     line_wrap_cutoff (buffer) = ideal_line_wrap_cutoff (buffer);
   else
     {
@@ -271,6 +275,19 @@ output_set_prefix (buffer, prefix)
   output_indentation (buffer) = 0;
 }
 
+/*  Return a pointer to the last character emitted in the output
+    BUFFER area.  A NULL pointer means no character available.  */
+const char *
+output_last_position (buffer)
+     const output_buffer *buffer;
+{
+  const char *p = NULL;
+  
+  if (obstack_base (&buffer->obstack) != obstack_next_free (&buffer->obstack))
+    p = ((const char *) obstack_next_free (&buffer->obstack)) - 1;
+  return p;
+}
+
 /* Free BUFFER's prefix, a previously malloc'd string.  */
 
 void
index f3ebcf8..8748929 100644 (file)
@@ -176,6 +176,7 @@ void init_output_buffer             PARAMS ((output_buffer *, const char *, int));
 void flush_diagnostic_buffer    PARAMS ((void));
 void output_clear              PARAMS ((output_buffer *));
 const char *output_get_prefix  PARAMS ((const output_buffer *));
+const char *output_last_position PARAMS ((const output_buffer *));
 void output_set_prefix         PARAMS ((output_buffer *, const char *));
 void output_destroy_prefix      PARAMS ((output_buffer *));
 void output_set_maximum_length  PARAMS ((output_buffer *, int));