aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@codesourcery.com>2000-09-25 21:20:19 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2000-09-25 21:20:19 +0000
commit4b40f7588eaf7b4f323d812ebe612f951822d0ee (patch)
treef128e42344fe386dab97b5430694219834c7bcd5
parent0f2907682ea0bc5a977d66aa110fe3b30119d4bb (diff)
downloadgcc-4b40f7588eaf7b4f323d812ebe612f951822d0ee.zip
gcc-4b40f7588eaf7b4f323d812ebe612f951822d0ee.tar.gz
gcc-4b40f7588eaf7b4f323d812ebe612f951822d0ee.tar.bz2
diagnostic.c (output_last_position): Define.
* diagnostic.c (output_last_position): Define. (set_real_maximum_length): Tweek. * diagnostic.h (output_last_position): Declare. From-SVN: r36629
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/diagnostic.c21
-rw-r--r--gcc/diagnostic.h1
3 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f5f2424..0e200f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index afb25c1..56ed957 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -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
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index f3ebcf8..8748929 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -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));