diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-12-17 14:46:34 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-12-17 14:46:34 +0000 |
commit | fb688dd21730f15d4e3dc921892e389788e0ffc1 (patch) | |
tree | 603a86ad54e6ce0230d8b8d72b36f4ed2e0def07 /gcc/cppmain.c | |
parent | b3962449c1f195379197777f3c5a68a62873ee74 (diff) | |
download | gcc-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.c | 31 |
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); } } |