projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New 2016 binutils ChangeLog files
[deliverable/binutils-gdb.git]
/
binutils
/
rclex.c
diff --git
a/binutils/rclex.c
b/binutils/rclex.c
index ef0961b61ca69297b5a6f1d695fa977524a9127b..945ab8b26bf6925d6c26c7e036cf57d1355eb5e5 100644
(file)
--- a/
binutils/rclex.c
+++ b/
binutils/rclex.c
@@
-1,7
+1,6
@@
/* rclex.c -- lexer for Windows rc files parser */
/* rclex.c -- lexer for Windows rc files parser */
-/* Copyright 1997, 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2007
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
Written by Kai Tietz, Onevision.
Written by Kai Tietz, Onevision.
@@
-9,7
+8,7
@@
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-22,6
+21,7
@@
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
+
/* This is a lexer used by the Windows rc file parser. It basically
just recognized a bunch of keywords. */
/* This is a lexer used by the Windows rc file parser. It basically
just recognized a bunch of keywords. */
@@
-147,7
+147,7
@@
cpp_line (void)
++s;
while (ISSPACE (*s))
++s;
++s;
while (ISSPACE (*s))
++s;
-
+
/* Check for #pragma code_page ( DEFAULT | <nr>). */
len = strlen (s);
mlen = strlen ("pragma");
/* Check for #pragma code_page ( DEFAULT | <nr>). */
len = strlen (s);
mlen = strlen ("pragma");
@@
-389,9
+389,9
@@
handle_quotes (rc_uint_type *len)
}
else
{
}
else
{
- rcparse_warning ("unexpected character after '\"'");
++t;
++t;
- assert (ISSPACE (*t));
+ if (! ISSPACE (*t))
+ rcparse_warning ("unexpected character after '\"'");
while (ISSPACE (*t))
{
if ((*t) == '\n')
while (ISSPACE (*t))
{
if ((*t) == '\n')
@@
-678,7
+678,7
@@
static void
rclex_string (void)
{
int c;
rclex_string (void)
{
int c;
-
+
while ((c = rclex_peekch ()) != -1)
{
if (c == '\n')
while ((c = rclex_peekch ()) != -1)
{
if (c == '\n')
@@
-692,6
+692,18
@@
rclex_string (void)
}
else if (rclex_readch () == '"')
{
}
else if (rclex_readch () == '"')
{
+ /* PR 6714
+ Skip any whitespace after the end of the double quotes. */
+ do
+ {
+ c = rclex_peekch ();
+ if (ISSPACE (c))
+ rclex_readch ();
+ else
+ c = -1;
+ }
+ while (c != -1);
+
if (rclex_peekch () == '"')
rclex_readch ();
else
if (rclex_peekch () == '"')
rclex_readch ();
else
@@
-769,7
+781,7
@@
yylex (void)
/* Clear token. */
rclex_tok_pos = 0;
rclex_tok[0] = 0;
/* Clear token. */
rclex_tok_pos = 0;
rclex_tok[0] = 0;
-
+
if ((ch = rclex_readch ()) == -1)
return -1;
if (ch == '\n')
if ((ch = rclex_readch ()) == -1)
return -1;
if (ch == '\n')
@@
-785,15
+797,15
@@
yylex (void)
cpp_line ();
ch = IGNORED_TOKEN;
break;
cpp_line ();
ch = IGNORED_TOKEN;
break;
-
+
case '{':
ch = IGNORE_CPP (BEG);
break;
case '{':
ch = IGNORE_CPP (BEG);
break;
-
+
case '}':
ch = IGNORE_CPP (END);
break;
case '}':
ch = IGNORE_CPP (END);
break;
-
+
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
yylval.i.val = read_digit (ch);
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
yylval.i.val = read_digit (ch);
@@
-843,7
+855,11
@@
yylex (void)
default:
if (ISIDST (ch) || ch=='$')
{
default:
if (ISIDST (ch) || ch=='$')
{
- while ((ch = rclex_peekch ()) != -1 && (ISIDNUM (ch) || ch == '$' || ch == '.'))
+ while ((ch = rclex_peekch ()) != -1
+ && (ISIDNUM (ch) || ch == '$' || ch == '.'
+ || ch == ':' || ch == '\\' || ch == '/'
+ || ch == '_' || ch == '-')
+ )
rclex_readch ();
ch = IGNORE_CPP (rclex_translatekeyword (rclex_tok));
if (ch == STRING)
rclex_readch ();
ch = IGNORE_CPP (rclex_translatekeyword (rclex_tok));
if (ch == STRING)
This page took
0.028179 seconds
and
4
git commands to generate.