summaryrefslogtreecommitdiff
path: root/gcc/cppmain.c
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-12-17 14:46:34 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-12-17 14:46:34 +0000
commitfb688dd21730f15d4e3dc921892e389788e0ffc1 (patch)
tree603a86ad54e6ce0230d8b8d72b36f4ed2e0def07 /gcc/cppmain.c
parentb3962449c1f195379197777f3c5a68a62873ee74 (diff)
downloadgcc-fb688dd21730f15d4e3dc921892e389788e0ffc1.tar.gz
* cppmain.c (check_multiline_token): New function.
(scan_buffer): Use it. (cb_change_file): Restructure to avoid warning. * cpperror.c (print_location): Initialize col. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38332 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cppmain.c')
-rw-r--r--gcc/cppmain.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/gcc/cppmain.c b/gcc/cppmain.c
index f3bf2a0e57c..706ff2f85cd 100644
--- a/gcc/cppmain.c
+++ b/gcc/cppmain.c
@@ -43,6 +43,7 @@ static void setup_callbacks PARAMS ((void));
/* General output routines. */
static void scan_buffer PARAMS ((cpp_reader *));
+static void check_multiline_token PARAMS ((cpp_string *));
static int printer_init PARAMS ((cpp_reader *));
static int dump_macro PARAMS ((cpp_reader *, cpp_hashnode *, void *));
@@ -218,11 +219,26 @@ scan_buffer (pfile)
cpp_output_token (token, print.outf);
print.printed = 1;
+ if (token->type == CPP_STRING || token->type == CPP_WSTRING
+ || token->type == CPP_COMMENT)
+ check_multiline_token (&token->val.str);
}
}
while (cpp_pop_buffer (pfile) != 0);
}
+/* Adjust print.lineno for newlines embedded in tokens. */
+static void
+check_multiline_token (str)
+ cpp_string *str;
+{
+ unsigned int i;
+
+ for (i = 0; i < str->len; i++)
+ if (str->text[i] == '\n')
+ print.lineno++;
+}
+
/* Initialize a cpp_printer structure. As a side effect, open the
output file. */
static int
@@ -362,8 +378,6 @@ cb_change_file (pfile, fc)
cpp_reader *pfile ATTRIBUTE_UNUSED;
const cpp_file_change *fc;
{
- const char *flags;
-
/* Bring current file to correct line (except first file). */
if (fc->reason == FC_ENTER && fc->from.filename)
maybe_print_line (fc->from.lineno);
@@ -378,14 +392,13 @@ cb_change_file (pfile, fc)
if (print.lineno)
{
- print.lineno = fc->to.lineno;
- switch (fc->reason)
- {
- case FC_ENTER : flags = " 1"; break;
- case FC_LEAVE : flags = " 2"; break;
- case FC_RENAME: flags = ""; break;
- }
+ const char *flags = "";
+ print.lineno = fc->to.lineno;
+ if (fc->reason == FC_ENTER)
+ flags = " 1";
+ else if (fc->reason == FC_LEAVE)
+ flags = " 2";
print_line (flags);
}
}